Merge branch 'current' into rc

This commit is contained in:
Franck Nijhof 2025-06-11 15:32:17 +00:00
commit a33116bb44
No known key found for this signature in database
GPG Key ID: AB33ADACE7101952
47 changed files with 1885 additions and 560 deletions

View File

@ -14,6 +14,16 @@ jobs:
with:
node-version: 20
cache: "npm"
- name: Check for .md files and suggest renaming
run: |
echo "Checking for .md files in source/_integrations..."
MD_FILES=$(find source/_integrations -type f -name "*.md")
if [ -n "$MD_FILES" ]; then
echo "Found the following .md files:"
echo "$MD_FILES"
echo "⚠️ Please rename these files from .md to .markdown"
exit 1
fi
- name: Install dependencies
run: npm install
env:

View File

@ -3,16 +3,16 @@ source 'https://rubygems.org'
ruby '> 2.5.0'
group :development do
gem 'rake', '13.2.1'
gem 'rake', '13.3.0'
gem 'jekyll', '4.4.1'
gem 'compass', '1.0.3'
gem 'sass-globbing', '1.1.5'
gem 'stringex', '2.8.6'
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
gem 'sassc', '2.1.0'
gem 'sass-embedded', '1.89.0'
gem 'rubocop', '1.75.7'
gem 'ruby-lsp', '0.23.23'
gem 'sass-embedded', '1.89.2'
gem 'rubocop', '1.76.1'
gem 'ruby-lsp', '0.24.1'
gem 'rackup', '2.2.1'
end

View File

@ -4,8 +4,8 @@ GEM
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
ast (2.4.3)
base64 (0.2.0)
bigdecimal (3.1.9)
base64 (0.3.0)
bigdecimal (3.2.2)
chunky_png (1.4.0)
colorator (1.1.0)
commonmarker (0.23.11)
@ -22,7 +22,7 @@ GEM
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
concurrent-ruby (1.3.5)
csv (3.3.4)
csv (3.3.5)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
@ -30,10 +30,10 @@ GEM
ffi (1.17.2-arm64-darwin)
ffi (1.17.2-x86_64-linux-gnu)
forwardable-extended (2.6.0)
google-protobuf (4.31.0-arm64-darwin)
google-protobuf (4.31.1-arm64-darwin)
bigdecimal
rake (>= 13)
google-protobuf (4.31.0-x86_64-linux-gnu)
google-protobuf (4.31.1-x86_64-linux-gnu)
bigdecimal
rake (>= 13)
http_parser.rb (0.8.0)
@ -99,7 +99,7 @@ GEM
prism (1.4.0)
public_suffix (6.0.2)
racc (1.8.1)
rack (3.1.15)
rack (3.1.16)
rack-protection (4.1.1)
base64 (>= 0.1.0)
logger (>= 1.6.0)
@ -110,7 +110,7 @@ GEM
rackup (2.2.1)
rack (>= 3)
rainbow (3.1.1)
rake (13.2.1)
rake (13.3.0)
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
ffi (~> 1.0)
@ -119,7 +119,7 @@ GEM
regexp_parser (2.10.0)
rexml (3.4.1)
rouge (4.5.2)
rubocop (1.75.7)
rubocop (1.76.1)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
@ -127,13 +127,13 @@ GEM
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.44.0, < 2.0)
rubocop-ast (>= 1.45.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.44.1)
rubocop-ast (1.45.1)
parser (>= 3.3.7.2)
prism (~> 1.4)
ruby-lsp (0.23.23)
ruby-lsp (0.24.1)
language_server-protocol (~> 3.17.0)
prism (>= 1.2, < 2.0)
rbs (>= 3, < 5)
@ -142,9 +142,9 @@ GEM
ruby2_keywords (0.0.5)
safe_yaml (1.0.5)
sass (3.4.25)
sass-embedded (1.89.0-arm64-darwin)
sass-embedded (1.89.2-arm64-darwin)
google-protobuf (~> 4.31)
sass-embedded (1.89.0-x86_64-linux-gnu)
sass-embedded (1.89.2-x86_64-linux-gnu)
google-protobuf (~> 4.31)
sass-globbing (1.1.5)
sass (>= 3.1)
@ -159,7 +159,7 @@ GEM
rack-protection (= 4.1.1)
rack-session (>= 2.0.0, < 3)
tilt (~> 2.0)
sorbet-runtime (0.5.12130)
sorbet-runtime (0.5.12167)
stringex (2.8.6)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
@ -184,10 +184,10 @@ DEPENDENCIES
jekyll-toc (= 0.19.0)
nokogiri (= 1.18.8)
rackup (= 2.2.1)
rake (= 13.2.1)
rubocop (= 1.75.7)
ruby-lsp (= 0.23.23)
sass-embedded (= 1.89.0)
rake (= 13.3.0)
rubocop (= 1.76.1)
ruby-lsp (= 0.24.1)
sass-embedded (= 1.89.2)
sass-globbing (= 1.1.5)
sassc (= 2.1.0)
sinatra (= 4.1.1)

1274
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,7 @@
"remark-lint-prohibited-strings": "^4.0.0",
"remark-lint-unordered-list-marker-style": "^4.0.1",
"remark-stringify": "^11.0.0",
"textlint": "^14.7.2",
"textlint": "^14.8.0",
"textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^5.0.13"

View File

@ -161,7 +161,7 @@ Assuming you have only the owner created though onboarding process, no other use
The command line auth provider executes a configurable shell command to perform user authentication. Two environment variables, `username` and `password`, are passed to the command. Access is granted when the command exits successfully (with exit code 0).
This provider can be used to integrate Home Assistant with arbitrary external authentication services, from plaintext databases over LDAP to RADIUS. A compatible script for LDAP authentication is [this one](https://github.com/bob1de/ldap-auth-sh), for instance. Please note, this will only work when using the Home Assistant Core installation type.
This provider can be used to integrate Home Assistant with arbitrary external authentication services, from plaintext databases over LDAP to RADIUS.
Here is a configuration example:

View File

@ -16,16 +16,18 @@ related:
## The blueprint schema
Blueprint schemas currently supports three types of schema depending on its domain: [`automation`](/docs/automation/yaml/); `script`; and [`template`](/integrations/template/#using-blueprints).
The configuration schema of a blueprint consists of 2 parts:
1. The blueprint's high-level metadata: name, description, the input required from the user.
2. The schema of the thing the blueprint describes.
1. The blueprint's high-level metadata: name, domain and, optionally, any input required from the user.
2. The schema for the blueprint domain it describes.
The first part is referred to as the *blueprint schema*. It contains the
blueprint's metadata.
The only requirement for a blueprint is a name. In its most basic form,
a blueprint would look like:
Minimum required metadata for a blueprint is its name and domain. In its most basic form,
a blueprint looks like:
```yaml
blueprint:
@ -35,10 +37,9 @@ blueprint:
Although this is a valid blueprint, it is not very useful.
The second part depends on the use case of the blueprint. For example, if you create a blueprint for an automation, the full
The second part depends on its domain, the type of blueprint. For example, when creating a blueprint for an automation, the full
schema for an [automation](/docs/automation/yaml/) applies.
You can add a description of the blueprint's use case and user inputs.
This is the full blueprint schema:
@ -50,13 +51,13 @@ name:
description:
description: >
The description of the blueprint. While optional, this field is highly
recommended. Describe what the blueprint does and describe the inputs the blueprint provide. The description can
recommended. Describe what the blueprint does and describe the inputs the blueprint requires. The description can
include [Markdown](https://commonmark.org/help/).
type: string
required: false
domain:
description: >
The domain in which this blueprint is used. Currently, only
The domain in which this blueprint is used. Currently, only three types,
[`automation`](/docs/automation/yaml/), `script` and [`template`](/integrations/template/#using-blueprints) are supported.
type: string
required: true
@ -66,7 +67,7 @@ author:
required: false
homeassistant:
description: >
Home Assistant requirements to be able to use the blueprint successfully.
Home Assistant version required for the blueprint to work successfully.
type: map
required: false
keys:
@ -90,10 +91,9 @@ input:
### Blueprint inputs
As described above, a blueprint can accept one (or multiple)
inputs from the blueprint user.
A blueprint can accept one or multiple inputs from the user, but does not require any input.
These inputs can be of any type (string, boolean, list, dictionary). They can have
These inputs can be of any type (string, boolean, list, map). They can have
a default value and also provide a [selector](/docs/blueprint/selectors/) that
ensures a matching input field in the user interface.
@ -126,9 +126,9 @@ A blueprint input has the following configuration:
{% endconfiguration %}
Each input field can be referred to, outside of the blueprint metadata, using
the `!input` custom YAML tag.
the `!input` custom YAML tag before its name.
The following example shows a minimal blueprint with a single input:
The following example shows a minimal *blueprint schema* with a single input:
```yaml
blueprint:
@ -161,7 +161,7 @@ A section is differentiated from an input by the presence of an additional `inpu
Input sections are a new feature in version 2024.6.0. Set the `min_version` for the blueprint to at least this version if using input sections. Otherwise, the blueprint will generate errors on older versions. See [this section](/docs/blueprint/schema/#min_version) for more details.
{% endcaution %}
The full configuration for a section is below:
The full configuration for an input section is below:
{% configuration %}
@ -194,7 +194,7 @@ input:
The following example shows a blueprint with some inputs in a section:
The following example shows a *blueprint schema* with some inputs in a section:
```yaml
blueprint:
@ -232,7 +232,8 @@ variables:
The [built-in blueprints][blueprint-built-in]
are great examples to get a bit of a feeling of how blueprints work.
Here is the built-in motion light automation blueprint:
Here is the built-in motion light automation blueprint.
Note the *blueprint schema* under the blueprint key is followed by its domain schema. In this example, an automation schema.
```yaml
blueprint:

View File

@ -52,8 +52,8 @@ There are a few very important rules to remember when adding templates to YAML:
1. You **must** surround single-line templates with double quotes (`"`) or single quotes (`'`).
2. It is advised that you prepare for undefined variables by using `if ... is not none` or the [`default` filter](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.default), or both.
3. It is advised that when comparing numbers, you convert the number(s) to a [`float`](https://jinja.palletsprojects.com/en/latest/templates/#float) or an [`int`](https://jinja.palletsprojects.com/en/latest/templates/#int) by using the respective [filter](https://jinja.palletsprojects.com/en/latest/templates/#list-of-builtin-filters).
4. While the [`float`](https://jinja.palletsprojects.com/en/latest/templates/#float) and [`int`](https://jinja.palletsprojects.com/en/latest/templates/#int) filters do allow a default fallback value if the conversion is unsuccessful, they do not provide the ability to catch undefined variables.
3. It is advised that when comparing numbers, you convert the number(s) to a [`float`](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.float) or an [`int`](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.int) by using the respective [filter](https://jinja.palletsprojects.com/en/latest/templates/#list-of-builtin-filters).
4. While the [`float`](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.float) and [`int`](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.int) filters do allow a default fallback value if the conversion is unsuccessful, they do not provide the ability to catch undefined variables.
Remembering these simple rules will help save you from many headaches and endless hours of frustration when using automation templates.

View File

@ -69,13 +69,11 @@
{%- endif -%}
{% if page.works_with %}
{%- for type in page.works_with -%}
<div class="section">
<a href="https://works-with.home-assistant.io/">
<img src="../../images/works_with/works-with.png" alt="Works with Home assistant">
</a>
</div>
{%- endfor -%}
<div class="section">
<a href="https://works-with.home-assistant.io/">
<img src="../../images/works_with/works-with.png" alt="Works with Home assistant">
</a>
</div>
{%- endif -%}
{% if page.ha_domain %}

View File

@ -1,9 +1,12 @@
Best practice for updating Home Assistant Core:
#### Prerequisites
1. [Back up your installation](/common-tasks/general/#backups) and store the backup and the [backup emergency kit](/more-info/backup-emergency-kit/) somewhere safe.
- This ensures that you can [restore your installation from backup](/common-tasks/general/#restoring-a-backup) if needed.
2. Check the release notes for backward-incompatible changes on [Home Assistant release notes](/blog/categories/core/). Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f` / `CMD + f`) and search for **Backward-incompatible changes**.
3. To update Home Assistant Core, choose one of the following options.
#### To update Home Assistant Core
To update Home Assistant Core, choose one of the following options.
{% if page.installation == "os" %}
@ -20,6 +23,10 @@ Best practice for updating Home Assistant Core:
- Go to {% my updates title="**System** > **Updates**" %}.
- Select the update notification.
- Select the cogwheel {% icon "mdi:cog-outline" %}, then set **Visible** to active.
4. Open the notification for the component you want to update.
5. If you want to backup the system first (recommended), enable the backup toggle.
6. Select **Update**.
7. After the update completed, check if there are any repair issues and check the logs to see if there are any issues with your configuration that need to be addressed.
- title: Using the CLI
content: |
@ -57,6 +64,7 @@ Best practice for updating Home Assistant Core:
{% endtabbed_block %}
After the update, check if there are any repair issues and check the logs to see if there are any issues with your configuration that need to be addressed.
{% endif %}
4. Check if there are any repair issues and check the logs to see if there are any issues with your configuration that need to be addressed.

View File

@ -1,13 +1,6 @@
<!-- Left column begins -->
<div class="grid__item one-third lap-one-half palm-one-whole">
<!-- Community Day 2025 - To move on/after event -->
<a href="/blog/2025/04/24/community-day/" class="material-card picture-promo" style="
background-image: url(/images/frontpage/community-day-2025.webp);
aspect-ratio: 500/263;
" aria-label="State of the Open Home - Saturday April 12th 2025">
</a>
{% assign releases_post_limit = 2 %}
{% assign blog_post_limit = 4 %}
<!-- Home Assistant updates posts -->
@ -37,33 +30,40 @@
</ol>
</div>
<!-- Recent blog posts -->
<div class="recent-posts material-card text">
<h1>{% icon "mdi:newspaper-variant-multiple" %} Recent Blog Posts</h1>
<ol>
{% assign current = 0 %}
{% for post in site.posts %}
{% if post.categories contains "Release-Notes" %}
{% else %}
{% assign current = current | plus: 1 %}
{% if current > blog_post_limit %}
{% break %}
{% endif %}
{% assign post_date = post.date | date: "%Y-%m-%d" %}
{% assign post_date_formatted = post_date | date: "%B %d, %Y" %}
{% assign post.date_formatted = post_date_formatted %}
<li class="post" style="display: grid; font-size: 16px">
<a href="{{ post.url }}">{{ post.title }}</a>
<small class="blog-date">{{ post.date_formatted }}</small>
</li>
<!-- Recent blog posts -->
<div class="recent-posts material-card text">
<h1>{% icon "mdi:newspaper-variant-multiple" %} Recent Blog Posts</h1>
<ol>
{% assign current = 0 %}
{% for post in site.posts %}
{% if post.categories contains "Release-Notes" %}
{% else %}
{% assign current = current | plus: 1 %}
{% if current > blog_post_limit %}
{% break %}
{% endif %}
{% endfor %}
</ol>
</div>
{% assign post_date = post.date | date: "%Y-%m-%d" %}
{% assign post_date_formatted = post_date | date: "%B %d, %Y" %}
{% assign post.date_formatted = post_date_formatted %}
<li class="post" style="display: grid; font-size: 16px">
<a href="{{ post.url }}">{{ post.title }}</a>
<small class="blog-date">{{ post.date_formatted }}</small>
</li>
{% endif %}
{% endfor %}
</ol>
</div>
<!-- Community Day 2025 - To move on/after event -->
<a href="https://lu.ma/homeassistant" class="material-card picture-promo" target="_blank" style="
background-image: url(/images/frontpage/community-meetup.webp);
aspect-ratio: 500/263;
" aria-label="State of the Open Home - Saturday April 12th 2025">
</a>
<!-- OHF notice -->
<a href="https://www.openhomefoundation.org/blog/announcing-the-open-home-foundation/"

View File

@ -3,6 +3,7 @@ title: Adax
description: Instructions on how to integrate Adax heater into Home Assistant.
ha_category:
- Climate
- Sensor
ha_release: 2021.8
ha_iot_class: Local Polling
ha_codeowners:
@ -12,6 +13,7 @@ ha_domain: adax
ha_config_flow: true
ha_platforms:
- climate
- sensor
ha_integration_type: integration
---
@ -42,3 +44,13 @@ You will also need a credential, which you can create in the Adax app:
In the configuration popup you will need the Account ID, and the generated API password (not the account password)
{% include integrations/config_flow.md %}
## Energy monitoring
When using the cloud integration, the Adax integration provides energy monitoring sensors that track the power consumption of your heaters. These sensors are only available when using the cloud connection, as the local integration does not support energy data.
The integration creates the following energy sensors:
- **Individual energy sensors** - One sensor for each Adax heater showing its energy consumption in Wh
The energy sensors use the `total_increasing` state class, making them suitable for use with Home Assistant's energy dashboard to track your heating costs and consumption over time.

View File

@ -27,6 +27,18 @@ ha_zeroconf: true
The AirGradient integration will fetch data from your [AirGradient devices](https://www.airgradient.com/).
AirGradient creates indoor and outdoor air quality monitors that enable you know if the air quality is healthy or not. They measure metrics such as PM2.5, CO2, TVOCs, and NOx. Both the software and hardware are open-source, allowing you to customize or extend the device functionality.
## Use cases
- Monitor indoor and outdoor air quality.
- Warn to open windows when CO2 levels are too high.
- Control ventilation systems based on air quality.
## Supported devices
- AirGradient DIY Air Quality Monitor
- AirGradient Indoor Air Quality Monitor
- AirGradient Outdoor Air Quality Monitor
{% important %}
In order for the device to be set up or discovered by Home Assistant, the [firmware](https://www.airgradient.com/documentation/firmwares) version should be at least 3.1.1.
{% endimportant %}
@ -38,7 +50,11 @@ Host:
description: "The IP address or hostname for your AirGradient device."
{% endconfiguration_basic %}
## Available sensors
## Supported functionality
Below is a complete overview of the entities this integration provides.
### Available sensors
The integration will fetch data from each device. The following sensors are supported:
@ -65,7 +81,7 @@ A number of configuration entities are available as sensors to automate with if
- Display temperature unit
- Display brightness
## Available configuration entities
### Available configuration entities
The integration provides a few configuration entities to customize the device experience.
The settings are only available when the configuration source is set to local.
@ -84,6 +100,67 @@ The following entities are supported:
- NOx learning offset
- Total volatile organic compounds learning offset
### Updates
The AirGradient integration provides an update entity that checks for firmware updates for your AirGradient device.
To install the update, the device needs to be rebooted.
## Data updates
This integration uses local {% term polling %}, meaning it checks for changes to all entities by regularly communicating with the AirGradient device.
The integration will retrieve data from the device every minute.
The updates for the device are checked once every hour.
## Actions
This integration does not provide additional actions. All actions available
for this integration are provided by their respective entities.
## Examples
The following examples show how to use the AirGradient integration in Home
Assistant automations. These examples are just a starting point, and you can
use them as inspiration to create your own automations.
### Notify when the CO2 level is too high
The following example sends a notification to your mobile device when the CO2 level exceeds 1000 ppm.
{% raw %}
```yaml
automation:
- alias: "Notify when CO2 level is too high"
triggers:
- trigger: numeric_state
entity_id: sensor.airgradient_carbon_dioxide
above: 1000
actions:
- action: notify.mobile_app_your_device
data:
title: "High CO2 Level Alert"
message: >
The CO2 level is too high at {{ states('sensor.airgradient_carbon_dioxide') }} ppm.
Please consider ventilating the room.
```
{% endraw %}
## Known limitations
The AirGradient integration currently has the following limitations:
- The update entity is not able to install updates automatically. You will need to reboot the device manually after installing the update.
## Troubleshooting
If you're experiencing issues with your AirGradient integration, try these general troubleshooting steps:
1. Make sure your AirGradient is powered on and properly connected to your home network.
2. If the integration shows as unavailable, try restarting both your AirGradient and Home Assistant.
## Removing the integration
This integration follows standard integration removal, no extra steps are required.

View File

@ -1,27 +1,27 @@
---
title: UK Environment Agency Flood Monitoring
description: Monitor nearby water levels and be prepared for flooding with the UK Environment Agency API integration.
ha_category:
- Sensor
ha_release: 0.115
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- '@Jc2k'
---
The `eafm` integration offers integration with the [UK Environment Agency Flood Monitoring](https://environment.data.gov.uk/flood-monitoring/doc/reference) API to provide sensors for nearby water levels. Combined with Home Assistant notifications, you could give yourself a warning if a nearby river was likely to flood your local cycle path or the only road out of your village.
{% important %}
The UK Environment Agency Flood Monitoring only provides data for England - Northern Ireland, Scotland and Wales have their own flood agencies.
{% endimportant %}
## Configuration
Home Assistant offers the flood monitoring integration through **Settings** -> **Devices & services** -> **Environment Agency Flood Gauges**.
You will be prompted to select a monitoring station. You can find the name of nearby monitoring stations on the Flood information service [website](https://check-for-flooding.service.gov.uk/river-and-sea-levels).
Sensors for that monitoring station should then appear in your Home Assistant instance.
---
title: UK Environment Agency Flood Monitoring
description: Monitor nearby water levels and be prepared for flooding with the UK Environment Agency API integration.
ha_category:
- Sensor
ha_release: 0.115
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- '@Jc2k'
---
The `eafm` integration offers integration with the [UK Environment Agency Flood Monitoring](https://environment.data.gov.uk/flood-monitoring/doc/reference) API to provide sensors for nearby water levels. Combined with Home Assistant notifications, you could give yourself a warning if a nearby river was likely to flood your local cycle path or the only road out of your village.
{% important %}
The UK Environment Agency Flood Monitoring only provides data for England - Northern Ireland, Scotland and Wales have their own flood agencies.
{% endimportant %}
## Configuration
Home Assistant offers the flood monitoring integration through **Settings** -> **Devices & services** -> **Environment Agency Flood Gauges**.
You will be prompted to select a monitoring station. You can find the name of nearby monitoring stations on the Flood information service [website](https://check-for-flooding.service.gov.uk/river-and-sea-levels).
Sensors for that monitoring station should then appear in your Home Assistant instance.

View File

@ -49,11 +49,12 @@ ha_quality_scale: platinum
## Overview
This integration allows [ESPHome](https://esphome.io) devices to connect directly to Home Assistant with the [native ESPHome API](https://esphome.io/components/api.html).
The **ESPHome** {% term integration %} allows [ESPHome](https://esphome.io) devices to connect directly to Home Assistant with the [native ESPHome API](https://esphome.io/components/api.html).
ESPHome is a firmware generator and configuration system that enables the transformation of microcontrollers into fully customizable smart home devices. Using a simple YAML configuration file, ESPHome allows users to define hardware components like sensors, actuators, and peripherals. These configurations are then compiled into custom firmware that can be flashed onto the target device.
### Key Features
### Key features
- **YAML Configuration**: Specify hardware components, sensors, actuators, and integrations using a clean and straightforward YAML syntax.
- **Custom Firmware Generation**: ESPHome compiles the provided configuration into a highly optimized, device-specific firmware image that is ready to be flashed onto microcontrollers.
- **Seamless Integration**: After flashing, ESPHome devices can integrate seamlessly with Home Assistant using the ESPHome native API. This documentation page focuses on the [native API](https://esphome.io/components/api.html), which allows devices to communicate directly with Home Assistant for real-time automation and monitoring. For other integrations, such as MQTT or HTTP, please refer to the relevant sections of the [ESPHome documentation](https://esphome.io/).
@ -95,12 +96,6 @@ password:
For more information, see the [ESPHome Native API Component documentation](https://esphome.io/components/api.html).
## Removing the integration
This integration follows the standard integration removal process; no extra steps are required.
{% include integrations/remove_device_service.md %}
{% include integrations/option_flow.md %}
These options are disabled by default and not required—only set them if specifically needed.
@ -114,25 +109,26 @@ Subscribe to logs from the device:
## Supported devices
The ESPHome integration works with devices that run ESPHome firmware and expose their functionality through the [native ESPHome API](https://esphome.io/components/api.html). This API is designed for tight, efficient integration with Home Assistant, enabling ESPHome devices to push updates directly to Home Assistant in **near real time**.
The ESPHome {% term integration %} works with devices that run ESPHome firmware and expose their functionality through the [native ESPHome API](https://esphome.io/components/api.html). This API is designed for tight, efficient integration with Home Assistant, enabling ESPHome devices to push updates directly to Home Assistant in **near real time**.
## Updating data
Rather than polling for sensor values or device states, Home Assistant maintains a persistent connection to each ESPHome device using the native API. This allows state changes—such as a temperature sensor update, a button press, or a binary sensor trigger—to be sent immediately as they happen, reducing latency and improving responsiveness in automations.
### Additional Technical Details
### Additional technical details
- **Efficient Communication Protocol**: ESPHome uses a lightweight, bi-directional protocol over TCP, optimized for microcontrollers. This protocol is implemented in [aioesphomeapi](https://github.com/esphome/aioesphomeapi), the async Python library used by Home Assistant to handle real-time communication with ESPHome devices. It enables low-latency updates and near instant command execution.
- **Automatic Reconnection**: Home Assistant maintains a persistent connection to each ESPHome device and will automatically attempt to reconnect if the connection is lost. This includes support for "sleepy" or battery-powered devices that periodically wake from deep sleep. When such a device comes online, Home Assistant quickly re-establishes the connection—especially when **mDNS** (Multicast DNS) is available—allowing the device to be discovered and connected without requiring static IPs or manual configuration.
This real-time behavior enables fast, reactive automations and a smooth user experience compared to traditional polling-based integrations.
## Supported Functionality
## Supported functionality
### Entities
The available entities depend on the components defined in the ESPHome YAML configuration for each device. These entities are exposed through the [Native API Component](https://esphome.io/components/api.html).
### Firing Events on the Home Assistant Event Bus
### Firing events on the Home Assistant event bus
When using the native API with Home Assistant, you can trigger events on the Home Assistant event bus directly from ESPHome. For more details, see the [homeassistant.event Action](https://esphome.io/components/api.html#homeassistant-event-action).
@ -140,15 +136,15 @@ When using the native API with Home Assistant, you can trigger events on the Hom
Each device can define Home Assistant Actions based on its ESPHome YAML configuration. For more information, refer to the [Actions](https://esphome.io/components/api.html#actions) section in the [Native API Component](https://esphome.io/components/api.html) documentation.
### Retrieving Data from Home Assistant
### Retrieving data from Home Assistant
ESPHome can retrieve the state of Home Assistant entities using the [Native API](https://esphome.io/components/api.html) with [User-Defined Actions](https://esphome.io/components/api.html#user-defined-actions).
### Home Assistant Actions
### Home Assistant actions
ESPHome devices can call any [Home Assistant Action](https://esphome.io/components/api.html#homeassistant-service-action). This feature is not enabled by default for newly added devices but can be enabled through the options flow on a per-device basis.
### Tag Scanning Support
### Tag scanning support
The [Native API Component](https://esphome.io/components/api.html) also supports sending tag scan events to Home Assistant. See the [homeassistant.tag_scanned Action](https://esphome.io/components/api.html#homeassistant-tag-scanned-action) for more information.
@ -184,18 +180,20 @@ The entity will be named `livingroomdesk Temperature` and will default to having
## Troubleshooting
### Viewing Live Logs
### Viewing live logs
To troubleshoot your ESPHome devices, you can easily view live logs, whether you're using the [**ESPHome Device Builder Add-on**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome&repository_url=https%3A%2F%2Fgithub.com%2Fesphome%2Fhome-assistant-addon) or the **ESPHome CLI**. The logs contain detailed information such as Wi-Fi connection status, errors, and debug messages, which can help you identify and resolve issues with your device.
#### Using the [**ESPHome Device Builder Add-on**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome&repository_url=https%3A%2F%2Fgithub.com%2Fesphome%2Fhome-assistant-addon)
1. In the [**ESPHome Device Builder Add-on**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome&repository_url=https%3A%2F%2Fgithub.com%2Fesphome%2Fhome-assistant-addon) add-on, find the device you're working with.
2. Click the **LOGS** button to open the log view.
#### Using the **ESPHome CLI**
If you're using the **ESPHome CLI**, follow the instructions for the [logs Command](https://esphome.io/guides/cli.html#logs-command) to access the logs.
### Obtaining Logs from the Device
### Obtaining logs from the device
If you want the device to send logs without requiring you to be actively monitoring, follow these steps:
@ -216,7 +214,7 @@ If you want the device to send logs without requiring you to be actively monitor
This integration supports reconfiguration, allowing you to make changes—such as updating the IP address—even after a device has already been set up.
### Name Conflict Resolution
### Name conflict resolution
If Home Assistant detects multiple devices with the same [**name**](https://esphome.io/components/esphome.html#configuration-variables), it will automatically initiate **Name Conflict Resolution**. This process is designed to help you seamlessly replace a failed or retired device with new hardware, while preserving your existing configuration if desired.
@ -232,7 +230,7 @@ If youre using the same YAML file on the new device, choose **Migrate**. If i
---
### Requirements for Name Conflict Resolution
### Requirements for name conflict resolution
To trigger Name Conflict Resolution, all of the following must be true:
@ -242,7 +240,7 @@ To trigger Name Conflict Resolution, all of the following must be true:
---
### How to Trigger Name Conflict Resolution
### How to trigger name conflict resolution
You can trigger Name Conflict Resolution in several ways:
@ -251,8 +249,14 @@ You can trigger Name Conflict Resolution in several ways:
- Configuring a **newly discovered device** that uses the same name.
- **Manually adding** a device with the same name via the integration setup.
## Known Limitations
## Known limitations
Each ESPHome device must have a **unique name**. This name is important for mDNS announcements, ensuring that the device can be properly discovered, quickly reconnected when it comes online or wakes from deep sleep (for devices that support deep sleep), and correctly linked to the [**ESPHome Device Builder Add-on**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome&repository_url=https%3A%2F%2Fgithub.com%2Fesphome%2Fhome-assistant-addon). It's also crucial for **DHCP discovery** if mDNS is not available.
Using duplicate names can lead to connection issues, failed discovery, and unexpected behavior with both the integration and the add-on.
## Removing the integration
This integration follows the standard integration removal process; no extra steps are required.
{% include integrations/remove_device_service.md %}

View File

@ -13,6 +13,8 @@ ha_platforms:
- sensor
ha_iot_standard: matter
ha_brand: true
works_with:
- matter
---
[Eve](https://www.evehome.com/) is a member of the Works with Home Assistant partner program for their Matter products. Eve is committed to making sure their products are up-to-date and ready to use in Home Assistant.

View File

@ -32,7 +32,7 @@ The Govee BLE integration will automatically discover devices once the [Bluetoot
- H5071 Hygrometer Thermometer
- H5072 Hygrometer Thermometer
- H5074 Hygrometer Thermometer (Active scans required)
- [H5075 Bluetooth Hygrometer Thermometer](https://us.govee.com/collections/thermo-hydrometer/products/govee-bluetooth-hygrometer-thermometer-h5075)
- [H5075 Bluetooth Hygrometer Thermometer](https://us.govee.com/collections/thermo-hydrometer/products/govee-bluetooth-hygrometer-thermometer-h5075) (Active scans required)
- [H5100 Hygrometer Thermometer](https://us.govee.com/collections/thermo-hydrometer/products/govee-h5100-mini-hygrometer-thermometer-sensors)
- H5101 Hygrometer Thermometer
- H5102 Hygrometer Thermometer
@ -49,6 +49,7 @@ The Govee BLE integration will automatically discover devices once the [Bluetoot
- H5125 2 Button Switch
- H5126 6 Button Switch
- H5127 Presence Sensor
- [H5129 Hygrometer Thermometer](https://us.govee.com/products/wi-fi-temperature-humidity-sensor) (Active scans required)
- H5130 Pressure Sensor
- [H5177/5178 Bluetooth Thermo-Hygrometer](https://us.govee.com/collections/thermo-hydrometer/products/bluetooth-thermo-hygrometer)
- H5174 Hygrometer Thermometer

View File

@ -725,7 +725,7 @@ Both entities can use these options, but the availability of these will depend o
### Sensor
{% details "List of binary sensors" %}
{% details "List of sensors" %}
- **Finish time**:
- **Description**: Represents the time when the program will end.

View File

@ -1,18 +1,18 @@
---
title: Internet Printing Protocol (IPP)
description: Instructions on how to integrate printers that support the Internet Printing Protocol (IPP) into Home Assistant.
ha_category:
- System monitor
ha_release: 0.108
ha_iot_class: Local Polling
ha_config_flow: true
ha_codeowners:
- '@ctalkington'
ha_domain: ipp
---
The `Internet Printing Protocol (IPP)` integration allows you to read current data from your networked printer that supports the [Internet Printing Protocol](https://www.pwg.org/ipp/everywhere.html).
It provides information about the printer's state and remaining ink levels.
{% include integrations/config_flow.md %}
---
title: Internet Printing Protocol (IPP)
description: Instructions on how to integrate printers that support the Internet Printing Protocol (IPP) into Home Assistant.
ha_category:
- System monitor
ha_release: 0.108
ha_iot_class: Local Polling
ha_config_flow: true
ha_codeowners:
- '@ctalkington'
ha_domain: ipp
---
The `Internet Printing Protocol (IPP)` integration allows you to read current data from your networked printer that supports the [Internet Printing Protocol](https://www.pwg.org/ipp/everywhere.html).
It provides information about the printer's state and remaining ink levels.
{% include integrations/config_flow.md %}

View File

@ -555,7 +555,7 @@ address:
required: true
type: [string, list]
remove:
description: If `True` the group address will be removed.
description: If `true` the group address will be removed.
required: false
type: boolean
default: false
@ -571,7 +571,7 @@ The `knx.exposure_register` action can be used to register (or unregister) expos
{% configuration %}
remove:
description: In addition to the configuration variables of [expose](#exposing-entity-states-entity-attributes-or-time-to-knx-bus) `remove` set to `True` can be used to remove exposures. Only `address` is required for removal.
description: In addition to the configuration variables of [expose](#exposing-entity-states-entity-attributes-or-time-to-knx-bus) `remove` set to `true` can be used to remove exposures. Only `address` is required for removal.
required: false
type: boolean
default: false
@ -1279,7 +1279,7 @@ state_address:
required: false
type: [string, list]
respond_to_read:
description: Respond to GroupValueRead telegrams received to the configured `address`.
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
required: false
type: boolean
default: false
@ -1346,7 +1346,7 @@ state_address:
required: false
type: [string, list]
respond_to_read:
description: Respond to GroupValueRead telegrams received to the configured `address`.
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
required: false
type: boolean
default: false
@ -1750,7 +1750,7 @@ type:
required: true
type: [string, integer]
respond_to_read:
description: Respond to GroupValueRead telegrams received to the configured `address`.
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
required: false
type: boolean
default: false
@ -1883,7 +1883,7 @@ options:
required: true
type: integer
respond_to_read:
description: Respond to GroupValueRead telegrams received to the configured `address`.
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
required: false
type: boolean
default: false
@ -2219,7 +2219,7 @@ invert:
type: boolean
default: false
respond_to_read:
description: Respond to GroupValueRead telegrams received to the configured `address`.
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
required: false
type: boolean
default: false
@ -2282,7 +2282,7 @@ type:
type: [string, integer]
default: latin_1
respond_to_read:
description: Respond to GroupValueRead telegrams received to the configured `address`.
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
required: false
type: boolean
default: false
@ -2335,7 +2335,7 @@ state_address:
required: false
type: [string, list]
respond_to_read:
description: Respond to GroupValueRead telegrams received to the configured `address`.
description: If `true`, the entity will respond to GroupValueRead telegrams received on the configured `address` by sending a GroupValueResponse to the same `address`. This is typically used when Home Assistant acts as the state provider for the KNX bus. In such cases, only `address` is configured, and `state_address` is not set. Read-requests to passive or state addresses don't trigger responses.
required: false
type: boolean
default: false

View File

@ -1,54 +1,54 @@
---
title: LinkPlay
description: Connect and control your LinkPlay media players using the LinkPlay integration
ha_category:
- Media player
ha_domain: linkplay
ha_zeroconf: true
ha_integration_type: integration
ha_release: 2024.8
ha_codeowners:
- '@Velleman'
ha_config_flow: true
ha_platforms:
- media_player
- button
ha_iot_class: Local Polling
---
The LinkPlay {% term integrations %} for Home Assistant allows you to control various media players based on the LinkPlay protocol. The integration supports auto-discovery on your local network through [Zeroconf](/integrations/zeroconf).
{% include integrations/config_flow.md %}
## Features
### Media Player
The media player entity offers robust controls and playback features from the media player integration and provides additionally:
- **Preset playback**: Play LinkPlay presets configured on the device using the action `linkplay.play_preset`.
- **Multiroom**: Combine multiple LinkPlay devices in a multiroom. Use the actions `media_player.join` and `media_player.unjoin`.
### Buttons
The button entities provide some additional LinkPlay features available on the device:
- **Time Sync**: Synchronize the device's internal clock with the current time in Home Assistant.
- **Restart Device**: Reboot the device, allowing for convenient troubleshooting and maintenance.
## Actions
The LinkPlay integration makes various custom actions available in addition to the [standard media player actions](/integrations/media_player/#actions).
### Action `linkplay.play_preset`
Play a preset on a LinkPlay media player.
{% note %}
Companion apps, such as 4stream, allow to save music presets (for example, Spotify playlists). This action can be used to start playing these presets.
{% endnote %}
| Data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | The speakers to target. To target all LinkPlay devices, use `all`.
| `preset_number` | no | The number of the preset to play.
---
title: LinkPlay
description: Connect and control your LinkPlay media players using the LinkPlay integration
ha_category:
- Media player
ha_domain: linkplay
ha_zeroconf: true
ha_integration_type: integration
ha_release: 2024.8
ha_codeowners:
- '@Velleman'
ha_config_flow: true
ha_platforms:
- media_player
- button
ha_iot_class: Local Polling
---
The LinkPlay {% term integrations %} for Home Assistant allows you to control various media players based on the LinkPlay protocol. The integration supports auto-discovery on your local network through [Zeroconf](/integrations/zeroconf).
{% include integrations/config_flow.md %}
## Features
### Media Player
The media player entity offers robust controls and playback features from the media player integration and provides additionally:
- **Preset playback**: Play LinkPlay presets configured on the device using the action `linkplay.play_preset`.
- **Multiroom**: Combine multiple LinkPlay devices in a multiroom. Use the actions `media_player.join` and `media_player.unjoin`.
### Buttons
The button entities provide some additional LinkPlay features available on the device:
- **Time Sync**: Synchronize the device's internal clock with the current time in Home Assistant.
- **Restart Device**: Reboot the device, allowing for convenient troubleshooting and maintenance.
## Actions
The LinkPlay integration makes various custom actions available in addition to the [standard media player actions](/integrations/media_player/#actions).
### Action `linkplay.play_preset`
Play a preset on a LinkPlay media player.
{% note %}
Companion apps, such as 4stream, allow to save music presets (for example, Spotify playlists). This action can be used to start playing these presets.
{% endnote %}
| Data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | The speakers to target. To target all LinkPlay devices, use `all`.
| `preset_number` | no | The number of the preset to play.

View File

@ -1,23 +1,23 @@
---
title: "Locative"
description: "Instructions on how to use Locative to track devices in Home Assistant."
ha_category:
- Presence detection
ha_release: 0.86
ha_iot_class: Cloud Push
ha_domain: locative
---
This platform allows you to detect presence using [Locative](https://www.locative.app/). Locative is an open source app for [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4) that allows users to set up a `GET` or `POST` request when a geofence is entered or exited. This can be configured with Home Assistant to update your location.
Install on your smartphone:
- [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4)
To configure Locative, you must set it up via the integrations panel in the configuration screen. You must set up the app to send a POST request to your Home Assistant instance at the webhook URL provided by the integration during setup. When you enter or exit a geofence, Locative will send the appropriate request to that URL, updating Home Assistant. You are not able to specify a device name in Locative. Instead, you will need to look in your `dev-state` menu for a new device that Locative will have created on its first `GET`. If you had been or are using Owntracks as well, you will need to update the device name used in the Owntracks setup with the name that Locative generated.
<p class='img'>
<img src='/images/screenshots/locative.png'/>
</p>
When you enter a geofence, your location name in Home Assistant will be set to the name of the geofence in Locative. When you exit a geofence, your location name in Home Assistant will be set to "not home".
---
title: "Locative"
description: "Instructions on how to use Locative to track devices in Home Assistant."
ha_category:
- Presence detection
ha_release: 0.86
ha_iot_class: Cloud Push
ha_domain: locative
---
This platform allows you to detect presence using [Locative](https://www.locative.app/). Locative is an open source app for [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4) that allows users to set up a `GET` or `POST` request when a geofence is entered or exited. This can be configured with Home Assistant to update your location.
Install on your smartphone:
- [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4)
To configure Locative, you must set it up via the integrations panel in the configuration screen. You must set up the app to send a POST request to your Home Assistant instance at the webhook URL provided by the integration during setup. When you enter or exit a geofence, Locative will send the appropriate request to that URL, updating Home Assistant. You are not able to specify a device name in Locative. Instead, you will need to look in your `dev-state` menu for a new device that Locative will have created on its first `GET`. If you had been or are using Owntracks as well, you will need to update the device name used in the Owntracks setup with the name that Locative generated.
<p class='img'>
<img src='/images/screenshots/locative.png'/>
</p>
When you enter a geofence, your location name in Home Assistant will be set to the name of the geofence in Locative. When you exit a geofence, your location name in Home Assistant will be set to "not home".

View File

@ -386,7 +386,7 @@ NOTE for Android users: You need to follow the instructions at the bottom of the
### General recommendations
- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS version 10 and above. Not using Home Assistant OS is at your own risk. We do provide some [documentation](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md) on how to run the Matter Server as a Docker container. The documentation includes a description of the host and networking requirements.
- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS version 10 and above. Home Assistant OS with the Matter Server add-on is the supported path for using Matter with Home Assistant. Running Matter Server as a standalone Docker container is unsupported, but we provide [documentation](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md) including a description of the host and networking requirements.
- To use {% term Thread %} devices you will need a {% term Thread %} network with at least one Thread border router in your network nearby the {% term Thread %} device(s). Apple users, for example, need the Apple TV 4K or the HomePod Mini, while Google users need a Nest Hub (2nd Gen). Use the Thread integration in Home Assistant to diagnose your {% term Thread %} network(s).

View File

@ -17,14 +17,14 @@ ha_integration_type: integration
The Met Éireann integration uses the [Met Éireann](https://met.ie) (The Irish Meteorological Service) Public Weather Forecast API to provide current and forecasted weather data for a given location. This integration is in no way affiliated with or endorsed by Met Éireann.
{% note %}
The Met Éireann API will only provide data for Ireland, the UK and a small part of northern France. For specific coverage, please see the Notes on API document available [here](https://data.gov.ie/dataset/met-eireann-weather-forecast-api/resource/027da6d5-d819-48d1-9b16-331dba169bd1).
The Met Éireann API will only provide data for Ireland, the UK and a small part of northern France. For specific coverage, please see the Notes on API document available [here](https://data.gov.ie/dataset/met-eireann-forecast-api/resource/027da6d5-d819-48d1-9b16-331dba169bd1).
{% endnote %}
{% include integrations/config_flow.md %}
## Data license
The data provided by Met Éireann is licensed under the Met Éireann Open Data Custom License (similar to a Creative Commons CC BY 4.0 license). A license summary and the full license are available [here](https://data.gov.ie/dataset/met-eireann-weather-forecast-api/resource/027da6d5-d819-48d1-9b16-331dba169bd1). In short, if you distribute, broadcast or make Met Éireann data available on the public internet you must give credit to Met Éireann and display their weather warnings.
The data provided by Met Éireann is licensed under the Met Éireann Open Data Custom License (similar to a Creative Commons CC BY 4.0 license). A license summary and the full license are available [here](https://data.gov.ie/dataset/met-eireann-forecast-api/resource/027da6d5-d819-48d1-9b16-331dba169bd1). In short, if you distribute, broadcast or make Met Éireann data available on the public internet you must give credit to Met Éireann and display their weather warnings.
## Data changes

View File

@ -1,115 +1,115 @@
---
title: Vogel's MotionMount
description: Instructions on how to integrate Vogel's MotionMount into Home Assistant.
ha_category:
- Number
- Select
- Binary sensor
- Sensor
ha_release: 2024.1
ha_iot_class: Local Push
ha_config_flow: true
ha_platforms:
- number
- select
- binary_sensor
- sensor
ha_codeowners:
- '@RJPoelstra'
ha_domain: motionmount
ha_zeroconf: true
---
The `motionmount` {% term integration %} allows you to control the position of your [TVM 7675 Pro](https://www.vogels.com/p/tvm-7675-pro-motorized-tv-wall-mount-black) SIGNATURE MotionMount from Vogel's.
This integration uses the Ethernet (IP) connection of your MotionMount. It's not possible to connect using the RS-232 connection.
It provides information about the current position of the mount and allows setting a new position.
A use case would be to position the TV based on whether anyone is actively watching. The MotionMount provides an HDMI connection to monitor whether the TV is turned on and in response move it to a preset position or the last known position. However, if you also use the TV for background music, you probably don't want the MotionMount to extend. By using a presence sensor to check whether anyone is actually in front of the TV, you can ensure the MotionMount only extends when the TV is actively being watched.
{% include integrations/config_flow.md %}
{% configuration_basic %}
Host:
description: Hostname or IP address of the device, for example:`192.168.1.2`.
Port:
description: The TCP port of the device. Defaults to 23. Only change this when you're absolutely certain that it shouldn't be 23.
PIN:
description: The user level pincode, if configured on the device.
{% endconfiguration_basic %}
## Removing the integration
This integration follows standard integration removal. No extra steps are required.
{% include integrations/remove_device_service.md %}
## Data updates
The MotionMount pushes new data to the integration.
The only exception is the presets. Changes to the presets are {% term polling polled %}, by default every 60 seconds.
## Known limitations
The integration does not provide the ability to configure the MotionMount.
All settings, including configuring presets, should be done via the MotionMount app.
Only IP connections are supported. Connection via RS-232 or Bluetooth Low Energy is not supported.
## Supported devices
The following devices are supported:
- TVM 7675 Pro (SIGNATURE MotionMount with Pro extension)
## Unsupported devices
The following devices are *not* supported:
- TVM 7675 (SIGNATURE MotionMount without Pro extension)
- TVM 7355 (NEXT MotionMount)
## Supported functionality
### Entities
#### Sensors
- **Moving**
- **Description**: Indicates whether the MotionMount is moving.
- **Error Status**
- **Description**: The error status of the MotionMount.
- None: There is no error.
- Motor: There is a problem communicating with the motor.
- HDMI CEC: There is a problem communicating with the TV. Check the HDMI cable.
- Obstruction: The MotionMount detected an obstacle and stopped moving.
- TV Width Constraint: The MotionMount detected that the TV moved too close to the wall and stopped moving.
- Internal: There is an internal error. Refer to the MotionMount app for support.
#### Numbers
- **Extension**
- **Description**: The current extension of the MotionMount from the wall.
- **Turn**
- **Description**: The current rotation of the MotionMount.
#### Selects
- **Presets**
- **Description**: If the MotionMount is at a preset location, this shows the corresponding preset.
Any preset can be selected to move the MotionMount to this preset position.
## Troubleshooting
### Can't connect to device
1. Make sure the device is powered on.
2. Make sure the device is connected to the same network as Home Assistant.
3. Make sure the IP address of the MotionMount is configured correctly.
- In case of doubt, perform a network reset by holding the reset button for approx. 5 seconds.
- **Result**: The LED will start to blink slowly. This indicates that the network configuration is being reset to use DHCP.
- **Important**: Don't hold the reset button for too long (approx. 10 s). Holding the button for 10 s or longer starts a factory reset. A factory reset is indicated by the LED blinking fast.
---
title: Vogel's MotionMount
description: Instructions on how to integrate Vogel's MotionMount into Home Assistant.
ha_category:
- Number
- Select
- Binary sensor
- Sensor
ha_release: 2024.1
ha_iot_class: Local Push
ha_config_flow: true
ha_platforms:
- number
- select
- binary_sensor
- sensor
ha_codeowners:
- '@RJPoelstra'
ha_domain: motionmount
ha_zeroconf: true
---
The `motionmount` {% term integration %} allows you to control the position of your [TVM 7675 Pro](https://www.vogels.com/p/tvm-7675-pro-motorized-tv-wall-mount-black) SIGNATURE MotionMount from Vogel's.
This integration uses the Ethernet (IP) connection of your MotionMount. It's not possible to connect using the RS-232 connection.
It provides information about the current position of the mount and allows setting a new position.
A use case would be to position the TV based on whether anyone is actively watching. The MotionMount provides an HDMI connection to monitor whether the TV is turned on and in response move it to a preset position or the last known position. However, if you also use the TV for background music, you probably don't want the MotionMount to extend. By using a presence sensor to check whether anyone is actually in front of the TV, you can ensure the MotionMount only extends when the TV is actively being watched.
{% include integrations/config_flow.md %}
{% configuration_basic %}
Host:
description: Hostname or IP address of the device, for example:`192.168.1.2`.
Port:
description: The TCP port of the device. Defaults to 23. Only change this when you're absolutely certain that it shouldn't be 23.
PIN:
description: The user level pincode, if configured on the device.
{% endconfiguration_basic %}
## Removing the integration
This integration follows standard integration removal. No extra steps are required.
{% include integrations/remove_device_service.md %}
## Data updates
The MotionMount pushes new data to the integration.
The only exception is the presets. Changes to the presets are {% term polling polled %}, by default every 60 seconds.
## Known limitations
The integration does not provide the ability to configure the MotionMount.
All settings, including configuring presets, should be done via the MotionMount app.
Only IP connections are supported. Connection via RS-232 or Bluetooth Low Energy is not supported.
## Supported devices
The following devices are supported:
- TVM 7675 Pro (SIGNATURE MotionMount with Pro extension)
## Unsupported devices
The following devices are *not* supported:
- TVM 7675 (SIGNATURE MotionMount without Pro extension)
- TVM 7355 (NEXT MotionMount)
## Supported functionality
### Entities
#### Sensors
- **Moving**
- **Description**: Indicates whether the MotionMount is moving.
- **Error Status**
- **Description**: The error status of the MotionMount.
- None: There is no error.
- Motor: There is a problem communicating with the motor.
- HDMI CEC: There is a problem communicating with the TV. Check the HDMI cable.
- Obstruction: The MotionMount detected an obstacle and stopped moving.
- TV Width Constraint: The MotionMount detected that the TV moved too close to the wall and stopped moving.
- Internal: There is an internal error. Refer to the MotionMount app for support.
#### Numbers
- **Extension**
- **Description**: The current extension of the MotionMount from the wall.
- **Turn**
- **Description**: The current rotation of the MotionMount.
#### Selects
- **Presets**
- **Description**: If the MotionMount is at a preset location, this shows the corresponding preset.
Any preset can be selected to move the MotionMount to this preset position.
## Troubleshooting
### Can't connect to device
1. Make sure the device is powered on.
2. Make sure the device is connected to the same network as Home Assistant.
3. Make sure the IP address of the MotionMount is configured correctly.
- In case of doubt, perform a network reset by holding the reset button for approx. 5 seconds.
- **Result**: The LED will start to blink slowly. This indicates that the network configuration is being reset to use DHCP.
- **Important**: Don't hold the reset button for too long (approx. 10 s). Holding the button for 10 s or longer starts a factory reset. A factory reset is indicated by the LED blinking fast.

View File

@ -1082,7 +1082,7 @@ payload_not_available:
required: false
type: string
default: offline
{% endconfiguration %}
{% endconfiguration %}
{% enddetails %}
@ -1225,7 +1225,7 @@ Setting up a light, switch etc. is similar but requires a `command_topic` as men
- Configuration topic: `homeassistant/switch/irrigation/config`
- State topic: `homeassistant/switch/irrigation/state`
- Command topic: `homeassistant/switch/irrigation/set`
- Payload:
- Payload:
```json
{
@ -1371,7 +1371,7 @@ The following software has built-in support for MQTT discovery:
- [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e, development halted)
- [TeddyCloud](https://github.com/toniebox-reverse-engineering/teddycloud)
- [Teleinfo MQTT](https://fmartinou.github.io/teleinfo2mqtt) (starting with 3.0.0)
- [Tydom2MQTT](https://fmartinou.github.io/tydom2mqtt/)
- [Tydom2MQTT](https://tydom2mqtt.github.io/tydom2mqtt/)
- [What's up Docker?](https://fmartinou.github.io/whats-up-docker/) (starting with 3.5.0)
- [WyzeSense2MQTT](https://github.com/raetha/wyzesense2mqtt)
- [Xiaomi DaFang Hacks](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks)
@ -1433,7 +1433,7 @@ Note that MQTT device payloads often contain information for updating multiple e
### The last reported state attribute
Because MQTT state updates are often repeated frequently, even when no actual changes exist, it is up to the MQTT subscriber to determine whether a status update was received. If the latest update is missed, it might take some time before the next one arrives. If a retained payload exists at the broker, that value will be replayed first, but it will be an update of a previous last state.
Because MQTT state updates are often repeated frequently, even when no actual changes exist, it is up to the MQTT subscriber to determine whether a status update was received. If the latest update is missed, it might take some time before the next one arrives. If a retained payload exists at the broker, that value will be replayed first, but it will be an update of a previous last state.
MQTT devices often continuously generate numerous state updates. MQTT does not update `last_reported` to avoid impacting system stability unless `force_update` is set. Alternatively, an MQTT sensor can be created to measure the last update.

View File

@ -35,3 +35,100 @@ This integration has the following Nextcloud Server prerequisites:
- (Recommended) A Nextcloud App password should be generated for use in Home Assistant (__*Nextcloud*__ > __*Settings*__ > __*Personal*__ > __*Security*__ > __*Devices & sessions*__ > __*Create new app password*__)
{% include integrations/config_flow.md %}
## Sensors
For each entry, the integration will create the following {% term sensors %}:
| Sensor | Enabled by default |
| ------ | ------------------ |
| Amount of active users last 5 minutes | ✅ |
| Amount of active users last day | ✅ |
| Amount of active users last hour | ✅ |
| Amount of files | ✅ |
| Amount of group shares | ✅ |
| Amount of link shares | ✅ |
| Amount of local storages | ✅ |
| Amount of mail shares | ✅ |
| Amount of other storages | ✅ |
| Amount of passwordless link shares | ✅ |
| Amount of room shares | ✅ |
| Amount of shares | ✅ |
| Amount of shares received | ✅ |
| Amount of shares sent | ✅ |
| Amount of storages | ✅ |
| Amount of storages at home | ✅ |
| Amount of user | ✅ |
| Amount of user shares | ✅ |
| Apps installed | ✅ |
| Avatars enabled | ✅ |
| CPU load last 1 minute | ✅ |
| CPU load last 15 minutes | ✅ |
| CPU load last 5 minutes | ✅ |
| Cache TTL | ❌ |
| Cache expunges | ❌ |
| Cache memory | ❌ |
| Cache memory size | ✅ |
| Cache number of entries | ❌ |
| Cache number of hits | ❌ |
| Cache number of inserts | ❌ |
| Cache number of misses | ❌ |
| Cache number of slots | ❌ |
| Cache start time | ❌ |
| Database size | ✅ |
| Database type | ✅ |
| Database version | ✅ |
| Debug enabled | ✅ |
| Filelocking enabled | ✅ |
| Free memory | ✅ |
| Free space | ✅ |
| Free swap memory | ✅ |
| Interned buffer size | ❌ |
| Interned free memory | ❌ |
| Interned number of strings | ❌ |
| Interned used memory | ❌ |
| JIT active | ❌ |
| JIT buffer free | ❌ |
| JIT buffer size | ❌ |
| JIT enabled | ❌ |
| JIT kind | ❌ |
| JIT opt flags | ❌ |
| JIT opt level | ❌ |
| Opcache blacklist miss ratio | ❌ |
| Opcache blacklist misses | ❌ |
| Opcache cached keys | ❌ |
| Opcache cached scripts | ❌ |
| Opcache current wasted percentage | ❌ |
| Opcache free memory | ❌ |
| Opcache hash restarts | ❌ |
| Opcache hit rate | ❌ |
| Opcache hits | ❌ |
| Opcache last restart time | ❌ |
| Opcache manual restarts | ❌ |
| Opcache max cached keys | ❌ |
| Opcache misses | ❌ |
| Opcache out of memory restarts | ❌ |
| Opcache start time | ❌ |
| Opcache used memory | ❌ |
| Opcache wasted memory | ❌ |
| PHP max execution time | ✅ |
| PHP memory limit | ✅ |
| PHP upload maximum filesize | ✅ |
| PHP version | ✅ |
| Previews enabled | ✅ |
| SMA available memory | ❌ |
| SMA number of segments | ❌ |
| SMA segment size | ❌ |
| System memcache distributed | ❌ |
| System memcache local | ❌ |
| System memcache locking | ❌ |
| System theme | ✅ |
| System version | ✅ |
| Total memory | ✅ |
| Total swap memory | ✅ |
| Updates available | ✅ |
| Webserver | ✅ |
## Update entity
An {% term update %} entity will be created for each entry.

View File

@ -27,6 +27,7 @@ This integration allows you to connect the following controllers:
- Russound MBX-PRE
- Russound MBX-AMP
- Russound ACA-E5
- Russound MCA-C3
- Russound MCA-C5
- Russound MCA-66

View File

@ -27,7 +27,6 @@ Connecting to the Russound device is only possible by TCP, you can make use of a
This integration allows you to connect the following controllers:
- Russound ACA-E5
- Russound CAS44
- Russound CAA66
- Russound CAM6.6

View File

@ -54,6 +54,10 @@ payload:
description: The payload to send with a POST request. Depends on the service, but usually formed as JSON.
required: false
type: string
payload_template:
description: The payload to send with a POST request with template support.
required: false
type: template
verify_ssl:
description: Verify the SSL certificate of the endpoint.
required: false

View File

@ -29,7 +29,7 @@ library from Home Assistant.
- Spotify compatible playback [source](#selecting-output-source) device
- A Spotify Developer application. Instructions for that are in
the next step.
### Create a Spotify application
For Home Assistant to communicate with Spotify, we need to create
@ -45,17 +45,17 @@ to allow you to log in with your Spotify account.
3. Select the [**Create app**](https://developer.spotify.com/dashboard/create) button in the top right.
![Spotify Developer Dashboard](/images/integrations/spotify/create-spotify-application.png)
![Spotify Developer Dashboard](/images/integrations/spotify/create-spotify-application.png)
4. Enter a name and description; feel free to use any name and description you like.
Set the _"Redirect URI"_ to the following:
`https://my.home-assistant.io/redirect/oauth`
- Set the _"Redirect URI"_ to the following:
Please copy and paste the exact URL above. You **do not** have to change it.
`https://my.home-assistant.io/redirect/oauth`
![Creating a Spotify Application](/images/integrations/spotify/create-spotify-application.png)
- Please copy and paste the exact URL above. You **do not** have to change it.
![Creating a Spotify Application](/images/integrations/spotify/create-spotify-application.png)
5. Select Web API.
@ -65,22 +65,22 @@ to allow you to log in with your Spotify account.
7. Spotify will now show the new application you have just created. Select
the **Settings** button in the top right to configure it.
![Edit the Spotify Application settings](/images/integrations/spotify/edit-settings.png)
![Edit the Spotify Application settings](/images/integrations/spotify/edit-settings.png)
8. Before we can start configuring Home Assistant, we need to grab the application
credentials Home Assistant needs.
Select on the **View client secret** button to reveal the client secret.
- Select on the **View client secret** button to reveal the client secret.
![Show the client secret of the Spotify Application](/images/integrations/spotify/show-client-secret.png)
![Show the client secret of the Spotify Application](/images/integrations/spotify/show-client-secret.png)
9. The _"Client ID"_ and _"Client secret"_ are the two pieces of information
that Home Assistant needs to communicate with Spotify and is what we
call: Application credentials.
![Get the application credentials from the Spotify Application](/images/integrations/spotify/application-credentials.png)
![Get the application credentials from the Spotify Application](/images/integrations/spotify/application-credentials.png)
You will need the _"Client ID"_ and _"Client secret"_ during the Spotify
- You will need the _"Client ID"_ and _"Client secret"_ during the Spotify
integration setup process in Home Assistant.
You can now continue with the next chapter to configure the Spotify integration
@ -103,7 +103,7 @@ Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://hom
## Data updates
The integration polls at least every 30 seconds.
The integration {% term polling polls %} at least every 30 seconds.
If the track that is playing ends in less than 30 seconds, the integration will poll again after the track has ended to update the state again.
## Using multiple Spotify accounts

View File

@ -120,6 +120,17 @@ sql:
type: template
{% endconfiguration %}
## Data updates
By default, the integration executes the SQL query to update the sensor every 30 seconds.
If you wish to update at a different interval, you can disable the automatic refresh in the integrations system options (**Enable polling for updates**) and create your own automation with your desired frequency.
For more detailed steps on how to define a custom interval, follow the procedure below.
### Defining a custom polling interval
{% include common-tasks/define_custom_polling.md %}
## Information
See [supported engines](/integrations/recorder/#custom-database-engines) for which you can connect with this integration.

View File

@ -352,7 +352,7 @@ cover:
type: map
keys:
state:
description: Defines a template to get the state of the cover. Valid output values from the template are `open`, `opening`, `closing` and `closed` which are directly mapped to the corresponding states. In addition, `true` is valid as a synonym to `open` and `false` as a synonym to `closed`. If [both a `value_template` and a `position_template`](#combining-value_template-and-position_template) are specified, only `opening` and `closing` are set from the `value_template`. If the template produces a `None` value the state will be set to `unknown`.
description: Defines a template to get the state of the cover. Valid output values from the template are `open`, `opening`, `closing` and `closed` which are directly mapped to the corresponding states. In addition, `true` is valid as a synonym to `open` and `false` as a synonym to `closed`. If [both a `state` and a `position` template](/integrations/cover.template/#combining-value_template-and-position_template) are specified, only `opening` and `closing` are set from the `state` template. If the template produces a `None` value the state will be set to `unknown`.
required: false
type: template
position:

View File

@ -46,7 +46,7 @@ Screenshot showing the state of a text-to-speech entity in the developer tools.
Modern platforms will create entities under the `tts` domain, where each entity represents one text-to-speech service provider. These entities may be used as targets for the `tts.speak` action.
the `tts.speak` action supports `language` and on some platforms also `options` for settings, e.g., _voice, motion, speed, etc_. The text that should be spoken is set with `message`, and the media player that should output the sound is selected with `media_player_entity_id`.
The `tts.speak` action supports `message`, `language`, `cache`, `media_player_entity_id` and `options` options. The text that should be spoken is set with `message`, and the media player that should output the sound is selected with `media_player_entity_id`. The language can be set with `language`, using the format required by the target entity platform (refer to specific platform documentation). See [cache section](#cache) for information on `cache` option. Additional settings can be specified with the `options` option, which include preferred audio settings (see [preferred audio settings](#preferred-audio-settings) section for more info) and further settings of the target entity platform, e.g., _voice, motion, speed, etc._ (refer to specific platform documentation for any supported settings).
```yaml
action: tts.speak
@ -59,7 +59,7 @@ data:
### Action say (legacy)
The `say` action supports `language` and on some platforms also `options` for settings, e.g., _voice, motion, speed, etc_. The text that should be spoken is set with `message`. Since release 0.92, action name can be defined in configuration `service_name` option.
The `say` action supports `message`, `language`, `cache` and `options` options. The text that should be spoken is set with `message`. The language can be set with `language`, using the format required by the platform (refer to specific platform documentation). See [cache section](#cache) for information on `cache` option. Additional settings can be specified with the `options` option, which include preferred audio settings (see [preferred audio settings](#preferred-audio-settings) section for more info) and further settings of the target platform, e.g., _voice, motion, speed, etc._ (refer to specific platform documentation for any supported settings). Since release 0.92, action name can be defined in configuration `service_name` option.
Say to all `media_player` entities:
@ -105,13 +105,40 @@ data:
## Cache
The integration cache can be controlled with the `cache` option in the action to `speak` or `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period.
The integration cache can be controlled with the `cache` option in the action to `speak` or `say`, setting it to `True` to enable it (default), or `False` to disable it. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period.
## Preferred audio settings
Each TTS platform produces audio samples in different formats, not always compatible with every media player. TTS integration building block supports a way to configure preferred target audio format through `options` option of `speak` or `say` actions.
TTS integration building block uses [FFmpeg integration](/integrations/ffmpeg) to perform audio transcoding when target entity platform does not support one or all the specified preferred audio format settings (refer to specific platform documentation for any supported setting with related supported values).
Available preferred audio settings, all optional, are:
- `preferred_format`: Set the audio format. When not supported by the target entity platform, the value is a file extension like `wav`, `mp3`, `ogg`, etc., among ones supported by FFmpeg tool for output files.
- `preferred_sample_rate`: Set the sample rate. When not supported by the target entity platform, the value is in Hz as a number, among ones supported by the `-ar` parameter of FFmpeg tool.
- `preferred_sample_channels`: Set the number of audio channels. When not supported by the target entity platform, the value is a number among ones supported by the `-ac` parameter of FFmpeg tool.
- `preferred_sample_bytes`: Set the audio bit sampling. When not supported by the target entity platform, can only be set to `2` to use 16-bit audio sampling (any other value is ignored).
Example to produce an MP3 audio at 22050Hz:
```yaml
action: tts.speak
target:
entity_id: tts.example
data:
media_player_entity_id: media_player.kitchen
message: "May the force be with you."
options:
preferred_format: mp3
preferred_sample_rate: 22050
```
## REST API
### POST `/api/tts_get_url`
Returns a URL to the generated TTS file. The `engine_id` or `platform` parameter together with `message` are required.
Returns a URL to the generated TTS file. The `engine_id` (which is the entity id) or `platform` parameter together with `message` are required. Additional parameters `cache`, `language` and `options` are supported, as JSON attributes, as described for `speak` action.
```json
{
@ -166,3 +193,9 @@ These requirements present the following problems, all of which create problems
- If you are using SSL (e.g., `https://yourhost.example.org/...`) then you _must_ use the hostname in the certificate (e.g., `external_url: https://yourhost.example.org`). You cannot use an IP address since the certificate won't be valid for the IP address, and the cast device will refuse the connection.
The recommended way to overcome these obstacles is to not manually configure a local Home Assistant URL.
### Partial, corrupted or no audio
Some media players could reproduce only partial, corrupted or no audio at all when the audio format is not fully supported. In such cases it is required to experiment with different combinations of audio formats, channels, sample rates and bits using [preferred audio settings](#preferred-audio-settings) options.
For example, some Google Cast devices skip initial audio part when the audio is sampled at 22050Hz, and to fix the problem it is required to set the `preferred_sample_rate` setting in the `options` option to `44100`.

View File

@ -82,7 +82,7 @@ For more Z-Wave term definitions, refer to the [terminology section](#z-wave-ter
To run a Z-Wave network, you need the following elements:
- A [supported Z-Wave controller](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules). First-time user? For recommendations on what to buy, go [here](#which-z-wave-controller-should-i-buy).
- A running Z-Wave JS server.
- A running [Z-Wave JS server](#setting-up-a-z-wave-js-server).
- An installed Z-Wave integration in Home Assistant.
### Setting up a Z-Wave JS server
@ -155,6 +155,8 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta
### Removing a device from the Z-Wave network
Do this before using the device with another controller, or when you don't use the device anymore. It removes the device from the Z-Wave network stored on the controller. It also removes the device and all its entities from Home Assistant. You can not join a device to a new network if it is still paired with a controller.
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
2. Select the **Z-Wave** integration. Then, select **Configure**.
3. Select **Remove device**, then **Start exclusion**.
@ -162,6 +164,23 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta
4. Put the device you want to remove in exclusion mode. Refer to its manual how this is done.
5. The UI should confirm that the device was removed and the device and entities will be removed from Home Assistant.
## Migrating a Z-Wave network to a new controller
Do this if you have an existing Z-Wave network and want to use a new controller. This will reset your current controller (remove all network information from it) and remove the controller from Home Assistant. The Z-Wave integration with all its entities will stay in Home Assistant. The new controller is added to Home Assistant and paired with the existing network.
To migrate a Z-Wave network to a new controller, follow these steps:
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
2. Select the **Z-Wave** integration. Then, select **Configure**.
3. Under **Backup and restore**, select **Migrate controller**.
4. Select **Migrate to a new controller**.
- To confirm device reset, select **Submit**.
- **Info**: This will initiate a backup of the network information and factory reset the controller. All the stored network information will be removed.
5. When the **Unplug your controller** dialog shows up, unplug your old controller.
- Connect the new controller.
- Confirm that you connected the new controller by selecting **Submit**.
6. Follow the steps on screen.
## Special Z-Wave entities
The Z-Wave integration provides several special entities, some of which are available for every Z-Wave device, and some of which are conditional based on the device.
@ -1062,3 +1081,25 @@ No further action is required and the SmartStart product will be added automatic
### Terminology mapping table
For some of the concepts, the terminology used in Home Assistant does not correspond to the terminology used in Z-Wave documentation. Refer to the [terminology mapping table](#z-wave-terminology-and-home-assistant) for a list of term equivalents.
## Removing Z-Wave JS from Home Assistant
This removes all paired Z-Wave devices and their entities, the Z-Wave JS add-on, and the Z-Wave integration from Home Assistant.
### To remove Z-Wave JS from Home Assistant
1. [Remove the device from your Z-Wave network](/integrations/zwave_js/#removing-a-device-from-the-z-wave-network).
- Do this for each device that is joined to your network so that it is no longer paired to the controller.
- You cannot add a device to a new controller while it is still paired with an old one.
- Alternatively, you can factory reset each device. Refer to the device manual to see how this is done.
- This usually involves finding the device in your household and pressing a button.
2. Remove the Z-Wave integration.
- Go to {% my integrations title="**Settings** > **Devices & services**" %} and select the integration card.
- Next to the integration entry, select the three-dot {% icon "mdi:dots-vertical" %} menu.
- Select **Delete**.
3. If it hasn't been deleted automatically, remove the Z-Wave JS add-on.
- Go to {% my supervisor_addon addon="core_zwave_js" title="**Settings** > **Add-ons** > **Z-Wave JS**" %}.
- Select **Uninstall**.
- Decide whether to also delete the data related to the add-on or whether to keep it.
4. Done. Z-Wave JS is now completely removed from your Home Assistant server.
- You can now use your Z-Wave devices and controller on a new server.

View File

@ -13,11 +13,11 @@ This section provides tasks that do not depend on a specific Home Assistant inst
If you want to define a specific interval at which your device is being polled for data, you can disable the default polling interval and create your own polling automation.
## What is data polling?
### What is data polling?
Data polling is the process of querying a device or service at regular intervals to check for updates or retrieve data. By defining a custom polling interval, you can control how frequently your system checks for new data, which can help optimize performance and reduce unnecessary network traffic.
## Why use an automation instead of changing the integration's polling configuration?
### Why use an automation instead of changing the integration's polling configuration?
Creating an automation for polling gives you more flexibility on when to poll:

View File

@ -31,7 +31,9 @@ If you have the {% term "Home Assistant Operating System" %} installed, you rece
- {% term "Home Assistant Operating System" %}
- {% term "Home Assistant Supervisor" %}
- {% term "Home Assistant Core" %}
- Add-ons, if you have any installed
- {% term "Add-ons" %}, if you have any installed
Each of these components needs to be updated separately.
### Updating the Home Assistant Operating System
@ -39,8 +41,9 @@ Updates of the {% term "Home Assistant Operating System" %} are independent of o
#### Prerequisites
- [Backup](/common-tasks/general/#backups) your installation.
- Make sure the backup is downloaded and stored outside of the system.
- [Backup your installation](/common-tasks/general/#backups).
- Make sure the backup is stored on a [backup location](/common-tasks/general/#defining-backup-locations) outside of the device where Home Assistant is installed.
- For example, if Home Assistant is installed on [Home Assistant Green](https://www.home-assistant.io/green), make sure it is stored on [Home Assistant Cloud](/common-tasks/general/#about-the-backup-storage-on-home-assistant-cloud) or another location.
- So that you can [restore from that backup](/common-tasks/general/#restoring-a-backup) in case there is an issue with the system.
#### To update the Home Assistant Operating System
@ -52,9 +55,16 @@ Updates of the {% term "Home Assistant Operating System" %} are independent of o
1. Open the **Settings** panel.
2. On the top you will be presented with an update notification.
_If you do not see that notification, in the top right, select the three dots menu and select **Check for updates**"._
- **Troubleshooting**: If you do not see that notification:
- In the top right corner, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Check for updates**.
- Go to {% my updates title="**System** > **Updates**" %}.
- Select the update notification.
- Select the cogwheel {% icon "mdi:cog-outline" %}, then set **Visible** to active.
3. Open the notification for the component you want to update.
4. If you want to update the system first (recommended), enable the backup toggle.
5. Select **Update**.
6. Check if there are any repair issues and check the logs to see if there are any issues with your configuration that need to be addressed.
- title: Using the CLI
content: |
@ -66,6 +76,8 @@ Updates of the {% term "Home Assistant Operating System" %} are independent of o
{% endtabbed_block %}
{% details "Advanced: changing the boot slot used during the update" %}
#### About boot slots used during the update
The {% term "Home Assistant Operating System" %} uses two boot slots. On first installation, boot slot A is used. After that, on each Operating System update, the other boot slot is updated and reboot is triggered. On that reboot, the system boots from the other boot slot (A ➝ B ➝ A,...). When booting fails, the system automatically uses the previous boot slot, so that it boots from the last working operating system.
@ -89,6 +101,8 @@ You can manually define that the previous boot slot is used. This can be useful
Alternatively, if the Operating Systems runs on a platform that uses the GRUB bootloader, a boot menu is presented early in the boot. The alternative boot slot can be selected here, marking it active for future boots if the following boot attempt is successful.
{% enddetails %}
### Updating Home Assistant Core
{% include common-tasks/update.md %}

View File

@ -485,8 +485,7 @@ dark_header: true
</div>
<div class="heading-wrapper-min">
<p>
Home Assistant Green is the easiest way to run Home Assistant for the
low price of $99. Try out Home Assistant for your smart home or share
Home Assistant Green is the easiest way to run Home Assistant. Try out Home Assistant for your smart home or share
the love with family and friends.
</p>
<p class="small-legal-text">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -72,7 +72,7 @@ You are in the onboarding procedure, but the process seems stuck at the step **P
### Resolution
1. Select the pulsing blue dot to view the log files.
1. Select **Show details** to view the log files.
- The log files might provide more information on the current status.
2. Make sure your network has internet access.
- During first startup, time will be synchronized. Ensure NTP is allowed in your network.

View File

@ -12,4 +12,4 @@ with the Supervisor is not supported.
## The solution
You need to reinstall the host operating system that runs the Supervisor,
for instructions on how to prosed with that [have a look here](/more-info/unsupported/os).
for instructions on how to proceed with that [have a look here](/more-info/unsupported/os).

View File

@ -208,7 +208,7 @@ frontpage_image: /images/frontpage/voice-pe-frontpage.jpg
<div class="wrapper">
<div class="content">
<div class="subtitle-medium">Preview the future of voice for just</div>
<div class="fs-price">$59<span>*</span></div>
<div class="fs-price">&#x24;69 / &#8364;59 <span>*</span></div>
</div>
</div>
<div class="wrapper outer">
@ -217,7 +217,7 @@ frontpage_image: /images/frontpage/voice-pe-frontpage.jpg
alt="Front view of the Voice Preview Edition showing the speaker holes">
<div class="wrapper">
<a class="button secondary buy">Buy now</a>
<small>* Recommended MSRP. Pricing subject to individual retailers.</small>
<small>* Recommended MSRP. Prices differ between regions due to varying local market costs and conditions, and subject to individual retailers.</small>
</div>
</div>
</div>

View File

@ -174,14 +174,19 @@ article.page h3 {
--subtitle-medium-mobile: 24;
--price: 170;
--price-mobile: 120;
--price-mobile: 60;
--wrapper-radius: 0px;
isolation: isolate;
position: relative;
}
@media only screen and (min-width: 875px) {
:root{
--price-mobile: 120;
}
}
@media only screen and (min-width: 2180px) {
.vpe-main {
--wrapper-radius: 40px;
@ -2881,7 +2886,7 @@ section#hero .bg-gradient {
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
margin-bottom: -20px;
margin-bottom: -10px;
display: flex;
margin-top: 8px;
}
@ -4894,6 +4899,11 @@ section#hero .bg-gradient {
}
}
@media (min-width: 940px) {
.vpe-main #pricing .fs-price {
margin-bottom: -10px;
}
}
@media (min-width: 940px) {
.vpe-main {
--columns: 11;
@ -5190,7 +5200,7 @@ section#hero .bg-gradient {
}
.vpe-main #pricing .fs-price {
margin-bottom: -26px;
margin-bottom: -20px;
margin-top: 20px;
}

View File

@ -30,7 +30,7 @@ As for the rest of Home Assistant core functionalities, Assist can be personaliz
<lite-youtube videoid="XF53wUbeLxA" videotitle="Voice at Home Assistant"></lite-youtube>
## Getting Started
## Getting started
When you configure voice assistant hardware made for Home Assistant, it will use a wizard to help you configure your system and get started to use voice.
@ -41,7 +41,7 @@ In case your hardware does not support our wizard, do not worry. Here are two de
- [I plan to process my voice locally](/voice_control/voice_remote_local_assistant/)
- [I plan to use Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/) (recommended as it is the simplest)
## Expand and Experiment
## Expand and experiment
Once your setup is up and running and you follow the [best practices](/voice_control/best_practices), check all the possibilities we found for [Expanding your Assist setup](/voice_control/expanding_assist), and further experiment with different setups like [wake words](/voice_control/about_wake_word/). Do you want to talk to Super Mario? Or another figure? If you want Assist to respond in a fun way, you can create an assistant with an [AI personality](/voice_control/assist_create_open_ai_personality/).

View File

@ -70,18 +70,15 @@ Before you can use this device with Home Assistant, you need to install a bit of
![Set up ESPHome](/images/assist/esp32-atom-flash-07.png)
6. To add the newly discovered device, select the ATOM Echo from the list.
- Add your ATOM Echo to a room and select **Finish**.
7. You should now see the **ESPHome** integration.
![New ESPHome device discovered](/images/assist/m5stack-atom-echo-discovered-33.png)
8. Select the **ESPHome** integration. Under **Devices**, you should see the **M5Stack Atom Echo** listed.
![ATOM Echo discovered](/images/assist/m5stack-atom-echo-discovered-new-03.png)
- Your ATOM Echo is connected to Home Assistant over Wi-Fi. You can now move it to any place in your home with a USB power supply.
9. Congratulations! You can now voice control Home Assistant. Now give some commands.
6. This starts the a wizard to customize the your voice assistant.
- Follow the wizard steps to define the wake word and choose the voice.
- When you are finished, select **Done**.
7. Your ATOM Echo is connected to Home Assistant over Wi-Fi. You can now move it to any place in your home with a USB power supply.
8. Congratulations! You can now voice control Home Assistant. Now give some commands.
## Controlling Home Assistant over the ATOM Echo
1. Say your wake word. For this tutorial, use "OK, Nabu".
1. Say the wake word you configured. For example, use "OK, Nabu".
- Wait for the LED to start blinking in blue.
2. Say a [supported voice command](/voice_control/builtin_sentences/). For example, *Turn off the light in the kitchen*.
- While you are speaking, the blue LED keeps pulsing.
@ -93,8 +90,8 @@ Before you can use this device with Home Assistant, you need to install a bit of
3. Your command is not supported? Add your own commands using [a sentence trigger](/voice_control/custom_sentences/).
4. You find ATOM Echo takes too long to start processing your command?
- Adjust the silence detection settings.
- Go to {% my integrations title="**Settings** > **Devices & Services**" %} and select the **ESPHome** integration.
- Under **M5Stack ATOM Echo**, select **1 device**. Under **Configuration**, change the **Finish speaking detection**.
- Go to {% my integrations title="**Settings** > **Devices & services**" %} and select the **ESPHome** integration.
- Under **M5Stack ATOM Echo**, select **1 device**. Under **Configuration**, change the **Finished speaking detection**.
- This setting defines how much silence is needed for Assist to find you're done speaking and it can start processing your command.
![Open My link](/images/assist/esp32-atom_silence_detection_01.png)
@ -104,3 +101,21 @@ Before you can use this device with Home Assistant, you need to install a bit of
Are things not working as expected?
- Checkout the [general troubleshooting section for Assist](/voice_control/troubleshooting/).
## Removing the Wi-Fi credentials from the ATOM Echo
If you no longer use the device or want to pass it on to someone else, you can remove the Wi-Fi credentials that are stored on the device.
1. Make sure this page is opened in a Chromium-based browser on a desktop. It does not work on a tablet or phone.
- Select the **Connect** button below. If your browser does not support web serial, you will see a warning instead of a button.
<script type="module" src="https://unpkg.com/esp-web-tools@10/dist/web/install-button.js?module"></script>
<esp-web-install-button manifest="https://firmware.esphome.io/wake-word-voice-assistant/m5stack-atom-echo/manifest.json"></esp-web-install-button>
2. To connect the ATOM Echo to your computer, follow these steps:
- In the pop-up window, view the available ports.
- Plug the USB-C cable into the ATOM Echo and connect it to your computer.
- In the pop-up window, there should now appear a new entry. Select this USB serial port and select **Connect**.
3. In the dialog, select **Erase user data**.
- **Result**: Your Wi-Fi credentials are deleted from the device.
- The firmware stays on the device.