Looking for your configuration file?
diff --git a/plugins/output_modder.rb b/plugins/output_modder.rb
index a4ca095d796..b1b9fedb341 100644
--- a/plugins/output_modder.rb
+++ b/plugins/output_modder.rb
@@ -41,15 +41,28 @@ module Jekyll
link.set_attribute('rel', rel.join(' ').strip)
end
- # Find all headers, make them linkable
+ # Find all headers, make them linkable with unique slug names
+ used_slugs = {}
+
dom.css('h2,h3,h4,h5,h6,h7,h8').each do |header|
+ # Skip linked headers
+ next if header.at_css('a')
- # Skip linked headers
- next if header.at_css('a')
-
- title = header.content
- slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
- header.children = "#{title} "
+ title = header.content
+
+ # Clean the title to create a slug
+ base_slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
+
+ # Make slug unique by adding counter if needed
+ if used_slugs[base_slug]
+ used_slugs[base_slug] += 1
+ slug = "#{base_slug}-#{used_slugs[base_slug] - 1}"
+ else
+ used_slugs[base_slug] = 1
+ slug = base_slug
+ end
+
+ header.children = "#{title} "
end
dom.to_s
diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml
index ae0bd776361..f60b457e083 100644
--- a/source/_data/glossary.yml
+++ b/source/_data/glossary.yml
@@ -636,3 +636,7 @@
link: /integrations/zone/
aliases:
- zones
+- term: Long-term statistics
+ definition: >-
+ Home Assistant saves long-term statistics for a sensor if the entity has a state_class of measurement, total, or total_increasing. For short-term statistics, a snapshot is taken every 5 minutes. For long-term statistics, an hourly aggregate is stored of the short-term statistics. Short-term statistics are automatically purged after a predefined period (default is 10 days). Long-term statistics are never purged.
+ link: /blog/2021/08/04/release-20218/#long-term-statistics
diff --git a/source/_data/people.yml b/source/_data/people.yml
index 16043925a3d..67325df442b 100644
--- a/source/_data/people.yml
+++ b/source/_data/people.yml
@@ -96,4 +96,8 @@ Annika Schulz:
Miranda Bishop:
name: Miranda Bishop
- github: miranda-gb
\ No newline at end of file
+ github: miranda-gb
+
+Timothy Nibeaudeau:
+ name: Timothy Nibeaudeau
+ github: timoPtr
diff --git a/source/_docs/automation/using_blueprints.markdown b/source/_docs/automation/using_blueprints.markdown
index ffa50ecdcb4..ce6834b1262 100644
--- a/source/_docs/automation/using_blueprints.markdown
+++ b/source/_docs/automation/using_blueprints.markdown
@@ -75,7 +75,7 @@ The quickest way to get these changes, is by re-importing the blueprint. This wi
### To re-import a blueprint
1. Go to **{% my blueprints title="Settings > Automations & Scenes > Blueprints" %}**.
-2. On the blueprint that you want to re-import, select the three-dot menu, and select **Re-import blueprint**.
+2. On the blueprint that you want to re-import, select the three dots {% icon "mdi:dots-vertical" %} menu, and select **Re-import blueprint**.
## Updating an imported blueprint in YAML
diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown
index b18757b872c..d914b288ef2 100644
--- a/source/_docs/blueprint/selectors.markdown
+++ b/source/_docs/blueprint/selectors.markdown
@@ -1203,8 +1203,8 @@ When used with a `schema`, the selector will force the object to be in this form
```yaml
object:
- label_key: name
- description_key: percentage
+ label_field: name
+ description_field: percentage
multiple: true
fields:
name:
@@ -1437,7 +1437,7 @@ For example: `heat_cool`.
## Statistic selector
The statistic selector selects the statistic ID of an entity that records
-long-term statistics. It may resemble an entity ID (like `sensor.temperature`),
+{% term "Long-term statistics" %}. It may resemble an entity ID (like `sensor.temperature`),
or an external statistic ID (like `external:temperature`).

diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown
index 41107da42e7..9ca1d9be1ee 100644
--- a/source/_docs/configuration/troubleshooting.markdown
+++ b/source/_docs/configuration/troubleshooting.markdown
@@ -127,7 +127,7 @@ Once you enable debug logging, you ideally need to make the error happen. Run yo
### Download diagnostics
-After you download logs, you will also want to download the diagnostics for the integration giving you trouble. If the integration provides diagnostics, it will appear in the three dot menu next to the integration configuration.
+After you download logs, you will also want to download the diagnostics for the integration giving you trouble. If the integration provides diagnostics, it will appear in the three dots {% icon "mdi:dots-vertical" %} menu next to the integration configuration.
diff --git a/source/_docs/organizing/areas.markdown b/source/_docs/organizing/areas.markdown
index e91254d5892..16e9ad03842 100644
--- a/source/_docs/organizing/areas.markdown
+++ b/source/_docs/organizing/areas.markdown
@@ -93,7 +93,7 @@ Follow these steps to delete an area. It will be removed from all the floors it
If you used this area in automations or script as targets, or with voice assistant, these will no longer work.
1. Go to {% my areas title="**Settings** > **Areas, labels & zones**" %} and select the area card.
-2. In the top right corner, select the three dot menu. Then, select **Delete**.
+2. In the top right corner, select the three dots {% icon "mdi:dots-vertical" %} menu. Then, select **Delete**.

diff --git a/source/_docs/organizing/categories.markdown b/source/_docs/organizing/categories.markdown
index 3fd569de1ab..305adc8b6fa 100644
--- a/source/_docs/organizing/categories.markdown
+++ b/source/_docs/organizing/categories.markdown
@@ -52,7 +52,7 @@ To rename or delete a category, follow these steps:
2. In the top left, select the **Filters** button.

-3. In the list, find the category you want to edit and select the three dot menu next to it.
+3. In the list, find the category you want to edit and select the three dots {% icon "mdi:dots-vertical" %} menu next to it.
4. Select **Edit category** or **Delete category**.

diff --git a/source/_docs/tools/dev-tools.markdown b/source/_docs/tools/dev-tools.markdown
index bc2000d9149..9eb0807d349 100644
--- a/source/_docs/tools/dev-tools.markdown
+++ b/source/_docs/tools/dev-tools.markdown
@@ -28,7 +28,7 @@ The Developer Tools is meant for **all** (not just for the developers) to quickl
The YAML tab provides buttons to trigger a check of configuration files and to reload the configuration. Reloading is needed to apply changes that you've made to the configuration.
-It is almost the same as the option under **Settings** > three dot menu (top right) > **Restart Home Assistant** > **Quick reload**. The only difference is that **Quick reload** reloads all the configuration, whereas this YAML tab allows you to only reload one specific configuration at a time.
+It is almost the same as the option under **Settings** > three dots {% icon "mdi:dots-vertical" %} menu (top right) > **Restart Home Assistant** > **Quick reload**. The only difference is that **Quick reload** reloads all the configuration, whereas this YAML tab allows you to only reload one specific configuration at a time.
### Reloading the YAML configuration
diff --git a/source/_includes/asides/about.html b/source/_includes/asides/about.html
index 094a972b38a..f850359baef 100644
--- a/source/_includes/asides/about.html
+++ b/source/_includes/asides/about.html
@@ -6,7 +6,7 @@
diff --git a/source/_includes/common-tasks/beta_version.md b/source/_includes/common-tasks/beta_version.md
index c354235b6ae..20800feada9 100644
--- a/source/_includes/common-tasks/beta_version.md
+++ b/source/_includes/common-tasks/beta_version.md
@@ -10,7 +10,7 @@ If you would like to test next release before anyone else, you can install the b
content: |
1. In Home Assistant, go to {% my updates title="**System** > **Updates**" %}.
- 2. In the top-right corner, select the three-dots menu.
+ 2. In the top-right corner, select the three dots {% icon "mdi:dots-vertical" %} menu.
3. Select **Join beta**.
4. Go to the {% my configuration title="**Configuration**" %} panel.
5. Install the update that is presented to you.
diff --git a/source/_includes/common-tasks/define_custom_polling.md b/source/_includes/common-tasks/define_custom_polling.md
index 4ebe15c5301..4db9e3fbeb1 100644
--- a/source/_includes/common-tasks/define_custom_polling.md
+++ b/source/_includes/common-tasks/define_custom_polling.md
@@ -13,5 +13,6 @@ To add the automation:
- Define any trigger and condition you like.
- Select **Add action**, then, select **Other actions**.
- Select **Perform action**, and from the list, select the [`homeassistant.update_entity` action](/integrations/homeassistant/#action-homeassistantupdate_entity).
+ - Choose your targets by selecting the **Choose area**, **Choose device**, **Choose entity**, or **Choose label** buttons.

4. Save your new automation to poll for data.
diff --git a/source/_includes/common-tasks/specific_version.md b/source/_includes/common-tasks/specific_version.md
index 7ab67ae0af6..038c031e9a4 100644
--- a/source/_includes/common-tasks/specific_version.md
+++ b/source/_includes/common-tasks/specific_version.md
@@ -12,7 +12,7 @@ In the event that a Home Assistant Core version doesn't play well with your hard
{% if page.installation == "os"%}
-To upgrade to a specific version, you can use the CLI. The example below shows how to upgrade to `{{current_version}}`.
+To upgrade to a specific version, you can use the command line (CLI). The example below shows how to upgrade to `{{current_version}}`. To learn how to get started with the command line in Home Assistant, refer to the [SSH add-on setup instructions](/common-tasks/os/#installing-and-using-the-ssh-add-on).
```bash
ha core update --version {{current_version}} --backup
diff --git a/source/_includes/energy/ct_clamp.md b/source/_includes/energy/ct_clamp.md
index 953ead1269b..d6178bd3001 100644
--- a/source/_includes/energy/ct_clamp.md
+++ b/source/_includes/energy/ct_clamp.md
@@ -1,6 +1,6 @@
Current transformer (CT) clamp sensors measure your energy usage by looking at the current passing through an electrical wire. This makes it possible to calculate the energy usage. In Home Assistant we have support for off-the-shelf CT clamp sensors or you can build your own.
-- The off-the-shelf solution that we advise is the [Shelly EM](https://www.shelly.com/en/products/shop/shelly-em-120a/shelly-em-50a?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality [integration](/integrations/shelly/).
+- The off-the-shelf solution that we advise is the [Shelly EM](https://www.shelly.com/products/shelly-em-50a-clamp-1?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality [integration](/integrations/shelly/).
- You can build your own using ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp.html) or energy meter sensors like the [ATM90E32](https://esphome.io/components/sensor/atm90e32.html). For the DIY route, check out [this video by digiblur](https://www.youtube.com/watch?v=n2XZzciz0s4) to get started.
- Using a Raspberry Pi, you can use a CT clamp HAT from LeChacal called [RPICT hats](https://lechacal.com/docs/RPICT/Raspberrypi_Current_and_Temperature_Sensor_Adaptor/). They can be stacked to expand the number of lines to monitor. They also provide Active, Apparent, and Reactive power and power factor for single-phase and three-phase installations. They integrate with Home Assistant using MQTT.
diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md
index 836b364d596..876c1cd775f 100644
--- a/source/_includes/installation/operating_system.md
+++ b/source/_includes/installation/operating_system.md
@@ -134,6 +134,8 @@ To write the HAOS image to the boot medium on your x86-64 hardware, there are 2
- If you are getting an **Error unmounting filesystem** error message, stating that the **target is busy**:
- Most likely, you are running Ubuntu on your internal disk. Instead, you need to run it on your stick.
- Go back to step 3 and during start up, make sure you select **Try Ubuntu** (and NOT **Install Ubuntu**).
+ - Another issue may be that live Ubuntu is using the Swap partition of an existing Linux installation.
+ - If you see "Swap" listed as a partition on the drive you're going to install HAOS, just select the Swap partition, then press the stop button to unmount it and try the restore operation again.
6. In the partitions overview, you should now see the restore operation in progress.
- The Home Assistant Operating System is now being installed on your system.

diff --git a/source/_includes/integrations/remove_device_service_steps.md b/source/_includes/integrations/remove_device_service_steps.md
index 9096191e1d1..60f1a86fe7a 100644
--- a/source/_includes/integrations/remove_device_service_steps.md
+++ b/source/_includes/integrations/remove_device_service_steps.md
@@ -1,3 +1,3 @@
1. Go to {% my integrations title="**Settings** > **Devices & services**" %} and select the integration card.
2. From the list of devices, select the integration instance you want to remove.
-3. Next to the entry, select the three-dot {% icon "mdi:dots-vertical" %} menu. Then, select **Delete**.
+3. Next to the entry, select the three dots {% icon "mdi:dots-vertical" %} menu. Then, select **Delete**.
diff --git a/source/_includes/site/footer.html b/source/_includes/site/footer.html
index 1eca86214fc..ed9c23e63ad 100644
--- a/source/_includes/site/footer.html
+++ b/source/_includes/site/footer.html
@@ -66,7 +66,7 @@
- Contact us here for media and partnership inquiries. (No technical support!)
+ For partnership inquiries please check out Works With Home Assistant. For media, get in touch here. For other questions, you can contact us here (No technical support!)
Website powered by Jekyll
diff --git a/source/_integrations/airthings_ble.markdown b/source/_integrations/airthings_ble.markdown
index edff202e71d..917598b78df 100644
--- a/source/_integrations/airthings_ble.markdown
+++ b/source/_integrations/airthings_ble.markdown
@@ -20,7 +20,7 @@ ha_integration_type: integration
Integrates Airthings BLE {% term sensors %} into Home Assistant.
-[Airthings](https://www.airthings.com/) provide different {% term devices %} for measuring the air quality. Initially focusing on radon gas sensors, each device provides a number of different sensors to monitor typical contaminants that's presence contributes to bad air quality in the home.
+[Airthings](https://www.airthings.com/) provide different {% term devices %} for measuring the air quality. Initially focusing on radon gas sensors, each device provides a number of different sensors to monitor typical contaminants whose presence contributes to bad air quality in the home.
Requires Airthings hardware and a compatible Bluetooth dongle.
diff --git a/source/_integrations/alarm_control_panel.mqtt.markdown b/source/_integrations/alarm_control_panel.mqtt.markdown
index ef56a37d347..d08b2c6cd03 100644
--- a/source/_integrations/alarm_control_panel.mqtt.markdown
+++ b/source/_integrations/alarm_control_panel.mqtt.markdown
@@ -30,7 +30,7 @@ The {% term integration %} can control your Alarm Panel by publishing to the `co
## Configuration
-To enable this {% term integration %}, add the following lines to your {% term "`configuration.yaml`" %} file.
+To use an MQTT alarm control panel in your installation, add the following to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
@@ -41,6 +41,8 @@ mqtt:
command_topic: "home/alarm/set"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/alexa_devices.markdown b/source/_integrations/alexa_devices.markdown
index c49c7b40a99..be51b965181 100644
--- a/source/_integrations/alexa_devices.markdown
+++ b/source/_integrations/alexa_devices.markdown
@@ -38,11 +38,11 @@ There is support for the following device families within Home Assistant:
- **Amazon Fire TV Stick**
- **Amazon Fire Tablet**
-and all 3rd party that has Alexa capabilities built-in
+- **Third-party devices** with built-in Alexa capabilities.
{% warning %}
-Currently, only MFA-protected Amazon accounts via the authenticator app are supported.
+This integration requires multifactor authentication using an authentication app (such as Microsoft Authenticator, for example). To enable MFA, in your Amazon account settings select **Login & Security** > **2-step verification** > **Backup methods** > **Add new app**. See [Amazon's documentation](https://www.amazon.com/gp/help/customer/display.html?nodeId=G9MX9LXNWXFKMJYU) for more information.
{% endwarning %}
@@ -98,6 +98,32 @@ The **Alexa Devices** {% term integration %} provides the following entities:
- Sensor - temperature and illuminance sensors
- Switch - Do not disturb
+## Troubleshooting
+
+### Can’t set up the integration
+
+#### Symptom: "Wrong Country"
+
+When trying to set up the integration, the form shows the message "Wrong Country".
+
+##### Description
+
+This means that the settings in your Amazon account are not aligned to the country you specified.
+To fix it, please go to (replace XX with your country domain. For example **co.uk**):
+
+- "Kindle payment": check your default address is in your country
+- "Country/Region": check your country
+
+#### Symptom: "Not found"
+
+When trying to set up the integration, the form shows the message "Not found".
+
+##### Description
+
+This appears to indicate that your Alexa devices aren't owned by you, but are connected through Amazon Family.
+This setup isn't supported by the Alexa Mobile app, so it's not supported by this integration.
+Move the devices to your primary account.
+
## Removing the integration
This integration follows standard integration removal. No extra steps are required.
diff --git a/source/_integrations/androidtv_remote.markdown b/source/_integrations/androidtv_remote.markdown
index a1a0fe40951..a70a91b33b2 100644
--- a/source/_integrations/androidtv_remote.markdown
+++ b/source/_integrations/androidtv_remote.markdown
@@ -31,6 +31,8 @@ For a quick introduction on how to get started with Android TV Remote, check out
{% configuration_basic %}
Configure Applications List:
description: Here you can define applications where the keys are app IDs and the values are app names and icons that will be displayed in the UI.
+Enable IME:
+ description: Enable this option to be able to get the current app name and send text as keyboard input. Disable it for devices that show 'Use keyboard on mobile device screen' instead of the on-screen keyboard.
{% endconfiguration_basic %}
## Media player
@@ -581,3 +583,8 @@ cards:
- If you are not able to connect to the Android TV device, or are asked to pair it again and again, try force-stopping the Android TV Remote Service and clearing its storage. On the Android TV device, go to **Settings** > **Apps** > **Show system apps**. Then, select **Android TV Remote Service** > **Storage** > **Clear storage**. You will have to pair again.
- Some onscreen keyboards enabled by TV manufacturers do not support concurrent virtual and onscreen keyboard use. This presents whenever a text field is selected, such as "search" where a constant **use the keyboard on your mobile device** will show, preventing you from opening the onscreen keyboard to type. This can be overcome by either disabling your 3rd party keyboard and using the default Gboard keyboard or by deselecting **Enable IME** in the **Configure** page of the integration.
- If you can't turn on your Nvidia Shield device, go to **Settings** > **Remotes & accessories** > **Simplified wake buttons** and disable the following options: **SHIELD 2019 Remote: Wake on power and Netflix buttons only** and **Controllers: Wake on NVIDIA or logo buttons only**.
+
+
+## Removing the integration
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/anthemav.markdown b/source/_integrations/anthemav.markdown
index 86639e31898..b23156851a0 100644
--- a/source/_integrations/anthemav.markdown
+++ b/source/_integrations/anthemav.markdown
@@ -26,7 +26,7 @@ Both [Anthem]'s current and last generation of A/V
### A/V Processor
-- [AVM 60](https://www.anthemav.com/products-current/model=avm-60/page=overview)
+- [AVM 60](https://www.anthemav.com/products-current/model=avm-60/page=overview), [AVM 70](https://www.anthemav.com/products-current/model=avm-70/page=overview)
### Distribution solution
diff --git a/source/_integrations/application_credentials.markdown b/source/_integrations/application_credentials.markdown
index b92fcf10807..930f99b7a94 100644
--- a/source/_integrations/application_credentials.markdown
+++ b/source/_integrations/application_credentials.markdown
@@ -49,6 +49,6 @@ To delete an application credential, for example because you created a new one,

2. In the top right corner, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Application credentials**.
-3. Select the credential from the list, select the three-dots menu and select **Delete**.
+3. Select the credential from the list, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Delete**.

diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown
index 1931e808e80..bde57a00145 100644
--- a/source/_integrations/binary_sensor.mqtt.markdown
+++ b/source/_integrations/binary_sensor.mqtt.markdown
@@ -20,16 +20,18 @@ Stateless devices such as buttons, remote controls etc are better represented by
The `mqtt` binary sensor platform optionally supports a list of `availability` topics to receive online and offline messages (birth and LWT messages) from the MQTT device. During normal operation, if the MQTT sensor device goes offline (i.e., publishes `payload_not_available` to an `availability` topic), Home Assistant will display the binary sensor as `unavailable`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant update after subscription and Home Assistant will display the correct availability state of the binary sensor when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the binary sensor as `unavailable` when Home Assistant starts up. If no `availability` topic is defined, Home Assistant will consider the MQTT device to be `available` and will display its state.
-To use an MQTT binary sensor in your installation,
-add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT binary sensor in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
mqtt:
- binary_sensor:
- state_topic: "home-assistant/window/contact"
+ state_topic: "basement/window/contact"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
@@ -245,10 +247,10 @@ The example below shows a full configuration for a binary sensor:
mqtt:
- binary_sensor:
name: "Window Contact Sensor"
- state_topic: "home-assistant/window/contact"
+ state_topic: "bedroom/window/contact"
payload_on: "ON"
availability:
- - topic: "home-assistant/window/availability"
+ - topic: "bedroom/window/availability"
payload_available: "online"
payload_not_available: "offline"
qos: 0
diff --git a/source/_integrations/bluetooth.markdown b/source/_integrations/bluetooth.markdown
index a5b78f6a53d..20de2169e5c 100644
--- a/source/_integrations/bluetooth.markdown
+++ b/source/_integrations/bluetooth.markdown
@@ -373,3 +373,52 @@ For example, unshielded USB 3 port and their cables are especially infamously kn
- While Bluetooth is designed to coexist with Wi-Fi, its stronger signal can interfere.
- To play it safe, try to place your Bluetooth adapter away from Wi-Fi access points.
- Place Bluetooth adapters far away from electrical/power wires/cables, power supplies, and household appliances.
+
+## Discovered integrations
+
+The following integrations are automatically discovered by the Bluetooth integration:
+
+ - [Acaia](/integrations/acaia/)
+ - [Airthings BLE](/integrations/airthings_ble/)
+ - [Aranet](/integrations/aranet/)
+ - [BlueMaestro](/integrations/bluemaestro/)
+ - [BTHome](/integrations/bthome/)
+ - [Dormakaba dKey](/integrations/dormakaba_dkey/)
+ - [eQ-3 Bluetooth Smart Thermostats](/integrations/eq3btsmart/)
+ - [EufyLife](/integrations/eufylife_ble/)
+ - [Fjäråskupan](/integrations/fjaraskupan/)
+ - [Gardena Bluetooth](/integrations/gardena_bluetooth/)
+ - [Govee Bluetooth](/integrations/govee_ble/)
+ - [HomeKit Device](/integrations/homekit_controller/)
+ - [Husqvarna Automower BLE](/integrations/husqvarna_automower_ble/)
+ - [iBeacon Tracker](/integrations/ibeacon/)
+ - [IKEA Idasen Desk](/integrations/idasen_desk/)
+ - [Improv via BLE](/integrations/improv_ble/)
+ - [INKBIRD](/integrations/inkbird/)
+ - [IronOS](/integrations/iron_os/)
+ - [Kegtron](/integrations/kegtron/)
+ - [Keymitt MicroBot Push](/integrations/keymitt_ble/)
+ - [Kuler Sky](/integrations/kulersky/)
+ - [La Marzocco](/integrations/lamarzocco/)
+ - [LD2410 BLE](/integrations/ld2410_ble/)
+ - [LED BLE](/integrations/led_ble/)
+ - [Medcom Bluetooth](/integrations/medcom_ble/)
+ - [Melnor Bluetooth](/integrations/melnor/)
+ - [Moat](/integrations/moat/)
+ - [Mopeka](/integrations/mopeka/)
+ - [Motionblinds Bluetooth](/integrations/motionblinds_ble/)
+ - [Oral-B](/integrations/oralb/)
+ - [Probe Plus](/integrations/probe_plus/)
+ - [Qingping](/integrations/qingping/)
+ - [RAPT Bluetooth](/integrations/rapt_ble/)
+ - [RuuviTag BLE](/integrations/ruuvitag_ble/)
+ - [Sensirion BLE](/integrations/sensirion_ble/)
+ - [SensorPro](/integrations/sensorpro/)
+ - [SensorPush](/integrations/sensorpush/)
+ - [Snooz](/integrations/snooz/)
+ - [SwitchBot Bluetooth](/integrations/switchbot/)
+ - [ThermoBeacon](/integrations/thermobeacon/)
+ - [ThermoPro](/integrations/thermopro/)
+ - [Tilt Hydrometer BLE](/integrations/tilt_ble/)
+ - [Xiaomi BLE](/integrations/xiaomi_ble/)
+ - [Yale Access Bluetooth](/integrations/yalexs_ble/)
diff --git a/source/_integrations/button.mqtt.markdown b/source/_integrations/button.mqtt.markdown
index 36fcad4a52d..83edd9591e4 100644
--- a/source/_integrations/button.mqtt.markdown
+++ b/source/_integrations/button.mqtt.markdown
@@ -10,6 +10,9 @@ ha_domain: mqtt
The `mqtt` button platform lets you send an MQTT message when the button is pressed in the frontend or the button press action is called. This can be used to expose some service of a remote device, for example reboot.
+To use an MQTT button in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
+
## Configuration
```yaml
@@ -19,6 +22,8 @@ mqtt:
command_topic: "home/bedroom/switch1/reboot"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/camera.mqtt.markdown b/source/_integrations/camera.mqtt.markdown
index 179b0cadf46..4faef9642bd 100644
--- a/source/_integrations/camera.mqtt.markdown
+++ b/source/_integrations/camera.mqtt.markdown
@@ -14,7 +14,8 @@ This can be used with an application or a service capable of sending images thro
## Configuration
-To enable this camera in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT camera in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -23,6 +24,8 @@ mqtt:
topic: zanzito/shared_locations/my-device
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
The sample configuration above can be tested by publishing an image to the topic from the console:
```shell
diff --git a/source/_integrations/climate.markdown b/source/_integrations/climate.markdown
index 7457e94aef5..2b59832dbea 100644
--- a/source/_integrations/climate.markdown
+++ b/source/_integrations/climate.markdown
@@ -213,7 +213,7 @@ Set swing operation mode for climate device
| Data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`.
-| `swing_mode` | no | New value of swing mode
+| `swing_mode` | no | New value of swing mode: `off`, `horizontal`, `vertical` or `both`.
#### Automation example
@@ -227,7 +227,7 @@ automation:
target:
entity_id: climate.kitchen
data:
- swing_mode: 1
+ swing_mode: both
```
### Action `climate.set_swing_horizontal_mode`
diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown
index c03f1a36914..46ea476bdc6 100644
--- a/source/_integrations/climate.mqtt.markdown
+++ b/source/_integrations/climate.mqtt.markdown
@@ -12,7 +12,7 @@ The `mqtt` climate platform lets you control your MQTT enabled HVAC devices.
## Configuration
-To enable this climate platform in your installation, first add the following to your {% term "`configuration.yaml`" %} file.
+To use an MQTT climate in your installation, add the following to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
@@ -23,6 +23,8 @@ mqtt:
mode_command_topic: "study/ac/mode/set"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
action_template:
description: A template to render the value received on the `action_topic` with.
diff --git a/source/_integrations/co2signal.markdown b/source/_integrations/co2signal.markdown
index 250ddfdf566..697c91911db 100644
--- a/source/_integrations/co2signal.markdown
+++ b/source/_integrations/co2signal.markdown
@@ -18,14 +18,190 @@ ha_codeowners:
- '@VIKTORVAV99'
---
-The `Electricity Maps` sensor platform (formerly known as CO2Signal) queries the [Electricity Maps](https://www.electricitymaps.com/) API for the CO2 intensity of a specific region. Data can be collected for your home by using the latitude/longitude or a country code. This API uses the same data as . Not all countries/regions in the world are supported, so please consult the app to check local availability.
+The **Electricity Maps** {% term integration %} (formerly known as CO2Signal) queries the [Electricity Maps](https://www.electricitymaps.com/) API for the CO2 intensity of a specific region.
+Data can be collected for your home by using the home location, latitude/longitude, or a country code.
+
+This API uses the same data as shown on the [Electricity Maps app](https://app.electricitymaps.com).
+Not all countries/regions in the world are supported, so please check the app to verify local availability before setting up the integration.
+
+## Use case
+
+The Electricity Maps integration helps you understand the carbon intensity of your electricity grid in real-time. This information can be valuable for:
+
+- Timing energy-intensive tasks (like charging electric vehicles or running appliances) during periods of lower carbon intensity.
+- Creating automations that respond to changing grid conditions.
+- Visualizing your region's progress towards cleaner energy.
+- Understanding how weather conditions affect renewable energy availability in your area.
+- Tracking the carbon impact of your home's energy usage in the {% my energy title="**Energy Dashboard**" %}.
## Prerequisites
To configure and use this integration, you need to obtain a free API key from Electricity Maps by signing up to the Free Tier product on the [Electricity Maps API Portal](https://electricitymaps.com/free-tier).
+Please be aware that the Free Tier API is limited to one location (called a zone). You need to specify the zone for your home location when creating your account.
{% include integrations/config_flow.md %}
-## Sensor types
+The integration provides the following configuration options when setting it up:
-When configured, the platform will create two sensors for each configured location: the carbon intensity expressed in `gCO2eq/kWh` and a percentage of how much the grid relies on fossil fuels for production.
+{% configuration_basic %}
+Location:
+ description: Choose between using your Home Assistant's configured home location, a specific country code, or custom latitude/longitude coordinates.
+API key:
+ description: The API key obtained from the Electricity Maps API Portal.
+{% endconfiguration_basic %}
+
+When configuring the location based on latitude/longitude, you will be prompted to enter the following:
+
+{% configuration_basic %}
+Latitude:
+ description: The latitude of your home location.
+Longitude:
+ description: The longitude of your home location.
+{% endconfiguration_basic %}
+
+When configuring the location based on a country code, you will be prompted to enter the following:
+
+{% configuration_basic %}
+Country code:
+ description: The two-letter ISO 3166-1 alpha-2 country code for your home location (e.g., "US" for the United States, "DE" for Germany).
+{% endconfiguration_basic %}
+
+## Supported functionality
+
+### Sensors
+
+The integration creates two sensors for each configured location:
+
+- **Carbon intensity**: Shows the carbon intensity of electricity production in your area, measured in gCO2eq/kWh (grams of CO2 equivalent per kilowatt-hour).
+- **Fossil fuel percentage**: Shows what percentage of the electricity grid currently relies on fossil fuels for production.
+
+## Examples
+
+### Creating a dashboard card
+
+You can create a gauge card to visualize the carbon intensity of your electricity:
+
+{% raw %}
+```yaml
+type: gauge
+entity: sensor.electricity_maps_carbon_intensity
+name: Carbon Intensity
+min: 0
+max: 500
+severity:
+ green: 0
+ yellow: 150
+ red: 300
+```
+{% endraw %}
+
+### Automation example: Run appliances when carbon intensity is low
+
+This automation starts your dishwasher when the carbon intensity drops below a specific threshold:
+
+{% raw %}
+```yaml
+alias: "Run Dishwasher at Low Carbon Intensity"
+description: "Starts the dishwasher when carbon intensity is low"
+trigger:
+ - platform: numeric_state
+ entity_id: sensor.electricity_maps_carbon_intensity
+ below: 100
+ for:
+ minutes: 10
+condition:
+ - condition: time
+ after: "22:00:00"
+ before: "06:00:00"
+ - condition: state
+ entity_id: binary_sensor.dishwasher_ready
+ state: "on"
+action:
+ - service: switch.turn_on
+ target:
+ entity_id: switch.dishwasher
+ - service: notify.mobile_app
+ data:
+ message: "Dishwasher started during low carbon intensity period ({{ states('sensor.electricity_maps_carbon_intensity') }} gCO2eq/kWh)"
+```
+{% endraw %}
+
+### Creating a history graph to track changes
+
+Add this to your dashboard to track how carbon intensity changes throughout the day:
+
+{% raw %}
+```yaml
+type: history-graph
+entities:
+ - entity: sensor.electricity_maps_carbon_intensity
+ name: Carbon Intensity
+hours_to_show: 24
+refresh_interval: 60
+```
+{% endraw %}
+
+### Energy Dashboard integration
+
+The Electricity Maps integration is automatically used on the Energy Dashboard when set up. The carbon intensity data appears in the Energy Dashboard as a real-time gauge showing the carbon footprint of your household electricity usage.
+
+You don't need to manually configure anything - the integration is automatically detected and used by the Energy Dashboard to calculate and display your home's carbon emissions based on your energy consumption and the current grid carbon intensity.
+
+To view this information:
+1. Navigate to the {% my energy title="**Energy Dashboard**" %}.
+2. Look for the carbon intensity gauge in the dashboard.
+
+If you don't see the carbon information in your Energy Dashboard:
+1. Make sure the Electricity Maps integration is properly set up and working.
+2. Verify that you have energy monitoring configured in Home Assistant.
+
+## Data updates
+
+The integration {% term polling polls %} data from the Electricity Maps API every 15 minutes by default. The actual update frequency may be limited by your API tier's rate limits.
+
+## Known limitations
+
+- The Free Tier API is limited to one location. You need to specify the country when creating your account.
+- The Free Tier API has a limit of 50 requests per hour, but the integration is designed to poll at a rate that won't exceed this limit.
+- Not all geographic regions are supported by Electricity Maps. Check their app to see if your region has coverage.
+
+## Troubleshooting
+
+### Integration fails to set up
+
+#### Symptom: "The given token is invalid" during setup
+
+If you see an invalid token error during setup, your API key may be invalid or expired.
+
+##### Resolution
+
+1. Verify that you've correctly copied the API key from the Electricity Maps API portal.
+2. Check if your API key is still active in the Electricity Maps API portal.
+3. Try generating a new API key if the issue persists.
+
+#### Symptom: "No data available for selected location" during setup
+
+If you receive a "No data available for selected location" error, the coordinates or country code you provided might not be supported by Electricity Maps.
+
+##### Resolution
+
+1. Check the [Electricity Maps app](https://app.electricitymaps.com) to verify coverage for your location.
+2. Try using a country code instead of coordinates, or vice versa.
+3. If your exact location isn't supported, try using the nearest supported location.
+
+### Sensors show "unavailable"
+
+If your sensors show as "unavailable" after successful setup, there might be issues with the API connection.
+
+#### Resolution
+
+1. Check your internet connection.
+2. Verify that your API key still has available quota for the day.
+3. Check if the Electricity Maps service is experiencing downtime.
+4. Restart Home Assistant if the issue persists.
+
+## Removing the integration
+
+This integration follows standard integration removal. No extra steps are required.
+
+{% include integrations/remove_device_service.md %}
\ No newline at end of file
diff --git a/source/_integrations/cover.mqtt.markdown b/source/_integrations/cover.mqtt.markdown
index f6c90f35845..65c4ed1b744 100644
--- a/source/_integrations/cover.mqtt.markdown
+++ b/source/_integrations/cover.mqtt.markdown
@@ -27,7 +27,8 @@ Optimistic mode can be forced, even if a `state_topic` / `position_topic` is def
The `mqtt` cover platform optionally supports a list of `availability` topics to receive online and offline messages (birth and LWT messages) from the MQTT cover device. During normal operation, if the MQTT cover device goes offline (i.e., publishes a matching `payload_not_available` to any `availability` topic), Home Assistant will display the cover as "unavailable". If these messages are published with the `retain` flag set, the cover will receive an instant update after subscription and Home Assistant will display correct availability state of the cover when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the cover as "unavailable" when Home Assistant starts up.
-To use your MQTT cover in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT cover in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -36,6 +37,8 @@ mqtt:
command_topic: "living-room-cover/set"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: "A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`."
diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown
index 09e3f0e5b7a..cf77d6e830d 100644
--- a/source/_integrations/device_tracker.mqtt.markdown
+++ b/source/_integrations/device_tracker.mqtt.markdown
@@ -16,7 +16,8 @@ The `mqtt` device tracker {% term integration %} allows you to define new device
## Configuration
-To use this device tracker in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT device tracker in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -29,6 +30,8 @@ mqtt:
state_topic: "location/paulus"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/devolo_home_network.markdown b/source/_integrations/devolo_home_network.markdown
index a94ac4df5c9..4e9698a5ac0 100755
--- a/source/_integrations/devolo_home_network.markdown
+++ b/source/_integrations/devolo_home_network.markdown
@@ -101,6 +101,7 @@ Currently, the following entities within Home Assistant are supported.
The list of supported devolo devices depends on the device firmware and the device features. The following devices were tested running firmware 5.6.0:
+- Magic 2 WiFi 6 next
- Magic 2 WiFi 6
- Magic 2 WiFi next
- Magic 2 WiFi 2-1
diff --git a/source/_integrations/discovergy.markdown b/source/_integrations/discovergy.markdown
index 98b92390a9b..4cfa838cc12 100644
--- a/source/_integrations/discovergy.markdown
+++ b/source/_integrations/discovergy.markdown
@@ -1,6 +1,6 @@
---
title: inexogy
-description: Instructions on how to integrate inexogy within Home Assistant.
+description: Instructions on how to integrate inexogy smart meters within Home Assistant.
ha_category:
- Energy
- Sensor
@@ -20,7 +20,7 @@ ha_quality_scale: silver
The **inexogy** {% term integration %} allows users to integrate their [inexogy](https://inexogy.com/) smart meters into Home Assistant.
The integration is using the [official REST API](https://api.inexogy.com/docs/#/) by inexogy.
-The integration supports the following meters within Home Assistant:
+The integration supports the following meter types within Home Assistant:
- [Electricity meter](#electricity-meter)
- [Gas meter](#gas-meter)
@@ -40,14 +40,116 @@ Password:
## Electricity meter
Sensor {% term entities %} are being added for current active power usage and the all-time total consumption.
-By default, the sensors for phase-specific current active power usage are disabled.
+By default, the sensors for phase-specific current active power usage are disabled but can be enabled in the entity settings.
-In case you have a combined meter for consumption and production, the all-time total production is added as well.
+In case you have a bidirectional meter for consumption and production, the all-time total production is added as well.
## Gas meter
A Sensor {% term entity %} is being added for total gas consumption.
+## Provided sensors
+
+Depending on your meter type, different sensors are available:
+
+### Electricity - Main sensors
+- `sensor.electricity___total_power`: Current power consumption in watts
+- `sensor.electricity___total_consumption`: Total energy consumption in kWh
+- `sensor.electricity___total_production`: Total energy production in kWh (bidirectional meters only)
+
+### Electricity - Optional sensors (disabled by default)
+- `sensor.electricity___phase_1_power`: Power consumption phase 1 in watts
+- `sensor.electricity___phase_2_power`: Power consumption phase 2 in watts
+- `sensor.electricity___phase_3_power`: Power consumption phase 3 in watts
+- `sensor.electricity___phase_1_voltage`: Voltage phase 1 in volts
+- `sensor.electricity___phase_2_voltage`: Voltage phase 2 in volts
+- `sensor.electricity___phase_3_voltage`: Voltage phase 3 in volts
+
+### Gas
+- `sensor.gas___total_gas_consumption`: Total gas consumption in cubic meters
+
+## Data update
+
+The sensors are updated every 30 seconds. This pulls the latest data available from the inexogy API.
+Note that this doesn't mean the meter data itself is new every 30 seconds. The frequency at which your meter sends new data to inexogy depends on your meter model and measurement concept.
+
+## Use cases and examples
+
+### Energy dashboard
+
+The total consumption and production sensors provided by this integration are fully compatible with the [Home Assistant Energy Dashboard](/docs/energy/).
+
+- `sensor.electricity_example_street_11_total_consumption` (total consumption) can be added to the "Grid consumption" field.
+- `sensor.electricity_example_street_11_total_production` (total production) can be added to the "Return to grid" field.
+
+### Automations
+
+You can use the current power sensor (`sensor.electricity_example_street_11_total_power`) to trigger automations based on your electricity usage.
+
+Example: Send a notification when power consumption exceeds 3000 W for 5 minutes.
+
+{% raw %}
+
+```yaml
+automation:
+ - alias: High Power Consumption Detected
+ trigger:
+ - platform: numeric_state
+ entity_id: sensor.electricity_example_street_11_total_power
+ above: 3000
+ for:
+ minutes: 5
+ action:
+ - service: notify.mobile_app_your_device
+ data:
+ message: "High power consumption detected: {{ states('sensor.electricity_example_street_11_total_power') }} W"
+```
+
+{% endraw %}
+
+Example: Turn off high-power devices when photovoltaic production is insufficient (for bidirectional meters).
+
+{% raw %}
+
+```yaml
+automation:
+ - alias: Consumption Control Based on PV Output
+ trigger:
+ - platform: state
+ entity_id: sensor.electricity_example_street_11_total_power
+ condition:
+ - condition: numeric_state
+ entity_id: sensor.electricity_example_street_11_total_power
+ above: 0 # Positive value means grid consumption
+ action:
+ - service: switch.turn_off
+ target:
+ entity_id: switch.high_power_device
+```
+
+{% endraw %}
+
+## Troubleshooting
+
+### No data or stale sensors
+
+If your sensors are not showing data or values are stale, check the following:
+
+1. **inexogy Portal**: Log in to the [inexogy web portal](https://my.inexogy.com/) and check if it shows current data from your meter. If not, there might be an issue with your meter or connection to inexogy.
+
+2. **Home Assistant Logs**: Check the Home Assistant logs for error messages related to the `inexogy` integration. Authentication errors (`Authentication failed`) mean your email address or password is incorrect.
+
+3. **API Rate Limits**: The inexogy API has rate limits. Although the integration is designed to stay within these limits, frequent Home Assistant restarts or other tools using the API might lead to temporary blocks.
+
+### Missing sensors
+
+- **Production sensors**: The electricity production sensor is only available for bidirectional meters. If you have such a meter but don't see it, check your data in the inexogy portal.
+- **Phase sensors**: Per-phase power and voltage sensors are disabled by default and not available for all meters. You can enable them on the integration page under "Entities".
+
+### Network issues
+
+If you see connection errors, ensure that Home Assistant has a stable internet connection. The integration needs access to `api.inexogy.com` over HTTPS (port 443).
+
## Removing the integration
This integration follows standard integration removal. No extra steps are required.
diff --git a/source/_integrations/dlna_dms.markdown b/source/_integrations/dlna_dms.markdown
index 1a14af9f903..afdeb278cef 100644
--- a/source/_integrations/dlna_dms.markdown
+++ b/source/_integrations/dlna_dms.markdown
@@ -19,7 +19,7 @@ The DLNA Digital Media Server integration allows you to browse and play media fr
## Renaming
-The name/title of the DMS device is the same as the title of the config entry. It can be changed on the Integrations Configuration page from the three-dot menu.
+The name/title of the DMS device is the same as the title of the config entry. It can be changed on the Integrations Configuration page from the three dots {% icon "mdi:dots-vertical" %} menu.
## Media source URIs
diff --git a/source/_integrations/eheimdigital.markdown b/source/_integrations/eheimdigital.markdown
index 0a99de2a4f8..d9216095e03 100644
--- a/source/_integrations/eheimdigital.markdown
+++ b/source/_integrations/eheimdigital.markdown
@@ -40,16 +40,22 @@ Host:
type: string
{% endconfiguration_basic %}
+## Data updates
+
+The integration connects locally via WebSocket to the EHEIM Digital main device and requests data updates for all devices every 15 seconds by default.
+
+## How you can use this integration
+
+You can use this integration to control and monitor your EHEIM Digital aquarium devices directly from Home Assistant. This includes adjusting settings such as temperature, light brightness, and filter speed, as well as monitoring the status of your devices.
+
+- **Receive notifications**: Get notified about important events, such as when the filter needs servicing or if there is an error with the device.
+- **More flexible day/night cycles**: Use Home Assistant's automation and scripting capabilities to create more complex day/night cycles for your aquarium devices than the native EHEIM Digital interface allows.
+- **Integrate with other devices**: While EHEIM Digital devices can interact with each other in a limited sense (for example, the EHEIM autofeeder can pause the filter pump after feeding), this integration allows you to automate and control your EHEIM Digital devices in conjunction with other smart home devices.
+
## Supported devices and entities
Currently, the following devices and entities are supported:
-### All devices
-
-#### Number
-
-- **System LED brightness**: Controlling the brightness of the system LED
-
### [EHEIM classicLEDcontrol+e](https://eheim.com/en_GB/aquatics/technology/lighting-control/classicledcontrol-e/classicledcontrol-e)
#### Lights
@@ -104,7 +110,48 @@ Currently, the following devices and entities are supported:
- **Day start time**: Setting the start time for the day pump speed in Bio mode
- **Night start time**: Setting the start time for the night pump speed in Bio mode
-Support for additional EHEIM Digital devices and entities will be added in future updates.
+### All supported devices
+
+#### Number
+
+- **System LED brightness**: Controlling the brightness of the system LED
+
+## Automations
+
+### Send a notification when the filter has an error
+
+You can set up an automation to notify you when the filter has an error. This example uses the `notify.notify` service to send a notification:
+
+{% details "Example automation to notify about filter errors" %}
+
+{% raw %}
+
+```yaml
+alias: Notify about filter error
+description: "This automation sends a notification when the filter has an error."
+mode: single
+triggers:
+ - trigger: state
+ entity_id:
+ - sensor.aquarienfilter_error_code
+ to:
+ - rotor_stuck
+ - air_in_filter
+conditions: []
+actions:
+ - action: notify.notify
+ metadata: {}
+ data:
+ title: The filter has a problem!
+```
+
+{% endraw %}
+
+{% enddetails %}
+
+## Known limitations
+
+- The integration does not support other EHEIM Digital devices than those listed above. More devices will be added in future updates. It is, however, supported to have an unsupported device as the main device and supported devices as sub-devices, even though the unsupported device will not have any entities shown in Home Assistant.
## Removing the integration
diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown
index 579b54d4d99..18ab15d7f4c 100644
--- a/source/_integrations/enphase_envoy.markdown
+++ b/source/_integrations/enphase_envoy.markdown
@@ -144,6 +144,10 @@ Based on the Envoy firmware version, the Envoy may provide inverter device data
- **Inverter SN Lifetime energy**: Total energy produced during inverter lifetime (Wh).
- **Inverter SN Report duration**: Time in seconds covered by the last report data.
+{% note %}
+Due to a limitation in the Envoy firmware, the inverter device data is only available when 49 or fewer inverters are configured. When more than 49 inverters are configured, only the 3 power production entities are available for each inverter.
+{% endnote %}
+
Micro-inverter device with solar production entities.
@@ -700,7 +704,9 @@ When using Envoy Metered with CT
- not all firmware versions report `Energy production today` and/or `Energy consumption today` correctly. Zero data and unexpected spikes have been reported. In this case, best use a utility meter with the `Lifetime energy production` or `Lifetime energy consumption` entity for daily reporting.
- not all firmware versions report `Energy production last seven days` and/or `Energy consumption last seven days` correctly. Zero and unexpected values have been reported.
-- `Energy production today` has been reported not to reset to zero at the start of the day. Instead, it resets to a non-zero value that gradually increases over time. This issue has also been reported as starting suddenly overnight. For daily reporting, it is recommended to use a utility meter with the `Lifetime energy production` entity.
+- `Energy production today` and `Energy consumption today` have been reported not to reset to zero at the start of the day. Instead, it resets to a non-zero value that seems to gradually increase over time, although other values have been reported as well. This issue has also been reported as starting suddenly overnight. For daily reporting, it is recommended to use a utility meter with the `Lifetime energy production` or `Lifetime energy consumption` entity.
+
+- `Energy production today`, `Energy consumption today`, `Energy production last seven days` and `Energy consumption last seven days` have been reported not to reset to zero at the start of the day. Instead, it resets to zero at a later time, often 1 am. This seems to be daylight savings time change related.
{% details "History examples for Today's energy production value not resetting to zero" %}
@@ -730,7 +736,7 @@ Envoy Metered without installed CT, running older firmware versions, reportedly
### Lifetime energy production decreases by 1.2 MWh
-Envoy Standard (not Metered), running firmware 8.2.4264, reportedly decreases the **Lifetime energy production** value by 1.2 MWh at irregular times. The current hypothesis is that the step change occurs when one of the inverters exceeds a lifetime value of 1.2 MWh and resets to zero. This leads to the decrease with 1.2 MWh in the aggregated value for all inverters. It's not clear if this also happens for the metered Envoy.
+Envoy Standard (not Metered), running firmware 8.2.4264, reportedly decreases the **Lifetime energy production** value by 1.2 MWh at irregular times. The current hypothesis is that the step change occurs when one of the inverters exceeds an internal lifetime joules counter of 32 bit, which is 1.19 MWh, and resets to zero. This leads to a decrease of 1.2 MWh in the aggregated value for all inverters. It's not clear if this also happens for the metered Envoy.
{% details "History example for Envoy Lifetime energy production value decrease" %}
@@ -742,6 +748,14 @@ The example below shows decreases when multiple inverters reach a 1.2 MWh lifeti
{% enddetails %}
+### Missing inverter data
+
+If you are not seeing all your installed [inverters](#sensor-entities), and you have more than 49 inverters installed, and you are running HA 2025.7, 2025.7.1, or 2025.7.2, then upgrade HA to 2025.7.3 or newer. Due to a limitation in the Envoy firmware. Only the inverter details for 49 inverters are available. In the mentioned releases, any more inverters got dropped. The 2025.7.3 version fixed this by only using the inverter base data, which does not have this limitation.
+
+### Missing inverter details
+
+If you are not seeing [inverters](#sensor-entities) detail data, verify if you have more than 49 inverters installed. Due to a limitation in the Envoy firmware, the inverter device detail data is only available when 49 or fewer inverters are configured. When more than 49 inverters are configured, only the 3 power production entities are available for each inverter.
+
### Summed Voltage
The Envoy Metered in multiphase setup, sums the voltages of the phases measured on the CT for the aggregated data. This may be valid for split-phase, but for 3-phase systems, use the individual phases rather than the summed value.
diff --git a/source/_integrations/event.mqtt.markdown b/source/_integrations/event.mqtt.markdown
index 44105791e8c..3045869016f 100644
--- a/source/_integrations/event.mqtt.markdown
+++ b/source/_integrations/event.mqtt.markdown
@@ -12,6 +12,9 @@ The `mqtt` event platform allows you to process event info from an MQTT message.
## Configuration
+To use an MQTT event entity in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
+
```yaml
# Example configuration.yaml entry
mqtt:
@@ -21,6 +24,8 @@ mqtt:
- press
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown
index 2bde863b89d..f3a594918bc 100644
--- a/source/_integrations/fan.mqtt.markdown
+++ b/source/_integrations/fan.mqtt.markdown
@@ -18,7 +18,7 @@ When a `state_topic` is not available, the fan will work in optimistic mode. In
Optimistic mode can be forced even if a `state_topic` is available. Try to enable it if you are experiencing incorrect fan operation.
-To enable MQTT fans in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+To use an MQTT fan in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
@@ -28,6 +28,8 @@ mqtt:
command_topic: "bedroom_fan/on/set"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown
index 2ffc2224fc2..d4f9bce7fca 100644
--- a/source/_integrations/fritzbox.markdown
+++ b/source/_integrations/fritzbox.markdown
@@ -28,30 +28,38 @@ ha_codeowners:
ha_integration_type: hub
---
-The AVM FRITZ!SmartHome integration for Home Assistant allows you to integrate [AVM Smart Home](https://en.avm.de/products/smart-home/) (_former AVM FRITZ!DECT_) devices like plugs, thermostats or shutter drivers as also trigger so called smart home templates (_contains settings for Smart Home devices of the same type_).
+The AVM FRITZ!SmartHome integration for Home Assistant allows you to integrate [AVM Smart Home](https://en.fritz.com/products/smart-home/) (_former AVM FRITZ!DECT_) devices like plugs, thermostats or shutter drivers as also trigger so called smart home templates (_contains settings for Smart Home devices of the same type_).
#### Tested devices
-- [FRITZ!Box 5590 Fiber][fritzbox_5590_fiber]
-- FRITZ!Box 6490 Cable
-- [FRITZ!Box 6591 Cable][fritzbox_6591_cable]
-- [FRITZ!Box 7590][fritzbox_7590]
-- [FRITZ!Box 7590 AX][fritzbox_7590_ax]
-- [FRITZ!Box 7530 AX][fritzbox_7530_ax]
-- FRITZ!Box 7490
-- FRITZ!Box 7430
-- [FRITZ!DECT 200][fritzdect_200]
-- [FRITZ!DECT 210][fritzdect_210]
-- [FRITZ!DECT 301][fritzdect_301]
-- [FRITZ!DECT 302][fritzdect_302]
-- [FRITZ!DECT 500][fritzdect_500]
-- [Eurotronic Comet DECT][eurotronic_comet_dect]
-- [Magenta SmartHome LED E27 Color][magenta_led_e27_color]
-- Magenta SmartHome LED E27 warmwhite
-- [Rademacher RolloTron DECT 1213][rademacher_rollotron_dect_1213]
+- FRITZ!Box routers
+ - [FRITZ!Box 5590 Fiber][fritzbox_5590_fiber]
+ - FRITZ!Box 6490 Cable
+ - FRITZ!Box 6591 Cable
+ - FRITZ!Box 7590
+ - FRITZ!Box 7490
+ - FRITZ!Box 7430
+ - [FRITZ!Box 7590 AX][fritzbox_7590_ax]
+ - [FRITZ!Box 7530 AX][fritzbox_7530_ax]
+- [FRITZ!Smart Gateway][fritz_smart_gateway]
+- FRITZ!SmartHome devices
+ - [FRITZ!Smart Energy 200][fritzdect_200] (_former FRITZ!DECT 200_)
+ - [FRITZ!Smart Energy 210][fritzdect_210] (_former FRITZ!DECT 210_)
+ - FRITZ!Smart Thermo 301 (_former FRITZ!DECT 301_)
+ - [FRITZ!Smart Thermo 302][fritzdect_302] (_former FRITZ!DECT 302_)
+ - FRITZ!DECT 500
+- Smart home devices from other vendors
+ - Eurotronic Comet DECT
+ - Magenta SmartHome LED E27 Color
+ - Magenta SmartHome LED E27 warmwhite
+ - [Homepilot RolloTron DECT 1213][rademacher_rollotron_dect_1213] (_former Rademacher RolloTron DECT 1213_)
## Prerequisites
+Please note that in a [mesh](https://en.fritz.com/service/knowledge-base/dok/FRITZ-Box-7590/3329_Mesh-with-FRITZ/) setup, only the FRITZ!Box with the mesh master role should be added with the AVM FRITZ!SmartHome integration.
+
+### Username
+
It is recommended to create a separate user to connect Home Assistant to your FRITZ!Box. To create a user, in the FRITZ!Box go to **System** > **FRITZ!Box Users** > **Users** > **Add User**. Make sure the user has the **Smart Home** permission.
{% note %}
@@ -64,28 +72,28 @@ If you still want to use the predefined user, please note that as of FRITZ!OS 7.
Host:
description: "The hostname or IP address of your FRITZ!Box router."
Username:
- description: "Name of the user to connect Home Assistant to your FRITZ!Box (_see [prerequisites](#prerequisites)_)"
+ description: "Name of the user to connect Home Assistant to your FRITZ!Box (_see [Username](#username)_)"
Password:
- description: "Password for the user to connect Home Assistant to your FRITZ!Box (_see [prerequisites](#prerequisites)_)"
+ description: "Password for the user to connect Home Assistant to your FRITZ!Box (_see [Username](#username)_)"
{% endconfiguration_basic %}
## Data fetching and limitations
-Since the API of the FRITZ!Box does not provide a push mechanism, this integration polls the data every 30 seconds from the FRITZ!Box. Because of this, the integration can't support the main features of event-based devices like the [FRITZ!DECT 350][fritzdect_350] door/window contact sensors or the [FRITZ!DECT 440][fritzdect_440] buttons (_see the [other devices](#other-devices) section for details_).
+Since the API of the FRITZ!Box does not provide a push mechanism, this integration polls the data every 30 seconds from the FRITZ!Box. Because of this, the integration can't support the main features of event-based devices like the [FRITZ!Smart Control 350][fritzdect_350] door/window contact sensors or the [FRITZ!Smart Control 440][fritzdect_440] buttons (_see the [other devices](#other-devices) section for details_).
## Devices
### Light bulbs
-Light bulbs like the [FRITZ!DECT 500][fritzdect_500] or [Magenta SmartHome LED E27 Color][magenta_led_e27_color] will be integrated as {% term light %} entities.
+Light bulbs like the FRITZ!DECT 500 or Magenta SmartHome LED E27 Color will be integrated as {% term light %} entities.
{% note %}
-The [FRITZ!DECT 500][fritzdect_500] light bulb supports only 36 colors. When a color is picked in Home Assistant that is not supported by the device, a color that comes close will be activated.
+The FRITZ!DECT 500 light bulb supports only 36 colors. When a color is picked in Home Assistant that is not supported by the device, a color that comes close will be activated.
{% endnote %}
### Plugs
-Plugs like the [FRITZ!DECT 200][fritzdect_200] or [FRITZ!DECT 210][fritzdect_210] will be integrated as {% term switch %} entities.
+Plugs like the [FRITZ!Smart Energy 200][fritzdect_200] or [FRITZ!Smart Energy 210][fritzdect_210] will be integrated as {% term switch %} entities.
Further there are additional {% term sensor %} and {% term binary_sensor "binary sensor" %} entities created for each device, based on its capabilities:
@@ -99,15 +107,15 @@ Further there are additional {% term sensor %} and {% term binary_sensor "binary
### Shutter drivers
-Shutter drivers like the [Rademacher RolloTron DECT 1213][rademacher_rollotron_dect_1213] will be integrated as {% term cover %} entities.
+Shutter drivers like the [Homepilot RolloTron DECT 1213][rademacher_rollotron_dect_1213] will be integrated as {% term cover %} entities.
### Templates
-Self defined [templates](https://en.avm.de/guide/three-smart-home-templates-that-will-make-your-life-easier) within the FRITZ!Box smart home configuration menu, will be integrated as {% term button %} entities and those can be triggered from within Home Assistant.
+Self defined [templates](https://en.fritz.com/guide/three-smart-home-templates-that-will-make-your-life-easier) within the FRITZ!Box smart home configuration menu, will be integrated as {% term button %} entities and those can be triggered from within Home Assistant.
### Thermostats
-Thermostats like the [FRITZ!DECT 301][fritzdect_301], [FRITZ!DECT 302][fritzdect_302] or [Eurotronic Comet DECT][eurotronic_comet_dect] will be integrated as {% term climate %} entities.
+Thermostats like the FRITZ!Smart Thermo series or Eurotronic Comet DECT will be integrated as {% term climate %} entities.
Further there are additional {% term sensor %} and {% term binary_sensor "binary sensor" %} entities created for each device which can be useful for {% term automations %} and {% term templates %}, based on its capabilities:
@@ -127,7 +135,7 @@ Further there are additional {% term sensor %} and {% term binary_sensor "binary
### Other devices
-Some devices like the [FRITZ!DECT 350][fritzdect_350] or the [FRITZ!DECT 440][fritzdect_440] can't be controlled via this integration, but its sensors can still be integrated.
+Event based devices like motion detection sensors or window/door contacts or buttons (_for example, [FRITZ!Smart Control 350][fritzdect_350] or the [FRITZ!Smart Control 440][fritzdect_440]_) cannot be controlled or used via this integration, but their sensors can still be integrated.
The availability of these {% term sensor %} and {% term binary_sensor "binary sensor" %} entities depends on the features and capabilities of the connected device and can be one or multiple of:
@@ -139,20 +147,15 @@ The availability of these {% term sensor %} and {% term binary_sensor "binary se
- Open window detected
- Temperature
-[fritzbox_5590_fiber]: https://en.avm.de/products/fritzbox/fritzbox-5590-fiber
-[fritzbox_6591_cable]: https://en.avm.de/products/fritzbox/fritzbox-6591-cable
-[fritzbox_7590]: https://en.avm.de/products/fritzbox/fritzbox-7590
-[fritzbox_7590_ax]: https://en.avm.de/products/fritzbox/fritzbox-7590-ax
-[fritzbox_7530_ax]: https://en.avm.de/products/fritzbox/fritzbox-7530-ax
-[fritzdect_200]: https://en.avm.de/products/smart-home/fritzdect-200
-[fritzdect_210]: https://en.avm.de/products/smart-home/fritzdect-210
-[fritzdect_301]: https://en.avm.de/products/smart-home/fritzdect-301
-[fritzdect_302]: https://en.avm.de/products/smart-home/fritzdect-302
-[fritzdect_350]: https://en.avm.de/products/smart-home/fritzdect-350
-[fritzdect_440]: https://en.avm.de/products/smart-home/fritzdect-440
-[fritzdect_500]: https://en.avm.de/products/smart-home/fritzdect-500
-[eurotronic_comet_dect]: https://eurotronic.org/produkte/dect-ule-heizkoerperthermostat/comet-dect
-[magenta_led_e27_color]: https://www.smarthome.de/geraete/smarthome-led-lampe-e27-farbig-weiss
+[fritzbox_5590_fiber]: https://en.fritz.com/products/fritzbox/fritzbox-5590-fiber
+[fritzbox_7590_ax]: https://en.fritz.com/products/fritzbox/fritzbox-7590-ax
+[fritzbox_7530_ax]: https://en.fritz.com/products/fritzbox/fritzbox-7530-ax
+[fritzdect_200]: https://en.fritz.com/products/smart-home/fritzsmart-energy-200
+[fritzdect_210]: https://en.fritz.com/products/smart-home/fritzsmart-energy-210
+[fritzdect_302]: https://en.fritz.com/products/smart-home/fritzsmart-thermo-302
+[fritzdect_350]: https://en.fritz.com/products/smart-home/fritzsmart-control-350
+[fritzdect_440]: https://en.fritz.com/products/smart-home/fritzsmart-control-440
+[fritz_smart_gateway]: https://en.fritz.com/products/smart-home/fritzsmart-gateway
[rademacher_rollotron_dect_1213]: https://www.rademacher.de/shop/rollladen-sonnenschutz/elektrischer-gurtwickler/rollotron-dect-1213
## Troubleshooting
diff --git a/source/_integrations/google_assistant_sdk.markdown b/source/_integrations/google_assistant_sdk.markdown
index 62a1fb1c1be..5c93b5ff3b6 100644
--- a/source/_integrations/google_assistant_sdk.markdown
+++ b/source/_integrations/google_assistant_sdk.markdown
@@ -246,3 +246,8 @@ Then you can converse with Google Assistant by tapping the Assist icon at the to
Or by calling the `conversation.process` action.
Note: due to a bug in the Google Assistant API, not all responses contain text, especially for home control commands, like turn on the lights. These will be shown as ``. For those, Google Assistant responds with HTML and Home Assistant integrations are [not allowed](https://github.com/home-assistant/architecture/blob/master/adr/0004-webscraping.md) to parse HTML.
+
+
+## Removing the integration
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown
index 7fbfed6c25a..51ce0e12d47 100644
--- a/source/_integrations/google_generative_ai_conversation.markdown
+++ b/source/_integrations/google_generative_ai_conversation.markdown
@@ -243,3 +243,7 @@ logger:
homeassistant.components.conversation.chat_log: debug
homeassistant.components.google_generative_ai_conversation: debug
```
+
+## Removing the integration
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/govee_light_local.markdown b/source/_integrations/govee_light_local.markdown
index 41c726d0e6b..13f7d3df55b 100644
--- a/source/_integrations/govee_light_local.markdown
+++ b/source/_integrations/govee_light_local.markdown
@@ -22,7 +22,6 @@ To enable local control on your Govee device, refer to the instructions availabl
## Supported devices
-H6008,
H6022,
H6042,
H6046,
diff --git a/source/_integrations/gree.markdown b/source/_integrations/gree.markdown
index 01ec11caaae..f5c61277194 100644
--- a/source/_integrations/gree.markdown
+++ b/source/_integrations/gree.markdown
@@ -40,6 +40,7 @@ Any Gree Smart device working with the Gree+ app should be supported, including
- Heiwa
- Ekokai
- Lessar
+- Tosot
## Climate
diff --git a/source/_integrations/hddtemp.markdown b/source/_integrations/hddtemp.markdown
index 7bef7fcd4ec..5cbb5619d68 100644
--- a/source/_integrations/hddtemp.markdown
+++ b/source/_integrations/hddtemp.markdown
@@ -25,10 +25,6 @@ It required that `hddtemp` is started or running in daemon mode on a local or re
hddtemp -dF
```
-{% important %}
-You can't use this sensor in a container (only Home Assistant Core is supported) as it requires access to `hddtemp` which is not available in a container-based setup.
-{% endimportant %}
-
## Configuration
To setup a HDDTemp to your installation, add the following to your {% term "`configuration.yaml`" %} file.
diff --git a/source/_integrations/heos.markdown b/source/_integrations/heos.markdown
index c1dd47478ef..1a08413b9e8 100644
--- a/source/_integrations/heos.markdown
+++ b/source/_integrations/heos.markdown
@@ -70,7 +70,7 @@ Password:
Once setup, the host name or IP address used to access the HEOS System can be changed by reconfiguring the integration.
1. Go to **{% my integrations icon title="Settings > Devices & Services" %}**.
-2. Select **Denon HEOS**. Click the three-dot {% icon "mdi:dots-vertical" %} menu and then select **Reconfigure**.
+2. Select **Denon HEOS**. Click the three dots {% icon "mdi:dots-vertical" %} menu and then select **Reconfigure**.
3. Enter a new [host name or IP address](/integrations/heos/#host).
4. Click Submit to complete the reconfiguration.
@@ -79,7 +79,7 @@ Once setup, the host name or IP address used to access the HEOS System can be ch
This integration follows standard integration removal. No extra steps are required.
1. Go to **{% my integrations icon title="Settings > Devices & Services" %}**.
-2. Select **Denon HEOS**. Click the three-dot {% icon "mdi:dots-vertical" %} menu and then select **Delete**.
+2. Select **Denon HEOS**. Click the three dots {% icon "mdi:dots-vertical" %} menu and then select **Delete**.
## Actions
diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown
index bc340880ce1..80e2ffb01ee 100644
--- a/source/_integrations/history_stats.markdown
+++ b/source/_integrations/history_stats.markdown
@@ -121,7 +121,7 @@ Depending on the sensor type you choose, the `history_stats` integration can sho
- **time**: The default value, which is the tracked time, in hours
- **ratio**: The tracked time divided by the length of your period, as a percentage
-- **count**: How many times the tracked entity matched the configured state during the time period. This will count states (for example, how many times a light was in the `on` state during the time period), as opposed to counting state transitions (for example, how many times a light was *turned* `on`). The difference is if the entity was already in the desired state at the start of the time period, that scenario will be counted with this sensor type.
+- **count**: How many times the tracked entity matched the configured state during the time period. This will count states (for example, how many times a light was in the `on` state during the time period), as opposed to counting state transitions (for example, how many times a light was *turned* `on`). The difference is if the entity was already in the desired state at the start of the time period, that scenario will be counted with this sensor type. If a list of states is provided to the state option, transitions between defined states are considered all part of a single event and do not increment the count.
{% note %}
For a **time** or **count** sensor that uses a time period that does not slide (such as one that resets upon each hour, as opposed to one which considers the trailing 60 minutes), consider using [customization](/docs/configuration/customizing-devices/#customizing-an-entity-in-yaml) to change the `state_class` to `total_increasing` to generate statistics that track the `sum`. This is useful when emulating the behavior of a `utility_meter` helper that has a defined reset cycle. Without intervention, the `state_class` of any `history_stats` sensor will be `measurement` and will therefore generate `average`, `min`, and `max` statistics.
diff --git a/source/_integrations/home_connect.markdown b/source/_integrations/home_connect.markdown
index 0e66fd0d1cb..d5a9c17d590 100644
--- a/source/_integrations/home_connect.markdown
+++ b/source/_integrations/home_connect.markdown
@@ -1130,9 +1130,7 @@ actions:
device_id: "your_device_id"
affects_to: "active_program"
program: "dishcare_dishwasher_program_eco_50"
- options:
- - key: "dishcare_dishwasher_option_silence_on_demand"
- value: true
+ dishcare_dishwasher_option_silence_on_demand: true
else:
- service: home_connect.set_program_and_options
data:
diff --git a/source/_integrations/homee.markdown b/source/_integrations/homee.markdown
index 353cc785ef1..a1305c49fb0 100644
--- a/source/_integrations/homee.markdown
+++ b/source/_integrations/homee.markdown
@@ -100,7 +100,7 @@ This integration supports reconfiguration, allowing you to change the IP address
1. Go to {% my integrations title="**Settings** > **Devices & services**" %} and select the homee integration card.
2. From the list of hubs, select the one you want to reconfigure.
-3. Next to the entry, select the three-dot {% icon "mdi:dots-vertical" %} menu. Then, select **Reconfigure**.
+3. Next to the entry, select the three dots {% icon "mdi:dots-vertical" %} menu. Then, select **Reconfigure**.
## Removing the integration
diff --git a/source/_integrations/humidifier.mqtt.markdown b/source/_integrations/humidifier.mqtt.markdown
index 9af19500a69..385641704d3 100644
--- a/source/_integrations/humidifier.mqtt.markdown
+++ b/source/_integrations/humidifier.mqtt.markdown
@@ -18,7 +18,8 @@ When a `state_topic` is not available, the humidifier will work in optimistic mo
Optimistic mode can be forced even if a `state_topic` is available. Try to enable it if you are experiencing incorrect humidifier operation.
-To enable MQTT humidifiers in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT humidifier in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -28,6 +29,8 @@ mqtt:
target_humidity_command_topic: "bedroom_humidifier/humidity/set"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
action_template:
description: A template to render the value received on the `action_topic` with.
diff --git a/source/_integrations/image.mqtt.markdown b/source/_integrations/image.mqtt.markdown
index 45f793e3b70..7a880310b6f 100644
--- a/source/_integrations/image.mqtt.markdown
+++ b/source/_integrations/image.mqtt.markdown
@@ -18,7 +18,8 @@ An alternative setup is to use the `url_topic` option to receive an image URL fo
## Configuration
-To enable this image in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT image entity in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -27,6 +28,8 @@ mqtt:
url_topic: mynas/status/url
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/immich.markdown b/source/_integrations/immich.markdown
index 62db398e47b..98bf69e1310 100644
--- a/source/_integrations/immich.markdown
+++ b/source/_integrations/immich.markdown
@@ -26,6 +26,10 @@ This integration allows adding an [Immich](https://immich.app/) user account to
You need to [obtain the API key](https://immich.app/docs/features/command-line-interface#obtain-the-api-key) for your user account in your Immich instance.
+### API key permissions
+
+For full functionality, enable the `album.read` permission when creating your API key. Without this permission, the media source integration will not work, but all monitoring sensors will continue to function normally.
+
{% include integrations/config_flow.md %}
{% configuration_basic %}
diff --git a/source/_integrations/jewish_calendar.markdown b/source/_integrations/jewish_calendar.markdown
index 97f12db4f95..31988fcdb38 100644
--- a/source/_integrations/jewish_calendar.markdown
+++ b/source/_integrations/jewish_calendar.markdown
@@ -16,32 +16,30 @@ ha_integration_type: integration
ha_config_flow: true
---
-The Jewish Calendar (`jewish_calendar`) {% term integration %} displays various information related to the Jewish Calendar as various sensors.
+The Jewish Calendar {% term integration %} exposes Jewish calendar information through multiple sensors.
{% include integrations/config_flow.md %}
+{% configuration_basic %}
-### Language
+Language:
+ description: The language to be used for textual sensors in Hebrew (א' תשרי תשע"ט) or English characters (1 Tishrei 5779). Valid options are `english` and `hebrew`. Default value is `english`.
-Default: English
-Whether to represent the sensors in Hebrew (א' תשרי תשע"ט) or English characters (1 Tishrei 5779). Valid options are 'english' and 'hebrew'.
+Diaspora:
+ description: Consider the location as diaspora (חוץ לארץ) for calculation of the weekly portion and holidays. By default it will consider the location as Israel (One day Yom Tov), setting it to true will show a second day Yom Tov.
-### Diaspora
+Latitude, Longitude, Time Zone and Elevation:
+ description: Allows you to override the default location information provided by Home Assistant for the calculations.
+{% endconfiguration_basic %}
-Default: False
-Consider the location as diaspora (חוץ לארץ) for calculation of the weekly portion and holidays. By default it will consider the location as Israel (One day Yom Tov), setting it to true will show a second day Yom Tov.
+## Advanced Options
-### Minutes before sunset for candle lighting
+{% configuration_basic %}
+Minutes before sunset for candle lighting:
+ description: How many minutes before sunset is considered candle-lighting time. In Israel, this is usually 20, 30, or 40 minutes depending on your location. Outside of Israel, it's customary to use either 18 or 24. *The default is set to 18 minutes.*
-Default: 18 minutes
-This defines how many minutes before sunset is considered candle-lighting time. In Israel, this is usually 20/30/40 depending on your location. Outside of Israel, you probably want to use 18/24.
-
-### Minutes after sunset for Havdalah
-
-By default havdalah time is considered the moment the sun is 8.5 degrees below the horizon. By specifying this offset, havdalah time will be calculated as a static offset past the time of sunset.
-
-### Latitude, Longitude, Time Zone and Elevation
-
-Allows you to override the default location information provided by Home Assistant for the calculations.
+Minutes after sunset for Havdalah:
+ description: By default havdalah time is considered the moment the sun is 8.5 degrees below the horizon. By specifying this offset, havdalah time will be calculated as a static time offset relative to sunset.
+{% endconfiguration_basic %}
## Sensor list
diff --git a/source/_integrations/lawn_mower.mqtt.markdown b/source/_integrations/lawn_mower.mqtt.markdown
index 1f606973d08..28ad25c9798 100644
--- a/source/_integrations/lawn_mower.mqtt.markdown
+++ b/source/_integrations/lawn_mower.mqtt.markdown
@@ -12,7 +12,8 @@ The `mqtt` `lawn_mower` platform allows controlling a lawn mower over MQTT.
## Configuration
-To enable MQTT lawn mower in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT lawn mower in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -22,6 +23,8 @@ mqtt:
name: "Test Lawn Mower"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
activity_state_topic:
description: The MQTT topic subscribed to receive an update of the activity. Valid activities are `mowing`, `paused`, `docked`, and `error`. Use `value_template` to extract the activity state from a custom payload. When payload `none` is received, the activity state will be reset to `unknown`.
diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown
index b0c19034522..fab68913a2d 100644
--- a/source/_integrations/light.mqtt.markdown
+++ b/source/_integrations/light.mqtt.markdown
@@ -42,6 +42,9 @@ Optimistic mode can be forced, even if the `state_topic` is available. Try to en
Home Assistant internally assumes that a light's state corresponds to a defined `color_mode`.
The state of MQTT lights with default schema and support for both color and color temperature will set the `color_mode` according to the last received valid color or color temperature. Optionally, a `color_mode_state_topic` can be configured for explicit control of the `color_mode`.
+To use an MQTT basic light in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
+
```yaml
# Example configuration.yaml entry
mqtt:
@@ -49,6 +52,8 @@ mqtt:
command_topic: "office/rgb1/light/switch"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
@@ -542,6 +547,9 @@ When a state topic is not available, the light will work in optimistic mode. In
Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly.
+To use an MQTT JSON light in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
+
```yaml
# Example configuration.yaml entry
mqtt:
@@ -550,6 +558,8 @@ mqtt:
command_topic: "home/rgb1/set"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
@@ -948,6 +958,9 @@ When a state topic is not available, the light will work in optimistic mode. In
Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly.
+To use an MQTT template light in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
+
```yaml
# Example configuration.yaml entry
mqtt:
@@ -958,6 +971,8 @@ mqtt:
command_off_template: "off"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown
index 1ca6f62cce9..76a935c61c3 100644
--- a/source/_integrations/lock.mqtt.markdown
+++ b/source/_integrations/lock.mqtt.markdown
@@ -21,7 +21,9 @@ Optimistic mode can be forced, even if state topic is available. Try to enable i
It's mandatory for locks to support `lock` and `unlock`. A lock may optionally support `open`, (e.g. to open the bolt in addition to the latch), in this case, `payload_open` is required in the configuration. If the lock is in optimistic mode, it will change states to `unlocked` when handling the `open` command.
An MQTT lock can also report the intermediate states `unlocking`, `locking` or `jammed` if the motor reports a jammed state.
-To enable MQTT locks in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+
+To use an MQTT lock in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -30,6 +32,8 @@ mqtt:
command_topic: "home/frontdoor/set"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/matter.markdown b/source/_integrations/matter.markdown
index dc99f0c7fe8..d1e0d8007be 100644
--- a/source/_integrations/matter.markdown
+++ b/source/_integrations/matter.markdown
@@ -313,11 +313,11 @@ Follow these steps if you want to remove a device from a particular Matter contr
1. Go to {% my integrations title="**Settings** > **Devices & services**" %} and on the **Matter** integration card, select **Devices**.
2. From the list of devices, select the device you want to remove from a controller.
-3. In the **Device info** section, next to **Share device**, select the three-dot menu. Then, select **Manage fabrics**.
+3. In the **Device info** section, next to **Share device**, select the three dots {% icon "mdi:dots-vertical" %} menu. Then, select **Manage fabrics**.
4. From the list, remove the controller of interest.
- If you want to remove Apple Home, also remove the Apple Keychain entry.

-5. If you want to remove the device from Home Assistant itself, select the three-dot menu and select **Delete**.
+5. If you want to remove the device from Home Assistant itself, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Delete**.
## About Matter device information
diff --git a/source/_integrations/mcp_server.markdown b/source/_integrations/mcp_server.markdown
index 034f5cbeacf..937b44650c5 100644
--- a/source/_integrations/mcp_server.markdown
+++ b/source/_integrations/mcp_server.markdown
@@ -16,7 +16,7 @@ related:
ha_quality_scale: silver
---
-The [Model Context Protocol](https://modelcontextprotocol.io) is an open protocol that standardizes how applications provide context to LLMs. The **Model Context Protocol Server** (MCP) integration enables using Home Assistant to provide context for MCP LLM Client Applications. For example, you can expose your Google Tasks To-do list as a tool for Claude Desktop.
+The [Model Context Protocol](https://modelcontextprotocol.io) is an open protocol that standardizes how applications provide context to LLMs. The **Model Context Protocol Server** (MCP) integration enables using Home Assistant to provide context for MCP LLM Client Applications. For example, you can control your lights from Claude Desktop, or expose your Google Tasks to-do list as a tool.
Controlling Home Assistant is done by providing MCP clients access to the Assist API of Home Assistant. You can control what devices and entities it can access from the {% my voice_assistants title="exposed entities page" %}.
@@ -186,7 +186,6 @@ subset of MCP features:
| Sampling | ❌ |
| Notifications | ❌ |
-Home Assistant does not yet provide built-in tools that can fetch device state.
## Troubleshooting
diff --git a/source/_integrations/monzo.markdown b/source/_integrations/monzo.markdown
index 0690f319f7d..5957fe2e817 100644
--- a/source/_integrations/monzo.markdown
+++ b/source/_integrations/monzo.markdown
@@ -41,9 +41,9 @@ The **Monzo** {% term integration %} allows you to connect your Monzo bank accou
### Adding a second account
1. To add a second Monzo account in Home Assistant, repeat the above process for creating an OAuth client.
-2. Then, in Home Assistant, add the new credentials *before* trying to add the new entry.
- - In the top right of **Devices & services** page, select the three dot menu, open **Application Credentials**, and select **Add application credentials**
- - It is recommended to include the person's name in the *Name* field so you can distinguish it later.
+2. Then, in Home Assistant, add the new credentials *before* trying to add the new entry.
+ - In the top right of **Devices & services** page, select the three dots {% icon "mdi:dots-vertical" %} menu, open **Application Credentials**, and select **Add application credentials**
+ - It is recommended to include the person's name in the *Name* field so you can distinguish it later.
3. Once added, you can return to **Devices & services** > **Monzo** > **Add Entry** to proceed with authentication.
## Sensor
diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown
index cbe562cff4c..37eef4d3009 100644
--- a/source/_integrations/mqtt.markdown
+++ b/source/_integrations/mqtt.markdown
@@ -173,7 +173,7 @@ Add the MQTT integration, then provide your broker's hostname (or IP address) an
2. Select the MQTT integration.
3. Reconfigure the MQTT broker settings via {% my integrations title="**Settings** > **Devices & services**" %}, click {% icon "mdi:dots-vertical" %} and select **Reconfigure**.
-MQTT subentries can also be reconfigured. Additional entities can be added, or an entity can bve removed from the sub entry. Each MQTT subentry holds one MQTT device. The MQTT device must have at least one entity.
+MQTT subentries can also be reconfigured. Additional entities can be added, or an entity can be removed from the sub entry. Each MQTT subentry holds one MQTT device. The MQTT device must have at least one entity.
{% important %}
If you experience an error message like `Failed to connect due to exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed`, then turn on `Advanced options` and set [Broker certificate validation](/integrations/mqtt/#broker-certificate-validation) to `Auto`.
diff --git a/source/_integrations/music_assistant.markdown b/source/_integrations/music_assistant.markdown
index 0f6595d2bd4..31cd6b7decd 100644
--- a/source/_integrations/music_assistant.markdown
+++ b/source/_integrations/music_assistant.markdown
@@ -20,8 +20,10 @@ The **Music Assistant** (MA) {% term integration %} allows you to connect Home A
There is currently support for the following Home Assistant Platforms:
-- [Media player](#media-player)
+- [Media player](#media-player-entities)
- [Button](#favorite-current-song-button)
+
+
All of the Home Assistant [Media Player Control Actions](https://www.home-assistant.io/integrations/media_player/#media-control-actions) are supported.
The `media_content_id` payload for `media_player.play_media` can be any of the following:
@@ -51,7 +53,7 @@ The Music Assistant integration creates media player entities for all players an
### Favorite current song button
-The Music Assistant integration creates a button entity for each player to favorite the current song. Pressing this button (manually or by automation) adds the current song to your Music Assistant favorites. This works for local playing songs and tracks from streaming providers. It also works with remote content such as Spotify Connect, AirPlay, or a radio station, as long as the external source provides an artist and title combination (and optionally the album). Note that the button will be marked as unavailable if there is no content playable that could be favorited.
+The Music Assistant integration creates a button entity for each player to favorite the current song. Pressing this button (manually or by automation) adds the current song to your Music Assistant favorites. This works for songs stored locally as well as for tracks from streaming providers. It also works with remote content such as Spotify Connect, AirPlay, or a radio station, as long as the external source provides an artist and title combination (and optionally the album).
## Actions
diff --git a/source/_integrations/nextdns.markdown b/source/_integrations/nextdns.markdown
index cdecebee2db..87f22eb591d 100644
--- a/source/_integrations/nextdns.markdown
+++ b/source/_integrations/nextdns.markdown
@@ -25,3 +25,17 @@ NextDNS is a DNS service that protects from all kinds of security threats, block
To obtain API key go to the NextDNS site >> [Account section](https://my.nextdns.io/account).
{% include integrations/config_flow.md %}
+
+{% configuration_basic %}
+API Key:
+ description: "The API key for your NextDNS account."
+Profile:
+ description: "The NextDNS configuration profile you want to integrate."
+{% endconfiguration_basic %}
+
+## Removing the integration
+
+This integration follows standard integration removal, no extra steps are required.
+
+{% include integrations/remove_device_service.md %}
+
diff --git a/source/_integrations/notify.markdown b/source/_integrations/notify.markdown
index 7b404c8923e..19ffb61236d 100644
--- a/source/_integrations/notify.markdown
+++ b/source/_integrations/notify.markdown
@@ -75,7 +75,7 @@ To test the entity platform action, select the `notify.send_message` action, and
### Example with the entity platform notify action
-Under {% my developer_services title="**Developer Tools** > **Actions**" %}, select the **Notifications: Send a notification message** action. Select some target entity's using the entity selectors, enter a message and test sending it.
+Under {% my developer_services title="**Developer Tools** > **Actions**" %}, select the **Notifications: Send a notification message** action. Select some target entities using the entity selectors, enter a message and test sending it.
If you switch to view the YAML data under **Developer Tools**, it will appear as below. The same {% term action %} can be chosen in {% term automation %}. The YAML will appear the same:
diff --git a/source/_integrations/notify.mqtt.markdown b/source/_integrations/notify.mqtt.markdown
index b9a6fe49f37..047f907f258 100644
--- a/source/_integrations/notify.mqtt.markdown
+++ b/source/_integrations/notify.mqtt.markdown
@@ -12,6 +12,12 @@ The **MQTT notify** platform lets you send an MQTT message when the `send_messag
## Configuration
+To use an MQTT notify entity in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
+
+To use an MQTT notify entity in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
+
```yaml
# Example configuration.yaml entry
mqtt:
@@ -19,6 +25,8 @@ mqtt:
command_topic: "home/living_room/status_screen/notifications"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/ntfy.markdown b/source/_integrations/ntfy.markdown
index 2f5ebcb4f9e..e49185ae244 100644
--- a/source/_integrations/ntfy.markdown
+++ b/source/_integrations/ntfy.markdown
@@ -44,7 +44,7 @@ The ntfy integration can be used to send push notifications from automations and
3. **Adding a topic**
- To set up topics for notifications, select the three-dot {% icon "mdi:dots-vertical" %} menu next to the entry of the previously configured ntfy service, then click **{% icon "mdi:plus" %} Add topic**.
+ To set up topics for notifications, select the three dots {% icon "mdi:dots-vertical" %} menu next to the entry of the previously configured ntfy service, then click **{% icon "mdi:plus" %} Add topic**.
You can now choose one of the following options:
diff --git a/source/_integrations/nuki_matter.markdown b/source/_integrations/nuki_matter.markdown
index bdd10cda24b..990aee35b9f 100644
--- a/source/_integrations/nuki_matter.markdown
+++ b/source/_integrations/nuki_matter.markdown
@@ -14,12 +14,16 @@ ha_iot_class: Local Push
ha_integration_type: virtual
ha_iot_standard:
- matter
+works_with:
+ - matter
---
-[Nuki](https://nuki.io) is committed to making sure their products are up-to-date and ready to use in Home Assistant.
+{% include integrations/wwha.md url="https://nuki.io" name="Nuki" %}
-Nuki Matter devices work locally and integrate seamlessly with the Matter integration in Home Assistant. As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
+## Supported devices
-{% my add_matter_device badge domain=page.ha_domain %}
+The following devices are supported:
-[Learn more about Matter in Home Assistant.](/integrations/matter/)
+- [Nuki Smart Lock Go](https://nuki.io/en-uk/products/smart-lock-go)
+- [Nuki Smart Lock Pro](https://nuki.io/en-uk/products/smart-lock-pro-5th-gen)
+- [Nuki Smart Lock Ultra](https://nuki.io/en-uk/products/smart-lock-ultra)
diff --git a/source/_integrations/number.mqtt.markdown b/source/_integrations/number.mqtt.markdown
index 8ea4af3d968..820e57f4cba 100644
--- a/source/_integrations/number.mqtt.markdown
+++ b/source/_integrations/number.mqtt.markdown
@@ -12,7 +12,8 @@ The `mqtt` Number platform allows you to integrate devices that might expose con
## Configuration
-To enable MQTT Number in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT number entity in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -21,6 +22,8 @@ mqtt:
command_topic: my-device/threshold
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/ollama.markdown b/source/_integrations/ollama.markdown
index 4db4e5914e9..7b355a24a43 100644
--- a/source/_integrations/ollama.markdown
+++ b/source/_integrations/ollama.markdown
@@ -54,7 +54,7 @@ Think before responding:
## Controlling Home Assistant
-If you want to experiment with local LLMs using Home Assistant, we currently recommend using the `llama3.1:8b` model and exposing fewer than 25 entities. Note that smaller models are more likely to make mistakes than larger models.
+If you want to experiment with local LLMs using Home Assistant, we recommend exposing fewer than 25 entities. Note that smaller models are more likely to make mistakes than larger models.
Only models that support [Tools](https://ollama.com/search?c=tools) may control Home Assistant.
diff --git a/source/_integrations/onkyo.markdown b/source/_integrations/onkyo.markdown
index 7726c370804..146a920d60a 100644
--- a/source/_integrations/onkyo.markdown
+++ b/source/_integrations/onkyo.markdown
@@ -32,7 +32,7 @@ Listening modes:
description: List of listening modes supported by the receiver.
{% endconfiguration_basic %}
-The above settings can also be adjusted later. To change **Host** or **Volume Resolution**, select the three-dot menu on the integration entry and select **Reconfigure**.
+The above settings can also be adjusted later. To change **Host** or **Volume Resolution**, select the three dots {% icon "mdi:dots-vertical" %} menu on the integration entry and select **Reconfigure**.
{% include integrations/option_flow.md %}
diff --git a/source/_integrations/opower.markdown b/source/_integrations/opower.markdown
index 3f2a9779b7d..fb34295f4dc 100644
--- a/source/_integrations/opower.markdown
+++ b/source/_integrations/opower.markdown
@@ -170,3 +170,10 @@ With the above changes your (**{% my config_energy title="Settings > Dashboards
- Before opening an issue, ensure you can access the energy usage section/dashboard on your utility website and verify that the data is up-to-date there.
- In your energy dashboard in Home Assistant, make sure you use the statistics and not the sensors.
+
+## Removing the integration
+
+{% include integrations/remove_device_service.md %}
+
+If you remove the integration, the statistics are not automatically deleted.
+You can find and delete the statistics in {% my developer_statistics title="**Developer Tools** > **Statistics**"%} and search for "opower".
diff --git a/source/_integrations/proxmoxve.markdown b/source/_integrations/proxmoxve.markdown
index 3128058d357..0d72e9b3d75 100644
--- a/source/_integrations/proxmoxve.markdown
+++ b/source/_integrations/proxmoxve.markdown
@@ -145,6 +145,10 @@ For the group to access the VMs we need to grant it the auditor role
Creating a dedicated user for Home Assistant, limited to only to the access just created is the most secure method. These instructions use the `pve` realm for the user. This allows a connection, but ensures that the user is not authenticated for SSH connections. If you use the `pve` realm, just be sure to add `realm: pve` to your configuration.
+{% important %}
+The Home Assistant user you create must already exist on the Linux system.
+{% endimportant %}
+
1. Click `Datacenter`
2. Open `Permissions` and click `Users`
3. Click `Add`
diff --git a/source/_integrations/rainmachine.markdown b/source/_integrations/rainmachine.markdown
index e41ed1a0701..7d6da10285b 100644
--- a/source/_integrations/rainmachine.markdown
+++ b/source/_integrations/rainmachine.markdown
@@ -104,7 +104,7 @@ See details of RainMachine API here:
| `minrh` | no | Min Relative Humidity (%RH) |
| `maxrh` | no | Max Relative Humidity (%RH) |
| `condition` | no | Current weather condition code (WNUM). See [here][wnum reference] for options. |
-| `pressure` | no | Barametric Pressure (kPa) |
+| `pressure` | no | Barometric Pressure (kPa) |
| `dewpoint` | no | Dew Point (°C) |
### `rainmachine.restrict_watering`
diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown
index cd6700f640a..0c22657d489 100644
--- a/source/_integrations/recorder.markdown
+++ b/source/_integrations/recorder.markdown
@@ -258,7 +258,7 @@ Perform the action `recorder.enable` to start again saving events and states to
Perform the action `recorder.get_statistics` to retrieve statistics for one or more entities from the recorder database. This action is useful for automations or scripts that need to access historical statistics, such as mean, min, max, or sum values, for supported entities like sensors.
{% note %}
-Statistics are only available for entities that store [Long-term Statistics](https://developers.home-assistant.io/docs/core/entity/sensor/#long-term-statistics). More details can be found in the [2021.8.0 release notes](/blog/2021/08/04/release-20218/#long-term-statistics).
+Statistics are only available for entities that store {% term "Long-term statistics" %}
{% endnote %}
| Data attribute | Optional | Description |
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index f9b8bdcfba1..7272e84707b 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -98,7 +98,7 @@ Dual lens cameras provide additional streams for the second lens.
### Binary sensors
-Depending on the supported features of the camera, binary sensors are added for:
+Depending on the supported features of the camera ([see specifications of the camera model on Reolink.com](#tested-models)), binary sensors are added for:
- Motion detection++
- Visitor++ (Doorbell presses)
@@ -131,7 +131,7 @@ For the **crossline**, **intrusion**, **linger**, **item forgotten**, and **item
### Number entities
-Depending on the supported features of the camera, number entities are added for:
+Depending on the supported features of the camera ([see specifications of the camera model on Reolink.com](#tested-models)), number entities are added for:
- Optical zoom control
- Focus control
@@ -192,7 +192,7 @@ If the **Auto tracking** switch entity is enabled, and a object disappears from
### Button entities
-Depending on the supported features of the camera, button entities are added for:
+Depending on the supported features of the camera ([see specifications of the camera model on Reolink.com](#tested-models)), button entities are added for:
- PTZ stop
- PTZ left
@@ -221,7 +221,7 @@ Some Reolink PTZ cameras can move at di
### Select entities
-Depending on the supported features of the camera, select entities are added for:
+Depending on the supported features of the camera ([see specifications of the camera model on Reolink.com](#tested-models)), select entities are added for:
- Floodlight mode (Off, Auto, Schedule)
- Day night mode+ (Auto, Color, Black&White)
@@ -271,7 +271,7 @@ In some camera models, there is a delay of up to 5 seconds between the turn-off
### Switch entities
-Depending on the supported features of the camera, switch entities are added for:
+Depending on the supported features of the camera ([see specifications of the camera model on Reolink.com](#tested-models)), switch entities are added for:
- Infrared lights in night mode
- Record audio
@@ -318,7 +318,7 @@ Polling the status of the **Hardwired chime enabled** switch can make the hardwi
### Light entities
-Depending on the supported features of the camera, light entities are added for:
+Depending on the supported features of the camera ([see specifications of the camera model on Reolink.com](#tested-models)), light entities are added for:
- Floodlight+
- Status LED
@@ -327,7 +327,7 @@ When the **floodlight** entity is ON always ON, when OFF controlled based on the
### Sensor entities
-Depending on the supported features of the camera, the following sensor entities are added:
+Depending on the supported features of the camera ([see specifications of the camera model on Reolink.com](#tested-models)), the following sensor entities are added:
- PTZ pan position
- PTZ tilt position
@@ -347,7 +347,7 @@ Therefore the update entity in Home Assistant can find and install a firmware up
### Media browser for playback of recordings
-Depending on the support of the camera, the Reolink integration will provide a media browser through which recorded videos of the camera can be accessed.
+If the camera supports recording to an SD card or NVR/Hub ([see specifications of the camera model on Reolink.com](#tested-models)), the Reolink integration will provide a media browser through which recorded videos of the camera can be accessed.
In the sidebar, select "Media" > "Reolink" and select the **camera** of which you want to see recordings. Optionally, select if you want a high or low **resolution** stream and select the recording **date**. Here, all available video files of that day will be shown.
Recordings up to 1 month old can be viewed in Home Assistant.
@@ -368,6 +368,7 @@ The following models have been tested and confirmed to work with a direct link t
- [E1 Outdoor](https://reolink.com/product/e1-outdoor/)
- [E1 Outdoor PoE](https://reolink.com/product/e1-outdoor-poe/)
- [E1 Outdoor Pro](https://reolink.com/product/e1-outdoor-pro/)
+- [Elite Floodlight WiFi](https://reolink.com/product/elite-floodlight-wifi/)
- [Lumus Pro](https://reolink.com/product/lumus-pro/)
- RLC-410*
- [RLC-410W](https://reolink.com/product/rlc-410w/)
@@ -406,6 +407,7 @@ The following models have been tested and confirmed to work with a direct link t
- [Reolink Duo 2 WiFi](https://reolink.com/product/reolink-duo-wifi/)
- **[Reolink Duo 3 PoE](https://reolink.com/product/reolink-duo-3-poe/)**
- Reolink Duo Floodlight ([PoE](https://reolink.com/product/reolink-duo-floodlight-poe/) and [Wi-Fi](https://reolink.com/product/reolink-duo-floodlight-wifi/))
+- [Reolink Elite WiFi](https://reolink.com/product/elite-wifi/)
- [Reolink Floodlight PoE and Wi-Fi*](https://reolink.com/product/reolink-floodlight/)
- [Reolink Home Hub](https://reolink.com/product/reolink-home-hub/)
- [Reolink Home Hub Pro](https://reolink.com/product/reolink-home-hub-pro/)
@@ -438,6 +440,8 @@ The following battery-powered models have been tested and confirmed to work thro
- [Argus Eco Ultra](https://reolink.com/product/argus-eco-ultra/)
- [Argus PT](https://reolink.com/product/argus-pt/)
- **[Argus Track](https://reolink.com/product/argus-track/)**
+- [Reolink Altas](https://reolink.com/product/reolink-altas/)
+- [Reolink Altas PT Ultra](https://reolink.com/product/altas-pt-ultra/)
- **[Reolink Doorbell Battery](https://reolink.com/roadmap/)**
Reolink provides [this larger list of battery camera models](https://support.reolink.com/hc/en-us/articles/32379509281561-Reolink-Home-Hub-Compatibility/) which are compatible with the Home Hub and should work with Home Assistant.
@@ -534,7 +538,7 @@ Removing a camera from a NVR/Home Hub can be done by deleting the device followi
3. Go to {% my integrations title="**Settings** > **Devices & services**" %} and select the integration card.
4. From the list of integration entries, select the **x devices** underneath the integration instance of the NVR/Home Hub from which you want to remove a camera.
5. Select the camera you want to remove from the list of devices
-6. Underneath the **Device info**, select the three-dot {% icon "mdi:dots-vertical" %} menu. Then, select **Delete**.
+6. Underneath the **Device info**, select the three dots {% icon "mdi:dots-vertical" %} menu. Then, select **Delete**.
### Removing a chime
@@ -543,7 +547,7 @@ Removing a chime from a doorbell can be done by deleting the chime following the
1. Go to {% my integrations title="**Settings** > **Devices & services**" %} and select the integration card.
2. From the list of integration entries, select the **x devices** underneath the integration instance of the Doorbell/NVR/Home Hub from which you want to remove a chime.
3. Select the chime you want to remove from the list of devices
-4. Underneath the **Device info**, select the three-dot {% icon "mdi:dots-vertical" %} menu. Then, select **Delete**.
+4. Underneath the **Device info**, select the three dots {% icon "mdi:dots-vertical" %} menu. Then, select **Delete**.
This will also decouple the chime from the doorbell in the Reolink app/client. Therefore, the chime will no longer ring when the doorbell is pressed.
diff --git a/source/_integrations/roomba.markdown b/source/_integrations/roomba.markdown
index 444b20d1cb3..b5b0660beb6 100644
--- a/source/_integrations/roomba.markdown
+++ b/source/_integrations/roomba.markdown
@@ -28,7 +28,7 @@ The **Roomba** {% term integrations %} allows you to control your [iRobot Roomba
{% note %}
-This {% term integrations %} has been tested and confirmed to be working with the iRobot Roomba s9+, Roomba 980, Roomba 960, Roomba 890, and Braava jet m6 models, but should also work fine with any Wi-Fi enabled Roomba or Braava like the 690. For auto-discovery, you will need to initiate a Roomba reboot. For example, by holding the clean button for up to 20 seconds on an i7 or 980. [More information about rebooting your robot](https://homesupport.irobot.com/s/article/9087).
+This {% term integrations %} has been tested and confirmed to be working with the iRobot Roomba s9+, Roomba 980, Roomba 960, Roomba 890, and Braava jet m6 models, but should also work fine with any of the older Wi-Fi enabled Roomba or Braava like the 690. It currently does NOT work with the newer x05 Wi-Fi models, such as Roomba 105, 405, and 505. For auto-discovery, you will need to initiate a Roomba reboot. For example, by holding the clean button for up to 20 seconds on an i7 or 980. [More information about rebooting your robot](https://homesupport.irobot.com/s/article/9087).
{% endnote %}
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/rpi_camera.markdown b/source/_integrations/rpi_camera.markdown
index 23e065608d6..07c1348278f 100644
--- a/source/_integrations/rpi_camera.markdown
+++ b/source/_integrations/rpi_camera.markdown
@@ -15,7 +15,7 @@ related:
ha_quality_scale: legacy
---
-The `rpi_camera` {% term integration %} allows you to integrate the Raspberry Pi camera into Home Assistant. This integration uses the application [`raspistill`](https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspistill.md) to store the image from camera.
+The `rpi_camera` {% term integration %} allows you to integrate the Raspberry Pi camera into Home Assistant. This integration uses the application [`rpicam-still`](https://www.raspberrypi.com/documentation/computers/camera_software.html#rpicam-still) to store the image from camera.
{% important %}
This integration is only available on Home Assistant Core installation types. Unfortunately, it cannot be used with Home Assistant OS, Supervised or Container.
@@ -31,7 +31,7 @@ To enable this camera in your installation, add the following to your {% term "`
rpi_camera:
```
-The whole set of configuration variables is documented here [`Raspberry Pi Camera Module - Raspberry Pi Documentation`](https://www.raspberrypi.org/documentation/raspbian/applications/camera.md).
+The whole set of configuration variables is documented in the [Raspberry Pi documentation of the camera software](https://www.raspberrypi.com/documentation/computers/camera_software.html#rpicam-still).
They are not all wrapped by this `rpi_camera` platform.
{% configuration %}
diff --git a/source/_integrations/sabnzbd.markdown b/source/_integrations/sabnzbd.markdown
index 108720d5301..30f82755169 100644
--- a/source/_integrations/sabnzbd.markdown
+++ b/source/_integrations/sabnzbd.markdown
@@ -20,54 +20,231 @@ ha_integration_type: integration
ha_quality_scale: bronze
---
-The SABnzbd integration will allow you to monitor and control your downloads with [SABnzbd](https://sabnzbd.org) from within Home Assistant and setup automations based on the information.
+The **SABnzbd** {% term integration %} allows you to monitor and control your downloads with [SABnzbd](https://sabnzbd.org) from within Home Assistant and set up automations based on download status and activity.
+
+SABnzbd is a popular newsgroup binary downloader that automates the downloading, verification, repairing, and extraction of files from Usenet. With this integration, you can create smart home automations that respond to your download activity, monitor disk space, and control your downloads remotely.
+
+## Use cases
+
+Here are some practical ways you can use the SABnzbd integration:
+
+- Download completion notifications: Get notified on your phone or smart display when downloads finish.
+- Bandwidth management: Automatically pause downloads during peak internet usage hours or when streaming services are active.
+- Disk space monitoring: Set up alerts when your download drive is running low on space.
+- Smart scheduling: Automatically start downloads during off-peak hours when internet is faster or cheaper.
+- Home theater integration: Pause downloads when movie night starts to ensure smooth streaming.
+- Security monitoring: Get alerted if SABnzbd goes offline or becomes unreachable.
## Prerequisites
You need to grab your API key from your SABnzbd instance in order to configure this integration:
-- Navigate to your SABnzbd.
-- Click "Config", then click "General".
-- Copy your API key under "Security".
+1. Navigate to your SABnzbd web interface.
+2. Select *Config** {% icon "mdi:settings" %}, then **General**.
+3. Copy your API key under **Security**.
{% include integrations/config_flow.md %}
+
{% configuration_basic %}
URL:
description: "The full URL, including port, of your SABnzbd server. Example: `http://localhost:8080` or `http://a02368d7-sabnzbd:8080`, if you are using the add-on."
API key:
- description: "The API key of your SABnzbd server. You can find this in the SABnzbd web interface under **Config cog** (top right) > **General** > **Security**."
+ description: "The API key of your SABnzbd server. You can find this in the SABnzbd web interface under **Config** {% icon "mdi:settings" %} (top right) > **General** > **Security**."
{% endconfiguration_basic %}
-## Sensor
+## Supported functionality
-This integration will create these sensors:
+### Binary sensors
-- `status`: The current status of SABnzbd. (Idle, Paused, etc.)
-- `speed`: The current download speed.
-- `queue`: The total size of the download queue.
-- `left`: The remaining size of the download queue.
-- `disk`: The total disk size at SABnzbd's download location.
-- `disk_free`: The available disk space at SABnzbd's download location.
-- `queue_count`: The number of items in the download queue.
-- `total`: Total GB downloaded.
-- `daily_total`: GB downloaded today. (disabled by default)
-- `weekly_size`: GB downloaded this week. (disabled by default)
-- `monthly_total`: GB downloaded this month. (disabled by default)
+- **Warnings**: Indicates if SABnzbd has any warnings (for example, disk space low, download errors)
-## Binary sensor
+### Buttons
-This integration will create a binary sensor to indicate if SABnzbd has recorded any warnings or errors.
+- **Pause**: Pause all downloads
+- **Resume**: Resume paused downloads
-## Button
+### Sensors
-This integration will create two buttons:
+This integration creates the following sensors to monitor your SABnzbd instance:
-- Pause the download queue.
-- Resume the download queue.
+- **Status**: The current status of SABnzbd (Idle, Downloading, Paused, etc.)
+- **Speed**: The current download speed in MB/s
+- **Queue**: The total size of the download queue in GB
+- **Left**: The remaining size of the download queue in GB
+- **Disk**: The total disk size at SABnzbd's download location in GB
+- **Disk free**: The available disk space at SABnzbd's download location in GB
+- **Queue count**: The number of items in the download queue
+- **Total**: Total GB downloaded since SABnzbd was last restarted
-## Number
+### Numbers
-This integration will create a number entity to set the download queue speed limit in percentage.
+- **Speed limit**: Set the download speed limit (as a percentage of your configured maximum speed).
+
+## Examples
+
+### Basic download monitoring automation
+
+This automation sends a notification when a download completes:
+
+{% raw %}
+```yaml
+- alias: "SABnzbd download complete"
+ triggers:
+ - trigger: state
+ entity_id: sensor.sabnzbd_status
+ to: "Idle"
+ from: "Downloading"
+ actions:
+ - action: notify.mobile_app_your_phone
+ data:
+ title: "Download Complete"
+ message: "SABnzbd has finished downloading and extracting files"
+```
+{% endraw %}
+
+### Disk space warning
+
+Get notified when your download drive is running low on space:
+
+{% raw %}
+```yaml
+- alias: "SABnzbd low disk space warning"
+ triggers:
+ - trigger: numeric_state
+ entity_id: sensor.sabnzbd_disk_free
+ below: 10
+ actions:
+ - action: notify.mobile_app_your_phone
+ data:
+ title: "Low Disk Space"
+ message: "Download drive has less than {{ states('sensor.sabnzbd_disk_free') }} GB free"
+ data:
+ priority: high
+```
+{% endraw %}
+
+### Bandwidth management during streaming
+
+Automatically pause downloads when your media players are active:
+
+{% raw %}
+```yaml
+- alias: "Pause downloads during movie time"
+ triggers:
+ - trigger: state
+ entity_id: media_player.living_room_tv
+ to: "playing"
+ conditions:
+ - condition: state
+ entity_id: sensor.sabnzbd_status
+ state: "Downloading"
+ actions:
+ - action: button.press
+ target:
+ entity_id: button.sabnzbd_pause
+ - action: notify.mobile_app_your_phone
+ data:
+ message: "Downloads paused for movie time"
+
+- alias: "Resume downloads after movie time"
+ triggers:
+ - trigger: state
+ entity_id: media_player.living_room_tv
+ from: "playing"
+ for: "00:05:00"
+ conditions:
+ - condition: state
+ entity_id: sensor.sabnzbd_status
+ state: "Paused"
+ actions:
+ - action: button.press
+ target:
+ entity_id: button.sabnzbd_resume
+```
+{% endraw %}
+
+### Smart scheduling with speed limits
+
+Reduce download speed during peak hours and increase it during off-peak hours:
+
+{% raw %}
+```yaml
+- alias: "SABnzbd peak hours speed limit"
+ triggers:
+ - trigger: time
+ at: "18:00:00"
+ actions:
+ - action: number.set_value
+ target:
+ entity_id: number.sabnzbd_speed_limit
+ data:
+ value: 30
+
+- alias: "SABnzbd off-peak full speed"
+ triggers:
+ - trigger: time
+ at: "23:00:00"
+ actions:
+ - action: number.set_value
+ target:
+ entity_id: number.sabnzbd_speed_limit
+ data:
+ value: 100
+```
+{% endraw %}
+
+### Dashboard card example
+
+Create a comprehensive SABnzbd monitoring card for your dashboard:
+
+{% raw %}
+```yaml
+type: entities
+title: SABnzbd Downloads
+entities:
+ - entity: sensor.sabnzbd_status
+ name: Status
+ - entity: sensor.sabnzbd_speed
+ name: Download speed
+ - entity: sensor.sabnzbd_queue_count
+ name: Items in queue
+ - entity: sensor.sabnzbd_left
+ name: Remaining
+ - type: divider
+ - entity: button.sabnzbd_pause
+ name: Pause downloads
+ - entity: button.sabnzbd_resume
+ name: Resume downloads
+ - type: divider
+ - entity: sensor.sabnzbd_disk_free
+ name: Free space
+ - entity: number.sabnzbd_speed_limit
+ name: Speed limit
+```
+{% endraw %}
+
+## Data updates
+
+The SABnzbd integration {% term polling polls %} data from your SABnzbd server every 30 seconds by default. This provides near real-time updates of download progress, queue status, and system information without putting excessive load on your SABnzbd instance.
+
+## Troubleshooting
+
+### SABnzbd not found or unreachable
+
+1. Verify SABnzbd is running: Check that SABnzbd is running and accessible via its web interface.
+2. Check the URL: Ensure you're using the correct URL format including the port (typically `http://localhost:8080`).
+3. Test API key: Verify your API key is correct by comparing it in the SABnzbd web interface.
+4. Network connectivity: If SABnzbd is on another device, ensure Home Assistant can reach it over the network
+5. Firewall settings: Check that your firewall allows connections to SABnzbd's port.
+6. Enable debug logging: Temporarily enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics) for the SABnzbd integration to get more detailed error messages.
+
+### SABnzbd add-on specific issues
+
+If you're using the SABnzbd Home Assistant add-on:
+
+1. Use internal URL: Use `http://a02368d7-sabnzbd:8080` instead of `localhost`.
+2. Check add-on logs: Review the SABnzbd add-on logs for any error messages.
+3. Add-on configuration: Ensure the add-on is properly configured and started.
## Removing the integration
diff --git a/source/_integrations/scene.mqtt.markdown b/source/_integrations/scene.mqtt.markdown
index 994757ed404..e53179a17b6 100644
--- a/source/_integrations/scene.mqtt.markdown
+++ b/source/_integrations/scene.mqtt.markdown
@@ -12,7 +12,8 @@ The `mqtt` scene platform lets you control your MQTT enabled scenes.
## Configuration
-To enable a MQTT scene in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT scene entity in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -21,6 +22,8 @@ mqtt:
command_topic: zigbee2mqtt/living_room_group/set
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/select.mqtt.markdown b/source/_integrations/select.mqtt.markdown
index 2a3e4efd676..87f95a57200 100644
--- a/source/_integrations/select.mqtt.markdown
+++ b/source/_integrations/select.mqtt.markdown
@@ -12,7 +12,8 @@ The `mqtt` Select platform allows you to integrate devices that might expose con
## Configuration
-To enable MQTT Select in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT select entity in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -25,6 +26,8 @@ mqtt:
- "Option 2"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown
index d7408027c20..66892bdfc7f 100644
--- a/source/_integrations/sensor.mqtt.markdown
+++ b/source/_integrations/sensor.mqtt.markdown
@@ -12,7 +12,9 @@ This `mqtt` sensor platform uses the MQTT message payload as the sensor value. I
## Configuration
-To use your MQTT sensor in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+
+To use an MQTT sensor in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -22,6 +24,8 @@ mqtt:
state_topic: "home/bedroom/temperature"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
@@ -201,7 +205,7 @@ state_class:
required: false
type: string
state_topic:
- description: The MQTT topic subscribed to receive sensor values. If `device_class`, `state_class`, `unit_of_measurement` or `suggested_display_precision` is set, and a numeric value is expected, an empty value `''` will be ignored and will not update the state, a `'None'` value will set the sensor to an `unknown` state. If a `value_template` is used to parse a JSON payload, a `null` value in the JSON [will be rendered as]((/docs/configuration/templating/#using-value-templates-with-mqtt)) `'None'`. Note that the `device_class` can be `null`.
+ description: The MQTT topic subscribed to receive sensor values. If `device_class`, `state_class`, `unit_of_measurement` or `suggested_display_precision` is set, and a numeric value is expected, an empty value `''` will be ignored and will not update the state, a `'None'` value will set the sensor to an `unknown` state. If a `value_template` is used to parse a JSON payload, a `null` value in the JSON [will be rendered as](/docs/configuration/templating/#using-value-templates-with-mqtt) `'None'`. Note that the `device_class` can be `null`.
required: true
type: string
unique_id:
diff --git a/source/_integrations/sensor.rest.markdown b/source/_integrations/sensor.rest.markdown
index db1d6151b83..50ffdaae431 100644
--- a/source/_integrations/sensor.rest.markdown
+++ b/source/_integrations/sensor.rest.markdown
@@ -64,6 +64,11 @@ device_class:
description: Sets the [class of the device](/integrations/sensor#device-class), changing the device state and icon that is displayed on the frontend.
required: false
type: string
+encoding:
+ description: The character encoding to use if none provided in the header of the shared data.
+ required: false
+ type: string
+ default: UTF-8
force_update:
description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history.
required: false
diff --git a/source/_integrations/siren.mqtt.markdown b/source/_integrations/siren.mqtt.markdown
index c03b92b604c..e403806a692 100644
--- a/source/_integrations/siren.mqtt.markdown
+++ b/source/_integrations/siren.mqtt.markdown
@@ -18,7 +18,8 @@ When a `state_topic` is not available, the siren will work in optimistic mode. I
Optimistic mode can be forced, even if the `state_topic` is available. Try to enable it, if experiencing incorrect operation.
-To enable this siren in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT siren in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -27,6 +28,8 @@ mqtt:
command_topic: "home/bedroom/siren/set"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/ssdp.markdown b/source/_integrations/ssdp.markdown
index 77a1c8c137d..eb186576409 100644
--- a/source/_integrations/ssdp.markdown
+++ b/source/_integrations/ssdp.markdown
@@ -36,30 +36,43 @@ To open the SSDP/UPnP Browser, go to:
The following integrations are automatically discovered by the SSDP integration:
+ - [Arcam FMJ Receivers](/integrations/arcam_fmj/)
+ - [AVM FRITZ!Box Tools](/integrations/fritz/)
- [AVM FRITZ!SmartHome](/integrations/fritzbox/)
+ - [Axis](/integrations/axis/)
- [Belkin WeMo](/integrations/wemo/)
+ - [Control4](/integrations/control4/)
- [deCONZ](/integrations/deconz/)
- - [Denon AVR](/integrations/denonavr/)
+ - [Denon AVR Network Receivers](/integrations/denonavr/)
- [Denon HEOS](/integrations/heos/)
- [DirecTV](/integrations/directv/)
+ - [DLNA Digital Media Renderer](/integrations/dlna_dmr/)
+ - [DLNA Digital Media Server](/integrations/dlna_dms/)
- [Frontier Silicon](/integrations/frontier_silicon/)
- [Huawei LTE](/integrations/huawei_lte/)
- [Hyperion](/integrations/hyperion/)
+ - [Imeon Inverter](/integrations/imeon_inverter/)
+ - [Kaleidescape](/integrations/kaleidescape/)
- [Keenetic NDMS2 Router](/integrations/keenetic_ndms2/)
- [Konnected.io](/integrations/konnected/)
+ - [LaMetric](/integrations/lametric/)
- [LG webOS TV](/integrations/webostv/)
- - [Logitech Harmony](/integrations/harmony/)
- - [Lutron Caséta](/integrations/lutron_caseta/)
+ - [Linn / OpenHome](/integrations/openhome/)
+ - [Logitech Harmony Hub](/integrations/harmony/)
+ - [MusicCast](/integrations/yamaha_musiccast/)
+ - [Nanoleaf](/integrations/nanoleaf/)
+ - [NETGEAR](/integrations/netgear/)
- [OctoPrint](/integrations/octoprint/)
- [Onkyo](/integrations/onkyo/)
- - [Philips Hue](/integrations/hue/)
- [Roku](/integrations/roku/)
+ - [Samsung Smart TV](/integrations/samsungtv/)
- [Samsung SyncThru Printer](/integrations/syncthru/)
- - [Samsung TV](/integrations/samsungtv/)
- [Sonos](/integrations/sonos/)
+ - [Sony Bravia TV](/integrations/braviatv/)
- [Sony Songpal](/integrations/songpal/)
- [Synology DSM](/integrations/synology_dsm/)
- - [Ubiquiti UniFi](/integrations/unifi/)
+ - [UniFi Network](/integrations/unifi/)
+ - [UniFi Protect](/integrations/unifiprotect/)
- [Universal Devices ISY/IoX](/integrations/isy994/)
- - [UPnP](/integrations/upnp/)
- - [WiLight](/integrations/wilight/)
+ - [UPnP/IGD](/integrations/upnp/)
+ - [WiLight](/integrations/wilight/)
\ No newline at end of file
diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown
index cfe89d538ae..48dfdd156ea 100644
--- a/source/_integrations/statistics.markdown
+++ b/source/_integrations/statistics.markdown
@@ -25,7 +25,7 @@ The statistics sensor can use either the numeric sensor or binary_sensor as its
Assuming the [`recorder`](/integrations/recorder/) integration is running, historical sensor data is read from the database on startup and is available immediately after a restart of the platform. If the [`recorder`](/integrations/recorder/) integration is *not* running, it can take some time for the sensor to start reporting data because some characteristics calculations require more than one source sensor value.
{% tip %}
-The statistics integration is different from [Long-term Statistics](https://developers.home-assistant.io/docs/core/entity/sensor/#long-term-statistics). More details on the differences can be found in the [2021.8.0 release notes](/blog/2021/08/04/release-20218/#long-term-statistics).
+The statistics integration is different from {% term "Long-term statistics" %}.
{% endtip %}
The statistics sensor has an internal buffer that stores the values it needs for the computation of the various functions (for example, average step). The sensor is updated whenever new values are added to the buffer or when elements are removed. This is triggered either by a change of the source sensor (which may or may not change its actual value) or by values expiring (in cases where max age was specified). This means that the buffer can hold a sequence of identical values in cases where values are not changing over time.
diff --git a/source/_integrations/stream.markdown b/source/_integrations/stream.markdown
index f988ec07dd0..d514d6519bb 100644
--- a/source/_integrations/stream.markdown
+++ b/source/_integrations/stream.markdown
@@ -20,7 +20,16 @@ The stream integration provides a way to proxy live streams through Home Assista
## Configuration
-The `stream` integration is automatically loaded by `default_config` and enabled by the `camera` platforms that support it. If `default_config` is used, no separate {% term "`configuration.yaml`" %} entry is necessary. However, there are some extra options you can configure.
+The `stream` integration is automatically loaded by `default_config` and enabled by camera platforms that support it. If `default_config` is used, no separate {% term "`configuration.yaml`" %} entry is necessary. If `default_config` is **not** used, add the `stream` integration to {% term "`configuration.yaml`" %} to enable it.
+
+Example configuration:
+
+```yaml
+# Enables the stream integration when not using the default configuration
+stream:
+```
+
+Some extra options can be configured. If specified, these options will be used whenever the stream integration is loaded.
{% configuration %}
ll_hls:
@@ -63,6 +72,6 @@ The integration currently supports proxying H.264 and H.265 source streams to th
Note that while H.265 works on Android and iOS, it does not work in many browsers. This is a browser limitation and not a Home Assistant issue. Safari has native H.265 support, and H.265 also works in Edge on Windows when "HEVC Video Extensions" is installed. Chrome versions >= 104 may also work when started with the `--enable-features=PlatformHEVCDecoderSupport` option.
-For testing HEVC browser support, do not rely on the https://www.caniuse.com charts or the https://html5test.com site. They are inaccurate. You can instead use the ["Unprefixed tests" from caniuse.com](https://tests.caniuse.com/?feat=hevc) or the [hls.js demo app with an HEVC HLS stream](https://hls-js.netlify.app/demo/?src=https%3A%2F%2Fbitmovin-a.akamaihd.net%2Fcontent%2Fdataset%2Fmulti-codec%2Fhevc%2Fstream_fmp4.m3u8). The videos there should play if your browser supports H.265.
+For testing HEVC browser support, use the ["Unprefixed tests" from caniuse.com](https://tests.caniuse.com/?feat=hevc) or the [hls.js demo app with an HEVC HLS stream](https://hls-js.netlify.app/demo/?src=https%3A%2F%2Fbitmovin-a.akamaihd.net%2Fcontent%2Fdataset%2Fmulti-codec%2Fhevc%2Fstream_fmp4.m3u8). The videos there should play if your browser supports H.265. Do not rely on the [https://www.caniuse.com](https://www.caniuse.com) charts or the [https://html5test.com](https://html5test.com) site. They are inaccurate.
The `stream` integration supports AAC and MP3 audio. PCM codecs (e.g. G.711/G.723/G.726/G.729) are not supported.
diff --git a/source/_integrations/switch.mqtt.markdown b/source/_integrations/switch.mqtt.markdown
index 9d8855cb340..b2dec5391fa 100644
--- a/source/_integrations/switch.mqtt.markdown
+++ b/source/_integrations/switch.mqtt.markdown
@@ -18,7 +18,8 @@ When a `state_topic` is not available, the switch will work in optimistic mode.
Optimistic mode can be forced, even if the `state_topic` is available. Try to enable it, if experiencing incorrect switch operation.
-To enable this switch in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT switch in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -27,6 +28,8 @@ mqtt:
command_topic: "home/bedroom/switch1/set"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/switchbot_matter.markdown b/source/_integrations/switchbot_matter.markdown
index 86219c6e1f5..ffeb2414f62 100644
--- a/source/_integrations/switchbot_matter.markdown
+++ b/source/_integrations/switchbot_matter.markdown
@@ -31,6 +31,7 @@ SwitchBot also has Matter devices that are certified for use via one of their Ma
### Via a Matter Hub
- [SwitchBot Lock Ultra](https://www.switch-bot.com/products/switchbot-lock_ultra)
+- [SwitchBot Motion Sensor](https://www.switch-bot.com/products/motion-sensor)
- [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)
diff --git a/source/_integrations/telegram_bot.markdown b/source/_integrations/telegram_bot.markdown
index e91a95ee78e..be334db9ef3 100644
--- a/source/_integrations/telegram_bot.markdown
+++ b/source/_integrations/telegram_bot.markdown
@@ -41,8 +41,25 @@ This implementation allows Telegram to push updates directly to your server and
Create your Telegram bot and [retrieve the API key](/integrations/telegram). The `api_key` will be used for adding the bot to Home Assistant during integration setup.
+### Allow Telegram bot to access your Home Assistant files (Optional)
+
+To enable Telegram bot to send local files, you must grant access to it by adding the file's folder to [`allowlist_external_dirs`](/integrations/homeassistant/#allowlist_external_dirs).
+
+Example `configuration.yaml`:
+
+```yaml
+homeassistant:
+ allowlist_external_dirs:
+ - "/media"
+```
+
### Allow Telegram to connect to your Home Assistant (Webhooks platform only)
+{% note %}
+This integration currently does not support self-signed certificates for HTTPS.
+If you are using the *Reverse proxy* or *Direct* method, please ensure that your certificates are signed by a public Certificate Authority (CA).
+{% endnote %}
+
If you plan to use the `Webhooks` platform, you will need to allow Telegram to connect to your Home Assistant using one of the following methods:
#### Home Assistant Cloud
@@ -57,7 +74,16 @@ If your Home Assistant is behind a publicly accessible reverse proxy (for exampl
2. Configure the [HTTP integration](/integrations/http) to allow Home Assistant to accept connections from your reverse proxy:
- Set `use_x_forwarded_for` to `true`.
- Add the IP address of the reverse proxy to `trusted_proxies`.
-
+
+Example `configuration.yaml`:
+
+```yaml
+http:
+ use_x_forwarded_for: true
+ trusted_proxies:
+ - 192.168.0.0/16
+```
+
#### Direct
If your Home Assistant is publicly accessible, do the following:
@@ -82,12 +108,16 @@ Proxy URL:
### Webhooks configuration
+{% note %}
+If you are using Home Assistant Cloud, you must include `127.0.0.1` in the **Trusted networks** field as IP address of incoming requests are not forwarded to your Home Assistant.
+{% endnote %}
+
If you have selected the `Webhooks` Telegram bot type, the integration setup will continue with the webhooks configuration step.
{% configuration_basic %}
URL:
description: Allow to overwrite the external URL from the Home Assistant [configuration](/integrations/homeassistant/#editing-the-general-settings-in-yaml) for different setups (`https://:`).
Trusted networks:
- description: Telegram server access ACL as list.
+ description: Telegram server access ACL as list. Default is `149.154.160.0/20, 91.108.4.0/22`.
{% endconfiguration_basic %}
{% include integrations/option_flow.md %}
@@ -96,7 +126,7 @@ The integration can be configured to use a default parse mode for messages.
{% configuration_basic %}
Parse mode:
- description: Default parser for messages if not explicit in message data, either `markdown` (legacy), `markdownv2` or `html`. Refer to Telegram's [formatting options](https://core.telegram.org/bots/api#formatting-options) for more information.
+ description: Default parser for messages if not explicit in message data, either `markdown` (legacy), `markdownv2`, `html` or `plain_text`. Refer to Telegram's [formatting options](https://core.telegram.org/bots/api#formatting-options) for more information.
{% endconfiguration_basic %}
## Allowlisting chat IDs via Subentries
@@ -107,7 +137,7 @@ To allowlist the chat ID, [retrieve the chat ID](/integrations/telegram#methods-
1. Go to **{% my integrations title="Settings > Devices & services" %}**.
2. Select the Telegram bot integration.
-3. Next to the entry, select the three-dot {% icon "mdi:dots-vertical" %} menu. Then, select **Add allowed chat ID**.
+3. Next to the entry, select the three dots {% icon "mdi:dots-vertical" %} menu. Then, select **Add allowed chat ID**.
{% configuration_basic %}
Chat ID:
diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown
index 98698b7cfde..16db1fecb25 100644
--- a/source/_integrations/template.markdown
+++ b/source/_integrations/template.markdown
@@ -140,7 +140,7 @@ template:
### Configuration reference
-{% configuration %}
+{% configuration trigger-based %}
actions:
description: Define actions to be executed when the trigger fires (for trigger-based entities only). Optional. Variables set by the action script are available when evaluating entity templates. This can be used to interact with anything using actions, in particular actions with [response data](/docs/scripts/perform-actions#use-templates-to-handle-response-data). [See action documentation](/docs/automation/action).
required: false
@@ -193,7 +193,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration device %}
availability:
description: Defines a template to get the `available` state of the entity. If the template either fails to render or returns `True`, `"1"`, `"true"`, `"yes"`, `"on"`, `"enable"`, or a non-zero number, the entity will be `available`. If the template returns any other value, the entity will be `unavailable`. If not configured, the entity will always be `available`. Note that the string comparison is not case sensitive; `"TrUe"` and `"yEs"` are allowed.
required: false
@@ -268,7 +268,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration alarm_control_panel %}
alarm_control_panel:
description: List of alarm control panels
required: true
@@ -349,7 +349,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration binary-sensor %}
binary_sensor:
description: List of binary sensors
required: true
@@ -536,7 +536,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration button %}
button:
description: List of buttons
required: true
@@ -591,7 +591,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration cover %}
cover:
description: Characteristics of a cover
type: map
@@ -822,7 +822,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration fan %}
fan:
description: List of fans
required: true
@@ -1028,7 +1028,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration image %}
image:
description: List of images
required: true
@@ -1055,7 +1055,7 @@ Light entities can only be created from YAML.
```yaml
# Example state-based configuration.yaml entry
-light:
+template:
- light:
- name: "Theater Lights"
level: "{{ state_attr('sensor.theater_brightness', 'lux')|int }}"
@@ -1161,7 +1161,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration light %}
light:
description: List of your lights.
required: true
@@ -1421,7 +1421,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration lock %}
lock:
description: List of locks
required: true
@@ -1609,7 +1609,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration number %}
number:
description: List of numbers
required: true
@@ -1717,7 +1717,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration select %}
select:
description: List of selects
required: true
@@ -1809,7 +1809,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration sensor %}
sensor:
description: List of sensors
required: true
@@ -1834,7 +1834,7 @@ sensor:
required: true
type: template
state_class:
- description: "The [state_class](https://developers.home-assistant.io/docs/core/entity/sensor#available-state-classes) of the sensor. This will also display the value based on the user profile Number Format setting and influence the graphical presentation in the history visualization as a continuous value. If you desire to include the sensor in long-term statistics, include this key and assign it the appropriate value"
+ description: "The [state_class](https://developers.home-assistant.io/docs/core/entity/sensor#available-state-classes) of the sensor. This will also display the value based on the user profile Number Format setting and influence the graphical presentation in the history visualization as a continuous value. If you desire to include the sensor in {% term "Long-term statistics" %}, include this key and assign it the appropriate value"
required: false
type: string
default: None
@@ -1972,7 +1972,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration switch %}
switch:
description: List of switches
required: true
@@ -2118,7 +2118,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration vacuum %}
vacuum:
description: List of vacuum entities
required: true
@@ -2278,7 +2278,7 @@ template:
{% endraw %}
-{% configuration %}
+{% configuration weather %}
weather:
description: List of weather entities
required: true
@@ -2652,7 +2652,7 @@ alarm_control_panel:
{% endraw %}
-{% configuration %}
+{% configuration legacy_alarm_control_panel %}
panels:
description: List of your panels.
required: true
@@ -2736,7 +2736,7 @@ binary_sensor:
{% endraw %}
-{% configuration %}
+{% configuration legacy_binary_sensor %}
sensors:
description: List of your sensors.
required: true
@@ -2823,7 +2823,7 @@ cover:
{% endraw %}
-{% configuration %}
+{% configuration legacy_cover %}
covers:
description: List of your covers.
required: true
@@ -2947,7 +2947,7 @@ fan:
{% endraw %}
-{% configuration %}
+{% configuration legacy_fan %}
fans:
description: List of your fans.
required: true
@@ -3083,7 +3083,7 @@ light:
{% endraw %}
-{% configuration %}
+{% configuration legacy_light %}
lights:
description: List of your lights.
required: true
@@ -3230,7 +3230,7 @@ lock:
{% endraw %}
-{% configuration %}
+{% configuration legacy_lock %}
name:
description: Name to use in the frontend.
required: false
@@ -3297,7 +3297,7 @@ sensor:
{% endraw %}
-{% configuration %}
+{% configuration legacy_sensor %}
sensors:
description: Map of your sensors.
required: true
@@ -3380,7 +3380,7 @@ switch:
{% endraw %}
-{% configuration %}
+{% configuration legacy_switch %}
switches:
description: List of your switches.
required: true
@@ -3442,7 +3442,7 @@ vacuum:
{% endraw %}
-{% configuration %}
+{% configuration legacy_vacuum %}
vacuums:
description: List of your vacuums.
required: true
@@ -3538,7 +3538,7 @@ weather:
{% endraw %}
-{% configuration %}
+{% configuration legacy_weather %}
name:
description: Name to use in the frontend.
required: true
diff --git a/source/_integrations/text.mqtt.markdown b/source/_integrations/text.mqtt.markdown
index 777e50140ea..981dc742b7f 100644
--- a/source/_integrations/text.mqtt.markdown
+++ b/source/_integrations/text.mqtt.markdown
@@ -12,7 +12,8 @@ The `mqtt` Text platform allows you to integrate devices that show text that can
## Configuration
-To enable MQTT text platform in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT text entity in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -21,6 +22,8 @@ mqtt:
command_topic: command-topic
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/thermopro.markdown b/source/_integrations/thermopro.markdown
index 26e0599a50e..61caddb0866 100644
--- a/source/_integrations/thermopro.markdown
+++ b/source/_integrations/thermopro.markdown
@@ -21,13 +21,13 @@ Integrates [ThermoPro](https://buythermopro.com/) devices into Home Assistant.
## Supported devices
-- [TP359](https://buythermopro.com/product/thermopro-tp59-bluetooth-wireless-thermometer-hygrometer-humidity-monitor/)
-- [TP357](https://buythermopro.com/product/thermopro-tp357-bluetooth-digital-indoor-hygrometer-thermometer/)
-- [TP358](https://buythermopro.com/product/tp358/)
-- [TP393](https://buythermopro.com/product/tp393/)
-- [TP960](https://buythermopro.com/product/tempspike/)
-- [TP962](https://buythermopro.com/twin-tempspike/)
-- [TP970](https://buythermopro.com/product/tempspike-plus-tp970/)
+- [TP357 Bluetooth Indoor Thermometer Hygrometer](https://buythermopro.com/products/tp357-bluetooth-hygrometer-thermometer)
+- [TP358 Bluetooth Indoor Thermometer Hygrometer](https://buythermopro.com/products/tp358-bluetooth-indoor-thermometer-hygrometer)
+- [TP359 Bluetooth Indoor Thermometer Hygrometer](https://buythermopro.com/products/tp359-bluetooth-indoor-hygrometer-thermometer)
+- [TP393 Bluetooth Indoor Thermometer Hygrometer](https://device.report/manual/3622300)
+- [TP960 TempSpike Bluetooth Meat Thermometer](https://buythermopro.com/products/tp960-tempspike-bluetooth-meat-thermometer)
+- [TP962 Twin TempSpike Bluetooth Meat Thermometer](https://buythermopro.com/products/tp962-twin-tempspike-bluetooth-meat-thermometer)
+- [TP970 TempSpike Plus Bluetooth Meat Thermometer](https://buythermopro.com/products/tp970-tempspike-plus-bluetooth-meat-thermometer)
The ThermoPro integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional.
diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown
index 6aadec01444..6263ca77142 100644
--- a/source/_integrations/todoist.markdown
+++ b/source/_integrations/todoist.markdown
@@ -29,7 +29,7 @@ related:
title: Todoist projects
---
-This platform allows you to connect to your [Todoist projects](https://todoist.com) as [todo](/integrations/todo/) or [calendar](/integrations/calendar/) entities. All tasks get updated roughly every 15 minutes.
+This platform allows you to connect to your [Todoist projects](https://todoist.com) as [todo](/integrations/todo/) or [calendar](/integrations/calendar/) entities. All tasks get updated roughly every minute.
A calendar entity will be `on` if you have a task due in that project. It will be `off` if all the tasks in the project are completed or if the project doesn't have any tasks at all.
@@ -135,7 +135,7 @@ the Todoist UI.
- **location**: Not used.
- - **start_time**: The last time the Todoist integration got updated. Usually within the last 15 minutes.
+ - **start_time**: The last time the Todoist integration got updated. Usually within the last minute.
- **end_time**: When the task is due.
diff --git a/source/_integrations/upc_connect.markdown b/source/_integrations/upc_connect.markdown
index bf6d15e4883..546cdf32e1a 100644
--- a/source/_integrations/upc_connect.markdown
+++ b/source/_integrations/upc_connect.markdown
@@ -18,7 +18,7 @@ related:
ha_quality_scale: legacy
---
-The `upc_connect` {% term integration %} offers presence detection by looking at connected devices to a [Connect Box](https://www.upc.ch/en/internet/learn-about-internet/) from [Liberty Global](https://www.libertyglobal.com) (also known as UPC Cablecom in Switzerland) which is an Internet provider in Switzerland, Austria, the Netherlands (under Ziggo) and Hungary (under Vodafone).
+The `upc_connect` {% term integration %} offers presence detection by looking at connected devices to a [Connect Box](https://www.upc.ch/en/internet/learn-about-internet/) from [Liberty Global](https://www.libertyglobal.com) (also known as UPC Cablecom in Switzerland) which is an Internet provider in Switzerland, Austria, the Netherlands (under Ziggo), Hungary (under Vodafone) and Poland (under PLAY).
{% important %}
This integration works by logging into the router with a password. The router can only have one active session at any time, so if you want to access your router settings then stop Home Assistant first.
diff --git a/source/_integrations/update.mqtt.markdown b/source/_integrations/update.mqtt.markdown
index da07600780a..537dbd0fe39 100644
--- a/source/_integrations/update.mqtt.markdown
+++ b/source/_integrations/update.mqtt.markdown
@@ -12,7 +12,8 @@ The `mqtt` Update platform allows you to integrate devices that might expose fir
## Configuration
-To enable MQTT Update in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT update entity in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -22,6 +23,8 @@ mqtt:
latest_version_topic: topic-latest
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/vacuum.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown
index 5136a8d5bb3..9356c1a03d2 100644
--- a/source/_integrations/vacuum.mqtt.markdown
+++ b/source/_integrations/vacuum.mqtt.markdown
@@ -12,7 +12,18 @@ The initial state of the MQTT vacuum {% term entity %} will set to `unknown` and
## Configuration
-MQTT vacuum configuration section.
+To use an MQTT vacuum in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
+
+```yaml
+# Example configuration.yaml entry
+mqtt:
+ - vacuum:
+ state_topic: state-topic
+ command_topic: command-topic
+```
+
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
{% configuration %}
availability:
diff --git a/source/_integrations/valve.mqtt.markdown b/source/_integrations/valve.mqtt.markdown
index 198418b6407..8f96fbc9251 100644
--- a/source/_integrations/valve.mqtt.markdown
+++ b/source/_integrations/valve.mqtt.markdown
@@ -18,16 +18,19 @@ A valve entity can be have the following states: `open`, `opening`, `closed` or
If a `state_topic` is configured, the entity's state will be updated only after an MQTT message is received on `state_topic` matching `state_open`, `state_opening`, `state_closed` or `state_closing`. Commands configured through `payload_open`, `payload_closed`, and `payload_stop` will be published to `command_topic` to control the valve.
-To use your MQTT valve in your installation, add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT valve in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry for a value that is set by open or close command
mqtt:
- valve:
- command_topic: "home-assistant/valve/set"
- state_topic: "home-assistant/valve/state"
+ command_topic: "heater/valve/set"
+ state_topic: "heater/valve/state"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
### Valve controlled by position
If the valve supports reporting its position (the `reports_position` config option is set to `true`), a numeric state is expected on `state_topic`, but state updates are still allowed for `state_opening` and `state_closing`. Also, a JSON format is supported. It allows both `state` and `position` to be reported together.
@@ -46,8 +49,8 @@ To use your MQTT valve in your installation, add the following to your {% term "
# Example configuration.yaml entry for a valve that reports position
mqtt:
- valve:
- command_topic: "home-assistant/valve/set"
- state_topic: "home-assistant/valve/state"
+ command_topic: "heater/valve/set"
+ state_topic: "heater/valve/state"
reports_position: true
```
@@ -311,10 +314,10 @@ mqtt:
- valve:
name: "MQTT valve"
command_template: '{"x": {{ value }} }'
- command_topic: "home-assistant/valve/set"
- state_topic: "home-assistant/valve/state"
+ command_topic: "heater/valve/set"
+ state_topic: "heater/valve/state"
availability:
- - topic: "home-assistant/valve/availability"
+ - topic: "heater/valve/availability"
qos: 0
reports_position: false
retain: true
@@ -345,10 +348,10 @@ mqtt:
- valve:
name: "MQTT valve"
command_template: '{"x": {{ value }} }'
- command_topic: "home-assistant/valve/set"
- state_topic: "home-assistant/valve/state"
+ command_topic: "heater/valve/set"
+ state_topic: "heater/valve/state"
availability:
- - topic: "home-assistant/valve/availability"
+ - topic: "heater/valve/availability"
reports_position: true
value_template: "{{ value_json.x }}"
```
diff --git a/source/_integrations/vegehub.markdown b/source/_integrations/vegehub.markdown
index 40d2dc4f854..35444d117a8 100644
--- a/source/_integrations/vegehub.markdown
+++ b/source/_integrations/vegehub.markdown
@@ -8,33 +8,36 @@ ha_config_flow: true
ha_release: 2025.7
ha_iot_class: Local Push
ha_codeowners:
- - '@ghowevege'
+ - '@thulrus'
+ - '@vegetronix'
ha_domain: vegehub
ha_platforms:
- sensor
- switch
ha_integration_type: integration
related:
- - url: https://www.vegetronix.com/Products/VG-HUB-RELAY/
+ - url: https://vegetronix.com/Products/ha/VG-HUB-RELAY/
title: VegeHub product page
- - url: https://www.vegetronix.com/Products/VG-HUB-GEN2/QuickStart
+ - url: https://vegetronix.com/Products/VG-HUB-GEN2/QuickStart
title: VegeHub Quick Start Guide
- url: https://vegetronix.com/Products/VG-HUB-GEN2/Manual
title: VegeHub Manual
---
-The **Vegetronix VegeHub** {% term integration %} allows you to control your [VegeHub](https://www.vegetronix.com/Products/VG-HUB-RELAY/) and gather data from its attached sensors.
+The **[Vegetronix VegeHub](https://vegetronix.com/Products/ha/VG-HUB-RELAY/)** is a compact, network-connected device designed for agricultural monitoring and control. It supports a variety of environmental sensors—including *soil moisture, soil temperature, light, and more*—making it suitable for use in gardening, landscaping, and precision agriculture. In addition to monitoring, the VegeHub can also control actuators such as *relays, pumps, or water valves*, enabling automation of irrigation and other systems. This {% term integration %} allows Home Assistant to receive real-time data from VegeHub devices and optionally control connected outputs.
+
+The VegeHub is available in the [standard configurations](https://vegetronix.com/Products/ha/VG-HUB-RELAY/), as well as the [sprinkler control variation](https://vegetronix.com/Products/ha/VG-SPRINKLER-4L/). Both are supported by this integration.
There is currently support for the following platforms within Home Assistant:
-- Sensor - Gathers data from sensor channels on a VegeHub and stores the values in Home Assistant
-- Switch - Allows you to view the status of relays on a VegeHub, and control them.
-
-{% include integrations/config_flow.md %}
+- Sensor: Collects data from VegeHub sensor channels.
+- Switch: Shows actuator states and lets you control them.
## Supported devices
-- [Vegetronix VegeHub](https://www.vegetronix.com/Products/VG-HUB-RELAY/) - Firmware **4.0 or later** - All variants
+- [Sensor Based WiFi Controller](https://vegetronix.com/Products/ha/VG-HUB-RELAY/) - Firmware 4.0 or later - All variants
+- [Sensor Based WiFi Data Logger](https://vegetronix.com/Products/ha/VG-HUB/) - Firmware 4.0 or later - All variants
+- [Sensor Based WiFi Sprinkler Valve Controller](https://vegetronix.com/Products/ha/VG-SPRINKLER-4L/) - Firmware 4.0 or later - All variants
## Prerequisites
@@ -46,13 +49,25 @@ Once connected to the network, you should automatically be directed by your devi
It is crucial to change the default access point password. If you don't, anyone can easily access your VegeHub and potentially compromise your Wi-Fi network credentials.
{% endimportant %}
-Select **Apply** and your VegeHub will reset the network connection and try to connect to the credentials you put in.
+Select **Apply**, and your VegeHub will reset its network connection and try to connect using the credentials you entered.
+
+### Connecting to Home Assistant
+
+Home Assistant monitors your network for VegeHub devices. As soon as your VegeHub is connected to the same network as Home Assistant, it should be detected automatically. Go to {% my integrations title="**Settings** > **Devices & services**" %} in Home Assistant, where you should see your VegeHub listed under **Discovered** devices.
+
+{% important %}
+The VegeHub device relies on your Home Assistant instance keeping the same IP address. If your Home Assistant device changes its IP address, the VegeHub will no longer be able to send updates until you update its configuration with the new IP address.
+
+To avoid issues, it is recommended to assign a static IP address or DHCP reservation to your Home Assistant device on your network. If you ever change your Home Assistant device's IP address, remember to update the VegeHub's configuration so it can continue sending updates.
+{% endimportant %}
+
+We recommend adding devices through Home Assistant's automatic detection, but you can also add devices manually if needed.
{% include integrations/config_flow.md %}
### Device settings
-To open the VegeHub's device settings interface on their website, go to {% my integrations title="Settings > Devices & services" %}, and on the integration card, select 1 device to open the device page. Under Device info, select Visit to open the website with the settings.
+To open the VegeHub settings page, navigate to {% my integrations title="**Settings** > **Devices & services**" %}, choose the VegeHub device card, and under **Device info** select **Visit**.
## Power management
diff --git a/source/_integrations/wake_on_lan.markdown b/source/_integrations/wake_on_lan.markdown
index 697864cdc54..9ecd40b3a25 100644
--- a/source/_integrations/wake_on_lan.markdown
+++ b/source/_integrations/wake_on_lan.markdown
@@ -151,7 +151,7 @@ from Home Assistant running on another Linux computer (the **server**).
switch:
- platform: wake_on_lan
name: "TARGET"
- ...
+ mac: XX:XX:XX:XX:XX:XX
turn_off:
action: shell_command.turn_off_TARGET
diff --git a/source/_integrations/wallbox.markdown b/source/_integrations/wallbox.markdown
index 28eac6ab260..1fb85e39cc5 100644
--- a/source/_integrations/wallbox.markdown
+++ b/source/_integrations/wallbox.markdown
@@ -18,10 +18,18 @@ ha_codeowners:
ha_integration_type: integration
---
-The **Wallbox** {% term integration %} pulls data from the [MyWallbox Portal](https://my.wallbox.com) for your Wallbox charging station.
+The **Wallbox** {% term integration %} pulls data from the [MyWallbox Portal](https://my.wallbox.com) for your Wallbox charging station.
+Use this integration to monitor the charging of your car by the **Wallbox** charger and modify settings such as **Charging Power**, **Energy Price**, **Solar Charging** and **Pause/Resume**. The energy usage collected by this integration can be used in the [Energy dashboard](/home-energy-management).
{% include integrations/config_flow.md %}
+{% configuration_basic %}
+Station Serial Number:
+ description: "The Serial number of your charger. You can find it in the Wallbox App or on the Wallbox Portal."
+Username:
+ description: "This integration only supports a regular / email login, Apple or Google accounts are not supported."
+{% endconfiguration_basic %}
+
## Sensors
The {% term integration %} adds the following sensors:
@@ -64,3 +72,35 @@ The {% term integration %} adds a select {% term entity %} to control solar char
## Switch
The {% term integration %} adds a switch {% term entity %}, allowing you to pause/resume the charging process.
+
+## Data updates
+
+Data is refreshed once every minute. Note that this update interval has been chosen in conjunction with Wallbox to prevent overloading their infrastructure. Altering this refresh rate is not recommended.
+
+## Troubleshooting
+
+
+### Setup errors
+
+- You can only use a regular login with this integration.
+- Google or Apple logins are not supported.
+- You can find the serial number of your charger in the Wallbox app or on the Wallbox Portal under the Chargers section.
+
+### Connection failures
+
+Users often report issues with the Wi-Fi reception of their charger; use a wired connection if possible. Also verify that the charger is communicating with the Wallbox Portal.
+
+
+### Insufficient Rights
+
+This integrations needs admin credentials to function properly. Please assign the user appropriate permissions in the Wallbox portal.
+
+
+### Other issues
+
+Always first check whether the data is being received by the Wallbox Portal as this integration uses the same API. Many problems are related to the connectivity of the charger.
+
+## Removing the integration
+
+{% include integrations/remove_device_service.md %}
+
diff --git a/source/_integrations/water_heater.mqtt.markdown b/source/_integrations/water_heater.mqtt.markdown
index e0ef4c4e65a..4894318e1b3 100644
--- a/source/_integrations/water_heater.mqtt.markdown
+++ b/source/_integrations/water_heater.mqtt.markdown
@@ -12,7 +12,8 @@ The `mqtt` water heater platform lets you control your MQTT enabled water heater
## Configuration
-To enable this water heater platform in your installation, first add the following to your {% term "`configuration.yaml`" %} file:
+To use an MQTT water heater in your installation, add the following to your {% term "`configuration.yaml`" %} file.
+{% include integrations/restart_ha_after_config_inclusion.md %}
```yaml
# Example configuration.yaml entry
@@ -22,6 +23,8 @@ mqtt:
mode_command_topic: "basement/boiler/mode/set"
```
+Alternatively, a more advanced approach is to set it up via [MQTT discovery](/integrations/mqtt/#mqtt-discovery).
+
{% configuration %}
availability:
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
diff --git a/source/_integrations/xiaomi_ble.markdown b/source/_integrations/xiaomi_ble.markdown
index 79dc82e2309..ae250a57857 100644
--- a/source/_integrations/xiaomi_ble.markdown
+++ b/source/_integrations/xiaomi_ble.markdown
@@ -58,7 +58,7 @@ Flower Care firmware update steps:
- Press the "+" button on the top right in the devices tab of the app
- Add the plant sensor to the app and select an arbitrary plant
- Wait for the synchronization of the sensor to finish, and a dialog asking for a firmware update should appear (this might take a few minutes)
-- The installed and latest firmware version can be verified by selecting the plant -> three-dot menu -> Hardware settings -> Hardware update
+- The installed and latest firmware version can be verified by selecting the plant -> three dots menu -> Hardware settings -> Hardware update
- The Flower Care account and app are not required any further for this integration to work
Also note that the battery level of the plant sensor can only be retrieved by connecting to the device (reading characteristics), while the other sensor data is broadcasted passively. To prevent battery drainage, a connection is made only once a day. Connecting to the device also requires that the device has a good signal strength.
diff --git a/source/_integrations/zeroconf.markdown b/source/_integrations/zeroconf.markdown
index 5db322505a1..d3d05549221 100644
--- a/source/_integrations/zeroconf.markdown
+++ b/source/_integrations/zeroconf.markdown
@@ -62,3 +62,100 @@ Configure the virtual machine to accept this traffic by adding the `trustGuestRx
```
This only works with the `virtio` network adapter type and it is disabled by default for security reasons. See [the libvirt documentation](https://libvirt.org/formatdomain.html#elementsNICS) for more details.
+
+## Discovered integrations
+
+The following integrations are automatically discovered by the `zeroconf` integration:
+
+ - [1-Wire](/integrations/onewire/)
+ - [AirGradient](/integrations/airgradient/)
+ - [Altruist](/integrations/altruist/)
+ - [Android TV Remote](/integrations/androidtv_remote/)
+ - [Apple TV](/integrations/apple_tv/)
+ - [Awair](/integrations/awair/)
+ - [Axis](/integrations/axis/)
+ - [Bang & Olufsen](/integrations/bang_olufsen/)
+ - [Big Ass Fans](/integrations/baf/)
+ - [BleBox devices](/integrations/blebox/)
+ - [Bluesound](/integrations/bluesound/)
+ - [Bond](/integrations/bond/)
+ - [Bosch SHC](/integrations/bosch_shc/)
+ - [Bose SoundTouch](/integrations/soundtouch/)
+ - [Brother Printer](/integrations/brother/)
+ - [BSB-Lan](/integrations/bsblan/)
+ - [Cambridge Audio](/integrations/cambridge_audio/)
+ - [Daikin AC](/integrations/daikin/)
+ - [Deako](/integrations/deako/)
+ - [Denon HEOS](/integrations/heos/)
+ - [Devialet](/integrations/devialet/)
+ - [devolo Home Control](/integrations/devolo_home_control/)
+ - [devolo Home Network](/integrations/devolo_home_network/)
+ - [DoorBird](/integrations/doorbird/)
+ - [ecobee](/integrations/ecobee/)
+ - [EHEIM Digital](/integrations/eheimdigital/)
+ - [Elexa Guardian](/integrations/guardian/)
+ - [Elgato Light](/integrations/elgato/)
+ - [Elmax](/integrations/elmax/)
+ - [Enphase Envoy](/integrations/enphase_envoy/)
+ - [ESPHome](/integrations/esphome/)
+ - [Freebox](/integrations/freebox/)
+ - [Google Cast](/integrations/cast/)
+ - [Home Connect](/integrations/home_connect/)
+ - [HomeKit Bridge](/integrations/homekit/)
+ - [HomeKit Device](/integrations/homekit_controller/)
+ - [HomeWizard Energy](/integrations/homewizard/)
+ - [Hunter Douglas PowerView](/integrations/hunterdouglas_powerview/)
+ - [Internet Printing Protocol (IPP)](/integrations/ipp/)
+ - [IOmeter](/integrations/iometer/)
+ - [iRobot Roomba and Braava](/integrations/roomba/)
+ - [Kodi](/integrations/kodi/)
+ - [Lektrico Charging Station](/integrations/lektrico/)
+ - [LinkPlay](/integrations/linkplay/)
+ - [LOOKin](/integrations/lookin/)
+ - [LOQED Touch Smart Lock](/integrations/loqed/)
+ - [Lutron Caséta](/integrations/lutron_caseta/)
+ - [Matter](/integrations/matter/)
+ - [Miele](/integrations/miele/)
+ - [Modern Forms](/integrations/modern_forms/)
+ - [Music Assistant](/integrations/music_assistant/)
+ - [Nanoleaf](/integrations/nanoleaf/)
+ - [Nettigo Air Monitor](/integrations/nam/)
+ - [Network UPS Tools (NUT)](/integrations/nut/)
+ - [OctoPrint](/integrations/octoprint/)
+ - [Overkiz](/integrations/overkiz/)
+ - [OwnTone](/integrations/forked_daapd/)
+ - [Peblar](/integrations/peblar/)
+ - [Philips Hue](/integrations/hue/)
+ - [Philips TV](/integrations/philips_js/)
+ - [Plex Media Server](/integrations/plex/)
+ - [Plugwise](/integrations/plugwise/)
+ - [Powerfox](/integrations/powerfox/)
+ - [Pure Energie](/integrations/pure_energie/)
+ - [Rabbit Air](/integrations/rabbitair/)
+ - [Rachio](/integrations/rachio/)
+ - [RainMachine](/integrations/rainmachine/)
+ - [ROMY Vacuum Cleaner](/integrations/romy/)
+ - [Russound RIO](/integrations/russound_rio/)
+ - [Samsung Smart TV](/integrations/samsungtv/)
+ - [Shelly](/integrations/shelly/)
+ - [Slide Local](/integrations/slide_local/)
+ - [Smappee](/integrations/smappee/)
+ - [SMLIGHT SLZB](/integrations/smlight/)
+ - [Sonos](/integrations/sonos/)
+ - [Synology DSM](/integrations/synology_dsm/)
+ - [System Bridge](/integrations/system_bridge/)
+ - [Tailwind](/integrations/tailwind/)
+ - [TechnoVE](/integrations/technove/)
+ - [Thread](/integrations/thread/)
+ - [Vegetronix VegeHub](/integrations/vegehub/)
+ - [VIZIO SmartCast](/integrations/vizio/)
+ - [Vogel's MotionMount](/integrations/motionmount/)
+ - [Volumio](/integrations/volumio/)
+ - [WLED](/integrations/wled/)
+ - [Wyoming Protocol](/integrations/wyoming/)
+ - [Xiaomi Gateway (Aqara)](/integrations/xiaomi_aqara/)
+ - [Xiaomi Home](/integrations/xiaomi_miio/)
+ - [Yeelight](/integrations/yeelight/)
+ - [Zigbee Home Automation](/integrations/zha/)
+ - [Z-Wave](/integrations/zwave_js/)
+ - [Z-Wave.Me](/integrations/zwave_me/)
diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown
index 414f23da333..1679564d30d 100644
--- a/source/_integrations/zha.markdown
+++ b/source/_integrations/zha.markdown
@@ -558,7 +558,7 @@ Prerequisites and steps can vary depending on the device type, manufacturer, and
{% endnote %}
1. Navigate to the Zigbee device's configuration page,
-2. In the options menu (the "three-dots" icon), select **Manage Zigbee device**,
+2. In the options menu (the "three dots" icon), select **Manage Zigbee device**,
3. Select the **Bindings** tab in the pop-up dialog,
4. Choose the device from the dropdown list of _Bindable devices_ (or _Bindable groups_),
5. Confirm the Bind or Unbind action:
diff --git a/source/_integrations/zooz.markdown b/source/_integrations/zooz.markdown
index 0df6f0daae9..8840700406c 100644
--- a/source/_integrations/zooz.markdown
+++ b/source/_integrations/zooz.markdown
@@ -4,17 +4,66 @@ description: Connect and control your Zooz Z-Wave series devices using the Z-Wav
ha_release: '2025.7'
ha_iot_class: Local Push
ha_category:
- - Lock
+ - Plug
+ - Light
+ - Sensor
+ - Switch
+ - Water management
ha_domain: zooz
ha_integration_type: brand
ha_platforms:
- - lock
+ - binary_sensor
+ - light
+ - sensor
+ - switch
+works_with:
+ - zwave
ha_iot_standard: zwave
ha_brand: true
---
-Zooz Z-Wave devices work locally and integrate seamlessly with the Z-Wave integration in Home Assistant (Z-Wave stick required). As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
+[Zooz](https://www.getzooz.com/) Z-Wave devices work locally and integrate seamlessly with the Z-Wave integration in Home Assistant (Z-Wave stick required). As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
{% my add_zwave_device badge domain=page.ha_domain %}
[Learn more about Z-Wave in Home Assistant.](/integrations/zwave_js/)
+
+## Supported devices
+
+The following devices are certified for Works with Home Assistant:
+
+### Leak Protection
+
+[ZAC36 Titan Water Valve Actuator](https://www.getzooz.com/zooz-zac36-titan-water-valve-actuator/)
+
+### Plugs
+
+[ZEN04 Smart Plug](https://www.getzooz.com/zooz-zen04-smart-plug/)
+[ZEN05 Outdoor Plug](https://www.getzooz.com/zooz-zen05-outdoor-smart-plug/%20)
+
+### Relays
+
+[ZEN16 Multi Relay](https://www.getzooz.com/zooz-zen16-multirelay/)
+[ZEN51 Dry Contact Relay](https://www.getzooz.com/zooz-zen51-dry-contact-relay/)
+[ZEN52 Double Relay](https://www.getzooz.com/zooz-zen52-double-relay/)
+[ZEN52 DC Motor Controller](https://www.getzooz.com/zooz-zen53-dc-motor-controller/)
+
+### Lighting Switches
+
+[ZEN30 Double Switch](https://www.getzooz.com/zooz-zen30-double-switch/)
+[ZEN32 Scene Controller](https://www.getzooz.com/zooz-zen32-scene-controller/)
+[ZEN71 On Off Switch](https://www.getzooz.com/zooz-zen71-on-off-switch/)
+[ZEN72 Dimmer](https://www.getzooz.com/zooz-zen72-dimmer/)
+[ZEN74 Toggle Dimmer](https://www.getzooz.com/zooz-zen74-s2-toggle-dimmer/)
+[ZEN76 S2 On Off Switch](https://www.getzooz.com/zooz-zen76-s2-700-series-switch/)
+[ZEN77 S2 Dimmer](https://www.getzooz.com/zooz-zen77-s2-dimmer/)
+
+### Sensors
+
+[ZSE11 Q Sensor (4in1)](https://www.getzooz.com/zooz-zse11-q-sensor/)
+[ZSE18 Motion Sensor](https://www.getzooz.com/zooz-zse18-s2-motion-sensor/)
+[ZSE41 Open / Close XS Sensor](https://www.getzooz.com/zooz-zse41-open-close-xs-sensor/)
+[ZSE42 Water Leak XS Sensor](https://www.getzooz.com/zooz-zse42-water-leak-xs-sensor/)
+[ZSE43 Tilt Shock XS Sensor](https://www.getzooz.com/zooz-zse43-tilt-shock-xs-sensor/)
+[ZSE44 Temperature Humidity XS Sensor](https://www.getzooz.com/zooz-zse44-temperature-humidity-xs-sensor/)
+[ZSE70 Outdoor Motion Sensor](https://www.getzooz.com/zse70-outdoor-motion-sensor/)
diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown
index 484bcf57d11..a378faf4e05 100644
--- a/source/_integrations/zwave_js.markdown
+++ b/source/_integrations/zwave_js.markdown
@@ -50,7 +50,7 @@ The **Z-Wave** {% term integration %} allows you to control a Z-Wave network fro
## Device compatibility
-You do not need a Z-Wave controller that is specifically designed for the Z-Wave integration in Home Assistant. The Z-Wave integration in Home Assistant can be operated with any Z-Wave network with other Z-Wave certified devices from other manufacturers. All mains operated nodes within the network will act as repeaters regardless of vendor to increase reliability of the network.
+You do not need a Z-Wave adapter that is specifically designed for the Z-Wave integration in Home Assistant. The Z-Wave integration in Home Assistant can be operated with any Z-Wave network with other Z-Wave certified devices from other manufacturers. All mains operated nodes within the network will act as repeaters regardless of vendor to increase reliability of the network.
## Getting started
@@ -60,14 +60,15 @@ This sections shows you how to set up a Z-Wave JS server and how to add your fir
Throughout this documentation, Home Assistant terminology is used. For some of the concepts, the terminology does not correspond to the terminology used in Z-Wave documentation. The table below provides equivalents for some of those terms.
-| Z-Wave functionality | Home Assistant | Definition |
-| -------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------- |
-| inclusion | add | The process of adding a node to the Z-Wave network |
-| exclusion | remove | The process of removing a node from the Z-Wave network |
-| replication | copy (not supported in Home Assistant) | The process of copying network information from one controller to another. Not supported in Home Assistant. |
-| barrier operator | cover |
-| window covering | cover |
-| multilevel switch | represented by different entity types: light, fan etc. |
+| Z-Wave functionality | Home Assistant | Definition |
+| -------------------- | -------------- | ---------- |
+| barrier operator | cover | |
+| controller | adapter, when referring to the hardware device that provides the Z-Wave functionality. The term controller is still used when referring to the network role (such as primary, secondary controller) | |
+| exclusion | remove | The process of removing a node from the Z-Wave network |
+| inclusion | add | The process of adding a node to the Z-Wave network |
+| multilevel switch | represented by different entity types: light, fan etc. | |
+| replication | copy (not supported in Home Assistant) | The process of copying network information from one adapter to another. Not supported in Home Assistant. |
+| window covering | cover | |
#### Classic inclusion versus SmartStart
@@ -81,7 +82,7 @@ For more Z-Wave term definitions, refer to the [terminology section](#z-wave-ter
To run a Z-Wave network, you need the following elements:
-- A [supported Z-Wave controller](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules). First-time user? For recommendations on what to buy, go [here](#which-z-wave-controller-should-i-buy).
+- A [supported Z-Wave adapter](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules). First-time user? For recommendations on what to buy, go [here](#which-z-wave-adapter-should-i-buy).
- A running [Z-Wave JS server](#setting-up-a-z-wave-js-server).
- An installed Z-Wave integration in Home Assistant.
@@ -94,12 +95,12 @@ For other ways to setup a Z-Wave server, refer to the [advanced installation ins
Follow these steps:
1. Open the Home Assistant user interface.
-2. Plug the Z-Wave dongle into the device running Home Assistant.
- - Most likely, your dongle will be recognized automatically.
+2. Plug the Z-Wave adapter into the device running Home Assistant.
+ - Most likely, your adapter will be recognized automatically.
- In the dialog, select **Recommended installation**.
- This will install the Z-Wave JS add-on on the Home Assistant server.
- Add the device to an {% term area %} and select **Finish**.
- - **Troubleshooting**: If your dongle is not recognized, follow these steps:
+ - **Troubleshooting**: If your adapter is not recognized, follow these steps:
{% details "Manual setup steps" %}
Use this My button:
@@ -118,15 +119,15 @@ Use this My button:
3. Wait for the installation to complete.
4. Depending on your Home Assistant version, you may be prompted for network security keys.
- If you are using Z-Wave for the first time, leave all the fields empty and select **Submit**. The system will generate network security keys for you.
- - If this Z-Wave dongle has already been paired with secure devices, you need to enter the previously used network key as the S0 network key. S2 security keys will be automatically generated for you.
- - Make sure that you keep a backup of these keys in a safe place in case you need to move your Z-Wave dongle to another device. Copy and paste them somewhere safe.
+ - If this Z-Wave adapter has already been paired with secure devices, you need to enter the previously used network key as the S0 network key. S2 security keys will be automatically generated for you.
+ - Make sure that you keep a backup of these keys in a safe place in case you need to move your Z-Wave adapter to another device. Copy and paste them somewhere safe.
5. Wait for the Z-Wave JS add-on to start up.
-6. Once the installation is complete, the **Device info** of the Z-Wave controller is shown.
+6. Once the installation is complete, the **Device info** of the Z-Wave adapter is shown.
- You successfully installed the Z-Wave integration and the Z-Wave JS add-on.
- You can now [add](/integrations/zwave_js/#adding-a-new-device-to-the-z-wave-network) devices to the Z-Wave network.
{% note %}
-While your Z-Wave mesh is permanently stored on your dongle, the additional metadata is not. When the Z-Wave integration starts up the first time, it will interview your entire Z-Wave network. Depending on the number of devices paired with the Z-Wave dongle, this can take a while. You can speed up this process by manually waking up your battery-powered devices. Most of the time, this is a button press on those devices (see their manual). It is not necessary to exclude and re-include devices from the mesh.
+While your Z-Wave mesh is permanently stored on your adapter, the additional metadata is not. When the Z-Wave integration starts up the first time, it will interview your entire Z-Wave network. Depending on the number of devices paired with the Z-Wave adapter, this can take a while. You can speed up this process by manually waking up your battery-powered devices. Most of the time, this is a button press on those devices (see their manual). It is not necessary to exclude and re-include devices from the mesh.
{% endnote %}
### Adding a new device to the Z-Wave network
@@ -135,7 +136,7 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta
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.
+ - The Z-Wave adapter is now in inclusion mode.
4. Check, if your device supports SmartStart:
- On the packaging, check for the SmartStart label.
- Find the QR code. It can be on the packaging or on the device itself.
@@ -148,55 +149,79 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta
- Set the device in inclusion mode. Refer to the device manual to see how this is done.
- If your device is included using S2 security, you may be prompted to enter a PIN number provided with your device. Often, this PIN is provided with the documentation _and_ is also printed on the device itself. For more information on secure inclusion, refer to [this section](/integrations/zwave_js/#should-i-use-secure-inclusion).
6. The UI should confirm that the device was added. After a short while (seconds to minutes), the entities should also be created.
-7. **Troubleshooting**: If the controller fails to add/find your device, cancel the inclusion process.
+7. **Troubleshooting**: If the adapter fails to add/find your device, cancel the inclusion process.
- In some cases, it might help to first [remove](/integrations/zwave_js/#removing-a-device-from-the-z-wave-network) a device (exclusion) before you add it, even when the device has not been added to this Z-Wave network yet.
- Another approach would be to factory reset the device. Refer to the device manual to see how this is done.
**Important:**
-1. **Do not move your Z-Wave stick to include devices.** Moving the controller is no longer necessary and leads to broken routes.
-2. **Do not initiate device inclusion from the Z-Wave stick itself.** This is no longer supported.
+1. **Do not move your Z-Wave adapter to include devices.** Moving the adapter is no longer necessary and leads to broken routes.
+2. **Do not initiate device inclusion from the Z-Wave adapter itself.** This is no longer supported.
### Removing a device from the Z-Wave network
-Do this before using the device with another controller, or when you don't use the device anymore. It removes the device from the Z-Wave network stored on the controller. It also removes the device and all its entities from Home Assistant. You can not join a device to a new network if it is still paired with a controller.
+Do this before using the device with another adapter, or when you don't use the device anymore. It removes the device from the Z-Wave network stored on the adapter. 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 an adapter.
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
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.
+ - The Z-Wave adapter 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.
-## Migrating a Z-Wave network to a new controller
+## Migrating a Z-Wave network to a new adapter
-Do this if you have an existing Z-Wave network and want to use a new controller. This will reset your current controller (remove all network information from it) and remove the controller from Home Assistant. The Z-Wave integration with all its entities will stay in Home Assistant. The new controller is added to Home Assistant and paired with the existing network.
+Do this if you have an existing Z-Wave network and want to replace its adapter with a new adapter. The Z-Wave integration with all its entities will stay in Home Assistant. The new adapter is added to Home Assistant and paired with the existing network.
+
+{% tip %}
+You cannot run two Z-Wave adapters simultaneously using the same add-on. If you only run one add-on, you need to migrate the network. If you want to run two adapters, you would need to install another add-on, such as Z-Wave JS UI.
+{% endtip %}
### Prerequisites
- Administrator rights in Home Assistant
-- If you want to migrate from a 500 series controller, before starting migration, update the controller to SDK 6.61+
+
+#### Device specific prerequisites
+
+- **Important**: If you want to migrate from a **500 series** adapter, before starting migration, you need to update the adapter to SDK 6.61+
- Check the documentation of your device to see if and how they can be updated.
- [Steps to update Aeotec Z-Stick 5](https://aeotec.freshdesk.com/support/solutions/articles/6000252294-z-stick-gen5-v1-02-firmware-update).
-### To migrate a Z-Wave network to a new controller
+- If you want to migrate from a **Nortek HUSBZB-1**:
-1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
-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**.
- - **Info**: This will initiate a backup of the network information and factory reset the controller. All the stored network information will be removed.
-5. When the **Unplug your controller** dialog shows up, unplug your old controller.
- - Connect the new controller.
- - Confirm that you connected the new controller by selecting **Submit**.
-6. Follow the steps on screen.
+ - There is no easy way to update that device.
+ - You need to set up a new network.
+ - If you are comfortable with soldering: some users have reported that they were able to upgrade the firmware of the **Nortek HUSBZB-1** with [this update procedure (requires soldering)](https://community.hubitat.com/t/guide-nortek-husbzb-1-nvm-backup-restore-and-updating-z-wave-firmware/48012).
+ - The procedure is very involved. Most likely, starting from scratch is quicker.
-## Overriding the radio frequency region of the controller in the Z-Wave JS add-on
+### To migrate a Z-Wave network to a new adapter
-The frequency used by Z-Wave devices depends on your region. For 700 and 800 series controllers, this frequency can be changed. The frequency of end devices cannot, so you need to make sure to buy devices specific to your region.
+1. If you want to migrate from a **500 series** adapter, before starting migration, you need to update the adapter to SDK 6.61+
+ - Check the documentation of your device to see if and how they can be updated.
+ - [Steps to update Aeotec Z-Stick 5](https://aeotec.freshdesk.com/support/solutions/articles/6000252294-z-stick-gen5-v1-02-firmware-update).
+2. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
+3. Connect your new adapter.
+ - Plug in your new adapter.
+ - **Result**: The adapter should be discovered and show up in the **Discovered section**.
+ - Select **Add** and follow the instructions on screen.
+ - **Troubleshooting**: Not all devices can be discovered automatically. If your device does not show up, follow these steps:
+ 1. Select the **Z-Wave** integration.
+ 2. Then, select the cogwheel {% icon "mdi:cog-outline" %}.
+ 3. Under **Backup and restore**, select **Migrate adapter**.
+ 4. Select **Migrate to a new adapter**.
+ - To confirm, select **Submit**.
+4. When the **Unplug your adapter** dialog shows up, unplug your old adapter.
+ - It is important to remove the old device now, as it might interfere with the new one. Even though it might not throw an error immediately, it might cause issues.
+5. Follow the steps on screen.
+6. Once the migration has completed, check if you want to rename the adapter. If you have previously changed the name, the new adapter might keep the name of the old adapter.
+ - In the top-left corner, select the back button to go back to the integration page.
+ - In the list of devices, check the device name.
+ - To change the device name, select the {% icon "mdi:pencil" %} button.
+
+## Overriding the radio frequency region of the adapter in the Z-Wave JS add-on
+
+The frequency used by Z-Wave devices depends on your region. For 700 and 800 series adapters, this frequency can be changed. The frequency of end devices cannot, so you need to make sure to buy devices specific to your region.
If you are using the Z-Wave JS add-on, Home Assistant automatically changes the radio frequency region to match the region/country you're in. If needed, you can override this setting.
@@ -204,20 +229,20 @@ If you are using the Z-Wave JS add-on, Home Assistant automatically changes the
- Administrator rights in Home Assistant
- All your Z-Wave devices must be specified for that region
-- Note: this procedure only applies if your controller is [set up using the Z-Wave JS add-on](#setting-up-a-z-wave-js-server)
+- Note: this procedure only applies if your adapter is [set up using the Z-Wave JS add-on](#setting-up-a-z-wave-js-server)
-### To override the radio frequency region of your Z-Wave controller
+### To override the radio frequency region of your Z-Wave adapter
1. Go to {% my supervisor_addon addon="core_zwave_js" title="**Settings** > **Add-ons** > **Z-Wave JS**" %}.
2. Open the **Configuration** tab.
3. In the **Options** section, select the **Radio Frequency Region**.
4. To apply your changes, select **Save**.
- - Your Z-Wave controller is now ready to communicate with devices that were specified for your chosen region.
+ - Your Z-Wave adapter is now ready to communicate with devices that were specified for your chosen region.
5. To return to the default setting and use the region defined by Home Assistant, under **Radio Frequency Region** choose **Automatic**.
## Backing up your Z-Wave network
-It's recommended to create a backup before making any major changes to your Z-Wave network. For example, before migrating from one controller to another, or before resetting your controller. The backup stores your Z-Wave controller's non-volatile memory (NVM), which contains your network information including paired devices. It is stored in a binary file that you can download.
+It's recommended to create a backup before making any major changes to your Z-Wave network. For example, before migrating from one adapter to another, or before resetting your adapter. The backup stores your Z-Wave adapter's non-volatile memory (NVM), which contains your network information including paired devices. It is stored in a binary file that you can download.
### Prerequisites
@@ -232,9 +257,27 @@ It's recommended to create a backup before making any major changes to your Z-Wa
- **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.
+## Restoring your Z-Wave network from a backup
+
+You can restore your Z-Wave network from a backup.
+
+### Prerequisites
+
+- Administrator rights in Home Assistant
+- Have a [backup](#backing-up-your-z-wave-network) downloaded
+
+### Restoring a Z-Wave network from backup
+
+1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
+2. Select the **Z-Wave** integration.
+ - Then, select the cogwheel {% icon "mdi:cog-outline" %}.
+3. Under **Backup and restore**, select **Restore from backup**.
+ - Select the backup you want to restore from.
+ - **Result**: The Z-Wave network is being restored and the devices that were part of the network should show up again.
+
## Updating the firmware of your Z-Wave device
-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/).
+Adapters 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/).
{% note %}
**Risk of damage to the device due to firmware update**
@@ -266,30 +309,32 @@ The Home Assistant and Z-Wave JS teams do not take any responsibility for any da
- An interrupted update can damage your device.
5. Select **Begin firmware update** and wait for it to complete.
-## Resetting a Z-Wave controller
+## Resetting a Z-Wave adapter
It is recommended to back up your Z-Wave network before resetting the device.
-- The controller will forget all devices it is paired with.
+- The adapter 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 be removed from their old network before they can be re-paired.
+
+- If there are any devices still paired with the adapter when it is reset, they will have to go through the exclusion process 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.
+- [Remove all devices that are paired with your adapter from the network](#removing-a-device-from-the-z-wave-network).
+ - Removing can be done by any adapter, not just the one that originally managed the network. In theory, this could also be done later.
-### To reset a Z-Wave controller
+### To reset a Z-Wave adapter
1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & services**" %}.
2. Select the **Z-Wave** integration. Then, select the controller.
3. Under **Device info**, select the three-dot {% icon "mdi:dots-vertical" %} menu, then select **Factory reset**.
- 
-4. Once the process is finished, you can use this controller to start a new network, or pass it on to someone else.
+
+ 
+4. Once the process is finished, you can use this adapter to start a new network, or pass it on to someone else.
## Special Z-Wave entities
@@ -299,7 +344,7 @@ The Z-Wave integration provides several special entities, some of which are avai
1. **Node status** sensor: This sensor shows the node status for a given Z-Wave device. The sensor is disabled by default. The available node statuses are explained in the [Z-Wave JS documentation](https://zwave-js.github.io/node-zwave-js/#/api/node?id=status). They can be used in state change automations. For example to ping a device when it is dead, or refresh values when it wakes up.
2. **Ping** button: This button can be pressed to ping a device. It is an alternative to the `zwave_js.ping` action.
-3. **Controller/node statistics** sensors: Z-Wave JS collects statistics about communications between [nodes](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot) and the [controller](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot). The statistics can be used to troubleshoot RF issues in your environment. These statistics are available in the network configuration and device info panels. But they are also available as sensors which are disabled by default.
+3. **Adapter/node statistics** sensors: Z-Wave JS collects statistics about communications between [nodes](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot) and the [adapter](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot). The statistics can be used to troubleshoot RF issues in your environment. These statistics are available in the network configuration and device info panels. But they are also available as sensors which are disabled by default.
### Conditional entities
@@ -319,8 +364,8 @@ The following features can be accessed from the integration configuration panel:
- **Add device:** Allows you to pre-provision a SmartStart device or start the inclusion process for adding a new device to your network.
- **Remove device:** Starts the exclusion process for removing a device from your network.
-- **Rebuild network routes:** Forces your network to rediscover routes to the controller from each device. This is useful when devices or the controller have moved to a new location, or if you are having significant problems with your network, but it also generates a lot of network traffic and should be used sparingly.
-- **[Controller statistics](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot):** Provides statistics about communication between the controller and other devices, allowing you to troubleshoot your network's RF quality.
+- **Rebuild network routes:** Discovers new routes between the adapter and the device. This is useful when devices or the adapter have moved to a new location, or if you are having significant problems with your network, but it also generates a lot of network traffic and should be used sparingly.
+- **[Adapter statistics](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot):** Provides statistics about communication between the adapter and other devices, allowing you to troubleshoot your network's RF quality.
- **Third-party data opt-in/out:** Allows you to opt-in or out of telemetry that the Z-Wave JS project collects to help inform development decisions, influence manufacturers, etc. This telemetry is disabled by default and has to be opted in to be activated.
### Integration menu
@@ -332,16 +377,16 @@ Some features can be accessed from the menu of integration itself. As they are n
#### Network devices
-The following features can be accessed from the device panel of any Z-Wave device on your network aside from the controller:
+The following features can be accessed from the device panel of any Z-Wave device on your network aside from the adapter:

- **Configure:** Provides an easy way to look up and update configuration parameters for the device. While there is an existing action for setting configuration parameter values, this UI may sometimes be quicker to use for one-off changes.
- **Re-interview:** Forces the device to go through the interview process again so that Z-Wave-JS can discover all of its capabilities. Can be helpful if you don't see all the expected entities for your device.
-- **Rebuild routes:** Forces the device to rediscover its optimal route back to the controller. Use this if you think you are experiencing unexpected delays or RF issues with your device. Your device may be less responsive during this process.
-- **Remove failed:** Forces the controller to remove the device from the controller. Can be used when a device has failed and it can't go through the normal exclusion process.
-- **[Statistics](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot):** Provides statistics about communication between this device and the controller, allowing you to troubleshoot RF issues with the device.
-- **Update:** Updates a device's firmware using a manually uploaded firmware file. Only some devices support this feature (controllers and devices with the Firmware Update Metadata Command Class).
+- **Rebuild routes:** Discovers new routes between the adapter and the device. Use this if you think you are experiencing unexpected delays or RF issues with your device. Your device may be less responsive during this process.
+- **Remove failed:** Removes the device from the adapter without excluding the device from the network. Can be used when a device has failed and it can't go through the normal exclusion process.
+- **[Statistics](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot):** Provides statistics about communication between this device and the adapter, allowing you to troubleshoot RF issues with the device.
+- **Update:** Updates a device's firmware using a manually uploaded firmware file. Only some devices support this feature (adapters and devices with the Firmware Update Metadata Command Class).
- **Download diagnostics:** Exports a JSON file describing the entities of this specific device.
## Actions
@@ -872,7 +917,7 @@ If you are using Home Assistant Container or you don't want to use the built-in
### Running [Z-Wave JS Server](https://github.com/zwave-js/zwave-js-server)
-This application provides the connection between your Z-Wave USB stick and Home Assistant. The Home Assistant Z-Wave integration connects to this server via a WebSocket connection. You need to run this Z-Wave JS server before you can use the integration.
+This application provides the connection between your Z-Wave adapter and Home Assistant. The Home Assistant Z-Wave integration connects to this server via a WebSocket connection. You need to run this Z-Wave JS server before you can use the integration.
There are multiple ways to run this server:
The chart below illustrates Options 1 and 2, which are available for Home Assistant OS only.
@@ -902,7 +947,7 @@ This method provides the same server application and UI as the Z-Wave JS UI add-
This is considered a very advanced use case. In this case you run the Z-Wave JS Server or Z-Wave JS UI NodeJS application directly. Installation and maintaining this is out of scope for this document. See the [Z-Wave JS server](https://github.com/zwave-js/zwave-js-server) or [Z-Wave JS UI](https://github.com/zwave-js/zwave-js-ui/) GitHub repository for information.
{% note %}
-[Supported Z-Wave dongle](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules). The Z-Wave controller dongle should be connected to the same host as where the Z-Wave JS server is running. In the configuration for the Z-Wave JS server, you need to provide the path to this stick. It's recommended to use the `/dev/serial-by-id/yourdevice` version of the path to your stick, to make sure the path doesn't change over reboots. The most common known path is `/dev/serial/by-id/usb-0658_0200-if00`.
+[Supported Z-Wave adapter](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules). The Z-Wave adapter should be connected to the same host as where the Z-Wave JS server is running. In the configuration for the Z-Wave JS server, you need to provide the path to this adapter. It's recommended to use the `/dev/serial-by-id/yourdevice` version of the path to your adapter, to make sure the path doesn't change over reboots. The most common known path is `/dev/serial/by-id/usb-0658_0200-if00`.
{% endnote %}
{% note %}
@@ -933,15 +978,15 @@ You can also keep track of the road map for the Z-Wave integration [here](https:
## FAQ: Installation and configuration
-### Which Z-Wave controller should I buy?
+### Which Z-Wave adapter should I buy?
-Z-Wave supports all known 500-, 700-, and 800-series Z-Wave controllers. If you are just starting out, we recommend that you purchase a 800-series controller (with firmware updated to >=7.23.2).
+Z-Wave supports all known 500, 700, and 800 series Z-Wave adapters. If you are just starting out, we recommend that you purchase a 800-series adapter (with firmware updated to >=7.23.2).
-For more information, see [Supported Z-Wave dongles](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules)
+For more information, see [Supported Z-Wave adapters](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules)
### Why was I (not) automatically prompted to install Z-Wave?
-Some Z-Wave USB sticks can be auto-discovered, which can simplify the Z-Wave setup process. The following devices have been tested with discovery, and offer a quick setup experience; however, these are **not** all of the devices supported by Z-Wave:
+Some Z-Wave adapters can be auto-discovered, which can simplify the Z-Wave setup process. The following devices have been tested with discovery, and offer a quick setup experience; however, these are **not** all of the devices supported by Z-Wave:
| Device | Identifier | Vendor |
| -------------------- | ---------- | ---------------------------------------------------------------------------------- |
@@ -958,34 +1003,63 @@ Zwavejs2Mqtt was renamed Z-Wave JS UI in September 2022. They are synonymous wit
### Can I switch between Z-Wave JS and Z-Wave JS UI?
-You can switch between the official Z-Wave JS add-on and the Z-Wave JS UI add-on. However, but you cannot run them both at the same time. Only one of them can be active at the same time.
+You can switch between the official Z-Wave JS add-on and the Z-Wave JS UI add-on. However, you cannot run them both at the same time. Only one of them can be active at the same time.
-### How to switch between Z-Wave JS and Z-Wave JS UI?
+### How to switch from Z-Wave JS to the Z-Wave JS UI add-on?
-To switch between the official Z-Wave JS add-on and the Z-Wave JS UI add-on, follow these steps:
+You can switch from the official **Z-Wave JS** add-on to the **Z-Wave JS UI** add-on. However, you cannot run them both at the same time. Only one of the add-ons can be active at the same time.
Switching does not require renaming your devices.
-1. Disable the Z-Wave integration. **Do not remove the Z-Wave integration or you will lose all device and entity naming.** This will automatically stop the official Z-Wave JS add-on.
+1. Note your network security keys from the official add-on.
-2. Note your network security keys from the official add-on.
+2. Install and start the **Z-Wave JS UI** add-on.
+ - It may take a while for the add-on to start up.
-3. Install and start the Z-Wave JS UI add-on.
+3. Open the **Documentation** tab and copy the URL listed in the section **Setting up the Home Assistant Z-Wave JS integration**. You will need it later.
+4. Start reconfiguring the adapter.
+ - In your browser, open Home Assistant in a new tab.
+ - Select the **Z-Wave** integration and select the three-dot {% icon "mdi:dots-vertical" %} menu.
+ - From the menu, select **Reconfigure**, then **Reconfigure current adapter**.
+ - Uncheck the **Use the Z-Wave JS Supervisor add-on**.
+ - Keep that tab open.
+5. Switch to the other tab to configure the **Z-Wave JS UI** add-on with the added control panel, including setting the location of your Z-Wave device and the network security keys.
+ - Open the **Z-Wave JS UI** web UI and go to **Settings** > **UI** > **Z-Wave**.
+ - Enter the security keys and region.
+ - Save your changes.
-4. Configure the Z-Wave JS UI add-on with the added control panel, including setting the location of your Z-Wave device and the network security keys.
+6. Switch back to the tab where you started the reconfiguration of the integration.
+ - Under **WebSocket URL**, enter the URL you copied before.
-5. Add the Z-Wave integration again (even though it is still installed), and uncheck the "Use the Z-Wave JS Supervisor add-on". Enter the correct address for the community add-on in the URL field in the next step.
+7. Uninstall the official **Z-Wave JS** add-on.
+ - You are asked if you want to delete the related data. Keep it if you think you might switch back to the **Z-Wave JS** add-on later.
-6. Uninstall the official Z-Wave JS add-on.
+### How to migrate from one adapter to a new adapter using Z-Wave JS UI?
-7. Enable the Z-Wave integration.
+If you are currently using [Z-Wave JS UI](https://zwave-js.github.io/zwave-js-ui/#/) instead of the official **Z-Wave JS** add-on and want to start using a new adapter, you can migrate your network inside **Z-Wave JS UI**.
+
+1. Before starting migration, disable the **Z-Wave** integration.
+ - Go to {% my integrations title="**Settings** > **Devices & services**" %} and select the Z-Wave integration and select the three dots {% icon "mdi:dots-vertical" %} menu and select **Disable**.
+2. Do the migration in Z-Wave JS UI.
+ - If you are using the **Z-Wave JS UI** add-on, go to {% my supervisor_addon addon="core_zwave_jsa0d7b954_zwavejs2mqtt" title="**Settings** > **Add-ons** > **Z-Wave JS UI**" %}
+ - Open the Z-Wave JS UI control panel and in the bottom-right corner, select the purple **Advanced actions** button.
+ - Under **NVM Management**, select **Backup**.
+ - Unplug the current adapter and connect the new adapter.
+ - Go to **Settings** > **UI** > **Z-Wave**.
+ - Under **Serial port**, update the device path to show your new device (for example, `/dev/serial/by-id/usb-XXXX`).
+ - Under **Default radio configuration** enter the region you're in and save.
+ - In the control panel, select the purple {% icon "mdi:magic" %} advanced actions button and under **NVM Management**, select **Restore**.
+3. Rebuild all routes.
+ - Select the purple {% icon "mdi:magic" %} advanced actions button and under **Rebuild routes**, select **Begin**.
+
+4. Enable the Z-Wave integration again.
### What's the benefit of using Z-Wave JS UI add-on?
-You might wonder what the benefit is of using the Z-Wave JS UI add-on instead of the official add-on.
-The official add-on provides the Z-Wave Server in its bare minimum variant, just enough to serve the Home Assistant integration.
+You might wonder what the benefit is of using the [Z-Wave JS UI](https://zwave-js.github.io/zwave-js-ui/#/README) add-on instead of the official **Z-Wave JS** add-on.
+The official **Z-Wave JS** add-on provides the Z-Wave Server in its bare minimum variant, just enough to serve the Home Assistant integration.
-The Z-Wave JS UI project includes the Z-Wave JS Server for convenience but also provides a Z-Wave control panel and the ability to serve your Z-Wave network to MQTT. This allows you to use the control panel, and if you so choose, to also use MQTT at the same time. For example, some users may use MQTT to interact with Z-Wave from other devices, while the Home Assistant integration still works (as long as you keep the WS Server enabled in Z-Wave JS UI).
+The **Z-Wave JS UI** project includes the Z-Wave JS Server for convenience but also provides a Z-Wave control panel and the ability to serve your Z-Wave network to MQTT. This allows you to use the control panel, and if you so choose, to also use MQTT at the same time. For example, some users may use MQTT to interact with Z-Wave from other devices, while the Home Assistant integration still works (as long as you keep the WS Server enabled in Z-Wave JS UI).
### Z-Wave JS UI provides discovery of HA devices on its own too, now I'm confused
@@ -1013,7 +1087,7 @@ By default, Z-Wave prefers Security S2, if supported. Security S0 is used only w
### Where can I see the security keys in the Z-Wave JS add-on?
-After the initial setup of the Z-Wave controller, you can view the security keys in the Z-Wave JS add-on. Go to {% my supervisor_addon addon="core_zwave_js" title="**Settings** > **Add-ons** > **Z-Wave JS**" %} and open the **Configuration** tab. You can now see the three S2 keys and the S0 key. The network security key is a legacy configuration setting, identical to the S0 key.
+After the initial setup of the Z-Wave adapter, you can view the security keys in the Z-Wave JS add-on. Go to {% my supervisor_addon addon="core_zwave_js" title="**Settings** > **Add-ons** > **Z-Wave JS**" %} and open the **Configuration** tab. You can now see the three S2 keys and the S0 key. The network security key is a legacy configuration setting, identical to the S0 key.
## FAQ: Troubleshooting topics
@@ -1027,9 +1101,9 @@ After ensuring you are using an extension cable, rebuild network routes.
The combination of these two steps corrects a large number of reported difficulties.
-### I have an Aeotec Gen5 controller, and it isn't detected on my Raspberry Pi 4?
+### I have an Aeotec Gen5 adapter, and it isn't detected on my Raspberry Pi 4?
-The first-generation Gen5 controller has a known bug when plugged into a Pi 4 and possibly other systems. Aeotec released the Gen5+ stick to correct this bug. Gen5 users can plug their sticks into a USB 2.0 hub in order to overcome the issue.
+The first-generation Gen5 adapter has a known bug when plugged into a Pi 4 and possibly other systems. Aeotec released the Gen5+ stick to correct this bug. Gen5 users can plug their adapters into a USB 2.0 hub in order to overcome the issue.
### I do not see any entities created for my device in Home Assistant
@@ -1039,7 +1113,7 @@ If you are certain that your device should have entities and you do not see them
### My device doesn't automatically update its status in HA if I control it manually
-Your device might not send automatic status updates to the controller. While the best advice would be to update to recent Z-Wave Plus devices, there is a workaround with active polling (request the status).
+Your device might not send automatic status updates to the adapter. While the best advice would be to update to recent Z-Wave Plus devices, there is a workaround with active polling (request the status).
Z-Wave does not automatically poll devices on a regular basis. Polling can quickly lead to network congestion and should be used very sparingly and only where necessary.
@@ -1067,7 +1141,7 @@ When trying to determine why something isn't working as you expect, or when repo
### How do I address interference issues?
-Many users have reported issues with interference when the USB stick was directly connected to the machine (proximity). If you are having issues, try to use a short USB 2.0 A (male to female) extension cord.
+Many users have reported issues with interference when the adapter was directly connected to the machine (proximity). If you are having issues, try to use a short USB 2.0 A (male to female) extension cord.
### How do I access the Z-Wave logs?
@@ -1076,7 +1150,7 @@ Many users have reported issues with interference when the USB stick was directl
##### Enable Z-Wave JS logging
1. Go to the Z-Wave integration panel: {% my integration badge domain="zwave_js" %}
-2. In the top-right corner, select the three-dot {% icon "mdi:dots-vertical" %} menu and select **Enable debug logging**.
+2. In the top-right corner, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Enable debug logging**.
- **Result**: The log level will be set to `debug` for the integration, library, and optionally the driver (if the driver log level is not already set to `verbose`, `debug`, or `silly`), and all Z-Wave JS logs will be added to the Home Assistant logs.
3. If you want to change the log level, on the Z-Wave integration panel: {% my integration badge domain="zwave_js" %}, select the cogwheel {% icon "mdi:cog-outline" %}.
- Select the **Logs** tab, then select the log level.
@@ -1084,7 +1158,7 @@ Many users have reported issues with interference when the USB stick was directl
##### Disable Z-Wave JS logging
1. Go to the Z-Wave integration panel: {% my integration badge domain="zwave_js" %}
-2. In the top-right corner, select the three-dot {% icon "mdi:dots-vertical" %} menu and select **Disable debug logging**.
+2. In the top-right corner, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Disable debug logging**.
- **Result**: The log level will be reset to its previous value for the integration, library, and driver, and the Home Assistant frontend will automatically send you the Z-Wave logs generated during that time period for download.
#### The advanced way
@@ -1101,11 +1175,11 @@ Set the log level for `zwave_js_server` to a level higher than `debug`. This can
This sections lists functionality that is available in Z-Wave but that is not currently supported in Home Assistant.
-### Setting the controller into learn mode to receive network information
+### Setting the adapter into learn mode to receive network information
In Home Assistant, it is currently not possible to set the Z-Wave controller into learn mode to receive network information from another controller.
-### Including / excluding a controller in an existing network using [classic inclusion](#classic-inclusion-versus-smartstart)
+### Including / excluding a adapter in an existing network using [classic inclusion](#classic-inclusion-versus-smartstart)
A Z-Wave controller that manages an empty network can also join a different network and act as a secondary controller there. However, with Home Assistant, this is not possible. Home Assistant does not allow the Z-Wave controller to join another network, because Home Assistant acts as the central hub.
@@ -1113,9 +1187,9 @@ A Z-Wave controller that manages an empty network can also join a different netw
In Home Assistant, a single [association group](#association-group) is implemented:
-- **Group 1**: This is an association group that includes only one device. It is used after a [factory reset](#controller), to send a **Device Reset Locally Notification**.
+- **Group 1**: This is an association group that includes only one device. It is used after a [factory reset](#resetting-a-z-wave-adapter), to send a **Device Reset Locally Notification**.
-This association group is used when Home Assistant [resets the Z-Wave controller](#controller).
+This association group is used when Home Assistant [resets the Z-Wave adapter](#resetting-a-z-wave-adapter).
Under normal circumstances, it is not necessary to add a device to this group.
@@ -1172,7 +1246,7 @@ An _association group_ in Z-Wave terminology is a group of devices that another
### SmartStart
-SmartStart enabled products can be added into a Z-Wave network by scanning the Z-Wave QR Code present on the product with a controller providing SmartStart inclusion.
+SmartStart enabled products can be added into a Z-Wave network by scanning the Z-Wave QR Code present on the product with an adapter supporting SmartStart inclusion.
No further action is required and the SmartStart product will be added automatically within 10 minutes of being switched on in the network vicinity. Not all devices support SmartStart. Some devices require [classic inclusion](#classic-inclusion-versus-smartstart). For documentation on adding a device to Home Assistant, refer to [adding a new device to the Z-Wave network](#adding-a-new-device-to-the-z-wave-network).
### Terminology mapping table
@@ -1186,17 +1260,17 @@ This removes all paired Z-Wave devices and their entities, the Z-Wave JS add-on,
### To remove Z-Wave JS from Home Assistant
1. [Remove the device from your Z-Wave network](/integrations/zwave_js/#removing-a-device-from-the-z-wave-network).
- - Do this for each device that is joined to your network so that it is no longer paired to the controller.
- - You cannot add a device to a new controller while it is still paired with an old one.
+ - Do this for each device that is joined to your network so that it is no longer paired to the adapter.
+ - You cannot add a device to a new adapter while it is still paired with an old one.
- Alternatively, you can factory reset each device. Refer to the device manual to see how this is done.
- This usually involves finding the device in your household and pressing a button.
2. Remove the Z-Wave integration.
- Go to {% my integrations title="**Settings** > **Devices & services**" %} and select the integration card.
- - Next to the integration entry, select the three-dot {% icon "mdi:dots-vertical" %} menu.
+ - Next to the integration entry, select the three dots {% icon "mdi:dots-vertical" %} menu.
- Select **Delete**.
3. If it hasn't been deleted automatically, remove the Z-Wave JS add-on.
- Go to {% my supervisor_addon addon="core_zwave_js" title="**Settings** > **Add-ons** > **Z-Wave JS**" %}.
- Select **Uninstall**.
- Decide whether to also delete the data related to the add-on or whether to keep it.
4. Done. Z-Wave JS is now completely removed from your Home Assistant server.
- - You can now use your Z-Wave devices and controller on a new server.
+ - You can now use your Z-Wave devices and adapter on a new server.
diff --git a/source/_posts/2025-07-02-release-20257.markdown b/source/_posts/2025-07-02-release-20257.markdown
index ee9977a34c8..251c5eec450 100644
--- a/source/_posts/2025-07-02-release-20257.markdown
+++ b/source/_posts/2025-07-02-release-20257.markdown
@@ -47,6 +47,11 @@ Stay cool, and enjoy the release!
- [Other noteworthy changes](#other-noteworthy-changes)
- [Full-screen code editors](#full-screen-code-editors)
- [Improved dashboard creation experience](#improved-dashboard-creation-experience)
+- [Patch releases](#patch-releases)
+ - [2025.7.1 - July 4](#202571---july-4)
+ - [2025.7.2 - July 14](#202572---july-14)
+ - [2025.7.3 - July 18](#202573---july-18)
+ - [2025.7.4 - July 28](#202574---july-28)
- [Need help? Join the community!](#need-help-join-the-community)
- [Backward-incompatible changes](#backward-incompatible-changes)
- [All changes](#all-changes)
@@ -136,6 +141,10 @@ This release introduces an all-new overview that leverages the redesigned Area c
+Please note that this is experimental, meaning it is subject to change and may not always work as intended. We would love your feedback if you notice some aspects we can improve. The community’s dashboards, shared over the years, have helped shape this design, and we would love to see how it works with a wide variety of your homes. Even if you already have the perfect dashboard built for your home, try it!
+
+**Use [this feedback form](https://forms.clickup.com/2533032/f/2d9n8-32191/NK2MUOVKXQVH2L0NHI) to let us know your thoughts!**
+
## 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?
@@ -357,6 +366,282 @@ The dialog for adding a new dashboard has been redesigned with a cleaner interfa
[@marcinbauer85]: https://github.com/marcinbauer85
[@quinnter]: https://github.com/quinnter
+## Patch releases
+
+We will also release patch releases for Home Assistant 2025.7 in July.
+These patch releases only contain bug fixes. Our goal is to release a patch
+release every Friday.
+
+### 2025.7.1 - July 4
+
+Happy Fourth of July! 🇺🇸
+
+- Set timeout for remote calendar ([@Thomas55555] - [#147024])
+- Fix missing port in samsungtv ([@epenet] - [#147962])
+- Bump ZHA to 0.0.62 ([@puddly] - [#147966])
+- Bump aiounifi to v84 ([@Kane610] - [#147987])
+- Fix state being incorrectly reported in some situations on Music Assistant players ([@marcelveldt] - [#147997])
+- Bump hass-nabucasa from 0.104.0 to 0.105.0 ([@ludeeus] - [#148040])
+- Fix Telegram bots using plain text parser failing to load on restart ([@hanwg] - [#148050])
+- Bump pyenphase to 2.2.0 ([@catsmanac] - [#148070])
+- Cancel enphase mac verification on unload. ([@catsmanac] - [#148072])
+- Bump aioamazondevices to 3.2.3 ([@chemelli74] - [#148082])
+- Update frontend to 20250702.1 ([@bramkragten] - [#148131])
+- [ci] Fix typing issue with aiohttp and aiosignal ([@cdce8p] - [#148141])
+- Bump venstarcolortouch to 0.21 ([@mlfreeman2] - [#148152])
+
+[#147024]: https://github.com/home-assistant/core/pull/147024
+[#147533]: https://github.com/home-assistant/core/pull/147533
+[#147962]: https://github.com/home-assistant/core/pull/147962
+[#147966]: https://github.com/home-assistant/core/pull/147966
+[#147987]: https://github.com/home-assistant/core/pull/147987
+[#147997]: https://github.com/home-assistant/core/pull/147997
+[#148040]: https://github.com/home-assistant/core/pull/148040
+[#148050]: https://github.com/home-assistant/core/pull/148050
+[#148070]: https://github.com/home-assistant/core/pull/148070
+[#148072]: https://github.com/home-assistant/core/pull/148072
+[#148082]: https://github.com/home-assistant/core/pull/148082
+[#148131]: https://github.com/home-assistant/core/pull/148131
+[#148141]: https://github.com/home-assistant/core/pull/148141
+[#148152]: https://github.com/home-assistant/core/pull/148152
+[@Kane610]: https://github.com/Kane610
+[@Thomas55555]: https://github.com/Thomas55555
+[@bramkragten]: https://github.com/bramkragten
+[@catsmanac]: https://github.com/catsmanac
+[@cdce8p]: https://github.com/cdce8p
+[@chemelli74]: https://github.com/chemelli74
+[@epenet]: https://github.com/epenet
+[@frenck]: https://github.com/frenck
+[@hanwg]: https://github.com/hanwg
+[@ludeeus]: https://github.com/ludeeus
+[@marcelveldt]: https://github.com/marcelveldt
+[@mlfreeman2]: https://github.com/mlfreeman2
+[@puddly]: https://github.com/puddly
+
+### 2025.7.2 - July 14
+
+- Squeezebox: Fix track selection in media browser ([@Hypfer] - [#147185])
+- Squeezebox: Fix tracks not having thumbnails ([@Hypfer] - [#147187])
+- Bump pysmlight to v0.2.7 ([@tl-sl] - [#148101])
+- Fix REST sensor charset handling to respect Content-Type header ([@bdraco] - [#148223])
+- Fix UTF-8 encoding for REST basic authentication ([@bdraco] - [#148225])
+- Bump pylamarzocco to 2.0.10 ([@zweckj] - [#148233])
+- Bump sharkiq to 1.1.1 ([@funkybunch] - [#148244])
+- bump motionblinds to 0.6.29 ([@starkillerOG] - [#148265])
+- Bump aiowebostv to 0.7.4 ([@thecode] - [#148273])
+- Bump `gios` to version 6.1.0 ([@bieniu] - [#148274])
+- Restore httpx compatibility for non-primitive REST query parameters ([@bdraco] - [#148286])
+- Bump pyenphase to 2.2.1 ([@catsmanac] - [#148292])
+- Add lamp states to smartthings selector ([@jvits227] - [#148302])
+- Fix Switchbot cloud plug mini current unit Issue ([@XiaoLing-git] - [#148314])
+- Bump pyswitchbot to 0.68.1 ([@zerzhang] - [#148335])
+- Handle binary coils with non default mappings in nibe heatpump ([@elupus] - [#148354])
+- Bump aioamazondevices to 3.2.8 ([@chemelli74] - [#148365])
+- Create own clientsession for lamarzocco ([@zweckj] - [#148385])
+- Bump pylamarzocco to 2.0.11 ([@zweckj] - [#148386])
+- Bump pySmartThings to 3.2.7 ([@joostlek] - [#148394])
+- Bump uiprotect to version 7.14.2 ([@RaHehl] - [#148453])
+- Bump hass-nabucasa from 0.105.0 to 0.106.0 ([@ludeeus] - [#148473])
+- Revert "Deprecate hddtemp" ([@edenhaus] - [#148482])
+- Fix entity_id should be based on object_id the first time an entity is added ([@jbouwh] - [#148484])
+- Bump aioimmich to 0.10.2 ([@mib1185] - [#148503])
+- Add workaround for sub units without main device in AVM Fritz!SmartHome ([@mib1185] - [#148507])
+- Add Home Connect resume command button when an appliance is paused ([@Diegorro98] - [#148512])
+- Use the link to the issue instead of creating new issues at Home Connect ([@Diegorro98] - [#148523])
+- Ensure response is fully read to prevent premature connection closure in rest command ([@jpbede] - [#148532])
+- Fix for Renson set Breeze fan speed ([@krmarien] - [#148537])
+- Remove vg argument from miele auth flow ([@astrandb] - [#148541])
+- Bump aiohttp to 3.12.14 ([@bdraco] - [#148565])
+- Update frontend to 20250702.2 ([@bramkragten] - [#148573])
+- Fix Google Cloud 504 Deadline Exceeded ([@luuquangvu] - [#148589])
+- Fix - only enable AlexaModeController if at least one mode is offered ([@jbouwh] - [#148614])
+- snoo: use correct value for right safety clip binary sensor ([@falconindy] - [#148647])
+- Bump nyt_games to 0.5.0 ([@hexEF] - [#148654])
+- Fix Charge Cable binary sensor in Teslemetry ([@Bre77] - [#148675])
+- Bump PyViCare to 2.50.0 ([@CFenner] - [#148679])
+- Fix hide empty sections in mqtt subentry flows ([@jbouwh] - [#148692])
+- Bump aioshelly to 13.7.2 ([@thecode] - [#148706])
+- Bump aioamazondevices to 3.2.10 ([@chemelli74] - [#148709])
+
+[#147185]: https://github.com/home-assistant/core/pull/147185
+[#147187]: https://github.com/home-assistant/core/pull/147187
+[#147533]: https://github.com/home-assistant/core/pull/147533
+[#148101]: https://github.com/home-assistant/core/pull/148101
+[#148171]: https://github.com/home-assistant/core/pull/148171
+[#148223]: https://github.com/home-assistant/core/pull/148223
+[#148225]: https://github.com/home-assistant/core/pull/148225
+[#148233]: https://github.com/home-assistant/core/pull/148233
+[#148244]: https://github.com/home-assistant/core/pull/148244
+[#148265]: https://github.com/home-assistant/core/pull/148265
+[#148273]: https://github.com/home-assistant/core/pull/148273
+[#148274]: https://github.com/home-assistant/core/pull/148274
+[#148286]: https://github.com/home-assistant/core/pull/148286
+[#148292]: https://github.com/home-assistant/core/pull/148292
+[#148302]: https://github.com/home-assistant/core/pull/148302
+[#148314]: https://github.com/home-assistant/core/pull/148314
+[#148335]: https://github.com/home-assistant/core/pull/148335
+[#148354]: https://github.com/home-assistant/core/pull/148354
+[#148365]: https://github.com/home-assistant/core/pull/148365
+[#148385]: https://github.com/home-assistant/core/pull/148385
+[#148386]: https://github.com/home-assistant/core/pull/148386
+[#148394]: https://github.com/home-assistant/core/pull/148394
+[#148453]: https://github.com/home-assistant/core/pull/148453
+[#148473]: https://github.com/home-assistant/core/pull/148473
+[#148482]: https://github.com/home-assistant/core/pull/148482
+[#148484]: https://github.com/home-assistant/core/pull/148484
+[#148503]: https://github.com/home-assistant/core/pull/148503
+[#148507]: https://github.com/home-assistant/core/pull/148507
+[#148512]: https://github.com/home-assistant/core/pull/148512
+[#148523]: https://github.com/home-assistant/core/pull/148523
+[#148532]: https://github.com/home-assistant/core/pull/148532
+[#148537]: https://github.com/home-assistant/core/pull/148537
+[#148541]: https://github.com/home-assistant/core/pull/148541
+[#148565]: https://github.com/home-assistant/core/pull/148565
+[#148573]: https://github.com/home-assistant/core/pull/148573
+[#148589]: https://github.com/home-assistant/core/pull/148589
+[#148614]: https://github.com/home-assistant/core/pull/148614
+[#148647]: https://github.com/home-assistant/core/pull/148647
+[#148654]: https://github.com/home-assistant/core/pull/148654
+[#148675]: https://github.com/home-assistant/core/pull/148675
+[#148679]: https://github.com/home-assistant/core/pull/148679
+[#148692]: https://github.com/home-assistant/core/pull/148692
+[#148706]: https://github.com/home-assistant/core/pull/148706
+[#148709]: https://github.com/home-assistant/core/pull/148709
+[@Bre77]: https://github.com/Bre77
+[@CFenner]: https://github.com/CFenner
+[@Diegorro98]: https://github.com/Diegorro98
+[@Hypfer]: https://github.com/Hypfer
+[@RaHehl]: https://github.com/RaHehl
+[@XiaoLing-git]: https://github.com/XiaoLing-git
+[@astrandb]: https://github.com/astrandb
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bramkragten]: https://github.com/bramkragten
+[@catsmanac]: https://github.com/catsmanac
+[@chemelli74]: https://github.com/chemelli74
+[@edenhaus]: https://github.com/edenhaus
+[@elupus]: https://github.com/elupus
+[@falconindy]: https://github.com/falconindy
+[@frenck]: https://github.com/frenck
+[@funkybunch]: https://github.com/funkybunch
+[@hexEF]: https://github.com/hexEF
+[@jbouwh]: https://github.com/jbouwh
+[@joostlek]: https://github.com/joostlek
+[@jpbede]: https://github.com/jpbede
+[@jvits227]: https://github.com/jvits227
+[@krmarien]: https://github.com/krmarien
+[@ludeeus]: https://github.com/ludeeus
+[@luuquangvu]: https://github.com/luuquangvu
+[@mib1185]: https://github.com/mib1185
+[@starkillerOG]: https://github.com/starkillerOG
+[@thecode]: https://github.com/thecode
+[@tl-sl]: https://github.com/tl-sl
+[@zerzhang]: https://github.com/zerzhang
+[@zweckj]: https://github.com/zweckj
+
+### 2025.7.3 - July 18
+
+- Handle connection issues after websocket reconnected in homematicip_cloud ([@hahn-th] - [#147731])
+- Fix Shelly `n_current` sensor removal condition ([@bieniu] - [#148740])
+- Bump pySmartThings to 3.2.8 ([@joostlek] - [#148761])
+- Bump Tesla Fleet API to 1.2.2 ([@Bre77] - [#148776])
+- Use ffmpeg for generic cameras in go2rtc ([@edenhaus] - [#148818])
+- Add guard to prevent exception in Sonos Favorites ([@PeteRager] - [#148854])
+- Fix button platform parent class in Teslemetry ([@Bre77] - [#148863])
+- Bump pyenphase to 2.2.2 ([@catsmanac] - [#148870])
+- Bump gios to version 6.1.1 ([@bieniu] - [#148414])
+- Bump `gios` to version 6.1.2 ([@bieniu] - [#148884])
+- Bump async-upnp-client to 0.45.0 ([@StevenLooman] - [#148961])
+- Pass Syncthru entry to coordinator ([@joostlek] - [#148974])
+- Update frontend to 20250702.3 ([@bramkragten] - [#148994])
+- Bump PySwitchbot to 0.68.2 ([@bdraco] - [#148996])
+- Ignore MQTT sensor unit of measurement if it is an empty string ([@jbouwh] - [#149006])
+- Bump aioamazondevices to 3.5.0 ([@chemelli74] - [#149011])
+
+[#147533]: https://github.com/home-assistant/core/pull/147533
+[#147731]: https://github.com/home-assistant/core/pull/147731
+[#148171]: https://github.com/home-assistant/core/pull/148171
+[#148414]: https://github.com/home-assistant/core/pull/148414
+[#148725]: https://github.com/home-assistant/core/pull/148725
+[#148740]: https://github.com/home-assistant/core/pull/148740
+[#148761]: https://github.com/home-assistant/core/pull/148761
+[#148776]: https://github.com/home-assistant/core/pull/148776
+[#148818]: https://github.com/home-assistant/core/pull/148818
+[#148854]: https://github.com/home-assistant/core/pull/148854
+[#148863]: https://github.com/home-assistant/core/pull/148863
+[#148870]: https://github.com/home-assistant/core/pull/148870
+[#148884]: https://github.com/home-assistant/core/pull/148884
+[#148961]: https://github.com/home-assistant/core/pull/148961
+[#148974]: https://github.com/home-assistant/core/pull/148974
+[#148994]: https://github.com/home-assistant/core/pull/148994
+[#148996]: https://github.com/home-assistant/core/pull/148996
+[#149006]: https://github.com/home-assistant/core/pull/149006
+[#149011]: https://github.com/home-assistant/core/pull/149011
+[@Bre77]: https://github.com/Bre77
+[@PeteRager]: https://github.com/PeteRager
+[@StevenLooman]: https://github.com/StevenLooman
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bramkragten]: https://github.com/bramkragten
+[@catsmanac]: https://github.com/catsmanac
+[@chemelli74]: https://github.com/chemelli74
+[@edenhaus]: https://github.com/edenhaus
+[@frenck]: https://github.com/frenck
+[@hahn-th]: https://github.com/hahn-th
+[@jbouwh]: https://github.com/jbouwh
+[@joostlek]: https://github.com/joostlek
+
+### 2025.7.4 - July 28
+
+- Keep entities of dead Z-Wave devices available ([@AlCalzone] - [#148611])
+- Fix warning about failure to get action during setup phase ([@mback2k] - [#148923])
+- Fix a bug in rainbird device migration that results in additional devices ([@allenporter] - [#149078])
+- Fix multiple webhook secrets for Telegram bot ([@hanwg] - [#149103])
+- Bump pyschlage to 2025.7.2 ([@dknowles2] - [#149148])
+- Fix Matter light get brightness ([@jvmahon] - [#149186])
+- Fix brightness_step and brightness_step_pct via lifx.set_state ([@Djelibeybi] - [#149217])
+- Add Z-Wave USB migration confirm step ([@MartinHjelmare] - [#149243])
+- Add fan off mode to the supported fan modes to fujitsu_fglair ([@crevetor] - [#149277])
+- Update Tesla OAuth Server in Tesla Fleet ([@Bre77] - [#149280])
+- Update slixmpp to 1.10.0 ([@gaaf] - [#149374])
+- Bump aioamazondevices to 3.5.1 ([@chemelli74] - [#149385])
+- Bump pysuezV2 to 2.0.7 ([@jb101010-2] - [#149436])
+- Bump habiticalib to v0.4.1 ([@tr4nt0r] - [#149523])
+
+[#147533]: https://github.com/home-assistant/core/pull/147533
+[#148171]: https://github.com/home-assistant/core/pull/148171
+[#148611]: https://github.com/home-assistant/core/pull/148611
+[#148725]: https://github.com/home-assistant/core/pull/148725
+[#148923]: https://github.com/home-assistant/core/pull/148923
+[#149024]: https://github.com/home-assistant/core/pull/149024
+[#149078]: https://github.com/home-assistant/core/pull/149078
+[#149103]: https://github.com/home-assistant/core/pull/149103
+[#149148]: https://github.com/home-assistant/core/pull/149148
+[#149186]: https://github.com/home-assistant/core/pull/149186
+[#149217]: https://github.com/home-assistant/core/pull/149217
+[#149243]: https://github.com/home-assistant/core/pull/149243
+[#149277]: https://github.com/home-assistant/core/pull/149277
+[#149280]: https://github.com/home-assistant/core/pull/149280
+[#149374]: https://github.com/home-assistant/core/pull/149374
+[#149385]: https://github.com/home-assistant/core/pull/149385
+[#149436]: https://github.com/home-assistant/core/pull/149436
+[#149523]: https://github.com/home-assistant/core/pull/149523
+[@AlCalzone]: https://github.com/AlCalzone
+[@Bre77]: https://github.com/Bre77
+[@Djelibeybi]: https://github.com/Djelibeybi
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@allenporter]: https://github.com/allenporter
+[@chemelli74]: https://github.com/chemelli74
+[@crevetor]: https://github.com/crevetor
+[@dknowles2]: https://github.com/dknowles2
+[@frenck]: https://github.com/frenck
+[@gaaf]: https://github.com/gaaf
+[@hanwg]: https://github.com/hanwg
+[@jb101010-2]: https://github.com/jb101010-2
+[@jvmahon]: https://github.com/jvmahon
+[@mback2k]: https://github.com/mback2k
+[@tr4nt0r]: https://github.com/tr4nt0r
+
## Need help? Join the community!
Home Assistant has a great community of users who are all more than willing
diff --git a/source/_posts/2025-07-03-nuki-joins-works-with-home-assistant.markdown b/source/_posts/2025-07-03-nuki-joins-works-with-home-assistant.markdown
new file mode 100644
index 00000000000..5e1f9bb44e9
--- /dev/null
+++ b/source/_posts/2025-07-03-nuki-joins-works-with-home-assistant.markdown
@@ -0,0 +1,70 @@
+---
+layout: post
+title: "Nuki joins Works with Home Assistant"
+description: "Three new lock types are joining, all certified by our team to provide the best experience possible with Home Assistant"
+date: 2025-07-03 00:00:01
+date_formatted: "July 3, 2025"
+author: Miranda Bishop
+comments: true
+categories: Works-with-Home-Assistant
+og_image: /images/blog/2025-07-nuki/art.jpg
+---
+
+
+
+We're thrilled to welcome [Nuki](https://nuki.io/) to the [Works with Home Assistant](https://works-with.home-assistant.io/) program! Nuki creates some slick-looking smart locks that you can fit to most doors (or even on top of existing locks). They are constantly pioneering new and exciting features, while also using the open standards we support. Nuki is today bringing three different lock types to the program, all certified by our team to provide the best experience possible with Home Assistant.
+
+## Unlocking their origin
+
+Nuki started just over 10 years ago, with their first smart lock that was called the 'magic black box'. It was this award-winning design that evolved into the sleek Nuki Smart Locks that are available today. Keeping everything in the family, the brand was started by brothers Martin and Jürgen. Frustrated with the hassle of carrying a door key in their sports kit, the brothers launched a successful Kickstarter and have been innovating ever since. They design their smart locks in Austria and manufacture them in Europe. Their locks are available across Europe, and in early July, they launched the Nuki Smart Lock in the U.S.
+
+Nuki devices are certified for use with the [Home Assistant Matter integration](/integrations/matter/), which is now [officially certified](/blog/2025/03/10/matter-certification/). Like all 'Works with' certified devices, Nuki locks prioritize local control, so you can manage your day-to-day home security without relying on a cloud connection.
+
+
+
"Joining the 'Works with Home Assistant' program is a logical step for us. We believe strongly in the power of open ecosystems and giving control to our customers. Home Assistant represents a vibrant community dedicated to innovation and customization, and we are thrilled to align our products with this vision. This integration ensures our customers can build the smart home they want, with the products they trust. The 'Works with Home Assistant' certification provides customers with the confidence that Nuki's products have been tested for compatibility and offer a smooth integration experience."
+- Matthias Kerstner, Head of Product at Nuki.
+
+
+## Devices
+
+
This lock is turning heads faster than it turns bolts
+
+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. 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.
+
+Our team has been busy testing the Nuki locks for some time and has certified the following Matter-over-Thread enabled devices. It's important to note that to set up the lock, calibrate it, and activate Matter you will need to use the Nuki app. However, there is no hard requirement for a cloud account or account registration in order to use these locks. Once the device is active and connected via Matter, you can manage it purely through Home Assistant, and can even delete the app.
+
+- [Nuki Smart Lock Go](https://nuki.io/en-uk/products/smart-lock-go)
+- [Nuki Smart Lock Pro](https://nuki.io/en-uk/products/smart-lock-pro-5th-gen)
+- [Nuki Smart Lock Ultra](https://nuki.io/en-uk/products/smart-lock-ultra)
+
+## Insane speeds, literally
+
+The devices certified include two cylindrical models, the Nuki Smart Lock Pro and the Nuki Smart Lock Ultra, which both feature a brushless motor and three speed settings. The speediest of these is called the 'Insane' setting. This ultra-fast setting is ideal for those in a hurry, but you can also pick from 'standard' or 'gentle' to move at a more leisurely pace. The gentle setting is also perfect for quieter unlocking, so you're not disturbing others if you're coming home after a night shift or an early morning jog.
+
+We love that the cylindrical devices come with a rechargeable battery to reduce e-waste. Each cylindrical lock comes with both white and black band options, so you can match your existing hardware or your home's style. The Nuki Smart Lock Pro can retrofit over a current lock, whereas the Nuki Smart Lock Ultra comes with its own cylinder.
+
+If you're looking for a solid entry-level choice instead, the Nuki Smart Lock Go is a great option, which uses four AA batteries. Both the Smart Lock Go and Smart Lock Pro can be installed in under five minutes, with no drilling or special tools required, which may mean even if you're renting you could install a smart lock. Works with Home Assistant is all about providing more choice to the community, and Nuki is expanding the smart lock offerings.
+
+## A keyless future
+
+All of the models listed work locally, as this is a requirement of the 'Works with' program so that you can ensure you feel safe and secure in your smart home. However, some users may wish to access these devices remotely too, allowing you to unlock the door for guests, contractors, family, or friends. If you're looking for remote access, this can either be provided by the Nuki App, or via your Home Assistant system with something like [Home Assistant Cloud](/cloud/) (which supports the development of Home Assistant but also helps bring more 'Works with' partners to the program 🤝).
+
+We're really excited to have Nuki join our certified devices, and see the use cases the community will come up with to integrate their smart locks into the rest of their smart home.
+
+### FAQ ON WORKS WITH HOME ASSISTANT
+
+***Q: If I have a device that is not listed under 'Works with Home Assistant' does this mean it's not supported?***
+
+A: Most Nuki locks will work via Matter with Home Assistant and we have even tried out a couple of older locks with good results. However, we have only officially tested and certified the devices listed above. If there is any other device missing from this list it just means that it hasn't gone through testing with our team or doesn't fit the requirements of the program. It might function well, and may be added to the testing schedule later down the road, or it might work under a different connectivity type that we don't currently test under 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. We look for brands that will bring their key functionality into Home Assistant, operate locally without the need for cloud logins, and continue to do so long-term.
+
+***Q: How were these devices tested?***
+
+A: All devices in this list were tested using a standard Home Assistant Yellow with the built-in Thread border router and our [certified Matter Integration](/integrations/matter/). If you have another hub, border router setup, or integration, that's not a problem. 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 Nuki devices to the program?***
+
+A: All of the locks Nuki currently sells are now represented here in the 'Works with' program. We're thrilled to foster a close relationship with the team at Nuki to work together on any upcoming releases or add in further products that are not yet listed here.
diff --git a/source/_posts/2025-07-15-zooz-joins-works-with-home-assistant.markdown b/source/_posts/2025-07-15-zooz-joins-works-with-home-assistant.markdown
new file mode 100644
index 00000000000..934a4b6b3ed
--- /dev/null
+++ b/source/_posts/2025-07-15-zooz-joins-works-with-home-assistant.markdown
@@ -0,0 +1,124 @@
+---
+layout: post
+title: "Zooz joins Works with Home Assistant"
+description: "With a big selection of Z-Wave devices, which support Long-Range in select regions, opening up a lot of new options for your smart home."
+date: 2025-07-15 00:00:01
+date_formatted: "July 15, 2025"
+author: Miranda Bishop
+comments: true
+categories: Works-with-Home-Assistant
+og_image: /images/blog/2025-07-zooz/art.jpg
+---
+
+
+
+Our [Works with Home Assistant](https://works-with.home-assistant.io/) program is expanding once again, and this time we’re excited to announce Zooz is joining us! We have tested many new devices of all different types, ensuring they provide the best experience possible with Home Assistant. As well as classic staples for the smart home, they also bring some very cool flood protection devices to help safeguard your home.
+
+These will be the first certified [Z-Wave](/integrations/zwave_js/) devices added to the program in some time, and are just part of the exciting future the Home Assistant community and Zooz see for this smart home protocol.
+
+## Zooz zooms in
+
+Zooz started out not as a manufacturer, but as a retailer of smart devices. They focused so much on customer support that they soon realized they could do a better job than manufacturers already in the market, and so turned instead to creating their own products. They focus on Z-Wave for its interoperability and security, and they include easy-to-understand installation guides with these devices. They also have a wide knowledge base on their website and a very responsive support team.
+
+As Z-Wave experts, they’re members of the Z-Wave Alliance (where [Paulus is also a member](/blog/2024/09/24/we-are-joining-the-z-wave-alliance-board/) as the voice of the open source community). While Zooz is based in the USA, many of their products are available worldwide.
+
+## It takes Zooz
+
+Zooz has really embraced the Home Assistant community. Agnes, their VP of Brand and Partnership Support, recently spoke to the team over at the Home Assistant podcast about their startup journey. She also came along to our Community Day in Brooklyn, hosted by our very own Product Lead, [Madelena](https://github.com/madelena). It’s awesome to see manufacturers get out and connect with our community members.
+
+
+
+
+
"Zooz has been contributing quality hardware to the smart home community for over 10 years now and our biggest takeaway is that thoughtful integration is key for our customers. We recognize that our devices are part of an ecosystem and that's why we are so excited to partner with Home Assistant, a platform we highly respect for its commitment to making products work together seamlessly. I especially appreciate how quickly Home Assistant embraced Z-Wave Long Range and how easy it is to set up Z-Wave on a brand new system thanks to hardware like Home Assistant Green. We look forward to connecting with the Home Assistant community, learning together, and creating new devices driven by your feedback."
+- Agnes Lorenz, VP, Brand and Partnership Support, Zooz.
+
+
+## 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. 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.
+
+Zooz has had a large group of devices certified, one of the largest number of devices we’ve ever certified for a launch into the program. Kudos to the foundation team, and Zooz for making such a great variety of new devices available to our community.
+
+**Leak Protection**
+
+[ZAC36 Titan Water Valve Actuator](https://www.getzooz.com/zooz-zac36-titan-water-valve-actuator/)
+
+**Plugs**
+
+[ZEN04 Smart Plug](https://www.getzooz.com/zooz-zen04-smart-plug/)
+
+[ZEN05 Outdoor Plug](https://www.getzooz.com/zooz-zen05-outdoor-smart-plug/)
+
+**Relays**
+
+[ZEN16 Multi Relay](https://www.getzooz.com/zooz-zen16-multirelay/)
+
+[ZEN51 Dry Contact Relay](https://www.getzooz.com/zooz-zen51-dry-contact-relay/)
+
+[ZEN52 Double Relay](https://www.getzooz.com/zooz-zen52-double-relay/)
+
+[ZEN53 DC Motor Controller](https://www.getzooz.com/zooz-zen53-dc-motor-controller/)
+
+**Lighting Switches**
+
+[ZEN30 Double Switch](https://www.getzooz.com/zooz-zen30-double-switch/)
+
+[ZEN32 Scene Controller](https://www.getzooz.com/zooz-zen32-scene-controller/)
+
+[ZEN71 On Off Switch](https://www.getzooz.com/zooz-zen71-on-off-switch/)
+
+[ZEN72 Dimmer](https://www.getzooz.com/zooz-zen72-dimmer/)
+
+[ZEN74 Toggle Dimmer](https://www.getzooz.com/zooz-zen74-s2-toggle-dimmer/)
+
+[ZEN76 S2 On Off Switch](https://www.getzooz.com/zooz-zen76-s2-700-series-switch/)
+
+[ZEN77 S2 Dimmer](https://www.getzooz.com/zooz-zen77-s2-dimmer/)
+
+**Sensors**
+
+[ZSE11 Q Sensor (4in1)](https://www.getzooz.com/zooz-zse11-q-sensor/)
+
+[ZSE18 Motion Sensor](https://www.getzooz.com/zooz-zse18-s2-motion-sensor/)
+
+[ZSE41 Open / Close XS Sensor](https://www.getzooz.com/zooz-zse41-open-close-xs-sensor/)
+
+[ZSE42 Water Leak XS Sensor](https://www.getzooz.com/zooz-zse42-water-leak-xs-sensor/)
+
+[ZSE43 Tilt Shock XS Sensor](https://www.getzooz.com/zooz-zse43-tilt-shock-xs-sensor/)
+
+[ZSE44 Temperature Humidity XS Sensor](https://www.getzooz.com/zooz-zse44-temperature-humidity-xs-sensor/)
+
+[ZSE70 Outdoor Motion Sensor](https://www.getzooz.com/zse70-outdoor-motion-sensor/)
+
+## Frequencies and firmware
+
+If you’re based in North America, all new devices will come with Z-Wave Long Range (ZWLR) as standard. If you are based elsewhere, like in Europe, Long Range won’t be enabled quite yet. The reason is that even though the Z-Wave Long Range protocol has been available for some time in North America, it was only released in Europe in April 2025, as certification took a bit longer. The nice thing about Zooz’s North American 700 series and European 800 series Z-Wave, is that ZWLR can be enabled via an over-the-air (OTA) firmware update, so hopefully everyone will be taking part in the Z-Wave Long Range revolution soon. Watch this space for a not-so-secret Home Assistant Z-Wave hardware announcement coming your way…
+
+Z-Wave Long Range opens up a whole new world of options and makes for an even more flexible smart home. Maybe you have a large backyard, or an awkwardly shaped long, but narrow home that is hard to get other protocols to cover adequately. Or perhaps you have devices that are just too far away for other protocols. A common example is wanting a way to get notified when the mailbox at the front of your driveway is opened or closed.
+
+Many of the certified devices can function outdoors or be purchased with accessories to make them waterproof. Speaking on a personal note, we had a leak in our garage a year or so ago after some bad weather. Other protocols couldn’t reach that far, and we had no way to be notified. I cannot wait for an easy way to be notified across that bigger distance, and avoid all the unpleasant clean-up.
+
+It’s great to read stories on social media or our forums where smart home devices have kicked in and saved the day, like getting that all-important notification or cutting off the water supply with something like Zooz’s valve actuator.
+
+
+
+Z-Wave, like other open standards we support, works locally, and all of the devices listed above will work locally, without the need for any extra cloud connection or apps. Remember, if you’re also looking for remote access to make sure you don’t miss any critical notifications while you’re away from home, an easy way to get this set up is to subscribe to [Home Assistant Cloud](/cloud/). Not only will this help you monitor your smart home remotely, but you’ll also be supporting the development of 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 function perfectly well, but be added to the testing schedule later down the road, or it might work under a different connectivity type that we don’t currently test under 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 the expected 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: All devices in this list were tested using a standard HA Green Hub with our Z-Wave Integration. If you have another hub integration that’s 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 Zooz devices to the program?**
+
+A: Absolutely! We’re thrilled to foster a close relationship with the team at Zooz to work together on any upcoming releases or add in further products that are not yet listed here.
diff --git a/source/_posts/2025-07-23-companion-app-for-android.markdown b/source/_posts/2025-07-23-companion-app-for-android.markdown
new file mode 100644
index 00000000000..b0c251c7aa6
--- /dev/null
+++ b/source/_posts/2025-07-23-companion-app-for-android.markdown
@@ -0,0 +1,105 @@
+---
+layout: post
+title: "Companion app for Android: It’s been a while"
+description: "The app will now have a dedicated developer. We recap the two years of development and the future of the app."
+date: 2025-07-23 00:00:01
+date_formatted: "July 23, 2025"
+author: Timothy Nibeaudeau
+comments: true
+categories: Android
+og_image: /images/blog/2025-07-android-companion/art.png
+---
+
+
+
+The Home Assistant companion app for Android just keeps getting better with every release, and recently, it gained some dedicated support to help accelerate its development. Several months ago, I (Timothy Nibeaudeau, also known as [@TimoPtr](https://github.com/TimoPtr)) joined the Open Home Foundation as our dedicated Android developer 🎉.
+
+It’s been [over two years](/blog/2023/03/30/android-20233/), and hundreds of thousands of installs, since we’ve published a dedicated update for our community on the development of the app, and I’d like to give you a quick update on recent improvements and what’s coming next.
+
+## Behind the Screens
+
+In the beginning, all of Home Assistant’s official [companion apps](https://companion.home-assistant.io/) were developed by the community in their spare time, with many still being part-time projects. It’s incredible the work they put into building these apps. This gives you not just the ability to view your Home Assistant instance on the go (or around the house) and takes advantage of many of the sensors available on the device while providing rich notifications to users.
+
+
Very impressive growth in installs over the years!
+
+The Android app alone has seen over [2,700](https://github.com/home-assistant/android) contributions! It's a lot of work keeping up with Android versions, new capabilities of Home Assistant, and bug fixes. This app doesn’t just support Android phones and tablets but also devices they connect to, specifically Android Auto, Android Automotive, and Wear OS.
+
+### Progress in the millions
+
+They did all this work while reaching nearly **1.5 million installs**, with over 6 million total installs over the years. There are 400,000 daily active users and 1 million monthly active users. The phone app also has a very nice **4.3-star rating** on the [Play Store](https://play.google.com/store/apps/details?id=io.homeassistant.companion.android) and **2,800 stars** on [GitHub](https://github.com/home-assistant/android) 🤩. This feedback really helps us improve.
+
+It's been over a year and a half since the Apple companion apps gained a full-time developer with the addition of the amazing [Bruno Pantaleão](/blog/2023/12/27/companion-app-for-ios-202312-lets-go/) 😎. Around the same time as Bruno was hired, we began looking for an Android developer, and let's say that took a little longer.
+
+My name is Timothy Nibeaudeau, and as mentioned at the start, I’m your new dedicated Android engineer. As someone who has been using Home Assistant since 2018, I’m passionate about open source and smart home technology. I’ve been working in software development for nearly a decade, developing apps for all sorts of projects from medical-grade IoT products to smart toothbrushes 🪥.
+
+I am committed to bringing my talents to the project, but I cannot do it alone. The community is what makes Home Assistant special, and together, we can achieve even more. Specifically, I’d like to thank [@dshokouhi](https://github.com/dshokouhi), [@jpelgrom](https://github.com/jpelgrom), and [@JBassett](https://github.com/JBassett) for their years of work making this app what it is today!
+
+I’d also like to thank you! Your support (by subscribing to [Home Assistant Cloud](/cloud/) and buying [official hardware](https://www.nabucasa.com/#:~:text=the%20first%20boot.-,Official%20Home%20Assistant%20hardware,-Get%20the%20best)) allows the [Open Home Foundation](https://www.openhomefoundation.org/) to hire dedicated developers. Dedicated developers keep development focused, helping the community to work together in delivering the feature they're passionate about.
+
+## Since our last blog
+
+
+
+Like I said at the top, it's been a long time (over two years 🫢) since we’ve published a blog highlighting the improvements made to the Android app. You’ve probably been enjoying these new features for some time, but in case you missed it, here are some of the biggest improvements made by the community over that time.
+
+- Health Connect sensors linked to your Android phone have been added, including heart rate, fitness data, and glucose levels (as always, you have complete control over what you share with your Home Assistant instance, and that data stays local).
+
+- By working with Android [natively](/blog/2023/07/20/year-of-the-voice-chapter-3/#native-assist-on-android), Assist can now replace your phone’s (or Wear OS devices') assistant.
+
+- You can now set the Home Assistant app as your device's default launcher, which is great for wall panel setups.
+
+- We’ve updated our widgets to support some of the new features, like To-do lists.
+
+- Wear OS has had its Tile capabilities improved and a new thermostat tile was added.
+
+- There are now more Android Auto sensors, like speed and remaining range.
+
+- A simpler way to connect Wi-Fi compatible devices to your home network (such as the Home Assistant Voice Preview Edition) using [Improv Wi-Fi](https://www.improv-wifi.com/) over Bluetooth (an open standard for connecting devices to Wi-Fi using Bluetooth, built by the Open Home Foundation).
+
+- The Z-Wave device onboarding experience has been improved with the addition of a QR code scanner.
+
+- We’ve also improved the speed and stability of the app.
+
+- It’s now easier than ever for new contributors to jump in and start helping with the app (much more on that below 👇).
+
+For a full list of the app's capabilities, check out our [breakdown of the companion apps from the companion documentation](https://companion.home-assistant.io/docs/core/).
+
+## What’s next for our Android app
+
+In our latest update of the Android app [2025.7.1](https://github.com/home-assistant/android/releases/tag/2025.7.1), we’ve added a couple of useful features. Including a new basic invite flow, which will be shared between Android and iOS, adding a good layer of consistency between our most-used companion apps. The idea is to make it much more seamless to add new users or set up new devices (no need to type the URL in your Android Automotive device!).
+
+We’ve also made [My Links](https://my.home-assistant.io/) work better. If you’re unfamiliar with My Links, they’re those cool links ([that anyone can make](https://my.home-assistant.io/create-link/)) that bring you right to an integration, blueprint, add-on, or settings page. They have always worked great on desktop, but up until recently, they were a bit clunky to use on mobile. Now you can get to the link's destination with a single click.
+
+Android has many different screen sizes and layouts, and we’re working to better leverage them with edge-to-edge support. Our recent update has edge-to-edge working on Android native UI elements like the settings page, and we’re looking to implement them elsewhere in future updates so we can make the most of your screen real estate.
+
+## Important changes for Android users
+
+
A huge percentage of our users are on pretty new versions of Android, but we want to support as many older devices as possible.
+
+One significant change on the horizon is ending support for Android 5.0 and 5.1 (also known as Android Lollipop, released in 2014… it had a good run 🫡). [Google has announced](https://developer.android.com/jetpack/androidx/versions/all-channel#:~:text=Note%3A%20Starting%20in%20June%202025%2C%20new%20releases%20of%20many%20AndroidX%20libraries%20previously%20targeting%20minSdk%2021%20will%20be%20updated%20to%20require%20minSdk%2023.%20Some%20libraries%20won%27t%20be%20re%2Dreleased%20and%20will%20therefore%20continue%20to%20support%20minSdk%2021.) that starting in June 2025, many AndroidX libraries will require a minimum of Android 6.0 (API 23). Google has already updated [Firebase Cloud Messaging](https://firebase.google.com/support/release-notes/android#messaging_v25-0-0) to require this as well. This means we will need to stop supporting Android 5.0 and 5.1 (API 21 and 22) to keep up with new features and security updates. Less than 0.3% of installs are on Android versions below API 23 (Android 6.0), and we always work to keep older devices working, but sometimes our hand is forced. If you are using an older device, the app will not be removed, but you will not receive new updates once we make this change. We plan to make one final release for these older versions before support ends. This release is expected before the end of the summer, so you will have the latest updates available for your device before we move on.
+
+## Let’s work together
+
+We want to make it easier for you to contribute, whether you are a seasoned developer or just getting started. This includes making the contribution journey smoother and giving people an easy place to start. We’ve even compiled a list of [“first issues” to tackle for prospective developers](https://github.com/home-assistant/android/contribute) looking to help out. We’ve started work on dedicated [Android developer documentation](https://developers.home-assistant.io/docs/android), which will give in-depth information about the inner workings of this app.
+
+We’ve made many behind-the-scenes changes to improve the developer experience (defining best practices, linters for faster/automated feedback, and continuous integration for quicker feedback on PRs). Our focus is always on improving stability, reducing crash rates, and catching issues early. One example of this is our new fail-fast [approach](https://developers.home-assistant.io/docs/android/best_practices/?_highlight=failfa#fail-fast), which has already helped us catch and fix issues early.
+
+We want more Android native/exclusive features while also balancing the need to keep parity between the Android and iOS companion apps (the iOS app is excellent, and each app’s community is learning so much from each other).
+
+### How you can help
+
+The companion app for Android is a community effort, and your help makes a real difference. Here is how you can get involved:
+
+- [Join the beta program](https://play.google.com/apps/testing/io.homeassistant.companion.android) to test new features.
+
+- [Suggest a feature](https://community.home-assistant.io/c/feature-requests/13) and share your ideas.
+
+- Help triage issues on [GitHub](https://github.com/home-assistant/android/issues), [Discord](https://discord.com/channels/330944238910963714/1284965926336335993), or the [Home Assistant forum](https://community.home-assistant.io/tag/android).
+
+- Join the Android Project [thread](https://discord.com/channels/330944238910963714/1346948551892009101) on Discord. (Head to _Channels & Roles_ and select “I want to contribute developer skills!” to assign yourself the Developer role if you can’t see the thread.)
+
+- [Submit issues](https://github.com/home-assistant/android/issues), review pull requests, [start your first pull request](https://github.com/home-assistant/android/issues?q=is%3Aissue+state%3Aopen+label%3A%22good+first+issue%22), and ask questions — your feedback is valuable.
+
+- Help us [translate the app](https://developers.home-assistant.io/docs/translations).
+
+Thanks again for [making all this possible](/cloud/). I look forward to your help making this app even more amazing!
diff --git a/source/_redirects b/source/_redirects
index 3954492584e..96b72be8366 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -15,7 +15,7 @@ layout: null
/suggest-community-highlight https://docs.google.com/forms/d/e/1FAIpQLSd9VWPeVM0xg0swWL6kT3wkQUKt8vWsTL5WtPO95LAy-0cYZw/viewform
/get-blueprints https://community.home-assistant.io/c/blueprints-exchange/53
/merch https://home-assistant-store.creator-spring.com
-/feature-requests https://community.home-assistant.io/c/feature-requests
+/feature-requests https://github.com/orgs/home-assistant/discussions
/issues https://github.com/home-assistant/core/issues
/community https://community.home-assistant.io/
/voice /voice_control/builtin_sentences/
diff --git a/source/changelogs/core-2025.7.markdown b/source/changelogs/core-2025.7.markdown
index ef2faabf63f..b1d60c334bc 100644
--- a/source/changelogs/core-2025.7.markdown
+++ b/source/changelogs/core-2025.7.markdown
@@ -546,6 +546,390 @@ For a summary in a more readable format:
- Bump aioamazondevices to 3.1.19 ([@chemelli74] - [#147462])
- Bump plugwise to v1.7.6 ([@bouwew] - [#147508])
- Add support for condition platforms to provide multiple conditions ([@emontnemery] - [#147376])
+- Fix playing TTS and local media source over DLNA ([@kepler] - [#134903])
+- Fixed issue when tests (should) fail in Smarla ([@rlint-explicatis] - [#146102])
+- Create a new client session for air-Q to fix cookie polution ([@Sibgatulin] - [#147027])
+- Fix Telegram bot default target when sending messages ([@hanwg] - [#147470])
+- Fixes in Google AI TTS ([@tronikos] - [#147501])
+- Set end date for when allowing unique id collisions in config entries ([@emontnemery] - [#147516])
+- Improve config flow strings for Alexa Devices ([@chemelli74] - [#147523])
+- Bump dependency on pyW215 for DLink integration to 0.8.0 ([@andersfugmann] - [#147534])
+- Fix wind direction state class sensor for AEMET ([@luca-angemi] - [#147535])
+- Show current Lametric version if there is no newer version ([@joostlek] - [#147538])
+- Add action exceptions to Alexa Devices ([@chemelli74] - [#147546])
+- Fix unload for Alexa Devices ([@chemelli74] - [#147548])
+- Use default title for migrated Google Generative AI entries ([@tronikos] - [#147551])
+- Include subentries in Google Generative AI diagnostics ([@tronikos] - [#147558])
+- Bump zwave-js-server-python to 0.65.0 ([@MindFreeze] - [#147561])
+- Refactor in Google AI TTS in preparation for STT ([@tronikos] - [#147562])
+- Fix sending commands to Matter vacuum ([@marcelveldt] - [#147567])
+- Remove obsolete routing info when migrating a Z-Wave network ([@MindFreeze] - [#147568])
+- Hide unnamed paths when selecting a USB Z-Wave adapter ([@MindFreeze] - [#147571])
+- Set right model in OpenAI conversation ([@joostlek] - [#147575])
+- Do not make the favorite button unavailable when no content playing on a Music Assistant player ([@marcelveldt] - [#147579])
+- Set Google AI model as device model ([@joostlek] - [#147582])
+- Add default conversation name for OpenAI integration ([@joostlek] - [#147597])
+- Add default title to migrated Claude entry ([@joostlek] - [#147598])
+- Add default title to migrated Ollama entry ([@joostlek] - [#147599])
+- Update frontend to 20250626.0 ([@bramkragten] - [#147601])
+- Remove default icon for wind direction sensor for Buienradar ([@luca-angemi] - [#147603])
+- Improve explanation on how to get API token in Telegram ([@joostlek] - [#147605])
+- Fix asset url in Habitica integration ([@tr4nt0r] - [#147612])
+- Hide Telegram bot proxy URL behind section ([@joostlek] - [#147613])
+- Fix meaters not being added after a reload ([@joostlek] - [#147614])
+- Make entities unavailable when machine is physically off in lamarzocco ([@zweckj] - [#147426])
+- Allow setup of Zigbee/Thread for ZBT-1 and Yellow without internet access ([@puddly] - [#147549])
+- Do not factory reset old Z-Wave controller during migration ([@MindFreeze] - [#147576])
+- Fix Telegram bot yaml import for webhooks containing None value for URL ([@hanwg] - [#147586])
+- Fix config schema to make credentials optional in NUT flows ([@mib1185] - [#147593])
+- Add Diagnostics to PlayStation Network ([@JackJPowell] - [#147607])
+- Make sure Google Generative AI integration migration is clean ([@joostlek] - [#147625])
+- Make sure OpenAI integration migration is clean ([@joostlek] - [#147627])
+- Make sure Anthropic integration migration is clean ([@joostlek] - [#147629])
+- Make sure Ollama integration migration is clean ([@joostlek] - [#147630])
+- Bump pynecil to v4.1.1 ([@tr4nt0r] - [#147648])
+- Clarify descriptions of `subaru.unlock_specific_door` action ([@NoRi2909] - [#147655])
+- Z-WaveJS config flow: Change keys question ([@MindFreeze] - [#147518])
+- Add previously missing state classes to dsmr sensors ([@bajansen] - [#147633])
+- Remove dweet.io integration ([@tr4nt0r] - [#147645])
+- Fix energy history in Teslemetry ([@Bre77] - [#147646])
+- Respect availability of parent class in Husqvarna Automower ([@Thomas55555] - [#147649])
+- Make jellyfin not single config entry ([@zweckj] - [#147656])
+- Bump jellyfin-apiclient-python to 1.11.0 ([@zweckj] - [#147658])
+- Fix: Unhandled NoneType sessions in jellyfin ([@zweckj] - [#147659])
+- Fix Shelly entity removal ([@thecode] - [#147665])
+- Update frontend to 20250627.0 ([@piitaya] - [#147668])
+- Fix sentence-casing and spacing of button in `thermopro` ([@NoRi2909] - [#147671])
+- Bump aiosomecomfort to 0.0.33 ([@mkmer] - [#147673])
+- Add codeowner for Telegram bot ([@hanwg] - [#147680])
+- Bump aioamazondevices to 3.1.22 ([@chemelli74] - [#147681])
+- Bump vulcan-api to 2.4.2 ([@Antoni-Czaplicki] - [#146857])
+- Add lock models to switchbot cloud ([@XiaoLing-git] - [#147569])
+- Move MQTT device sw and hw version to collapsed section in subentry flow ([@jbouwh] - [#147685])
+- Fix Shelly Block entity removal ([@thecode] - [#147694])
+- Bump pytibber to 0.31.6 ([@Danielhiversen] - [#147703])
+- Reduce idle timeout of HLS stream to conserve camera battery life ([@starkillerOG] - [#147728])
+- Fix error if cover position is not available or unknown ([@mback2k] - [#147732])
+- bump pypaperless to 4.1.1 ([@fvgarrel] - [#147735])
+- Improve rest error logging ([@bdraco] - [#147736])
+- Person ble_trackers for non-home zones not processed correctly ([@PeteRager] - [#138475])
+- Populate hvac_modes list in opentherm_gw ([@mvn23] - [#142074])
+- Bump aioshelly to 13.7.1 ([@thecode] - [#146221])
+- Fixed pushbullet handling of fields longer than 255 characters ([@eseverson] - [#146993])
+- Wallbox Integration, Reduce API impact by limiting the amount of API calls made ([@hesselonline] - [#147618])
+- Update pywmspro to 0.3.0 to wait for short-lived actions ([@mback2k] - [#147679])
+- Fix Telegram bot proxy URL not initialized when creating a new bot ([@hanwg] - [#147707])
+- Preserve httpx boolean behavior in REST integration after aiohttp conversion ([@bdraco] - [#147738])
+- Fix sensor displaying unknown when getting readings from heat meters in ista EcoTrend ([@tr4nt0r] - [#147741])
+- Move the async_reload on updates in async_setup_entry in Google Generative AI ([@tronikos] - [#147748])
+- Fix Vesync set_percentage error ([@cdnninja] - [#147751])
+- Use media selector for Assist Satellite actions ([@balloob] - [#147767])
+- Honeywell: Don't use shared session ([@mkmer] - [#147772])
+- Bump reolink_aio to 0.14.2 ([@starkillerOG] - [#147797])
+- Await firmware installation task when flashing ZBT-1/Yellow firmware ([@puddly] - [#147824])
+- Fix wrong state in Husqvarna Automower ([@Thomas55555] - [#146075])
+- Fix Meteo france Ciel clair condition mapping ([@piitaya] - [#146965])
+- Catch access denied errors in webdav and display proper message ([@jpbede] - [#147093])
+- Include chat ID in Telegram bot subentry title ([@hanwg] - [#147643])
+- Add more mac address prefixes for discovery to PlayStation Network ([@tr4nt0r] - [#147739])
+- fix state_class for water used today sensor ([@bob-laz] - [#147787])
+- Bump Nettigo Air Monitor backend library to version 5.0.0 ([@bieniu] - [#147812])
+- fix: Create new aiohttp session with DummyCookieJar ([@micha91] - [#147827])
+- Fix invalid configuration of MQTT device QoS option in subentry flow ([@jbouwh] - [#147837])
+- Implement suggested_display_precision for ESPHome ([@jesserockz] - [#147849])
+- Correct Google generative AI config entry migration ([@emontnemery] - [#147856])
+- Correct anthropic config entry migration ([@emontnemery] - [#147857])
+- Correct ollama config entry migration ([@emontnemery] - [#147858])
+- Correct openai conversation config entry migration ([@emontnemery] - [#147859])
+- Initialize EsphomeEntity._has_state ([@emontnemery] - [#147877])
+- Update frontend to 20250701.0 ([@piitaya] - [#147879])
+- Fix station name sensor for metoffice ([@avee87] - [#145500])
+- Bump VoIP utils to 0.3.3 ([@jaminh] - [#147880])
+- Bump Music Assistant Client to 1.2.3 ([@marcelveldt] - [#147885])
+- Bump aioamazondevices to 3.2.1 ([@chemelli74] - [#147912])
+- Manager wrong country selection in Alexa Devices ([@chemelli74] - [#147914])
+- Swap the Models label for the model name not it's display name, ([@IvanLH] - [#147918])
+- Bump bluetooth-data-tools to 1.28.2 ([@bdraco] - [#147920])
+- SMA add DHCP strictness ([@erwindouna] - [#145753])
+- UnifiProtect Change log level from debug to error for connection exceptions in ProtectFlowHandler ([@RaHehl] - [#147730])
+- Skip processing request body for HTTP HEAD requests ([@AudunVN] - [#147899])
+- Open repair issue when outbound WebSocket is enabled for Shelly non-sleeping RPC device ([@bieniu] - [#147901])
+- Bump thermopro-ble to 0.13.1 ([@h3ss] - [#147924])
+- Handle additional errors in Nord Pool ([@gjohansson-ST] - [#147937])
+- Bump deebot-client to 13.5.0 ([@edenhaus] - [#147938])
+- Split Ollama entity ([@balloob] - [#147769])
+- Ollama: Migrate pick model to subentry ([@balloob] - [#147944])
+- Update frontend to 20250702.0 ([@bramkragten] - [#147952])
+- Bump aioamazondevices to 3.2.2 ([@chemelli74] - [#147953])
+- Z-Wave JS: rename controller to adapter according to term decision ([@c0ffeeca7] - [#147955])
+
+## Release 2025.7.1 - July 4
+
+- Set timeout for remote calendar ([@Thomas55555] - [#147024])
+- Fix missing port in samsungtv ([@epenet] - [#147962])
+- Bump ZHA to 0.0.62 ([@puddly] - [#147966])
+- Bump aiounifi to v84 ([@Kane610] - [#147987])
+- Fix state being incorrectly reported in some situations on Music Assistant players ([@marcelveldt] - [#147997])
+- Bump hass-nabucasa from 0.104.0 to 0.105.0 ([@ludeeus] - [#148040])
+- Fix Telegram bots using plain text parser failing to load on restart ([@hanwg] - [#148050])
+- Bump pyenphase to 2.2.0 ([@catsmanac] - [#148070])
+- Cancel enphase mac verification on unload. ([@catsmanac] - [#148072])
+- Bump aioamazondevices to 3.2.3 ([@chemelli74] - [#148082])
+- Update frontend to 20250702.1 ([@bramkragten] - [#148131])
+- [ci] Fix typing issue with aiohttp and aiosignal ([@cdce8p] - [#148141])
+- Bump venstarcolortouch to 0.21 ([@mlfreeman2] - [#148152])
+
+[#147024]: https://github.com/home-assistant/core/pull/147024
+[#147533]: https://github.com/home-assistant/core/pull/147533
+[#147962]: https://github.com/home-assistant/core/pull/147962
+[#147966]: https://github.com/home-assistant/core/pull/147966
+[#147987]: https://github.com/home-assistant/core/pull/147987
+[#147997]: https://github.com/home-assistant/core/pull/147997
+[#148040]: https://github.com/home-assistant/core/pull/148040
+[#148050]: https://github.com/home-assistant/core/pull/148050
+[#148070]: https://github.com/home-assistant/core/pull/148070
+[#148072]: https://github.com/home-assistant/core/pull/148072
+[#148082]: https://github.com/home-assistant/core/pull/148082
+[#148131]: https://github.com/home-assistant/core/pull/148131
+[#148141]: https://github.com/home-assistant/core/pull/148141
+[#148152]: https://github.com/home-assistant/core/pull/148152
+[@Kane610]: https://github.com/Kane610
+[@Thomas55555]: https://github.com/Thomas55555
+[@bramkragten]: https://github.com/bramkragten
+[@catsmanac]: https://github.com/catsmanac
+[@cdce8p]: https://github.com/cdce8p
+[@chemelli74]: https://github.com/chemelli74
+[@epenet]: https://github.com/epenet
+[@frenck]: https://github.com/frenck
+[@hanwg]: https://github.com/hanwg
+[@ludeeus]: https://github.com/ludeeus
+[@marcelveldt]: https://github.com/marcelveldt
+[@mlfreeman2]: https://github.com/mlfreeman2
+[@puddly]: https://github.com/puddly
+
+## Release 2025.7.2 - July 14
+
+- Squeezebox: Fix track selection in media browser ([@Hypfer] - [#147185])
+- Squeezebox: Fix tracks not having thumbnails ([@Hypfer] - [#147187])
+- Bump pysmlight to v0.2.7 ([@tl-sl] - [#148101])
+- Fix REST sensor charset handling to respect Content-Type header ([@bdraco] - [#148223])
+- Fix UTF-8 encoding for REST basic authentication ([@bdraco] - [#148225])
+- Bump pylamarzocco to 2.0.10 ([@zweckj] - [#148233])
+- Bump sharkiq to 1.1.1 ([@funkybunch] - [#148244])
+- bump motionblinds to 0.6.29 ([@starkillerOG] - [#148265])
+- Bump aiowebostv to 0.7.4 ([@thecode] - [#148273])
+- Bump `gios` to version 6.1.0 ([@bieniu] - [#148274])
+- Restore httpx compatibility for non-primitive REST query parameters ([@bdraco] - [#148286])
+- Bump pyenphase to 2.2.1 ([@catsmanac] - [#148292])
+- Add lamp states to smartthings selector ([@jvits227] - [#148302])
+- Fix Switchbot cloud plug mini current unit Issue ([@XiaoLing-git] - [#148314])
+- Bump pyswitchbot to 0.68.1 ([@zerzhang] - [#148335])
+- Handle binary coils with non default mappings in nibe heatpump ([@elupus] - [#148354])
+- Bump aioamazondevices to 3.2.8 ([@chemelli74] - [#148365])
+- Create own clientsession for lamarzocco ([@zweckj] - [#148385])
+- Bump pylamarzocco to 2.0.11 ([@zweckj] - [#148386])
+- Bump pySmartThings to 3.2.7 ([@joostlek] - [#148394])
+- Bump uiprotect to version 7.14.2 ([@RaHehl] - [#148453])
+- Bump hass-nabucasa from 0.105.0 to 0.106.0 ([@ludeeus] - [#148473])
+- Revert "Deprecate hddtemp" ([@edenhaus] - [#148482])
+- Fix entity_id should be based on object_id the first time an entity is added ([@jbouwh] - [#148484])
+- Bump aioimmich to 0.10.2 ([@mib1185] - [#148503])
+- Add workaround for sub units without main device in AVM Fritz!SmartHome ([@mib1185] - [#148507])
+- Add Home Connect resume command button when an appliance is paused ([@Diegorro98] - [#148512])
+- Use the link to the issue instead of creating new issues at Home Connect ([@Diegorro98] - [#148523])
+- Ensure response is fully read to prevent premature connection closure in rest command ([@jpbede] - [#148532])
+- Fix for Renson set Breeze fan speed ([@krmarien] - [#148537])
+- Remove vg argument from miele auth flow ([@astrandb] - [#148541])
+- Bump aiohttp to 3.12.14 ([@bdraco] - [#148565])
+- Update frontend to 20250702.2 ([@bramkragten] - [#148573])
+- Fix Google Cloud 504 Deadline Exceeded ([@luuquangvu] - [#148589])
+- Fix - only enable AlexaModeController if at least one mode is offered ([@jbouwh] - [#148614])
+- snoo: use correct value for right safety clip binary sensor ([@falconindy] - [#148647])
+- Bump nyt_games to 0.5.0 ([@hexEF] - [#148654])
+- Fix Charge Cable binary sensor in Teslemetry ([@Bre77] - [#148675])
+- Bump PyViCare to 2.50.0 ([@CFenner] - [#148679])
+- Fix hide empty sections in mqtt subentry flows ([@jbouwh] - [#148692])
+- Bump aioshelly to 13.7.2 ([@thecode] - [#148706])
+- Bump aioamazondevices to 3.2.10 ([@chemelli74] - [#148709])
+
+[#147185]: https://github.com/home-assistant/core/pull/147185
+[#147187]: https://github.com/home-assistant/core/pull/147187
+[#147533]: https://github.com/home-assistant/core/pull/147533
+[#148101]: https://github.com/home-assistant/core/pull/148101
+[#148171]: https://github.com/home-assistant/core/pull/148171
+[#148223]: https://github.com/home-assistant/core/pull/148223
+[#148225]: https://github.com/home-assistant/core/pull/148225
+[#148233]: https://github.com/home-assistant/core/pull/148233
+[#148244]: https://github.com/home-assistant/core/pull/148244
+[#148265]: https://github.com/home-assistant/core/pull/148265
+[#148273]: https://github.com/home-assistant/core/pull/148273
+[#148274]: https://github.com/home-assistant/core/pull/148274
+[#148286]: https://github.com/home-assistant/core/pull/148286
+[#148292]: https://github.com/home-assistant/core/pull/148292
+[#148302]: https://github.com/home-assistant/core/pull/148302
+[#148314]: https://github.com/home-assistant/core/pull/148314
+[#148335]: https://github.com/home-assistant/core/pull/148335
+[#148354]: https://github.com/home-assistant/core/pull/148354
+[#148365]: https://github.com/home-assistant/core/pull/148365
+[#148385]: https://github.com/home-assistant/core/pull/148385
+[#148386]: https://github.com/home-assistant/core/pull/148386
+[#148394]: https://github.com/home-assistant/core/pull/148394
+[#148453]: https://github.com/home-assistant/core/pull/148453
+[#148473]: https://github.com/home-assistant/core/pull/148473
+[#148482]: https://github.com/home-assistant/core/pull/148482
+[#148484]: https://github.com/home-assistant/core/pull/148484
+[#148503]: https://github.com/home-assistant/core/pull/148503
+[#148507]: https://github.com/home-assistant/core/pull/148507
+[#148512]: https://github.com/home-assistant/core/pull/148512
+[#148523]: https://github.com/home-assistant/core/pull/148523
+[#148532]: https://github.com/home-assistant/core/pull/148532
+[#148537]: https://github.com/home-assistant/core/pull/148537
+[#148541]: https://github.com/home-assistant/core/pull/148541
+[#148565]: https://github.com/home-assistant/core/pull/148565
+[#148573]: https://github.com/home-assistant/core/pull/148573
+[#148589]: https://github.com/home-assistant/core/pull/148589
+[#148614]: https://github.com/home-assistant/core/pull/148614
+[#148647]: https://github.com/home-assistant/core/pull/148647
+[#148654]: https://github.com/home-assistant/core/pull/148654
+[#148675]: https://github.com/home-assistant/core/pull/148675
+[#148679]: https://github.com/home-assistant/core/pull/148679
+[#148692]: https://github.com/home-assistant/core/pull/148692
+[#148706]: https://github.com/home-assistant/core/pull/148706
+[#148709]: https://github.com/home-assistant/core/pull/148709
+[@Bre77]: https://github.com/Bre77
+[@CFenner]: https://github.com/CFenner
+[@Diegorro98]: https://github.com/Diegorro98
+[@Hypfer]: https://github.com/Hypfer
+[@RaHehl]: https://github.com/RaHehl
+[@XiaoLing-git]: https://github.com/XiaoLing-git
+[@astrandb]: https://github.com/astrandb
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bramkragten]: https://github.com/bramkragten
+[@catsmanac]: https://github.com/catsmanac
+[@chemelli74]: https://github.com/chemelli74
+[@edenhaus]: https://github.com/edenhaus
+[@elupus]: https://github.com/elupus
+[@falconindy]: https://github.com/falconindy
+[@frenck]: https://github.com/frenck
+[@funkybunch]: https://github.com/funkybunch
+[@hexEF]: https://github.com/hexEF
+[@jbouwh]: https://github.com/jbouwh
+[@joostlek]: https://github.com/joostlek
+[@jpbede]: https://github.com/jpbede
+[@jvits227]: https://github.com/jvits227
+[@krmarien]: https://github.com/krmarien
+[@ludeeus]: https://github.com/ludeeus
+[@luuquangvu]: https://github.com/luuquangvu
+[@mib1185]: https://github.com/mib1185
+[@starkillerOG]: https://github.com/starkillerOG
+[@thecode]: https://github.com/thecode
+[@tl-sl]: https://github.com/tl-sl
+[@zerzhang]: https://github.com/zerzhang
+[@zweckj]: https://github.com/zweckj
+
+## Release 2025.7.3 - July 18
+
+- Handle connection issues after websocket reconnected in homematicip_cloud ([@hahn-th] - [#147731])
+- Fix Shelly `n_current` sensor removal condition ([@bieniu] - [#148740])
+- Bump pySmartThings to 3.2.8 ([@joostlek] - [#148761])
+- Bump Tesla Fleet API to 1.2.2 ([@Bre77] - [#148776])
+- Use ffmpeg for generic cameras in go2rtc ([@edenhaus] - [#148818])
+- Add guard to prevent exception in Sonos Favorites ([@PeteRager] - [#148854])
+- Fix button platform parent class in Teslemetry ([@Bre77] - [#148863])
+- Bump pyenphase to 2.2.2 ([@catsmanac] - [#148870])
+- Bump gios to version 6.1.1 ([@bieniu] - [#148414])
+- Bump `gios` to version 6.1.2 ([@bieniu] - [#148884])
+- Bump async-upnp-client to 0.45.0 ([@StevenLooman] - [#148961])
+- Pass Syncthru entry to coordinator ([@joostlek] - [#148974])
+- Update frontend to 20250702.3 ([@bramkragten] - [#148994])
+- Bump PySwitchbot to 0.68.2 ([@bdraco] - [#148996])
+- Ignore MQTT sensor unit of measurement if it is an empty string ([@jbouwh] - [#149006])
+- Bump aioamazondevices to 3.5.0 ([@chemelli74] - [#149011])
+
+[#147533]: https://github.com/home-assistant/core/pull/147533
+[#147731]: https://github.com/home-assistant/core/pull/147731
+[#148171]: https://github.com/home-assistant/core/pull/148171
+[#148414]: https://github.com/home-assistant/core/pull/148414
+[#148725]: https://github.com/home-assistant/core/pull/148725
+[#148740]: https://github.com/home-assistant/core/pull/148740
+[#148761]: https://github.com/home-assistant/core/pull/148761
+[#148776]: https://github.com/home-assistant/core/pull/148776
+[#148818]: https://github.com/home-assistant/core/pull/148818
+[#148854]: https://github.com/home-assistant/core/pull/148854
+[#148863]: https://github.com/home-assistant/core/pull/148863
+[#148870]: https://github.com/home-assistant/core/pull/148870
+[#148884]: https://github.com/home-assistant/core/pull/148884
+[#148961]: https://github.com/home-assistant/core/pull/148961
+[#148974]: https://github.com/home-assistant/core/pull/148974
+[#148994]: https://github.com/home-assistant/core/pull/148994
+[#148996]: https://github.com/home-assistant/core/pull/148996
+[#149006]: https://github.com/home-assistant/core/pull/149006
+[#149011]: https://github.com/home-assistant/core/pull/149011
+[@Bre77]: https://github.com/Bre77
+[@PeteRager]: https://github.com/PeteRager
+[@StevenLooman]: https://github.com/StevenLooman
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bramkragten]: https://github.com/bramkragten
+[@catsmanac]: https://github.com/catsmanac
+[@chemelli74]: https://github.com/chemelli74
+[@edenhaus]: https://github.com/edenhaus
+[@frenck]: https://github.com/frenck
+[@hahn-th]: https://github.com/hahn-th
+[@jbouwh]: https://github.com/jbouwh
+[@joostlek]: https://github.com/joostlek
+
+## Release 2025.7.4 - July 28
+
+- Keep entities of dead Z-Wave devices available ([@AlCalzone] - [#148611])
+- Fix warning about failure to get action during setup phase ([@mback2k] - [#148923])
+- Fix a bug in rainbird device migration that results in additional devices ([@allenporter] - [#149078])
+- Fix multiple webhook secrets for Telegram bot ([@hanwg] - [#149103])
+- Bump pyschlage to 2025.7.2 ([@dknowles2] - [#149148])
+- Fix Matter light get brightness ([@jvmahon] - [#149186])
+- Fix brightness_step and brightness_step_pct via lifx.set_state ([@Djelibeybi] - [#149217])
+- Add Z-Wave USB migration confirm step ([@MartinHjelmare] - [#149243])
+- Add fan off mode to the supported fan modes to fujitsu_fglair ([@crevetor] - [#149277])
+- Update Tesla OAuth Server in Tesla Fleet ([@Bre77] - [#149280])
+- Update slixmpp to 1.10.0 ([@gaaf] - [#149374])
+- Bump aioamazondevices to 3.5.1 ([@chemelli74] - [#149385])
+- Bump pysuezV2 to 2.0.7 ([@jb101010-2] - [#149436])
+- Bump habiticalib to v0.4.1 ([@tr4nt0r] - [#149523])
+
+[#147533]: https://github.com/home-assistant/core/pull/147533
+[#148171]: https://github.com/home-assistant/core/pull/148171
+[#148611]: https://github.com/home-assistant/core/pull/148611
+[#148725]: https://github.com/home-assistant/core/pull/148725
+[#148923]: https://github.com/home-assistant/core/pull/148923
+[#149024]: https://github.com/home-assistant/core/pull/149024
+[#149078]: https://github.com/home-assistant/core/pull/149078
+[#149103]: https://github.com/home-assistant/core/pull/149103
+[#149148]: https://github.com/home-assistant/core/pull/149148
+[#149186]: https://github.com/home-assistant/core/pull/149186
+[#149217]: https://github.com/home-assistant/core/pull/149217
+[#149243]: https://github.com/home-assistant/core/pull/149243
+[#149277]: https://github.com/home-assistant/core/pull/149277
+[#149280]: https://github.com/home-assistant/core/pull/149280
+[#149374]: https://github.com/home-assistant/core/pull/149374
+[#149385]: https://github.com/home-assistant/core/pull/149385
+[#149436]: https://github.com/home-assistant/core/pull/149436
+[#149523]: https://github.com/home-assistant/core/pull/149523
+[@AlCalzone]: https://github.com/AlCalzone
+[@Bre77]: https://github.com/Bre77
+[@Djelibeybi]: https://github.com/Djelibeybi
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@allenporter]: https://github.com/allenporter
+[@chemelli74]: https://github.com/chemelli74
+[@crevetor]: https://github.com/crevetor
+[@dknowles2]: https://github.com/dknowles2
+[@frenck]: https://github.com/frenck
+[@gaaf]: https://github.com/gaaf
+[@hanwg]: https://github.com/hanwg
+[@jb101010-2]: https://github.com/jb101010-2
+[@jvmahon]: https://github.com/jvmahon
+[@mback2k]: https://github.com/mback2k
+[@tr4nt0r]: https://github.com/tr4nt0r
[#125870]: https://github.com/home-assistant/core/pull/125870
[#126009]: https://github.com/home-assistant/core/pull/126009
@@ -556,6 +940,8 @@ For a summary in a more readable format:
[#131703]: https://github.com/home-assistant/core/pull/131703
[#133901]: https://github.com/home-assistant/core/pull/133901
[#134326]: https://github.com/home-assistant/core/pull/134326
+[#134903]: https://github.com/home-assistant/core/pull/134903
+[#138475]: https://github.com/home-assistant/core/pull/138475
[#139334]: https://github.com/home-assistant/core/pull/139334
[#139726]: https://github.com/home-assistant/core/pull/139726
[#140574]: https://github.com/home-assistant/core/pull/140574
@@ -563,6 +949,7 @@ For a summary in a more readable format:
[#141533]: https://github.com/home-assistant/core/pull/141533
[#141563]: https://github.com/home-assistant/core/pull/141563
[#141873]: https://github.com/home-assistant/core/pull/141873
+[#142074]: https://github.com/home-assistant/core/pull/142074
[#142171]: https://github.com/home-assistant/core/pull/142171
[#142288]: https://github.com/home-assistant/core/pull/142288
[#142695]: https://github.com/home-assistant/core/pull/142695
@@ -586,6 +973,7 @@ For a summary in a more readable format:
[#145461]: https://github.com/home-assistant/core/pull/145461
[#145485]: https://github.com/home-assistant/core/pull/145485
[#145497]: https://github.com/home-assistant/core/pull/145497
+[#145500]: https://github.com/home-assistant/core/pull/145500
[#145512]: https://github.com/home-assistant/core/pull/145512
[#145515]: https://github.com/home-assistant/core/pull/145515
[#145527]: https://github.com/home-assistant/core/pull/145527
@@ -617,6 +1005,7 @@ For a summary in a more readable format:
[#145743]: https://github.com/home-assistant/core/pull/145743
[#145746]: https://github.com/home-assistant/core/pull/145746
[#145747]: https://github.com/home-assistant/core/pull/145747
+[#145753]: https://github.com/home-assistant/core/pull/145753
[#145764]: https://github.com/home-assistant/core/pull/145764
[#145766]: https://github.com/home-assistant/core/pull/145766
[#145773]: https://github.com/home-assistant/core/pull/145773
@@ -692,6 +1081,7 @@ For a summary in a more readable format:
[#146063]: https://github.com/home-assistant/core/pull/146063
[#146065]: https://github.com/home-assistant/core/pull/146065
[#146069]: https://github.com/home-assistant/core/pull/146069
+[#146075]: https://github.com/home-assistant/core/pull/146075
[#146076]: https://github.com/home-assistant/core/pull/146076
[#146077]: https://github.com/home-assistant/core/pull/146077
[#146085]: https://github.com/home-assistant/core/pull/146085
@@ -701,6 +1091,7 @@ For a summary in a more readable format:
[#146094]: https://github.com/home-assistant/core/pull/146094
[#146095]: https://github.com/home-assistant/core/pull/146095
[#146098]: https://github.com/home-assistant/core/pull/146098
+[#146102]: https://github.com/home-assistant/core/pull/146102
[#146104]: https://github.com/home-assistant/core/pull/146104
[#146114]: https://github.com/home-assistant/core/pull/146114
[#146124]: https://github.com/home-assistant/core/pull/146124
@@ -723,6 +1114,7 @@ For a summary in a more readable format:
[#146205]: https://github.com/home-assistant/core/pull/146205
[#146206]: https://github.com/home-assistant/core/pull/146206
[#146211]: https://github.com/home-assistant/core/pull/146211
+[#146221]: https://github.com/home-assistant/core/pull/146221
[#146235]: https://github.com/home-assistant/core/pull/146235
[#146236]: https://github.com/home-assistant/core/pull/146236
[#146237]: https://github.com/home-assistant/core/pull/146237
@@ -853,6 +1245,7 @@ For a summary in a more readable format:
[#146837]: https://github.com/home-assistant/core/pull/146837
[#146838]: https://github.com/home-assistant/core/pull/146838
[#146842]: https://github.com/home-assistant/core/pull/146842
+[#146857]: https://github.com/home-assistant/core/pull/146857
[#146860]: https://github.com/home-assistant/core/pull/146860
[#146863]: https://github.com/home-assistant/core/pull/146863
[#146897]: https://github.com/home-assistant/core/pull/146897
@@ -882,6 +1275,7 @@ For a summary in a more readable format:
[#146956]: https://github.com/home-assistant/core/pull/146956
[#146958]: https://github.com/home-assistant/core/pull/146958
[#146961]: https://github.com/home-assistant/core/pull/146961
+[#146965]: https://github.com/home-assistant/core/pull/146965
[#146966]: https://github.com/home-assistant/core/pull/146966
[#146967]: https://github.com/home-assistant/core/pull/146967
[#146969]: https://github.com/home-assistant/core/pull/146969
@@ -896,9 +1290,11 @@ For a summary in a more readable format:
[#146987]: https://github.com/home-assistant/core/pull/146987
[#146988]: https://github.com/home-assistant/core/pull/146988
[#146991]: https://github.com/home-assistant/core/pull/146991
+[#146993]: https://github.com/home-assistant/core/pull/146993
[#147020]: https://github.com/home-assistant/core/pull/147020
[#147021]: https://github.com/home-assistant/core/pull/147021
[#147023]: https://github.com/home-assistant/core/pull/147023
+[#147027]: https://github.com/home-assistant/core/pull/147027
[#147036]: https://github.com/home-assistant/core/pull/147036
[#147039]: https://github.com/home-assistant/core/pull/147039
[#147041]: https://github.com/home-assistant/core/pull/147041
@@ -916,6 +1312,7 @@ For a summary in a more readable format:
[#147087]: https://github.com/home-assistant/core/pull/147087
[#147090]: https://github.com/home-assistant/core/pull/147090
[#147092]: https://github.com/home-assistant/core/pull/147092
+[#147093]: https://github.com/home-assistant/core/pull/147093
[#147094]: https://github.com/home-assistant/core/pull/147094
[#147095]: https://github.com/home-assistant/core/pull/147095
[#147096]: https://github.com/home-assistant/core/pull/147096
@@ -1038,6 +1435,7 @@ For a summary in a more readable format:
[#147421]: https://github.com/home-assistant/core/pull/147421
[#147422]: https://github.com/home-assistant/core/pull/147422
[#147424]: https://github.com/home-assistant/core/pull/147424
+[#147426]: https://github.com/home-assistant/core/pull/147426
[#147429]: https://github.com/home-assistant/core/pull/147429
[#147430]: https://github.com/home-assistant/core/pull/147430
[#147435]: https://github.com/home-assistant/core/pull/147435
@@ -1057,6 +1455,7 @@ For a summary in a more readable format:
[#147462]: https://github.com/home-assistant/core/pull/147462
[#147466]: https://github.com/home-assistant/core/pull/147466
[#147469]: https://github.com/home-assistant/core/pull/147469
+[#147470]: https://github.com/home-assistant/core/pull/147470
[#147471]: https://github.com/home-assistant/core/pull/147471
[#147472]: https://github.com/home-assistant/core/pull/147472
[#147474]: https://github.com/home-assistant/core/pull/147474
@@ -1076,23 +1475,129 @@ For a summary in a more readable format:
[#147496]: https://github.com/home-assistant/core/pull/147496
[#147498]: https://github.com/home-assistant/core/pull/147498
[#147499]: https://github.com/home-assistant/core/pull/147499
+[#147501]: https://github.com/home-assistant/core/pull/147501
[#147503]: https://github.com/home-assistant/core/pull/147503
[#147506]: https://github.com/home-assistant/core/pull/147506
[#147508]: https://github.com/home-assistant/core/pull/147508
[#147510]: https://github.com/home-assistant/core/pull/147510
+[#147516]: https://github.com/home-assistant/core/pull/147516
[#147517]: https://github.com/home-assistant/core/pull/147517
+[#147518]: https://github.com/home-assistant/core/pull/147518
[#147521]: https://github.com/home-assistant/core/pull/147521
+[#147523]: https://github.com/home-assistant/core/pull/147523
+[#147533]: https://github.com/home-assistant/core/pull/147533
+[#147534]: https://github.com/home-assistant/core/pull/147534
+[#147535]: https://github.com/home-assistant/core/pull/147535
+[#147538]: https://github.com/home-assistant/core/pull/147538
+[#147546]: https://github.com/home-assistant/core/pull/147546
+[#147548]: https://github.com/home-assistant/core/pull/147548
+[#147549]: https://github.com/home-assistant/core/pull/147549
+[#147551]: https://github.com/home-assistant/core/pull/147551
+[#147558]: https://github.com/home-assistant/core/pull/147558
+[#147561]: https://github.com/home-assistant/core/pull/147561
+[#147562]: https://github.com/home-assistant/core/pull/147562
+[#147567]: https://github.com/home-assistant/core/pull/147567
+[#147568]: https://github.com/home-assistant/core/pull/147568
+[#147569]: https://github.com/home-assistant/core/pull/147569
+[#147571]: https://github.com/home-assistant/core/pull/147571
+[#147575]: https://github.com/home-assistant/core/pull/147575
+[#147576]: https://github.com/home-assistant/core/pull/147576
+[#147579]: https://github.com/home-assistant/core/pull/147579
+[#147582]: https://github.com/home-assistant/core/pull/147582
+[#147586]: https://github.com/home-assistant/core/pull/147586
+[#147593]: https://github.com/home-assistant/core/pull/147593
+[#147597]: https://github.com/home-assistant/core/pull/147597
+[#147598]: https://github.com/home-assistant/core/pull/147598
+[#147599]: https://github.com/home-assistant/core/pull/147599
+[#147601]: https://github.com/home-assistant/core/pull/147601
+[#147603]: https://github.com/home-assistant/core/pull/147603
+[#147605]: https://github.com/home-assistant/core/pull/147605
+[#147607]: https://github.com/home-assistant/core/pull/147607
+[#147612]: https://github.com/home-assistant/core/pull/147612
+[#147613]: https://github.com/home-assistant/core/pull/147613
+[#147614]: https://github.com/home-assistant/core/pull/147614
+[#147618]: https://github.com/home-assistant/core/pull/147618
+[#147625]: https://github.com/home-assistant/core/pull/147625
+[#147627]: https://github.com/home-assistant/core/pull/147627
+[#147629]: https://github.com/home-assistant/core/pull/147629
+[#147630]: https://github.com/home-assistant/core/pull/147630
+[#147633]: https://github.com/home-assistant/core/pull/147633
+[#147643]: https://github.com/home-assistant/core/pull/147643
+[#147645]: https://github.com/home-assistant/core/pull/147645
+[#147646]: https://github.com/home-assistant/core/pull/147646
+[#147648]: https://github.com/home-assistant/core/pull/147648
+[#147649]: https://github.com/home-assistant/core/pull/147649
+[#147655]: https://github.com/home-assistant/core/pull/147655
+[#147656]: https://github.com/home-assistant/core/pull/147656
+[#147658]: https://github.com/home-assistant/core/pull/147658
+[#147659]: https://github.com/home-assistant/core/pull/147659
+[#147665]: https://github.com/home-assistant/core/pull/147665
+[#147668]: https://github.com/home-assistant/core/pull/147668
+[#147671]: https://github.com/home-assistant/core/pull/147671
+[#147673]: https://github.com/home-assistant/core/pull/147673
+[#147679]: https://github.com/home-assistant/core/pull/147679
+[#147680]: https://github.com/home-assistant/core/pull/147680
+[#147681]: https://github.com/home-assistant/core/pull/147681
+[#147685]: https://github.com/home-assistant/core/pull/147685
+[#147694]: https://github.com/home-assistant/core/pull/147694
+[#147703]: https://github.com/home-assistant/core/pull/147703
+[#147707]: https://github.com/home-assistant/core/pull/147707
+[#147728]: https://github.com/home-assistant/core/pull/147728
+[#147730]: https://github.com/home-assistant/core/pull/147730
+[#147732]: https://github.com/home-assistant/core/pull/147732
+[#147735]: https://github.com/home-assistant/core/pull/147735
+[#147736]: https://github.com/home-assistant/core/pull/147736
+[#147738]: https://github.com/home-assistant/core/pull/147738
+[#147739]: https://github.com/home-assistant/core/pull/147739
+[#147741]: https://github.com/home-assistant/core/pull/147741
+[#147748]: https://github.com/home-assistant/core/pull/147748
+[#147751]: https://github.com/home-assistant/core/pull/147751
+[#147767]: https://github.com/home-assistant/core/pull/147767
+[#147769]: https://github.com/home-assistant/core/pull/147769
+[#147772]: https://github.com/home-assistant/core/pull/147772
+[#147787]: https://github.com/home-assistant/core/pull/147787
+[#147797]: https://github.com/home-assistant/core/pull/147797
+[#147812]: https://github.com/home-assistant/core/pull/147812
+[#147824]: https://github.com/home-assistant/core/pull/147824
+[#147827]: https://github.com/home-assistant/core/pull/147827
+[#147837]: https://github.com/home-assistant/core/pull/147837
+[#147849]: https://github.com/home-assistant/core/pull/147849
+[#147856]: https://github.com/home-assistant/core/pull/147856
+[#147857]: https://github.com/home-assistant/core/pull/147857
+[#147858]: https://github.com/home-assistant/core/pull/147858
+[#147859]: https://github.com/home-assistant/core/pull/147859
+[#147877]: https://github.com/home-assistant/core/pull/147877
+[#147879]: https://github.com/home-assistant/core/pull/147879
+[#147880]: https://github.com/home-assistant/core/pull/147880
+[#147885]: https://github.com/home-assistant/core/pull/147885
+[#147899]: https://github.com/home-assistant/core/pull/147899
+[#147901]: https://github.com/home-assistant/core/pull/147901
+[#147912]: https://github.com/home-assistant/core/pull/147912
+[#147914]: https://github.com/home-assistant/core/pull/147914
+[#147918]: https://github.com/home-assistant/core/pull/147918
+[#147920]: https://github.com/home-assistant/core/pull/147920
+[#147924]: https://github.com/home-assistant/core/pull/147924
+[#147937]: https://github.com/home-assistant/core/pull/147937
+[#147938]: https://github.com/home-assistant/core/pull/147938
+[#147944]: https://github.com/home-assistant/core/pull/147944
+[#147952]: https://github.com/home-assistant/core/pull/147952
+[#147953]: https://github.com/home-assistant/core/pull/147953
+[#147955]: https://github.com/home-assistant/core/pull/147955
+[@Antoni-Czaplicki]: https://github.com/Antoni-Czaplicki
+[@AudunVN]: https://github.com/AudunVN
[@Bidski]: https://github.com/Bidski
[@Bre77]: https://github.com/Bre77
[@Chupaka]: https://github.com/Chupaka
[@CubeZ2mDeveloper]: https://github.com/CubeZ2mDeveloper
[@DCSBL]: https://github.com/DCSBL
+[@Danielhiversen]: https://github.com/Danielhiversen
[@DeerMaximum]: https://github.com/DeerMaximum
[@Diegorro98]: https://github.com/Diegorro98
[@Foscam-wangzhengyu]: https://github.com/Foscam-wangzhengyu
[@GrandMoff100]: https://github.com/GrandMoff100
[@HarvsG]: https://github.com/HarvsG
[@Imeon-Energy]: https://github.com/Imeon-Energy
+[@IvanLH]: https://github.com/IvanLH
[@JackJPowell]: https://github.com/JackJPowell
[@LG-ThinQ-Integration]: https://github.com/LG-ThinQ-Integration
[@LaStrada]: https://github.com/LaStrada
@@ -1103,6 +1608,7 @@ For a summary in a more readable format:
[@NoRi2909]: https://github.com/NoRi2909
[@PeteRager]: https://github.com/PeteRager
[@Petro31]: https://github.com/Petro31
+[@RaHehl]: https://github.com/RaHehl
[@Shulyaka]: https://github.com/Shulyaka
[@Shutgun]: https://github.com/Shutgun
[@Sibgatulin]: https://github.com/Sibgatulin
@@ -1116,16 +1622,22 @@ For a summary in a more readable format:
[@agners]: https://github.com/agners
[@alengwenus]: https://github.com/alengwenus
[@allenporter]: https://github.com/allenporter
+[@andersfugmann]: https://github.com/andersfugmann
[@arturpragacz]: https://github.com/arturpragacz
[@astrandb]: https://github.com/astrandb
+[@avee87]: https://github.com/avee87
[@aviadlevy]: https://github.com/aviadlevy
+[@bajansen]: https://github.com/bajansen
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@bieniu]: https://github.com/bieniu
+[@bob-laz]: https://github.com/bob-laz
[@bouwew]: https://github.com/bouwew
[@bramkragten]: https://github.com/bramkragten
+[@c0ffeeca7]: https://github.com/c0ffeeca7
[@catsmanac]: https://github.com/catsmanac
[@cdce8p]: https://github.com/cdce8p
+[@cdnninja]: https://github.com/cdnninja
[@chemelli74]: https://github.com/chemelli74
[@christopherboyd]: https://github.com/christopherboyd
[@crug80]: https://github.com/crug80
@@ -1134,6 +1646,7 @@ For a summary in a more readable format:
[@emontnemery]: https://github.com/emontnemery
[@epenet]: https://github.com/epenet
[@erwindouna]: https://github.com/erwindouna
+[@eseverson]: https://github.com/eseverson
[@etiennec78]: https://github.com/etiennec78
[@farmio]: https://github.com/farmio
[@foxel]: https://github.com/foxel
@@ -1141,13 +1654,18 @@ For a summary in a more readable format:
[@fvgarrel]: https://github.com/fvgarrel
[@g-kiss]: https://github.com/g-kiss
[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@h3ss]: https://github.com/h3ss
[@hahn-th]: https://github.com/hahn-th
[@hanwg]: https://github.com/hanwg
+[@hesselonline]: https://github.com/hesselonline
+[@jaminh]: https://github.com/jaminh
[@jbouwh]: https://github.com/jbouwh
+[@jesserockz]: https://github.com/jesserockz
[@joostlek]: https://github.com/joostlek
[@jpbede]: https://github.com/jpbede
[@jpelgrom]: https://github.com/jpelgrom
[@karwosts]: https://github.com/karwosts
+[@kepler]: https://github.com/kepler
[@klejejs]: https://github.com/klejejs
[@lanthaler]: https://github.com/lanthaler
[@lboue]: https://github.com/lboue
@@ -1159,11 +1677,15 @@ For a summary in a more readable format:
[@markhannon]: https://github.com/markhannon
[@matrixd2]: https://github.com/matrixd2
[@maximvelichko]: https://github.com/maximvelichko
+[@mback2k]: https://github.com/mback2k
[@mbo18]: https://github.com/mbo18
[@mib1185]: https://github.com/mib1185
+[@micha91]: https://github.com/micha91
[@michaelheyman]: https://github.com/michaelheyman
[@mikey0000]: https://github.com/mikey0000
+[@mkmer]: https://github.com/mkmer
[@mswilson]: https://github.com/mswilson
+[@mvn23]: https://github.com/mvn23
[@natekspencer]: https://github.com/natekspencer
[@natepugh]: https://github.com/natepugh
[@noahhusby]: https://github.com/noahhusby
@@ -1183,6 +1705,7 @@ For a summary in a more readable format:
[@srescio]: https://github.com/srescio
[@starkillerOG]: https://github.com/starkillerOG
[@synesthesiam]: https://github.com/synesthesiam
+[@thecode]: https://github.com/thecode
[@thomasddn]: https://github.com/thomasddn
[@tl-sl]: https://github.com/tl-sl
[@tr4nt0r]: https://github.com/tr4nt0r
diff --git a/source/getting-started/onboarding_dashboard.markdown b/source/getting-started/onboarding_dashboard.markdown
index 922ddde4c36..82b703c6649 100644
--- a/source/getting-started/onboarding_dashboard.markdown
+++ b/source/getting-started/onboarding_dashboard.markdown
@@ -122,7 +122,7 @@ In the following steps, we will create a new dashboard and edit some card settin
12. Now let's delete the other weather card.
- In the top right corner, select the pencil.

- - On the card, select the three-dot menu and select **Delete**.
+ - On the card, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Delete**.

13. Finally, we want to move the weather card to the top left corner.
- On the bottom of the card, select the number or use the minus button to enter `1`.
diff --git a/source/images/blog/2025-07-android-companion/android-distribution.png b/source/images/blog/2025-07-android-companion/android-distribution.png
new file mode 100644
index 00000000000..b60595218cf
Binary files /dev/null and b/source/images/blog/2025-07-android-companion/android-distribution.png differ
diff --git a/source/images/blog/2025-07-android-companion/art.png b/source/images/blog/2025-07-android-companion/art.png
new file mode 100644
index 00000000000..c90427715ad
Binary files /dev/null and b/source/images/blog/2025-07-android-companion/art.png differ
diff --git a/source/images/blog/2025-07-android-companion/download-growth.png b/source/images/blog/2025-07-android-companion/download-growth.png
new file mode 100644
index 00000000000..36bd9307804
Binary files /dev/null and b/source/images/blog/2025-07-android-companion/download-growth.png differ
diff --git a/source/images/blog/2025-07-android-companion/playstore-cards.jpg b/source/images/blog/2025-07-android-companion/playstore-cards.jpg
new file mode 100644
index 00000000000..ce28b5b8d11
Binary files /dev/null and b/source/images/blog/2025-07-android-companion/playstore-cards.jpg differ
diff --git a/source/images/blog/2025-07-nuki/art.jpg b/source/images/blog/2025-07-nuki/art.jpg
new file mode 100644
index 00000000000..b44575aac72
Binary files /dev/null and b/source/images/blog/2025-07-nuki/art.jpg differ
diff --git a/source/images/blog/2025-07-nuki/lock.jpg b/source/images/blog/2025-07-nuki/lock.jpg
new file mode 100644
index 00000000000..1dfe9eebb35
Binary files /dev/null and b/source/images/blog/2025-07-nuki/lock.jpg differ
diff --git a/source/images/blog/2025-07-zooz/art.jpg b/source/images/blog/2025-07-zooz/art.jpg
new file mode 100644
index 00000000000..61980ba8490
Binary files /dev/null and b/source/images/blog/2025-07-zooz/art.jpg differ
diff --git a/source/images/integrations/enphase_envoy/enphase_envoy_inverter_device.png b/source/images/integrations/enphase_envoy/enphase_envoy_inverter_device.png
index a0a018ee236..71c8a7d0622 100644
Binary files a/source/images/integrations/enphase_envoy/enphase_envoy_inverter_device.png and b/source/images/integrations/enphase_envoy/enphase_envoy_inverter_device.png differ
diff --git a/source/images/voice-pe/local-cloud/ha-instance.svg b/source/images/voice-pe/local-cloud/ha-instance.svg
new file mode 100644
index 00000000000..4f9318a15b8
--- /dev/null
+++ b/source/images/voice-pe/local-cloud/ha-instance.svg
@@ -0,0 +1,4 @@
+
diff --git a/source/images/voice-pe/local-cloud/house.svg b/source/images/voice-pe/local-cloud/house.svg
index e3f47d124a1..05e9c629d9a 100644
--- a/source/images/voice-pe/local-cloud/house.svg
+++ b/source/images/voice-pe/local-cloud/house.svg
@@ -1,3 +1,9 @@
-
@@ -217,7 +219,8 @@ frontpage_image: /images/frontpage/voice-pe-frontpage.jpg
alt="Front view of the Voice Preview Edition showing the speaker holes">
Buy now
- * Recommended MSRP. Prices differ between regions due to varying local market costs and conditions, and subject to individual retailers.
+ * Recommended MSRP. Prices differ between regions due to varying local market costs and conditions,
+ and subject to individual retailers.
You do not need Home Assistant Cloud. However, if you are running less powerful hardware, like
- Home Assistant Green or a Raspberry Pi 4, we believe this provides the best experience. By doing
- so, you can leverage our cloud for speech processing, ensuring superior accuracy and faster
- performance not possible on your low-powered device.
-
Additionally, some languages have poor or
- non-existent support by the local speech-to-text software we leverage (OpenAI’s Whisper), but
- are well-supported by the speech processing used by Home Assistant Cloud.
+
You do not need Home Assistant Cloud. However, for some languages, we believe that Home Assistant
+ Cloud provides the best experience. There are languages that are not supported by the local
+ speech-to-text models we leverage (either our focused local Speech-to-Phrase model, or the fully
+ local Whisper by OpenAI), but are well-supported by the speech processing used by Home Assistant
+ Cloud.
Yes, Home Assistant can be configured to use any speech-to-text integration that supports the
- Wyoming protocol. Currently, the only locally-run speech-to-text add-on available for Home
- Assistant users is OpenAI’s Whisper. This has mixed results, missing languages, and is
- hardware-intensive.
-
That led us to build an alternative - Rhasspy Speech can run locally and
- accurately on lower-power hardware, though this does not provide full speech-to-text
- capabilities. Based on the Rhasspy project, it is able to create local speech-to-text models,
- but is limited to predefined sentences aimed at controlling your home, and will not be able to
- process general speech. For instance, it could turn on a device, but will not be able to add
- something to your shopping list. We expect to share the first version of Rhasspy Speech during
- the next Voice livestream in 2025.
+ Wyoming protocol. The most commonly used fully local speech-to-text add-on available for Home
+ Assistant users is OpenAI’s Whisper. This has mixed results; specifically, it lacks support for
+ some languages and is hardware-intensive.
+
Our alternative speech-to-text model, Speech-To-Phrase, can run locally and accurately on
+ lower-power hardware, though this does not provide full speech-to-text capabilities. Based on the
+ Rhasspy project,
+ it is able to create focused local speech-to-text models, limited to predefined sentences aimed at
+ controlling your home, but not able to process general speech. For instance, it could turn on a
+ device, but would not be able to add something to your shopping list.
+