Merge branch 'current' into next
4
.github/workflows/test.yml
vendored
@ -10,7 +10,7 @@ jobs:
|
||||
- name: Check out files from GitHub
|
||||
uses: actions/checkout@v4.1.7
|
||||
- name: Setting up Node.js
|
||||
uses: actions/setup-node@v4.0.2
|
||||
uses: actions/setup-node@v4.0.3
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
@ -27,7 +27,7 @@ jobs:
|
||||
- name: Check out files from GitHub
|
||||
uses: actions/checkout@v4.1.7
|
||||
- name: Setting up Node.js
|
||||
uses: actions/setup-node@v4.0.2
|
||||
uses: actions/setup-node@v4.0.3
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
|
4
Gemfile
@ -10,8 +10,8 @@ group :development do
|
||||
gem 'stringex', '2.8.6'
|
||||
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
|
||||
gem 'sassc', '2.1.0'
|
||||
gem 'rubocop', '1.64.1'
|
||||
gem 'ruby-lsp', '0.17.4'
|
||||
gem 'rubocop', '1.65.0'
|
||||
gem 'ruby-lsp', '0.17.7'
|
||||
gem 'rackup', '2.1.0'
|
||||
end
|
||||
|
||||
|
24
Gemfile.lock
@ -80,7 +80,7 @@ GEM
|
||||
nokogiri (1.16.6-x86_64-linux)
|
||||
racc (~> 1.4)
|
||||
parallel (1.25.1)
|
||||
parser (3.3.3.0)
|
||||
parser (3.3.4.0)
|
||||
ast (~> 2.4.1)
|
||||
racc
|
||||
pathutil (0.16.2)
|
||||
@ -88,7 +88,7 @@ GEM
|
||||
prism (0.30.0)
|
||||
public_suffix (6.0.0)
|
||||
racc (1.8.0)
|
||||
rack (3.1.6)
|
||||
rack (3.1.7)
|
||||
rack-protection (4.0.0)
|
||||
base64 (>= 0.1.0)
|
||||
rack (>= 3.0.0, < 4)
|
||||
@ -102,26 +102,26 @@ GEM
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.11.1)
|
||||
ffi (~> 1.0)
|
||||
rbs (3.5.1)
|
||||
rbs (3.5.2)
|
||||
logger
|
||||
regexp_parser (2.9.2)
|
||||
rexml (3.3.1)
|
||||
rexml (3.3.2)
|
||||
strscan
|
||||
rouge (4.3.0)
|
||||
rubocop (1.64.1)
|
||||
rubocop (1.65.0)
|
||||
json (~> 2.3)
|
||||
language_server-protocol (>= 3.17.0)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 3.3.0.2)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 1.8, < 3.0)
|
||||
regexp_parser (>= 2.4, < 3.0)
|
||||
rexml (>= 3.2.5, < 4.0)
|
||||
rubocop-ast (>= 1.31.1, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 2.4.0, < 3.0)
|
||||
rubocop-ast (1.31.3)
|
||||
parser (>= 3.3.1.0)
|
||||
ruby-lsp (0.17.4)
|
||||
ruby-lsp (0.17.7)
|
||||
language_server-protocol (~> 3.17.0)
|
||||
prism (>= 0.29.0, < 0.31)
|
||||
rbs (>= 3, < 4)
|
||||
@ -130,8 +130,8 @@ GEM
|
||||
ruby2_keywords (0.0.5)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.4.25)
|
||||
sass-embedded (1.77.5-x86_64-linux-gnu)
|
||||
google-protobuf (>= 3.25, < 5.0)
|
||||
sass-embedded (1.77.8-x86_64-linux-gnu)
|
||||
google-protobuf (~> 4.26)
|
||||
sass-globbing (1.1.5)
|
||||
sass (>= 3.1)
|
||||
sassc (2.1.0-x86_64-linux)
|
||||
@ -142,7 +142,7 @@ GEM
|
||||
rack-protection (= 4.0.0)
|
||||
rack-session (>= 2.0.0, < 3)
|
||||
tilt (~> 2.0)
|
||||
sorbet-runtime (0.5.11471)
|
||||
sorbet-runtime (0.5.11481)
|
||||
stringex (2.8.6)
|
||||
strscan (3.1.0)
|
||||
terminal-table (3.0.2)
|
||||
@ -168,8 +168,8 @@ DEPENDENCIES
|
||||
nokogiri (= 1.16.6)
|
||||
rackup (= 2.1.0)
|
||||
rake (= 13.2.1)
|
||||
rubocop (= 1.64.1)
|
||||
ruby-lsp (= 0.17.4)
|
||||
rubocop (= 1.65.0)
|
||||
ruby-lsp (= 0.17.7)
|
||||
sass-globbing (= 1.1.5)
|
||||
sassc (= 2.1.0)
|
||||
sinatra (= 4.0.0)
|
||||
|
28
_config.yml
@ -108,8 +108,8 @@ social:
|
||||
# Home Assistant release details
|
||||
current_major_version: 2024
|
||||
current_minor_version: 7
|
||||
current_patch_version: 0
|
||||
date_released: 2024-07-03
|
||||
current_patch_version: 2
|
||||
date_released: 2024-07-10
|
||||
|
||||
# Either # or the anchor link to latest release notes in the blog post.
|
||||
# Must be prefixed with a # and have double quotes around it.
|
||||
@ -139,26 +139,48 @@ defaults:
|
||||
footer: true
|
||||
sharing: true
|
||||
sidebar: true
|
||||
toc: true
|
||||
# Enable table of contents for integrations and installations
|
||||
#
|
||||
# To set toc as a default value, we need to set the scope with an empty path
|
||||
# and the collection as type
|
||||
# https://github.com/toshimaru/jekyll-toc/issues/116#issuecomment-644205770
|
||||
#
|
||||
- scope:
|
||||
path: ""
|
||||
type: dashboards
|
||||
values:
|
||||
toc: true
|
||||
- scope:
|
||||
path: ""
|
||||
type: integrations
|
||||
values:
|
||||
toc: true
|
||||
- scope:
|
||||
path: ""
|
||||
type: docs
|
||||
values:
|
||||
toc: true
|
||||
- scope:
|
||||
path: "installation/*"
|
||||
values:
|
||||
toc: true
|
||||
no_toc: true
|
||||
- scope:
|
||||
path: "common-tasks/*"
|
||||
values:
|
||||
toc: true
|
||||
- scope:
|
||||
path: "getting-started/*"
|
||||
values:
|
||||
toc: true
|
||||
- scope:
|
||||
path: "more-info/*"
|
||||
values:
|
||||
toc: true
|
||||
- scope:
|
||||
path: "voice_control/*"
|
||||
values:
|
||||
toc: true
|
||||
- scope:
|
||||
path: "hassio/*"
|
||||
values:
|
||||
|
@ -1,7 +1,7 @@
|
||||
@charset "UTF-8";
|
||||
|
||||
.page h1.title.indent {
|
||||
font-size: 3.125em;
|
||||
h1.title.indent {
|
||||
font-size: 3.5rem;
|
||||
}
|
||||
.title.delta, .title.epsilon {
|
||||
border-bottom: none;
|
||||
@ -19,15 +19,192 @@
|
||||
}
|
||||
@media only screen and (max-width: $menu-collapse) {
|
||||
html {
|
||||
font-size: .95em;
|
||||
font-size: .95rem;
|
||||
}
|
||||
.page h1.title.indent {
|
||||
font-size: 2.875em;
|
||||
h1.title.indent {
|
||||
font-size: 3rem;
|
||||
overflow-wrap: break-word;
|
||||
hyphens: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Wider page width
|
||||
.grid-wrapper {
|
||||
padding: 0 24px;
|
||||
|
||||
@media only screen and (min-width: $desk-start) {
|
||||
padding: 0 48px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: $desk-wide-start) {
|
||||
.integration-page, .documentation-page, .blog-post {
|
||||
.grid-wrapper>.grid.grid-center {
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
.vertical-nav, .recent-categories, .recent-posts, .categories {
|
||||
background: none;
|
||||
padding: 0 16px 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
.documentation-page, .blog-post {
|
||||
#sidebar #toc-module {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Documentation index
|
||||
|
||||
.docs-index {
|
||||
margin: 0;
|
||||
|
||||
&>li {
|
||||
list-style-type: none;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 600;
|
||||
|
||||
&>iconify-icon {
|
||||
margin: 2px 8px 0 0;
|
||||
transform-origin: left;
|
||||
transform: scale(1) translateY(10px);
|
||||
background: #007fa8;
|
||||
color: white;
|
||||
padding: 10px;
|
||||
border-radius: 32px;
|
||||
}
|
||||
|
||||
&>a {
|
||||
text-decoration: none !important;
|
||||
|
||||
&::after {
|
||||
content: '▸';
|
||||
}
|
||||
}
|
||||
|
||||
&>ul {
|
||||
font-family: $sans-serif;
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
text-transform: none;
|
||||
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
||||
column-gap: 24px;
|
||||
margin: 0 0 0 28px;
|
||||
|
||||
margin: 16px 0 48px !important;
|
||||
padding: 20px 24px;
|
||||
background: rgba(0, 0, 0, .01);
|
||||
border-radius: 16px;
|
||||
border: 1px solid rgba(0, 0, 0, .1);
|
||||
|
||||
a {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
&>li {
|
||||
list-style-type: none;
|
||||
|
||||
&>ul {
|
||||
margin-left: 20px;
|
||||
font-size: .85rem;
|
||||
font-weight: normal;
|
||||
|
||||
&>li {
|
||||
margin: 4px 0;
|
||||
|
||||
&:first-child {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
&:nth-child(1n+7) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:nth-child(6) {
|
||||
&::before {
|
||||
content: 'More...';
|
||||
}
|
||||
&>a {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Vertical Nav
|
||||
|
||||
.vertical-nav {
|
||||
.divided.sidebar-menu {
|
||||
&>li {
|
||||
iconify-icon {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: none;
|
||||
margin: 16px 0 16px 28px;
|
||||
|
||||
li {
|
||||
margin: 8px 0;
|
||||
}
|
||||
}
|
||||
|
||||
&>ul {
|
||||
margin: 16px 0 8px 28px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Table of Contents
|
||||
|
||||
#toc-bar {
|
||||
display: none;
|
||||
position: sticky;
|
||||
top: 80px;
|
||||
padding-left: 32px;
|
||||
|
||||
.aside-module {
|
||||
background: none;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: $desk-wide-start) {
|
||||
.documentation-page #toc-bar, .integration-page #toc-bar, .blog-post #toc-bar {
|
||||
display: inline-block;
|
||||
}
|
||||
#integration-sidebar #toc-module {
|
||||
display: none;
|
||||
}
|
||||
.documentation-page #sidebar #toc-module {
|
||||
background: none;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Rounded background for numbered lists
|
||||
article> {
|
||||
ol {
|
||||
@ -109,6 +286,10 @@ ul, ol, dd {
|
||||
margin-bottom: 27px;
|
||||
}
|
||||
|
||||
.menu > li > a.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.dark .menu > li > a:hover,
|
||||
.dark .menu > li > a:focus {
|
||||
box-shadow: inset 0px -5px rgba($white, .5);
|
||||
@ -316,7 +497,65 @@ a.material-card:hover {
|
||||
}
|
||||
|
||||
|
||||
// Blog archive material cards
|
||||
|
||||
#archive-list {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
||||
gap: 24px;
|
||||
|
||||
h2 {
|
||||
grid-column: 1/-1;
|
||||
margin: 16px 0 0;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.material-card {
|
||||
.img {
|
||||
background-color: $grayLighter;
|
||||
width: calc(100%-8px);
|
||||
aspect-ratio: 120/63;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
border-radius: 8px;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
.caption {
|
||||
padding: 8px 16px 12px;
|
||||
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
font-size: 1rem;
|
||||
|
||||
.title {
|
||||
font-weight: 500;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.subtitle{
|
||||
font-size: .85em;
|
||||
color: $gray;
|
||||
}
|
||||
}
|
||||
|
||||
svg {
|
||||
min-width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
.feedback {
|
||||
margin-top: 64px;
|
||||
h4 {
|
||||
margin: 0 0 8px !important;
|
||||
|
||||
@ -544,9 +783,8 @@ a.material-card:hover {
|
||||
|
||||
.seen-press {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
||||
column-gap: 24px;
|
||||
row-gap: 24px;
|
||||
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
||||
gap: 24px;
|
||||
margin: 48px 0;
|
||||
|
||||
h2 {
|
||||
@ -582,6 +820,16 @@ a.material-card:hover {
|
||||
.round {
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $lap-end) {
|
||||
grid-template-columns: repeat(auto-fill, minmax(144px, 1fr));
|
||||
gap: 16px;
|
||||
|
||||
img {
|
||||
max-height: 96px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.sponsored-by {
|
||||
@ -597,7 +845,7 @@ a.material-card:hover {
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 700px) {
|
||||
@media screen and (max-width: $lap-end) {
|
||||
.frontpage .events .event {
|
||||
.caption {
|
||||
padding-top: 4px;
|
||||
@ -672,7 +920,25 @@ article.listing {
|
||||
|
||||
&>table,
|
||||
&>.entry-content>table {
|
||||
background-color: #f3fcf5;
|
||||
background-color: #fff;
|
||||
table-layout: auto;
|
||||
|
||||
&>thead {
|
||||
background-color: rgba(0, 0, 0, .025);
|
||||
// border: 1px solid rgba(0, 0, 0, .1);
|
||||
border-radius: 16px 16px 0 0;
|
||||
font-size: .85em;
|
||||
}
|
||||
|
||||
&>tbody {
|
||||
tr {
|
||||
border-bottom: 1px solid rgba(0, 0, 0, .1);
|
||||
|
||||
&:last-of-type {
|
||||
border-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p.img {
|
||||
@ -725,6 +991,7 @@ article.listing {
|
||||
|
||||
h2 {
|
||||
margin-top: 1.75em;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
h3 {
|
||||
@ -858,6 +1125,9 @@ ul.sidebar-menu {
|
||||
a.active {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
border-left: 4px solid $primary-color;
|
||||
padding: 0 8px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
ul {
|
||||
@ -992,7 +1262,7 @@ div.config-vars {
|
||||
code {
|
||||
font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
|
||||
font-size: 0.8em;
|
||||
color: $primary-color;
|
||||
color: $link-color;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
|
@ -1,5 +1,5 @@
|
||||
$use-grids: true;
|
||||
$site-width: 1100px;
|
||||
$site-width: 1560px;
|
||||
$responsive: true;
|
||||
$use-gridfix: true;
|
||||
|
||||
@ -28,7 +28,7 @@ $white: #fff !default;
|
||||
// Accent colors
|
||||
// -------------------------
|
||||
$blue: #1abcf2 !default;
|
||||
$blueDark: #0064cd !default;
|
||||
$blueDark: #007fa8 !default;
|
||||
$green: #46a546 !default;
|
||||
$red: #9d261d !default;
|
||||
$yellow: #ffc40d !default;
|
||||
|
@ -16,6 +16,10 @@ body, html {
|
||||
margin-top: 0;
|
||||
padding-top: 88px;
|
||||
width: 100%;
|
||||
|
||||
&>.grid-wrapper:last-of-type {
|
||||
min-height: calc(100vh - 714px);
|
||||
}
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
|
@ -107,7 +107,7 @@ ul.menu li {
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background: $grayLighter;
|
||||
background: rgba($primary-color, .1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -169,7 +169,7 @@ header .grid {
|
||||
|
||||
.menu li a:hover,
|
||||
.menu li a:focus {
|
||||
background: $grayLighter;
|
||||
background: rgba($primary-color, .1);
|
||||
box-shadow: inset 5px 0px $primary-color;
|
||||
padding: 15px 15px 15px 25px;
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
#sidebar, #left-sidebar, #toc-bar, #integration-sidebar {
|
||||
position: sticky;
|
||||
top: 88px;
|
||||
max-height: calc(100vh - 104px);
|
||||
@ -43,7 +43,7 @@
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $lap-end) {
|
||||
#sidebar {
|
||||
#sidebar, #left-sidebar, #toc-bar, #integration-sidebar {
|
||||
max-height: fit-content;
|
||||
|
||||
.grid {
|
||||
|
@ -76,6 +76,7 @@
|
||||
|
||||
#HAdemo {
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
height: 800px;
|
||||
border-radius: 48px;
|
||||
border: 12px double white;
|
||||
|
@ -6,7 +6,6 @@
|
||||
letter-spacing: .005em;
|
||||
color: $gray;
|
||||
text-transform: uppercase;
|
||||
padding-top: 8px;
|
||||
}
|
||||
}
|
||||
.component-search {
|
||||
@ -38,9 +37,8 @@
|
||||
// styles for the cards
|
||||
.hass-option-cards {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(192px, 1fr));
|
||||
|
||||
margin: -10px; // grid trick, has to match option-card's margin
|
||||
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
||||
gap: 24px;
|
||||
|
||||
div.alert, p.alert-content {
|
||||
width: 100%;
|
||||
@ -48,11 +46,9 @@
|
||||
|
||||
.option-card {
|
||||
flex: 0 0 auto;
|
||||
min-width: 192px;
|
||||
height: 192px;
|
||||
aspect-ratio: 1;
|
||||
display: inline-block;
|
||||
background-color: #f8f8f8;
|
||||
margin: 10px;
|
||||
border-radius: 8px;
|
||||
border: 1px solid rgba(0, 0, 0, .12);
|
||||
padding: 8px;
|
||||
@ -61,7 +57,6 @@
|
||||
align-content: center;
|
||||
transition: box-shadow .33s;
|
||||
|
||||
|
||||
.img-container {
|
||||
height: 64px;
|
||||
margin: 12px 16px;
|
||||
@ -128,20 +123,23 @@ a.option-card:hover {
|
||||
|
||||
@for $i from 1 through 40 {
|
||||
.option-card:nth-child(#{$i}) {
|
||||
animation-delay: #{$i * 0.04}s !important;
|
||||
animation-delay: #{$i * 0.025}s !important;
|
||||
@media only screen and (max-width: $palm-end) {
|
||||
animation-delay: #{$i * 0.05}s !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: $palm-end) {
|
||||
.hass-option-cards {
|
||||
grid-template-columns: 1fr;
|
||||
|
||||
.option-card {
|
||||
width: calc(100% - 24px) !important;
|
||||
width: 100% !important;
|
||||
flex-direction: row;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 80px;
|
||||
margin: 8px;
|
||||
|
||||
.img-container {
|
||||
margin: 8px;
|
||||
@ -160,9 +158,8 @@ a.option-card:hover {
|
||||
}
|
||||
#components-page {
|
||||
.hass-option-cards {
|
||||
grid-template-columns: 1fr;
|
||||
.option-card {
|
||||
width: calc(50% - 24px);
|
||||
|
||||
}
|
||||
}
|
||||
.category_select {
|
||||
@ -181,6 +178,7 @@ a.option-card:hover {
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 16px;
|
||||
align-items: flex-end;
|
||||
gap: 8px;
|
||||
|
||||
&>div {
|
||||
margin-right: 8px;
|
||||
@ -231,12 +229,13 @@ a.option-card:hover {
|
||||
}
|
||||
|
||||
.btn {
|
||||
font-size: 1rem;
|
||||
display: block;
|
||||
background: 0;
|
||||
color: black;
|
||||
box-shadow: none;
|
||||
text-shadow: none;
|
||||
padding: 2px;
|
||||
padding: 4px 0;
|
||||
border-radius: 0;
|
||||
|
||||
&.current {
|
||||
|
@ -72,7 +72,7 @@ $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-extra: true!default;
|
||||
|
||||
/**
|
||||
* Responsive push and pull produce a LOT of code, only turn them on if you
|
||||
@ -103,7 +103,7 @@ $desk-pull: false!default;
|
||||
*/
|
||||
$lap-start: 481px!default;
|
||||
$desk-start: 1024px!default;
|
||||
$desk-wide-start: 1200px!default;
|
||||
$desk-wide-start: 1280px!default;
|
||||
|
||||
|
||||
|
||||
|
@ -1,43 +1,58 @@
|
||||
---
|
||||
title: "Automation editor"
|
||||
description: "Instructions on how to use the automation editor."
|
||||
related:
|
||||
- docs: /getting-started/automation/
|
||||
title: Automating Home Assistant
|
||||
---
|
||||
|
||||
The automation editor is an easy way of creating and editing automations from the UI.
|
||||
|
||||
This page uses the [Random sensor](/integrations/random#sensor) as an example, though any other sensor with a numeric value can be used as well.
|
||||
This tutorial uses the [Random sensor](/integrations/random#sensor) because it generates data (by default, values between 0 and 20). This enables us to walk through the example, even if you do not have any actual sensors connected yet. You could use any other sensor that outputs a numeric value.
|
||||
|
||||
From the UI, choose **{% my config %}** which is located in the sidebar, then click on **{% my automations %}** to go to the automation editor. Press the **Create Automation** button in the lower right corner to get started. You can create an automation based on a [blueprint](/docs/automation/using_blueprints/) or start from scratch. Select **Create new automation**.
|
||||
1. Go to {% my automations title="**Settings** > **Automations & scenes**" %} and in the lower right corner, select the **Create Automation** button.
|
||||
2. Select **Create new automation**.
|
||||
|
||||

|
||||

|
||||
|
||||
Click on the **Add Trigger** button and select **Numeric state**.
|
||||
3. Select **Add Trigger**, and in the **Search trigger** field, type "num".
|
||||
- Select **Numeric state**.
|
||||
|
||||

|
||||

|
||||
|
||||
If the value of the sensor is greater than 10, then the automation should trigger.
|
||||
4. Enter the trigger conditions:
|
||||
- Define the sensor: Under **Entity**, enter "sensor.random_sensor".
|
||||
- If the sensor value is above 10, we want the automation to trigger.
|
||||
- In the **Above**, field, enter "10".
|
||||
|
||||

|
||||

|
||||
|
||||
Click on the **Add Action** button and select **Call service**.
|
||||
5. Define the action that should happen:
|
||||
- In the **Then do** section, select **Add Action**.
|
||||
|
||||

|
||||

|
||||
|
||||
The action for this automation creates a [persistent notification](/integrations/persistent_notification/).
|
||||
6. Select **Call service**.
|
||||
|
||||

|
||||

|
||||
|
||||
As the message we want a simple text that is shown as part of the notification.
|
||||
7. We want to create a [persistent notification](/integrations/persistent_notification/).
|
||||
- Enter "Persist" and select **Persistent notification: Create**.
|
||||
|
||||
```yaml
|
||||
message: Sensor value greater than 10
|
||||
```
|
||||

|
||||
|
||||
Press the **Save** button, and the save dialogue will appear. Give your automation a meaningful name and press the **Save** button again.
|
||||
8. As the message, we want a simple text that is shown as part of the notification.
|
||||
|
||||

|
||||
```yaml
|
||||
message: Sensor value greater than 10
|
||||
```
|
||||
|
||||
Automations created or edited via the user interface are activated immediately after saving the automation. Read the documentation for [Automating Home Assistant](/getting-started/automation/) to learn more about automations.
|
||||
9. Select **Save**, give your automation a meaningful name, and **Save** again.
|
||||
|
||||

|
||||
|
||||
- **Result**: Automations created or edited via the user interface are activated immediately after saving the automation.
|
||||
- To learn more about automations, read the documentation for [Automating Home Assistant](/getting-started/automation/).
|
||||
|
||||
## Troubleshooting missing automations
|
||||
|
||||
|
@ -49,13 +49,14 @@ To edit an imported blueprint, follow these steps:
|
||||
|
||||
1. Go to **{% my blueprints title="Settings > Automations & Scenes > Blueprints" %}**.
|
||||
2. Select the blueprint from the list.
|
||||
3. Select the three dots menu and select **Take control**.
|
||||
3. Select the {% icon "mdi:dots-vertical" %} and select **Take control**.
|
||||
4. A preview of the automation is shown.
|
||||
- **Info**: By taking control, the blueprint is converted into an automation. You won't be able to convert this back into a blueprint.
|
||||
- To convert it into an automation and take control, select **Yes**.
|
||||
- If you change your mind and want to keep the blueprint, select **No**.
|
||||
|
||||

|
||||
|
||||
4. Under **Take control of automation?**, select **OK**
|
||||
- **Info**: By taking control, the blueprint is converted into an automation. You won't be able to convert this back into a blueprint.
|
||||
|
||||
## Re-importing a blueprint
|
||||
|
||||
Blueprints created by the community may go through multiple revisions. Sometimes a user creates a blueprint,
|
||||
|
@ -2,7 +2,6 @@
|
||||
title: "Script Syntax"
|
||||
description: "Documentation for the Home Assistant Script Syntax."
|
||||
toc: true
|
||||
no_toc: true
|
||||
---
|
||||
|
||||
Scripts are a sequence of {% term actions %} that Home Assistant will execute. Scripts are available as an entity through the standalone [Script integration] but can also be embedded in {% term automations %} and [Alexa/Amazon Echo] configurations.
|
||||
|
@ -2,7 +2,6 @@
|
||||
title: "Conditions"
|
||||
description: "Documentation about all available conditions."
|
||||
toc: true
|
||||
no_toc: true
|
||||
---
|
||||
|
||||
Conditions can be used within a {% term script %} or {% term automation %} to prevent further execution. When a condition evaluates true, the script or automation will be executed. If any other value is returned, the script or automation stops executing. A condition will look at the system at that moment. For example, a condition can test if a switch is currently turned on or off.
|
||||
|
@ -72,7 +72,7 @@ Z-Wave JS does not support Z-Wave Long Range yet.
|
||||
### Aeotec Z-Stick
|
||||
|
||||
{% note %}
|
||||
There are [known compatibility issues](https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=245031#p1502030) with older hardware versions of the Aeotec stick not working on the Raspberry Pi 4. Aeotec has released a 2020 hardware revision ZW090-A/B/C Gen5+ with Pi 4 compatibility. Both hardware revisions are still being sold, make informed purchasing decisions if using paired with a Pi 4.
|
||||
There are [known compatibility issues](https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=245031#p1502030) with older hardware versions of the Aeotec stick not connecting when plugged directly on the Raspberry Pi 4, and requiring a USB Hub to work. Aeotec has released a 2020 hardware revision ZW090-A/B/C Gen5+ with Pi 4 compatibility. Both hardware revisions are still being sold, make informed purchasing decisions if using one paired with a Pi 4.
|
||||
{% endnote %}
|
||||
|
||||
It's totally normal for your Z-Wave stick to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system.
|
||||
|
@ -1,11 +1,11 @@
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<section class="categories aside-module grid__item one-whole lap-one-half">
|
||||
<h1 class="title epsilon">{% icon "mdi:category" %} Categories</h1>
|
||||
<ul class="divided">
|
||||
{% assign categories = site.categories | sort %}
|
||||
{% for category in categories %}
|
||||
{% assign category_name = category | first | downcase %}
|
||||
{% if category_name != "core"%}
|
||||
<li><a href="/blog/categories/{{ category_name }}/">{{ category | first | replace: '-', ' '}}</a></li>
|
||||
<li><a href="/blog/categories/{{ category_name }}/">{{ category | first | replace: '-', ' '}} <span class="count">{{ category[1] | size }}</span></a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
@ -42,22 +42,30 @@
|
||||
{{ percentage | remove: ".0" }}%</a> of the active installations.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{%- if page.ha_iot_class %}
|
||||
Its IoT class is <a href='/blog/2016/02/12/classifying-the-internet-of-things/#classifiers'>{{ page.ha_iot_class }}</a>
|
||||
{%- endif -%}
|
||||
|
||||
{%- if page.ha_quality_scale %}
|
||||
{% if page.ha_iot_class %}
|
||||
and it
|
||||
{% else %}
|
||||
It
|
||||
{% endif %}
|
||||
scores {{page.ha_quality_scale}} on our <a href='/docs/quality_scale/'>quality scale</a>
|
||||
{%- endif -%}{%- if page.ha_quality_scale or page.ha_iot_class %}.{%- endif -%}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{%- if page.ha_iot_class %}
|
||||
<div class='section'>
|
||||
{% if page.ha_iot_class == "Assumed State" %}<iconify-icon icon='mdi:circle-half-full'></iconify-icon>{%- endif -%}
|
||||
{% if page.ha_iot_class == "Cloud Polling" %}<iconify-icon icon='mdi:cloud-upload'></iconify-icon>{%- endif -%}
|
||||
{% if page.ha_iot_class == "Cloud Push" %}<iconify-icon icon='mdi:cloud-download'></iconify-icon>{%- endif -%}
|
||||
{% if page.ha_iot_class == "Local Polling" %}<iconify-icon icon='mdi:download-network-outline'></iconify-icon>{%- endif -%}
|
||||
{% if page.ha_iot_class == "Local Push" %}<iconify-icon icon='mdi:upload-network-outline'></iconify-icon>{%- endif -%}
|
||||
Its IoT class is <a href='/blog/2016/02/12/classifying-the-internet-of-things/#classifiers'>{{ page.ha_iot_class }}.</a>
|
||||
</div>
|
||||
{%- endif -%}
|
||||
|
||||
{%- if page.ha_quality_scale %}
|
||||
<div class='section'>
|
||||
{% if page.ha_quality_scale == "silver" %}🥈 This is a great integration!<br />{%- endif -%}
|
||||
{% if page.ha_quality_scale == "gold" %}🥇 This is a solid integration!<br />{%- endif -%}
|
||||
{% if page.ha_quality_scale == "platinum" %}🏆 Best of the best!<br />{%- endif -%}
|
||||
{% if page.ha_quality_scale == "internal" %}🏠 Under core!<br />{%- endif -%}
|
||||
It scores {{page.ha_quality_scale}} on our <a href='/docs/quality_scale/'>quality scale</a>
|
||||
</div>
|
||||
{%- endif -%}
|
||||
|
||||
{% if page.works_with %}
|
||||
{%- for type in page.works_with -%}
|
||||
<div class="section">
|
||||
|
@ -1,22 +1,14 @@
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<section class="vertical-nav aside-module grid__item one-whole lap-one-half">
|
||||
{% assign elements = site.dashboards | sort_natural: 'title' %}
|
||||
|
||||
<div class="section">
|
||||
<h1 class="title epsilon"><iconify-icon icon="mdi:view-dashboard"></iconify-icon> Dashboards</h1>
|
||||
<ul class="divided sidebar-menu">
|
||||
<li>{% active_link /dashboards/ Introduction %}</li>
|
||||
<li>
|
||||
{% active_link /dashboards/dashboards/ Multiple dashboards %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /dashboards/views/ Views %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /dashboards/cards/ Cards %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /dashboards/badges/ Badges %}
|
||||
</li>
|
||||
<li>{% active_link /dashboards/dashboards/ Multiple dashboards %}</li>
|
||||
<li>{% active_link /dashboards/views/ Views %}</li>
|
||||
<li>{% active_link /dashboards/cards/ Cards %}</li>
|
||||
<li>{% active_link /dashboards/badges/ Badges %}</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@ -48,14 +40,12 @@
|
||||
<li>{% active_link /dashboards/features/ Features %}</li>
|
||||
<li>{% active_link /dashboards/header-footer/ Headers & footers %}</li>
|
||||
<li>{% active_link /dashboards/actions/ Actions %}</li>
|
||||
<li>
|
||||
<a
|
||||
<li><a
|
||||
class="external-link"
|
||||
href="https://developers.home-assistant.io/docs/frontend/custom-ui/custom-card/"
|
||||
>Developing custom cards
|
||||
{% icon "tabler:external-link" %}
|
||||
</a>
|
||||
</li>
|
||||
</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -1,190 +1,16 @@
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<section class="vertical-nav aside-module grid__item one-whole lap-one-half">
|
||||
<div class="section">
|
||||
<h1 class="title epsilon">Topics</h1>
|
||||
<h1 class="title epsilon">{% icon "mdi:bookshelf" %} Documentation</h1>
|
||||
<ul class="divided sidebar-menu">
|
||||
<li>
|
||||
<b>{% active_link /faq/ FAQ %}</b>
|
||||
{% active_link /docs/ Overview %}
|
||||
|
|
||||
<b>{% active_link /docs/glossary/ Glossary %}</b>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "mdi:rocket-launch-outline" %} Getting started</b>
|
||||
<ul>
|
||||
<li>{% active_link /installation Installation %}</li>
|
||||
<li>{% active_link /getting-started Getting started & onboarding %}</li>
|
||||
<li>{% active_link /common-tasks/os/ Common tasks %}</li>
|
||||
<li>
|
||||
{% active_link /docs/troubleshooting/ Troubleshooting installation
|
||||
%}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /docs/troubleshooting_general/ General troubleshooting %}
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "mdi:view-dashboard" %} {% active_link /docs/frontend/ Frontend %}</b>
|
||||
<ul>
|
||||
<li>{% active_link /dashboards Dashboards, views, cards %}</li>
|
||||
<li>{% active_link /docs/organizing/ Organizing: areas, floors, labels, categories, ... %}</li>
|
||||
<li>{% active_link /docs/frontend/icons/ Icons%}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "mdi:cog" %} Configuration</b>
|
||||
<ul>
|
||||
<li>{% active_link /docs/configuration/ Configuration.yaml %}</li>
|
||||
<li>{% active_link /docs/configuration/yaml/ YAML syntax%}</li>
|
||||
<li>
|
||||
{% active_link /docs/configuration/basic/ Basic information %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /docs/configuration/customizing-devices/ Customizing
|
||||
entities %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /docs/configuration/troubleshooting/ Troubleshooting configuration %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /docs/configuration/securing/ Security check points
|
||||
%}
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "mdi:solar-power-variant" %} {% active_link /docs/energy/ Home Energy Management %}</b>
|
||||
<ul>
|
||||
<li>{% active_link /docs/energy/electricity-grid/ Electricity grid %}</li>
|
||||
<li>{% active_link /docs/energy/solar-panels/ Solar panels %}</li>
|
||||
<li>{% active_link /docs/energy/individual-devices/ Individual devices %}</li>
|
||||
<li>{% active_link /docs/energy/faq/ FAQ %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
{% icon "fa-solid:cogs" %} Advanced configuration
|
||||
<ul>
|
||||
<li>{% active_link /docs/configuration/remote/ Remote access %}</li>
|
||||
<li>
|
||||
{% active_link /docs/configuration/splitting_configuration/
|
||||
Splitting up the configuration %}
|
||||
</li>
|
||||
<li>{% active_link /docs/configuration/packages/ Packages %}</li>
|
||||
<li>
|
||||
{% active_link /docs/configuration/secrets/ Storing secrets %}
|
||||
</li>
|
||||
<li>{% active_link /docs/configuration/templating/ Templating %}</li>
|
||||
<li>
|
||||
{% active_link /docs/configuration/platform_options/ Entity
|
||||
component platform options %}
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "mdi:account-security" %} {% active_link /docs/authentication/ Authentication %}</b>
|
||||
<ul>
|
||||
<li>
|
||||
{% active_link /docs/authentication/providers/ Auth providers %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /docs/authentication/multi-factor-auth/ Multi factor
|
||||
auth %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /docs/locked_out/ I'm locked out %}
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
{% icon "clarity:objects-solid" %} Core objects
|
||||
<ul>
|
||||
<li>{% active_link /docs/configuration/events/ Events %}</li>
|
||||
<li>
|
||||
{% active_link /docs/configuration/state_object/ State objects %}
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b><iconify-icon icon="mdi:robot-happy"></iconify-icon> {% active_link /docs/automation/ Automation %}</b>
|
||||
<ul>
|
||||
<li>{% active_link /docs/automation/using_blueprints/ Using automation blueprints %}</li>
|
||||
<li>{% active_link /docs/automation/basics/ Automation basics %}</li>
|
||||
<li>{% active_link /docs/automation/editor/ Editor %}</li>
|
||||
<li>{% active_link /docs/automation/trigger/ Triggers %}</li>
|
||||
<li>{% active_link /docs/automation/condition/ Conditions %}</li>
|
||||
<li>{% active_link /docs/automation/action/ Actions %}</li>
|
||||
<li>{% active_link /docs/automation/modes/ Run modes %}</li>
|
||||
<li>{% active_link /docs/automation/services/ Services %}</li>
|
||||
<li>{% active_link /docs/automation/templating/ Templates %}</li>
|
||||
<li>{% active_link /docs/automation/yaml/ YAML %}</li>
|
||||
<li>
|
||||
{% active_link /docs/automation/troubleshooting/ Troubleshooting automation %}
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "carbon:floorplan" %} {% active_link /docs/blueprint/ Blueprints %}</b>
|
||||
<ul>
|
||||
<li>{% active_link /docs/blueprint/tutorial/ Tutorial %}</li>
|
||||
<li>{% active_link /docs/blueprint/schema/ Blueprint schema %}</li>
|
||||
<li>{% active_link /docs/blueprint/selectors/ Selectors %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "mdi:database" %} {% active_link /docs/backend/ Backend %}</b>
|
||||
<ul>
|
||||
<li>{% active_link /docs/backend/database/ Database %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "mdi:script-text" %} {% active_link /docs/scripts/ Scripts %}</b>
|
||||
<ul>
|
||||
<li>{% active_link /docs/scripts/service-calls/ Service calls %}</li>
|
||||
<li>{% active_link /docs/scripts/conditions/ Conditions %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "mdi:script-text" %} {% active_link /docs/scene/ Scenes %}</b>
|
||||
<ul>
|
||||
<li>{% active_link /docs/scene/editor/ Editor %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "mdi:palette" %} {% active_link /docs/tools/ Tools and helpers %}</b>
|
||||
<ul>
|
||||
<li>{% active_link /docs/tools/dev-tools/ Developer tools %}</li>
|
||||
<li>{% active_link /docs/tools/quick-bar/ Quick bar %}</li>
|
||||
<li>{% active_link /docs/tools/hass/ hass %}</li>
|
||||
<li>{% active_link /docs/tools/check_config/ check_config %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "simple-icons:mqtt" %} {% active_link /integrations/mqtt MQTT %}</b>
|
||||
<ul>
|
||||
<li>{% active_link /integrations/mqtt/#broker-configuration Broker %}</li>
|
||||
<li>{% active_link /integrations/mqtt/#advanced-broker-configuration Certificate %}</li>
|
||||
<li>{% active_link /integrations/mqtt/#mqtt-discovery Discovery %}</li>
|
||||
<li>{% active_link /integrations/mqtt/#publish--dump-services Publish service %}</li>
|
||||
<li>
|
||||
{% active_link /integrations/mqtt/#birth-and-last-will-messages Birth and last will messages %}
|
||||
</li>
|
||||
<li>{% active_link /integrations/mqtt/#testing-your-setup Testing your setup %}</li>
|
||||
<li>{% active_link /integrations/mqtt/#logging Logging %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% icon "bitcoin-icons:node-hardware-filled" %} Hardware</b>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://green.home-assistant.io/">Home Assistant Green</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://yellow.home-assistant.io/">Home Assistant Yellow</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://connectzbt1.home-assistant.io/">Home Assistant Connect ZBT-1</a>
|
||||
</li>
|
||||
</ul>
|
||||
{% active_link /faq/ FAQ %}
|
||||
|
|
||||
{% active_link /docs/glossary/ Glossary %}
|
||||
</li>
|
||||
|
||||
{% include asides/docs_sitemap.html %}
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
277
source/_includes/asides/docs_sitemap.html
Normal file
@ -0,0 +1,277 @@
|
||||
<li>
|
||||
<iconify-icon icon="mdi:robot-happy"></iconify-icon> {% active_link /docs/automation/ Automations %}
|
||||
{% if doc == 'automation' or doc == 'blueprint' or doc == 'scripts' or doc == 'scene' or include.docs_index %}
|
||||
<ul>
|
||||
<li>
|
||||
{% icon "mdi:robot-happy" %} {% active_link /docs/automation/basics/ Basic automations %}
|
||||
{% if doc == 'automation' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/automation/using_blueprints/ Using automation blueprints %}</li>
|
||||
<li>{% active_link /docs/automation/editor/ Editor %}</li>
|
||||
<li>{% active_link /docs/automation/trigger/ Triggers %}</li>
|
||||
<li>{% active_link /docs/automation/condition/ Conditions %}</li>
|
||||
<li>{% active_link /docs/automation/action/ Actions %}</li>
|
||||
<li>{% active_link /docs/automation/modes/ Run modes %}</li>
|
||||
<li>{% active_link /docs/automation/services/ Services %}</li>
|
||||
<li>{% active_link /docs/automation/templating/ Templates %}</li>
|
||||
<li>{% active_link /docs/automation/yaml/ YAML %}</li>
|
||||
<li>{% active_link /docs/automation/troubleshooting/ Troubleshooting automation %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
{% icon "mdi:palette" %} {% active_link /docs/scene/ Scenes %}
|
||||
{% if doc == 'scene' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/scene/editor/ Editor %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
{% icon "mdi:palette-swatch" %} {% active_link /docs/blueprint/ Blueprints %}
|
||||
{% if doc == 'blueprint' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/blueprint/tutorial/ Tutorial %}</li>
|
||||
<li>{% active_link /docs/blueprint/schema/ Blueprint schema %}</li>
|
||||
<li>{% active_link /docs/blueprint/selectors/ Selectors %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>
|
||||
{% icon "mdi:script-text" %} {% active_link /docs/scripts/ Scripts %}
|
||||
{% if doc == 'scripts' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/scripts/service-calls/ Service calls %}</li>
|
||||
<li>{% active_link /docs/scripts/conditions/ Conditions %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:gauge" %} {% active_link /dashboards Dashboards %}
|
||||
{% if root == 'dashboards' or include.docs_index %}
|
||||
<ul>
|
||||
{% assign elements = site.dashboards | sort_natural: 'title' %}
|
||||
|
||||
<li>
|
||||
<iconify-icon icon="mdi:about-circle"></iconify-icon> Dashboard basics
|
||||
<ul>
|
||||
<li>{% active_link /dashboards/ Introduction %}</li>
|
||||
<li>{% active_link /dashboards/dashboards/ Multiple dashboards %}</li>
|
||||
<li>{% active_link /dashboards/views/ Views %}</li>
|
||||
<li>{% active_link /dashboards/cards/ Cards %}</li>
|
||||
<li>{% active_link /dashboards/badges/ Badges %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<iconify-icon icon="mdi:view-dashboard"></iconify-icon> View types
|
||||
<ul>
|
||||
{% for element in elements %}
|
||||
{% if element.type == "view" %}
|
||||
<li>{% active_link {{element.url}} {{element.sidebar_label}} %}</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:card-multiple" %} Card types
|
||||
<ul>
|
||||
{% for element in elements %}
|
||||
{% if element.type == "card" %}
|
||||
<li>{% active_link {{element.url}} {{element.sidebar_label}} %}</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:cog" %} Advanced
|
||||
<ul>
|
||||
<li>{% active_link /dashboards/features/ Features %}</li>
|
||||
<li>{% active_link /dashboards/header-footer/ Headers & footers %}</li>
|
||||
<li>{% active_link /dashboards/actions/ Actions %}</li>
|
||||
<li><a
|
||||
class="external-link"
|
||||
href="https://developers.home-assistant.io/docs/frontend/custom-ui/custom-card/"
|
||||
>Developing custom cards
|
||||
{% icon "tabler:external-link" %}
|
||||
</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:microphone" %} {% active_link /voice_control/ Voice assistants %}
|
||||
{% if root == 'voice_control' or include.docs_index %}
|
||||
<ul>
|
||||
<li><iconify-icon icon="mdi:devices"></iconify-icon> Devices
|
||||
<ul>
|
||||
<li>{% active_link /voice_control/android/ Assist for Android %}</li>
|
||||
<li>{% active_link /voice_control/apple/ Assist for Apple %}</li>
|
||||
<li>{% active_link /voice_control/start_assist_from_dashboard/ Starting Assist from your dashboard %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>{% icon "mdi:comment-processing-outline" %} {% active_link /voice_control/ Voice assistants %}
|
||||
<ul>
|
||||
<li>{% active_link /voice_control/voice_remote_local_assistant/ Configuring a local assistant %}</li>
|
||||
<li>{% active_link /voice_control/voice_remote_cloud_assistant/ Configuring a cloud assistant %}</li>
|
||||
<li>{% active_link /voice_control/voice_remote_expose_devices/ Exposing devices to voice assistant %}</li>
|
||||
<li>{% active_link /voice_control/install_wake_word_add_on/ Enabling a wake word %}</li>
|
||||
<li>{% active_link /voice_control/about_wake_word/ About wake words %}</li>
|
||||
<li>{% active_link /voice_control/builtin_sentences/ Built-in sentences %}</li>
|
||||
<li>{% active_link /voice_control/custom_sentences/ Custom sentences %}</li>
|
||||
<li>{% active_link /voice_control/aliases/ Using aliases %}</li>
|
||||
<li>{% active_link /voice_control/using_tts_in_automation/ Using Piper TTS in automations %}</li>
|
||||
<li>{% active_link /voice_control/assist_create_open_ai_personality/ Creating a personality with AI %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>{% icon "mdi:checkbox-marked" %} Projects
|
||||
<ul>
|
||||
<li>{% active_link /voice_control/s3_box_voice_assistant/ Tutorial: ESP32-S3-BOX voice assistant %}</li>
|
||||
<li>{% active_link /voice_control/s3-box-customize/ Tutorial: Customize the S3-BOX %}</li>
|
||||
<li>{% active_link /voice_control/thirteen-usd-voice-remote/ Tutorial: $13 voice assistant %}</li>
|
||||
<li>{% active_link /voice_control/worlds-most-private-voice-assistant/ Tutorial: World's most private voice assistant %}</li>
|
||||
<li>{% active_link /voice_control/create_wake_word/ Tutorial: Create your own wake word %}</li>
|
||||
<li>{% active_link /voice_control/assist_daily_summary/ Tutorial: Your daily summary by Assist %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>{% icon "mdi:account-help" %} Troubleshooting
|
||||
<ul>
|
||||
<li>{% active_link /voice_control/troubleshooting/ Troubleshooting Assist %}</li>
|
||||
<li>{% active_link /voice_control/troubleshooting_the_s3_box/ Troubleshooting the ESP32-S3-BOX %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:category" %} {% active_link /docs/organizing/ Organization %}
|
||||
{% if doc == 'organizing' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/organizing/ Grouping your assets %}</li>
|
||||
<li>{% active_link /docs/organizing/tables Working with tables %}</li>
|
||||
<li>{% active_link /docs/organizing/areas/ Areas %}</li>
|
||||
<li>{% active_link /docs/organizing/floors/ Floors %}</li>
|
||||
<li>{% active_link /docs/organizing/labels/ Labels %}</li>
|
||||
<li>{% active_link /docs/organizing/categories/ Categories %}</li>
|
||||
<li>{% active_link /docs/frontend/icons/ Icons %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:solar-power-variant" %} {% active_link /docs/energy/ Home energy management %}
|
||||
{% if doc == 'energy' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/energy/electricity-grid/ Electricity grid %}</li>
|
||||
<li>{% active_link /docs/energy/solar-panels/ Solar panels %}</li>
|
||||
<li>{% active_link /docs/energy/individual-devices/ Individual devices %}</li>
|
||||
<li>{% active_link /docs/energy/faq/ FAQ %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:update" %} {% active_link /common-tasks/os/ Common tasks %}
|
||||
{% if root == 'common-tasks' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /common-tasks/os/ Home Assistant Operating System %}</li>
|
||||
<li>{% active_link /common-tasks/container/ Home Assistant Container %}</li>
|
||||
<li>{% active_link /common-tasks/core/ Home Assistant Core %}</li>
|
||||
<li>{% active_link /common-tasks/supervised/ Home Assistant Supervised %}</li>
|
||||
<li>{% active_link /common-tasks/general/ Installation independent %}</li>
|
||||
<li>{% active_link /docs/troubleshooting_general/ General troubleshooting %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:cogs" %} {% active_link /docs/configuration/ Advanced configuration %}
|
||||
{% if doc == 'configuration' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/configuration/yaml/ YAML syntax %}</li>
|
||||
<li>{% active_link /docs/configuration/basic/ Basic information %}</li>
|
||||
<li>{% active_link /docs/configuration/customizing-devices/ Customizing entities %}</li>
|
||||
<li>{% active_link /docs/configuration/troubleshooting/ Troubleshooting configuration %}</li>
|
||||
<li>{% active_link /docs/configuration/securing/ Security check points %}</li>
|
||||
<li>{% active_link /docs/configuration/remote/ Remote access %}</li>
|
||||
<li>{% active_link /docs/configuration/splitting_configuration/ Splitting up the configuration %}</li>
|
||||
<li>{% active_link /docs/configuration/packages/ Packages %}</li>
|
||||
<li>{% active_link /docs/configuration/secrets/ Storing secrets %}</li>
|
||||
<li>{% active_link /docs/configuration/events/ Events %}</li>
|
||||
<li>{% active_link /docs/configuration/state_object/ State objects %}</li>
|
||||
<li>{% active_link /docs/configuration/templating/ Templating %}</li>
|
||||
<li>{% active_link /docs/configuration/platform_options/ Entity component platform options %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:account-security" %} {% active_link /docs/authentication/ Authentication %}
|
||||
{% if doc == 'authentication' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/authentication/providers/ Auth providers %}</li>
|
||||
<li>{% active_link /docs/authentication/multi-factor-auth/ Multi-factor authentication %}</li>
|
||||
<li>{% active_link /docs/locked_out/ I'm locked out %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:database" %} {% active_link /docs/backend/ Backend %}
|
||||
{% if doc == 'backend' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/frontend/ User interface %}</li>
|
||||
<li>{% active_link /docs/backend/database/ Database %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:palette" %} {% active_link /docs/tools/ Tools and helpers %}
|
||||
{% if doc == 'tools' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/tools/dev-tools/ Developer tools %}</li>
|
||||
<li>{% active_link /docs/tools/quick-bar/ Quick bar %}</li>
|
||||
<li>{% active_link /docs/tools/hass/ hass %}</li>
|
||||
<li>{% active_link /docs/tools/check_config/ check_config %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "mdi:cellphone" %} <a href="https://companion.home-assistant.io/docs">iOS and Android apps {% icon "tabler:external-link" %}</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "simple-icons:mqtt" %} {% active_link /integrations/mqtt MQTT %}
|
||||
{% if doc == 'mqtt' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /integrations/mqtt/#broker-configuration Broker %}</li>
|
||||
<li>{% active_link /integrations/mqtt/#advanced-broker-configuration Certificate %}</li>
|
||||
<li>{% active_link /integrations/mqtt/#mqtt-discovery Discovery %}</li>
|
||||
<li>{% active_link /integrations/mqtt/#publish--dump-services Publish service %}</li>
|
||||
<li>{% active_link /integrations/mqtt/#birth-and-last-will-messages Birth and last will messages %}</li>
|
||||
<li>{% active_link /integrations/mqtt/#testing-your-setup Testing your setup %}</li>
|
||||
<li>{% active_link /integrations/mqtt/#logging Logging %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
<li>
|
||||
{% icon "bitcoin-icons:node-hardware-filled" %} Official hardware
|
||||
<ul>
|
||||
<li><a href="https://green.home-assistant.io/">Home Assistant Green {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a href="https://yellow.home-assistant.io/">Home Assistant Yellow {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a href="https://connectzbt1.home-assistant.io/">Home Assistant Connect ZBT-1 {% icon "tabler:external-link" %}</a></li>
|
||||
</ul>
|
||||
</li>
|
@ -1,24 +1,34 @@
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
{% assign url_parts = page.url | split: '/' %}
|
||||
{% assign root = url_parts[1] %}
|
||||
{% assign doc = url_parts[2] %}
|
||||
|
||||
<section class="vertical-nav aside-module grid__item one-whole lap-one-half">
|
||||
<div class="section">
|
||||
<h1 class="title epsilon">{% icon "mdi:rocket-launch-outline" %} Getting started</h1>
|
||||
<ul class="divided sidebar-menu">
|
||||
<li>{% active_link /installation/ Installation %}</li>
|
||||
<li>{% active_link /installation/ Installation %}
|
||||
{% if root == 'installation' %}
|
||||
<ul>
|
||||
<li><a href="https://green.home-assistant.io/">Home Assistant Green {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a href="https://yellow.home-assistant.io/">Home Assistant Yellow {% icon "tabler:external-link" %}</a></li>
|
||||
<li>{% active_link /installation/raspberrypi Raspberry Pi %}</li>
|
||||
<li>{% active_link /installation/odroid ODROID %}</li>
|
||||
<li>{% active_link /installation/generic-x86-64 Generic x86-64 %}</li>
|
||||
<li>{% active_link /installation/linux Linux %}</li>
|
||||
<li>{% active_link /installation/macos macOS %}</li>
|
||||
<li>{% active_link /installation/windows Windows %}</li>
|
||||
<li>{% active_link /installation/alternative Other systems %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li>{% active_link /getting-started/onboarding/ Onboarding %}</li>
|
||||
<li>{% active_link /getting-started/concepts-terminology/ Concepts and terminology %}</li>
|
||||
<li>{% active_link /getting-started/onboarding_dashboard/ Edit the dashboard %}</li>
|
||||
<li>{% active_link /getting-started/integration/ Integration %}</li>
|
||||
<li>{% active_link /getting-started/automation/ Automation %}</li>
|
||||
<li>
|
||||
{% active_link /getting-started/presence-detection/ Presence detection
|
||||
%}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /getting-started/join-the-community/ Join the community
|
||||
%}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /getting-started/configuration/ Next steps %}
|
||||
</li>
|
||||
<li>{% active_link /getting-started/onboarding_dashboard/ Editing the dashboard %}</li>
|
||||
<li>{% active_link /getting-started/integration/ Adding integrations %}</li>
|
||||
<li>{% active_link /getting-started/automation/ Automating devices %}</li>
|
||||
<li>{% active_link /getting-started/presence-detection/ Presence detection %}</li>
|
||||
<li>{% active_link /getting-started/join-the-community/ Join the community %}</li>
|
||||
<li>{% active_link /getting-started/configuration/ Next steps %}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -5,17 +5,9 @@
|
||||
<ul class="divided sidebar-menu">
|
||||
<li>{% active_link /docs/organizing/ Grouping your assets %}</li>
|
||||
<li>{% active_link /docs/organizing/tables Working with tables %}</li>
|
||||
<li>
|
||||
{% active_link /docs/organizing/areas/ Areas %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /docs/organizing/floors/ Floors %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /docs/organizing/labels/ Labels %}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /docs/organizing/categories/ Categories %}
|
||||
</li>
|
||||
<li>{% active_link /docs/organizing/areas/ Areas %}</li>
|
||||
<li>{% active_link /docs/organizing/floors/ Floors %}</li>
|
||||
<li>{% active_link /docs/organizing/labels/ Labels %}</li>
|
||||
<li>{% active_link /docs/organizing/categories/ Categories %}</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
14
source/_includes/asides/recent_categories.html
Normal file
@ -0,0 +1,14 @@
|
||||
{% capture recent_categories %}{% for post in site.posts limit: 20 %}{{ post.categories | join: ", " }}, {% endfor %}{% endcapture %}
|
||||
{% assign recent_categories = recent_categories | split: ", " | uniq | compact %}
|
||||
|
||||
<section class="recent-categories aside-module grid__item one-whole lap-one-half">
|
||||
<h1 class="title epsilon">{% icon "mdi:category" %} Recent categories</h1>
|
||||
<ul class="divided">
|
||||
{% for category in recent_categories limit: 10 %}
|
||||
{% assign category_link = category | downcase %}
|
||||
{{ category_name }}
|
||||
<li><a href="/blog/categories/{{ category_link }}/">{{ category | replace: '-', ' '}} <span class="count">{{ site.categories[category] | size }}</span></a></li>
|
||||
{% endfor %}
|
||||
<li><a href="/blog/categories/announcements/">View all categories</a></li>
|
||||
</ul>
|
||||
</section>
|
@ -1,7 +1,9 @@
|
||||
<section id="recent-posts" class="aside-module grid__item one-whole lap-one-half">
|
||||
{% assign posts_to_show = include.posts | default: 5 %}
|
||||
|
||||
<section class="recent-posts aside-module grid__item one-whole lap-one-half">
|
||||
<h1 class="title epsilon">{% icon "mdi:newspaper-variant-multiple" %} Recent Posts</h1>
|
||||
<ul class="divided">
|
||||
{% for post in site.posts limit: site.recent_posts %}
|
||||
{% for post in site.posts limit: posts_to_show %}
|
||||
{% if post.url != page.url %}
|
||||
<li class="post">
|
||||
<a href="{{ post.url }}">{{ post.title }}</a>
|
||||
|
@ -1,6 +1,4 @@
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
{% assign elements = site.dashboards | sort_natural: 'title' %}
|
||||
|
||||
<div class="section">
|
||||
<h1 class="title epsilon"><iconify-icon icon="mdi:devices"></iconify-icon> Devices</h1>
|
||||
<ul class="divided sidebar-menu">
|
||||
|
@ -1,19 +1,21 @@
|
||||
{% capture category %}{{ post.categories | size }}{% endcapture %}
|
||||
|
||||
<div class="grid">
|
||||
|
||||
<div class="grid__item one-fifth palm-one-whole">
|
||||
<time datetime="{{ post.date | datetime | date_to_xmlschema }}" pubdate>
|
||||
{{ post.date | date: "<span class='month'>%b</span> <span class='day'>%d</span>"}}
|
||||
</time>
|
||||
</div>
|
||||
<div class="grid__item four-fifths palm-one-whole">
|
||||
<h1 class="gamma"><a href="{{ post.url }}">{{post.title}}</a></h1>
|
||||
{% if category != '0' %}
|
||||
<footer class="meta">
|
||||
{% include blog/post/tags.html %}
|
||||
</footer>
|
||||
{% endif %}
|
||||
<a href="{{ post.url }}">
|
||||
<div class="material-card">
|
||||
<div class="img" style="background-image: url({{ post.og_image }})"></div>
|
||||
<div class="caption">
|
||||
<div>
|
||||
<div class="title">
|
||||
{{ post.title }}
|
||||
</div>
|
||||
<div class="subtitle">
|
||||
<time datetime="{{ post.date | datetime | date_to_xmlschema }}" pubdate>
|
||||
{{ post.date | date: "<span class='month'>%b</span> <span class='day'>%d</span>"}}
|
||||
</time>
|
||||
</div>
|
||||
</div>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path d="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
</div>
|
@ -4,7 +4,7 @@
|
||||
<a href="{{ post.url }}">{{ post.title }}</a>
|
||||
</h1>
|
||||
{% else %}
|
||||
<h1 class="title indent">{{ page.title }}</h1>
|
||||
<h1>{{ page.title }}</h1>
|
||||
{% endif %}
|
||||
|
||||
{% unless post.meta == false %}
|
||||
|
@ -3,11 +3,15 @@
|
||||
{% if page.installation_type != 'alternative' %}
|
||||
These below instructions are for an installation of {% term "Home Assistant Container" %} running in your own container environment, which you manage yourself. Any [OCI](https://opencontainers.org/) compatible runtime can be used, however this guide will focus on installing it with Docker.
|
||||
|
||||
{% note %}
|
||||
This installation method does not have access to add-ons.
|
||||
{% endnote %}
|
||||
|
||||
{% important %}
|
||||
|
||||
<bPrerequisites</b>
|
||||
<b>Prerequisites</b>
|
||||
This guide assumes that you already have an operating system setup and a container runtime installed (like Docker).
|
||||
|
||||
|
||||
If you are using Docker then you need to be on at least version 19.03.9, ideally an even higher version, and `libseccomp` 2.4.2 or newer.
|
||||
|
||||
{% endimportant %}
|
||||
|
@ -1,6 +1,6 @@
|
||||
### 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/packages/Docker>
|
||||
Synology with DSM now supports Docker, allowing you to 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/packages/Docker>
|
||||
|
||||
The steps would be:
|
||||
|
||||
@ -67,7 +67,7 @@ If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assista
|
||||
|
||||
### 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>
|
||||
QNAP with QTS supports Docker, allowing you to 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:
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
## Configuration
|
||||
|
||||
To add the **{{ name }}** integration to your Home Assistant instance, use this My button:
|
||||
To add the **{{ name }}** {% unless page.ha_integration_type == 'hardware' or page.ha_integration_type == 'virtual' %}{{ page.ha_integration_type | default: "integration" }}{% else %}integration{% endunless %} to your Home Assistant instance, use this My button:
|
||||
|
||||
{% my config_flow_start badge domain=domain %}
|
||||
|
||||
|
@ -25,13 +25,10 @@
|
||||
<h4>Join us and contribute!</h4>
|
||||
<ul>
|
||||
<li><a class="external-link" href="https://github.com/home-assistant/">GitHub repo {% icon "tabler:external-link" %}</a></li>
|
||||
<li>
|
||||
<a class="external-link" href="https://developers.home-assistant.io">Developers Portal {% icon "tabler:external-link" %}</a>
|
||||
</li>
|
||||
<li><a class="external-link" href="https://developers.home-assistant.io">Developers Portal {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a class="external-link" href="https://design.home-assistant.io">Design Portal {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a class="external-link" href="https://data.home-assistant.io">Data Science Portal {% icon "tabler:external-link" %}</a></li>
|
||||
<li>
|
||||
<a class="external-link" href="https://community.home-assistant.io">Community Forum {% icon "tabler:external-link" %}</a>
|
||||
</li>
|
||||
<li><a class="external-link" href="https://community.home-assistant.io">Community Forum {% icon "tabler:external-link" %}</a></li>
|
||||
<li><a href="/help/reporting_issues/">Reporting issues</a></li>
|
||||
<li><a href="https://home-assistant-store.creator-spring.com/">Community Merch Store</a></li>
|
||||
</ul>
|
||||
|
@ -1,4 +1,6 @@
|
||||
{% assign recent_release_post = site.categories['Core'].first %}
|
||||
{% assign url_parts = page.url | split: '/' %}
|
||||
{% assign root = url_parts[1] %}
|
||||
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
@ -23,33 +25,22 @@
|
||||
data-close="⨉"
|
||||
></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a {% if root == 'getting-started' or root == 'installation' %}class="active"{% endif %} href="/installation/">Getting started</a></li>
|
||||
<li>
|
||||
<a href="/docs/"
|
||||
>Documentation {% icon "mdi:chevron-down" %}</i
|
||||
></a>
|
||||
<a {% if root == 'docs' or root == 'dashboards' or root == 'voice_control' or root == 'common-tasks' %}class="active"{% endif %} href="/docs/">Documentation {% icon "mdi:chevron-down" %}</a>
|
||||
<ul>
|
||||
<li><a href="/installation/">{% icon "simple-icons:homeassistant" %} Installation</a></li>
|
||||
<li>
|
||||
<a href="/docs/configuration/">{% icon "mdi:cog" %} Configuration</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/docs/automation/">{% icon "mdi:robot-happy" %} Automation</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/docs/scripts/">{% icon "mdi:script-text" %} Scripting</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/dashboards/">{% icon "mdi:view-dashboard" %} Dashboards</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/voice_control/">{% icon "mdi:comment-processing-outline" %} Voice assistant</a>
|
||||
</li>
|
||||
<li><a href="/docs/automation/">{% icon "mdi:robot-happy" %} Automations</a></li>
|
||||
<li><a href="/dashboards/">{% icon "mdi:gauge" %} Dashboards</a></li>
|
||||
<li><a href="/voice_control/">{% icon "mdi:comment-processing-outline" %} Voice assistants</a></li>
|
||||
<li><a href="/docs/organizing/">{% icon "mdi:view-grid" %} Device organization</a></li>
|
||||
<li><a href="/docs/energy/">{% icon "mdi:solar-power-variant" %} Energy management</a></li>
|
||||
<li><a href="/docs/configuration/">{% icon "mdi:cog" %} Advanced configuration</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="/integrations/">Integrations</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a {% if root == 'integrations' %}class="active"{% endif %} href="/integrations/">Integrations</a></li>
|
||||
<li><a {% if root == 'blog' %}class="active"{% endif %} href="/blog/">Blog</a></li>
|
||||
<li><a {% if root == 'help' %}class="active"{% endif %} href="/help/">Need help?</a></li>
|
||||
<li>
|
||||
<div class="docsearch" id="docsearch"></div>
|
||||
</li>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<div class="grid__item flex__item three-fifths lap-one-whole palm-one-whole">
|
||||
{% include custom/welcome.html %}
|
||||
</div>
|
||||
<div class="grid__item flex__item two-fifths lap-one-whole palm-one-whole">
|
||||
<div class="grid__item flex__item two-fifths lap-one-whole palm-one-whole" style="text-align: center;">
|
||||
<iframe id="HAdemo" title="Home Assistant Demo"
|
||||
src="https://demo.home-assistant.io/?frontpage">
|
||||
</iframe>
|
||||
|
3
source/_includes/site/left_sidebar.html
Normal file
@ -0,0 +1,3 @@
|
||||
<div class="grid">
|
||||
{% include site/vertical_nav.html side="left" %}
|
||||
</div>
|
@ -1,46 +1,9 @@
|
||||
<div class="grid">
|
||||
{% assign url_parts = page.url | split: '/' %}
|
||||
{% assign root = url_parts[1] %}
|
||||
{% if root == 'integrations' %}
|
||||
{% include asides/component_navigation.html %}
|
||||
{% elsif root == 'installation' %}
|
||||
{% include asides/installation_navigation.html %}
|
||||
{% elsif root == 'common-tasks' %}
|
||||
{% include asides/common_tasks_navigation.html %}
|
||||
{% elsif root == 'dashboards' %}
|
||||
{% include asides/dashboards_navigation.html %}
|
||||
{% elsif root == 'docs' and url_parts[2] == "organizing" %}
|
||||
{% include asides/organizing_navigation.html %}
|
||||
{% elsif root == 'developers' or root == 'help' %}
|
||||
{% include asides/help_navigation.html %}
|
||||
{% elsif root == 'getting-started' %}
|
||||
{% include asides/getting_started_navigation.html %}
|
||||
{% elsif root == 'docs' %}
|
||||
{% include asides/docs_navigation.html %}
|
||||
{% elsif root == 'projects' %}
|
||||
{% include asides/docs_navigation.html %}
|
||||
{% elsif root == 'faq' %}
|
||||
{% include asides/faq_navigation.html %}
|
||||
{% elsif root == 'voice_control' %}
|
||||
{% include asides/voice_navigation.html %}
|
||||
{% elsif root == 'hassio' or root == 'addons' %}
|
||||
{% include asides/hassio_navigation.html %}
|
||||
{% elsif root == 'cloud' %}
|
||||
{% include asides/cloud_navigation.html %}
|
||||
{% elsif root == 'conference' %}
|
||||
{% include asides/conference_navigation.html %}
|
||||
{% else %}
|
||||
{% if page.blog_index %}
|
||||
{% include asides/categories.html %}
|
||||
{% else %}
|
||||
{% include post/sharing.html %}
|
||||
{% include asides/recent_posts.html %}
|
||||
{% endif %}
|
||||
{% include asides/about.html %}
|
||||
{% endif %}
|
||||
{% include site/vertical_nav.html %}
|
||||
|
||||
{% if page.toc %}
|
||||
{%- unless page.no_toc -%}
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<section id="toc-module" class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title epsilon">{% icon "mdi:toc" %} On this page</h1>
|
||||
{{ content | toc_only }}
|
||||
@ -50,7 +13,7 @@
|
||||
{% endif %}
|
||||
|
||||
{%- if page.ha_category.first -%}
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<section id="category-module" class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title epsilon">{% icon "mdi:category" %} Categories</h1>
|
||||
<ul class='divided'>
|
||||
@ -64,17 +27,3 @@
|
||||
</section>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
// Some sidebars are longer than the screen so they can't be locked.
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const sidebar = document.querySelector("#sidebar").querySelector(".grid");
|
||||
const footer = document.querySelector("footer").querySelector(".grid")
|
||||
if (sidebar) {
|
||||
const content = document.querySelector(".page-content").querySelector(".grid-wrapper");
|
||||
const windowHeight = window.innerHeight - 82;
|
||||
if (sidebar.clientHeight > content.clientHeight || sidebar.clientHeight > windowHeight - footer.clientHeight) {
|
||||
sidebar.style.display = "contents"
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
49
source/_includes/site/vertical_nav.html
Normal file
@ -0,0 +1,49 @@
|
||||
{% assign url_parts = page.url | split: '/' %}
|
||||
{% assign root = url_parts[1] %}
|
||||
{% assign doc = url_parts[2] %}
|
||||
|
||||
{% if root == 'integrations' %}
|
||||
{% include asides/component_navigation.html %}
|
||||
|
||||
{% elsif root == 'getting-started' %}
|
||||
{% include asides/getting_started_navigation.html %}
|
||||
{% elsif root == 'installation' %}
|
||||
{% include asides/getting_started_navigation.html %}
|
||||
|
||||
{% elsif root == 'common-tasks' %}
|
||||
{% include asides/docs_navigation.html %}
|
||||
{% elsif root == 'dashboards' %}
|
||||
{% include asides/docs_navigation.html %}
|
||||
{% elsif root == 'voice_control' %}
|
||||
{% include asides/docs_navigation.html %}
|
||||
{% elsif root == 'docs' %}
|
||||
{% include asides/docs_navigation.html %}
|
||||
{% elsif root == 'projects' %}
|
||||
{% include asides/docs_navigation.html %}
|
||||
|
||||
{% elsif root == 'developers' or root == 'help' %}
|
||||
{% include asides/help_navigation.html %}
|
||||
{% elsif root == 'faq' %}
|
||||
{% include asides/faq_navigation.html %}
|
||||
{% elsif root == 'hassio' or root == 'addons' %}
|
||||
{% include asides/hassio_navigation.html %}
|
||||
{% elsif root == 'cloud' %}
|
||||
{% include asides/cloud_navigation.html %}
|
||||
{% elsif root == 'conference' %}
|
||||
{% include asides/conference_navigation.html %}
|
||||
|
||||
{% else %}
|
||||
{% if page.blog_index %}
|
||||
{% include asides/recent_categories.html %}
|
||||
{% include asides/recent_posts.html posts='5' %}
|
||||
{% else %}
|
||||
{% if doc == 'categories' %}
|
||||
{% include asides/categories.html %}
|
||||
{% elsif root == 'blog' %}
|
||||
{% include asides/recent_posts.html posts='10' %}
|
||||
{% include post/sharing.html %}
|
||||
{% else %}
|
||||
{% include post/sharing.html %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
@ -3,10 +3,16 @@ title: "Template Alarm control panel"
|
||||
description: "Instructions on how to integrate template alarm control panels into Home Assistant."
|
||||
ha_category:
|
||||
- Alarm
|
||||
- Helper
|
||||
ha_release: 0.105
|
||||
ha_iot_class: "Local Push"
|
||||
ha_qa_scale: internal
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- alarm_control_panel
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
|
@ -106,6 +106,10 @@ If the setup for your Android or Fire TV device fails, then there is probably an
|
||||
|
||||
7. If you are using the [Python ADB implementation](#1-python-adb-implementation) approach, as mentioned above, there may be some issues with newer devices. In this case, you should use the [ADB server](#2-adb-server) approach instead.
|
||||
|
||||
## Device Unavailable
|
||||
|
||||
Some devices, such as the Insignia F30 series, disappear from the network when they are turned off. This can be seen as the device becoming unavailable in Home Assistant (logs show TCP timeout errors), disappearing from the network, and not responding to ping. Often, this is for approximately 50 minutes out of each hour when turned off. This can be fixed by opening the Settings app on the device and using "Display & Sounds" -> "Power Controls" -> "Voice Commands When TV Screen is Off". Change this value to "On" and accept the warning about increased power consumption. This will cause the device to always remain listening on the network so that it can be turned on via Home Assistant. Note that after being unplugged or losing power, the device will need to be manually turned on once before this setting takes effect again.
|
||||
|
||||
## Actions
|
||||
|
||||
### `media_player.select_source`
|
||||
|
@ -570,9 +570,3 @@ cards:
|
||||
- Some devices experience disconnects every 15 seconds. This is typically resolved by rebooting the Android TV device after the initial setup of the integration.
|
||||
- If you are not able to connect to the Android TV device, or are asked to pair it again and again, try force-stopping the Android TV Remote Service and clearing its storage. On the Android TV device, go to **Settings** > **Apps** > **Show system apps**. Then, select **Android TV Remote Service** > **Storage** > **Clear storage**. You will have to pair again.
|
||||
- Some onscreen keyboards enabled by TV manufacturers do not support concurrent virtual and onscreen keyboard use. This presents whenever a text field is selected, such as "search" where a constant **use the keyboard on your mobile device** will show, preventing you from opening the onscreen keyboard to type. This can be overcome by either disabling your 3rd party keyboard and using the default Gboard keyboard or by deselecting **Enable IME** in the **Configure** page of the integration.
|
||||
- In some instances, Zeroconf will assign an incorrect IP address to a device. As a workaround, the below can be added to `configuration.yaml` to prevent Zeroconf from assigning IPs for the integration. IPs will need to be manually entered during setup, as described [above](/integrations/androidtv_remote/#configuration).
|
||||
```yaml
|
||||
zeroconf:
|
||||
ignore:
|
||||
- androidtv_remote
|
||||
```
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Cisco Webex Teams
|
||||
description: Instructions on how to add Cisco Webex Teams notifications to Home Assistant.
|
||||
description: Instructions on how to add Cisco Webex notifications to Home Assistant.
|
||||
ha_category:
|
||||
- Notifications
|
||||
ha_iot_class: Cloud Push
|
||||
@ -16,11 +16,11 @@ related:
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `cisco_webex_teams` notification platform allows you to deliver rich notifications from Home Assistant to [Cisco Webex Teams](https://www.webex.com/team-collaboration.html) (formerly known as Cisco Spark).
|
||||
The `cisco_webex_teams` notification platform allows you to deliver rich notifications from Home Assistant to [Cisco Webex Teams](https://www.webex.com/team-collaboration.html) (formerly known as Cisco Spark or Cisco Webex Teams).
|
||||
|
||||
To use this notification platform you will need an app (bot) token. To obtain a token visit [Cisco Webex for Developers](https://developer.webex.com/).
|
||||
|
||||
- Detailed instructions can be found in the section titled **Creating a Webex Teams Bot** on the [Webex Teams bot documentation](https://developer.webex.com/docs/bots).
|
||||
- Detailed instructions can be found in the section titled **Creating a Webex Bot** on the [Webex Teams bot documentation](https://developer.webex.com/docs/bots).
|
||||
|
||||
You also need to specify the `room_id` that you wish to post messages into. The `room_id` can be found in one of two ways:
|
||||
|
||||
@ -28,6 +28,8 @@ You also need to specify the `room_id` that you wish to post messages into. The
|
||||
2. Log into the web client at [teams.webex.com](https://teams.webex.com/),
|
||||
- select the room (or create a new room),
|
||||
- then copying the room ID from the URL.
|
||||
3. Within the Webex Client, press Control+Shift+K (Windows) or Command+Shift+K (macOS), which will automatically copy the space information to your clipboard, which you
|
||||
can paste to a notepad, and will contain your space ID.
|
||||
|
||||
{% important %}
|
||||
You must add the bot email (in the format `mybot@webex.bot`) as a participant to the room specified above.
|
||||
@ -47,7 +49,7 @@ notify:
|
||||
|
||||
## Rich Text Formatting
|
||||
|
||||
Webex Teams clients can render rich text via a whitelisted set of html tags.
|
||||
Webex clients can render rich text via a whitelisted set of html tags.
|
||||
|
||||
For example, you could configure automations to display details in an easy to read fashion like so:
|
||||
|
||||
|
@ -3,10 +3,19 @@ title: "Template cover"
|
||||
description: "Instructions on how to integrate template covers into Home Assistant."
|
||||
ha_category:
|
||||
- Cover
|
||||
- Helper
|
||||
ha_release: 0.48
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- cover
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` platform can create covers that combine integrations and provides
|
||||
|
@ -19,7 +19,7 @@ A sensor platform for Belgian, Dutch, Luxembourg and Swedish Smart Meters which
|
||||
|
||||
- Currently support DSMR V2.2, V3, V4, V5, Belgian V5 variant, Luxembourg V5 variant (Smarty), Swedish V5 variant and the EasyMeter Q3D (Germany) through the [dsmr_parser](https://github.com/ndokter/dsmr_parser) module by Nigel Dokter.
|
||||
- For official information about DSMR refer to: [DSMR Document](https://www.netbeheernederland.nl/dossiers/slimme-meter-15)
|
||||
- For official information about the P1 port refer to: [P1 Companion Standard](https://www.netbeheernederland.nl/_upload/Files/Slimme_meter_15_a727fce1f1.pdf)
|
||||
- For official information about the P1 port refer to: [P1 Companion Standard](https://www.netbeheernederland.nl/sites/default/files/2024-02/dsmr_5.0.2_p1_companion_standard.pdf)
|
||||
- For unofficial hardware connection examples refer to: [Domoticx](http://domoticx.com/p1-poort-slimme-meter-hardware/)
|
||||
- For official information about the Swedish variant refer to: [Swedish specification](https://www.energiforetagen.se/globalassets/energiforetagen/det-erbjuder-vi/kurser-och-konferenser/elnat/branschrekommendation-lokalt-granssnitt-v2_0-201912.pdf).
|
||||
- Supports [P1 cables](http://www.rfxcom.com/epages/78165469.sf/nl_NL/?ObjectPath=/Shops/78165469/Products/19602) integrated in a [RFXtrx device](http://www.rfxcom.com/epages/78165469.sf/nl_NL/?ObjectPath=/Shops/78165469/Products/18103).
|
||||
|
@ -65,8 +65,8 @@ Tested with:
|
||||
|
||||
The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/specifications/) are supported:
|
||||
|
||||
- F6-02-01 (Light and Blind Control - Application Style 2)
|
||||
- F6-02-02 (Light and Blind Control - Application Style 1)
|
||||
- F6-02-01 (Light and Blind Control - Application Style 1)
|
||||
- F6-02-02 (Light and Blind Control - Application Style 2)
|
||||
|
||||
To use your EnOcean device, you first have to set up your EnOcean hub and then add the following to your {% term "`configuration.yaml`" %} file.
|
||||
{% include integrations/restart_ha_after_config_inclusion.md %}
|
||||
|
@ -38,6 +38,8 @@ This integration will offer various sensors depending on the configuration of yo
|
||||
|
||||
_Consumption sensors require your Envoy to be properly configured with consumption <abbr title="current transformers">CT</abbr> sensors installed._
|
||||
|
||||
### With current transformers
|
||||
|
||||
For Envoy S Metered / IQ Gateway Metered with installed and configured current transformers (CT), additional features are available:
|
||||
|
||||
- Sensors for net production (grid export) and net consumption (grid import) if the consumption <abbr title="current transformers">CT</abbr> is a net-consumption <abbr title="current transformers">CT</abbr>.
|
||||
@ -48,26 +50,32 @@ For Envoy S Metered / IQ Gateway Metered with installed and configured current t
|
||||
- Frequency net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase).
|
||||
- Voltage net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase).[^1]
|
||||
- Metering status for net consumption and production <abbr title="current transformers">CT</abbr> (`normal` | `not-metering` | `check-wiring`) (aggregate and phase).
|
||||
- Meter status flags active for net consumption and production <abbr title="current transformers">CT</abbr> (aggregate and phase).[^2]
|
||||
- Count of meter status flags active for net consumption and production <abbr title="current transformers">CT</abbr> (aggregate and phase).[^2]
|
||||
|
||||
[^1]: For multi-phase systems, the Envoy sums the voltages of the phases. May be valid for split-phase, but for 3-phase systems use the individual phases rather than the summed value.
|
||||
[^1]: For multiphase systems, the Envoy sums the voltages of the phases. This may be valid for split-phase, but for 3-phase systems, use the individual phases rather than the summed value.
|
||||
[^2]: If this value is non-zero, consult the diagnostic report of the Envoy and look for `raw_data` - `/ivp/meters` - `statusFlags` for set flags (`production-imbalance` | `negative-production` | `power-on-unused-phase` | `negative-total-consumption`).
|
||||
|
||||
### With batteries
|
||||
|
||||
For Enphase Ensemble systems with the Enpower/IQ System Controller and Encharge/IQ Batteries installed, additional features are available:
|
||||
|
||||
- Sensors for battery status and usage
|
||||
- Sensors for grid status
|
||||
- Sensors for the state of the Enpower's 4 load-shedding relays
|
||||
- A switch allowing you to take your system on-grid and off-grid. Note that the Enpower has a slight delay built-in between receiving these commands and actually switching the system on or off grid.
|
||||
- A switch allowing you to enable or disable charging the Encharge/IQ Batteries from the power grid.
|
||||
- Sensors for grid status (*)
|
||||
- Sensors for the state of the Enpower's four load-shedding relays (*)
|
||||
- A switch allowing you to take your system on-grid and off-grid. Note that the Enpower has a slight delay built-in between receiving these commands and actually switching the system on or off grid. (*)
|
||||
- A switch allowing you to enable or disable charging the Encharge/IQ batteries from the power grid. (*)
|
||||
- Support for changing the battery storage mode between full backup, self-consumption, and savings mode and setting the reserve battery level for outages.
|
||||
- If a storage <abbr title="current transformers">CT</abbr> is installed:
|
||||
- Sensors for battery storage energy charged and discharged and current active power discharge/charge
|
||||
- Sensors for battery storage energy charged and discharged and current active power discharge/charge
|
||||
- Disabled sensors for:
|
||||
- Phase battery storage energy charged and discharged and current power discharge/charge
|
||||
- Voltage net consumption <abbr title="current transformers">CT</abbr> (aggregate and phase)
|
||||
- Voltage storage <abbr title="current transformers">CT</abbr> (aggregate and phase)
|
||||
- Metering status for storage <abbr title="current transformers">CT</abbr> (aggregate and phase)
|
||||
- Meter status flags active storage <abbr title="current transformers">CT</abbr> (aggregate and phase)
|
||||
- Count of meter status flags active storage <abbr title="current transformers">CT</abbr> (aggregate and phase)
|
||||
|
||||
The load shedding and on/off-grid functions marked (*) are only available with the Enpower/IQ System Controller installed. In battery installations without off-grid functionality, used in many EU countries, these off-grid related sensors and switches are not available.
|
||||
|
||||
In multiphase installations with batteries, in countries with phase-balancing grid meters, the battery will export to the grid on one phase the amount it lacks on another phase, as if it is using the grid as a 'transport' between phases. Since the grid meter will balance the amount in and exported on the two phases, the net result is zero. The Envoy multiphase consumption CTs, however, will report the amounts on both phases, resulting in too high export on one and too high import on the other. One needs to use the sum of grid import and export to eliminate this effect.
|
||||
|
||||
## Envoy authentication requirements
|
||||
|
||||
@ -93,7 +101,7 @@ The default polling interval is 60 seconds. To customize the polling interval, r
|
||||
|
||||
## Credentials or device IP address update
|
||||
|
||||
This integration supports updating the Envoy configuration through a `reconfigure` menu option. The reconfiguration allows for changing the Envoy IP address, username, and/or password. Use this menu option if your Enlighten credentials or the device's IP address has changed and needs to be manually updated. The latter is typically automatically detected and updated.
|
||||
This integration supports updating the Envoy configuration through a `reconfigure` menu option. The reconfiguration allows for changing the Envoy IP address, username, and/or password. Use this menu option if your Enlighten credentials or the device's IP address has changed and needs to be manually updated. The latter is typically automatically detected and updated.
|
||||
|
||||
Use this menu option also when an Envoy firmware upgrade requires a switch from local Envoy username/password to token-based authentication with Enlighten username/password (refer to [authentication requirements](#envoy-authentication-requirements)).
|
||||
|
||||
@ -111,6 +119,12 @@ This integration provides several values suitable for the energy dashboard:
|
||||
|
||||
[^5]: Only applies when using Envoy S Metered / IQ Gateway Metered / IQ Combiner with installed and configured storage / battery <abbr title="current transformers">CT</abbr>.
|
||||
|
||||
## Configure
|
||||
|
||||
The integration provides a `configure` menu to configure the following options:
|
||||
|
||||
- Collect test fixture data in [diagnostics report](#diagnostics) - No/Yes
|
||||
|
||||
## Debug logs and diagnostics
|
||||
|
||||
This integration provides debug logs and diagnostics reports as described in the [Home Assistant troubleshooting pages](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics).
|
||||
@ -144,7 +158,11 @@ The end of a collection cycle is marked by:
|
||||
|
||||
### Diagnostics
|
||||
|
||||
The diagnostics file is a JSON file and includes a `data` section with the details for this integration. The file can be viewed with any text editor[^4]. The data section has 5 major subsections which reflects how the integration is setup and data is used. Below the 5 subsections, each collapsed.
|
||||
The diagnostics file is a JSON file and includes a `data` section with the details for this integration. The file can be viewed with any text editor[^4]. The data section has up to 6 major subsections which reflect how the integration is set up and data is used.
|
||||
|
||||
When new features are requested or firmware is upgraded, it can happen that existing test fixtures no longer cover all test cases and new ones are needed. It may happen, you are requested to provide data for such test fixtures. The diagnostics report can provide the needed information to build such test fixtures. By default, the diagnostics report does not include this data. To include the test fixture data, enable this option in the integration [configure](#configure) menu. When this option is enabled, the creation of the diagnostic report may take longer as it will perform a scan of the Envoy. When done creating the report, clear the option to prevent this delay the next time a diagnostic report is created. The option has no impact on the integration's performance, only on the time it takes to create the report.
|
||||
|
||||
Below the 6 subsections, each collapsed.
|
||||
|
||||
[^4]: Use of a JSON-aware viewer is not required but makes inspecting the file easier.
|
||||
|
||||
@ -159,7 +177,9 @@ The diagnostics file is a JSON file and includes a `data` section with the detai
|
||||
"envoy_model_data": { ...
|
||||
},
|
||||
"envoy_entities_by_device": [ ...
|
||||
]
|
||||
],
|
||||
"fixtures" : { ...
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
@ -183,3 +203,7 @@ Shows the data of the Envoy extracted from the raw_data into Envoy class data us
|
||||
#### Envoy entities by device
|
||||
|
||||
Shows all entities created by the integration based on the findings of the initial scan, grouped by device. Entity state based on the last data collection cycle is included. State values here come from the Envoy model data and are the values visible in the dashboards.
|
||||
|
||||
#### Fixtures
|
||||
|
||||
The data to build test fixtures from. This section is only available when the option to provide this is enabled in the integration [configuration](#configure). Information is collected from the envoy in a scan for known and needed endpoints. Data is collected to enable the developers to build test fixtures from it.
|
||||
|
@ -3,10 +3,19 @@ title: "Template fan"
|
||||
description: "Instructions how to setup the template fans within Home Assistant."
|
||||
ha_category:
|
||||
- Fan
|
||||
- Helper
|
||||
ha_release: 0.69
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- fan
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The **Template** {% term integration %} creates fans that combine integrations and provides the
|
||||
|
@ -118,7 +118,8 @@ the results a bit.
|
||||
|
||||
The **damping** factor allows you to adjust and "damp" the results of your solar
|
||||
predictions in the morning and evening a bit and is a great method to make
|
||||
results less optimistic and more tuned to your reality.
|
||||
results less optimistic and more tuned to your reality. More details on damping can
|
||||
be found [here](https://doc.forecast.solar/damping).
|
||||
|
||||
The **inverter** size can be used in a situation where the maximum power of your
|
||||
inverter is lower than the total power of all your solar panels (as entered under
|
||||
|
@ -83,16 +83,3 @@ from the feed.
|
||||
| created | Number of entities that were created during last update (optional). |
|
||||
| updated | Number of entities that were updated during last update (optional). |
|
||||
| removed | Number of entities that were removed during last update (optional). |
|
||||
|
||||
## Full configuration
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
gdacs:
|
||||
categories:
|
||||
- Drought
|
||||
- Earthquake
|
||||
radius: 1000
|
||||
latitude: -41.2
|
||||
longitude: 174.7
|
||||
```
|
||||
|
@ -21,11 +21,14 @@ ha_config_flow: true
|
||||
|
||||
The `generic_hygrostat` humidifier {% term integration %} is a virtual hygrostat implemented in Home Assistant. It uses a sensor and a switch connected to a humidifier or dehumidifier under the hood. When in humidifier mode, if the measured humidity is less than the target humidity, the humidifier will be turned on and turned off when the required humidity is reached. When in dehumidifier mode, if the measured humidity is greater than the target humidity, the dehumidifier will be turned on and turned off when required humidity is reached. One Generic Hygrostat entity can only control one switch. If you need to activate two switches, one for a humidifier and one for a dehumidifier, you will need two Generic Hygrostat entities.
|
||||
|
||||
To enable the {% term integration %}, you need to add it to your {% term "`configuration.yaml`" %} file.
|
||||
{% include integrations/restart_ha_after_config_inclusion.md %}
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% note %}
|
||||
Configuration using our user interface provides a more limited subset of options, making this integration more accessible while covering most use cases.
|
||||
|
||||
If you need more specific features for your use case, the manual [YAML-configuration section](#yaml-configuration) of this integration might provide them.
|
||||
{% endnote %}
|
||||
|
||||
## YAML configuration
|
||||
|
||||
Alternatively, this integration can be configured and set up manually via YAML
|
||||
|
@ -20,6 +20,12 @@ The `generic_thermostat` climate {% term integration %} is a thermostat implemen
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% note %}
|
||||
Configuration using our user interface provides a more limited subset of options, making this integration more accessible while covering most use cases.
|
||||
|
||||
If you need more specific features for your use case, the manual [YAML-configuration section](#yaml-configuration) of this integration might provide them.
|
||||
{% endnote %}
|
||||
|
||||
## YAML configuration
|
||||
|
||||
Alternatively, this integration can be configured and set up manually via YAML
|
||||
|
@ -37,8 +37,10 @@ A connection to a single device enables control for all devices on the network.
|
||||
Use the sign-in service (go to Developer Tools -> Services and then run the `heos.sign_in` with your username and password. Use the "Fill example data" first, then change it with your data. Check the logs right after, there you should see if the sign-in was successful or not) to sign the connected controller into a HEOS account so that it can retrieve and play HEOS favorites and playlists. An error message is logged if sign-in is unsuccessful. Example service data payload:
|
||||
|
||||
```yaml
|
||||
username: "example@example.com"
|
||||
password: "password"
|
||||
service: heos.sign_in
|
||||
data:
|
||||
username: "example@example.com"
|
||||
password: "password"
|
||||
```
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
@ -57,9 +59,11 @@ Use the sign-out service to sign the connected controller out of a HEOS account.
|
||||
You can play a HEOS favorite by number or name with the `media_player.play_media` service. Example service data payload:
|
||||
|
||||
```yaml
|
||||
entity_id: media_player.office
|
||||
media_content_type: "favorite"
|
||||
media_content_id: "1"
|
||||
service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.office
|
||||
media_content_type: "favorite"
|
||||
media_content_id: "1"
|
||||
```
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
@ -73,9 +77,11 @@ media_content_id: "1"
|
||||
You can play a HEOS playlist with the `media_player.play_media` service. Example service data payload:
|
||||
|
||||
```yaml
|
||||
entity_id: media_player.office
|
||||
media_content_type: "playlist"
|
||||
media_content_id: "Awesome Music"
|
||||
service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.office
|
||||
media_content_type: "playlist"
|
||||
media_content_id: "Awesome Music"
|
||||
```
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
@ -89,9 +95,11 @@ media_content_id: "Awesome Music"
|
||||
You can play a HEOS Quick Select by number or name with the `media_player.play_media` service. Example service data payload:
|
||||
|
||||
```yaml
|
||||
entity_id: media_player.office
|
||||
media_content_type: "quick_select"
|
||||
media_content_id": "1"
|
||||
service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.office
|
||||
media_content_type: "quick_select"
|
||||
media_content_id": "1"
|
||||
```
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
@ -105,9 +113,11 @@ media_content_id": "1"
|
||||
You can play a URL through a HEOS media player using the `media_player.play_media` service. The HEOS player must be able to reach the URL. Example service data payload:
|
||||
|
||||
```yaml
|
||||
entity_id: media_player.office
|
||||
media_content_type: "url"
|
||||
media_content_id: "http://path.to/stream.mp3"
|
||||
service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.office
|
||||
media_content_type: "url"
|
||||
media_content_id: "http://path.to/stream.mp3"
|
||||
```
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
@ -121,10 +131,12 @@ media_content_id: "http://path.to/stream.mp3"
|
||||
For grouping HEOS media players together for synchronous playback you can use the `media_player.join` service. With the example service data payload down below you'll expand playback of `media_player.office` to the `media_player.kitchen` and `media_player.bathroom` players. Please note that all of the media players need to be HEOS players.
|
||||
|
||||
```yaml
|
||||
entity_id: media_player.office
|
||||
group_members:
|
||||
- media_player.kitchen
|
||||
- media_player.bathroom
|
||||
service: media_player.join
|
||||
data:
|
||||
entity_id: media_player.office
|
||||
group_members:
|
||||
- media_player.kitchen
|
||||
- media_player.bathroom
|
||||
```
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
@ -137,6 +149,12 @@ group_members:
|
||||
|
||||
For removing a HEOS player from a group you can use the `media_player.unjoin` service.
|
||||
|
||||
```yaml
|
||||
service: media_player.unjoin
|
||||
data:
|
||||
entity_id: media_player.office
|
||||
```
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------ |
|
||||
| `entity_id` | yes | Unjoin this media player from any player groups. |
|
||||
@ -146,7 +164,7 @@ For removing a HEOS player from a group you can use the `media_player.unjoin` se
|
||||
- Receivers with multiple zones are represented as a single media player. They will be turned on when playback is started, but cannot be turned off by the integration at this time.
|
||||
- [Denon AVR](/integrations/denonar/) and HEOS media players can be combined into a [Universal Media Player](/integrations/universal/#denon-avr--heos)
|
||||
|
||||
## Troubleshooing
|
||||
## Troubleshooting
|
||||
|
||||
### Debugging
|
||||
|
||||
|
@ -272,7 +272,7 @@ homekit:
|
||||
default: libopus
|
||||
available options: copy, libopus
|
||||
co_threshold:
|
||||
description: Only for `sensor` entities with `device_class` `carbon_monoxide` or `co` in `entity_id`. Used as the threshold value once HomeKit will warn/notify the user.
|
||||
description: Only for `sensor` entities with `device_class` `carbon_monoxide`. Used as the threshold value once HomeKit will warn/notify the user.
|
||||
required: false
|
||||
type: integer
|
||||
default: 25
|
||||
@ -428,8 +428,8 @@ The following integrations are currently supported:
|
||||
| sensor | TemperatureSensor | All sensors that have `°C` or `°F` as their `unit_of_measurement` and `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 `gas`/`pm10`/`pm25` as part of their `entity_id` or `gas`/`pm10`/`pm25`/`nitrogen_dioxide`/`volatile_organic_compounds` as their `device_class`. The VOC mappings use the IAQ guidelines for Europe released by the WHO (World Health Organization). |
|
||||
| sensor | CarbonMonoxideSensor | All sensors that have `co` as their `device_class` |
|
||||
| sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `co2` as their `device_class` |
|
||||
| sensor | CarbonMonoxideSensor | All sensors that have `carbon_monoxide` as their `device_class` |
|
||||
| sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `carbon_dioxide` 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 | Switch | Represented as a switch by default but can be changed by using `type` within `entity_config`. |
|
||||
| water_heater | WaterHeater | All `water_heater` devices. |
|
||||
|
@ -78,6 +78,7 @@ To get the Estimated distance sensor to work, in most cases, it has to be calibr
|
||||
- [Blue SLIM ID](https://elainnovation.com/en/product/blue-slim-id-en/)
|
||||
- [Feasycom FSC-BP103B](https://www.feasycom.com/bluetooth-ibeacon-da14531)
|
||||
- [Feasycom FSC-BP104D](https://www.feasycom.com/dialog-da14531-bluetooth-low-energy-beacon)
|
||||
- [Feasycom FSC-BP106](https://www.feasycom.com/fsc-bp106)
|
||||
- [Feasycom FSC-BP108](https://www.feasycom.com/bluetooth-5-1-waterproof-bluetooth-beacon)
|
||||
- [MikroTik TG-BT5-IN](https://mikrotik.com/product/tg_bt5_in) (Additional sensors such as angle or impact are not compatible)
|
||||
- [NRF51822 iBeacon](https://www.aliexpress.com/item/32826502025.html)
|
||||
|
@ -96,6 +96,7 @@ max_sub_interval:
|
||||
description: "Applies time-based integration if the source did not change for this duration. This implies that at least every `max sub-interval`, the integral is updated. If you don't want time-based updates, enter 0."
|
||||
required: false
|
||||
type: time
|
||||
default: 0
|
||||
{% endconfiguration %}
|
||||
|
||||
The unit of `source` together with `unit_prefix` and `unit_time` is used to generate a unit for the integral product (e.g. a source in `W` with prefix `k` and time `h` would result in `kWh`). Note that `unit_prefix` and `unit_time` are _also_ relevant to the Riemann sum calculation.
|
||||
|
@ -3,10 +3,19 @@ title: "Template Light"
|
||||
description: "Instructions on how to integrate Template Lights into Home Assistant."
|
||||
ha_category:
|
||||
- Light
|
||||
- Helper
|
||||
ha_release: 0.46
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- light
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` platform creates lights that combine integrations and provides the
|
||||
|
@ -3,10 +3,19 @@ title: "Template Lock"
|
||||
description: "Instructions on how to integrate Template Locks into Home Assistant."
|
||||
ha_category:
|
||||
- Lock
|
||||
- Helper
|
||||
ha_release: 0.81
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- lock
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` platform creates locks that combines components.
|
||||
@ -197,4 +206,4 @@ In `secrets.yaml`:
|
||||
garage_door_pin: "1234"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
{% endraw %}
|
||||
|
@ -1621,19 +1621,6 @@ Description:
|
||||
| value | (write_register) A single value or an array of 16-bit values. Single value will call modbus function code 0x06. Array will call modbus function code 0x10. Values might need reverse ordering. E.g., to set 0x0004 you might need to set `[4,0]`, this depend on the byte order of your CPU |
|
||||
| state | (write_coil) A single boolean or an array of booleans. Single boolean will call modbus function code 0x05. Array will call modbus function code 0x0F |
|
||||
|
||||
The modbus integration also provides communication stop/restart services. These services will not do any reconfiguring, but simply stop/start the modbus communication layer.
|
||||
|
||||
| Service | Description |
|
||||
| -------------- | --------------------------------------------- |
|
||||
| modbus.stop | Stop communication |
|
||||
| modbus.restart | Restart communication (Stop first if running) |
|
||||
|
||||
Description:
|
||||
|
||||
| Attribute | Description |
|
||||
| --------- | ------------------------------------------------ |
|
||||
| hub | Hub name (defaults to 'modbus_hub' when omitted) |
|
||||
|
||||
## Example: writing a float32 type register
|
||||
|
||||
To write a float32 datatype register use network format like `10.0` == `0x41200000` (network order float hexadecimal).
|
||||
|
@ -40,6 +40,7 @@ Additionally the following brands have been reported to also work with this inte
|
||||
- [Motionblinds](https://motionblinds.com/)
|
||||
- [Raven Rock MFG](https://www.ravenrockmfg.com/)
|
||||
- [ScreenAway](https://www.screenaway.com.au/)
|
||||
- [Smart Rollo (SIRO)](https://smart-rollos.de/)
|
||||
- [Smartblinds](https://www.smartblinds.nl/)
|
||||
- [Smart Home](https://www.smart-home.hu)
|
||||
- [Uprise Smart Shades](http://uprisesmartshades.com)
|
||||
@ -58,6 +59,8 @@ The following bridges are reported to work with this integration:
|
||||
- Linx Hub
|
||||
- Linx Hub Mini
|
||||
- Linx Hub USB
|
||||
- SIRO Connect SI7002
|
||||
- SIRO Connect SI7005
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
|
@ -302,6 +302,7 @@ Battery-powered Reolink cameras can be used with Home Assistant with the help of
|
||||
|
||||
The following battery-powered models have been tested and confirmed to work through the Reolink Home Hub:
|
||||
|
||||
- [Argus 3 Pro](https://reolink.com/product/argus-3-pro/)
|
||||
- [Argus 4 Pro](https://reolink.com/product/argus-4-pro/)
|
||||
- [Argus Eco Ultra](https://reolink.com/product/argus-eco-ultra/)
|
||||
- [Argus Track](https://reolink.com/product/argus-track/)
|
||||
|
@ -188,20 +188,33 @@ We are working on adding a lot of features to the core integration. We have reve
|
||||
### How can I clean a specific room?
|
||||
We plan to make the process simpler in the future, but for now, it is a multi-step process.
|
||||
1. Make sure to first name the rooms in the Roborock app; otherwise, they won't appear in the debug log.
|
||||
2. Go to {% my developer_call_service service="roborock.get_maps" title="**Developer Tools** > **Services** > **Roborock: Get maps**" %}. Select your vacuum as the entity. Note that room IDs and names are only updated on the currently selected map. If you don't see the rooms you expect, you should select the other map through your app or through the `load_multi_map` service.
|
||||
You will get a response like this:
|
||||
```json
|
||||
vacuum.s7_roborock:
|
||||
maps:
|
||||
- flag: 0
|
||||
name: Downstairs
|
||||
rooms:
|
||||
"16": Kitchen
|
||||
"17": Living room
|
||||
```
|
||||
2. Go to {% my developer_call_service service="roborock.get_maps" title="**Developer Tools** > **Services** > **Roborock: Get Maps**" %}. Select your vacuum as the entity. Note that room IDs and names are only updated on the currently selected map.
|
||||
|
||||
- **Request**: Your request should look like:
|
||||
|
||||
```yaml
|
||||
service: roborock.get_maps
|
||||
target:
|
||||
entity_id: vacuum.s7_roborock
|
||||
data: {}
|
||||
```
|
||||
|
||||
- **Result**: You will get a response like this:
|
||||
|
||||
```json
|
||||
vacuum.s7_roborock:
|
||||
maps:
|
||||
- flag: 0
|
||||
name: Downstairs
|
||||
rooms:
|
||||
"16": Kitchen
|
||||
"17": Living room
|
||||
```
|
||||
|
||||
3. Go back to {% my developer_call_service service="vacuum.send_command" title="**Developer Tools** > **Services** > **Vacuum: Send Command**" %} then type `app_segment_clean` as your command and `segments` with a list of the 2-digit IDs you want to clean. Then, add `repeat` with a number (ranging from 1 to 3) to determine how many times you want to clean these areas.
|
||||
|
||||
Example:
|
||||
|
||||
```yaml
|
||||
service: vacuum.send_command
|
||||
data:
|
||||
|
@ -350,7 +350,11 @@ mqtt:
|
||||
|
||||
{% endraw %}
|
||||
|
||||
The state and the attributes of the sensor by design do not update in a synchronous manner if they share the same MQTT topic. Temporal mismatches between the state and the attribute data may occur if both the state and the attributes are changed simultaneously by the same MQTT message. An automation that triggers on any state change of the sensor will also trigger both on the change of the state or a change of the attributes. Such automations will be triggered twice if both the state and the attributes change. Please use a [MQTT trigger](/docs/automation/trigger/#mqtt-trigger) and process the JSON in the automation directly via the {% raw %}`{{ trigger.payload_json }}`{% endraw %} [trigger data](/docs/automation/templating/#mqtt) for automations that must synchronously handle multiple JSON values within the same MQTT message.
|
||||
{% warning %}
|
||||
If `json_attributes_topic` and `state_topic` share the same topic, a state update will happen only once, unless the state update did not change the state or `force_update` was set to `true`.
|
||||
|
||||
Setting up MQTT sensor's with extra state attributes that contain values that change at every update, like timestamps, or enabling the `force_update` option, is discouraged, as this will trigger state writes for every update. This can have a serious impact on the total system performance. A better option is creating separate sensors instead.
|
||||
{% endwarning %}
|
||||
|
||||
### Usage of `entity_id` in the template
|
||||
|
||||
|
@ -248,6 +248,12 @@ SELECT pg_database_size('dsmrreader')/1024/1024 as db_size;
|
||||
Use `db_size` as column for value.
|
||||
Replace `dsmrreader` with the correct name of your database.
|
||||
|
||||
{% tip %}
|
||||
The unit of measurement returned by the above query is `MiB`, please configure this correctly.
|
||||
|
||||
Set the device class to `Data size` so you can use UI unit conversion.
|
||||
{% endtip %}
|
||||
|
||||
#### MariaDB/MySQL
|
||||
|
||||
Change `table_schema="homeassistant"` to the name that you use as the database name, to ensure that your sensor will work properly.
|
||||
@ -257,6 +263,12 @@ SELECT table_schema "database", Round(Sum(data_length + index_length) / POWER(10
|
||||
```
|
||||
Use `value` as column for value.
|
||||
|
||||
{% tip %}
|
||||
The unit of measurement returned by the above query is `MiB`, please configure this correctly.
|
||||
|
||||
Set the device class to `Data size` so you can use UI unit conversion.
|
||||
{% endtip %}
|
||||
|
||||
#### SQLite
|
||||
|
||||
If you are using the `recorder` integration then you don't need to specify the location of the database. For all other cases, add `sqlite:////path/to/database.db` as Database URL.
|
||||
@ -266,6 +278,12 @@ SELECT ROUND(page_count * page_size / 1024 / 1024, 1) as size FROM pragma_page_c
|
||||
```
|
||||
Use `size` as column for value.
|
||||
|
||||
{% tip %}
|
||||
The unit of measurement returned by the above query is `MiB`, please configure this correctly.
|
||||
|
||||
Set the device class to `Data size` so you can use UI unit conversion.
|
||||
{% endtip %}
|
||||
|
||||
#### MS SQL
|
||||
|
||||
Use the same Database URL as for the `recorder` integration. Change `DB_NAME` to the name that you use as the database name, to ensure that your sensor will work properly. Be sure `username` has enough rights to access the sys tables.
|
||||
@ -282,3 +300,9 @@ Connecting with MSSQL requires "pyodbc" to be installed on your system, which ca
|
||||
SELECT TOP 1 SUM(m.size) * 8 / 1024 as size FROM sys.master_files m INNER JOIN sys.databases d ON d.database_id=m.database_id WHERE d.name='DB_NAME';
|
||||
```
|
||||
Use `size` as column for value.
|
||||
|
||||
{% tip %}
|
||||
The unit of measurement returned by the above query is `MiB`, please configure this correctly.
|
||||
|
||||
Set the device class to `Data size` so you can use UI unit conversion.
|
||||
{% endtip %}
|
||||
|
@ -3,11 +3,20 @@ title: "Template Switch"
|
||||
description: "Instructions on how to integrate Template Switches into Home Assistant."
|
||||
ha_category:
|
||||
- Switch
|
||||
- Helper
|
||||
ha_release: 0.13
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- switch
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` platform creates switches that combines components.
|
||||
|
@ -31,6 +31,10 @@ This integration interacts with your [Tedee](https://tedee.com) locks by communi
|
||||
|
||||
If you do not own the bridge, you can still add your locks to Home Assistant through the [HomeKit device integration](/integrations/homekit_controller/). Communication will happen over Bluetooth in that case, and features will be limited.
|
||||
|
||||
{% note %}
|
||||
The integration will try to configure callbacks to receive near-real-time push updates from your bridge about your lock state changes. For this to work properly, the bridge must be able to reach your Home Assistant instance. It will prefer the configured `internal_url`, so ensure this address is reachable from your bridge on your network.
|
||||
{% endnote %}
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% configuration_basic %}
|
||||
|
@ -34,6 +34,9 @@ ha_platforms:
|
||||
- weather
|
||||
ha_integration_type: helper
|
||||
ha_config_flow: true
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` integration allows creating entities which derive their values from other data. This is done by specifying [templates](/docs/configuration/templating/) for properties of an entity, like the name or the state.
|
||||
@ -59,7 +62,17 @@ _For old sensor/binary sensor configuration format, [see below](#legacy-binary-s
|
||||
|
||||
Sensor template, binary sensor template, button template, image template and select template can be configured using the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Select the **+ Add helper** button and then select the **{% my config_flow_start domain=page.ha_domain title=page.title %}** helper.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% important %}
|
||||
To be able to add **{% my helpers title="Helpers" %}** via the user interface, you should have `default_config:` in your {% term "`configuration.yaml`" %}. It should already be there by default unless you removed it.
|
||||
{% endimportant %}
|
||||
|
||||
{% note %}
|
||||
Configuration using our user interface provides a more limited subset of options, making this integration more accessible while covering most use cases.
|
||||
|
||||
If you need more specific features for your use case, the manual [YAML-configuration section](#yaml-configuration) of this integration might provide them.
|
||||
{% endnote %}
|
||||
|
||||
## YAML configuration
|
||||
|
||||
|
@ -34,7 +34,9 @@ If you see an "Unable to connect" message, restart the gateway and try again. Do
|
||||
{% endtip %}
|
||||
|
||||
{% note %}
|
||||
There is currently no native support for the Dirigera hub released in October, 2022.
|
||||
There is currently no dedicated core integration for the Dirigera hub released in October 2022.
|
||||
|
||||
The Dirigera hub can, however, be integrated directly via the [HomeKit device](/integrations/homekit_controller/) integration. This configuration even provides events for motion sensors and buttons, which the original integration lacks.
|
||||
{% endnote %}
|
||||
|
||||
|
||||
@ -61,5 +63,5 @@ Please make sure you have `autoconf` installed (`$ sudo apt-get install autoconf
|
||||
|
||||
## Known limitations
|
||||
|
||||
- The TRÅDFRI Shortcut button, Remotes and motion sensor only send information about their battery status, no events, to Home Assistant and thus can't be used to automate with. If you want to automate with these devices, you need to use something like [ZHA](/integrations/zha/).
|
||||
- The TRÅDFRI Shortcut button, Remotes and motion sensor only send information about their battery status, no events, to Home Assistant and thus can't be used to automate with. If you want to automate with these devices, you need to use something like [ZHA](/integrations/zha/), or the [HomeKit device](/integrations/homekit_controller) integration as mentioned above.
|
||||
- The groups you find in the app are not imported into Home Assistant as they are known to cause stability issues. We recommend that you use the native [light groups](/integrations/light.group/) instead.
|
||||
|
@ -29,7 +29,7 @@ notify:
|
||||
|
||||
{% configuration %}
|
||||
from_number:
|
||||
description: An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://support.twilio.com/hc/en-us/articles/223183008-Formatting-International-Phone-Numbers) for more information. Alternatively, a sender ID can be used instead of a phone number. The sender ID must be formatted according to Twilio's guidelines. See [Twilio's guide to sender ID](https://support.twilio.com/hc/en-us/articles/223181348-Getting-started-with-Alphanumeric-Sender-ID) for more information. Do keep in mind that not all countries support sender ID. See [Twilio's page of supported countries](https://support.twilio.com/hc/en-us/articles/223133767-International-support-for-Alphanumeric-Sender-ID) for more information.
|
||||
description: An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://help.twilio.com/articles/223183008) for more information. Alternatively, a sender ID can be used instead of a phone number. The sender ID must be formatted according to Twilio's guidelines. See [Twilio's guide to sender ID](https://help.twilio.com/articles/223181348-Getting-started-with-Alphanumeric-Sender-ID) for more information. Do keep in mind that not all countries support sender ID. See [Twilio's page of supported countries](https://help.twilio.com/articles/223133767-International-support-for-Alphanumeric-Sender-ID) for more information.
|
||||
required: true
|
||||
type: string
|
||||
name:
|
||||
|
@ -53,7 +53,7 @@ The UniFi Network application allows you to create multiple users on it besides
|
||||
|
||||
### UniFi OS
|
||||
|
||||
For UniFi OS a local-only user needs to be created. A user who uses the Ubiquiti cloud will not work. You can do this in the manage users section on the UniFi OS dashboard. Make sure to give it the right permissions for the functions you want to use. Note the Dream Machine Pro and Cloud Key Gen2 plus updated to UniFi OS needs the port to be 443.
|
||||
For UniFi OS a local-only user needs to be created. A user who uses the Ubiquiti cloud will not work. You can do this in the manage users section on the UniFi OS dashboard. Make sure to give it the right permissions for the functions you want to use. Note the Dream Machine Pro and Cloud Key Gen2 plus updated to UniFi OS needs the port to be 443. For some self hosted servers the port will be 8443.
|
||||
|
||||
### Conflicts with MQTT
|
||||
|
||||
|
@ -3,10 +3,19 @@ title: "Template vacuum"
|
||||
description: "Instructions how to setup template vacuums within Home Assistant."
|
||||
ha_category:
|
||||
- Vacuum
|
||||
- Helper
|
||||
ha_release: 0.96
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- vacuum
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` platform creates vacuums that combine integrations and provides the
|
||||
|
@ -3,10 +3,19 @@ title: "Template Weather Provider"
|
||||
description: "Instructions on how to integrate Template Weather provider into Home Assistant."
|
||||
ha_category:
|
||||
- Weather
|
||||
- Helper
|
||||
ha_release: 2021.3
|
||||
ha_iot_class: "Local Push"
|
||||
ha_qa_scale: internal
|
||||
ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_domain: template
|
||||
ha_platforms:
|
||||
- weather
|
||||
ha_integration_type: helper
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `template` integrations creates weather provider that combines integrations and an existing weather provider into a fused weather provider.
|
||||
|
@ -19,6 +19,14 @@ ha_platforms:
|
||||
|
||||
This {% term integration %} provides sensors for monitoring the CPU and memory usage of your server.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
For best security, create a specific Webmin user for Home Assistant with a strong password and only "Can accept RPC calls" permission (under "Permissions for all modules") and remove the "Can accept RPC calls" permission for all other users.
|
||||
|
||||
{% note %}
|
||||
Be aware that the Webmin API ignores any 2FA set up via the frontend, e.g. it is even with enabled 2FA possible to use the API with only username and password.
|
||||
{% endnote %}
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Sensors
|
||||
|
@ -32,17 +32,18 @@ The following appliances are confirmed to be working, but other models that use
|
||||
|
||||
Climate:
|
||||
|
||||
- SPIW309A2WF/SPIW312A2WF
|
||||
- SPIW409A2WF
|
||||
- Whirlpool SPIW309A2WF / SPIW312A2WF
|
||||
- Whirlpool SPIW409A2WF
|
||||
|
||||
Washer:
|
||||
|
||||
- WTW6120HW2
|
||||
- MHW8630HW0
|
||||
- Whirlpool WTW6120HW2
|
||||
- Whirlpool WTW8127LW1
|
||||
- Maytag MHW8630HW0
|
||||
|
||||
Dryer:
|
||||
|
||||
- Not confirmed
|
||||
- Whirlpool WGD8127LW3
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
|
@ -66,7 +66,7 @@ icon:
|
||||
required: false
|
||||
type: string
|
||||
passive:
|
||||
description: To only use the zone for automation and hide it from the frontend and not use the zone for device tracker name.
|
||||
description: To only use the zone for automation and hide it from the frontend and not use the zone for device tracker state.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
@ -1,17 +1,16 @@
|
||||
---
|
||||
title: "Blog index"
|
||||
layout: page
|
||||
feedback: false
|
||||
---
|
||||
|
||||
<div id="archive-list">
|
||||
{% for post in site.categories[page.category] %}
|
||||
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
|
||||
{% unless year == this_year %}
|
||||
{% assign year = this_year %}
|
||||
<h2>{{ year }}</h2>
|
||||
{% endunless %}
|
||||
<article>
|
||||
{% include blog/archive_post.html %}
|
||||
</article>
|
||||
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
|
||||
{% unless year == this_year %}
|
||||
{% assign year = this_year %}
|
||||
<h2>{{ year }}</h2>
|
||||
{% endunless %}
|
||||
{% include blog/archive_post.html %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
@ -1,45 +1,72 @@
|
||||
{% assign url_parts = page.url | split: '/' %}
|
||||
{% assign root = url_parts[1] %}
|
||||
{% assign doc = url_parts[2] %}
|
||||
|
||||
{% include site/head.html %}
|
||||
<body {% if page.body_id %} id="{{ page.body_id }}"{% elsif page.layout == "landingpage" %} id="landingpage"{% endif %}>
|
||||
<header class='site-header {% if page.hero_unit %}dark{% endif %}'>
|
||||
<body {% if page.body_id %} id="{{ page.body_id }}"{% elsif page.layout == "landingpage" %} id="landingpage"{% endif %} class="{% if root == 'docs' or root == 'dashboards' or root == 'voice_control' or root == 'installation' or root == 'getting-started' or root == 'common-tasks' %}documentation-page{% endif %}{% if root == 'integrations' %}integration-page{% endif %}{% if root == 'blog' %}blog-post{% endif %}">
|
||||
<header class='site-header {% if page.dark_header %}dark{% endif %}'>
|
||||
{% include site/header.html %}
|
||||
</header>
|
||||
|
||||
<div class="page-content">
|
||||
|
||||
{% if page.hero_unit %}
|
||||
{% include site/hero_unit.html %}
|
||||
{% endif %}
|
||||
{% if page.hero_unit %}
|
||||
{% include site/hero_unit.html %}
|
||||
{% endif %}
|
||||
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
{% if page.is_post and page.sidebar == false %}
|
||||
<div class="grid__item four-fifths lap-one-whole palm-one-whole">
|
||||
{% elsif page.is_homepage or page.layout == "landingpage" %}
|
||||
<div class="grid__item one-whole">
|
||||
{% else %}
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
{% endif %}
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
|
||||
{% if page.is_homepage or page.layout == "landingpage" %}
|
||||
{{ content }}
|
||||
{% if page.toc %}
|
||||
{%- unless page.no_toc -%}
|
||||
<aside id="toc-bar" class="grid__item desk-wide-one-sixth">
|
||||
<section class="aside-module grid__item one-whole">
|
||||
<div class='section'>
|
||||
<h1 class="title epsilon">{% icon "mdi:toc" %} On this page</h1>
|
||||
{{ content | toc_only }}
|
||||
</div>
|
||||
</section>
|
||||
</aside>
|
||||
{%- endunless -%}
|
||||
{% endif %}
|
||||
|
||||
{% if page.is_post and page.sidebar == false %}
|
||||
<div class="grid__item four-fifths desk-wide-three-quarters lap-one-whole palm-one-whole">
|
||||
{% elsif page.no_toc == true %}
|
||||
<div class="grid__item one-whole desk-wide-three-quarters">
|
||||
{% elsif page.is_homepage or page.layout == "landingpage" %}
|
||||
<div class="grid__item one-whole">
|
||||
{% elsif doc=="categories" %}
|
||||
<div class="grid__item two-thirds desk-wide-three-quarters lap-one-whole palm-one-whole">
|
||||
{% else %}
|
||||
{{ content | output_modder }}
|
||||
<div class="grid__item two-thirds desk-wide-seven-twelfths lap-one-whole palm-one-whole">
|
||||
{% endif %}
|
||||
|
||||
{% if page.is_homepage or page.layout == "landingpage" %}
|
||||
{{ content }}
|
||||
{% else %}
|
||||
{{ content | output_modder }}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
||||
{% unless page.sidebar == false or page.layout == "landingpage" %}
|
||||
{% if root == 'integrations' %}
|
||||
<aside id="integration-sidebar" class="grid__item one-third desk-wide-one-quarter lap-one-whole palm-one-whole">
|
||||
{% else %}
|
||||
<aside id="sidebar" class="grid__item one-third desk-wide-one-quarter lap-one-whole palm-one-whole">
|
||||
{% endif %}
|
||||
{% include site/sidebar.html %}
|
||||
</aside>
|
||||
{% endunless %}
|
||||
</div>
|
||||
|
||||
{% unless page.sidebar == false or page.layout == "landingpage" %}
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
{% include site/sidebar.html %}
|
||||
</aside>
|
||||
{% endunless %}
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
{% include site/footer.html %}
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
{% include site/footer.html %}
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
{% include javascripts/scripts.html %}
|
||||
</body>
|
||||
</html>
|
||||
|
@ -20,7 +20,11 @@ layout: default
|
||||
</div>
|
||||
{% endif %}
|
||||
<h1 class="title indent">
|
||||
{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}
|
||||
{% if page.title contains "Category:" %}
|
||||
{{ page.title | replace: "-", " " | replace: "Category: ", "" }}
|
||||
{% else %}
|
||||
{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}
|
||||
{% endif %}
|
||||
</h1>
|
||||
</header>
|
||||
{% if page.collection == "integrations" %}
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
layout: default
|
||||
is_post: true
|
||||
feedback: false
|
||||
---
|
||||
|
||||
<article class="post">
|
||||
|
@ -64,6 +64,9 @@ Enjoy the release!
|
||||
- [Other noteworthy changes](#other-noteworthy-changes)
|
||||
- [Link your template entity to an existing device](#link-your-template-entity-to-an-existing-device)
|
||||
- [Change the radius of your home zone](#change-the-radius-of-your-home-zone)
|
||||
- [Patch releases](#patch-releases)
|
||||
- [2024.7.1 - July 5](#202471---july-5)
|
||||
- [2024.7.2 - July 10](#202472---july-10)
|
||||
- [Need help? Join the community!](#need-help-join-the-community)
|
||||
- [Backward-incompatible changes](#backward-incompatible-changes)
|
||||
- [All changes](#all-changes)
|
||||
@ -480,6 +483,184 @@ configuration, this new feature will not be available to you. You can remove
|
||||
the YAML configuration and restart Home Assistant to enable UI control.
|
||||
{% endimportant %}
|
||||
|
||||
## Patch releases
|
||||
|
||||
We will also release patch releases for Home Assistant 2024.7 in July. These
|
||||
patch releases only contain bug fixes. Our goal is to release a patch release
|
||||
every Friday.
|
||||
|
||||
### 2024.7.1 - July 5
|
||||
|
||||
- Improve redaction for stream error messages ([@allenporter] - [#120867])
|
||||
- Add device class translations in Random ([@dougiteixeira] - [#120890])
|
||||
- Fix locking/unlocking transition state in Matter lock platform ([@marcelveldt] - [#121099])
|
||||
- Fix HmIP-ESI GAS sensor DeviceClass ([@ChristophCaina] - [#121106])
|
||||
- Starline: Fix "Error updating SLNet token" message in Log ([@Chupaka] - [#121122])
|
||||
- Bump inkbird-ble to 0.5.8 ([@bdraco] - [#121134])
|
||||
- Fix broken pathlib import in august integration ([@mweinelt] - [#121135])
|
||||
- Bump velbusaio to 2024.7.5 ([@Cereal2nd] - [#121156])
|
||||
- Fix `pulse counter frequency` sensors for Shelly Plus Uni ([@bieniu] - [#121178])
|
||||
- Bump youless library version 2.1.2 ([@gjong] - [#121181])
|
||||
- Bump python-kasa to 0.7.0.3 ([@sdb9696] - [#121183])
|
||||
- Fix Matter light discovery schema for DimmerSwitch ([@marcelveldt] - [#121185])
|
||||
- Listen for attribute changes of OnOff cluster in appliances ([@marcelveldt] - [#121198])
|
||||
- Bump anova-wifi to 0.15.0 ([@Lash-L] - [#121222])
|
||||
- Fix work area sensor in Husqvarna Automower ([@Thomas55555] - [#121228])
|
||||
- Revert Homematic IP Cloud unique ID changes ([@hahn-th] - [#121231])
|
||||
- Bump deebot-client to 8.1.1 ([@edenhaus] - [#121241])
|
||||
- Fix WebOS TV media player status when OFF after IDLE ([@thecode] - [#121251])
|
||||
- Bump aioaquacell to 0.1.8 ([@Jordi1990] - [#121253])
|
||||
- Bump aiowebostv to 0.4.2 ([@thecode] - [#121258])
|
||||
- Bump python-holidays to 0.52 ([@gjohansson-ST] - [#121283])
|
||||
- Fix tplink light effect behaviour when activating a scene ([@sdb9696] - [#121288])
|
||||
- Update frontend to 20240705.0 ([@bramkragten] - [#121295])
|
||||
|
||||
[#120579]: https://github.com/home-assistant/core/pull/120579
|
||||
[#120867]: https://github.com/home-assistant/core/pull/120867
|
||||
[#120890]: https://github.com/home-assistant/core/pull/120890
|
||||
[#121099]: https://github.com/home-assistant/core/pull/121099
|
||||
[#121106]: https://github.com/home-assistant/core/pull/121106
|
||||
[#121122]: https://github.com/home-assistant/core/pull/121122
|
||||
[#121134]: https://github.com/home-assistant/core/pull/121134
|
||||
[#121135]: https://github.com/home-assistant/core/pull/121135
|
||||
[#121156]: https://github.com/home-assistant/core/pull/121156
|
||||
[#121178]: https://github.com/home-assistant/core/pull/121178
|
||||
[#121181]: https://github.com/home-assistant/core/pull/121181
|
||||
[#121183]: https://github.com/home-assistant/core/pull/121183
|
||||
[#121185]: https://github.com/home-assistant/core/pull/121185
|
||||
[#121198]: https://github.com/home-assistant/core/pull/121198
|
||||
[#121222]: https://github.com/home-assistant/core/pull/121222
|
||||
[#121228]: https://github.com/home-assistant/core/pull/121228
|
||||
[#121231]: https://github.com/home-assistant/core/pull/121231
|
||||
[#121241]: https://github.com/home-assistant/core/pull/121241
|
||||
[#121251]: https://github.com/home-assistant/core/pull/121251
|
||||
[#121253]: https://github.com/home-assistant/core/pull/121253
|
||||
[#121258]: https://github.com/home-assistant/core/pull/121258
|
||||
[#121283]: https://github.com/home-assistant/core/pull/121283
|
||||
[#121288]: https://github.com/home-assistant/core/pull/121288
|
||||
[#121295]: https://github.com/home-assistant/core/pull/121295
|
||||
[@Cereal2nd]: https://github.com/Cereal2nd
|
||||
[@ChristophCaina]: https://github.com/ChristophCaina
|
||||
[@Chupaka]: https://github.com/Chupaka
|
||||
[@Jordi1990]: https://github.com/Jordi1990
|
||||
[@Lash-L]: https://github.com/Lash-L
|
||||
[@Thomas55555]: https://github.com/Thomas55555
|
||||
[@allenporter]: https://github.com/allenporter
|
||||
[@bdraco]: https://github.com/bdraco
|
||||
[@bieniu]: https://github.com/bieniu
|
||||
[@bramkragten]: https://github.com/bramkragten
|
||||
[@dougiteixeira]: https://github.com/dougiteixeira
|
||||
[@edenhaus]: https://github.com/edenhaus
|
||||
[@frenck]: https://github.com/frenck
|
||||
[@gjohansson-ST]: https://github.com/gjohansson-ST
|
||||
[@gjong]: https://github.com/gjong
|
||||
[@hahn-th]: https://github.com/hahn-th
|
||||
[@marcelveldt]: https://github.com/marcelveldt
|
||||
[@mweinelt]: https://github.com/mweinelt
|
||||
[@sdb9696]: https://github.com/sdb9696
|
||||
[@thecode]: https://github.com/thecode
|
||||
|
||||
### 2024.7.2 - July 10
|
||||
|
||||
- Remove legacy foreign key constraint from sqlite states table ([@bdraco] - [#120779])
|
||||
- Direct Users to App-Specific Passwords for iCloud integration to prevent MFA spam ([@rcmaehl] - [#120945])
|
||||
- LLM to handle int attributes ([@ahaverty] - [#121037])
|
||||
- Fix empty list in kodi media_player ([@TermeHansen] - [#121250])
|
||||
- Fix ombi configuration validation ([@temesinko] - [#121314])
|
||||
- Bump anova-wifi to 0.17.0 ([@Lash-L] - [#121337])
|
||||
- Fix initial Wall Connector values in Tessie ([@Bre77] - [#121353])
|
||||
- Bump psutil to 6.0.0 ([@gjohansson-ST] - [#121385])
|
||||
- Fix unnecessary logging of turn on/off feature flags in Climate ([@gjohansson-ST] - [#121387])
|
||||
- Fix timezone issue in smhi weather ([@gjohansson-ST] - [#121389])
|
||||
- Fix feature flag in climate ([@gjohansson-ST] - [#121398])
|
||||
- Allow current empty feeds to be configured in Feedreader ([@mib1185] - [#121421])
|
||||
- Fix MPD config flow ([@joostlek] - [#121431])
|
||||
- Sort mealie mealplans ([@joostlek] - [#121433])
|
||||
- Fix Mealie URL field ([@joostlek] - [#121434])
|
||||
- Bump pymodbus to 3.6.9 ([@janiversen] - [#121445])
|
||||
- Bump jaraco.abode to 5.2.1 ([@jaraco] - [#121446])
|
||||
- Bump yalexs to 6.4.2 ([@bdraco] - [#121467])
|
||||
- Bump xiaomi-ble to 0.30.1 ([@joostlek] - [#120743])
|
||||
- Bump xiaomi-ble to 0.30.2 ([@ov1d1u] - [#121471])
|
||||
- Include hass device ID in mobile app get_config webhook ([@balloob] - [#121496])
|
||||
- Fix person tracking in unifiprotect ([@bdraco] - [#121528])
|
||||
- Remove homematic state_class from GAS_POWER sensor ([@ChristophCaina] - [#121533])
|
||||
- Update vehicle to 2.2.2 ([@frenck] - [#121556])
|
||||
- Update tailscale to 0.6.1 ([@frenck] - [#121557])
|
||||
- Fix upb config flow connect ([@gwww] - [#121571])
|
||||
- Bump pyenphase to 1.20.6 ([@catsmanac] - [#121583])
|
||||
- Allow ambilight when we have connection (philips_js) ([@elupus] - [#121620])
|
||||
- Update frontend to 20240710.0 ([@piitaya] - [#121651])
|
||||
- Small fix in velbus cover for the assumed states ([@Cereal2nd] - [#121656])
|
||||
- Block icloud3 custom integration from breaking the recorder ([@frenck] - [#121658])
|
||||
- Handle errors in Fully Kiosk camera ([@tronikos] - [#121659])
|
||||
- Block places <=2.7.0 custom integration from breaking the recorder ([@frenck] - [#121662])
|
||||
- Fix state for Matter Locks (including optional door sensor) ([@marcelveldt] - [#121665])
|
||||
- Matter lock state follow-up ([@marcelveldt] - [#121669])
|
||||
- Block variable <=3.4.4 custom integration from breaking the recorder ([@frenck] - [#121670])
|
||||
|
||||
[#120579]: https://github.com/home-assistant/core/pull/120579
|
||||
[#120743]: https://github.com/home-assistant/core/pull/120743
|
||||
[#120779]: https://github.com/home-assistant/core/pull/120779
|
||||
[#120945]: https://github.com/home-assistant/core/pull/120945
|
||||
[#121037]: https://github.com/home-assistant/core/pull/121037
|
||||
[#121250]: https://github.com/home-assistant/core/pull/121250
|
||||
[#121289]: https://github.com/home-assistant/core/pull/121289
|
||||
[#121314]: https://github.com/home-assistant/core/pull/121314
|
||||
[#121337]: https://github.com/home-assistant/core/pull/121337
|
||||
[#121353]: https://github.com/home-assistant/core/pull/121353
|
||||
[#121385]: https://github.com/home-assistant/core/pull/121385
|
||||
[#121387]: https://github.com/home-assistant/core/pull/121387
|
||||
[#121389]: https://github.com/home-assistant/core/pull/121389
|
||||
[#121398]: https://github.com/home-assistant/core/pull/121398
|
||||
[#121421]: https://github.com/home-assistant/core/pull/121421
|
||||
[#121431]: https://github.com/home-assistant/core/pull/121431
|
||||
[#121433]: https://github.com/home-assistant/core/pull/121433
|
||||
[#121434]: https://github.com/home-assistant/core/pull/121434
|
||||
[#121445]: https://github.com/home-assistant/core/pull/121445
|
||||
[#121446]: https://github.com/home-assistant/core/pull/121446
|
||||
[#121467]: https://github.com/home-assistant/core/pull/121467
|
||||
[#121471]: https://github.com/home-assistant/core/pull/121471
|
||||
[#121496]: https://github.com/home-assistant/core/pull/121496
|
||||
[#121528]: https://github.com/home-assistant/core/pull/121528
|
||||
[#121533]: https://github.com/home-assistant/core/pull/121533
|
||||
[#121556]: https://github.com/home-assistant/core/pull/121556
|
||||
[#121557]: https://github.com/home-assistant/core/pull/121557
|
||||
[#121571]: https://github.com/home-assistant/core/pull/121571
|
||||
[#121583]: https://github.com/home-assistant/core/pull/121583
|
||||
[#121620]: https://github.com/home-assistant/core/pull/121620
|
||||
[#121651]: https://github.com/home-assistant/core/pull/121651
|
||||
[#121656]: https://github.com/home-assistant/core/pull/121656
|
||||
[#121658]: https://github.com/home-assistant/core/pull/121658
|
||||
[#121659]: https://github.com/home-assistant/core/pull/121659
|
||||
[#121662]: https://github.com/home-assistant/core/pull/121662
|
||||
[#121665]: https://github.com/home-assistant/core/pull/121665
|
||||
[#121669]: https://github.com/home-assistant/core/pull/121669
|
||||
[#121670]: https://github.com/home-assistant/core/pull/121670
|
||||
[@Bre77]: https://github.com/Bre77
|
||||
[@Cereal2nd]: https://github.com/Cereal2nd
|
||||
[@ChristophCaina]: https://github.com/ChristophCaina
|
||||
[@Lash-L]: https://github.com/Lash-L
|
||||
[@TermeHansen]: https://github.com/TermeHansen
|
||||
[@ahaverty]: https://github.com/ahaverty
|
||||
[@balloob]: https://github.com/balloob
|
||||
[@bdraco]: https://github.com/bdraco
|
||||
[@catsmanac]: https://github.com/catsmanac
|
||||
[@elupus]: https://github.com/elupus
|
||||
[@frenck]: https://github.com/frenck
|
||||
[@gjohansson-ST]: https://github.com/gjohansson-ST
|
||||
[@gwww]: https://github.com/gwww
|
||||
[@janiversen]: https://github.com/janiversen
|
||||
[@jaraco]: https://github.com/jaraco
|
||||
[@joostlek]: https://github.com/joostlek
|
||||
[@marcelveldt]: https://github.com/marcelveldt
|
||||
[@mib1185]: https://github.com/mib1185
|
||||
[@ov1d1u]: https://github.com/ov1d1u
|
||||
[@piitaya]: https://github.com/piitaya
|
||||
[@rcmaehl]: https://github.com/rcmaehl
|
||||
[@temesinko]: https://github.com/temesinko
|
||||
[@tronikos]: https://github.com/tronikos
|
||||
|
||||
## Need help? Join the community!
|
||||
|
||||
Home Assistant has a great community of users who are all more than willing
|
||||
|
@ -2,21 +2,25 @@
|
||||
layout: default
|
||||
regenerate: true
|
||||
blog_index: true
|
||||
feedback: false
|
||||
---
|
||||
{% assign index = true %}
|
||||
{% for post in paginator.posts %}
|
||||
<article class="listing">
|
||||
{% include blog/post/article.html %}
|
||||
</article>
|
||||
<hr>
|
||||
{% endfor %}
|
||||
|
||||
<div class="pagination">
|
||||
{% if paginator.next_page %}
|
||||
<a class="btn pull-left" href="{{paginator.next_page_path}}">← Older</a>
|
||||
{% endif %}
|
||||
{% assign index = true %}
|
||||
<h1 class="title indent">Blog</h1>
|
||||
|
||||
{% if paginator.previous_page %}
|
||||
<a class="btn pull-right" href="{{paginator.previous_page_path}}">Newer →</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% for post in paginator.posts %}
|
||||
<article class="listing">
|
||||
{% include blog/post/article.html %}
|
||||
</article>
|
||||
<hr>
|
||||
{% endfor %}
|
||||
|
||||
<div class="pagination">
|
||||
{% if paginator.next_page %}
|
||||
<a class="btn pull-left" href="{{paginator.next_page_path}}">← Older</a>
|
||||
{% endif %}
|
||||
|
||||
{% if paginator.previous_page %}
|
||||
<a class="btn pull-right" href="{{paginator.previous_page_path}}">Newer →</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
@ -1189,6 +1189,178 @@ For a summary in a more readable format:
|
||||
- Bump gcal_sync to 6.1.4 ([@allenporter] - [#120941])
|
||||
- Bump inkbird-ble to 0.5.7 ([@bdraco] - [#121039])
|
||||
|
||||
## Release 2024.7.1 - July 5
|
||||
|
||||
- Improve redaction for stream error messages ([@allenporter] - [#120867])
|
||||
- Add device class translations in Random ([@dougiteixeira] - [#120890])
|
||||
- Fix locking/unlocking transition state in Matter lock platform ([@marcelveldt] - [#121099])
|
||||
- Fix HmIP-ESI GAS sensor DeviceClass ([@ChristophCaina] - [#121106])
|
||||
- Starline: Fix "Error updating SLNet token" message in Log ([@Chupaka] - [#121122])
|
||||
- Bump inkbird-ble to 0.5.8 ([@bdraco] - [#121134])
|
||||
- Fix broken pathlib import in august integration ([@mweinelt] - [#121135])
|
||||
- Bump velbusaio to 2024.7.5 ([@Cereal2nd] - [#121156])
|
||||
- Fix `pulse counter frequency` sensors for Shelly Plus Uni ([@bieniu] - [#121178])
|
||||
- Bump youless library version 2.1.2 ([@gjong] - [#121181])
|
||||
- Bump python-kasa to 0.7.0.3 ([@sdb9696] - [#121183])
|
||||
- Fix Matter light discovery schema for DimmerSwitch ([@marcelveldt] - [#121185])
|
||||
- Listen for attribute changes of OnOff cluster in appliances ([@marcelveldt] - [#121198])
|
||||
- Bump anova-wifi to 0.15.0 ([@Lash-L] - [#121222])
|
||||
- Fix work area sensor in Husqvarna Automower ([@Thomas55555] - [#121228])
|
||||
- Revert Homematic IP Cloud unique ID changes ([@hahn-th] - [#121231])
|
||||
- Bump deebot-client to 8.1.1 ([@edenhaus] - [#121241])
|
||||
- Fix WebOS TV media player status when OFF after IDLE ([@thecode] - [#121251])
|
||||
- Bump aioaquacell to 0.1.8 ([@Jordi1990] - [#121253])
|
||||
- Bump aiowebostv to 0.4.2 ([@thecode] - [#121258])
|
||||
- Bump python-holidays to 0.52 ([@gjohansson-ST] - [#121283])
|
||||
- Fix tplink light effect behaviour when activating a scene ([@sdb9696] - [#121288])
|
||||
- Update frontend to 20240705.0 ([@bramkragten] - [#121295])
|
||||
|
||||
[#120579]: https://github.com/home-assistant/core/pull/120579
|
||||
[#120867]: https://github.com/home-assistant/core/pull/120867
|
||||
[#120890]: https://github.com/home-assistant/core/pull/120890
|
||||
[#121099]: https://github.com/home-assistant/core/pull/121099
|
||||
[#121106]: https://github.com/home-assistant/core/pull/121106
|
||||
[#121122]: https://github.com/home-assistant/core/pull/121122
|
||||
[#121134]: https://github.com/home-assistant/core/pull/121134
|
||||
[#121135]: https://github.com/home-assistant/core/pull/121135
|
||||
[#121156]: https://github.com/home-assistant/core/pull/121156
|
||||
[#121178]: https://github.com/home-assistant/core/pull/121178
|
||||
[#121181]: https://github.com/home-assistant/core/pull/121181
|
||||
[#121183]: https://github.com/home-assistant/core/pull/121183
|
||||
[#121185]: https://github.com/home-assistant/core/pull/121185
|
||||
[#121198]: https://github.com/home-assistant/core/pull/121198
|
||||
[#121222]: https://github.com/home-assistant/core/pull/121222
|
||||
[#121228]: https://github.com/home-assistant/core/pull/121228
|
||||
[#121231]: https://github.com/home-assistant/core/pull/121231
|
||||
[#121241]: https://github.com/home-assistant/core/pull/121241
|
||||
[#121251]: https://github.com/home-assistant/core/pull/121251
|
||||
[#121253]: https://github.com/home-assistant/core/pull/121253
|
||||
[#121258]: https://github.com/home-assistant/core/pull/121258
|
||||
[#121283]: https://github.com/home-assistant/core/pull/121283
|
||||
[#121288]: https://github.com/home-assistant/core/pull/121288
|
||||
[#121295]: https://github.com/home-assistant/core/pull/121295
|
||||
[@Cereal2nd]: https://github.com/Cereal2nd
|
||||
[@ChristophCaina]: https://github.com/ChristophCaina
|
||||
[@Chupaka]: https://github.com/Chupaka
|
||||
[@Jordi1990]: https://github.com/Jordi1990
|
||||
[@Lash-L]: https://github.com/Lash-L
|
||||
[@Thomas55555]: https://github.com/Thomas55555
|
||||
[@allenporter]: https://github.com/allenporter
|
||||
[@bdraco]: https://github.com/bdraco
|
||||
[@bieniu]: https://github.com/bieniu
|
||||
[@bramkragten]: https://github.com/bramkragten
|
||||
[@dougiteixeira]: https://github.com/dougiteixeira
|
||||
[@edenhaus]: https://github.com/edenhaus
|
||||
[@frenck]: https://github.com/frenck
|
||||
[@gjohansson-ST]: https://github.com/gjohansson-ST
|
||||
[@gjong]: https://github.com/gjong
|
||||
[@hahn-th]: https://github.com/hahn-th
|
||||
[@marcelveldt]: https://github.com/marcelveldt
|
||||
[@mweinelt]: https://github.com/mweinelt
|
||||
[@sdb9696]: https://github.com/sdb9696
|
||||
[@thecode]: https://github.com/thecode
|
||||
|
||||
## Release 2024.7.2 - July 10
|
||||
|
||||
- Remove legacy foreign key constraint from sqlite states table ([@bdraco] - [#120779])
|
||||
- Direct Users to App-Specific Passwords for iCloud integration to prevent MFA spam ([@rcmaehl] - [#120945])
|
||||
- LLM to handle int attributes ([@ahaverty] - [#121037])
|
||||
- Fix empty list in kodi media_player ([@TermeHansen] - [#121250])
|
||||
- Fix ombi configuration validation ([@temesinko] - [#121314])
|
||||
- Bump anova-wifi to 0.17.0 ([@Lash-L] - [#121337])
|
||||
- Fix initial Wall Connector values in Tessie ([@Bre77] - [#121353])
|
||||
- Bump psutil to 6.0.0 ([@gjohansson-ST] - [#121385])
|
||||
- Fix unnecessary logging of turn on/off feature flags in Climate ([@gjohansson-ST] - [#121387])
|
||||
- Fix timezone issue in smhi weather ([@gjohansson-ST] - [#121389])
|
||||
- Fix feature flag in climate ([@gjohansson-ST] - [#121398])
|
||||
- Allow current empty feeds to be configured in Feedreader ([@mib1185] - [#121421])
|
||||
- Fix MPD config flow ([@joostlek] - [#121431])
|
||||
- Sort mealie mealplans ([@joostlek] - [#121433])
|
||||
- Fix Mealie URL field ([@joostlek] - [#121434])
|
||||
- Bump pymodbus to 3.6.9 ([@janiversen] - [#121445])
|
||||
- Bump jaraco.abode to 5.2.1 ([@jaraco] - [#121446])
|
||||
- Bump yalexs to 6.4.2 ([@bdraco] - [#121467])
|
||||
- Bump xiaomi-ble to 0.30.1 ([@joostlek] - [#120743])
|
||||
- Bump xiaomi-ble to 0.30.2 ([@ov1d1u] - [#121471])
|
||||
- Include hass device ID in mobile app get_config webhook ([@balloob] - [#121496])
|
||||
- Fix person tracking in unifiprotect ([@bdraco] - [#121528])
|
||||
- Remove homematic state_class from GAS_POWER sensor ([@ChristophCaina] - [#121533])
|
||||
- Update vehicle to 2.2.2 ([@frenck] - [#121556])
|
||||
- Update tailscale to 0.6.1 ([@frenck] - [#121557])
|
||||
- Fix upb config flow connect ([@gwww] - [#121571])
|
||||
- Bump pyenphase to 1.20.6 ([@catsmanac] - [#121583])
|
||||
- Allow ambilight when we have connection (philips_js) ([@elupus] - [#121620])
|
||||
- Update frontend to 20240710.0 ([@piitaya] - [#121651])
|
||||
- Small fix in velbus cover for the assumed states ([@Cereal2nd] - [#121656])
|
||||
- Block icloud3 custom integration from breaking the recorder ([@frenck] - [#121658])
|
||||
- Handle errors in Fully Kiosk camera ([@tronikos] - [#121659])
|
||||
- Block places <=2.7.0 custom integration from breaking the recorder ([@frenck] - [#121662])
|
||||
- Fix state for Matter Locks (including optional door sensor) ([@marcelveldt] - [#121665])
|
||||
- Matter lock state follow-up ([@marcelveldt] - [#121669])
|
||||
- Block variable <=3.4.4 custom integration from breaking the recorder ([@frenck] - [#121670])
|
||||
|
||||
[#120579]: https://github.com/home-assistant/core/pull/120579
|
||||
[#120743]: https://github.com/home-assistant/core/pull/120743
|
||||
[#120779]: https://github.com/home-assistant/core/pull/120779
|
||||
[#120945]: https://github.com/home-assistant/core/pull/120945
|
||||
[#121037]: https://github.com/home-assistant/core/pull/121037
|
||||
[#121250]: https://github.com/home-assistant/core/pull/121250
|
||||
[#121289]: https://github.com/home-assistant/core/pull/121289
|
||||
[#121314]: https://github.com/home-assistant/core/pull/121314
|
||||
[#121337]: https://github.com/home-assistant/core/pull/121337
|
||||
[#121353]: https://github.com/home-assistant/core/pull/121353
|
||||
[#121385]: https://github.com/home-assistant/core/pull/121385
|
||||
[#121387]: https://github.com/home-assistant/core/pull/121387
|
||||
[#121389]: https://github.com/home-assistant/core/pull/121389
|
||||
[#121398]: https://github.com/home-assistant/core/pull/121398
|
||||
[#121421]: https://github.com/home-assistant/core/pull/121421
|
||||
[#121431]: https://github.com/home-assistant/core/pull/121431
|
||||
[#121433]: https://github.com/home-assistant/core/pull/121433
|
||||
[#121434]: https://github.com/home-assistant/core/pull/121434
|
||||
[#121445]: https://github.com/home-assistant/core/pull/121445
|
||||
[#121446]: https://github.com/home-assistant/core/pull/121446
|
||||
[#121467]: https://github.com/home-assistant/core/pull/121467
|
||||
[#121471]: https://github.com/home-assistant/core/pull/121471
|
||||
[#121496]: https://github.com/home-assistant/core/pull/121496
|
||||
[#121528]: https://github.com/home-assistant/core/pull/121528
|
||||
[#121533]: https://github.com/home-assistant/core/pull/121533
|
||||
[#121556]: https://github.com/home-assistant/core/pull/121556
|
||||
[#121557]: https://github.com/home-assistant/core/pull/121557
|
||||
[#121571]: https://github.com/home-assistant/core/pull/121571
|
||||
[#121583]: https://github.com/home-assistant/core/pull/121583
|
||||
[#121620]: https://github.com/home-assistant/core/pull/121620
|
||||
[#121651]: https://github.com/home-assistant/core/pull/121651
|
||||
[#121656]: https://github.com/home-assistant/core/pull/121656
|
||||
[#121658]: https://github.com/home-assistant/core/pull/121658
|
||||
[#121659]: https://github.com/home-assistant/core/pull/121659
|
||||
[#121662]: https://github.com/home-assistant/core/pull/121662
|
||||
[#121665]: https://github.com/home-assistant/core/pull/121665
|
||||
[#121669]: https://github.com/home-assistant/core/pull/121669
|
||||
[#121670]: https://github.com/home-assistant/core/pull/121670
|
||||
[@Bre77]: https://github.com/Bre77
|
||||
[@Cereal2nd]: https://github.com/Cereal2nd
|
||||
[@ChristophCaina]: https://github.com/ChristophCaina
|
||||
[@Lash-L]: https://github.com/Lash-L
|
||||
[@TermeHansen]: https://github.com/TermeHansen
|
||||
[@ahaverty]: https://github.com/ahaverty
|
||||
[@balloob]: https://github.com/balloob
|
||||
[@bdraco]: https://github.com/bdraco
|
||||
[@catsmanac]: https://github.com/catsmanac
|
||||
[@elupus]: https://github.com/elupus
|
||||
[@frenck]: https://github.com/frenck
|
||||
[@gjohansson-ST]: https://github.com/gjohansson-ST
|
||||
[@gwww]: https://github.com/gwww
|
||||
[@janiversen]: https://github.com/janiversen
|
||||
[@jaraco]: https://github.com/jaraco
|
||||
[@joostlek]: https://github.com/joostlek
|
||||
[@marcelveldt]: https://github.com/marcelveldt
|
||||
[@mib1185]: https://github.com/mib1185
|
||||
[@ov1d1u]: https://github.com/ov1d1u
|
||||
[@piitaya]: https://github.com/piitaya
|
||||
[@rcmaehl]: https://github.com/rcmaehl
|
||||
[@temesinko]: https://github.com/temesinko
|
||||
[@tronikos]: https://github.com/tronikos
|
||||
|
||||
[#103496]: https://github.com/home-assistant/core/pull/103496
|
||||
[#104345]: https://github.com/home-assistant/core/pull/104345
|
||||
[#105134]: https://github.com/home-assistant/core/pull/105134
|
||||
|
@ -82,6 +82,7 @@ You can manually define that the previous boot slot is used. This can be useful
|
||||
{% include common-tasks/lost_password.md %}
|
||||
{% include common-tasks/third-party-addons.md %}
|
||||
{% include common-tasks/configuration_check.md %}
|
||||
{% include common-tasks/enable_i2c.md %}
|
||||
|
||||
## Home Assistant versions
|
||||
|
||||
@ -92,3 +93,4 @@ To see which version your system is running, go to {% my info title="**Settings*
|
||||
{% include common-tasks/development_version.md %}
|
||||
|
||||
{% include common-tasks/data_disk.md %}
|
||||
|
||||
|
17
source/docs/index.html
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "Documentation"
|
||||
description: "Documentation for Home Assistant"
|
||||
feedback: false
|
||||
no_toc: true
|
||||
---
|
||||
|
||||
<p>The documentation covers beginner to advanced topics around the installation, setup, configuration, and usage of Home Assistant.</p>
|
||||
|
||||
<p>
|
||||
To see what Home Assistant can do, take a look at the <a href="https://demo.home-assistant.io">demo page</a>.
|
||||
</p>
|
||||
|
||||
<ul class="docs-index">
|
||||
{% include asides/docs_sitemap.html docs_index=true %}
|
||||
</ul>
|
||||
|
@ -1,50 +0,0 @@
|
||||
---
|
||||
title: "Documentation"
|
||||
description: "Documentation for Home Assistant"
|
||||
feedback: false
|
||||
---
|
||||
|
||||
The documentation covers beginner to advanced topics around the installation, setup, configuration, and usage of Home Assistant.
|
||||
|
||||
<div class="text-center hass-option-cards" markdown="0">
|
||||
<a class='option-card' href='/getting-started/'>
|
||||
<div class='img-container'>
|
||||
<img src='https://brands.home-assistant.io/homeassistant/icon.png' />
|
||||
</div>
|
||||
<div class='title'>Installation</div>
|
||||
</a>
|
||||
<a class='option-card' href='/docs/configuration/'>
|
||||
<div class='img-container'>
|
||||
<img src='/images/supported_brands/pencil.png' />
|
||||
</div>
|
||||
<div class='title'>Configuration</div>
|
||||
</a>
|
||||
<a class='option-card' href='/integrations/mqtt/'>
|
||||
<div class='img-container'>
|
||||
<img src='https://brands.home-assistant.io/mqtt/icon.png' />
|
||||
</div>
|
||||
<div class='title'>MQTT</div>
|
||||
</a>
|
||||
<a class='option-card' href='/dashboards/'>
|
||||
<div class='img-container'>
|
||||
<img src='/images/supported_brands/view-dashboard.png' />
|
||||
</div>
|
||||
<div class='title'>Dashboards</div>
|
||||
</a>
|
||||
<a class='option-card' href='https://companion.home-assistant.io/'>
|
||||
<div class='img-container'>
|
||||
<img src='https://brands.home-assistant.io/mobile_app/icon.png' />
|
||||
</div>
|
||||
<div class='title'>Android and iOS</div>
|
||||
</a>
|
||||
<a class='option-card' href='/voice_control/'>
|
||||
<div class='img-container'>
|
||||
<img src='/images/assist/assist-icon.svg' />
|
||||
</div>
|
||||
<div class='title'>Voice assistant</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
To see what Home Assistant can do, take a look at the [demo page](https://demo.home-assistant.io).
|
@ -2,9 +2,12 @@
|
||||
title: "Getting started"
|
||||
description: "Getting started with Home Assistant"
|
||||
body_id: getting_started
|
||||
feedback: false
|
||||
show_title: true
|
||||
---
|
||||
|
||||
Thanks for choosing Home Assistant for your smart home. Here are the basic steps to get you started on the journey to a more private, powerful, and sustainable home.
|
||||
|
||||
<!-- textlint-disable -->
|
||||
{% include getting-started/next_step.html step="Installation" link="/installation/" icon="simple-icons:homeassistant" %}
|
||||
<!-- textlint-enable -->
|
||||
|
@ -6,6 +6,7 @@ date: 2023-09-17
|
||||
og_image: /images/blog/2023-09-ha10/green-intro.png
|
||||
frontpage: true
|
||||
frontpage_image: /images/frontpage/green-frontpage.png
|
||||
dark_header: true
|
||||
---
|
||||
|
||||
<link rel="stylesheet" href="/green/styles.css" />
|
||||
|
@ -12,10 +12,24 @@ html {
|
||||
}
|
||||
}
|
||||
|
||||
#landingpage .site-header .grid-wrapper {
|
||||
max-width: 1380px !important;
|
||||
padding: 0 30px !important;
|
||||
}
|
||||
|
||||
#landingpage footer .grid-wrapper {
|
||||
max-width: 1380px;
|
||||
padding: 0 30px;
|
||||
}
|
||||
|
||||
#landingpage #buy-dialog {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#landingpage #buy-dialog .distributors {
|
||||
font-family: 'Instrument Sans', Figtree, sans-serif;
|
||||
}
|
||||
|
||||
#landingpage .page-content {
|
||||
height: auto;
|
||||
overflow-x: unset;
|
||||
@ -43,7 +57,6 @@ html {
|
||||
}
|
||||
|
||||
#landingpage .page-content {
|
||||
padding-top: unset;
|
||||
background-color: #f2f4f9;
|
||||
}
|
||||
|
||||
@ -633,7 +646,7 @@ button,
|
||||
padding-top: 35px;
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
top: 42px;
|
||||
top: 64px;
|
||||
}
|
||||
|
||||
.margin-bottom-small {
|
||||
@ -668,28 +681,32 @@ button,
|
||||
transition: backdrop-filter 0.5s;
|
||||
}
|
||||
|
||||
.wrappernav.scrolled {
|
||||
-webkit-backdrop-filter: saturate(180%) blur(20px);
|
||||
backdrop-filter: saturate(180%) blur(20px);
|
||||
}
|
||||
|
||||
.wrappernav.wrappernavlocal {
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
margin-bottom: -12em;
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
top: 64px;
|
||||
transition: top .1s, background-color .1s;
|
||||
}
|
||||
|
||||
.wrappernav.scrolled {
|
||||
-webkit-backdrop-filter: saturate(180%) blur(20px);
|
||||
backdrop-filter: saturate(180%) blur(20px);
|
||||
background-color: rgba(255,255,255,.5);
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.navgrid {
|
||||
width: 100%;
|
||||
max-width: 1100px;
|
||||
max-width: 1380px;
|
||||
min-height: 6em;
|
||||
grid-column-gap: 0px;
|
||||
grid-template-rows: auto;
|
||||
grid-template-columns: auto 2fr auto;
|
||||
align-items: center;
|
||||
padding-left: 24px;
|
||||
padding-right: 24px;
|
||||
padding-left: 30px;
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
@ -726,7 +743,7 @@ button,
|
||||
color: #c9c9c9;
|
||||
background-color: #181818;
|
||||
background-image: linear-gradient(360deg, #222, #2b2b2b);
|
||||
font-family: Pretendard Regular, sans-serif;
|
||||
font-family: Figtree, sans-serif;
|
||||
font-weight: 600;
|
||||
transition-property: all;
|
||||
box-shadow: inset 0 1px rgba(255, 255, 255, 0.1),
|
||||
@ -774,8 +791,9 @@ button,
|
||||
|
||||
.nav-link.nav-local {
|
||||
text-transform: none;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
font-family: 'Instrument Sans', Figtree, sans-serif;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.image-brand {
|
||||
@ -1008,6 +1026,7 @@ button,
|
||||
font-weight: 400;
|
||||
line-height: 1.4;
|
||||
text-decoration: none;
|
||||
letter-spacing: 0 !important;
|
||||
}
|
||||
|
||||
.heading-small {
|
||||
@ -1018,6 +1037,11 @@ button,
|
||||
font-weight: 400;
|
||||
line-height: 1.4;
|
||||
text-decoration: none;
|
||||
letter-spacing: 0 !important;
|
||||
}
|
||||
|
||||
h4.heading-small {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
.text-white {
|
||||
@ -1131,7 +1155,7 @@ button,
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 14px 30px;
|
||||
font-family: Pretendard, sans-serif;
|
||||
font-family: Figtree, sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
@ -1147,7 +1171,7 @@ button,
|
||||
.topnav-button.black {
|
||||
color: #fff;
|
||||
background-color: #222;
|
||||
font-family: Pretendard Regular, sans-serif;
|
||||
font-family: Figtree, sans-serif;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
@ -1343,6 +1367,7 @@ button,
|
||||
}
|
||||
|
||||
.paragraph-m {
|
||||
font-family: 'Instrument Sans', Figtree, sans-serif;
|
||||
color: #1d2126;
|
||||
letter-spacing: 0;
|
||||
margin-top: 0 !important;
|
||||
@ -1350,6 +1375,7 @@ button,
|
||||
font-size: 1.6em !important;
|
||||
line-height: normal !important;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0 !important;
|
||||
}
|
||||
|
||||
.paragraph-m.text-white {
|
||||
@ -1489,8 +1515,9 @@ button,
|
||||
}
|
||||
|
||||
.main-paragraph-w {
|
||||
font-family: 'Instrument Sans', Figtree, sans-serif;
|
||||
color: #1d2126;
|
||||
letter-spacing: 0;
|
||||
letter-spacing: 0 !important;
|
||||
margin-bottom: 0;
|
||||
font-size: 1.4em;
|
||||
font-weight: 400;
|
||||
@ -1844,8 +1871,9 @@ button,
|
||||
}
|
||||
|
||||
.paragraph-small {
|
||||
font-family: 'Instrument Sans', Figtree, sans-serif;
|
||||
color: rgba(29, 33, 38, 0.75);
|
||||
letter-spacing: 0;
|
||||
letter-spacing: 0 !important;
|
||||
margin-bottom: 0;
|
||||
font-size: 1.1em !important;
|
||||
font-weight: 400;
|
||||
@ -1926,7 +1954,7 @@ button,
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
padding-left: 29px;
|
||||
font-family: Pretendard Bold, sans-serif;
|
||||
font-family: Figtree, sans-serif;
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
}
|
||||
@ -2312,7 +2340,7 @@ button,
|
||||
.topnav-button {
|
||||
width: auto;
|
||||
padding: 18px 40px;
|
||||
font-family: Pretendard, sans-serif;
|
||||
font-family: Figtree, sans-serif;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
@ -2824,6 +2852,7 @@ button,
|
||||
.heading-small {
|
||||
font-size: 14px;
|
||||
line-height: 1.3;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.stats-number.large {
|
||||
@ -3641,27 +3670,6 @@ button,
|
||||
}
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Pretendard Bold";
|
||||
src: url("/green/fonts/Pretendard-Bold.woff2") format("woff2");
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Pretendard Regular";
|
||||
src: url("/green/fonts/Pretendard-Regular.woff2") format("woff2");
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Pretendard";
|
||||
src: url("/green/fonts/Pretendard-SemiBold.woff2") format("woff2");
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Figtree";
|
||||
font-style: normal;
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
title: "Reporting issues"
|
||||
description: "Reporting issues about Home Assistant"
|
||||
sidebar: false
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration.yaml file
|
||||
|
Before Width: | Height: | Size: 309 KiB After Width: | Height: | Size: 264 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 14 KiB |
BIN
source/images/docs/automation-editor/add_action.png
Normal file
After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 220 KiB |
BIN
source/images/merchandise/shirt-frontpage.jpg
Normal file
After Width: | Height: | Size: 194 KiB |
@ -2,6 +2,7 @@
|
||||
show_title: false
|
||||
sidebar: false
|
||||
hero_unit: true
|
||||
dark_header: true
|
||||
is_homepage: true
|
||||
regenerate: true
|
||||
feedback: false
|
||||
@ -198,7 +199,7 @@ feedback: false
|
||||
<a
|
||||
class="material-card picture-promo"
|
||||
href="https://home-assistant-store.creator-spring.com/"
|
||||
style="background-image: url(/images/merchandise/shirt-frontpage.png)"
|
||||
style="background-image: url(/images/merchandise/shirt-frontpage.jpg)"
|
||||
>
|
||||
<div class="caption">
|
||||
<div>
|
||||
@ -339,4 +340,4 @@ feedback: false
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: "Alternative"
|
||||
description: "Install Home Assistant"
|
||||
description: "Alternative ways to install Home Assistant"
|
||||
installation_type: alternative
|
||||
---
|
||||
{% comment %}
|
||||
|
@ -102,7 +102,7 @@ toc: true
|
||||
</div>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<a href="https://amzn.to/2S0Gcl1" class="button accent"
|
||||
<a href="https://amzn.to/3UH6TcD" class="button accent"
|
||||
>Get Raspberry Pi {% include assets/chevron_right.html %}</a
|
||||
>
|
||||
<a href="/installation/raspberrypi" class="button"
|
||||
@ -308,31 +308,6 @@ toc: true
|
||||
<td>✅</td>
|
||||
<td>✅</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/docs/blueprint" target="_blank">Blueprints</a></td>
|
||||
<td>✅</td>
|
||||
<td>✅</td>
|
||||
<td>✅</td>
|
||||
<td>✅</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Uses container</td>
|
||||
<td>✅</td>
|
||||
<td>✅</td>
|
||||
<td>❌</td>
|
||||
<td>✅</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href="/docs/glossary/#home-assistant-supervisor" target="_blank"
|
||||
>Supervisor</a
|
||||
>
|
||||
</td>
|
||||
<td>✅</td>
|
||||
<td>❌</td>
|
||||
<td>❌</td>
|
||||
<td>✅</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/addons" target="_blank">Add-ons</a></td>
|
||||
<td>✅</td>
|
||||
@ -340,30 +315,32 @@ toc: true
|
||||
<td>❌</td>
|
||||
<td>✅</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/docs/blueprint" target="_blank">Blueprints</a></td>
|
||||
<td>✅</td>
|
||||
<td>✅</td>
|
||||
<td>✅</td>
|
||||
<td>✅</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
One-click updates
|
||||
</td>
|
||||
<td>✅</td>
|
||||
<td>❌</td>
|
||||
<td>❌</td>
|
||||
<td>☑️<sup>2</sup></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="/common-tasks/os/#backups" target="_blank">Backups</a></td>
|
||||
<td>✅</td>
|
||||
<td>✅<sup>2</sup></td>
|
||||
<td>✅<sup>2</sup></td>
|
||||
<td>☑️<sup>3</sup></td>
|
||||
<td>☑️<sup>3</sup></td>
|
||||
<td>✅</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Managed Restore</td>
|
||||
<td>✅</td>
|
||||
<td>❌<sup>3</sup></td>
|
||||
<td>❌<sup>3</sup></td>
|
||||
<td>✅</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Managed OS</td>
|
||||
<td>✅</td>
|
||||
<td>❌</td>
|
||||
<td>❌</td>
|
||||
<td>❌</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<sub
|
||||
>1: Names are abbreviated. The full names of the installation methods are:
|
||||
<ul>
|
||||
@ -375,11 +352,12 @@ toc: true
|
||||
>
|
||||
<p>
|
||||
<sub
|
||||
>2: Backups for Home Assistant Core and Home Assistant Container is provided
|
||||
by the
|
||||
<a href="/integrations/backup" target="_blank"
|
||||
><code>backup</code> integration</a
|
||||
>.</sub
|
||||
>2: Home Assistant Supervised requires users to maintain their own operating system.</sub
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
<sub
|
||||
>3: Home Assistant Core and Home Assistant Container can create backups via the user interface but they need to be manually restored.</sub
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
@ -389,6 +367,49 @@ toc: true
|
||||
>
|
||||
</p>
|
||||
<p></p>
|
||||
<div class="installations-card">
|
||||
<div class="material-card text">
|
||||
<div class="content-container">
|
||||
<div class="image">
|
||||
<img
|
||||
src="/images/installation/rpi.jpg"
|
||||
/>
|
||||
</div>
|
||||
<div class="content">
|
||||
<h3>Install Home Assistant variants on Raspberry Pi</h3>
|
||||
<p>A low-cost DIY solution to get started with Home Assistant</p>
|
||||
<div class="columns">
|
||||
<div>
|
||||
<b>SKILLS REQUIRED</b>
|
||||
<ul>
|
||||
<li>Assembling a Raspberry Pi setup</li>
|
||||
<li>Flashing a Raspberry Pi</li>
|
||||
<li>Advanced knowledge of Linux</li>
|
||||
<li>Using Linux command line</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<b>TOOLS REQUIRED</b>
|
||||
<ul>
|
||||
<li>Raspberry Pi 3, 4 or 5 with power supply</li>
|
||||
<li>MicroSD card</li>
|
||||
<li>Ethernet connection</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<a href="https://amzn.to/3UH6TcD" class="button accent"
|
||||
>Get Raspberry Pi {% include assets/chevron_right.html %}</a
|
||||
>
|
||||
<a href="/installation/raspberrypi-other" class="button"
|
||||
>View tutorial {% include assets/chevron_right.html %}</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="installations-card">
|
||||
<div class="material-card text">
|
||||
<div class="content-container">
|
||||
|
18
source/installation/raspberrypi-other.markdown
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
title: "Advanced Raspberry Pi installations"
|
||||
description: "Advanced instructions to install Home Assistant variants on a Raspberry Pi"
|
||||
installation_type: raspberrypi-other
|
||||
---
|
||||
|
||||
{% comment %}
|
||||
Included section for this page is located under source/_includes/installation
|
||||
{% endcomment %}
|
||||
|
||||
{% assign board = "Raspberry Pi" %}
|
||||
{% assign installation_media = "SD card" %}
|
||||
|
||||
While we recommend Home Assistant OS, there are also alternative ways to install Home Assistant. Before you continue, be aware of the limitations and differences compared to Home Assistant OS. You can find more information on the [installation page](/installation/#advanced-installation-methods). Most notably,
|
||||
<a href="/addons">add-ons</a> are only available with the Home Assistant Operating System.
|
||||
|
||||
{% include installation/container.md %}
|
||||
{% include installation/core.md %}
|
@ -10,34 +10,28 @@ Included section for this page is located under source/_includes/installation
|
||||
{% assign board = "Raspberry Pi" %}
|
||||
{% assign installation_media = "SD card" %}
|
||||
|
||||
{% note %}
|
||||
Remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#power-supply) with your Raspberry 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.
|
||||
{% endnote %}
|
||||
|
||||
Before installing Home Assistant, you might want to <a href="/installation#compare-installation-methods">compare installation methods</a>. Most notably,
|
||||
<a href="/addons">add-ons</a> are only available with the Home Assistant Operating System.
|
||||
|
||||
## Suggested Hardware
|
||||
|
||||
We will need a few things to get started with installing Home Assistant. Links below lead to Amazon US. If you’re not in the US, you should be able to find these items in web stores in your country.
|
||||
We will need a few things to get started with installing Home Assistant.
|
||||
|
||||
- [Raspberry Pi 5](https://amzn.to/3UH6TcD)
|
||||
- [Raspberry Pi 4](https://amzn.to/2S0Gcl1) (Raspberry Pi 3 Model B is ok too, but the Model A does not have enough RAM). Raspberry Pi are currently hard to come by, use [RPilocator](https://rpilocator.com/?cat=PI4) to find official distributors with stock.
|
||||
- [Power Supply for Raspberry Pi 4](https://amzn.to/2ReZ2Vq) or [Power Supply for Raspberry Pi 3](https://amzn.to/2R8yG7h)
|
||||
- [Raspberry Pi 5](https://amzn.to/3UH6TcD) or [Raspberry Pi 4](https://amzn.to/2S0Gcl1) with [power supply](https://amzn.to/2ReZ2Vq) (Raspberry Pi 3 Model B is ok to get started, but the Model A does not have enough RAM).
|
||||
- [Micro SD Card](https://amzn.to/2X0Z2di). Ideally get one that is [Application Class 2](https://www.sdcard.org/developers/overview/application/index.html) as they handle small I/O much more consistently than cards not optimized to host applications. A 32 GB or bigger card is recommended.
|
||||
- SD Card reader. This is already part of most laptops, but you can purchase a [standalone USB adapter](https://amzn.to/2WWxntY) if you don't have one. The brand doesn't matter, just pick the cheapest.
|
||||
- [Ethernet cable](https://amzn.com/dp/B00N2VISLW). Required for installation. After installation, Home Assistant can work with Wi-Fi, but an Ethernet connection is more reliable and highly recommended.
|
||||
|
||||
{% note %}
|
||||
Remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#power-supply) with your Raspberry 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.
|
||||
{% endnote %}
|
||||
|
||||
## Install Home Assistant Operating System
|
||||
|
||||
This guide shows how to install the Home Assistant Operating system onto your Raspberry Pi using Raspberry Pi Imager.
|
||||
|
||||
If Raspberry Pi Imager is not supported by your platform, you can use [Balena Etcher](#writing-the-image-with-balena-etcher) instead.
|
||||
If Raspberry Pi Imager is not supported by your platform, you can use Balena Etcher instead.
|
||||
|
||||
### Write the image to your SD card
|
||||
|
||||
1. Download and install the Raspberry Pi Imager on your computer as described under [https://www.raspberrypi.com/software/](https://www.raspberrypi.com/software/).
|
||||

|
||||
2. Open the Raspberry Pi Imager and select your Raspberry Pi device.
|
||||

|
||||
3. Choose the operating system:
|
||||
@ -66,7 +60,7 @@ If Raspberry Pi Imager is not supported by your platform, you can use [Balena Et
|
||||
Within a few minutes after connecting the Raspberry Pi, you will be able to reach your new Home Assistant.
|
||||
|
||||
- In the browser of your desktop system, enter <a href="http://homeassistant.local:8123" target="_blank">homeassistant.local:8123</a>.
|
||||
|
||||
|
||||
{% note %}
|
||||
If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at <a href="http://homeassistant:8123" target="_blank">homeassistant:8123</a> or `http://X.X.X.X:8123` (replace X.X.X.X with your Raspberry Pi’s IP address).
|
||||
{% endnote %}
|
||||
@ -86,52 +80,7 @@ With the Home Assistant Operating System installed and accessible, you can now c
|
||||
{% include getting-started/next_step.html step="Onboarding" link="/getting-started/onboarding/" %}
|
||||
|
||||
|
||||
{% include installation/container.md %}
|
||||
{% include installation/core.md %}
|
||||
|
||||
## Writing the image with Balena Etcher
|
||||
|
||||
Use this procedure if Raspberry Pi Imager is not supported by your platform.
|
||||
|
||||
1. Insert the SD card into the computer. Note: the contents of the card will be overwritten.
|
||||
2. Download and start <a href="https://www.balena.io/etcher" target="_blank">Balena Etcher</a>. You may need to run it with administrator privileges on Windows.
|
||||
|
||||
3. Download the image to your computer.
|
||||
- Copy the correct URL for the Raspberry Pi 3, 4 or 5 (Note: there are 3 different links below!):
|
||||
|
||||
{% tabbed_block %}
|
||||
{% for variant in site.installation.types[page.installation_type].variants %}
|
||||
|
||||
- title: {{ variant.name }}
|
||||
content: |
|
||||
|
||||
```text
|
||||
https://github.com/home-assistant/operating-system/releases/download/{{site.data.version_data.hassos[variant.key]}}/haos_{{ variant.key }}-{{site.data.version_data.hassos[variant.key]}}.img.xz
|
||||
```
|
||||
|
||||
{% endfor %}
|
||||
{% endtabbed_block %}
|
||||
|
||||
_Select and copy the URL or use the "copy" button that appear when you hover it._
|
||||
|
||||
4. Paste the URL into your browser to start the download.
|
||||
5. Select **Flash from file** and select the image you just downloaded.
|
||||
- **Flash from URL** does not work on some systems.
|
||||
|
||||

|
||||
6. **Select target**.
|
||||

|
||||
7. Select the SD card you want to use for your installation.
|
||||

|
||||
8. Select **Flash!** to start writing the image.
|
||||

|
||||
9. Once Balena Etcher has finished writing the image, you will see a confirmation.
|
||||

|
||||
|
||||
|
||||
<div style="margin-top:50px">
|
||||
<p>
|
||||
<i>We get commissions for purchases made through links in this post.</i></p>
|
||||
</div>
|
||||
|
||||
{% include common-tasks/enable_i2c.md %}
|
||||
|
@ -1,49 +1,76 @@
|
||||
---
|
||||
title: "Clear up storage"
|
||||
description: "More information on how to clear up storage in Home Assistant."
|
||||
related:
|
||||
- docs: /integrations/recorder/#service-purge
|
||||
title: purge the contents of the database
|
||||
- docs: /common-tasks/os/#network-storage
|
||||
title: Add network storage
|
||||
- docs: /common-tasks/os/#using-external-data-disk
|
||||
title: Using an external data disk
|
||||
- URL: https://yellow.home-assistant.io/guides/add-ssd-existing-installation/
|
||||
title: Adding an SSD to Home Assistant Yellow
|
||||
---
|
||||
|
||||
Reaching your storage limit, this page will help you when that happens.
|
||||
|
||||
There are several things you can do to free up some space:
|
||||
|
||||
- [Clean the database](#clean-the-database)
|
||||
- [Delete old backups](#delete-old-backups)
|
||||
- [Uninstall unused add-ons](#uninstall-unused-add-ons)
|
||||
- [Last resort](#last-resort)
|
||||
- [Clean the database](#cleaning-the-database)
|
||||
- [Reduce space used for backups](#reducing-space-used-for-backups)
|
||||
- [Uninstall unused add-ons](#uninstalling-unused-add-ons)
|
||||
- [Expand storage](#expanding-storage)
|
||||
|
||||
## Clean the database
|
||||
## Cleaning the database
|
||||
|
||||
The Home Assistant database can get huge!
|
||||
|
||||
Luckily there is a tool you can use to [purge the contents of the database](/integrations/recorder/#service-purge)
|
||||
Luckily, there is a tool you can use to [purge the contents of the database](/integrations/recorder/#service-purge)
|
||||
|
||||
You can [filter](/integrations/recorder/#configure-filter) what you send to
|
||||
the database, and even change how long it stores the data
|
||||
[with the `purge_keep_days` setting](/integrations/recorder/#purge_keep_days)
|
||||
|
||||
## Delete old backups
|
||||
## Reducing space used for backups
|
||||
|
||||
Open the Home Assistant UI and go to {% my backup title="Settings > System > Backups" %}, here you will see all your backups,
|
||||
these can be downloaded and placed somewhere safe. When you have done that, you can delete
|
||||
them in the UI and it will free up some space for you.
|
||||
### Deleting obsolete backups
|
||||
|
||||
## Uninstall unused add-ons
|
||||
Previous backups are not included when you create a new one. But they do take up space. To delete old backups, follow these steps:
|
||||
|
||||
1. Go to {% my backup title="**Settings** > **System** > **Backups**" %}.
|
||||
2. From the list of backups, select all the ones you want to delete, then select **Delete selected backups**.
|
||||
- This clears up space in Home Assistant.
|
||||
|
||||
### Storing backups outside of Home Assistant
|
||||
|
||||
Storing backups outside of Home Assistant makes sure they don't use space on Home Assistant to begin with. It also makes sure you can [restore Home Assistant from backup](/common-tasks/os/#restoring-a-backup) in case you have an issue with your current installation.
|
||||
|
||||
1. Go to {% my backup title="**Settings** > **System** > **Backups**" %}, and from the list of backups, select the backup you want to keep.
|
||||
2. In the dialog, select the checkbox for each component, in the three-dots menu, select **Download backup**.
|
||||
3. Store the backup somewhere safe.
|
||||
- For example, [add network storage](/common-tasks/os/#network-storage), and then [change your default backup location](/common-tasks/os/#change-default-backup-location).
|
||||
|
||||
## Uninstalling unused add-ons
|
||||
|
||||
Add-ons can take a lot of space, not just the add-on itself but also their data.
|
||||
|
||||
Open the Home Assistant UI and go to {% my supervisor title="Settings > Add-ons" %} in the sidebar. Here you will see
|
||||
all your installed add-ons, maybe you have some that you no longer use, if
|
||||
you do those can be uninstalled to free up some space.
|
||||
1. Go to {% my supervisor title="**Settings** > **Add-ons**" %}.
|
||||
2. Look at your installed add-ons and identify the ones you no longer use.
|
||||
3. To remove the add-on, select the add-on and select **Uninstall**.
|
||||
|
||||
## Last resort
|
||||
## Expanding storage
|
||||
|
||||
If all else fails, you need to expand your storage.
|
||||
If the above steps to free up space did not help, you need to expand your storage.
|
||||
|
||||
### Expanding storage: Home Assistant Operating System
|
||||
|
||||
When you are running {% term "Home Assistant Operating System" %}, you can use the following options to expand your storage:
|
||||
|
||||
- Replace your current storage medium, for example, the SD card, with a bigger one. Use a backup to [restore Home Assistant from backup](/common-tasks/os/#restoring-a-backup) on the new SD card.
|
||||
- [Use an external data disk](/common-tasks/os/#using-external-data-disk)
|
||||
|
||||
### Expanding storage on VM
|
||||
|
||||
If you are running Home Assistant as a VM, look at the
|
||||
documentation for your hypervisor on how to expand disks for virtual machines.
|
||||
Home Assistant will auto-expand to use the newly added space.
|
||||
|
||||
If you are not running a VM, you need to replace your storage medium
|
||||
(typically, this will be an SD card). You can use [backups](/common-tasks/os#home-assistant-os-backups) to quickly restore your Home Assistant
|
||||
installation on a new storage medium.
|
||||
|
@ -18,7 +18,7 @@ related:
|
||||
title: ESPHome projects page
|
||||
---
|
||||
|
||||
This tutorial will guide you to turn an ESP32-S3-BOX, ESP32-S3-BOX-3, or an ESP32-S3-BOX-Lite into a Home Assistant voice assistant. Note, the term ESP32-S3-BOX may be used to refer to any of the 3 product variants.
|
||||
This tutorial will guide you to turn an ESP32-S3-BOX, ESP32-S3-BOX-3(B), or an ESP32-S3-BOX-Lite into a Home Assistant voice assistant. Note, the term ESP32-S3-BOX may be used to refer to any of the 3 product variants.
|
||||
|
||||
<lite-youtube videoid="erf7HqTwCGs" videotitle="Okay Nabu! Open-source voice assistant running on an Espressif ESP32-S3-Box
|
||||
"></lite-youtube>
|
||||
@ -29,10 +29,11 @@ This tutorial will guide you to turn an ESP32-S3-BOX, ESP32-S3-BOX-3, or an ESP3
|
||||
- [Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/) or a manually configured [Assist Pipeline](/voice_control/voice_remote_local_assistant)
|
||||
- The password to your 2.4 GHz Wi-Fi network
|
||||
- Chrome or Edge browser on a desktop (not Android/iOS)
|
||||
- One of the three Espressif ESP32-S3-BOX variants:
|
||||
- One of the Espressif ESP32-S3-BOX variants:
|
||||
- ESP32-S3-BOX-3B
|
||||
- ESP32-S3-BOX-3, ESP32-S3-BOX, or ESP32-S3-BOX-Lite (not currently on the market)
|
||||
- USB-C cable to connect the ESP32-S3-BOX
|
||||
- This procedure assumes that this is the first time you are installing ESPHome firmware on the device. If you have previously completed this tutorial and now want to install the latest software version, follow the steps on [updating the software on the S3-BOX](#updating-the-software-on-the-s3-box).
|
||||
|
||||
## Installing the software onto the ESP32-S3-BOX
|
||||
|
||||
@ -206,3 +207,18 @@ Before you can use this device with Home Assistant, you need to install a bit of
|
||||
- Disable **LCD Backlight**.
|
||||
|
||||

|
||||
|
||||
## Updating the software on the S3-BOX
|
||||
|
||||
To update the software on your S3-BOX, follow the steps below that reflect your setup.
|
||||
|
||||
- **Option 1**: You have Home Assistant 2024.7 or later, and have not manually altered your ESPHome configuration for the S3-BOX:
|
||||
- Once an update is available, you will receive an update notification, just like any other update.
|
||||
- To install the precompiled new firmware directly on your box, make sure the S3-BOX is connected to your network, and under **ESP32 S3 BOX...Firmware**, select **Install**.
|
||||
- **Option 2**: You have Home Assistant 2024.6 or older, and have not manually altered your ESPHome configuration for the S3-BOX:
|
||||
- Follow steps 1-3 of the procedure on [installing the software onto the S3-BOX](#installing-the-software-onto-the-esp32-s3-box).
|
||||
- This installs the latest, precompiled firmware for your S3-BOX.
|
||||
- **Option 3**: You have manually changed the configuration file for your S3-BOX:
|
||||
- You need to compile your own firmware. To do so, either:
|
||||
- Use the ESPHome dashboard add-on within Home Assistant. While the easiest option, it tends to be the slowest and may fail, particularly on older systems or on systems with limited memory/CPU resources.
|
||||
- Follow the steps in the [ESPHome documentation](https://esphome.io/guides/getting_started_command_line) and use a desktop-class system to compile and install the firmware. Initial setup is more complex, but the process is significantly faster and more reliable.
|
||||
|