Merge branch 'current' into next

This commit is contained in:
Franck Nijhof 2024-07-16 18:03:38 +02:00
commit 83a6006ff3
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
100 changed files with 1801 additions and 809 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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;
}

View File

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

View File

@ -76,6 +76,7 @@
#HAdemo {
width: 100%;
max-width: 400px;
height: 800px;
border-radius: 48px;
border: 12px double white;

View File

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

View File

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

View File

@ -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**.
![Create automation dialogue box](/images/docs/automation-editor/create-automation.png)
![Create automation dialogue box](/images/docs/automation-editor/create-automation.png)
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**.
![Add trigger](/images/docs/automation-editor/add-trigger-to-automation.png)
![Add trigger](/images/docs/automation-editor/add-trigger-to-automation.png)
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".
![Automation trigger](/images/docs/automation-editor/new-trigger.png)
![Automation trigger](/images/docs/automation-editor/new-trigger.png)
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**.
![Add trigger](/images/docs/automation-editor/new-action.png)
![Add action](/images/docs/automation-editor/add_action.png)
The action for this automation creates a [persistent notification](/integrations/persistent_notification/).
6. Select **Call service**.
![Automation action](/images/docs/automation-editor/send-notification.png)
![Add trigger](/images/docs/automation-editor/new-action.png)
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
```
![Automation action](/images/docs/automation-editor/send-notification.png)
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.
![New automation editor](/images/docs/automation-editor/new-automation.png)
```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.
![New automation editor](/images/docs/automation-editor/new-automation.png)
- **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

View File

@ -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**.
![Screencast showing how to take control of a blueprint](/images/blueprints/blueprint_take_control.webp)
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,

View File

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

View File

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

View File

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

View File

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

View File

@ -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 -%}
&nbsp;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">

View File

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

View File

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

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

View File

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

View File

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

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

View File

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

View File

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

View File

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

View File

@ -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 %}

View File

@ -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 %}

View File

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

View File

@ -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 %}

View File

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

View File

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

View File

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

View File

@ -0,0 +1,3 @@
<div class="grid">
{% include site/vertical_nav.html side="left" %}
</div>

View File

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

View 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 %}

View File

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

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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 %}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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 %}

View File

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

View File

@ -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 %}

View File

@ -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/)

View File

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

View File

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

View File

@ -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 %}

View File

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

View File

@ -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 %}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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 %}

View File

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

View File

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

View File

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

View File

@ -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" %}

View File

@ -1,6 +1,7 @@
---
layout: default
is_post: true
feedback: false
---
<article class="post">

View File

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

View File

@ -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}}">&larr; 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 &rarr;</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}}">&larr; Older</a>
{% endif %}
{% if paginator.previous_page %}
<a class="btn pull-right" href="{{paginator.previous_page_path}}">Newer &rarr;</a>
{% endif %}
</div>

View File

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

View File

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

View File

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

View File

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

View File

@ -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" />

View File

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

View File

@ -1,7 +1,6 @@
---
title: "Reporting issues"
description: "Reporting issues about Home Assistant"
sidebar: false
related:
- docs: /docs/configuration/
title: Configuration.yaml file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 KiB

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

View File

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

View File

@ -1,6 +1,6 @@
---
title: "Alternative"
description: "Install Home Assistant"
description: "Alternative ways to install Home Assistant"
installation_type: alternative
---
{% comment %}

View File

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

View 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 %}

View File

@ -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 youre 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&nbsp;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/).
![Install Raspberry Pi Imager](/images/installation/rpi_imager.png)
2. Open the Raspberry Pi Imager and select your Raspberry Pi device.
![Open Raspberry Pi Imager](/images/installation/rpi_imager_start.png)
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 Pis 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.
![Screenshot of the Etcher software showing flash from URL selected.](/images/installation/etcher1_file.png)
6. **Select target**.
![Screenshot of the Etcher software showing the select target button highlighted.](/images/installation/etcher3.png)
7. Select the SD card you want to use for your installation.
![Screenshot of the Etcher software showing the targets available.](/images/installation/etcher4.png)
8. Select **Flash!** to start writing the image.
![Screenshot of the Etcher software showing the Flash button highlighted.](/images/installation/etcher5.png)
9. Once Balena Etcher has finished writing the image, you will see a confirmation.
![Screenshot of the Etcher software showing that the installation has completed.](/images/installation/etcher6.png)
<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 %}

View File

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

View File

@ -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&nbsp;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**.
![Toggle to enable/disable wake word](/images/assist/s3-box-disable-screen.png)
## 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.