Merge branch 'current' into next

This commit is contained in:
Franck Nijhof 2025-07-02 16:58:23 +00:00
commit f47e1e1540
No known key found for this signature in database
GPG Key ID: AB33ADACE7101952
84 changed files with 3694 additions and 781 deletions

View File

@ -1,6 +1,20 @@
{
"filters": {
"comments": true
"comments": true,
"allowlist": {
"allow": [
"2fa:",
"alexa:",
"homeassistant:",
"homekit:",
"led:",
"sms:",
"sql:",
"ssl:",
"twitter:",
"url:"
]
}
},
"rules": {
"common-misspellings": {

View File

@ -37,11 +37,11 @@ source/_integrations/airvisual_pro.markdown @bachya
source/_integrations/airzone.markdown @Noltari
source/_integrations/airzone_cloud.markdown @Noltari
source/_integrations/alarm_control_panel.markdown @home-assistant/core
source/_integrations/alarm_control_panel.template.markdown @home-assistant/core
source/_integrations/alert.markdown @home-assistant/core @frenck
source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy @jbouwh
source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy @jbouwh
source/_integrations/amazon_devices.markdown @chemelli74
source/_integrations/alexa_devices.markdown @chemelli74
source/_integrations/altruist.markdown @airalab @LoSk-p
source/_integrations/amazon_polly.markdown @jschlyter
source/_integrations/amberelectric.markdown @madpilot
source/_integrations/ambient_network.markdown @thomaskistler
@ -174,7 +174,6 @@ source/_integrations/cookidoo.markdown @miaucl
source/_integrations/coolmaster.markdown @OnFreund
source/_integrations/counter.markdown @fabaff
source/_integrations/cover.markdown @home-assistant/core
source/_integrations/cover.template.markdown @home-assistant/core
source/_integrations/cozytouch.markdown @imicknl
source/_integrations/cpuspeed.markdown @fabaff
source/_integrations/cribl.markdown @Bre77
@ -193,7 +192,7 @@ source/_integrations/delmarva.markdown @tronikos
source/_integrations/deluge.markdown @tkdrob
source/_integrations/demo.markdown @home-assistant/core
source/_integrations/denonavr.markdown @ol-iver @starkillerOG
source/_integrations/derivative.markdown @afaucogney
source/_integrations/derivative.markdown @afaucogney @karwosts
source/_integrations/devialet.markdown @fwestenberg
source/_integrations/device_automation.markdown @home-assistant/core
source/_integrations/device_tracker.markdown @home-assistant/core
@ -225,6 +224,7 @@ source/_integrations/duotecno.markdown @cereal2nd
source/_integrations/duquesne_light.markdown @tronikos
source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @andarotajo
source/_integrations/dynalite.markdown @ziv1234
source/_integrations/eafm.markdown @Jc2k
source/_integrations/eastron.markdown @DCSBL
source/_integrations/easyenergy.markdown @klaasnicolaas
source/_integrations/ecoforest.markdown @pjanuario
@ -273,7 +273,6 @@ source/_integrations/evohome.markdown @zxdavb
source/_integrations/ezviz.markdown @RenierM26
source/_integrations/faa_delays.markdown @ntilley905
source/_integrations/fan.markdown @home-assistant/core
source/_integrations/fan.template.markdown @home-assistant/core
source/_integrations/fastdotcom.markdown @rohankapoorcom @erwindouna
source/_integrations/feedreader.markdown @mib1185
source/_integrations/fibaro.markdown @rappenze
@ -438,6 +437,7 @@ source/_integrations/iotawatt.markdown @gtdiehl @jyavenard
source/_integrations/iotty.markdown @shapournemati-iotty
source/_integrations/iperf3.markdown @rohankapoorcom
source/_integrations/ipma.markdown @dgomes
source/_integrations/ipp.markdown @ctalkington
source/_integrations/iqvia.markdown @bachya
source/_integrations/irish_rail_transport.markdown @ttroy50
source/_integrations/iron_os.markdown @tr4nt0r
@ -496,10 +496,10 @@ source/_integrations/lg_thinq.markdown @LG-ThinQ-Integration
source/_integrations/lidarr.markdown @tkdrob
source/_integrations/lifx.markdown @Djelibeybi
source/_integrations/light.markdown @home-assistant/core
source/_integrations/light.template.markdown @home-assistant/core
source/_integrations/linak.markdown @abmantis
source/_integrations/linear_garage_door.markdown @IceBotYT
source/_integrations/linkedgo.markdown @balloob @bieniu @thecode @chemelli74 @bdraco
source/_integrations/linkplay.markdown @Velleman
source/_integrations/linux_battery.markdown @fabaff
source/_integrations/linx.markdown @starkillerOG
source/_integrations/litejet.markdown @joncar
@ -509,7 +509,6 @@ source/_integrations/local_calendar.markdown @allenporter
source/_integrations/local_ip.markdown @issacg
source/_integrations/local_todo.markdown @allenporter
source/_integrations/lock.markdown @home-assistant/core
source/_integrations/lock.template.markdown @home-assistant/core
source/_integrations/logbook.markdown @home-assistant/core
source/_integrations/logger.markdown @home-assistant/core
source/_integrations/london_underground.markdown @jpbede
@ -573,6 +572,7 @@ source/_integrations/motion_blinds.markdown @starkillerOG
source/_integrations/motionblinds_ble.markdown @LennP @jerrybboy
source/_integrations/motionblinds_matter.markdown @home-assistant/matter
source/_integrations/motioneye.markdown @dermotduffy
source/_integrations/motionmount.markdown @laiho-vogels
source/_integrations/mqtt.markdown @emontnemery @jbouwh @bdraco
source/_integrations/msteams.markdown @peroyvind
source/_integrations/mullvad.markdown @meichthys
@ -683,6 +683,7 @@ source/_integrations/ping.markdown @jpbede
source/_integrations/piper.markdown @balloob @synesthesiam
source/_integrations/pitsos.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
source/_integrations/plaato.markdown @JohNan
source/_integrations/playstation_network.markdown @jackjpowell @tr4nt0r
source/_integrations/plex.markdown @jjlawren
source/_integrations/plugwise.markdown @CoMPaTech @bouwew
source/_integrations/plum_lightpad.markdown @ColinHarrington @prystupa
@ -743,7 +744,7 @@ source/_integrations/recovery_mode.markdown @home-assistant/core
source/_integrations/refoss.markdown @ashionky
source/_integrations/rehlko.markdown @bdraco @peterager
source/_integrations/remote.markdown @home-assistant/core
source/_integrations/remote_calendar.markdown @Thomas55555
source/_integrations/remote_calendar.markdown @Thomas55555 @allenporter
source/_integrations/renault.markdown @epenet
source/_integrations/renson.markdown @jimmyd-be
source/_integrations/reolink.markdown @starkillerOG
@ -807,7 +808,6 @@ source/_integrations/sfr_box.markdown @epenet
source/_integrations/sharkiq.markdown @JeffResc @funkybunch
source/_integrations/shell_command.markdown @home-assistant/core
source/_integrations/shelly.markdown @balloob @bieniu @thecode @chemelli74 @bdraco
source/_integrations/shelly_zwave.markdown @home-assistant/z-wave
source/_integrations/shodan.markdown @fabaff
source/_integrations/sia.markdown @eavanvalkenburg
source/_integrations/siemens.markdown @DavidMStraub @Diegorro98 @MartinHjelmare
@ -841,7 +841,6 @@ source/_integrations/smarttub.markdown @mdz
source/_integrations/smarty.markdown @z0mbieprocess
source/_integrations/smhi.markdown @gjohansson-ST
source/_integrations/smlight.markdown @tl-sl
source/_integrations/sms.markdown @ocalvo
source/_integrations/smud.markdown @tronikos
source/_integrations/snapcast.markdown @luar123
source/_integrations/snmp.markdown @nmaggioni
@ -882,7 +881,6 @@ source/_integrations/swepco.markdown @tronikos
source/_integrations/swiss_hydrological_data.markdown @fabaff
source/_integrations/swiss_public_transport.markdown @fabaff @miaucl
source/_integrations/switch.markdown @home-assistant/core
source/_integrations/switch.template.markdown @home-assistant/core
source/_integrations/switch_as_x.markdown @home-assistant/core
source/_integrations/switchbee.markdown @jafar-atili
source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski @zerzhang
@ -907,6 +905,7 @@ source/_integrations/tasmota.markdown @emontnemery
source/_integrations/tautulli.markdown @ludeeus @tkdrob
source/_integrations/technove.markdown @Moustachauve
source/_integrations/tedee.markdown @patrickhilker @zweckj
source/_integrations/telegram_bot.markdown @hanwg
source/_integrations/tellduslive.markdown @fredrike
source/_integrations/template.markdown @Petro31 @home-assistant/core
source/_integrations/tesla_fleet.markdown @Bre77
@ -972,9 +971,9 @@ source/_integrations/usgs_earthquakes_feed.markdown @exxamalte
source/_integrations/utility_meter.markdown @dgomes
source/_integrations/v2c.markdown @dgomes
source/_integrations/vacuum.markdown @home-assistant/core
source/_integrations/vacuum.template.markdown @home-assistant/core
source/_integrations/vallox.markdown @andre-richter @slovdahl @viiru- @yozik04
source/_integrations/valve.markdown @home-assistant/core
source/_integrations/vegehub.markdown @ghowevege
source/_integrations/velbus.markdown @Cereal2nd @brefra
source/_integrations/velux.markdown @Julius2342 @DeerMaximum @pawlizio
source/_integrations/venstar.markdown @garbled1 @jhollowe
@ -1003,7 +1002,6 @@ source/_integrations/watson_tts.markdown @rutkai
source/_integrations/watttime.markdown @bachya
source/_integrations/waze_travel_time.markdown @eifinger
source/_integrations/weather.markdown @home-assistant/core
source/_integrations/weather.template.markdown @home-assistant/core
source/_integrations/weatherflow.markdown @natekspencer @jeeftor
source/_integrations/weatherflow_cloud.markdown @jeeftor
source/_integrations/weatherkit.markdown @tjhorner

View File

@ -159,7 +159,7 @@ GEM
rack-protection (= 4.1.1)
rack-session (>= 2.0.0, < 3)
tilt (~> 2.0)
sorbet-runtime (0.5.12201)
sorbet-runtime (0.5.12216)
stringex (2.8.6)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)

View File

@ -107,9 +107,9 @@ social:
# Home Assistant release details
current_major_version: 2025
current_minor_version: 6
current_patch_version: 3
date_released: 2025-06-24
current_minor_version: 7
current_patch_version: 0
date_released: 2025-07-02
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.

749
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -15,10 +15,11 @@
"remark-lint-prohibited-strings": "^4.0.0",
"remark-lint-unordered-list-marker-style": "^4.0.1",
"remark-stringify": "^11.0.0",
"textlint": "^15.0.1",
"textlint": "^15.1.0",
"textlint-filter-rule-allowlist": "^4.0.0",
"textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^5.0.13"
"textlint-rule-terminology": "^5.2.13"
},
"resolutions": {
"minimist": ">=1.2.5"

View File

@ -2,7 +2,7 @@
type: card
title: "Light card"
sidebar_label: Light
description: "The light card allows you to change the brightness of the light."
description: "The light card allows you to change the brightness of a light."
related:
- docs: /dashboards/actions/
title: Card actions
@ -12,7 +12,7 @@ related:
title: Dashboard cards
---
The light card allows you to change the brightness of the light.
The light card allows you to change the brightness of a light.
<p class='img'>
<img src='/images/dashboards/light_card.png' alt='Screenshot of the Light card'>

View File

@ -2,7 +2,7 @@
type: card
title: "Sensor card"
sidebar_label: Sensor
description: "The sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time."
description: "The sensor card gives you a quick overview of a sensor's state with an optional graph to visualize change over time."
related:
- docs: /integrations/frontend/
title: Themes
@ -10,7 +10,7 @@ related:
title: Dashboard cards
---
The sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time.
The sensor card gives you a quick overview of a sensor's state with an optional graph to visualize change over time.
<p class='img'>
<img src='/images/dashboards/sensor.png' alt='Screenshot of the sensor card'>

View File

@ -2,7 +2,7 @@
type: card
title: "Tile card"
sidebar_label: Tile
description: "The tile card gives you a quick overview of your entity. The card allows you to toggle the entity, show the more-info dialog, or custom actions."
description: "The tile card gives you a quick overview of an entity. The card allows you to toggle the entity, show the more-info dialog, or custom actions."
related:
- docs: /dashboards/actions/
title: Card actions
@ -12,7 +12,7 @@ related:
title: Dashboard cards
---
The tile card gives you a quick overview of your {% term entity %}. The card allows you to add tap actions, and features to control the entity. You can also select the {% term entity %} to open the more info dialog. A badge is shown for some {% term entities %} like the [climate](/integrations/climate) or [person](/integrations/person) {% term entities %}.
The tile card gives you a quick overview of an {% term entity %}. The card allows you to add tap actions, and features to control the entity. You can also select the {% term entity %} to open the more info dialog. A badge is shown for some {% term entities %} like the [climate](/integrations/climate) or [person](/integrations/person) {% term entities %}.
<p class='img'>
<img src='/images/dashboards/tile_card_tap_action.webp' alt='Screenshot of tile cards'>

View File

@ -61,6 +61,11 @@ name:
description: Overwrites the friendly name.
type: string
default: Entity name
show_current:
required: false
description: Show the current weather conditions above the forecast.
type: boolean
default: true
show_forecast:
required: false
description: Show next hours/days forecast.
@ -70,7 +75,6 @@ forecast_type:
required: true
description: Type of forecast to display, one of `daily`, `hourly` or `twice_daily`.
type: string
default: Automatically selects in order of `daily`, `hourly` and `twice_daily`.
secondary_info_attribute:
required: false
description: Which attribute to display under the temperature.

View File

@ -74,7 +74,7 @@ CREATE TABLE statistics_meta (
unit_of_measurement VARCHAR(255),
has_mean BOOLEAN,
has_sum BOOLEAN,
name VARCHAR(255),
name VARCHAR(255), mean_type INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (id)
)
@ -87,14 +87,6 @@ CREATE TABLE recorder_runs (
PRIMARY KEY (run_id)
)
CREATE TABLE migration_changes (
migration_id VARCHAR(255) NOT NULL,
version SMALLINT NOT NULL,
PRIMARY KEY (migration_id)
)
CREATE TABLE schema_changes (
change_id INTEGER NOT NULL,
schema_version INTEGER,
@ -137,7 +129,6 @@ CREATE TABLE states (
event_id SMALLINT,
last_changed CHAR(0),
last_changed_ts FLOAT,
last_reported_ts FLOAT,
last_updated CHAR(0),
last_updated_ts FLOAT,
old_state_id INTEGER,
@ -149,7 +140,7 @@ CREATE TABLE states (
context_id_bin BLOB,
context_user_id_bin BLOB,
context_parent_id_bin BLOB,
metadata_id INTEGER,
metadata_id INTEGER, last_reported_ts FLOAT,
PRIMARY KEY (state_id),
FOREIGN KEY(old_state_id) REFERENCES states (state_id),
FOREIGN KEY(attributes_id) REFERENCES state_attributes (attributes_id),
@ -169,7 +160,7 @@ CREATE TABLE statistics (
last_reset CHAR(0),
last_reset_ts FLOAT,
state FLOAT,
sum FLOAT,
sum FLOAT, mean_weight FLOAT,
PRIMARY KEY (id),
FOREIGN KEY(metadata_id) REFERENCES statistics_meta (id) ON DELETE CASCADE
)
@ -187,7 +178,7 @@ CREATE TABLE statistics_short_term (
last_reset CHAR(0),
last_reset_ts FLOAT,
state FLOAT,
sum FLOAT,
sum FLOAT, mean_weight FLOAT,
PRIMARY KEY (id),
FOREIGN KEY(metadata_id) REFERENCES statistics_meta (id) ON DELETE CASCADE
)
@ -212,27 +203,33 @@ CREATE INDEX ix_events_data_id ON events (data_id)
CREATE INDEX ix_events_event_type_id_time_fired_ts ON events (event_type_id, time_fired_ts)
CREATE INDEX ix_events_context_id_bin ON events (context_id_bin)
CREATE INDEX ix_events_time_fired_ts ON events (time_fired_ts)
CREATE INDEX ix_events_context_id_bin ON events (context_id_bin)
CREATE INDEX ix_states_context_id_bin ON states (context_id_bin)
CREATE INDEX ix_states_attributes_id ON states (attributes_id)
CREATE INDEX ix_states_last_updated_ts ON states (last_updated_ts)
CREATE INDEX ix_states_metadata_id_last_updated_ts ON states (metadata_id, last_updated_ts)
CREATE INDEX ix_states_old_state_id ON states (old_state_id)
CREATE INDEX ix_states_context_id_bin ON states (context_id_bin)
CREATE INDEX ix_states_last_updated_ts ON states (last_updated_ts)
CREATE INDEX ix_statistics_start_ts ON statistics (start_ts)
CREATE UNIQUE INDEX ix_statistics_statistic_id_start_ts ON statistics (metadata_id, start_ts)
CREATE INDEX ix_statistics_start_ts ON statistics (start_ts)
CREATE UNIQUE INDEX ix_statistics_short_term_statistic_id_start_ts ON statistics_short_term (metadata_id, start_ts)
CREATE INDEX ix_statistics_short_term_start_ts ON statistics_short_term (start_ts)
CREATE UNIQUE INDEX ix_statistics_short_term_statistic_id_start_ts ON statistics_short_term (metadata_id, start_ts)
CREATE TABLE migration_changes (
migration_id VARCHAR(255) NOT NULL,
version SMALLINT NOT NULL,
PRIMARY KEY (migration_id)
)
```
To only show the details about the `states` table (since we are using that one in the next examples):

View File

@ -9,7 +9,7 @@ ha_release: 0.95
ha_iot_class: Local Polling
ha_config_flow: true
ha_codeowners:
- '@frenck'
- "@frenck"
ha_domain: adguard
ha_platforms:
- sensor
@ -17,15 +17,38 @@ ha_platforms:
ha_integration_type: service
---
AdGuard Home is a network-wide DNS server that supports ad, tracker,
and adult content blocking. The **AdGuard** integration allows you to control and
monitor your AdGuard Home instance in Home Assistant.
The **AdGuard Home** {% term integration %} allows you to control and monitor your [AdGuard Home](https://adguard.com/adguard-home/overview.html) instance in Home Assistant.
AdGuard Home is a network-wide software for blocking advertisements and tracking. It provides DNS-level protection, automatically covering all home devices without requiring client-side software. When you use AdGuard Home as your DNS server, it blocks advertisements, trackers, and malicious domains for all devices on your network.
## Prerequisites
Before setting up the AdGuard Home integration, ensure you have:
1. AdGuard Home installed and running on your network
2. The IP address or hostname of your AdGuard Home instance
3. Admin access to AdGuard Home
{% include integrations/config_flow.md %}
## Sensors
{% configuration_basic %}
Host:
description: "The IP address or hostname of your AdGuard Home instance. For example: `192.168.1.100` or `adguard.local`."
Port:
description: "The port AdGuard Home is running on. Default is `3000` for the web interface."
Username:
description: "Your AdGuard Home admin username."
Password:
description: "Your AdGuard Home admin password."
Verify SSL certificate:
description: "Enable SSL certificate verification when connecting via HTTPS."
{% endconfiguration_basic %}
This integration provides {% term sensors %} for the following information from AdGuard Home:
## Supported functionality
### Sensors
This integration provides sensors for the following information from AdGuard Home:
- Number of DNS queries.
- Number of blocked DNS queries.
@ -36,77 +59,193 @@ This integration provides {% term sensors %} for the following information from
- Total number of active filter rules loaded.
- Average response time of AdGuard's DNS server in milliseconds.
## Switches
### Switches
The integration will create a number of switches:
The integration provides switches to control AdGuard Home features:
- AdGuard Protection (master switch).
- Filtering.
- Safe Browsing.
- Parental Control.
- Safe Search.
- Query Log.
- **AdGuard protection**: Master switch that controls all AdGuard features
- **Filtering**: Enables DNS filtering using blocklists
- **Safe browsing**: Blocks known phishing and malware sites
- **Parental control**: Blocks adult content
- **Safe search**: Enforces safe search on search engines
- **Query log**: Records DNS queries for statistics
These switches allow you to automate things easily. For example, one could
write an automation to turn off Safe Search after the kids' bedtime.
These switches enable powerful automations. For example, you could automatically enable parental controls during school hours or disable ad blocking for specific time periods.
The "AdGuard Protection" switch is a master switch. It will turn off and
bypass all AdGuard features, regardless of whether they are switched on or not.
The **AdGuard protection** switch acts as a master control. When turned off, it bypasses all AdGuard features regardless of individual switch states.
{% important %}
Turning off Query Log will result in all sensors not receiving updates anymore.
AdGuard relies on Query Log to provide stats.
Turning off **Query log** stops all sensor updates. AdGuard requires query logging to provide statistics.
{% endimportant %}
## Actions
These {% term actions %} allow one to manage filter subscriptions in AdGuard Home.
Using these actions in automations could be helpful to block certain
sites/domains at certain times.
The integration provides {% term actions %} to manage filter subscriptions in AdGuard Home. Use these actions in automations to dynamically control content filtering based on time, presence, or other conditions.
For example, you could create a custom filter list that blocks social media sites
during the day and releases them during the evening.
For example, you could create automations that:
### Action `add_url`
- Block social media during work hours
- Enable strict filtering when guests connect to your network
- Temporarily disable filtering for specific downloads
Add a new filter subscription to AdGuard Home.
### Action `adguard.add_url`
| Data attribute | Optional | Description |
| ---------------------- | -------- | ------------------------------------------------------------ |
| `name` | No | The name of the filter subscription. |
| `url` | No | The filter URL to subscribe to, containing the filter rules. |
Adds a new filter subscription to AdGuard Home.
### Action `remove_url`
| Data attribute | Optional | Description |
| -------------- | -------- | --------------------------------------------- |
| `name` | No | The name of the filter subscription |
| `url` | No | The filter list URL containing blocking rules |
### Action `adguard.remove_url`
Removes a filter subscription from AdGuard Home.
| Data attribute | Optional | Description |
| ---------------------- | -------- | -------------------------------------- |
| `url` | No | The filter subscription URL to remove. |
| Data attribute | Optional | Description |
| -------------- | -------- | ------------------------------------- |
| `url` | No | The filter subscription URL to remove |
### Action `enable_url`
### Action `adguard.enable_url`
Enables a filter subscription in AdGuard Home.
Enables a previously disabled filter subscription.
| Data attribute | Optional | Description |
| -------------- | -------- | ------------------------------------- |
| `url` | No | The filter subscription URL to enable |
### Action `adguard.disable_url`
Temporarily disables a filter subscription without removing it.
| Data attribute | Optional | Description |
| ---------------------- | -------- | -------------------------------------- |
| `url` | No | The filter subscription URL to enable. |
| -------------- | -------- | -------------------------------------- |
| `url` | No | The filter subscription URL to disable |
### Action `disable_url`
### Action `adguard.refresh`
Disables a filter subscription in AdGuard Home.
Refreshes all filter subscriptions to get the latest blocking rules.
| Data attribute | Optional | Description |
| ---------------------- | -------- | --------------------------------------- |
| `url` | No | The filter subscription URL to disable. |
| Data attribute | Optional | Description |
| -------------- | -------- | ----------------------------------------------- |
| `force` | Yes | Force update (bypasses AdGuard Home throttling) |
### Action `refresh`
By default, `force` is `false`. AdGuard Home normally throttles filter updates to reduce server load. Use forced updates sparingly.
Refresh all filter subscriptions in AdGuard Home.
## Examples
| Data attribute | Optional | Description |
| ---------------------- | -------- | ------------------------------------------------- |
| `force` | Yes | Force update (bypasses AdGuard Home throttling). |
### Block social media during work hours
By default, `force` is set to `false`. Forcing an update bypasses AdGuard Home's
throttling logic, so use with care.
This automation blocks social media sites during business hours:
```yaml
automation:
- alias: "Block social media during work"
triggers:
- trigger: time
at: "09:00:00"
actions:
- action: adguard.add_url
data:
name: "Social media blocklist"
url: "https://raw.githubusercontent.com/example/social-media-blocklist/main/list.txt"
- action: adguard.refresh
- alias: "Unblock social media after work"
triggers:
- trigger: time
at: "17:00:00"
actions:
- action: adguard.remove_url
data:
url: "https://raw.githubusercontent.com/example/social-media-blocklist/main/list.txt"
```
### Enable strict filtering when guests arrive
Automatically enable all protection features when guests connect to your network:
```yaml
automation:
- alias: "Enable strict filtering for guests"
triggers:
- trigger: state
entity_id: group.guest_devices
from: "not_home"
to: "home"
actions:
- action: switch.turn_on
target:
entity_id:
- switch.adguard_parental_control
- switch.adguard_safe_browsing
- switch.adguard_safe_search
```
### Monitor DNS performance
Send a notification if DNS response time exceeds threshold:
{% raw %}
```yaml
automation:
- alias: "Alert on slow DNS"
triggers:
- trigger: numeric_state
entity_id: sensor.adguard_average_processing_speed
above: 50
actions:
- action: notify.mobile_app
data:
title: "DNS Performance Alert"
message: "AdGuard DNS response time is {{ states('sensor.adguard_average_processing_speed') }}ms"
```
{% endraw %}
## Data updates
The AdGuard Home integration polls for updates every 10 seconds to provide near real-time statistics and ensure switch states remain synchronized.
## Troubleshooting
### Integration fails to connect
#### Symptom: "Cannot connect to AdGuard Home"
When setting up the integration, you receive a connection error.
##### Resolution
1. Verify AdGuard Home is running:
- Access the AdGuard Home web interface at `http://YOUR_IP:3000`.
- Check the service status on your server.
2. Check network connectivity:
- Ensure Home Assistant can reach the AdGuard Home instance.
- Verify no firewall rules block port 3000.
3. Confirm credentials:
- Test login via the AdGuard Home web interface.
- Ensure you're using admin credentials.
### Sensors show unavailable
If sensors display as unavailable:
1. Check that **Query log** switch is enabled.
2. Verify AdGuard Home is processing DNS queries.
3. Ensure at least one device uses AdGuard Home as DNS server.
### Actions fail with "Filter URL not found"
This error occurs when trying to enable, disable, or remove a non-existent filter URL. Verify the exact URL using the AdGuard Home web interface under **Filters** > **DNS blocklists**.
## Removing the integration
This integration follows standard integration removal. After removal, your AdGuard Home instance continues running with its current configuration.
{% include integrations/remove_device_service.md %}

View File

@ -46,3 +46,10 @@ Upon saving the settings, you will be presented with a generated id and secret.
The Airthings integration can now be activated using the generated id and secret that you have just created.
{% include integrations/config_flow.md %}
## Troubleshooting
### The radon sensor does not show up
Initially, the radon sensor may not be published by the Airthings API (at device startup, the value is considered "unknown"), and so you may have to wait for the radon sensor to appear for a new device.

View File

@ -65,7 +65,7 @@ Next you need to create a Lambda function.
- **US West (Oregon)** region for Japanese and English (AU) skills.
- Click `Functions` in the left navigation bar, display list of your Lambda functions.
- Click `Create function`, select `Author from scratch`, then input a `Function name`.
- Select *Python 3.* as `Runtime` (Python 3.9 was available at this time).
- Select `Python 3.x` as the `Runtime` (choose the latest available Python 3 version).
- Select *Use an existing role* as `Execution role`, then select the role you just created from the `Existing role` list.
- Click `Create function`, then you can configure the details of the Lambda function.
- Under the `Configuration` tab, expand `Designer`, then click on `+ Add trigger` in the left part of the panel and select `Alexa Skills Kit` from the dropdown list to add an Alexa Skills Kit trigger to your Lambda function.

View File

@ -157,7 +157,7 @@ Next you need create a Lambda function.
- Click `Functions` in the left navigation bar, to display the list of your Lambda functions.
- Click `Create function`, select `Author from scratch`, then input a `Function name`.
- Select *Python 3.9*, *Python 3.8* or *Python 3.7* as `Runtime`.
- Select `Python 3.x` as the `Runtime` (choose the latest available Python 3 version).
- Expand the `Change default execution role` dropdown and make sure to select *Use an existing role* as `Execution role`, then select the role you just created from `Existing role` list.
- Click `Create function`, then you can configure the details of Lambda function.
- Expand the `Function overview` (if it isn't already expanded), then click `+ Add trigger` in the left part of the panel, then click `Alexa Smart Home` from the drop down list to add an Alexa Smart Home trigger to your Lambda function.

View File

@ -14,6 +14,7 @@ ha_codeowners:
ha_iot_class: Cloud Polling
ha_platforms:
- binary_sensor
- diagnostics
- notify
- sensor
- switch
@ -84,29 +85,6 @@ automation:
entity_id: notify.echo_dot_livingroom_announce
```
### Automation: Start Radio on all Echo dots
```yaml
automation:
- alias: Start Radio B.B.C.
id: "start_radio_bbc"
trigger:
- platform: sun
event: sunset
condition:
conditions:
- alias: "condition alias (home)"
condition: state
entity_id: group.person_family
state: "home"
action:
- action: notify.send_message
data:
message: Play B.B.C. on Tunein
target:
entity_id: notify.everywhere_announce
```
## Data updates
This integration {% term polling polls %} data from the device every 30 seconds by default.

View File

@ -15,6 +15,7 @@ ha_platforms:
- sensor
ha_integration_type: device
ha_zeroconf: true
ha_quality_scale: bronze
---
The **Altruist** {% term integration %} connects Home Assistant to [Air Quality Sensor “Altruist“](https://robonomics.network/devices/altruist/) — a device designed for decentralized environmental monitoring. It captures noise, dust, and temperature data from the sensor over HTTP, making it available as locally usable entities within Home Assistant.

View File

@ -156,7 +156,7 @@ media_player:
## Remote
The remote allows you to send key commands to your Android TV device with the `remote.send_command` action.
The remote allows you to send key commands and text as input to your Android TV device with the `remote.send_command` action.
The entity has the `current_activity` attribute that shows the current foreground app on the Android TV.
You can pass the application ID shown in this `current_activity` as `activity` in the `remote.turn_on` action to launch that app.
@ -242,6 +242,8 @@ Other:
{% enddetails %}
To send text as keyboard input use the `remote.send_command` and prefix the text to send with `text:`, e.g. `command: text:hello world` to type "hello world" in the selected input field.
If `activity` is specified in `remote.turn_on` it will open the specified URL or the application with the given package name. See [Launching apps section](#launching-apps).
Example actions:
@ -265,6 +267,15 @@ target:
entity_id: remote.living_room_tv
```
```yaml
# Send "Never Gonna Give You Up" as keyboard input text to the selected input field
action: remote.send_command
data:
command: text:Never Gonna Give You Up
target:
entity_id: remote.living_room_tv
```
```yaml
# Launch YouTube
action: remote.turn_on

View File

@ -239,4 +239,3 @@ actions:
```
{% endraw %}

View File

@ -31,6 +31,7 @@ ha_platforms:
- switch
- time
ha_iot_class: Cloud Push
ha_dhcp: true
ha_zeroconf: true
---

View File

@ -20,7 +20,7 @@ ha_platforms:
- sensor
- switch
ha_integration_type: device
ha_quality_scale: bronze
ha_quality_scale: platinum
ha_dhcp: true
---

View File

@ -42,7 +42,10 @@ In addition, the entity can have the following states:
- **Unknown**: The state is not yet known.
Because the {% term state %} of a button entity in Home Assistant is a timestamp, it
means we can use it in our automations. For example:
changes every time the button is pressed. This means we can trigger automations on
any state change of the button entity, which effectively captures when the button
is pressed. We don't need to use the actual timestamp value; we only care that the
state changed, indicating a button press:
```yaml
triggers:

View File

@ -31,6 +31,7 @@ ha_platforms:
- switch
- time
ha_iot_class: Cloud Push
ha_dhcp: true
ha_zeroconf: true
---

View File

@ -11,6 +11,7 @@ ha_iot_class: Calculated
ha_qa_scale: internal
ha_codeowners:
- '@afaucogney'
- '@karwosts'
ha_domain: derivative
ha_config_flow: true
ha_platforms:

View File

@ -15,6 +15,7 @@ ha_platforms:
- button
- diagnostics
- number
- select
- sensor
- switch
ha_iot_class: Local Polling

View File

@ -31,6 +31,7 @@ ha_platforms:
- switch
- time
ha_iot_class: Cloud Push
ha_dhcp: true
ha_zeroconf: true
---

View File

@ -2,6 +2,7 @@
title: Google Gemini
description: Instructions on how to integrate Google Gemini as a conversation agent
ha_category:
- Text-to-speech
- Voice
ha_release: 2023.6
ha_domain: google_gemini
@ -15,6 +16,7 @@ ha_config_flow: true
ha_platforms:
- conversation
- diagnostics
- tts
ha_iot_class: Cloud Polling
---

View File

@ -2,8 +2,8 @@
title: Google Generative AI
description: Instructions on how to integrate Google Generative AI as a conversation agent
ha_category:
- Voice
- Text-to-speech
- Voice
ha_release: 2023.6
ha_iot_class: Cloud Polling
ha_config_flow: true

View File

@ -30,7 +30,6 @@ The `html5` platform can only function if all of the following requirements are
- You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. Or you added your Home Assistant instance to your home screen on iOS 16.4 or higher.
- Your Home Assistant instance is accessible from outside your network over HTTPS or can perform an alternative [Domain Name Verification Method](https://support.google.com/webmasters/answer/9008080#domain_name_verification) on the domain used by Home Assistant.
- If using a proxy, HTTP basic authentication must be disabled to register or deregister push notifications. It can be re-enabled afterwards.
- If you don't run Hass.io: `pywebpush` must be installed. `libffi-dev`, `libpython-dev` and `libssl-dev` must be installed prior to `pywebpush` (i.e., `pywebpush` probably won't automatically install).
- You have configured SSL/TLS for your Home Assistant. It doesn't need to be configured in Home Assistant though, e.g., you can be running NGINX in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e., not self-signed).
- You are willing to accept the notification permission in your browser.

View File

@ -1,18 +1,23 @@
---
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
ha_platforms:
- diagnostics
- sensor
ha_zeroconf: true
ha_integration_type: device
---
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

@ -13,6 +13,7 @@ ha_platforms:
- sensor
ha_config_flow: true
ha_integration_type: integration
ha_quality_scale: gold
---
The **ista EcoTrend** {% term integration %} for Home Assistant allows you to import your monthly meter readings from the [ista EcoTrend](https://ecotrend.ista.de) service.

View File

@ -48,6 +48,7 @@ ha_platforms:
- weather
ha_config_flow: true
ha_integration_type: hub
ha_quality_scale: silver
---
The [KNX](https://www.knx.org) integration connects Home Assistant to your KNX installation, allowing you to control KNX devices, act on telegrams and forward state changes from other integrations entities to your KNX bus.

View File

@ -25,6 +25,7 @@ ha_platforms:
- switch
ha_config_flow: true
ha_integration_type: integration
ha_quality_scale: bronze
---
The **LCN** {% term integration %} for Home Assistant allows you to connect to [LCN](https://www.lcn.eu/) hardware devices.

View File

@ -23,6 +23,7 @@ ha_platforms:
ha_integration_type: integration
ha_codeowners:
- '@LG-ThinQ-Integration'
ha_dhcp: true
---
The **LG ThinQ** integration allows you to connect LG ThinQ devices to Home Assistant. The features of this integration include:

View File

@ -6,8 +6,9 @@ ha_category:
ha_domain: linak
ha_integration_type: virtual
ha_supporting_domain: idasen_desk
ha_supporting_integration: IKEA Idåsen Desk
ha_supporting_integration: IKEA Idasen Desk
ha_release: '2023.10'
ha_bluetooth: true
ha_codeowners:
- '@abmantis'
ha_config_flow: true
@ -16,7 +17,6 @@ ha_platforms:
- cover
- sensor
ha_iot_class: Local Push
ha_bluetooth: true
---
{% include integrations/supported_brand.md %}

View File

@ -1,54 +1,55 @@
---
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: hub
ha_release: 2024.8
ha_codeowners:
- '@Velleman'
ha_config_flow: true
ha_platforms:
- button
- diagnostics
- media_player
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,27 @@
---
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: Local Push
ha_domain: locative
ha_platforms:
- device_tracker
ha_config_flow: true
ha_integration_type: integration
---
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

@ -11,6 +11,7 @@ ha_codeowners:
- '@emontnemery'
ha_domain: meater
ha_platforms:
- diagnostics
- sensor
ha_integration_type: integration
---

View File

@ -1,115 +1,116 @@
---
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:
- Binary sensor
- Number
- Select
- Sensor
ha_release: 2024.1
ha_iot_class: Local Push
ha_config_flow: true
ha_platforms:
- binary_sensor
- number
- select
- sensor
ha_codeowners:
- '@laiho-vogels'
ha_domain: motionmount
ha_zeroconf: true
ha_quality_scale: bronze
ha_integration_type: device
---
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

@ -370,7 +370,7 @@ Supported shared options are:
- `qos`
- `encoding`
The component specific options are placed as mappings under the `components` key (abbreviated as `cmp`) like:
The component specific options are placed as mappings under the `components` key (abbreviated as `cmps`) like:
```json
{
@ -409,7 +409,7 @@ The component specific options are placed as mappings under the `components` key
}
```
The components id's under the `components` (`cmp`) key, are used as part of the discovery identification. A `platform` (`p`) config option is required for each component config that is added to identify the component platform. Also required is a `unique_id` for entity-based components.
The components id's under the `components` (`cmps`) key, are used as part of the discovery identification. A `platform` (`p`) config option is required for each component config that is added to identify the component platform. Also required is a `unique_id` for entity-based components.
To remove the components, publish an empty (retained) string payload to the discovery topic. This will remove the component and clear the published discovery payload. It will also remove the device entry if there are no further references to it.
@ -569,7 +569,7 @@ Check the logs to ensure this step is executed correctly.
**Step 3: Publish the new device-based discovery configuration:**
Discovery topic device: `homeassistant/device/0AFFD2/config`
Discovery id: `0AFFD2 bla` *(`0AFFD2`from discovery topic, `bla`: The key under `cmp` in the discovery payload)*
Discovery id: `0AFFD2 bla` *(`0AFFD2`from discovery topic, `bla`: The key under `cmps` in the discovery payload)*
Discovery payload device:
```json

View File

@ -10,6 +10,7 @@ ha_codeowners:
- '@music-assistant'
ha_domain: music_assistant
ha_platforms:
- button
- media_player
ha_zeroconf: true
ha_integration_type: integration

View File

@ -72,3 +72,9 @@ Areas: `gemeinde oberreichenbach, gemeinde neuweiler, stadt nagold`
| `sent` | *(time)* Transmission time and date (UTC) of the issued warning. |
| `start` | *(time)* Starting time and date (UTC) of the issued warning. Can be empty. |
| `expires` | *(time)* Expiration time and date (UTC) of the issued warning. Can be empty. |
## Removing the integration
This integration follows standard integration removal. No extra steps are required.
{% include integrations/remove_device_service.md %}

View File

@ -13,6 +13,7 @@ ha_integration_type: integration
ha_platforms:
- diagnostics
- notify
- sensor
ha_quality_scale: bronze
---

View File

@ -50,6 +50,7 @@ More than 175 utilities use Opower. Currently only the following utilities are s
- National Grid NY Metro
- National Grid NY Upstate
- Pacific Gas & Electric (PG&E)
> **Note:** Currently only works with PG&E accounts created **before June 2025** that do not require multi-factor authentication (MFA).
- Portland General Electric (PGE)
- Puget Sound Energy (PSE)
- Sacramento Municipal Utility District (SMUD)

View File

@ -18,6 +18,7 @@ related:
ha_platforms:
- diagnostics
- sensor
- update
---
The **Paperless-ngx** {% term integration %} allows you to connect your [Paperless-ngx](https://docs.paperless-ngx.com/) instance to Home Assistant and monitor its status and activity.

View File

@ -22,7 +22,7 @@ ha_integration_type: integration
---
The Pi-hole integration allows you to retrieve statistics and interact with a
[Pi-hole](https://pi-hole.net/) system.
[Pi-hole](https://pi-hole.net/) system (version < 6.0).
{% include integrations/config_flow.md %}

View File

@ -8,6 +8,7 @@ ha_release: 2025.7
ha_iot_class: Cloud Polling
ha_domain: playstation_network
ha_platforms:
- diagnostics
- media_player
- sensor
ha_codeowners:
@ -15,10 +16,11 @@ ha_codeowners:
- '@tr4nt0r'
ha_config_flow: true
ha_quality_scale: bronze
ha_integration_type: integration
ha_integration_type: service
related:
- url: https://playstation.com/
title: Playstation
ha_dhcp: true
---
The **PlayStation Network** {% term integration %} enables you to seamlessly integrate information from your currently playing game in Home Assistant.

View File

@ -105,6 +105,7 @@ These are the generator models that have been tested:
- [20RESA](https://resources.kohler.com/power/kohler/residential/pdf/tp6804.pdf)
- [20RCA](https://www.kohlerhomeenergy.rehlko.com/products/home+generators/20rca)
- [14RESA](https://www.kohler.com/content/dam/kohler-com-NA/Lifestyle/PDF/PDF-tp6803.pdf)
- [30RCL](https://www.kohlerhomeenergy.rehlko.com/products/home+generators/30rcla)
## Removing the integration

View File

@ -12,6 +12,7 @@ ha_platforms:
- diagnostics
ha_codeowners:
- '@Thomas55555'
- '@allenporter'
ha_integration_type: service
ha_quality_scale: silver
---

View File

@ -19,6 +19,7 @@ ha_platforms:
ha_zeroconf: true
ha_dhcp: true
ha_integration_type: device
ha_quality_scale: bronze
---
The `samsungtv` platform allows you to control a [Samsung Smart TV](https://www.samsung.com/uk/tvs/all-tvs/).

View File

@ -314,7 +314,7 @@ rest:
{% endraw %}
[JSONPlaceholder](https://jsonplaceholder.typicode.com/) provides sample JSON data for testing. In the below example, JSONPath locates the attributes in the JSON document. [JSONPath Online Evaluator](https://jsonpath.com/) provides a tool to test your JSONPath. If the endpoint returns XML, it will be converted to JSON using `xmltodict` before searching for attributes. You may find the [XMLtoDict debug tool](https://xmltodict-debugger.glitch.me/) helpful for testing how your XML converts to JSON.
[JSONPlaceholder](https://jsonplaceholder.typicode.com/) provides sample JSON data for testing. In the below example, JSONPath locates the attributes in the JSON document. [JSONPath Online Evaluator](https://jsonpath.com/) provides a tool to test your JSONPath. If the endpoint returns XML, it will be converted to JSON using `xmltodict` before searching for attributes. You may find this [XML to JSON Converter](https://www.freeformatter.com/xml-to-json-converter.html) helpful for testing how your XML converts to JSON.
{% raw %}

View File

@ -464,3 +464,9 @@ sonos:
media_player:
advertise_addr: 192.0.2.1
```
## Removing the integration
This integration follows the standard integration removal process; no extra steps are required.
{% include integrations/remove_device_service.md %}

View File

@ -10,7 +10,6 @@ ha_codeowners:
- '@frenck'
- '@joostlek'
ha_domain: spotify
ha_zeroconf: true
ha_platforms:
- diagnostics
- media_player

View File

@ -21,6 +21,8 @@ ha_codeowners:
- '@dsypniewski'
- '@zerzhang'
ha_domain: switchbot
works_with:
- bluetooth
ha_bluetooth: true
ha_platforms:
- binary_sensor
@ -169,6 +171,27 @@ For instructions on how to obtain the encryption key, see README in [PySwitchbot
- [Air Purifier](https://www.switch-bot.com/products/switchbot-air-purifier)
- [Air Purifier Table](https://www.switch-bot.com/products/switchbot-air-purifier-table)
## Works with Home Assistant
SwitchBot is committed to making sure their products are up-to-date and ready to use in Home Assistant.
Devices are certified for both Bluetooth and Matter.
The following devices are certified for Bluetooth:
- [SwitchBot Lock Ultra](https://www.switch-bot.com/products/switchbot-lock-ultra)
- [SwitchBot Air Purifier](https://www.switch-bot.com/products/switchbot-air-purifier)
- [SwitchBot Air Purifier Table](https://www.switch-bot.com/products/switchbot-air-purifier-table)
- [SwitchBot Leak Detector](https://www.switch-bot.com/products/switchbot-water-leak-detector)
- [SwitchBot Meter](https://www.switch-bot.com/products/switchbot-meter)
- [SwitchBot Meter Pro](https://www.switch-bot.com/products/switchbot-meter-pro)
- [SwitchBot Meter Pro CO2](https://www.switch-bot.com/products/switchbot-meter-pro-co2-monitor)
- [SwitchBot Indoor/Outdoor Thermo-Hygrometer](https://www.switch-bot.com/products/switchbot-indoor-outdoor-thermo-hygrometer)
- [SwitchBot Curtain 3](https://www.switch-bot.com/products/switchbot-curtain-3)
- [SwitchBot Contact Sensor](https://www.switch-bot.com/products/contact-sensor)
- [SwitchBot Roller Shade](https://www.switch-bot.com/products/switchbot-roller-shade)
- [SwitchBot Lock Pro](https://www.switch-bot.com/products/switchbot-lock-pro)
To see the list of SwitchBot Matter certified devices, visit the [SwitchBot Matter](switchbot_matter.markdown) page.
## Supported functionality
### Common
@ -466,6 +489,12 @@ Features:
- calibration state
- get battery level
Options:
1. To enable nightlatch operation mode, go to {% my integrations title="**Settings** > **Devices & services**" %}.
2. Under **Integration entries**, find the lock and select **Configure**.
3. In the **Options** dialog, configure the nightlatch operation mode.
#### Lock Pro
This is an encrypted device.
@ -478,6 +507,14 @@ Features:
- calibration state
- get battery level
Options:
1. To enable nightlatch operation mode, go to {% my integrations title="**Settings** > **Devices & services**" %}.
2. Under **Integration entries**, find the lock and select **Configure**.
3. In the **Options** dialog, configure the nightlatch operation mode.
#### Lock Ultra
This is an encrypted device.
@ -490,6 +527,12 @@ Features:
- calibration state
- get battery level
Options:
1. To enable nightlatch operation mode, go to {% my integrations title="**Settings** > **Devices & services**" %}.
2. Under **Integration entries**, find the lock and select **Configure**.
3. In the **Options** dialog, configure the nightlatch operation mode.
#### Lock Lite
This is an encrypted device.
@ -497,8 +540,6 @@ This is an encrypted device.
Features:
- Lock or unlock
- open or closed state
- auto-lock paused state
- calibration state
- get battery level
@ -532,17 +573,17 @@ Features:
### Fans
Fan entities are added for Circulator Fan, Air Purifier, and Air Purifier Table
Fan entities are added for Battery Circulator Fan/Circulator Fan, Air Purifier, and Air Purifier Table
#### Circulator Fan
#### Battery Circulator Fan/Circulator Fan
Features:
- turn on
- turn off
- set speed
- set mode
- oscillate left and right
- get battery level (Battery Circulator Fan only)
#### Air Purifier
@ -569,7 +610,7 @@ Features:
Vacuum entities are added for K10+, K10+ Pro, K10+ Pro Combo, K20, S10.
Features:
- get states, including `cleaning`, `docked`, `idle`, `paused`, `returning`, and `error`; refer to Known limitations for more details
- start
- return to base
- get battery
@ -614,10 +655,25 @@ Move the device closer, or replace the Bluetooth adapter with a faster one. See
Device names configured in the SwitchBot app are not transferred into Home Assistant.
### Battery level
Due to firmware limitations, early models such as **Lock** and **Lock Lite** report the battery level in coarse ranges rather than an exact value:
- < 10 % 10
- 10 % 20 % → 20
- 20 % 60 % → 60
- ≥ 60 % → 100
Refer to the latest version of the [OpenAPI doc](https://github.com/OpenWonderLabs/SwitchBotAPI) for precise definitions.
### Lock state
The integration currently only uses the primary lock state; in dual lock mode, not all things might work properly.
### Vacuum state
For robot vacuum K10+ and K10+ Pro, due to firmware implementation, it only returns these states, `cleaning` and `docked`
## Troubleshooting
The SwitchBot integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional.
@ -630,8 +686,6 @@ Possible custom integration conflict, using a different version of PySwitchbot;
Make sure your devices are powered on and are in range.
{% enddetails %}
## Examples
### Automation ideas

View File

@ -40,25 +40,160 @@ Please note, device names configured in the SwitchBot app are transferred into H
{% include integrations/config_flow.md %}
## Supported devices
### Plugs and switches
- [Bot (WoHand)](https://switch-bot.com/pages/switchbot-bot)
- [Relay Switch 1](https://www.switch-bot.com/products/switchbot-relay-switch-1)
- [Relay Switch 1PM](https://www.switch-bot.com/products/switchbot-relay-switch-1pm)
- [Plug Mini (WoPlug)](https://www.switch-bot.com/products/switchbot-plug-mini)
- [Plug Mini (HomeKit Enabled)](https://www.switch-bot.com/products/switchbot-plug-mini-homekit-enabled)
- Plug (Wi-Fi only, only available in Japan)
- Plug Mini, both the original and HomeKit-enabled
### Locks
- [Lock (WoLock)](https://switch-bot.com/pages/switchbot-lock)
- [Lock Pro (WoLockPro)](https://www.switch-bot.com/pages/switchbot-lock-pro)
### Sensors
- [Meter](https://switch-bot.com/pages/switchbot-meter)
- [Meter Plus](https://switch-bot.com/pages/switchbot-meter-plus)
- [Indoor/Outdoor Meter (WoIOSensorTH)](https://switch-bot.com/pages/switchbot-indoor-outdoor-thermo-hygrometer)
- [Meter Pro](https://www.switch-bot.com/products/switchbot-meter-pro)
- [Meter Pro CO2 Monitor](https://www.switch-bot.com/products/switchbot-meter-pro-co2-monitor)
### Hubs
- [Hub 2 (WoHub2)](https://switch-bot.com/pages/switchbot-hub-2) (currently only supports retrieving sensor data, does not yet support device control)
- IR appliances exposed through the different hubs:
- ON/OFF for all appliance types excepted "Others"
- Air Conditioner
- Lock
- Lock Pro
- Meter
- MeterPlus
- MeterPro
- MeterPro (C02)
- Outdoor Meter
- Vacuum K10+, K10+ pro, S1, S1 Plus
- Hub 2
- Relay Switch 1
- Relay Switch 1PM
- Bot (as a Switch in `switchMode` and `customizeMode`, as a Button in `pressMode`)
- ON/OFF for all appliance types except for *Others*
- Change temperature and mode for *Air Conditioner*
### Vacuums
- [K10+](https://www.switch-bot.com/products/switchbot-mini-robot-vacuum-k10)
- [K10+ Pro](https://www.switch-bot.com/products/switchbot-mini-robot-vacuum-k10-pro)
- [S1](https://www.switchbot.jp/products/switchbot-robot-vacuum-cleaner?&variant=41850919420079)
- [S1 Plus](https://www.switchbot.jp/products/switchbot-robot-vacuum-cleaner)
## Supported functionality
### Plugs and switches
#### Bot
Features:
- acted as a Switch in `switchMode` and `customizeMode`, as a Button in `pressMode`
- turn on or off
- press
- get battery level
#### Plug Mini
Features:
- turn on or off
- get power consumption readings
#### Relay Switch 1
Features:
- turn on or off
#### Relay Switch 1PM
Features:
- turn on or off
- get power
- get voltage
- get current
#### Plug
Features:
- turn on or off
### Sensors
#### Meter
Features:
- get temperature
- get humidity
- get battery level
#### Meter Plus
Features:
- get temperature
- get humidity
- get battery level
#### Indoor/Outdoor Meter
Features:
- get temperature
- get humidity
- get battery level
#### Meter Pro
Features:
- get temperature
- get humidity
- get battery level
#### Meter Pro CO2 Monitor
Features:
- get temperature
- get humidity
- get carbon dioxide
- get battery level
### Locks
#### Lock
Features:
- Lock or unlock
- open or closed state
- calibration state
- get battery level
#### Lock Pro
Features:
- Lock or unlock
- open or closed state
- calibration state
- get battery level
### Hubs
Some of the hubs can be served as a bridge while the sensor data can be retrieved. Hub 2 displays temperature and humidity through a sensor cable. Without a digital display, Hub Mini Matter Enabled can also read from a sensor cable.
#### Hub 2
Features:
- get temperature
- get humidity
### Vacuums
Vacuum entities are added for K10+, K10+ Pro, S1, S1 Plus.
Features:
- get states
- start/clean
- pause
- set cleaning mode
- return to base
- get battery
## Important considerations

View File

@ -0,0 +1,47 @@
---
title: SwitchBot Matter
description: Connect and control your SwitchBot Matter devices using the Matter integration
ha_release: '2025.6'
ha_iot_class: Local Push
ha_category:
- Cover
- Lock
- Sensor
- Switch
ha_domain: switchbot
ha_integration_type: brand
works_with:
- matter
ha_platforms:
- binary_sensor
- cover
- lock
- sensor
- switch
ha_iot_standard: matter
ha_brand: true
---
{% include integrations/wwha.md url="https://www.switchbot.com/" %}
## Supported devices
SwitchBot also has Matter devices that are certified for use via one of their Matter hubs: either the [SwitchBot Hub 2](https://www.switch-bot.com/products/switchbot-hub-2) or the [Hub 3](https://www.switch-bot.com/products/switchbot-hub-3). Some are also certified via Matter-over-WiFi as standalone devices.
### Via a Matter Hub
- [SwitchBot Lock Ultra](https://www.switch-bot.com/products/switchbot-lock_ultra)
- [SwitchBot Meter](https://www.switch-bot.com/products/switchbot-meter)
- [SwitchBot Meter Pro](https://www.switch-bot.com/products/switchbot-meter-pro)
- [SwitchBot Meter Pro CO2](https://www.switch-bot.com/products/switchbot-meter-pro-co2-monitor)
- [SwitchBot Indoor/Outdoor Thermo-Hygrometer](https://www.switch-bot.com/products/switchbot-indoor-outdoor-thermo-hygrometer)
- [SwitchBot Curtain 3](https://www.switch-bot.com/products/switchbot-curtain-3)
- [SwitchBot Contact Sensor](https://www.switch-bot.com/products/contact-sensor)
- [SwitchBot Roller Shade](https://www.switch-bot.com/products/switchbot-roller-shade)
- [SwitchBot Lock Pro](https://www.switch-bot.com/products/switchbot-lock-pro)
### Matter-Over-WiFi (standalone, without requiring a hub)
- [SwitchBot Air Purifier](https://www.switch-bot.com/products/switchbot-air-purifier)
- [SwitchBot Air Purifier Table](https://www.switch-bot.com/products/switchbot-air-purifier-table)
- [SwitchBot Multitasking Robot K20 + Pro](https://www.switch-bot.com/products/switchbot-multitasking-household-robot-k20-pro)

View File

@ -173,6 +173,18 @@ To find the `<album_id>` you need to go to the album in your photos instance, an
For performance reasons, a maximum of 1000 images will be shown in the Media Browser.
## UPS support
This integration does not directly support the UPS systems connected to the NAS, but it can be achieved with the [Network UPS Tools (NUT)](/integrations/nut) integration. You need to enable UPS support in your NAS settings, as described in the official Synology [UPS](https://kb.synology.com/en-me/DSM/help/DSM/AdminCenter/system_hardware_ups) documentation, and then integrate the NAS as a UPS server via the NUT integration. Here is a rough step-by-step guide:
1. Activate **Enable UPS support** in the NAS settings under **Control Panel** > **Hardware & Power** > **UPS**.
2. Activate **Enable network UPS server**.
3. Select **Permitted Synology NAS Devices** and add the IP address of your Home Assistant instance.
4. Set up the [Network UPS Tools (NUT)](/integrations/nut) integration.
- **Host**: the IP address or hostname of your NAS.
- **Port**: keep the default (_3493_).
- **Username** and **Password**: keep empty as the NAS doesn't support credentials for the NUT server.
## Troubleshooting
In any case, when reporting an issue, please enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics), restart the integration, and as soon as the issue re-occurs stop the debug logging again (_download of debug log file will start automatically_). Further _if still possible_, please also download the [diagnostics](/integrations/diagnostics) data. If you have collected the debug log and the diagnostics data, provide them with the issue report.

View File

@ -18,26 +18,134 @@ ha_platforms:
ha_integration_type: hub
---
The Tailscale integration integrates the [Tailscale](https://www.tailscale.com) API
with Home Assistant; giving you the possibility to monitor and automate on
the state of the devices in your Tailscale VPN network (Tailnet).
The **Tailscale** {% term integration %} connects to the [Tailscale](https://www.tailscale.com) API to monitor devices in your Tailscale network (Tailnet). Use this integration to create automations based on device connectivity, track usage patterns, or receive notifications when devices go online or offline.
Tailscale is a VPN service that creates secure point-to-point connections between your devices using WireGuard technology. This integration monitors your Tailnet but doesn't provide VPN connectivity itself.
{% important %}
This integration **DOES NOT** make your Home Assistant accessible via
Tailscale VPN remotely!
This integration monitors your Tailscale network but **does not provide VPN access** to Home Assistant.
If you want to access your Home Assistant instance remotely, you will
need to install Tailscale itself on your own. For instructions on how to do
this, please consult the [Tailscale documentation](https://tailscale.com/kb/).
To access Home Assistant remotely via Tailscale:
1. Install Tailscale directly on your Home Assistant device
2. Follow the [Tailscale installation guide](https://tailscale.com/kb/)
3. Configure port forwarding or use Tailscale's subnet routes if needed
{% endimportant %}
## Prerequisites
To use the Tailscale integration, you will need to obtain an API access token,
you can create one in the [Tailscale Admin Panel](https://login.tailscale.com/admin/settings/keys).
**Required information:**
Additionally, you will need to know the Tailnet name of your Tailscale network.
You can find it in the top left corner in the [Tailscale Admin Panel](https://login.tailscale.com/admin/settings/keys)
(beside the Tailscale logo).
1. **API Access Token**: Create one in the [Tailscale Admin Panel](https://login.tailscale.com/admin/settings/keys)
- Navigate to **Settings** > **Keys**
- Click **Generate auth key** or **Generate API key**
- Select appropriate expiration and permissions
2. **Tailnet Name**: Found in the top-left corner of the [Admin Panel](https://login.tailscale.com/admin/machines)
- Usually in the format: `user@domain.com` or `organization-name`
- Also visible in the URL when browsing your admin panel
{% include integrations/config_flow.md %}
{% configuration_basic %}
API Key:
description: "Your Tailscale API access token from the Admin Panel."
Tailnet:
description: "Your Tailnet name (organization name or email address)."
{% endconfiguration_basic %}
## Supported functionality
### Sensors
The integration provides sensors for monitoring your Tailscale network:
#### Device information sensors
- **Device count**: Total number of devices in your Tailnet
- **Connected devices**: Number of currently online devices
- **Disconnected devices**: Number of currently offline devices
#### Per-device sensors
For each device in your Tailnet:
- **Connection status**: Whether the device is online or offline
- **Last seen**: Timestamp when the device was last active
- **Operating system**: Device OS (Windows, macOS, Linux, iOS, Android)
- **Tailscale version**: Version of Tailscale client running
- **IP addresses**: Both Tailscale IP and external IP
- **Location**: Approximate geographic location (if available)
### Binary sensors
The integration creates binary sensors for:
#### Network status
- **Tailnet health**: Overall network connectivity status
- **Device reachability**: Per-device online/offline status
#### Security monitoring
- **Key expiration warnings**: Alerts when auth keys are approaching expiration
- **Unauthorized access**: Notifications for new device connections (if configured)
## Examples
### Automated backups based on device availability
Start backups when specific devices are online:
```yaml
automation:
- alias: "Start backup when work laptop connects"
triggers:
- trigger: state
entity_id: binary_sensor.work_laptop_tailscale
from: "off"
to: "on"
conditions:
- condition: time
after: "18:00:00" # Only after work hours
before: "23:00:00"
actions:
- action: script.start_network_backup
- action: notify.admin
data:
message: "Starting automated backup - work laptop detected"
```
## Data updates
The Tailscale integration polls the Tailscale API every minute to check device status and network information.
## Troubleshooting
### Integration fails to connect
#### Symptom: "Unable to connect to Tailscale API" error
**Solutions:**
1. **Verify API key**:
- Ensure the key is copied correctly (no extra spaces)
- Check key hasn't expired in the Tailscale admin panel
- Verify key has appropriate permissions
2. **Network connectivity**:
- Ensure Home Assistant can reach Tailscale's API servers
- Check firewall rules if running in restricted environments
## Removing the integration
This integration follows standard integration removal.
{% include integrations/remove_device_service.md %}
After removal:
1. Your Tailscale API key remains active
2. Consider revoking the key in the Tailscale admin panel if no longer needed
3. Your Tailscale network and devices continue operating normally

View File

@ -8,7 +8,9 @@ ha_iot_class: Cloud Push
ha_config_flow: true
ha_domain: telegram_bot
ha_integration_type: integration
ha_quality_scale: legacy
ha_quality_scale: bronze
ha_codeowners:
- '@hanwg'
---
Use Telegram on your mobile or desktop device to send and receive messages or commands to/from your Home Assistant.

View File

@ -5,16 +5,17 @@ ha_category:
- Sensor
ha_release: '2025.7'
ha_iot_class: Local Polling
ha_quality_scale: Bronze
ha_quality_scale: bronze
ha_config_flow: true
ha_codeowners:
- '@michaelheyman'
ha_domain: tilt_pi
ha_platforms:
- sensor
- sensor
related:
- url: https://tilthydrometer.com/collections/tilt-pi
title: Tilt Pi product page
ha_integration_type: integration
---
The **Tilt Pi** {% term integration %} allows you to connect a Tilt Pi to Home Assistant to

View File

@ -198,4 +198,4 @@ The recommended way to overcome these obstacles is to not manually configure a l
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`.
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

@ -56,6 +56,10 @@ All Home Assistant platforms are supported by the Tuya integration, except the l
You need to have the Tuya Smart or Smart Life app installed, with an account created and
at least one device added to that account.
During the setup process, you will need:
- A second screen (such as a phone, tablet, or another computer) to display the QR code that appears during configuration
- The Smart Life or Tuya Smart app installed on your mobile device to scan the QR code
### Obtaining User Code for sign-in
To sign-in, you will need to get your **User Code** from the Smart Life /
@ -68,6 +72,21 @@ Tuya Smart app. You can find it by opening the app and:
{% include integrations/config_flow.md %}
### Scanning the QR code
To scan the QR code in the Smart Life app:
1. Open the Smart Life app
2. Tap the **+** button or **Add Device**
3. Select **Scan** or look for the QR code scanner option
4. Scan the QR code displayed on your Home Assistant screen
After adding new devices to your Tuya account through the Smart Life or Tuya Smart app, you need to reload the Tuya integration in Home Assistant for the new devices to appear:
1. Go to **{% my integrations title="Settings > Devices & Services" %}**
2. Find the Tuya integration
3. Click the three dots menu
4. Select **Reload**
## Scenes
Tuya supports scenes in their app. These allow triggering some of the more complex modes of various devices such as light changing effects. Scenes created in the Tuya app will automatically appear in the Scenes list in Home Assistant the next time the integration updates.

View File

@ -115,7 +115,7 @@ The response data field is a mapping of called target entities, each containing
{% details "Example template sensor using get_forecasts" %}
Example template sensor that contains the hourly forecast
Example [template sensor](/integrations/template#yaml-configuration) that contains the hourly forecast
{% raw %}

View File

@ -19,4 +19,3 @@ This {% term integration %} discovers nearby Zerproc lights and adds them to Hom
{% include integrations/config_flow.md %}
The {% term integration %} will scan for nearby devices, and is completed if any are found. No additional configuration is required. The integration will perform a BLE scan every 60 seconds to search for new devices.

View File

@ -132,7 +132,8 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta
### Adding a new device to the Z-Wave network
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
2. Select the Z-Wave integration. Then select **Configure**.
2. Select the Z-Wave integration.
- Then, on the entry of the hub, select {% icon "ic:baseline-arrow-forward-ios" %} to open the device info page.
3. Select **Add device**.
- The Z-Wave controller is now in inclusion mode.
4. Check, if your device supports SmartStart:
@ -161,8 +162,9 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta
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**.
2. Select the **Z-Wave** integration.
- Then, select the cogwheel {% icon "mdi:cog-outline" %}.
3. Select **Remove a device**, then **Start exclusion**.
- The Z-Wave controller is now in exclusion mode.
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.
@ -181,7 +183,8 @@ Do this if you have an existing Z-Wave network and want to use a new controller.
### To migrate a Z-Wave network to a new controller
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
2. Select the **Z-Wave** integration. Then, select **Configure**.
2. Select the **Z-Wave** integration.
- Then, select the cogwheel {% icon "mdi:cog-outline" %}.
3. Under **Backup and restore**, select **Migrate controller**.
4. Select **Migrate to a new controller**.
- To confirm device reset, select **Submit**.
@ -223,7 +226,8 @@ It's recommended to create a backup before making any major changes to your Z-Wa
### To backup your Z-Wave network
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
2. Select the **Z-Wave** integration. Then, select **Configure**.
2. Select the **Z-Wave** integration.
- Then, select the cogwheel {% icon "mdi:cog-outline" %}.
3. Under **Backup and restore**, select **Download backup**.
- **Result**: The backup file is downloaded to the device from which you initiated the download.
4. Done! Store the backup file somewhere safe in case you need it later to restore your Z-Wave network.
@ -232,7 +236,7 @@ It's recommended to create a backup before making any major changes to your Z-Wa
Controllers and devices with the Firmware Update Metadata Command Class allow you to update the firmware by uploading a firmware file. In those cases, you can start the firmware update from the device page in Home Assistant. Refer to the documentation of the device manufacturer to find the corresponding firmware file. An example is the [firmware page by Zooz](https://www.support.getzooz.com/kb/article/1158-zooz-ota-firmware-files/).
{% caution %}
{% note %}
**Risk of damage to the device due to firmware update**
A firmware update can damage your Z-Wave device.
@ -241,7 +245,7 @@ A firmware update can damage your Z-Wave device.
- Once you have started the update process, you must not interrupt the update process but let it complete.
The Home Assistant and Z-Wave JS teams do not take any responsibility for any damages to your device as a result of the firmware update and will not be able to help you if you render your device useless due to firmware update.
{% endcaution %}
{% endnote %}
### Prerequisites
@ -251,10 +255,11 @@ The Home Assistant and Z-Wave JS teams do not take any responsibility for any da
### To update firmware of a Z-Wave device
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
2. Select the **Z-Wave** integration. Then, select **Configure** and select the controller.
2. Select the **Z-Wave** integration.
- Then, on the entry of the hub, select {% icon "ic:baseline-arrow-forward-ios" %} to open the device info page.
3. Under **Device info**, select **Update**.
4. Select the firmware file that you previously downloaded to your computer.
- **Caution: Risk of damage to the device**
- **Notice: Risk of damage to the device**
- Make sure you select the correct firmware file.
- An incorrect firmware file can damage your device.
- Once you start the update process, you must wait for the update to complete.
@ -267,12 +272,15 @@ It is recommended to back up your Z-Wave network before resetting the device.
- The controller will forget all devices it is paired with.
- All Z-Wave devices for this network will be removed from Home Assistant.
- If there are any devices still paired with the controller when it is reset, they will have to go through the exclusion process before they can be re-paired.
- If there are any devices still paired with the controller when it is reset, they will have to be removed from their old network before they can be re-paired.
- The device firmware will remain on the device.
### Prerequisites
- Administrator rights on Home Assistant
- [Backup your Z-Wave network](#backing-up-your-z-wave-network)
- [Remove all devices that are paired with your controller from the network](#removing-a-device-from-the-z-wave-network).
- Removing can be done by any controller, not just the one that originally managed the network. In theory, this could also be done later.
### To reset a Z-Wave controller

View File

@ -0,0 +1,167 @@
---
layout: post
title: "Next iteration of our Voice Assistant is here - Voice chapter 10"
description: "This new tool brings fast, local speech processing to low-end hardware, along with some useful new voice and AI features"
date: 2025-06-25 00:00:01
date_formatted: "June 25, 2025"
author: Mike Hansen
comments: true
categories: Assist
og_image: /images/blog/2025-06-voice-chapter-10/art.png
---
<img src='/images/blog/2025-06-voice-chapter-10/art.png' style='border: 0;box-shadow: none;' alt="Chapter 10 of our ongoing voice series">
Welcome to Voice chapter 10 🎉, [a series](/blog/categories/assist/) where we share all the key developments in Open Voice. This chapter includes improvements across every element of Open Voice. Improvements that allow it to support more languages, be used on more hardware, make it easier to contribute to, all while making it faster and more reliable.
## Help steer Open Voice
Before we get going, we just want to say that Voice Chapter 10 isn't just a broadcast; **it's an invitation** ✉️. Our **public Voice project board** lives on GitHub, and it shows what we're fixing, currently building, and what we'll work on next. Every card is open for comments, so please feel free to have a look and participate in the discussion.
👉 **Project board**: [https://github.com/orgs/OHF-Voice/projects/2](https://github.com/orgs/OHF-Voice/projects/2)<!--more-->
## ESPHome gains a voice
When we began designing and building the firmware for our open voice assistant hardware, the [Home Assistant Voice Preview Edition](/voice-pe/), we had several specific features in mind:
1. Run wake words on the device.
2. Use a fully open-sourced media player platform that can decode music from high-quality sources.
3. Wake words can be enabled and disabled on the fly; for example, "stop" is only activated when a long-running announcement is playing or when a timer is ringing.
4. Mix voice assistant announcements on top of reduced volume (a.k.a. "ducked") music.
These features needed to run within ESPHome, the software that powers the device. In the beginning, ESPHome could only do 1 and 2, but not even at the same time!
To include all these features, we initially built them as external components, allowing us to iterate fast (and of course break many things along the way). We always intended to bring these components into ESPHome, and the process of bringing them in is called *upstreaming*. This would allow anyone to easily build a voice assistant that includes all the features of Voice Preview Edition, and that's what we've been working on since its launch last December.
<p class="img"><img src='/images/blog/2025-06-voice-chapter-10/devices.jpg' alt="S3 Box 3 next to Voice Preview Edition"/>No device left behind!</p>
ESPHome version 2025.5.0 has all these components included!  We didn't just spend this time copying the code over, but we also worked hard to improve it by making it more generalizable, easier to configure, and much faster.
As an example of these speed improvements, the highest CPU load on the Voice Preview Edition happens when music is being mixed with a long announcement. In this situation, it is decoding two different FLAC audio streams while also running three microWakeWord models (a Voice Activity Detector, "Okay Nabu", and "Stop"). With the original December firmware, this used 72% of the CPU 😅. With the new optimizations, which are all now available in ESPHome, the current Voice Preview Edition firmware only uses 35%❗ These improvements even allow the extremely resource-constrained ATOM Echo to support many of these features, including media playback and continuing conversations.
## Make your own Voice Preview Edition
<p class="img"><img src='/images/blog/2025-06-voice-chapter-10/circuits.png' alt="Circuit schematics to help display how components work together"/>I'll just pretend I understand all this</p>
Speaking of voice hardware becoming more like Voice Preview Edition, why not use that class-leading hardware as the basis for your own creations? We've now got the KiCad project files, which include the electrical schematic and circuit board layout, along with other helpful documents [available for download on GitHub](https://github.com/NabuCasa/home-assistant-voice-pe). Combined with our open source firmware files, this will allow anyone to build on the work we've done and make the open voice assistant of their dreams. Bigger speaker, built-in presence sensor, a display featuring a smiling Nabu mascot --- the options are nearly endless. Building Voice Preview Edition was always meant to bootstrap an entire ecosystem of voice hardware, and we're already seeing some amazing creations with this open technology.
## Now you're speaking my language
### Speech-to-Phrase gets more fluent
[In case you missed it](/blog/2025/02/13/voice-chapter-9-speech-to-phrase/#voice-for-the-masses), we built our own locally run speech-to-text (STT) tool that can run fast even on hardware-constrained devices. [Speech-to-Phrase](https://github.com/OHF-Voice/speech-to-phrase) works slightly differently from other STT tools, as it only accepts specific predetermined phrases, hence the name. We have been making large strides in making this the best option for local and private voice control in the home.
The sentence format for Speech-to-Phrase is getting an upgrade! Besides making it simpler for community members to contribute, it now allows for more thorough testing to ensure compatibility with existing Home Assistant commands.
We have also begun experimenting with more precise sentence generation, restricting sentences like "set the {light} to red" only to lights that support setting color. Another improvement is making Speech-to-Phrase more careful about combining names and articles in certain languages. For instance, in French, a device or entity that starts with a vowel or an "h" will have an "l" apostrophe at its beginning, such as l'humidificateur or l'entrée. Allowing Speech-to-Phrase to understand this avoids it guessing pronunciations for nonsensical combinations.
Speech-to-Phrase currently supports **six languages**, namely English, French, German, Dutch, Spanish, and Italian. We are now engaging with language leaders to add support for Russian, Czech, Catalan, Greek, Romanian, Portuguese, Polish, Hindi, Basque, Finnish, Mongolian, Slovenian, Swahili, Thai, and Turkish --- this takes our language support to **21 languages** 🥳!
These new models were originally trained by community members from the [Coqui STT](https://github.com/coqui-ai/STT-models) project (which is now defunct, but luckily their work was open source --- *another example of FOSS saving the day*), and we are very grateful for the chance to use them! Performance and accuracy vary heavily by language, and we may need to train our own models based on feedback from our community.
### Piper is growing in volume
[Piper](https://github.com/OHF-Voice/piper1-gpl) is another tool we built for local and private voice in the home, and it quickly turns text into natural-sounding speech. Piper is becoming one of the most comprehensive open source text-to-speech options available and has really been building momentum. Recently, we have added support for new languages and provided additional voices for existing ones, including,
- **Dutch** - Pim and Ronnie - *new voices*
- **Portuguese (Brazilian)** - Cadu and Jeff - *new voices*
- **Persian/Farsi** - Reza_ibrahim and Ganji - *new language*
- **Welsh** - Bu_tts - *new voices*
- **Swedish** - Lisa - *new voices*
- **Malayalam** - Arjun and Meera - *new language*
- **Nepali** - Chitwan - *new voices*
- **Latvian** - aivar- *new voices*
- **Slovenian** - artur - *new voices*
- **Slovak** - lili - *new voices*
- **English** - Sam (non-binary) and Reza_ibrahim - *new voices*
This brings Piper's supported languages and dialects from 34 to now 39 🙌! This allows a nice majority of the world's population (give or take 3 billion people) the ability to generate speech in their native tongue 😎!
### Scoring language support
<p class="img"><img src='/images/blog/2025-06-voice-chapter-10/intents.png' alt="Scoring table of our supported intents by language"/>This is the score sheet for just intents... it can get complicated</p>
Home Assistant users, when starting their voice journey, typically ask one question first: "Is my language supported?" Due to how flexible voice assistants in Home Assistant are, this seemingly simple question is quite complicated to answer! At a high level, a voice assistant needs to convert your spoken audio into text (speech-to-text), figure out what you want it to do (intent recognition), and then respond back to you (text-to-speech). Each part of this pipeline can be mixed and matched, and intent recognition can even be augmented with a fallback to a large language model (LLM), which is great at untangling misunderstood words or complex queries.
Considering the whole pipeline, the question "Is my language supported?" becomes "How well does each part support my language?" For Home Assistant Cloud, which uses Microsoft Azure for voice services, we can be confident that all supported languages work well.
Local options like [Whisper](https://github.com/openai/whisper) (speech-to-text) and, to a lesser extent, Piper (text-to-speech), may technically support a language but perform poorly in practice or within the limits of a user's hardware. Whisper, for example, has models with different sizes that require more powerful hardware to run as they get larger. A language like French may work well enough with the largest Whisper model (which requires a GPU), but is unusable on a Raspberry Pi or even an N100-class PC.
Our own Speech-to-Phrase system supports French well and runs well on a Raspberry Pi 4 or [Home Assistant Green](/green/). The trade-off is that only a limited set of pre-defined voice commands are supported, so you can't use an LLM as a fallback (because unexpected commands can't be converted into text for the LLM to process).
Finally, of course, not everyone wants to (or can) be reliant on the cloud, and they need a fully local voice assistant. This means that language support depends as much on the user's preferences as their hardware and the available voice services. For these reasons, we have split out language support into three categories based on specific combinations of services:
- ***Cloud*** - Home Assistant Cloud
- ***Focused Local*** - Speech-to-Phrase and Piper
- ***Full Local*** - Whisper and Piper
Each category is given a score from 0 to 3, with 0 meaning it is unsupported and 3 meaning it is fully supported. Users who choose Home Assistant Cloud can look at the Cloud score to determine the level of language support. For users wanting a local voice assistant, they will need to decide between Focused Local (limited commands for low-powered hardware) and Fully Local (open-ended commands for high-powered hardware). Importantly, these scores take into account the availability of voice commands translated by our language leaders. A language's score in every category will be lowered if it has minimal coverage of useful voice commands.
With these language scores, we hope users will be able to make informed decisions when starting on their voice journeys in Home Assistant. They're currently featured in our voice setup wizard in Home Assistant, and on our [language support page](/voice_control/#supported-languages-and-sentences).
## What's in a name
Voice commands in Home Assistant trigger *intents*, which are flexible actions that use names instead of IDs. Intents handle things like turning devices on or off, or adjusting the color of lights. Until now, sentence translations focused on whether a language supported an intent (like turning devices on/off) but didn't clearly show whether the command supported device names, areas names, or both. This can change from language to language, which made gaps hard to spot. We're switching to a new format that highlights these combinations, making it easier for contributors to see what names are supported, which should make for simpler translations.
## Continued conversation updates
Since the last voice chapter, the voice team has worked on making Assist more conversational for LLM-based agents. We started with LLM-based agents because it was simpler to iterate on. If the LLM returns with a question, we will detect that and keep the conversation going, without the need for you to say "Ok Nabu" again.
On top of that, you can now initiate a conversation with a new action called `start_conversation` directly from an automation, or a dashboard. This provides the full spectrum of conversation to LLM-based agents.
Here is a quick demonstration of two features working hand-in-hand:
<lite-youtube videoid="dq7--T_pVNA" videotitle="Continued conversations demo"></lite-youtube>
## Media Search and Play intent
What's great about Home Assistant and open source is that sometimes the best ideas come from other projects in the community. Early on, many people were interested in driving Music Assistant with voice, but central pieces were missing on Home Assistant, such as the ability to search a media library.
We worked hard on bringing this functionality to the core experience of Home Assistant and created a new intent, the **Search and Play** intent. You can now speak to your voice assistant and ask it to play music in any room in your home.
<lite-youtube videoid="bPMXz2nI-6w" videotitle="Media search and play demo"></lite-youtube>
The intent can be used by an LLM-based conversation agent, but we also have sentences that work without any LLM magic. You can find the [English sentences here](https://github.com/OHF-Voice/intents/tree/main/sentences/en/HassMediaSearchAndPlay). As it's a new feature, support may vary based on your language, and please be patient while our amazing language leaders make these translations.
## Future work - Assist will have something to say
Talking to your home should feel as natural as chatting with a friend across the kitchen counter. Large-language models (LLMs) already prove how smooth that back-and-forth can be, now we want every Home Assistant installation to enjoy the same experience. We're therefore zeroing in on three key use-cases for the default conversation agent, which include critical confirmations, follow-ups, and custom conversations. Just note these are still at the early stages of development and it may be some time before you see some of these features.
### Critical confirmations
Some actions are too important to execute without a quick double-check. Unlocking the front door, closing shutters, or running a "leaving home" script. We want you to be able to mark those entities as **protected**. Whenever you speak a command that touches one of those entities, Assist will ask for verbal confirmation before acting:
<blockquote style="font-style: normal;">
Ok Nabu, unlock the front door<br>
<i>Are you sure?</i><br>
Yes<br>
<i>Unlocked</i>
</blockquote>
Because every household is different, we are thinking about managing these confirmations **per entity** and making them fully user-configurable.
### Follow-up on missing parameters
Sometimes Assist grasps what you want, but needs more detail to carry it out. Instead of failing, we want Assist to ask for the missing piece proactively. Here is an example to illustrate.
<blockquote style="font-style: normal;">
Ok Nabu, set a timer<br>
<i>For how long?</i><br>
15 minutes<br>
<i>Timer started</i>
</blockquote>
For now, we are still assessing the relevant sentences for that use case. We're implementing follow-ups with timers, though finding more is not currently our top priority. We are, however, open to suggestions.
### Custom conversations
As with any other part of Home Assistant, we want the conversation aspect of Assist to be personalized. Simple voice transactions can already be created with our automation engine using the `conversation` trigger and the `set_conversation_response` action.
We want to bring the same level of customization to conversations, allowing you to create fully local, predefined conversations to be triggered whenever you need them, such as when you enter a room, start your bedtime routine, etc.
We are focusing first on making custom conversations possible, so that you can show us what you are building with this new powerful tool. We will then tackle the critical confirmations use case, and finally, the follow-ups when parameters are missing.
## Let's keep moving Open Voice forward
Only a couple of years ago, voice control was the domain of data-hungry corporations, and basically none of this open technology existed. Now, as a community, we've built all the parts needed to have a highly functional voice assistant, which is completely open and free for anyone to use (or even build on top of).\
Every chapter, we make steady progress, which is only possible with your support. Whether from those who fund its development by supporting the Open Home Foundation (by subscribing to [Home Assistant Cloud](/cloud/), and buying [official Home Assistant hardware](/voice-pe/)) or those who contribute their time to improving it. As always, we want to support every language possible, and if you don't see your native tongue on our supported list, please consider [contributing to this project](/voice_control/contribute-voice).

View File

@ -0,0 +1,85 @@
---
layout: post
title: "SwitchBot joins Works with Home Assistant"
description: "The first air purifiers and cleaning robots join the program, with options for Matter and Bluetooth connectivity."
date: 2025-06-26 00:00:01
date_formatted: "June 26, 2025"
author: Miranda Bishop
comments: true
categories: Works-with-Home-Assistant
og_image: /images/blog/2025-06-switchbot/art.jpg
---
<img src='/images/blog/2025-06-switchbot/art.jpg' style='border: 0;box-shadow: none;' alt="SwitchBot Joins Works with Home Assistant">
Please welcome the latest addition to the [Works with Home Assistant](https://works-with.home-assistant.io/) program, [SwitchBot!](https://www.switch-bot.com/) This year has seen a lot of 'firsts' within the program, and this launch certainly keeps up this trend. Read on to see the first *Air Purifiers* and *Vacuums / Cleaning Robots*! What's more, SwitchBot is bringing this first set of devices into the program with multiple connectivity options. Pick from their [Bluetooth integration](/integrations/switchbot/), Matter via a hub, or standalone Matter devices as well. All this gives you even more choice in how you set up your smart home, while providing the best experience with Home Assistant.<!--more-->
## Making the Switch...Bot
SwitchBot quickly gained traction in the smart home industry with their original finger bots, which sit over non-smart switches and physically press them down on your behalf. Since then, they've expanded to include many other smart home devices like curtain robots, hubs, air purifiers, and cleaning robots. We were excited to see these new products in person at CES earlier this year and meet up with their team.
SwitchBot even got involved with [Community Day](/blog/2025/06/24/community-day-2025-wrap-up/), hosting a meet-up in Shenzhen, China. We love that the 'Works with' partners show that they're passionate about engaging with our community, taking the partnership much further than just a label on a box.
<div class="alert">
<p>"At SwitchBot, we're committed to empowering users with seamless and intelligent home automation. By collaborating with Home Assistant's passionate, tech-savvy community, we're able to push boundaries and deliver more integrated, intuitive experiences. Together, we aim to expand what's possible, offering users greater flexibility to connect, control, optimize their homes, and to make it simple."</p>
<em style="text-align: right; display: block;">- Richard Mou - Co-Founder, SwitchBot</em>
</div>
## Devices
In case you didn't know, Works with Home Assistant differs from other certification programs as products are rigorously tested in-house to ensure they work seamlessly out of the box with Home Assistant. Any company joining also commits to providing long-term support and firmware updates while being a positive force in the Home Assistant community. Works with Home Assistant is operated by the [Open Home Foundation](https://www.openhomefoundation.org/), and the support of [Home Assistant Cloud](/cloud/) subscribers funds this work.
The SwitchBot team have put special focus on integrating specifically for Home Assistant and have been working hard on their [Bluetooth integration](/integrations/switchbot/). Though the community played a central role in the development of the integration, and SwitchBot is very thankful for this work, they took a more active role in its development.
One of the terms of the 'Works with' program is that Bluetooth devices must connect over an integration that is kept up to a certain code quality (we call this our ['Gold tier'](/docs/quality_scale/) on our quality scale). It also must be maintained by the manufacturers themselves, rather than overly relying on community members to do the hard work. This puts the responsibility on the shoulders of the manufacturers to make sure they're responding to bugs and keeping the integration up long term. If youre interested in SwitchBots Bluetooth products but your Home Assistant system doesnt have built-in Bluetooth, the easiest way to connect them is by using a [Bluetooth Proxy](/integrations/bluetooth/#remote-adapters-bluetooth-proxies).
If you prefer Matter, SwitchBot also has devices that are certified for use with one of their Matter hubs: either the [SwitchBot Hub 2](https://www.switch-bot.com/products/switchbot-hub-2) or the [Hub 3](https://www.switch-bot.com/products/switchbot-hub-3). There are also some that can work via Matter-over-WiFi as standalone devices. We are currently testing even more of SwitchBots Matter devices for the program.
**Bluetooth**
- [SwitchBot Lock Ultra](https://www.switch-bot.com/products/switchbot-lock-ultra)
- [SwitchBot Air Purifier](https://www.switch-bot.com/products/switchbot-air-purifier)
- [SwitchBot Air Purifier Table](https://www.switch-bot.com/products/switchbot-air-purifier-table)
- [SwitchBot Leak Detector](https://www.switch-bot.com/products/switchbot-water-leak-detector) - also works using Matter via a hub
- [SwitchBot Meter](https://www.switch-bot.com/products/switchbot-meter)  - also works using Matter via a hub 
- [SwitchBot Meter Pro](https://www.switch-bot.com/products/switchbot-meter-pro) - also works using Matter via a hub
- [SwitchBot Meter Pro CO2](https://www.switch-bot.com/products/switchbot-meter-pro-co2-monitor) - also works using Matter via a hub
- [SwitchBot Indoor/Outdoor Thermo-Hygrometer](https://www.switch-bot.com/products/switchbot-indoor-outdoor-thermo-hygrometer) - also works using Matter via a hub
- [SwitchBot Curtain 3](https://www.switch-bot.com/products/switchbot-curtain-3) - also works using Matter via a hub
- [SwitchBot Contact Sensor](https://www.switch-bot.com/products/contact-sensor) - also works using Matter via a hub
- [SwitchBot Roller Shade](https://www.switch-bot.com/products/switchbot-roller-shade) - also works using Matter via a hub
- [SwitchBot Lock Pro](https://www.switch-bot.com/products/switchbot-lock-pro) - also works using Matter via a hub
**Matter-Over-WiFi (standalone, without requiring a hub)**
- [SwitchBot Air Purifier](https://www.switch-bot.com/products/switchbot-air-purifier)
- [SwitchBot Air Purifier Table](https://www.switch-bot.com/products/switchbot-air-purifier-table)
- [SwitchBot Multitasking Robot K20 + Pro](https://www.switch-bot.com/products/switchbot-multitasking-household-robot-k20-pro)
***Note:*** *Home Assistant Container does not support Matter, and requires Home Assistant OS.*
## A smart home is a clean home
<p class='img'><img src='/images/blog/2025-06-switchbot/vacuum.jpg' style='border: 0;box-shadow: none;' alt="SwitchBot's cleaning robot with an air purifier">Eat your heart out Wall-E</p>
SwitchBot's K20 is the first cleaning robot in the Works with Home Assistant program as well as the world's first multi-tasking household robot. This wacky robot can be paired with lots of other items in the range, including the certified air purifiers, to make some really cool Home Assistant use cases. Just imagine, you're making some delicious dinner, but oh no, you've left a pan alone for too long and it starts to smell and burn. You could summon the K20 with an air purifier on top using the Home Assistant Voice Preview Edition. A few moments later, it's found its way to you and gets started on clearing the air in your kitchen. Plus, as these can both work via Matter, there's no need for cloud involvement. Some of the items also come with a table top so this device has some great applications for anyone with limited mobility.
## Bot to the future
These devices are the first certified items, but SwitchBot is working to get many more tested and fully feature-rich with Home Assistant. We're excited to keep expanding this list over time, but if you can't wait (and this work is only possible with the support of our [Home Assistant Cloud](/cloud/) subscribers), you can see the list of the other devices they are working on [here](https://www.switch-bot.com/pages/home-assistant).
## FAQs
***Q: If I have a device that is not listed under 'Works with Home Assistant' does this mean it's not supported?***
A: No! It just means that it hasn't gone through a testing schedule with our team or doesn't fit the requirements of the program. It might work fine and be added to our testing later down the road. Though it might only have limited functions that are being worked on, or use a connectivity type we don't currently test for in the program.
***Q: Ok, so what's the point of the Works with program?***
A: It highlights the devices we know work well with Home Assistant and the brands that make a long-term commitment to keeping support for these devices going. The certification agreement specifies that the devices must have full functionality within Home Assistant, operate locally without the need for cloud, and will continue to do so long-term.
***Q: How were these devices tested?***
A: The Bluetooth devices in this list were tested using a standard Home Assistant Green Hub, the SwitchBot Bluetooth Integration, a USB Bluetooth adapter, and an ESPHome Bluetooth Proxy. The Matter-over-WiFi devices were also tested with Home Assistant Green and our [certified Matter Integration](/integrations/matter/). If you have another hardware setup or integration, that is often not a problem, but we test against these as they are the most effective way for our team to certify within our ecosystem.
***Q: Will you be adding more SwitchBot devices to the program?***
A: Absolutely! SwitchBot has a quickly growing set of product lines that we're working to certify together, subject to the integrations fully covering all the functions.

View File

@ -0,0 +1,471 @@
---
layout: post
title: "2025.7: That's the question"
description: "Assist can now ask you questions! Enjoy the completely redesigned Area card with flexible layouts, the birth of integration sub-entries, full-screen code editors for better YAML and template editing, an overhauled integration page, and the improved Areas dashboard overview. Of course, tons of quality-of-life improvements!"
date: 2025-07-02 00:00:00
date_formatted: "July 2, 2025"
author: Franck Nijhof
author_twitter: frenck
comments: true
categories:
- Release-Notes
- Core
og_image: /images/blog/2025-07/social.png
---
<lite-youtube videoid="3MlaIzfRxCg" videotitle="Home Assistant 2025.7 Release Party"></lite-youtube>
Home Assistant 2025.7! 🎉
Whew! It's hot out there! 🌡️ While most of Europe is dealing with a heat wave right now, we're here to cool things down with an exciting July release that's packed with features I'm genuinely excited about.
Before we dive in, if you missed it, we recently published [Voice Chapter 10](/blog/2025/06/25/voice-chapter-10/) where we explored moving beyond reactive voice assistants that only respond when you talk to them. Instead, we envisioned a future where your voice assistant can be conversational and initiate conversations. Speaking of that, this release delivers on that vision in a big way!
I'm absolutely stoked about the new Ask Question action for Assist! 🗣️ This is something that sets Home Assistant apart from every other voice assistant out there. Finally, your voice assistant can take the initiative and ask *you* what your smart home should do. No more waiting for wake words, your assistant can start the conversation when it makes sense. It's the kind of feature that gets me really excited thinking about all the possibilities.
The redesigned Area card is another winner! 🏠 I'll probably be replacing a few tile cards I've been using to navigate to my area dashboards with this new, more flexible version. It integrates beautifully with the Sections dashboard and gives you so many more options for controlling your spaces.
And that's just the beginning! We've got integration sub-entries making integrations even more extensible, full-screen code editors for those lengthy YAML and template edits, and tons of quality-of-life improvements throughout.
Stay cool, and enjoy the release!
../Frenck
<!--more-->
- [Let Assist ask the questions!](#let-assist-ask-the-questions)
- [Redesigned Area card](#redesigned-area-card)
- [Improving the Areas dashboard overview](#improving-the-areas-dashboard-overview)
- [Integration sub-entries](#integration-sub-entries)
- [Integration page gets an overhaul](#integration-page-gets-an-overhaul)
- [Integrations](#integrations)
- [New integrations](#new-integrations)
- [Noteworthy improvements to existing integrations](#noteworthy-improvements-to-existing-integrations)
- [Integration quality scale achievements](#integration-quality-scale-achievements)
- [Now available to set up from the UI](#now-available-to-set-up-from-the-ui)
- [Farewell to the following](#farewell-to-the-following)
- [Other noteworthy changes](#other-noteworthy-changes)
- [Full-screen code editors](#full-screen-code-editors)
- [Improved dashboard creation experience](#improved-dashboard-creation-experience)
- [Need help? Join the community!](#need-help-join-the-community)
- [Backward-incompatible changes](#backward-incompatible-changes)
- [All changes](#all-changes)
## Let Assist ask the questions!
In our latest [roadmap](/blog/2025/05/09/roadmap-2025h1/), we shared our goal to make Assist more conversational. Until now, Assist was mostly transactional, meaning when you would say something, you would get a response or it would perform an action, and that would be the end of it (unless some LLM magic jumped in). With this release, we're taking a big step forward: meet the new Ask Question action.
This lets you build custom conversations from the comfort of our automation engine. Ask a question, handle the answer, and keep the interaction going.
<img class="no-shadow" alt="The new 'Ask Question' action" src="/images/blog/2025-07/ask_question.png" />
This action even allows you to define expected answers so that our extremely fast speech engine, Speech-to-Phrase, can train on them. Yes, fully local, custom conversations!
To help you get started, we have provided a blueprint that covers the most common use case --- Asking a closed Yes/No question:
{% my blueprint_import badge blueprint_url="https://www.home-assistant.io/blueprints/blog/2025-07/ask_yes_no_question.yaml" %}
This blueprint allows you to focus on what you want to do if you answer positively or negatively to any question that your voice assistant will ask. The blueprint supports 50 different ways of saying “Yes” and “No” (including phrases like “Make it so” and “Lets not”). Here it is in action!
<lite-youtube videoid="m-Vgr-9DtUU" videotitle="Local conversations are supported with Assist"></lite-youtube>
In case you want to dive deeper into conversation building, here is an example on how to ask a question and process the different answers:
{% details "Example YAML automation actions" %}
This example asks the user what kind of music they want to listen to, and then plays the selected genre or artist on a media player.
{% raw %}
```yaml
actions:
- action: assist_satellite.ask_question
data:
entity_id: assist_satellite.living_room_voice_assistant
preannounce: true # optional
preannounce_media_id: media-source://... # optional
question: "What kind of music do you want to listen to?"
answers:
- id: genre
sentences:
- "genre {genre}"
- id: artist
sentences:
- "artist {artist}"
response_variable: answer
- choose:
- conditions: "{{ answer.id == 'genre' }}"
sequence:
- action: music_assistant.play_media
data:
media_id: "My {{ answer.slots.genre }} playlist"
media_type: playlist
target:
entity_id: media_player.living_room_speakers
- conditions: "{{ answer.id == 'artist' }}"
sequence:
- action: music_assistant.play_media
data:
media_id: "{{ answer.slots.artist }}"
media_type: artist
target:
entity_id: media_player.living_room_speakers
```
{% endraw %}
{% enddetails %}
## Redesigned Area card
Originally introduced a few years ago, the [Area card](/dashboards/area/) offered a way to display an {% term area %} overview within the dashboard. However, it wasn't fully compatible with the [Sections](/dashboards/sections/) dashboard, which limited its practical use in that context.
The card has now been completely redesigned with a look and feel similar to the [Tile card](/dashboards/tile/). It integrates seamlessly into the Sections dashboard thanks to its flexible layouts. You can choose between a compact version that shows only an icon and the area name, or a more detailed view featuring elements like your camera feed and buttons to toggle your lights or fans.
<img class="no-shadow" alt="Screenshot showing multiple configurations of the revamped area card." src="/images/blog/2025-07/area-card.png" />
The control section itself has also been revamped, allowing you to choose which controls to include and rearrange them as you want. As a result of these changes, if youre currently using the area cards, youll need to reconfigure the controls on them.
Additionally, the card now supports controlling [cover](/integrations/cover/) {% term entities %}.
## Improving the Areas dashboard overview
The April release introduced an experimental [Areas dashboard](/dashboards/dashboards/#areas-dashboard), designed to automatically generate a ready-to-use interface based on the configured areas within the home. However, the preview could become cluttered if you had a lot of devices in a room.
This release introduces an all-new overview that leverages the redesigned Area card, making it easy to view and control your main devices by room with a single click. It also acts as a navigation hub, giving you quick access to detailed views of each area.
<img class="no-shadow" alt="Screenshot showing the new area dashboard using the new area cards." src="/images/blog/2025-07/areas-dashboard.png" />
## Integration sub-entries
Ever wondered why you had to enter your API keys for every AI agent you created, even though they all used the same key? Or why you had to authenticate for every calendar you added, regardless of the fact that they all shared the same account? Or why you couldnt add MQTT devices from the UI?
This release solves that with the introduction of integration sub-entries. This allows you to add a sub-entry to an existing {% term integration %} entry. In practice, this means that your {% term integration %} entry has your credentials, and all the sub-entries use these credentials. In the sub-entry, you can then configure what should be done with these credentials, such as fetching a specific calendar, adding three AI agents with different prompts using the same OpenAI account, or in the case of MQTT, configuring devices that are connected to your MQTT broker.
<img class="no-shadow" alt="Screenshot showing how you can now add MQTT devices directly through the user interface." src="/images/blog/2025-07/add-mqtt-device-using-sub-entry.png" />
The following {% term integrations %} now support sub-entries as of this release: [Anthropic], [Google Generative AI], [MQTT], [Ollama], [OpenAI Conversation], and [Telegram Bot].
[Anthropic]: /integrations/anthropic
[Google Generative AI]: /integrations/google_generative_ai_conversation
[MQTT]: /integrations/mqtt
[Ollama]: /integrations/ollama
[OpenAI Conversation]: /integrations/openai_conversation
[Telegram Bot]: /integrations/telegram_bot
## Integration page gets an overhaul
The {% term integration %} page got a big overhaul! It now has support for sub-entries, allowing you to easily add a sub-entry to an {% term integration %} entry along with being able to see which devices and services belong to which sub-entry.
But we took the opportunity to do more. Instead of just showing your {% term integration %} entries, it now also shows the devices and services provided by that configuration entry. This makes it much easier to manage your devices and see the relationship between your devices and their {% term integrations %} at a glance.
<img class="no-shadow" alt="Screenshot showing the overhauled integration page, showcasing multiple personalities for the OpenAI Conversation integration." src="/images/blog/2025-07/new-integrations-page.png" />
## Integrations
Thanks to our community for keeping pace with the new {% term integrations %}
and improvements to existing ones! Youre all awesome 🥰
### New integrations
We welcome the following new integrations in this release:
- **[Altruist]**, added by [@LoSk-p]
Monitor air quality and environmental conditions with the Altruist sensor, providing local data for temperature, humidity, PM2.5/PM10, CO2, noise levels, and more.
- **[PlayStation Network]**, added by [@JackJPowell]
Integrate with the PlayStation Network to track your currently playing games and display game information on your dashboard.
- **[Tilt Pi]**, added by [@michaelheyman]
Monitor your Tilt Pi hydrometer for brewing temperature and specific gravity measurements during your brewing process.
- **[VegeHub]**, added by [@Thulrus]
Monitor and control your garden with the Vegetronix VegeHub, gathering sensor data and controlling irrigation relays for automated plant care.
[@JackJPowell]: https://github.com/JackJPowell
[@LoSk-p]: https://github.com/LoSk-p
[@michaelheyman]: https://github.com/michaelheyman
[@Thulrus]: https://github.com/Thulrus
[Altruist]: /integrations/altruist
[PlayStation Network]: /integrations/playstation_network
[Tilt Pi]: /integrations/tilt_pi
[VegeHub]: /integrations/vegehub
### Noteworthy improvements to existing integrations
It is not just new {% term integrations %} that have been added; existing
integrations are also being constantly improved. Here are some of the noteworthy
changes to existing integrations:
- Love that song? [@marcelveldt] added a button {% term entity %} to [Music Assistant] that lets you add the currently playing item to your favorites with a single click. It works with queues, external sources, and even radio stations!
- [ESPHome] now supports sub-devices! Thanks to [@bdraco], you can now represent multiple logical devices with a single ESP device in Home Assistant. This is particularly useful for RF bridges, Modbus gateways, and other devices that can control multiple devices. This feature requires the soon-to-be-released ESPHome 2025.7. Awesome addition!
- [Paperless-ngx] now includes an update {% term entity %} to keep your document management system up to date. Thanks, [@fvgarrel]!
- Battery management control has been added to [HomeWizard] with [@DCSBL] implementing battery group mode, allowing you to modify the charging and discharging behavior of your HomeWizard batteries!
- [Reolink] cameras received a ton of love (again) from [@starkillerOG]! New features include IR brightness control, baby cry sensitivity adjustment, privacy mask switches, and full support for both PoE and WiFi floodlights with multiple command ID pushes. Impressive!
- [@mib1185] added an update {% term entity %} to the [Immich] {% term integration %}. Nice!
- The [Homee] {% term integration %} expanded significantly! [@Taraman17] added a siren platform for security alerts and support for the HeatIt Thermostat TF056. Nice!
- Energy monitoring got better in [Adax] with [@parholmdahl] adding energy sensors, so you can track your heating consumption!
- [@ViViDboarder] made [Ollama] more flexible by adding a config option for controlling the think parameter. More control over your local AI!
- Samsung refrigerator owners! [@mswilson] added ice bites control and water filter replacement/usage sensors to the [SmartThings] {% term integration %}.
- [Russound RIO] got a major upgrade from [@noahhusby], adding sub-device support plus new number and switch {% term entities %} for enhanced zone control.
- [@chemelli74] expanded [Alexa Devices] with sensor platforms and additional binary sensors. Now you can get more data from your Echo devices!
- [Matter] keeps growing! [@lboue] added dishwasher alarm support and battery storage capabilities. Thanks!
- YAML fans will appreciate [@frenck] adding unique ID support to [Trend] {% term integration %} configuration.
- The [LaMetric] Time got an update {% term entity %} as well, thanks [@joostlek]!
- [Google Generative AI] now defaults to the newer, faster Gemini 2.5 Flash model. A noteworthy performance boost by [@tronikos]!
- [Google Generative AI] now supports text-to-speech (TTS) with 30 voices and 24 languages. It supports fine-grained control over style and sound, for example, "Say cheerfully: Have a wonderful day!". Thanks [@lanthaler]!
- [Enphase Envoy] users get detailed DC voltage and current readings from their solar panels thanks to [@Bidski]. This is perfect for monitoring individual panel health and optimizing production!
- [@zerzhang] brought evaporative humidifier support to [SwitchBot], expanding your climate control options.
[@bdraco]: https://github.com/bdraco
[@Bidski]: https://github.com/Bidski
[@chemelli74]: https://github.com/chemelli74
[@DCSBL]: https://github.com/DCSBL
[@frenck]: https://github.com/frenck
[@fvgarrel]: https://github.com/fvgarrel
[@joostlek]: https://github.com/joostlek
[@lanthaler]: https://github.com/lanthaler
[@lboue]: https://github.com/lboue
[@marcelveldt]: https://github.com/marcelveldt
[@mib1185]: https://github.com/mib1185
[@mswilson]: https://github.com/mswilson
[@noahhusby]: https://github.com/noahhusby
[@parholmdahl]: https://github.com/parholmdahl
[@starkillerOG]: https://github.com/starkillerOG
[@Taraman17]: https://github.com/Taraman17
[@tronikos]: https://github.com/tronikos
[@ViViDboarder]: https://github.com/ViViDboarder
[@zerzhang]: https://github.com/zerzhang
[Adax]: /integrations/adax
[Alexa Devices]: /integrations/alexa_devices
[Enphase Envoy]: /integrations/enphase_envoy
[ESPHome]: /integrations/esphome
[Google Generative AI]: /integrations/google_generative_ai_conversation
[Homee]: /integrations/homee
[HomeWizard]: /integrations/homewizard
[Immich]: /integrations/immich
[LaMetric]: /integrations/lametric
[Matter]: /integrations/matter
[Music Assistant]: /integrations/music_assistant
[Ollama]: /integrations/ollama
[Paperless-ngx]: /integrations/paperless_ngx
[Reolink]: /integrations/reolink
[Russound RIO]: /integrations/russound_rio
[SmartThings]: /integrations/smartthings
[SwitchBot]: /integrations/switchbot
[Trend]: /integrations/trend
### Integration quality scale achievements
One thing we are incredibly proud of in Home Assistant is our
[integration quality scale]. This scale helps us and our contributors to ensure
integrations are of high quality, maintainable, and provide the best possible
user experience.
This release, we celebrate several {% term integrations %} that have improved
their quality scale:
- **2 integrations reached platinum** 🏆
- [Bosch Alarm], thanks to [@sanjay900]
- [Home Connect], thanks to [@Diegorro98]
- **1 integration reached gold** 🥇
- [ista EcoTrend], thanks to [@tr4nt0r]
- **1 integration reached silver** 🥈
- [KNX], thanks to [@farmio]
- **2 integrations reached bronze** 🥉
- [Samsung TV], thanks to [@chemelli74]
- [Telegram Bot], thanks to [@hanwg]
This is a huge achievement for these integrations and their maintainers. The
effort and dedication required to reach these quality levels is significant,
as it involves extensive testing, documentation, error handling, and often
complete rewrites of parts of the integration.
A big thank you to all the contributors involved! 👏
[integration quality scale]: https://www.home-assistant.io/docs/quality_scale/
[@chemelli74]: https://github.com/chemelli74
[@Diegorro98]: https://github.com/Diegorro98
[@farmio]: https://github.com/farmio
[@hanwg]: https://github.com/hanwg
[@sanjay900]: https://github.com/sanjay900
[@tr4nt0r]: https://github.com/tr4nt0r
[Bosch Alarm]: /integrations/bosch_alarm
[Home Connect]: /integrations/home_connect
[ista EcoTrend]: /integrations/ista_ecotrend
[KNX]: /integrations/knx
[Samsung TV]: /integrations/samsungtv
[Telegram Bot]: /integrations/telegram_bot
### Now available to set up from the UI
While most {% term integrations %} can be set up directly from the Home Assistant
user interface, some were only available using YAML configuration. We keep moving
more integrations to the UI, making them more accessible for everyone
to set up and use.
The following integration is now available via the Home Assistant UI:
- **[Telegram Bot]**, done by [@hanwg]
### Farewell to the following
The following {% term integrations %} are also no longer available as
of this release:
- **JuiceNet** has been removed as they shut down their API services.
## Other noteworthy changes
There are many more improvements in this release; here are some of the other noteworthy changes:
- [Shopping list] now has a complete intent function that allows you to check off or mark items on your shopping list as completed, making it easier to interact with your shopping lists using voice commands. Thanks, [@Lesekater]!
- Device and {% term entity %} management got better! [@emontnemery] made it so Home Assistant now restores user customizations when you re-add deleted devices or {% term entities %}. No more losing your carefully crafted names and settings!
- The [Template] {% term integration %} received a major boost from [@Petro31]! You can now use variables, icons, and pictures across all compatible template platforms, create trigger-based template alarm control panels, locks, vacuum {% term entities %}, and fans. Plus, there's a new `label_description` template method that allows you to dynamically fetch the description you've added to a label from your templates. This is a noteworthy enhancement for better template organization.
- Camera snapshots just got better! [@edenhaus] added support for taking snapshots via [go2rtc]. There is nothing for you to do on this one, it works out of the box, but it is nice to know snapshots are now faster and take fewer resources from your system.
- [Object selectors] now support fields and multiple selections, thanks to [@piitaya]. These additions are particularly interesting for {% term integration %} and blueprint developers, as they provide much more flexibility in your UI representations.
- Wind direction sensors got a visual upgrade with [@edenhaus] adding range icons for the `wind_direction` sensor device class. Different icons are now shown depending on the state of wind direction sensors, which is indeed a nice visual upgrade!
[@Lesekater]: https://github.com/Lesekater
[@emontnemery]: https://github.com/emontnemery
[@Petro31]: https://github.com/Petro31
[@edenhaus]: https://github.com/edenhaus
[@piitaya]: https://github.com/piitaya
[Shopping list]: /integrations/shopping_list
[Template]: /integrations/template
[go2rtc]: /integrations/go2rtc
[Object selectors]: /docs/blueprint/selectors/#object-selector
## Full-screen code editors
Working with snippets of YAML or templates in Home Assistant just got a BIG improvement! We've added a new full-screen mode for all code editors throughout the interface.
<lite-youtube videoid="VfwcYp7zQzo" videotitle="Full screen code editors in Home Assistant"></lite-youtube>
Whether you're editing automations, scripts, templates, or any other YAML configuration, you can now expand the code editor to take up your entire screen. This is especially helpful when working with longer configurations or when you need more space to see your code clearly.
Simply click the maximize button in the top-right corner of any code editor to enter full screen mode. Press the button again to return to the normal view.
This makes building a more complex and advanced smart home more comfortable and productive, especially on smaller mobile or tablet screens where every pixel of editing space counts!
## Improved dashboard creation experience
The dialog for adding a new dashboard has been redesigned with a cleaner interface that matches recent redesigns we've seen to other dialogs. This improvement was designed by [@marcinbauer85] and implemented by [@quinnter]. Great teamwork!
<img class="no-shadow" alt="Screenshot showing the new and improved add dashboard dialog" src="/images/blog/2025-07/improved-add-dashboard-dialog.png" />
[@marcinbauer85]: https://github.com/marcinbauer85
[@quinnter]: https://github.com/quinnter
## Need help? Join the community!
Home Assistant has a great community of users who are all more than willing
to help each other out. So, join us!
Our very active [Discord chat server](/join-chat) is an excellent place to be,
and don't forget to join our amazing [forums](https://community.home-assistant.io/).
Found a bug or issue? Please report it in our [issue tracker](https://github.com/home-assistant/core/issues)
to get it fixed! Or check [our help page](/help) for guidance on more
places you can go.
Are you more into email? [Sign up for the Open Home Foundation Newsletter](/newsletter)
to get the latest news about features, things happening in our community, and other projects that support the Open Home straight into your inbox.
## Backward-incompatible changes
We do our best to avoid making changes to existing functionality that might unexpectedly impact your Home Assistant installation. Unfortunately, sometimes, it is inevitable.
We always make sure to document these changes to make the transition as easy as
possible for you. This release has the following backward-incompatible changes:
{% details "Google Calendar" %}
The previously deprecated Google Calendar `add_event` {% term action %} has been removed and replaced by the `create_event` entity-based {% term action %}.
If you use the `add_event` {% term action %} in your automations or scripts, you will need to update them to use the new `create_event` {% term action %} instead.
([@epenet] - [#146432]) ([google docs])
[@epenet]: https://github.com/epenet
[#146432]: https://github.com/home-assistant/core/pull/146432
[google docs]: /integrations/google
{% enddetails %}
{% details "Meater" %}
The states of the Meater probe cook state have been changed to
support translations and make them more consistent with other integrations.
The following states have been changed:
- `Not Started` -> `not_started`
- `Configured` -> `configured`
- `Started` -> `started`
- `Ready For Resting` -> `ready_for_resting`
- `Resting` -> `resting`
- `Slightly Underdone` -> `slightly_underdone`
- `Finished` -> `finished`
- `Slightly Overdone` -> `slightly_overdone`
- `OVERCOOK!` -> `overcooked`
If you use these states in your automations or scripts, you will need to update them to use the new state values.
([@joostlek] - [#146958]) ([meater docs])
[@joostlek]: https://github.com/joostlek
[#146958]: https://github.com/home-assistant/core/pull/146958
[meater docs]: /integrations/meater
{% enddetails %}
{% details "Miele" %}
The internal representation of states for hob plates has changed. This is a breaking change when these states are used in automations or templates.
No user action is needed if these hob state sensors are used for visual display only.
Please review and update applicable automations and templates according to the following state changes:
- `0` -> `plate_step_0`
- `1` -> `plate_step_1`
- ...
- `18` -> `plate_step_18`
- `110` -> `plate_step_warm`
- `117` -> `plate_step_boost`
- `118` -> `plate_step_boost`
- `217` -> `plate_step_boost`
- `220` -> `plate_step_warm`
If you use these states in your automations or scripts, you will need to update them to use the new state values.
([@astrandb] - [#144992]) ([miele docs])
[@astrandb]: https://github.com/astrandb
[#144992]: https://github.com/home-assistant/core/pull/144992
[miele docs]: /integrations/miele
{% enddetails %}
{% details "Plex Media Server" %}
The previously deprecated `plex.scan_for_clients` {% term action %} has been removed in favor of the "Scan Clients" `button` {% term entity %}. If you use this {% term action %} in your automations or scripts, you will need to update them to use the new {% term entity %} instead.
([@epenet] - [#146608]) ([plex docs])
[@epenet]: https://github.com/epenet
[#146608]: https://github.com/home-assistant/core/pull/146608
[plex docs]: /integrations/plex
{% enddetails %}
If you are a custom integration developer and want to learn about changes and
new features available for your integration: Be sure to follow our
[developer blog][devblog].
[devblog]: https://developers.home-assistant.io/blog/
## All changes
Of course, there is a lot more in this release. You can find a list of all changes made here: [Full changelog for Home Assistant Core 2025.7](/changelogs/core-2025.7)

View File

@ -0,0 +1,257 @@
blueprint:
name: Ask a Yes/No question
description: |
Ask a simple Yes/No question. Supports 50 different ways of confirming or rejecting the question. Supports retries.
domain: script
author: JLo
homeassistant:
min_version: 2025.6.99
input:
question:
name: Question
description: The question that will be asked by the voice assistant.
selector:
text:
yes_section:
name: Confirmation ('Yes', 'Of course', ...)
description: Define what should happen if you reply positively to the question asked.
icon: mdi:play
input:
yes_actions:
name: Actions
description: Actions to perform if you reply positively to the question asked.
default: []
selector:
action:
yes_answer:
name: Answer
description: Answer of the voice assistant if you reply positively to the question asked.
default: "Done"
selector:
text:
no_section:
name: Rejection ('No', 'Negative', ...)
description: Define what should happen if you reply negatively to the question asked.
icon: mdi:stop
input:
no_actions:
name: Actions
description: Actions to perform if you reply negatively to the question asked.
default: []
selector:
action:
no_answer:
name: Answer
description: Answer of the voice assistant if you reply negatively to the question asked.
default: "Action cancelled"
selector:
text:
other_section:
name: Other responses
description: Define what should happen if the response is not understood.
icon: mdi:help
collapsed: true
input:
other_actions:
name: Actions
description: Actions to perform if the response is not understood.
default: []
selector:
action:
other_answer:
name: Answer
description: Answer of the voice assistant if the response is not understood.
default: "Sorry, I couldn't understand that"
selector:
text:
repeat_section:
name: Advanced parameters (Retries)
description: Define how many times the question should be asked if the answer is not understood.
icon: mdi:cog
collapsed: true
input:
number_of_retries:
name: Number of retries
description: Number of times the question should be re-asked if the answer is not understood.
default: 0
selector:
number:
min: 0
max: 10
mode: slider
fields:
voice_assistant:
name: Voice assistant
description: The voice assistant that will be used for that conversation.
required: true
selector:
entity:
multiple: false
filter:
- domain: assist_satellite
preannounce:
name: Preannounce
description: Play a sound before the question is asked.
required: true
default: true
selector:
boolean:
sequence:
- variables:
number_of_retries: !input number_of_retries
- repeat:
sequence:
- action: assist_satellite.ask_question
continue_on_error: true
data:
question: !input question
preannounce: "{{preannounce}}"
entity_id: "{{voice_assistant}}"
answers:
- id: "yes"
sentences:
- "Yes"
- Sure
- Absolutely
- Go ahead
- Please do
- Of course
- That's fine
- Do it
- Yep
- Yeah
- Ok
- Okay
- Affirmative
- I agree
- Sounds good
- You got it
- Definitely
- By all means
- Why not
- Indeed
- Confirmed
- Let's do it
- Certainly
- Right
- Fine
- All good
- Make it so
- I approve
- That's right
- I'm okay with that
- No problem
- Go for it
- Sounds fine
- I'm on board
- Proceed
- It's a yes
- I'm in
- Okay yes
- That's a yes
- Yeah go ahead
- I'm good with that
- Positive
- Do that
- It's okay
- Works for me
- I'm fine with that
- Yep do it
- Please go ahead
- That's what I want
- Exactly
- id: "no"
sentences:
- "No"
- Nope
- Don't
- Please don't
- No thank you
- I don't think so
- Not now
- That's a no
- I'd rather not
- No way
- Not really
- Cancel that
- Negative
- Stop
- Don't do it
- I said no
- No need
- Never mind
- Not necessary
- No that's not right
- I disagree
- Skip it
- Don't proceed
- I don't want that
- Don't go ahead
- Leave it
- That's incorrect
- I prefer not to
- No thanks
- I'm not okay with that
- I'm saying no
- Let's not
- Not this time
- I'm not in
- Please don't do that
- Don't take action
- I'd say no
- No action needed
- I'm against that
- I'd skip it
- Rather not
- Not today
- I'm not sure better not
- That's not what I want
- That won't be necessary
- I don't agree
- No that's wrong
- Let's skip that
- I'm not comfortable with that
response_variable: response
- choose:
- conditions:
- condition: template
value_template: "{{response.id == 'yes'}}"
sequence:
- sequence: !input yes_actions
- action: assist_satellite.announce
metadata: {}
data:
message: !input yes_answer
preannounce: false
target:
entity_id: "{{voice_assistant}}"
- conditions:
- condition: template
value_template: "{{response.id == 'no'}}"
sequence:
- sequence: !input no_actions
- action: assist_satellite.announce
metadata: {}
data:
message: !input no_answer
preannounce: false
target:
entity_id: "{{voice_assistant}}"
default:
- sequence: !input other_actions
- action: assist_satellite.announce
metadata: {}
data:
message: !input other_answer
preannounce: false
target:
entity_id: "{{voice_assistant}}"
until:
- condition: template
value_template: "{{ (response is defined and response.id in ['yes','no']) or repeat.index > number_of_retries}}"

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

View File

@ -13,7 +13,80 @@ toc: true
kinds of skill levels.
</p>
</div>
<h2>About installation methods</h2>
<p>
Home Assistant offers two different installation methods. Home Assistant Operating System is the recommended installation method.
</p>
<ul>
<li><b>Home Assistant Operating System</b>: An embedded,
minimalistic operating system designed to run the Home Assistant ecosystem
on single board computers (like the Home Assistant Green or a Raspberry Pi) or Virtual Machines. It
is the most convenient option in terms of installation and maintenance and it supports
{% term "add-ons" %}. Home Assistant Operating System is
the recommended installation method for most users.</li>
<li>
<b>Home Assistant Container:</b> Container-based installation of Home Assistant. You need to bring your own system (such as Linux) with container orchestration (like Docker), and manually handle updates. Home Assistant Container installations dont have access to {% term "add-ons" %}.
</li>
</ul>
<div class="compare-installations">
<table>
<thead>
<tr>
<th></th>
<th>HA OS<sup>1</sup></th>
<th>Container<sup>1</sup></th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/docs/automation" target="_blank">Automations</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:check-mark" %}</td>
</tr>
<tr>
<td><a href="/dashboards" target="_blank">Dashboards</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:check-mark" %}</td>
</tr>
<tr>
<td><a href="/integrations" target="_blank">Integrations</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:check-mark" %}</td>
</tr>
<tr>
<td><a href="/addons" target="_blank">Add-ons</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:cross-mark" %}</td>
</tr>
<tr>
<td><a href="/docs/blueprint" target="_blank">Blueprints</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:check-mark" %}</td>
</tr>
<tr>
<td>
One-click updates
</td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:cross-mark" %}</td>
</tr>
<tr>
<td><a href="/common-tasks/general/#backups" target="_blank">Backups</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:check-mark" %}</td>
</tr>
</table>
</div>
<sub
>1: Names are abbreviated. The full names of the installation methods are:
<ul>
<li style="margin-top: 0.4em">Home Assistant Operating System</li>
<li style="margin-top: 15px">Home Assistant Container</li>
</ul></sub
>
<p>
<div class="installations">
<span class="label easiest">Easiest</span>
@ -254,90 +327,6 @@ toc: true
<span class="label expert">Expert</span>
<h2>About installation methods</h2>
<p>
Home Assistant offers two different installation methods:
</p>
<ul>
<li><b>Home Assistant Operating System</b>: An embedded,
minimalistic operating system designed to run the Home Assistant ecosystem
on single board computers (like the Home Assistant Green or a Raspberry Pi) or Virtual Machines. It
is the most convenient option in terms of installation and maintenance and it supports
{% term "add-ons" %}. Home Assistant Operating System is
the recommended installation method for most users.</li>
<li>
<b>Home Assistant Container:</b>Container-based installation of Home Assistant. You need to bring your own system (such as Linux) with container orchestration (like Docker), and manually handle updates. Home Assistant Container installations dont have access to {% term "add-ons" %}.
</li>
</ul>
<div class="compare-installations">
<table>
<th></th>
<th>HA OS<sup>1</sup></th>
<th>Container<sup>1</sup></th>
<tr>
<td><a href="/docs/automation" target="_blank">Automations</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:check-mark" %}</td>
</tr>
<tr>
<td><a href="/dashboards" target="_blank">Dashboards</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:check-mark" %}</td>
</tr>
<tr>
<td><a href="/integrations" target="_blank">Integrations</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:check-mark" %}</td>
</tr>
<tr>
<td><a href="/addons" target="_blank">Add-ons</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:cross-mark" %}</td>
</tr>
<tr>
<td><a href="/docs/blueprint" target="_blank">Blueprints</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:check-mark" %}</td>
</tr>
<tr>
<td>
One-click updates
</td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:cross-mark" %}</td>
</tr>
<tr>
<td><a href="/common-tasks/general/#backups" target="_blank">Backups</a></td>
<td>{% icon "openmoji:check-mark" %}</td>
<td>{% icon "openmoji:check-mark" %}</td>
</tr>
</table>
</div>
<sub
>1: Names are abbreviated. The full names of the installation methods are:
<ul>
<li style="margin-top: 0.4em">Home Assistant Operating System</li>
<li style="margin-top: 15px">Home Assistant Container</li>
</ul></sub
>
<p>
</p>
<h3>Deprecated installation methods</h3>
<p>
Home Assistant used to offer two additional installation methods for advanced users: <b>{% term "Home Assistant Core" %}</b> and <b>{% term "Home Assistant Supervised" %}</b>. These two methods are now <a href="https://www.home-assistant.io/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/">deprecated and no longer recommended for new users</a>.
</p>
<ul>
<li>
<b>Home Assistant Supervised:</b> Manual installation of the Supervisor.
</li>
<li>
<b>Home Assistant Core:</b> Manual installation using Python virtual
environment.
</li>
</ul>
<p></p>
<div class="installations-card">
<div class="material-card text">
<div class="content-container">
@ -521,3 +510,18 @@ toc: true
</div>
</div>
</div>
<h3>Deprecated installation methods</h3>
<p>
Home Assistant used to offer two additional installation methods for advanced users: <b>{% term "Home Assistant Core" %}</b> and <b>{% term "Home Assistant Supervised" %}</b>. These two methods are now <a href="https://www.home-assistant.io/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/">deprecated and no longer recommended for new users</a>.
</p>
<ul>
<li>
<b>Home Assistant Supervised:</b> Manual installation of the Supervisor.
</li>
<li>
<b>Home Assistant Core:</b> Manual installation using Python virtual
environment.
</li>
</ul>
<p></p>