Merge branch 'current' into next
@ -1,6 +1,20 @@
|
||||
{
|
||||
"filters": {
|
||||
"comments": true
|
||||
"comments": true,
|
||||
"allowlist": {
|
||||
"allow": [
|
||||
"2fa:",
|
||||
"alexa:",
|
||||
"homeassistant:",
|
||||
"homekit:",
|
||||
"led:",
|
||||
"sms:",
|
||||
"sql:",
|
||||
"ssl:",
|
||||
"twitter:",
|
||||
"url:"
|
||||
]
|
||||
}
|
||||
},
|
||||
"rules": {
|
||||
"common-misspellings": {
|
||||
|
24
CODEOWNERS
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
@ -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"
|
||||
|
@ -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'>
|
||||
|
@ -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'>
|
||||
|
@ -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'>
|
||||
|
@ -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.
|
||||
|
@ -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):
|
||||
|
@ -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 %}
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -239,4 +239,3 @@ actions:
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_dhcp: true
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
|
@ -20,7 +20,7 @@ ha_platforms:
|
||||
- sensor
|
||||
- switch
|
||||
ha_integration_type: device
|
||||
ha_quality_scale: bronze
|
||||
ha_quality_scale: platinum
|
||||
ha_dhcp: true
|
||||
---
|
||||
|
||||
|
@ -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:
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_dhcp: true
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
|
@ -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:
|
||||
|
@ -15,6 +15,7 @@ ha_platforms:
|
||||
- button
|
||||
- diagnostics
|
||||
- number
|
||||
- select
|
||||
- sensor
|
||||
- switch
|
||||
ha_iot_class: Local Polling
|
||||
|
@ -31,6 +31,7 @@ ha_platforms:
|
||||
- switch
|
||||
- time
|
||||
ha_iot_class: Cloud Push
|
||||
ha_dhcp: true
|
||||
ha_zeroconf: true
|
||||
---
|
||||
|
||||
|
@ -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
|
||||
---
|
||||
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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 %}
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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:
|
||||
|
@ -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 %}
|
||||
|
@ -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.
|
||||
|
@ -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".
|
||||
|
@ -11,6 +11,7 @@ ha_codeowners:
|
||||
- '@emontnemery'
|
||||
ha_domain: meater
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
- sensor
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -10,6 +10,7 @@ ha_codeowners:
|
||||
- '@music-assistant'
|
||||
ha_domain: music_assistant
|
||||
ha_platforms:
|
||||
- button
|
||||
- media_player
|
||||
ha_zeroconf: true
|
||||
ha_integration_type: integration
|
||||
|
@ -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 %}
|
||||
|
@ -13,6 +13,7 @@ ha_integration_type: integration
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
- notify
|
||||
- sensor
|
||||
ha_quality_scale: bronze
|
||||
---
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -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 %}
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
@ -12,6 +12,7 @@ ha_platforms:
|
||||
- diagnostics
|
||||
ha_codeowners:
|
||||
- '@Thomas55555'
|
||||
- '@allenporter'
|
||||
ha_integration_type: service
|
||||
ha_quality_scale: silver
|
||||
---
|
||||
|
@ -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/).
|
||||
|
@ -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 %}
|
||||
|
||||
|
@ -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 %}
|
@ -10,7 +10,6 @@ ha_codeowners:
|
||||
- '@frenck'
|
||||
- '@joostlek'
|
||||
ha_domain: spotify
|
||||
ha_zeroconf: true
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
- media_player
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
47
source/_integrations/switchbot_matter.markdown
Normal 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)
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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`.
|
||||
|
@ -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.
|
||||
|
@ -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 %}
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
167
source/_posts/2025-06-25-voice-chapter-10.markdown
Normal 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).
|
@ -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 you’re interested in SwitchBot’s Bluetooth products but your Home Assistant system doesn’t 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 SwitchBot’s 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.
|
471
source/_posts/2025-07-02-release-20257.markdown
Normal 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 “Let’s 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 you’re currently using the area cards, you’ll 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 couldn’t 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! You’re 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)
|
257
source/blueprints/blog/2025-07/ask_yes_no_question.yaml
Normal 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}}"
|
1195
source/changelogs/core-2025.7.markdown
Normal file
BIN
source/images/blog/2025-06-switchbot/art.jpg
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
source/images/blog/2025-06-switchbot/vacuum.jpg
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
source/images/blog/2025-06-voice-chapter-10/art.png
Normal file
After Width: | Height: | Size: 168 KiB |
BIN
source/images/blog/2025-06-voice-chapter-10/circuits.png
Normal file
After Width: | Height: | Size: 121 KiB |
BIN
source/images/blog/2025-06-voice-chapter-10/devices.jpg
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
source/images/blog/2025-06-voice-chapter-10/intents.png
Normal file
After Width: | Height: | Size: 210 KiB |
BIN
source/images/blog/2025-07/add-mqtt-device-using-sub-entry.png
Normal file
After Width: | Height: | Size: 139 KiB |
BIN
source/images/blog/2025-07/area-card.png
Normal file
After Width: | Height: | Size: 118 KiB |
BIN
source/images/blog/2025-07/areas-dashboard.png
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
source/images/blog/2025-07/ask_question.png
Normal file
After Width: | Height: | Size: 93 KiB |
BIN
source/images/blog/2025-07/improved-add-dashboard-dialog.png
Normal file
After Width: | Height: | Size: 167 KiB |
BIN
source/images/blog/2025-07/new-integrations-page.png
Normal file
After Width: | Height: | Size: 135 KiB |
BIN
source/images/blog/2025-07/social.png
Normal file
After Width: | Height: | Size: 276 KiB |
@ -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 don’t 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 don’t 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>
|