diff --git a/source/_docs/locked_out.md b/source/_docs/locked_out.md
index cd40aced017..bca337d5190 100644
--- a/source/_docs/locked_out.md
+++ b/source/_docs/locked_out.md
@@ -31,7 +31,7 @@ You are the **owner** of the Home Assistant server and you cannot login because
- [to access the console from Linux or macOS](https://yellow.home-assistant.io/guides/use-serial-console-linux-macos/).
- If you are using another system, connect keyboard and monitor. The procedure might be similar the one used for Green.
- If you are using a Home Assistant OVA (virtualization image):
- - Access the system console by opening the terminal through your virtualization platform's interface (for example, Proxmox, VMware, VirtualBox).
+ - Access the system console by opening the terminal through your virtualization platform's interface (for example, Proxmox, VMware, VirtualBox).
- Follow the platform-specific steps to interact with the virtual machine's console.
3. In the terminal, enter the `auth list` command.
- This command lists all users that are registered on your Home Assistant.
@@ -81,7 +81,7 @@ Use this procedure only if the following conditions are met:
3. Once you have opened the Home Assistant command line, enter the following command:
- Note: `existing_user` is a placeholder. Replace it with your username.
- Note: `new_password` is a placeholder. Replace it with your new password.
- - **Command**: `auth reset --username existing_user --password new_password`
+ - **Command**: `auth reset --username 'existing_user' --password 'new_password'`

- **Troubleshooting**: If you see the message `zsh: command not found: auth`, you likely did not enter the command in the serial console connected to the device itself, but in the terminal within Home Assistant.
4. You can now log in to Home Assistant using this new password.
@@ -89,7 +89,7 @@ Use this procedure only if the following conditions are met:
#### To reset a user's password, via the container command line
If you are running Home Assistant in a container, you can use the command line in the container with the `hass` command to change your password. The steps below refer to a Home Assistant container in Docker named `homeassistant`. Note that while working in the container, commands will take a few moments to execute.
-
+
1. `docker exec -it homeassistant bash` to open to the container command line
2. `hass` to create a default user, if this is your first time using the tool
3. `hass --script auth --config /config change_password existing_user new_password` to change the password
diff --git a/source/_docs/scene.markdown b/source/_docs/scene.markdown
index fc635d81941..c657f8f2214 100644
--- a/source/_docs/scene.markdown
+++ b/source/_docs/scene.markdown
@@ -36,10 +36,6 @@ name:
description: Friendly name of the scene.
required: true
type: string
-description:
- description: Description of the scene.
- required: false
- type: string
entities:
description: Entities to control and their desired state.
required: true
diff --git a/source/_includes/asides/common_tasks_navigation.html b/source/_includes/asides/common_tasks_navigation.html
index bc1550bdc02..13369b6edc1 100644
--- a/source/_includes/asides/common_tasks_navigation.html
+++ b/source/_includes/asides/common_tasks_navigation.html
@@ -2,11 +2,11 @@
diff --git a/source/_includes/common-tasks/backups.md b/source/_includes/common-tasks/backups.md
index 429a787f1e6..5b2f599c35f 100644
--- a/source/_includes/common-tasks/backups.md
+++ b/source/_includes/common-tasks/backups.md
@@ -79,14 +79,6 @@ This creates a backup instantly. You can create a manual backup at any time, irr
6. Download the [backup emergency kit](/more-info/backup-emergency-kit/) and store it somewhere safe. Make sure you take note of the backup name it belongs to.
7. To start the backup process, select **Create backup**.
-### Alternative: Creating a backup using the Home Assistant Command Line Interface
-
-1. `ha backups list` - lists backups and their slugnames
-2. `ha backups restore slugname` - restores a specific backup
-3. `ha backups new --name nameofbackup` - create a backup
-
-For additional information about command line usage, use the `ha help` command or refer to the [Home Assistant Command Line documentation](/common-tasks/os/#home-assistant-via-the-command-line).
-
### Downloading your local backups
There are multiple ways to download your local backup from your Home Assistant instance and store it on another device:
diff --git a/source/_includes/common-tasks/commandline.md b/source/_includes/common-tasks/commandline.md
index 0c9980962b1..7e14468d21d 100644
--- a/source/_includes/common-tasks/commandline.md
+++ b/source/_includes/common-tasks/commandline.md
@@ -101,7 +101,7 @@ Use "ha [command] --help" for more information about a command.
You can also access the {% term "Home Assistant Operating System" %} via a directly connected keyboard and monitor, the console.
-#### Wiping the data disk wipe from the command line
+#### Wiping the data disk from the command line
In {% term "Home Assistant Operating System" %}, the `ha os datadisk wipe` command wipes the data disk. The command deletes all user data as well as Home Assistant Core, Supervisor, and any installed add-ons.
@@ -109,7 +109,12 @@ The command `ha os datadisk wipe` marks the data partition (either internal on t
The `ha os datadisk wipe` command can only be run from the local terminal. Connect a display and keyboard and use the terminal.
-Note, if you have a Home Assistant Yellow, there is a red hardware button to wipe the data disk. Follow the procedure on [resetting the device](https://yellow.home-assistant.io/guides/factory-reset/).
+Note, some systems have a reset button you can use to clear the data disk, instead of using the command line:
+
+- If you have a Home Assistant Yellow with a Raspberry Pi Compute Module 5, use the command line steps described above.
+
+- If you have a Home Assistant Yellow with a Raspberry Pi Compute Module 4, there is a red hardware button to wipe the data disk. Follow the procedure on [resetting the Home Assistant Yellow](https://yellow.home-assistant.io/guides/factory-reset/).
+- If you have a Home Assistant Green, there is a black hardware button to wipe the data disk. Follow the procedure on [resetting the Home Assistant Green](https://green.home-assistant.io/guides/reset/).
#### Listing all users from the command line
diff --git a/source/_includes/common-tasks/data_disk.md b/source/_includes/common-tasks/data_disk.md
index e1c7257d011..e99ac9ffb80 100644
--- a/source/_includes/common-tasks/data_disk.md
+++ b/source/_includes/common-tasks/data_disk.md
@@ -25,8 +25,7 @@ If you have been using a data disk previously with {% term "Home Assistant Opera
3. Select **Move data disk**.
4. Select the data disk from the list of available devices.
5. Select **Move**.
-
-
+ - Depending on the amount of data, this may take a while.
### Using CLI to move the data partition
diff --git a/source/_includes/common-tasks/update.md b/source/_includes/common-tasks/update.md
index 14a6e9ad7be..cdff945c3c8 100644
--- a/source/_includes/common-tasks/update.md
+++ b/source/_includes/common-tasks/update.md
@@ -1,12 +1,10 @@
Best practice for updating Home Assistant Core:
-1. Back up your installation{% if page.installation == "os" or page.installation == "supervised" %}, using the [backup functionality](/common-tasks/general/#backups) Home Assistant offers{% endif %}.
+1. [Back up your installation](/common-tasks/general/#backups) and store the backup and the [backup emergency kit](/more-info/backup-emergency-kit/) somewhere safe.
+ - This ensures that you can [restore your installation from backup](/common-tasks/general/#restoring-a-backup) if needed.
2. Check the release notes for backward-incompatible changes on [Home Assistant release notes](/blog/categories/core/). Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f` / `CMD + f`) and search for **Backward-incompatible changes**.
-{% if page.installation == "os" or page.installation == "supervised" %}
-3. Select **Create backup before updating** in case you encounter an issue that requires a rollback.
-4. Update Home Assistant.
-5. Review persistent notifications and log to see if there are any issues with your configuration that need to be addressed.
-{% endif %}
+3. Update Home Assistant.
+4. Review persistent notifications and log to see if there are any issues with your configuration that need to be addressed.
{% if page.installation == "os" or page.installation == "supervised" %}
diff --git a/source/_includes/integrations/remove_device_service.md b/source/_includes/integrations/remove_device_service.md
index 80f5a56b246..b74c778575c 100644
--- a/source/_includes/integrations/remove_device_service.md
+++ b/source/_includes/integrations/remove_device_service.md
@@ -1,5 +1,3 @@
### To remove an integration instance from Home Assistant
-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**.
+{% include integrations/remove_device_service_steps.md %}
\ No newline at end of file
diff --git a/source/_includes/integrations/remove_device_service_steps.md b/source/_includes/integrations/remove_device_service_steps.md
new file mode 100644
index 00000000000..9096191e1d1
--- /dev/null
+++ b/source/_includes/integrations/remove_device_service_steps.md
@@ -0,0 +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**.
diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown
index 42d6787b4cc..21ea56f7103 100644
--- a/source/_integrations/alexa.smart_home.markdown
+++ b/source/_integrations/alexa.smart_home.markdown
@@ -151,7 +151,7 @@ Next you need create a Lambda function.
- Click `Services` in top navigation bar, expand the menu to display all AWS services, then under `Compute` section click `Lambda` to navigate to Lambda console. Or you may use this [link](https://console.aws.amazon.com/lambda/home)
**IMPORTANT - Alexa Skills are only supported in specific AWS regions.** Your current server location will be displayed in the top-right corner (for example, Ohio). Select an available server from the list below ([reference](https://developer.amazon.com/en-US/docs/alexa/smarthome/develop-smart-home-skills-in-multiple-languages.html#deploy)) based on your Amazon account's locale, not your physical location. **Alexa Lambda functions created in other regions will not work properly and may prevent account linking! For example, if your locale is set to English (US) and you live in California, you must use US East (N.Virginia), not US West (Oregon). While the setup process will complete with an incorrect region, the skill will not function, and there will be no clear error messages indicating the cause.**
- - **US East (N.Virginia)** region for English (US) or English (CA) skills
+ - **US East (N.Virginia)** region for English (US), English (CA) or Portuguese (BR) skills
- **EU (Ireland)** region for English (UK), English (IN), German (DE), Spanish (ES) or French (FR) skills
- **US West (Oregon)** region for Japanese and English (AU) skills.
@@ -256,7 +256,7 @@ Self signed certificates will not work, but you can use a free Let's Encrypt cer
{% endimportant %}
- `Client ID`:
- - `https://pitangui.amazon.com/` if you are in US
+ - `https://pitangui.amazon.com/` if you are in US or BR
- `https://layla.amazon.com/` if you are in EU
- `https://alexa.amazon.co.jp/` if you are in JP and AU (not verified yet)
@@ -323,7 +323,7 @@ alexa:
type: map
keys:
locale:
- description: The locale of your Alexa devices. Supported locales are `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `es-US`, `fr-CA`, `fr-FR`, `hi-IN`, `it-IT`, `ja-JP`, `nl-NL` and `pt-BR`. See [Alexa Locale](#alexa-locale) for additional information.
+ description: The locale of your Alexa devices. Supported locales are `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `es-US`,`fr-CA`, `fr-FR`, `hi-IN`, `it-IT`, `ja-JP`, `nl-NL`, and `pt-BR`. See [Alexa Locale](#alexa-locale) for additional information.
required: false
type: string
default: en-US
diff --git a/source/_integrations/backup.markdown b/source/_integrations/backup.markdown
index 2cc2f89e5e9..759c28d2d85 100644
--- a/source/_integrations/backup.markdown
+++ b/source/_integrations/backup.markdown
@@ -28,22 +28,7 @@ To learn how to create and restore a backup, refer to the backup section under [
The **Backup** integration exposes actions that can be used to automate the backup
process.
-### Action {% my developer_call_service service="backup.create_automatic" %}
-
-The {% my developer_call_service service="backup.create_automatic" %} action can be used
-to create a backup of your Home Assistant instance, using the same settings as those used
-by [automatic backups](/common-tasks/general/#setting-up-an-automatic-backup-process).
-
-This action can be called to create backups with pre-defined settings at a more flexible
-schedule than the schedule which can be configured for automatic backups.
-
-The action has no additional options or parameters.
-
-Example action:
-
-```yaml
-action: backup.create_automatic
-```
+However, it is no longer needed to create your own automation. Follow these steps to [set up an automatic backup from the UI](/common-tasks/general/#setting-up-an-automatic-backup-process).
### Action {% my developer_call_service service="backup.create" %}
diff --git a/source/_integrations/bang_olufsen.markdown b/source/_integrations/bang_olufsen.markdown
index 3b0662c2671..e0eca6154f3 100644
--- a/source/_integrations/bang_olufsen.markdown
+++ b/source/_integrations/bang_olufsen.markdown
@@ -73,7 +73,7 @@ A number of features are available through the media player entity:
## Limitations
-Currently, some features of the Mozart platform such as:
+Currently, some features of the Mozart platform are not available through the [public API](https://github.com/bang-olufsen/mozart-open-api). Some may become available at a later point, but until then the [Bang & Olufsen App](https://www.bang-olufsen.com/en/dk/story/apps) can be used to configure these settings and features:
- Creating timers and alarms
- Retrieving detailed alarm and timer information
@@ -87,8 +87,6 @@ And more advanced app-centric features such as:
- Adjusting specific sound settings
- Pairing remotes
-These features are not available through the API. Some may become available at a later point, but until then the [Bang & Olufsen App](https://www.bang-olufsen.com/en/dk/story/apps) can be used to configure these settings and features.
-
## Actions
### play_media actions
diff --git a/source/_integrations/bluetooth.markdown b/source/_integrations/bluetooth.markdown
index 05c9970fdfd..64630462973 100644
--- a/source/_integrations/bluetooth.markdown
+++ b/source/_integrations/bluetooth.markdown
@@ -91,6 +91,8 @@ Some systems may not come with Bluetooth and require a USB adapter. Installing a
If you experience an unreliable Bluetooth connection, installing a short USB extension cable between your Bluetooth adapter and your Home Assistant server may improve reliability.
+For development and testing, the developers of this Bluetooth integration primarily use a [Feasycom FSC-BP119](https://www.feasycom.com/datasheet/fsc-bp119.pdf) (CSR8510A10) ๐ถ.
+
### Known working high-performance adapters
#### Cambridge Silicon Radio (CSR) -based adapters
@@ -133,6 +135,8 @@ These adapters may require additional patch files available at Envoy must be configured and commissioned.
-- The Envoy must be on your local network with IPV4 connectivity from Home Assistant.
+- The Envoy must be on your local network with IPV4 connectivity from Home Assistant. (Also See troubleshooting, [single network](#single-network))
- Envoy firmware version 3.9 or newer.
-- With Envoy firmware 7 and greater
+- With Envoy firmware 7 and greater:
- an Enlighten cloud username and password.
- Home Assistant 2023.9 or newer.
@@ -59,7 +59,8 @@ The configuration of an individual Envoy requires you to enter the following inf
Host:
description: "The name or IP address of the Envoy to configure. Will be pre-filled if the Envoy was auto-discovered"
Username:
- description: "For firmware version 7.0 and later, enter your Enlighten cloud username For firmware before 7.0, enter username *installer* without a password."
+ description: "For firmware version 7.0 and later, enter your Enlighten cloud username. The Enlighten cloud username (and password) will be used to obtain a 1-year-valid token from the enphase web-site when first configured or upon expiry.
+ For firmware before 7.0, enter username *installer* without a password."
Password:
description: "For firmware version 7.0 and later, enter your Enlighten cloud password For firmware before 7.0, with username *installer*, leave blank."
{% endconfiguration_basic %}
@@ -75,6 +76,12 @@ Always use a new connection when requesting data from the Envoy:
description: "No/Yes Some older Envoy firmware may exhibit connection issues when using the default keep-alive connection and report failures. When set, this option disables the use of keep-alive and builds a new connection at each data request. This makes the communication more reliable for these firmware versions. Reported for the Envoy-R, but may apply to other older firmware versions as well."
{% endconfiguration_basic %}
+## Reconfigure
+
+This integration supports updating the Envoy configuration through a `reconfigure` menu option. The reconfiguration allows for changing the Envoy IP address, username, and/or password. Use this menu option if your Enlighten credentials or the device's IP address has changed and needs to be manually updated. The latter is typically automatically detected and updated.
+
+Use this menu option also when an Envoy firmware upgrade requires a switch from local Envoy username/password to token-based authentication with Enlighten username/password (refer to [required manual input](#required-manual-input)).
+
## Removing the integration
This integration follows standard integration removal. No extra steps are required.
@@ -83,87 +90,310 @@ This integration follows standard integration removal. No extra steps are requir
## Capabilities
-This integration will offer various sensors depending on the configuration of your Enphase system. Sensors are available for the following:
+This integration offers various entities depending on the configuration of your Enphase system. The Envoy can communicate with Enphase IQ micro-inverters, Enphase ACB and IQ batteries, Enphase Ensemble Enpower switch and load shedding relays and Enphase compatible generators.
-- Current energy production & consumption
-- Historical energy production & consumption
-- Power production per-inverter
+{% note %}
-_Consumption sensors require your Envoy to be properly configured with consumption CT sensors installed._
+- You may know referred product names under other names from the past or future.
+- In this documentation, the term SN is used for a device serial-number placeholder. Entities will contain the actual serial-number of the device.
+{% endnote %}
-### With current transformers
+### Solar production data
-For Envoy S Metered / IQ Gateway Metered with installed and configured current transformers (CT), additional features are available:
+All Envoy models with solar inverters, with or without installed production CT, for all firmware versions, report solar current and historical production data.
-- Sensors for net production (grid export) and net consumption (grid import) if the consumption CT is a net-consumption CT.
-- Disabled sensors for:
-
- - `Balanced net power consumption` and `lifetime balanced net energy consumption` (grid import - grid export) if either a net-consumption or total-consumption CT is installed. The `balanced net power consumption` value is calculated by the Envoy if a total-consumption CT is used. When a net-consumption CT is installed, it is the same value as the `current net power consumption`, which is enabled by default if the CT is present.
- - Production and consumption sensors for each phase, if CT are installed on more than 1 phase.
- - Phase net production and net consumption, if CT are installed on more than 1 phase.
- - Frequency for production and net consumption CT (aggregate and phase).
- - Voltage for production and net consumption CT (aggregate and phase).[^1]
- - Current for production and net consumption CT (aggregate and phase).[^1]
- - Powerfactor for production and net consumption CT (aggregate and phase).[^1]
- - Metering status for net consumption and production CT (`normal` | `not-metering` | `check-wiring`) (aggregate and phase).
- - Count of meter status flags active for net consumption and production CT (aggregate and phase).[^2]
+#### Aggregated production data
-[^1]: For multiphase systems, the Envoy sums the voltages of the phases. This may be valid for split-phase, but for 3-phase systems, use the individual phases rather than the summed value.
-[^2]: If this value is non-zero, consult the diagnostic report of the Envoy and look for `raw_data` - `/ivp/meters` - `statusFlags` for set flags (`production-imbalance` | `negative-production` | `power-on-unused-phase` | `negative-total-consumption`).
+The Envoy device reports aggregated data for all connected micro-inverters.
-### With batteries
+##### Production sensor entities
-For Enphase Ensemble systems with the Enpower/IQ System Controller and Encharge/IQ Batteries installed, additional features are available:
+- **Envoy SN Current power production**: Current aggregated inverter power production in W.
+- **Envoy SN Energy production last seven days**: Energy produced in previous 7 days, not including today's, in Wh, display scaled to kWh. (See known limitations [Energy Incorrect](#energy-incorrect)). This entity is not logged in statistics.
+- **Envoy SN Energy production today**: Energy produced since midnight in Wh, default display scaled to kWh. (See known limitations [Late reset](#late-reset), [Energy Incorrect](#energy-incorrect)).
+- **Envoy SN Lifetime energy production**: Lifetime energy production in Wh, default display scaled to MWh. (See known limitations [Lifetime reset](#lifetime-reset)).
-- Sensors for battery status and usage
-- Sensors for grid status *
-- Sensors for the state of the Enpower's four load-shedding relays *
-- A switch allowing you to take your system on-grid and off-grid. Note that the Enpower has a slight delay built-in between receiving these commands and actually switching the system on or off grid. *
-- A switch allowing you to enable or disable charging the Encharge/IQ batteries from the power grid. **
-- Support for changing the battery storage mode between full backup, self-consumption, and savings mode, and setting the reserve battery level for outages. **
-- If a storage CT is installed:
- - Sensors for battery storage energy charged and discharged and current active power discharge/charge
- - Disabled sensors for:
- - Phase battery storage energy charged and discharged and current power discharge/charge
- - Voltage for storage CT (aggregate and phase)
- - Current for storage CT (aggregate and phase)
- - Frequency for storage CT (aggregate and phase)
- - Powerfactor for storage CT (aggregate and phase)
- - Metering status for storage CT (aggregate and phase)
- - Count of meter status flags active storage CT (aggregate and phase)
+
+
+ Envoy device with solar production entities.
+
-For system with both older type ACB batteries and Encharge/IQ Batteries:
+When used with [multiphase CT phase data](#ct-aggregate-and-phase-data), disabled phase entities are available as well.
-- Sensors for ACB Battery State of Charge in %, battery state (charging, idle, discharging), current available energy in Wh and current power flow in W.
-- Sensors for aggregated ACB and Encharge battery status for current State of Charge in %, current available energy in Wh and total battery capacity in Wh.
+#### Individual micro-inverter production data
-*: The load shedding and on/off-grid functions are only available with the Enpower/IQ System Controller installed. In battery installations without load-shedding and off-grid functionality, used in many EU countries, these sensors and switches are not available.
+The Envoy reports individual micro-inverter device production data. SN is the micro-inverter serial-number.
-**: When used with Enpower/IQ System Controller, the entities to charge from the grid, battery storage mode, and reserve battery level are connected to the Enpower device with the Enpower serial number in their entity and unique IDs. When no Enpower is installed, these are connected to the Envoy itself and the Envoy serial number is used in the IDs.
+##### Sensor entities
-In multiphase installations with batteries, in countries with phase-balancing grid meters, the battery will export to the grid on one phase the amount it lacks on another phase which pulls the amount from the grid, as if it is using the grid as a 'transport' between phases. Since the grid meter will balance the amount imported and exported on the two phases, the net result is zero. The Envoy multiphase consumption CTs, however, will report the amounts on both phases, resulting in too high export on one and too high import on the other. One may consider using the `lifetime balanced net energy consumption` which is the sum of grid import and export to eliminate this effect. This would require some templating to split these values into import and export values. Alternatively, use the `current net power consumption` or `balanced net power consumption` with a Riemann integral sum helper.
+- **Inverter SN**: Current power generated by the inverter in W.
+- **Inverter SN last reported**: Time when Envoy last received a data update from the inverter. Typical update rate for an inverter to the Envoy is every 5 minutes. This entity is disabled by default for all inverters.
-## Envoy authentication requirements
+
+
+ Micro-inverter device with solar production entities.
+
-For newer models running firmware 7 and greater, you will need your Enlighten cloud username and password. The integration will use these credentials to obtain an Envoy access token from the Enlighten cloud.
+### House consumption data
-For models running firmware 5 and older, use `installer` for the username. No password is required. The integration will automatically detect the `installer` password.
+House consumption data requires an Envoy Metered equipped and configured with at least 1 consumption [CT](#current-transformers).
-## Enpower load shedding relays
+#### Consumption Sensor Entities
-The Enphase Enpower has 4 load shedding relays that can be used to control non-essential loads in your home. These have two main modes of operation:
+- **Envoy SN Current power consumption**: Current power consumption in W.
+- **Envoy SN Lifetime energy consumption**: Lifetime energy consumption in Wh, default display scaled to MWh.
+- **Envoy SN Energy production last seven days**: Energy consumption in previous 7 days, not including today's, in Wh, display scaled to kWh. This entity is not logged in statistics.
+- **Envoy SN Energy consumption today**: Energy consumption since midnight in Wh, default display scaled to kWh.
-### Standard
+
+
+ Envoy metered with CT reporting production and consumption entities.
+
-When the mode entity is set to standard, you can simply set the state of the relay to be powered or not powered for each mode of operation: on grid, off grid, and on generator.
+When used with [multiphase CT phase data](#ct-aggregate-and-phase-data), disabled phase entities are available but not shown. Enable as needed.
-### Battery level
+### Current Transformers
-When the relay mode is set to battery level, the relays will turn on and off based on the remaining battery level of your Encharge batteries. Two number entities are available to control the cutoff and restore levels for the relays. When the battery level drops below the cutoff level, the relays will turn off. When the battery level rises above the restore level, the relays will turn back on.
+The Envoy Metered can be equipped with up-to 6 CT. These can be assigned to production, consumption and/or storage measurements in single or multiple phase setups.
-## Data updates
+The below diagram shows CT installation positions and how they are referred to.
-The integration collects data by default every 60 seconds. To customize the collection interval, refer to [defining a custom polling interval](/common-tasks/general/#defining-a-custom-polling-interval). Specify one single entity from the envoy device as target of the action using the `+ choose entity` button. Updating one entity will update all entities of the Envoy and the related devices like the inverters; there is no need to specify multiple or all entities or add (all) inverter entities. When using multiple Envoys, add one entity for each envoy as targets or create separate custom polling intervals with a single entity as needed.
+- The production CT measures the energy exchange between Solar production and the switchboard.
+- If the consumption CT is installed as **Load only** a.k.a. **total-consumption** it measures energy exchange from the switchboard to the loads/house.
+- If the consumption CT is installed as **Load with Solar** a.k.a. **net-consumption**, it measures energy exchange between the switchboard and the grid.
+- The storage CT measures the energy exchange between the battery storage and the switchboard.
+
+
+
+ Envoy current transformers.
+
+
+{% note %}
+This in no way represents a configuration direction, as actual configuration is driven by local rules, installer designs and Enphase installation guidelines. Variations may exist, based on specific needs or rules. This merely describes a simplified view and naming conventions used in this documentation to clarify integration operation. Refer to [Enphase documentation](https://enphase.com/installers/resources/documentation/communication) for more information.
+{% endnote %}
+
+When an Envoy Metered is equipped with a production CT, the CT data will be used to provide the [aggregated solar production data](#aggregated-production-data). Likewise, the installed consumption CT will be the source for the [house consumption data](#house-consumption-data).
+
+Either a net-consumption or a total-consumption CT is installed. The Envoy will calculate the data for the other one.
+
+#### CT Aggregate and phase data
+
+When using [CT](#current-transformers) in multiphase enabled configurations, both aggregated and individual phase data is available. If only 1 phase is configured, phase data is the same as the aggregated data and no phase entities are created. If more than 1 phase is configured, disabled phase entities for each phase are created, enable them as needed.
+
+Phase entity names are the names used for the aggregated entities, with the phase name in the post-fix. Phase names are **L1**, **L2**, **L3**. For example, once enabled, [**lifetime energy production**](#solar-production-data) on phase 3 is available as **Envoy SN Lifetime energy production L3**.
+
+#### Current transformer entities
+
+CT measure multiple properties of the energy exchange which are available as Envoy device entities. These are all disabled by default, enable them as desired.
+
+##### Production CT sensor entities
+
+- **Envoy SN Frequency production CT**: Frequency in Hz.
+- **Envoy SN Voltage production CT**: Voltage in V. (see limitations [Summed voltage](#summed-voltage))
+- **Envoy SN Production CT current**: Current in A.
+- **Envoy SN Powerfactor production CT**: Powerfactor, ratio of active to apparent power.
+- **Envoy SN Metering status production CT**: Status of the metering process: `normal`, `not-metering`, `check-wiring`.
+- **Envoy SN Meter status flags active production CT**: Count of CT status flags active. See troubleshooting [CT Active flag count](#ct-active-flag-count) when non-zero.
+
+##### Net-consumption CT sensor entities
+
+- **Envoy SN Frequency net consumption CT**: Frequency in Hz .
+- **Envoy SN Voltage net consumption CT**: Voltage in V. (see limitations [Summed voltage](#summed-voltage)
+- **Envoy SN net consumption CT current**: Current in A.
+- **Envoy SN Powerfactor net consumption CT**: Power factor, ratio of active to apparent power.
+- **Envoy SN Metering status net consumption CT**: Status of the metering process: `normal`, `not-metering`, `check-wiring`.
+- **Envoy SN Meter status flags active net consumption CT**: Count of CT status flags active. See troubleshooting [CT Active flag count](#ct-active-flag-count) when non-zero.
+
+##### Storage CT sensor entities
+
+- **Envoy SN Frequency storage CT**: Frequency in Hz.
+- **Envoy SN Voltage storage CT**: Voltage in V. (see limitations [Summed voltage](#summed-voltage)
+- **Envoy SN storage CT current**: Current in A.
+- **Envoy SN Powerfactor storage CT**: Power factor, ratio of active to apparent power.
+- **Envoy SN Metering status storage CT**: Status of the metering process: `normal`, `not-metering`, `check-wiring`.
+- **Envoy SN Meter status flags active storage CT**: Count of CT status flags active. See troubleshooting [CT Active flag count](#ct-active-flag-count) when non-zero.
+
+For storage CT energy entities refer to [battery sensor](#aggregated-iq-battery-sensor-entities) description.
+
+### Grid sensor entities
+
+When the Envoy Metered is equipped with a [net-consumption CT](#current-transformers), entities for Grid import and export are available.
+
+- **Envoy SN Current net power consumption**: Current power exchange from (positive) / to (negative) the grid in W, default display in kW.
+- **Envoy SN Lifetime net energy consumption**: Lifetime energy consumed / imported from the grid in Wh, default display in MWh.
+- **Envoy SN Lifetime net energy production**: Lifetime energy produced / exported to the grid in Wh, default display in MWh.
+
+When used with [multiphase CT phase data](#ct-aggregate-and-phase-data), disabled phase entities are available as well.
+
+#### Grid Balanced import/export sensor entities
+
+When the Envoy Metered is equipped with a [total-consumption CT](#current-transformers) instead of a [net-consumption CT](#current-transformers), no individual entities for Grid import and export are available, as these are not measured. Instead, the balance (difference) of grid import and export is available in a single entity, disabled by default, enable as desired.
+
+- **Envoy SN balanced net power consumption**: Current power exchange from (positive) / to (negative) the grid in W, default display in kW.
+ (This is the same value as [Envoy SN Current net power consumption](#grid-sensor-entities) when using a net-consumption CT.)
+- **Envoy SN Lifetime balanced net energy consumption**: Lifetime energy balance (difference) of imported and exported grid energy in Wh, default display in kWh.
+
+When used with [multiphase CT phase data](#ct-aggregate-and-phase-data), disabled phase entities are available as well.
+
+### Battery Storage data
+
+Enphase battery systems of multiple generations and configurations can provide integration entity data.
+
+- **AC-Batteries**: first generation battery setup, no longer in production.
+- **IQ Batteries**: current Enphase battery models.
+
+The batteries can be implemented in stand-alone configuration or as part of Enphase Ensemble systems with the Enpower/IQ System Controller.
+
+#### IQ battery data
+
+##### Aggregated IQ battery sensor entities
+
+Aggregated IQ battery data includes all installed IQ Batteries.
+
+- **Envoy SN Battery**: Current aggregated state of charge in %
+- **Envoy SN Available battery energy**: Current aggregated IQ battery energy content in Wh
+- **Envoy SN Battery capacity**: Aggregated maximum IQ battery energy content in Wh
+- **Envoy SN Reserve battery level**: Configured aggregated IQ Battery backup state of charge in %
+- **Envoy SN Reserve battery energy**: Configured aggregated IQ battery backup energy content in Wh
+
+If a [storage CT](#storage-ct-sensor-entities) is installed:
+
+- **Envoy SN Current battery discharge**: Current power in/out of the battery in W.
+- **Envoy SN Lifetime battery energy discharged**: Lifetime energy discharged from the battery in Wh, default display format MWh.
+- **Envoy SN Lifetime battery energy charged**: Lifetime energy charged in the battery in Wh, default display format MWh.
+
+
+
+ Envoy Aggregated IQ battery Sensor entities with no storage CT nor Enpower installed.
+
+
+{% note %}
+If an Enpower device is installed, then **Charge from grid**, **Reserve battery level**, and **Storage mode** are available as [Enpower device entities](#enpower-binary-sensor-entities) instead of Envoy device entities.
+{% endnote %}
+
+#### Individual IQ battery data
+
+For each IQ Battery, an Encharge device is created, linked to the Envoy parent device. Each encharge devices offers individual battery sensors.
+
+##### Individual IQ battery sensor entities
+
+- **Encharge SN Battery**: Current state of charge of the battery in %
+- **Encharge SN Power**: Current power in W
+- **Encharge SN Apparent Power**: Current apparent power in VA
+- **Encharge SN Temperature**: Current temperature in degrees C or F, based on your localization.
+- **Encharge SN Last reported**: Time when Envoy received last update from the battery.
+
+##### Individual IQ battery binary sensor entities
+
+- **Encharge SN Communicating**: Communication status of encharge battery, Connected / Disconnected. This is a diagnostics entity.
+- **Encharge SN DC Switch**: DC Switched off status of encharge battery, On / Off. This is a diagnostics entity.
+
+
+
+ Envoy Encharge IQ battery sensor entities.
+
+
+#### AC-battery data
+
+No individual AC-battery data is available, only aggregated AC-battery data for all AC-batteries.
+
+##### AC-battery sensor entities
+
+- **ACB SN Battery**: Current AC-battery state of charge in %
+- **ACB SN Battery state**: AC-battery state: charging, idle, discharging
+- **ACB SN Power**: Current AC-battery power in W
+- **Envoy SN Available ACB battery energy**: Current AC-battery energy content in Wh
+
+
+
+ Envoy AC-battery sensor entities.
+
+
+##### Aggregated IQ and AC battery sensor entities
+
+If both IQ and AC batteries are used, aggregated battery data for all installed IQ batteries and AC batteries is available.
+
+- **Envoy SN Aggregated Battery SOC**: Overall aggregated battery state of charge in %
+- **Envoy SN Aggregated Available battery energy**: Overall aggregated battery energy content in Wh
+- **Envoy SN Aggregated Battery capacity**: Overall aggregated maximum battery energy content in Wh
+
+The below figure shows the 3 aggregated entities along with the [AC-battery energy](#ac-battery-sensor-entities) and 3 of the [IQ Battery aggregate](#aggregated-iq-battery-sensor-entities) values.
+
+
+
+ Envoy aggregated ACB and IQ battery sensor entities.
+
+
+### Enpower data
+
+Data for an installed Enphase Enpower off-grid enabling switch is available in various entities for an Enpower device.
+
+#### Enpower binary sensor entities
+
+- **Enpower SN Grid status**: status of the grid.
+
+#### Enpower number entities
+
+- **Enpower SN Reserve battery level**: reserve battery level to maintain for outages in %. Changing the value, on the UI or in an [action](#action-numberset_value), will update the setting in the Envoy. Also see limitations, [No battery controls](#no-battery-controls).
+
+#### Enpower select entities
+
+- **Enpower SN Storage mode**: Current configured storage mode, `Full backup`, `Self consumption`, `Savings mode`. Changing the selection, in the UI or in an [action](#action-selectselect), will update the setting in the Envoy. Also see limitations, [No battery controls](#no-battery-controls).
+
+#### Enpower sensor entities
+
+- **Enpower SN Temperature**: Current temperature in degrees C or F, based on your localization.
+- **Enpower SN Last reported**: Time when Envoy received last update from the enpower device.
+- **Enpower SN Communicating**: Communication status of enpower switch, Connected / Disconnected. This is a diagnostics entity.
+
+#### Enpower switch entities
+
+- **Enpower SN Charge from grid**: Allow or disallow charging Encharge/IQ batteries from grid when a charge schedule is active. Changing the switch, in the UI or in an [action](#action-switchturn_onswitchturn_offswitchtoggle), will update the setting in the Envoy. If no charge schedule is active, changing the setting will not have an immediate effect. Also see limitations, [No battery controls](#no-battery-controls).
+- **Enpower SN Grid enabled**: Enable or disable grid connection. Note that the Enpower has a slight delay built-in between receiving these commands and actually switching the system on or off grid.
+
+
+
+ Envoy Enpower entities.
+
+
+{% note %}
+If no Enpower is installed, then **Charge from grid**, **Reserve battery level**, and **Storage mode** are available as [Envoy device entities](#aggregated-iq-battery-data) instead of Enpower device entities.
+{% endnote %}
+
+### Enpower load shedding relays
+
+With the Enpower/IQ System Controller installed, entities for the state and control of the Enpower's four load-shedding relays are available. In battery installations without load-shedding and off-grid functionality, used in many EU countries, these sensors and switches are not available.
+
+The Enphase Enpower has 4 load shedding relays (volt-free contacts, often referred to as dry-contacts) that can be used to control non-essential loads in your home. These have two main modes of operation:
+
+- **Standard**: When the mode entity is set to standard, you can simply set the state of the relay to be powered or not powered for each mode of operation: on grid, off grid, and on generator.
+
+- **Battery level**: When the relay mode is set to battery level, the relays will turn on and off based on the remaining battery level of your Encharge IQ batteries. Two number entities are available to control the cutoff and restore levels for the relays. When the battery level drops below the cutoff level, the relays will turn off, removing power from attached loads. When the battery level rises above the restore level, the relays will turn back on and restore power to attached loads.
+
+The names of entities and devices are derived from the load_name configured in the Enpower device.
+
+#### Dry-contact number entities
+
+- **LOAD_NAME cutoff battery level**: battery level below which relay will turn off when in `Battery level` mode.
+- **LOAD_NAME restore battery level**: battery level above which the relay will turn back on when in `Battery level` mode.
+
+#### Dry-contact select entities
+
+- **LOAD_NAME mode**: dry-contact operational mode: `standard` or `battery`
+- **LOAD_NAME Grid action**: dry-contact on grid action: `Powered`, `Not powered`, `Follow schedule`, `None`
+- **LOAD_NAME Micro-grid action**: dry-contact on micro-grid action: `Powered`, `Not powered`, `Follow schedule`, `None`
+- **LOAD_NAME Generator action**: dry-contact on generator action: `Powered`, `Not powered`, `Follow schedule`, `None`
+
+
+
+ Envoy Enpower dry-contact entities.
+
+
+## Data polling interval
+
+All data is collected in one coordinated collection cycle and sourced from a limited set of endpoints on the Envoy. For example, three different values sourced from the same endpoint are not pulled in three different requests but provided from the same single request. This method minimizes the number of requests to the Envoy. The local REST API of the Envoy is used. Only when the 1-year valid token is to expire, 1 month before due data, a new token is requested from the Enphase Enlighten website.
+
+The integration collects data for all entities by default every 60 seconds. To customize the collection interval, refer to [defining a custom polling interval](/common-tasks/general/#defining-a-custom-polling-interval). Specify one single entity from the envoy device as target of the action using the `+ choose entity` button. Updating one entity will update all entities of the Envoy and the related devices like the inverters; there is no need to specify multiple or all entities or add (all) inverter entities. When using multiple Envoys, add one entity for each envoy as targets or create separate custom polling intervals with a single entity as needed.
Envoy installations without installed CT, collect individual solar inverter data every 5 minutes. This collection does not occur for each inverter at the same time in the 5-minute period. Shortening the collection interval will at best show updates for individual inverters quicker, but not yield more granular data.
@@ -193,17 +423,156 @@ The firmware version is not available as an entity, but rather as an attribute o
## Energy dashboard
-This integration provides several values suitable for the energy dashboard:
+This integration provides several entities suitable for the energy dashboard.
-- For `Solar production`, use the `Envoy Lifetime energy production` entity.
-- For `Grid consumption`, use the `Envoy Lifetime net energy consumption` entity.[^3]
-- For `Return to grid`, use the `Envoy Lifetime net energy production` entity.[^3]
-- For `Energy going into the battery`, use the the `Envoy Lifetime battery energy charged` entity.[^5]
-- For `Energy coming out off the battery`, use the the `Envoy Lifetime battery energy discharged` entity.[^5]
+### Solar panels
-[^3]: Only applies when using Envoy S Metered / IQ Gateway Metered with installed and configured CT.
+For **Solar production**, use the **Envoy SN Lifetime energy production** entity. Overall this has proven to be more stable as the daily value reported by the Envoy. (See known limitations [Late reset](#late-reset), [Energy Incorrect](#energy-incorrect)).
-[^5]: Only applies when using Envoy S Metered / IQ Gateway Metered / IQ Combiner with installed and configured storage / battery CT.
+### Electricity grid
+
+Whether there is data available to use with the electricity grid depends on the installed CT, if any. Also, see Limitations, [Balancing grid meter](#balancing-grid-meter).
+
+#### Electricity grid with net-consumption CT
+
+With a [net-consumption CT](#grid-sensor-entities) installed, both grid consumption and return to grid data is available.
+
+- For **Grid consumption**, use the **Envoy SN Lifetime net energy consumption** entity.
+- For **Return to grid**, use the **Envoy SN Lifetime net energy production** entity.
+
+#### Electricity grid with total-consumption CT
+
+With a [total-consumption CT](#grid-balanced-importexport-sensor-entities) installed, only the balanced grid import-export value is available. This value is not suited for direct use with the energy dashboard. It will require some templating to split the value into an import and export value.
+
+{% details "Concept to split balanced Grid value into individual import-export values" %}
+
+The concept is to track value changes of the **Envoy SN Lifetime balanced net energy consumption** entity, add positive changes to a grid_import entity and add negative changes to a grid_export entity.
+
+{% raw %}
+
+```yaml
+
+- trigger:
+ - platform: state
+ entity_id: sensor.envoy_sn_lifetime_balanced_net_energy_consumption
+
+ sensor:
+ - name: "Grid import"
+ unique_id: calculated_envoy_grid_import
+ unit_of_measurement: "Wh"
+ state: "{{ this.state | int(0) + ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | max }}"
+ device_class: energy
+ state_class: total_increasing
+ - name: "Grid export"
+ unique_id: calculated_envoy_grid_export
+ unit_of_measurement: "Wh"
+ state: "{{ this.state | int(0) - ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | min }}"
+ device_class: energy
+ state_class: total_increasing
+```
+
+{% endraw %}
+
+The above example does not address handling `unavailable` or `unknown` states, value changes over Home Assistant outages nor changing UOM to a preferred one. Examples for these exist in various community topics.
+
+{% tip %}
+Alternatively, this can be done by splitting the **Envoy SN balanced net power consumption** into power import and export and two Riemann sum integral helpers to calculate energy from the power values.
+{% endtip %}
+
+{% enddetails %}
+
+### Home battery storage
+
+Whether there is data available to use with the electricity grid depends on the installed storage CT, if any.
+
+#### Home battery storage with storage CT
+
+With a [storage CT](#aggregated-iq-battery-sensor-entities) installed, data for both Energy coming out and going into the battery is available.
+
+- For **Energy going into the battery**, use the **Envoy SN Lifetime battery energy charged** entity.
+- For **Energy coming out of the battery**, use the **Envoy SN Lifetime battery energy discharged** entity.
+
+#### Home battery storage without storage CT
+
+Without a [storage CT](#aggregated-iq-battery-sensor-entities) installed, only the current Power in and out of individual batteries, or the current aggregated battery energy content is available. These values are not suited for direct use with the energy dashboard. It will require some templating to split the value into an import and export values.
+
+##### Home battery storage data using battery power
+
+Battery power is the current power flow in or out of an individual battery. Using the summed Power values of all batteries, the result needs to be split in 2 entities, representing total power in and power out. Next, each entity needs to be integrated into energy, using two Riemann sum integral helpers. The resulting data can be used for Energy going into the battery and Energy coming out of the battery.
+
+{% details "Concept to split Battery power value into individual import-export power values" %}
+
+The concept is to first sum all battery Power values using a combine state helper. Then track value changes of the summed value entity, add positive changes to a battery_charge power entity and add negative changes to a battery_discharge power entity.
+
+{% raw %}
+
+```yaml
+
+- trigger:
+ - platform: state
+ entity_id: sensor.envoy_sn_summed_battery_power_entity
+
+ sensor:
+ - name: "Battery charge power"
+ unique_id: calculated_envoy_battery_charge_power
+ unit_of_measurement: "W"
+ state: "{{ this.state | int(0) + ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | max }}"
+ device_class: power
+ state_class: measurement
+ - name: "Battery discharge power"
+ unique_id: calculated_envoy_battery_discharge_power
+ unit_of_measurement: "W"
+ state: "{{ this.state | int(0) - ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | min }}"
+ device_class: power
+ state_class: measurement
+```
+
+{% endraw %}
+
+The above example does not address handling `unavailable` or `unknown` states, value changes over Home Assistant outages nor conversion losses.
+
+{% enddetails %}
+
+##### Home battery storage data on the available battery energy
+
+Changes in the Available battery energy are a result from Energy going in or out of the battery. Splitting these energy changes into 2 entities, one tracking positive changes, one the negative changes, results in data that can be used for Energy going into the battery and Energy coming out off the battery. This method does not account for conversion losses as Energy content changes do not exactly match actual energy flow in and out of the battery.
+
+{% details "Concept to split Available battery energy value into individual import-export values" %}
+
+The concept is to track value changes of the **Envoy SN Available battery energy** entity, add positive changes to a battery_charge entity and add negative changes to a battery_discharge entity.
+
+{% raw %}
+
+```yaml
+
+- trigger:
+ - platform: state
+ entity_id: sensor.envoy_sn_available_battery_energy
+
+ sensor:
+ - name: "Battery charge"
+ unique_id: calculated_envoy_battery_charge
+ unit_of_measurement: "Wh"
+ state: "{{ this.state | int(0) + ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | max }}"
+ device_class: energy
+ state_class: total_increasing
+ - name: "Battery discharge"
+ unique_id: calculated_envoy_battery_discharge
+ unit_of_measurement: "Wh"
+ state: "{{ this.state | int(0) - ([0, (trigger.to_state.state | int(0) - trigger.from_state.state | int(0))] | min }}"
+ device_class: energy
+ state_class: total_increasing
+```
+
+{% endraw %}
+
+The above example does not address handling `unavailable` or `unknown` states, value changes over Home Assistant outages nor conversion losses.
+
+{% enddetails %}
+
+### Individual devices
+
+Although not a replacement for individual energy or power measurement devices, with multiphase CT installed, [energy consumption for phases](#ct-aggregate-and-phase-data) is available. These can be used for individual devices, if of interest.
## Actions
@@ -243,7 +612,7 @@ This action changes the setting for the Enpower `Reserve battery level`.
| Data attribute | Optional | Description |
| - | - | - |
-| `entity_id` | no | Name(s) of entities, e.g., `number.enpower_12345678901001_reserve_battery_level`. |
+| `entity_id` | no | Name(s) of entities. For example, `number.enpower_12345678901001_reserve_battery_level`. |
| `value` | no | The target value between 0 and 100 to set Enpower reserve battery level to. |
Example:
@@ -292,12 +661,61 @@ Technically `select.first`, `select.last`, `select.previous`, `select.next` are
## Know issues and limitations
-- [Envoy firmware](https://enphase.com/installers/resources/documentation/communication?&f[0]=document%3A217) versions come with changing behavior, features and issues. Firmware is pushed to the Envoy by Enphase, while 'not always communicated in detail upfront'. This may result in sudden changes in the Envoy behavior and is always accompanied by an outage while Envoy is being updated.
-- As of Envoy firmware 8.2.4225, the Envoy no longer supports setting battery modes, enabling/disabling charging from the grid, or changing reserve battery level through the local REST API used by HA. Until a resolution is found, you will need to use the Enphase APP to control these.
+### Firmware changes
+
+[Envoy firmware](https://enphase.com/installers/resources/documentation/communication?&f[0]=document%3A217) versions come with changing behavior, features, and potential issues. Firmware is pushed to the Envoy by Enphase, while 'not always communicated in detail upfront'. This may result in sudden changes in the Envoy behavior and is always accompanied by an outage while Envoy is being updated.
+
+### No battery controls
+
+As of Envoy firmware 8.2.4225, the Envoy no longer supports the following operations through the local REST API used by Home Assistant:
+
+- Setting battery modes
+- Enabling/disabling charging from the grid
+- Changing reserve battery level
+
+Until a resolution is found, you must use the Enphase App to control these features.
+
+### Late reset
+
+When using Envoy Metered with CT, not all firmware versions reset 'Energy production today' at midnight. Delays of up to 15 minutes have been reported. In this case, best use a utility meter with the `Lifetime energy production` entity for daily reporting.
+
+### Energy incorrect
+
+When using Envoy Metered with CT
+
+- not all firmware versions report `Energy production today` correctly. Zero data and unexpected spikes have been reported. In this case, best use a utility meter with the `Lifetime energy production` entity for daily reporting.
+- not all firmware versions report `Energy production last seven days` correctly. Zero and unexpected values have been reported.
+
+### Lifetime reset
+
+Envoy Metered without installed CT, running older firmware versions, reportedly resets **Lifetime energy production** to 0 when reaching 1.2 MWh. For use with the energy dashboard, the reset is not an issue. In a recent firmware version 8.x.x the reset is solved, but results in a one-time step change to the full lifetime value. This has impact on the energy dashboard, it can be solved by setting the statistics value for that moment to 0 in [Developer Tools: Statistics](/docs/tools/dev-tools/#statistics-tab)
+
+{% details "History example for Envoy Lifetime energy production value reset" %}
+
+
+
+ Envoy Lifetime energy production value reset.
+
+
+{% enddetails %}
+
+### 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.
+
+### Balancing grid meter
+
+In multiphase installations with batteries, in countries with phase-balancing grid meters, the battery will export to the grid on one phase the amount it lacks on another phase. This other phase pulls the missing amount from the grid, as if it is using the grid as a 'transport' between phases. Since the grid meter will balance the amount imported and exported on the two phases, the net result is zero. The Envoy multiphase net-consumption CTs, however, will report the amounts on both phases, resulting in too high export on one and too high import on the other. One may consider using the `lifetime balanced net energy consumption` which is the sum of grid import and export to eliminate this effect. This would require some templating to split these values into import and export values. Alternatively, use the `current net power consumption` or `balanced net power consumption` with a Riemann integral sum helper.
## Troubleshooting
-- The Envoy should not be both on your local LAN and local Wi-Fi at the same time. This may cause auto-discovery to switch back and forth between the interfaces resulting in brief outages every 30 minutes. If you experience these frequent brief outages, make sure only 1 interface is used.
+### Periodic network connection issues
+
+If you experience periodic connection issues, ensure the Envoy is connected to only one interface (either Ethernet OR Wi-Fi, not both). The Envoy should not be both on your local LAN (Ethernet) and local Wi-Fi simultaneously. Having both connections active can cause auto-discovery to alternate between interfaces, resulting in connection interruptions approximately every 30 minutes.
+
+### CT Active flag count is non-zero
+
+The **CT active flag count** value shows the number of CT status flags that are raised. In a normal state, the value of **CT active flag count** is zero. If the value is non-zero, consult the [diagnostic](#diagnostics) report of the Envoy and look for `raw_data` - `/ivp/meters` - `statusFlags` for set flags, one or more from (`production-imbalance` | `negative-production` | `power-on-unused-phase` | `negative-total-consumption`). Their somewhat descriptive names may be an indication of installation issues.
### Debug logs and diagnostics
diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown
index a4caee5af55..0eef4080528 100644
--- a/source/_integrations/esphome.markdown
+++ b/source/_integrations/esphome.markdown
@@ -18,6 +18,7 @@ ha_domain: esphome
ha_zeroconf: true
ha_platforms:
- alarm_control_panel
+ - assist_satellite
- binary_sensor
- button
- camera
diff --git a/source/_integrations/flux.markdown b/source/_integrations/flux.markdown
index f5214ca6c94..7ef893e597f 100644
--- a/source/_integrations/flux.markdown
+++ b/source/_integrations/flux.markdown
@@ -84,7 +84,7 @@ disable_brightness_adjust:
type: boolean
default: false
mode:
- description: Select how color temperature is passed to lights. Valid values are `xy`, `mired` and `rgb`.
+ description: Select how color temperature is passed to lights. Valid values are `xy`, `mired` (alias to kelvin) and `rgb`.
required: false
default: xy
type: string
diff --git a/source/_integrations/fronius.markdown b/source/_integrations/fronius.markdown
index edd4aaf32a5..586a914e1f4 100644
--- a/source/_integrations/fronius.markdown
+++ b/source/_integrations/fronius.markdown
@@ -15,6 +15,7 @@ ha_platforms:
- sensor
ha_dhcp: true
ha_integration_type: integration
+ha_quality_scale: gold
---
The Fronius integration polls a [Fronius](https://www.fronius.com/) solar inverter or datalogger for details of a Fronius SolarNet setup and integrate it in your Home Assistant installation.
diff --git a/source/_integrations/fyta.markdown b/source/_integrations/fyta.markdown
index 73b2d560887..66b0e773e18 100644
--- a/source/_integrations/fyta.markdown
+++ b/source/_integrations/fyta.markdown
@@ -15,6 +15,8 @@ ha_platforms:
- diagnostics
- sensor
ha_integration_type: hub
+ha_quality_scale: platinum
+ha_dhcp: true
---
The **FYTA** {% term integration %} uses the open API of [FYTA](https://www.fyta.de) to obtain the data from your plant sensors and integrate these into Home Assistant.
diff --git a/source/_integrations/go2rtc.markdown b/source/_integrations/go2rtc.markdown
index 6adfe996883..63eb269eb75 100644
--- a/source/_integrations/go2rtc.markdown
+++ b/source/_integrations/go2rtc.markdown
@@ -11,7 +11,7 @@ ha_domain: go2rtc
ha_integration_type: system
related:
- docs: /installation/
-ha_quality_scale: legacy
+ha_quality_scale: internal
---
go2rtc is an open source project providing a camera streaming application that supports formats such as RTSP, WebRTC, HomeKit, FFmpeg, RTMP. The **go2rtc** {% term integration %} connects to a go2rtc instance and provides a WebRTC proxy for all your cameras. To learn more about go2rtc, refer to the [project's GitHub page](https://github.com/AlexxIT/go2rtc/).
diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown
index 390c218d922..1c8e0b4ac14 100644
--- a/source/_integrations/google_generative_ai_conversation.markdown
+++ b/source/_integrations/google_generative_ai_conversation.markdown
@@ -125,3 +125,9 @@ data:
response_variable: generated_content
```
{% endraw %}
+
+### Video tutorial
+
+This video tutorial explains how Google Generative AI can be set up, how you can send an AI-generated message to your smart speaker when you arrive home, and how you can analyze an image taken from your doorbell camera as soon as someone rings the doorbell.
+
+
diff --git a/source/_integrations/google_sheets.markdown b/source/_integrations/google_sheets.markdown
index 26ab362f9ac..46bc8ef141a 100644
--- a/source/_integrations/google_sheets.markdown
+++ b/source/_integrations/google_sheets.markdown
@@ -17,7 +17,7 @@ api2: Google Sheets API
api2_link: https://console.cloud.google.com/apis/enableflow?apiid=sheets.googleapis.com
---
-The Google Sheets integration allows you to connect your [Google Drive](https://drive.google.com) to Home Assistant. The integration adds an actiion to allow you to append rows to a Sheets document. The idea is that you can store data on there for further processing. When you set up a config entry, your drive will have a new sheet called Home Assistant. You can then rename this to whatever you like.
+The Google Sheets integration allows you to connect your [Google Drive](https://drive.google.com) to Home Assistant. The integration adds an action to allow you to append rows to a Sheets document. The idea is that you can store data on there for further processing. When you set up a config entry, your drive will have a new sheet called Home Assistant. You can then rename this to whatever you like.
**Note**:
The integration currently only has access to that one document that is created during setup.
diff --git a/source/_integrations/govee_ble.markdown b/source/_integrations/govee_ble.markdown
index a799921a807..db9c6ba8806 100644
--- a/source/_integrations/govee_ble.markdown
+++ b/source/_integrations/govee_ble.markdown
@@ -10,7 +10,6 @@ ha_release: 2022.8
ha_iot_class: Local Push
ha_codeowners:
- '@bdraco'
- - '@PierreAronnax'
ha_domain: govee_ble
ha_config_flow: true
ha_platforms:
diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown
index a8bea43a9c0..1cb7649fa83 100644
--- a/source/_integrations/habitica.markdown
+++ b/source/_integrations/habitica.markdown
@@ -415,6 +415,12 @@ This integration performs the following requests:
Please keep these limits in mind to avoid exceeding Habitica's request allowance. Efforts are ongoing to optimize the integration and reduce the number of requests it makes.
+## Troubleshooting
+
+The Habitica integration relies on an active internet connection to communicate with **Habitica**. If you encounter issues, verify that your network connection is stable. Additionally, the Habitica service itself may experience downtime, whether unexpected or due to scheduled maintenance. In these trying times of uncertainty and challenge, when fate tests your resolve, seek guidance from the [Habitica Outage Instructions](https://habitica.fandom.com/wiki/Outage_Instructions) on the community-maintained Habitica wiki โ wisdom shared by adventurers who have faced such trials before.
+
+In any case, when reporting an issue, please enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics), restart the integration, and as soon as the issue reoccurs stop the debug logging again (_download of debug log file will start automatically_). Further _if still possible_, please also download the [diagnostics](/integrations/diagnostics) data. If you have collected the debug log and the diagnostics data, provide them with the issue report.
+
## Remove integration
This integration can be removed by following these steps:
diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown
index 78c08936659..bc340880ce1 100644
--- a/source/_integrations/history_stats.markdown
+++ b/source/_integrations/history_stats.markdown
@@ -124,7 +124,7 @@ Depending on the sensor type you choose, the `history_stats` integration can sho
- **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.
{% note %}
-For a 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.
+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.
{% endnote %}
## Time periods
diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown
index 3b6f9e9d1b0..ed77ed07352 100644
--- a/source/_integrations/honeywell.markdown
+++ b/source/_integrations/honeywell.markdown
@@ -14,6 +14,7 @@ ha_domain: honeywell
ha_platforms:
- climate
- diagnostics
+ - humidifier
- sensor
- switch
ha_integration_type: integration
diff --git a/source/_integrations/husqvarna_automower.markdown b/source/_integrations/husqvarna_automower.markdown
index c6df677ca77..35f2baed41b 100644
--- a/source/_integrations/husqvarna_automower.markdown
+++ b/source/_integrations/husqvarna_automower.markdown
@@ -29,6 +29,7 @@ ha_platforms:
- switch
ha_integration_type: integration
ha_domain: husqvarna_automower
+ha_quality_scale: silver
---
The Husqvarna Automower integration provides connectivity with Husqvarna Automowers lawn mowers through Husqvarna's cloud API. Only mowers with *Automowerยฎ Connect* or with the *Automowerยฎ Connect Module* are supported.
diff --git a/source/_integrations/hvv_departures.markdown b/source/_integrations/hvv_departures.markdown
index a1d77aca6c3..08b6342798e 100644
--- a/source/_integrations/hvv_departures.markdown
+++ b/source/_integrations/hvv_departures.markdown
@@ -75,8 +75,7 @@ If the selected station has elevators, binary sensors will be available.
You have to apply for credentials via the HVV website. You can see their official guide [here](https://www.hvv.de/de/fahrplaene/abruf-fahrplaninfos/datenabruf) (the page is only available in German).
-In your mail, tell them you are using your API credentials for use within Home Assistant. They will send you a contract you will have to sign and send back. After about a week, you will receive your API credentials.
-
+In your mail, tell them you are using your API credentials for use within Home Assistant. They will subsequently send your API credentials in a follow-up response.
## Data
Data is provided by [HVV](https://www.hvv.de/).
diff --git a/source/_integrations/idasen_desk.markdown b/source/_integrations/idasen_desk.markdown
index f31ab9e81bd..fd479a02247 100644
--- a/source/_integrations/idasen_desk.markdown
+++ b/source/_integrations/idasen_desk.markdown
@@ -12,12 +12,12 @@ ha_platforms:
- button
- cover
- sensor
-ha_integration_type: integration
+ha_integration_type: device
ha_codeowners:
- '@abmantis'
---
-The IKEA IDร SEN integration allows you to connect your IKEA Idรฅsen motorized desk to Home Assistant, making it possible to control the desk height and also monitor height changes from the physical controller.
+The IKEA IDร SEN {% term integration %} allows you to connect your [IKEA Idรฅsen](https://www.ikea.com/us/en/cat/idasen-system-47424/) motorized desk to Home Assistant, making it possible to control the desk height and also monitor height changes from the physical controller.
{% tip %}
@@ -47,3 +47,9 @@ This integration provides two buttons to connect and disconnect to/from the desk
Height:
description: The current height of the desk, in meters.
{% 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/incomfort.markdown b/source/_integrations/incomfort.markdown
index 3418ca75448..f4c96b2d407 100644
--- a/source/_integrations/incomfort.markdown
+++ b/source/_integrations/incomfort.markdown
@@ -21,8 +21,9 @@ ha_config_flow: true
---
The `incomfort` {% term integration %} links Home Assistant with your Intergas Lan2RF gateway, including the boiler and any room thermostats attached to it.
+The integration uses the [incomfort](https://pypi.org/project/incomfort-client/) client library.
-It uses the [incomfort](https://pypi.org/project/incomfort-client/) client library.
+The Intergas Lan2RF Gateway connects thermostats based on the OpenTherm standard. An example of such a thermostat is the [Comfort Touch Thermostat](https://www.intergas-verwarming.nl/en/consumer/products/comfort-touch-thermostat/). The thermostats and LAN2RF gateway are often sold as a set. The gateway is suitable for use with Intergas Kombi Kompakt HRE and HReco appliances from year of manufacture 2014. If the Comfort Touch thermostat is used together with the gateway, then this will work in combination with Intergas Kombi Kompakt HRE, HReco, or Xtreme devices from year of manufacture 2017.
### Boiler
@@ -32,7 +33,7 @@ Note that the `current_temperature` will switch between the CV (circulating volu
### Rooms
-Any room thermostats (there can be 0, 1 or 2) are represented as **Climate** devices. They will report the thermostat's `temperature` (setpoint, target temperature) and `current_temperature` and the setpoint can be changed.
+Any room thermostats (there can be 0, 1 or 2) are represented as **Climate** devices. They will report the thermostat's target `temperature` and `current_temperature` and the target temperature can be changed. This is similar to changing the target temperature override using the Comfort Touch App that comes with the thermostat/gateway. Note that any override will be reset when a new set point is reached on the thermostat's schedule.
{% include integrations/config_flow.md %}
@@ -64,6 +65,16 @@ Note that **all** sensors are disabled by default.
- Boiler Hot water tap: Indicates if the hot water tap is running.
- Boiler Pump: Indicate the pump is running for cental heating.
+## Data updates
+
+The `incomfort` {% term integration %} will fetch state data from the gateway every 30 seconds. When the target temperature on the thermostat is changed, it might take some time for the set point to be updated on the Home Assistant climate {% term entity %}.
+
+## Remove integration
+
+This integration follows standard integration removal, no extra steps are required.
+
+{% include integrations/remove_device_service.md %}
+
## Automation
To send an alert if the CV pressure is too low or too high, consider the following example:
diff --git a/source/_integrations/iotty.markdown b/source/_integrations/iotty.markdown
index 6a8e90219db..8f872c21537 100644
--- a/source/_integrations/iotty.markdown
+++ b/source/_integrations/iotty.markdown
@@ -8,7 +8,6 @@ ha_category:
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- - '@pburgio'
- '@shapournemati-iotty'
ha_domain: iotty
ha_platforms:
@@ -41,14 +40,20 @@ US version:
EU version:
-- [iotty Smart Switch](https://iotty.uk/collections/prodotti-singoli/products/e1-e2-plus-smart-switch-for-lights-and-gates)
-- [iotty Smart Switch (variant)](https://iotty.uk/collections/prodotti-singoli/products/e1-e2-plus-smart-switch-for-lights-and-gates?variant=48626603032911)
-- [iotty Plus Interruttore Intelligente](https://iotty.it/collections/prodotti-singoli/products/i3-plus-interruttore-intelligente-per-luci-e-cancelli)
+- [E1 PLUS Smart Switch - for lights and gates](https://iotty.uk/collections/prodotti-singoli/products/e1-e2-plus-smart-switch-for-lights-and-gates)
+- [E2 PLUS Smart Switch - for lights and gates](https://iotty.uk/collections/prodotti-singoli/products/e1-e2-plus-smart-switch-for-lights-and-gates?variant=48626603032911)
+- [i3 PLUS Smart Switch - for lights and gates](https://iotty.it/collections/prodotti-singoli/products/i3-plus-interruttore-intelligente-per-luci-e-cancelli)
### iotty Shutter
-- [iotty Smart Shades Switch](https://iotty.uk/collections/frontpage/products/e2s-plus-smart-shades-switch-for-shutters-and-blinds)
-- [iotty Plus Interruttore Intelligente per Tende e Tapparelle](https://iotty.it/collections/prodotti-singoli/products/i3s-plus-interruttore-intelligente-per-tende-e-tapparelle) (currently only available for the Italian market)
+- [E2S PLUS Smart Shades Switch - for shutters and blinds](https://iotty.uk/collections/frontpage/products/e2s-plus-smart-shades-switch-for-shutters-and-blinds)
+- [i3S PLUS Smart Shades Switch - for shutters and blinds](https://iotty.it/collections/prodotti-singoli/products/i3s-plus-interruttore-intelligente-per-tende-e-tapparelle)
+
+### iotty Outlet
+
+- [OiT PLUS Smart Outlet](https://iotty.it/collections/prodotti-singoli/products/oit-plus-presa-intelligente)
+- [ODE PLUS Smart Outlet](https://iotty.de/collections/prodotti-singoli/products/ode-plus-smarte-steckdose)
+- [OFR PLUS Smart Outlet](https://iotty.fr/collections/prodotti-singoli/products/ofr-plus-prise-intelligente)
### iotty Outlet
diff --git a/source/_integrations/iron_os.markdown b/source/_integrations/iron_os.markdown
index 1ca2250c7c9..eb2a862337e 100644
--- a/source/_integrations/iron_os.markdown
+++ b/source/_integrations/iron_os.markdown
@@ -2,13 +2,13 @@
title: IronOS
description: Instructions on how to integrate IronOS-based Pinecil V2 devices with Home Assistant.
ha_category:
- - Number
- - Sensor
- - Update
- Binary sensor
- - Select
- Button
+ - Number
+ - Select
+ - Sensor
- Switch
+ - Update
ha_iot_class: Local Polling
ha_release: 2024.8
ha_config_flow: true
@@ -17,13 +17,13 @@ ha_codeowners:
ha_domain: iron_os
ha_integration_type: integration
ha_platforms:
- - number
- - sensor
- - update
- binary_sensor
- - select
- button
+ - number
+ - select
+ - sensor
- switch
+ - update
---
The **IronOS** {% term integration %} seamlessly connects Home Assistant with PINE64's Pinecil V2 soldering irons, allowing for remote monitoring and control. This integration provides real-time updates on temperature, power, and various other settings and diagnostic information.
diff --git a/source/_integrations/ituran.markdown b/source/_integrations/ituran.markdown
index 10dd69f8590..fd4082856f0 100644
--- a/source/_integrations/ituran.markdown
+++ b/source/_integrations/ituran.markdown
@@ -14,7 +14,7 @@ ha_domain: ituran
ha_platforms:
- device_tracker
- sensor
-ha_integration_type: integration
+ha_integration_type: hub
---
The **Ituran** {% term integration %} allows you to retrieve information from your Ituran-equipped vehicle using the [Ituran APP service](https://www.ituran.co.il/ituranfront/comfort-services-2/ituran-app-comfort). It pulls information from the Ituran web service regarding the vehicle's location.
@@ -44,7 +44,7 @@ The Ituran {% term integration %} will track the location of each vehicle regist
### Sensor
-The Ituran {% term integration %} also exposes the following sensor for each registered vehicle:
+The Ituran {% term integration %} also exposes the following sensors for each registered vehicle:
- **Address** - The address that corresponds with the vehicle's location, as determined by Ituran
- **Battery voltage** - The measured voltage (V) of the car battery. If not supported by the installation, the value will be set to `-1`
@@ -56,6 +56,7 @@ The Ituran {% term integration %} also exposes the following sensor for each reg
## Known limitations
- While this integration is configured with your account, you won't be able to use the official app, as only one connection at a time is supported
+ - As a workaround, it's possible to add another user from the app, with a different ID and mobile phone number that will be dedicated for Home Assistant use.
- The vehicle's heading value is unreliable when it's not in motion
- The mileage value is not read from the vehicle's odometer but is calculated from GPS, which may result in slight variations from the actual odometer reading
diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown
index 9f762782209..03efb8837de 100644
--- a/source/_integrations/knx.markdown
+++ b/source/_integrations/knx.markdown
@@ -122,32 +122,86 @@ knx:
## Connection
-Connection parameters are set up when adding the integration and can be changed from the `Integrations` panel.
-
-Use `route back` if your tunneling server is located on a different network.
+Connection parameters are configured during integration setup and can be modified later in the integrations settings.
### KNX Secure
-The KNX integration supports IP Secure and Data Secure .
+The KNX integration supports both IP Secure and Data Secure.
+
+#### IP Secure
+
+IP Secure credentials can be provided in two ways:
+
+1. Using a `.knxkeys` file: This file can be exported from ETS and imported into the integration settings.
+2. Manual configuration: If you are not using Data Secure, you can manually input the required IP Secure credentials in the integration settings.
+
+#### Data Secure
-You can configure the IP Secure credentials either manually or by providing a `.knxkeys` file, which you can obtain by exporting the keyring in ETS as seen in the screenshot below.
Data Secure credentials are always sourced from a `.knxkeys` file. You can import or update the Keyring file from the integrations settings.
-For Data Secure, please make sure that all secured group addresses you want to use in Home Assistant are assigned to a tunnel of your interface or a dummy device in ETS and all participating devices are updated accordingly.
+{% important %}
-
+Assign all secured group addresses that Home Assistant will use to either the interface's tunnel endpoint or a dummy device in ETS before exporting the Keyring file.
-If you decide to configure IP Secure manually you will need the user ID, the user password and the device authentication password.
+{% endimportant %}
-The user id 0 is reserved and the user id 1 is used for management tasks, thus you will need to specify a user id that is 2 or higher according to the tunneling channel you would like to use.
+When updating secure groups, ensure all participating devices, routers, and couplers applications are updated as well. After making changes, load the updated Keyring file into Home Assistant.
-The following screenshot will show how you can get the device authentication password in ETS.
+### Tunneling
-
+Tunneling uses a KNX IP Interface to connect to the KNX bus. Most KNX IP Routers also support tunneling connections. This is the recommended connection type and is also used when selecting an "Automatic" connection in the integration setup.
-The user password can be obtained almost the same way as seen in the below screenshot.
+For modern interfaces (supporting TCP or IP Secure) you can select a specific tunnel endpoint to be used. Make sure that Home Assistant is the only client connecting to this tunnel endpoint.
+It is recommended to connect the group addresses you want to use to the tunnel endpoint that Home Assistant uses. For secure group addresses, this is mandatory.
-
+If you use KNX IP Secure tunneling or Data Secure, export the Keyring file from ETS and import it in the KNX integration settings.
+
+
+
+{% note %}
+
+If you want Home Assistant to use a specific individual address, you can change the address of the used tunnel endpoint in ETS.
+
+{% endnote %}
+
+{% details "Manual IP Secure tunneling credentials" %}
+
+If you opt for manual configuration of IP Secure tunneling, you will need the following:
+
+1. User-ID: Use a User-ID of 2 or higher. (IDs 0 and 1 are reserved).
+The first tunnel endpoint in ETS will typically use User-ID `2`, the second `3`, and so on.
+2. User password.
+3. Device authentication code (optional).
+
+
+
+The following screenshot will show how you can find the device authentication code in ETS.
+
+
+
+{% enddetails %}
+
+### Routing
+
+Routing communicates with KNXnet/IP routers via IP Multicast.
+
+When using routing:
+
+1. Add a dummy device in ETS at the same topology level as your routers.
+2. Assign this dummy device the same individual address configured in the KNX integration setup.
+3. Connect all group addresses that Home Assistant will use to the dummy device.
+This ensures routers and couplers maintain updated filter tables and enables the use of secure group addresses in Home Assistant.
+4. If you use KNX IP Secure routing or Data Secure groups, export the Keyring file from ETS and import it in the KNX integration settings.
+
+
+
+{% details "Manual IP Secure routing credentials" %}
+
+If you opt for manual configuration of IP Secure routing, you will need the backbone key. This can be found in the ETS "Project Security" report.
+
+
+
+{% enddetails %}
## Triggers
@@ -416,7 +470,7 @@ automation:
### Register event
-The `knx.event_register` action can be used to register (or unregister) group addresses to fire `knx_event` Events. Events for group addresses configured in the `event` key in `configuration.yaml` cannot be unregistered. See [knx_event](#events)
+The `knx.event_register` action can be used to register (or unregister) group addresses to fire `knx_event` Events. Events for group addresses configured in the `event` key in {% term "`configuration.yaml`" %} cannot be unregistered. See [knx_event](#events)
{% configuration %}
address:
@@ -436,7 +490,7 @@ type:
### Register exposure
-The `knx.exposure_register` action can be used to register (or unregister) exposures to the KNX bus. Exposures defined in `configuration.yaml` can not be unregistered. Per address only one exposure can be registered. See [expose](#exposing-entity-states-entity-attributes-or-time-to-knx-bus)
+The `knx.exposure_register` action can be used to register (or unregister) exposures to the KNX bus. Exposures defined in {% term "`configuration.yaml`" %} can not be unregistered. Per address only one exposure can be registered. See [expose](#exposing-entity-states-entity-attributes-or-time-to-knx-bus)
{% configuration %}
remove:
@@ -740,7 +794,7 @@ entity_category:
The KNX climate platform is used as an interface to KNX thermostats and room controllers.
-To use your KNX thermostats in your installation, add the following lines to your top level [KNX Integration](/integrations/knx) configuration key in `configuration.yaml`:
+To use your KNX thermostats in your installation, add the following lines to your top level [KNX Integration](/integrations/knx) configuration key in {% term "`configuration.yaml`" %}:
```yaml
# Example configuration.yaml entry
@@ -1017,7 +1071,7 @@ Unlike most KNX devices, Home Assistant defines 0% as closed and 100% as fully o
Home Assistant will, by default, `close` a cover by moving it in the `DOWN` direction in the KNX nomenclature, and `open` a cover by moving it in the `UP` direction.
{% endnote %}
-To use your KNX covers in your installation, add the following lines to your top level [KNX Integration](/integrations/knx) configuration key in `configuration.yaml`:
+To use your KNX covers in your installation, add the following lines to your top level [KNX Integration](/integrations/knx) configuration key in your {% term "`configuration.yaml`" %}:
```yaml
# Example configuration.yaml entry
@@ -1243,7 +1297,7 @@ The KNX fan integration is used to control KNX fans. Following control types are
- Percentage controlled: Fans that set the percentage directly from 0-100%.
- Step controlled: Fans which have a fixed amount of steps to set. The integration will convert percentage to step automatically. The `max_step` attribute is set to the number of steps of the fan, not counting the `off`-step. Example: A fan supports the steps 0 to 3. To use this fan the `max_step` attribute has to be set to `3`. The integration will convert the percentage `66 %` to the step `2` when sending data to KNX.
-To use your KNX fan in your installation, add the following lines to your top level [KNX Integration](/integrations/knx) configuration key in `configuration.yaml`:
+To use your KNX fan in your installation, add the following lines to your top-level [KNX Integration](/integrations/knx) configuration key in your {% term "`configuration.yaml`" %}:
```yaml
# Example configuration.yaml entry
@@ -1788,7 +1842,7 @@ knx:
type: percent
```
-In order to actively read the sensor data from the bus every 30 minutes you can add the following lines to your `configuration.yaml`:
+In order to actively read the sensor data from the bus every 30 minutes you can add the following lines to your {% term "`configuration.yaml`" %}:
```yaml
# Example configuration.yaml entry
@@ -2225,7 +2279,7 @@ entity_category:
The KNX weather platform is used as an interface to KNX weather stations.
-To use your KNX weather station in your installation, add the following lines to your top level [KNX Integration](/integrations/knx) configuration key in `configuration.yaml`:
+To use your KNX weather station in your installation, add the following lines to your top-level [KNX Integration](/integrations/knx) configuration key in your {% term "`configuration.yaml`" %}:
```yaml
# Example configuration.yaml entry
@@ -2334,8 +2388,8 @@ entity_category:
### Logs for the KNX integration
-`xknx`, the library used for KNX communication, provides various logging handlers for monitoring and debug purposes.
-Add the following lines to your Home Assistant `configuration.yaml` to activate them:
+The [`xknx` library](https://github.com/XKNX/xknx) is used for KNX communication. It provides various logging handlers for monitoring and debug purposes.
+Add the following lines to your Home Assistant {% term "`configuration.yaml`" %} to activate them:
```yaml
logger:
@@ -2352,6 +2406,7 @@ logger:
xknx.knx: debug # logs incoming and outgoing KNX/IP frames
xknx.raw_socket: warning # logs incoming UDP/TCP frames in raw hex format at socket level
# Loggers for xknx internals
+ xknx.ga_dpt: warning # logs when payloads can't be decoded with given project file information
xknx.state_updater: warning # provides information about the state updater
```
@@ -2403,3 +2458,17 @@ The `unique_id` for KNX entities is generated based on required configuration va
- weather: `address_temperature`
There can not be multiple entities on the same platform sharing these exact group addresses, even if they differ in other configuration.
+
+## Remove integration
+
+This integration can be removed by following these steps:
+
+{% include integrations/remove_device_service.md %}
+
+In addition, remove `knx:` from your {% term "`configuration.yaml`" %}.
+
+{% warning %}
+
+Removing the integration will delete an uploaded keyring file, ETS project information, telegram history, and all entity configuration done via the UI panel.
+
+{% endwarning %}
diff --git a/source/_integrations/lametric.markdown b/source/_integrations/lametric.markdown
index 0e445a2006d..ebd1264f5df 100644
--- a/source/_integrations/lametric.markdown
+++ b/source/_integrations/lametric.markdown
@@ -93,7 +93,7 @@ message:
required: true
type: string
icon:
- description: "An icon or animation. List of all icons available at [https://developer.lametric.com/icons](https://developer.lametric.com/icons)."
+ description: "The ID of an icon or animation. List of all icons available at [https://developer.lametric.com/icons](https://developer.lametric.com/icons)."
required: false
type: string
cycles:
@@ -132,7 +132,7 @@ following, additional, optional parameters:
{% configuration "notification" %}
icon:
- description: "An icon or animation. List of all icons available at [https://developer.lametric.com/icons](https://developer.lametric.com/icons)."
+ description: "The ID of an icon or animation. List of all icons available at [https://developer.lametric.com/icons](https://developer.lametric.com/icons)."
required: false
type: string
cycles:
diff --git a/source/_integrations/lcn.markdown b/source/_integrations/lcn.markdown
index 8814c6d968c..20befb354e8 100644
--- a/source/_integrations/lcn.markdown
+++ b/source/_integrations/lcn.markdown
@@ -433,6 +433,20 @@ Refer to the [Performing actions](/docs/scripts/service-calls) page for examples
When actions are linked to a particular device, the device is identified by its `device_id`. This `device_id` is a unique identifier supplied by Home Assistant.
+{% tip %}
+A simple method to obtain the `device_id` for LCN modules in automations and scripts is to use a template with the `device_id()` function as detailed [here](/docs/configuration/templating/#devices). This allows for finding the `device_id` using the module name as shown in the frontend or configured in the LCN-PRO software.
+
+{% raw %}
+```yaml
+action: lcn.pck
+data:
+ device_id: "{{ device_id('Module name') }}"
+ pck: PIN4
+```
+{% endraw %}
+
+{% endtip %}
+
### Action: `output_abs`
Set absolute brightness of output port in percent.
@@ -798,3 +812,15 @@ The motor values specify which hardware relay or outputs configuration will be u
Whenever a key has to be provided, it is defined by a joint string consisting of the table identifier (`a`, `b`, `c`, `d`) and the corresponding key number.
Examples: `a1`, `a5`, `d8`.
+
+## Remove integration
+
+This integration follows standard integration removal, no extra steps are required.
+
+{% include integrations/remove_device_service.md %}
+
+{% warning %}
+
+Removing the integration will delete all device and entity configuration done via the UI panel.
+
+{% endwarning %}
diff --git a/source/_integrations/lg_thinq.markdown b/source/_integrations/lg_thinq.markdown
index 118c6e89400..ca0b16d2e00 100644
--- a/source/_integrations/lg_thinq.markdown
+++ b/source/_integrations/lg_thinq.markdown
@@ -26,12 +26,12 @@ ha_codeowners:
The **LG ThinQ** integration allows you to connect LG ThinQ devices to Home Assistant. The features of this integration include:
-- Control LG appliances as Home Assistant entities through the [LG ThinQ Connect API](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/overview/).
+- Control LG appliances as Home Assistant entities through the LG ThinQ Connect API.
## Prerequisites
- This feature works via LG ThinQ cloud. Therefore, an internet connection is required.
-- A [personal access token](https://connect-pat.lgthinq.com) to use the [LG ThinQ Connect API](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/overview/).
+- A [personal access token](https://connect-pat.lgthinq.com) to use the LG ThinQ Connect API.
### Personal Access Token (PAT)
@@ -59,39 +59,39 @@ The **LG ThinQ** integration allows you to connect LG ThinQ devices to Home Assi
Support LG Appliances as follows:
-- [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/)
-- [Air Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-purifier/)
-- [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/)
-- [Ceiling Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/ceiling-fan/)
-- [Cooktop](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/cooktop/)
-- [Dehumidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dehumidifier/)
-- [Dishwasher](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dish-washer/)
-- [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dryer/)
-- [Home Brew](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/home-brew/)
-- [Hood](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/hood/)
-- [Humidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/humidifier/)
-- [Kimchi Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/kimchi-refrigerator/)
-- [Microwave Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/microwave-oven/)
-- [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/oven/)
-- [Plant Cultivator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/plant-cultivator/)
-- [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/)
-- [Robot Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/robot-cleaner/)
-- [Stick Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Stick-Cleaner/)
-- [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/)
-- [System Boiler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/system-boiler/)
-- [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Main-WashCombo/)
-- [Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Mini-WashCombo/)
-- [Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
-- [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/)
-- [Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/)
-- [Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/)
-- [Water Heater](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/water-heater/)
-- [Water Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/water-purifier/)
-- [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/wine-cellar/)
+- Air Conditioner
+- Air Purifier
+- Air Purifier Fan
+- Ceiling Fan
+- Cooktop
+- Dehumidifier
+- Dishwasher
+- Dryer
+- Home Brew
+- Hood
+- Humidifier
+- Kimchi Refrigerator
+- Microwave Oven
+- Oven
+- Plant Cultivator
+- Refrigerator
+- Robot Cleaner
+- Stick Cleaner
+- Styler
+- System Boiler
+- Washcombo Main
+- Washcombo Mini
+- Washer
+- Washtower
+- Washtower Dryer
+- Washtower Washer
+- Water Heater
+- Water Purifier
+- Wine Cellar
## Platforms
-LG ThinQ represents devices as a set of [profiles](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/). And these are mapped to entities in Home Assistant.
+LG ThinQ represents devices as a set of properties. And these are mapped to entities in Home Assistant.
A list of all Entity Platforms provided by LG ThinQ Integration:
@@ -111,18 +111,15 @@ A read-only property which has only two states that can be toggled is represente
| Device | Property |
| ------ | -------- |
-| [Cooktop](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Cooktop/) | Remote start |
-| [Dish Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dish-washer/) | Chime sound Clean indicator light Door Machine clean reminder Remote start Rinse refill needed |
-| [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Dryer/) | Remote start |
-| [Hood](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Hood/) | Power |
-| [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Oven/) | Remote start |
-| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Door Eco friendly Power saving mode Sabbath |
-| [Kimchi Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Kimchi-Refrigerator/) | Fresh air filter |
-| [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) | Remote start |
-| [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Main-WashCombo/) [Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Mini-WashCombo/) [Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) | Remote start |
-| [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/) [Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/) [Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) | Remote start |
-| [Water Heater](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Water-Heater/) | Power |
-| [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Wine-Cellar/) | Sabbath |
+| Cooktop | Remote start |
+| Dish Washer | Chime sound Clean indicator light Door Machine clean reminder Remote start Rinse refill needed |
+| Hood | Power |
+| Oven | Remote start |
+| Refrigerator | Door Eco friendly Power saving mode Sabbath |
+| Kimchi Refrigerator | Fresh air filter |
+| Dryer Styler Washer Washcombo Main Washcombo Mini Washtower Washtower Dryer Washtower Washer | Remote start |
+| Water Heater | Power |
+| Wine Cellar | Sabbath |
### Climate
@@ -130,8 +127,8 @@ The properties for controlling both the temperature and wind strength of the app
| Device | Property |
| ------ | -------- |
-| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Current temperature Fan mode HVAC mode Preset mode Temperature Temperature cool Temperature heat Unit |
-| [System Boiler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/System-Boiler/) | Current temperature HVAC mode Temperature Temperature cool Temperature heat Unit |
+| Air Conditioner | Current temperature Fan mode HVAC mode Preset mode Temperature Temperature cool Temperature heat Unit |
+| System Boiler | Current temperature HVAC mode Temperature Temperature cool Temperature heat Unit |
### Event
@@ -139,23 +136,20 @@ A notification message pushed from the server is represented as an event platfor
| Device | Property |
| ------ | -------- |
-| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Notification |
-| [Air Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-purifier/) | Notification |
-| [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) | Notification |
-| [Dehumidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dehumidifier/) | Notification |
-| [Dish Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dish-washer/) | Error Notification |
-| [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Dryer/) | Error Notification |
-| [Humidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/humidifier/) | Notification |
-| [Kimchi Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Kimchi-Refrigerator/) | Notification |
-| [Microwave Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Microwave-Oven/) | Notification |
-| [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Oven/) | Notification |
-| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Notification |
-| [Robot Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/robot-cleaner/) | Error Notification |
-| [Stick Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Stick-Cleaner/) | Notification |
-| [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) | Error Notification |
-| [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Main-WashCombo/) [Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Mini-WashCombo/) [Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) | Error Notification |
-| [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/) [Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/) [Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) | Error Notification |
-| [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Wine-Cellar/) | Notification |
+| Air Conditioner | Notification |
+| Air Purifier| Notification |
+| Air Purifier Fan | Notification |
+| Dehumidifier | Notification |
+| Dish Washer | Error Notification |
+| Humidifier | Notification |
+| Kimchi Refrigerator | Notification |
+| Microwave Oven | Notification |
+| Oven | Notification |
+| Refrigerator | Notification |
+| Robot Cleaner | Error Notification |
+| Stick Cleaner | Notification |
+| Dryer Styler Washer Washcombo Main Washcombo Mini Washtower Washtower Dryer Washtower Washer | Error Notification |
+| Wine Cellar | Notification |
### Fan
@@ -163,27 +157,24 @@ The properties for controlling the wind strength of the appliance are represente
| Device | Property |
| ------ | -------- |
-| [Ceiling Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/ceiling-fan/) | Power Speed |
+| Ceiling Fan | Power Speed |
### Number
-A read-write property which has numeric value is represented as a number platform.
+A read-write property which has a numeric value is represented as a number platform.
| Device | Property |
| ------ | -------- |
-| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Schedule turn-off Schedule turn-on Sleep timer |
-| [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) | Sleep timer Wind temperature |
-| [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Dryer/) | Delay ends in Delay starts in |
-| [Hood](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Hood/) | Fan Light |
-| [Humidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/humidifier/) | Sleep timer Target humidity |
-| [Microwave Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Microwave-Oven/) | Fan Light |
-| [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Oven/) | Temperature |
-| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Temperature |
-| [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) | Delay ends in |
-| [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Main-WashCombo/) [Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Mini-WashCombo/) [Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) | Delay ends in Delay starts in |
-| [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/) [Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/) [Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) | Delay ends in Delay starts in |
-| [Water Heater](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Water-Heater/) | Temperature |
-| [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Wine-Cellar/) | Light Temperature |
+| Air Conditioner | Schedule turn-off Schedule turn-on Sleep timer |
+| Air Purifier Fan | Sleep timer Wind temperature |
+| Hood | Fan Light |
+| Humidifier | Sleep timer Target humidity |
+| Microwave Oven | Fan Light |
+| Oven | Temperature |
+| Refrigerator | Temperature |
+| Dryer Styler Washer Washcombo Main Washcombo Mini Washtower Washtower Dryer Washtower Washer | Delay ends in |
+| Water Heater | Temperature |
+| Wine Cellar | Light Temperature |
### Select
@@ -191,48 +182,17 @@ A writable property which has a list of selectable values is represented as a se
| Device |Property |
| ------ |-------- |
-| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Air purify Air quality sensor |
-| [Air Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-purifier/) | Operating mode Speed |
-| [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) | Display brightness Operating mode Rotation Speed |
-| [Dehumidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dehumidifier/) | Speed |
-| [Dish Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dish-washer/) | Operation |
-| [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Dryer/) | Operation |
-| [Humidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/humidifier/) | Display brightness Drying mode Operating mode Speed |
-| [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Oven/) | Cook mode Operation |
-| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Fresh air filter |
-| [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) | Operation |
-| [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Main-WashCombo/) [Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Mini-WashCombo/) [Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) | Operation |
-| [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/) [Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/) [Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) | Operation |
-| [Water Heater](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Water-Heater/) | Operating mode |
-| [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Wine-Cellar/) | Light Operating mode |
-
-### Sensor
-
-A read-only property which has states is represented as a sensor platform.
-
-| Device | Property |
-| ------ | -------- |
-| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Filter remaining Humidity Odor Overall air quality PM1 PM10 PM2.5 Schedule turn-off Schedule turn-on Sleep timer |
-| [Air Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-purifier/) | Air quality sensor Humidity Odor Operating mode Overall air quality Personal mode PM1 PM10 PM2.5 |
-| [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) | Air quality sensor Humidity Odor Overall air quality PM1 PM10 PM2.5 Sleep timer Temperature |
-| [Cooktop](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Cooktop/) | Current status Power level Remaining time |
-| [Dehumidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dehumidifier/) | Humidity Operating mode |
-| [Dish Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dish-washer/) | Current cycle Current status Delay starts in Remaining time Rinse aid dispenser level Softening level Total time |
-| [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Dryer/) | Current status Delay ends in Delay starts in Remaining time Total time |
-| [Home Brew](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Home-Brew/)| Brewing duration Brewing period Current status Flavor Homebrew recipe Hops Recipe progress Wort Yeast |
-| [Humidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/humidifier/) | Air quality sensor Humidity Overall air quality PM1 PM10 PM2.5 Schedule turn-off Schedule turn-on Sleep timer Temperature |
-| [Kimchi Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Kimchi-Refrigerator/) | Fresh air filter Temperature |
-| [Microwave Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Microwave-Oven/) | Current status Remaining time |
-| [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Oven/) | Cook time Current status Remaining time Temperature |
-| [Plant Cultivator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Plant-Cultivator/) | Current status Day growth temperature Lighting duration Lighting intensity Lights on time Mode Night growth temperature Temperature Wind speed |
-| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Fresh air filter Water filter used |
-| [Robot Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/robot-cleaner/) | Current status Operating mode Running time |
-| [Stick Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Stick-Cleaner/) | Battery Current status Operating mode |
-| [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) | Current status Delay ends in Delay starts in Remaining time Total time |
-| [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Main-WashCombo/) [Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Mini-WashCombo/) [Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) | Current status Delay ends in Delay starts in Remaining time Total time |
-| [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/) [Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/) [Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) | Current status Delay ends in Delay starts in Remaining time Total time |
-| [Water Heater](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Water-Heater/) | Temperature |
-| [Water Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/water-purifier/) | High-temp sterilization Type UVnano|
+| Air Conditioner | Air purify Air quality sensor |
+| Air Purifier| Operating mode Speed |
+| Air Purifier Fan | Display brightness Operating mode Rotation Speed |
+| Dehumidifier | Speed |
+| Dish Washer | Operation |
+| Humidifier | Display brightness Drying mode Operating mode Speed |
+| Oven | Cook mode Operation |
+| Refrigerator | Fresh air filter |
+| Dryer Styler Washer Washcombo Main Washcombo Mini Washtower Washtower Dryer Washtower Washer | Operation |
+| Water Heater | Operating mode |
+| Wine Cellar | Light Operating mode |
### Switch
@@ -240,14 +200,14 @@ A read-write property which has only two states that can be toggled is represent
| Device | Property |
| ------ | -------- |
-| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Energy saving |
-| [Air Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-purifier/) | Power |
-| [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) | Heating Power UVnano |
-| [Dehumidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dehumidifier/) | Power |
-| [Humidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/humidifier/) | Auto mode Heating Mood light Power Sleep mode |
-| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Ice plus Quick freeze |
-| [System Boiler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/System-Boiler/) | Hot water |
-| [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Wine-Cellar/) | Ventilation |
+| Air Conditioner | Energy saving |
+| Air Purifier | Power |
+| Air Purifier Fan | Heating Power UVnano |
+| Dehumidifier | Power |
+| Humidifier | Auto mode Heating Mood light Power Sleep mode |
+| Refrigerator | Ice plus Quick freeze |
+| System Boiler | Hot water |
+| Wine Cellar | Ventilation |
### Vacuum
@@ -255,7 +215,64 @@ The properties for controlling the clean operations of the appliance are represe
| Device | Property |
| ------ | -------- |
-| [Robot Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/robot-cleaner/) | Battery Current status Operation |
+| Robot Cleaner | Battery Current status Operation |
+
+### Sensor
+
+A read-only property which has states is represented as a sensor platform.
+
+| Device | Property |
+| ------ | -------- |
+| Air Conditioner | Filter remaining Humidity Odor Overall air quality PM1 PM10 PM2.5 Schedule turn-off Schedule turn-on Sleep timer |
+| Air Purifier| Air quality sensor Humidity Odor Operating mode Overall air quality Personal mode PM1 PM10 PM2.5 Filter remaining Schedule turn-off Schedule turn-on |
+| Air Purifier Fan | Air quality sensor Humidity Odor Overall air quality PM1 PM10 PM2.5 Sleep timer Temperature Schedule turn-off Schedule turn-on |
+| Cooktop | Current status Power level |
+| Dehumidifier | Humidity Operating mode |
+| Dish Washer | Current cycle Current status Rinse aid dispenser level Softening level Delay in Remaining time Total time |
+| Home Brew| Brewing duration Brewing period Current status Flavor Homebrew recipe Hops Recipe progress Wort Yeast |
+| Humidifier | Air quality sensor Humidity Overall air quality PM1 PM10 PM2.5 Schedule turn-off Schedule turn-on Sleep timer Temperature |
+| Kimchi Refrigerator | Fresh air filter Temperature |
+| Microwave Oven | Current status |
+| Oven | Current status Temperature |
+| Plant Cultivator | Current status Day growth temperature Lighting duration Lighting intensity Lights on time Mode Night growth temperature Temperature Wind speed |
+| Refrigerator | Fresh air filter Water filter used |
+| Robot Cleaner | Current status Operating mode Running time |
+| Stick Cleaner | Battery Current status Operating mode |
+| Water Heater | Temperature |
+| Water Purifier | High-temp sterilization Type UVnano|
+| Dryer Styler Washer Washcombo Main Washcombo Mini Washtower Washtower Dryer Washtower Washer | Current status Delay in Remaining time Total time |
+
+### Custom card configuration
+
+#### Timer Bar Card
+
+- Supported devices: Washer, Dryer, Styler, Dish washer
+- Entities: sensor.washer_current_status, sensor.washer_remaining_time, sensor.washer_total_time
+
+```yaml
+type: custom:timer-bar-card
+entities:
+ - entity: sensor.washer_current_status
+ name: Washer
+ active_state:
+ - running
+ - rinsing
+ - spinning
+ - drying
+ - cooling
+ - reserved
+ - presteam
+ - steam
+ pause_state: pause
+ icon: mdi:tumble-dryer-off
+ active_icon: mdi:tumble-dryer
+ end_time:
+ entity: sensor.washer_remaining_time
+ duration:
+ entity: sensor.washer_total_time
+ units: minutes
+ invert: true
+```
## Troubleshooting
@@ -274,14 +291,7 @@ Check your PAT's valid country in the **Choose the region / Country** section.
This error occurs when there's an abnormal number of API calls made using the PAT.
The LG ThinQ integration will work properly after some time.
-## Debugging
-
-The LG ThinQ integration will show additional information by enabling log configuration. Add the line to your {% term "`configuration.yaml`" %}:
-Don't forget to remove the line again once you are done debugging.
-
-```yaml
-logger:
- default: info
- logs:
- homeassistant.components.lg_thinq: debug
-```
+## Debugging / Issue report
+The LG ThinQ integration will show additional information by enabling log configuration.
+1. Enable debug logging in /config/integrations/integration/lg_thinq,
+2. Please report your device info (screenshot including name, device type, entities) and logs.
diff --git a/source/_integrations/lock.template.markdown b/source/_integrations/lock.template.markdown
index 8674d4b52f3..ddfeaf7f367 100644
--- a/source/_integrations/lock.template.markdown
+++ b/source/_integrations/lock.template.markdown
@@ -74,7 +74,7 @@ lock:
required: false
type: template
default: None
- lock:
+ lock:
description: Defines an action to run when the lock is locked.
required: true
type: action
diff --git a/source/_integrations/london_underground.markdown b/source/_integrations/london_underground.markdown
index f91ff1123d2..78a5bea5b37 100644
--- a/source/_integrations/london_underground.markdown
+++ b/source/_integrations/london_underground.markdown
@@ -35,12 +35,17 @@ sensor:
- Elizabeth line
- Hammersmith & City
- Jubilee
- - London Overground
- Metropolitan
- Northern
- Piccadilly
- Victoria
- Waterloo & City
+ - Liberty
+ - Lioness
+ - Mildmay
+ - Suffragette
+ - Weaver
+ - Windrush
```
{% configuration %}
diff --git a/source/_integrations/mastodon.markdown b/source/_integrations/mastodon.markdown
index 2d69ed5232f..108b8969de4 100644
--- a/source/_integrations/mastodon.markdown
+++ b/source/_integrations/mastodon.markdown
@@ -22,7 +22,10 @@ The `mastodon` platform uses [Mastodon](https://joinmastodon.org/) to deliver no
### Setup
Go to **Preferences** in the Mastodon web interface, then to **Development** and create a new application.
-If you want to grant only required accesses, uncheck all checkboxes then check only **read:accounts** and **write:statuses**.
+
+Check the following scopes **read:accounts**, **write:statuses** and **write:media**.
+
+Select **Submit** to create the application and generate the key, secret, and token required for the integration.
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown
index 97c15c39e65..612c2b45149 100644
--- a/source/_integrations/modbus.markdown
+++ b/source/_integrations/modbus.markdown
@@ -350,7 +350,7 @@ All modbus entities have the following parameters:
{% configuration %}
address:
- description: "Address of coil/register."
+ description: "Address of coil/register. Note that this can also be specified in Hex. For example: `0x789A`"
required: true
type: integer
name:
@@ -369,12 +369,12 @@ slave:
description: "Identical to `device_address`"
required: false
type: integer
- default: 0
+ default: 1
device_address:
- description: "Id of the device. Used to address multiple devices on a rs485 bus or devices connected to a modbus repeater."
+ description: "Id of the device. Used to address multiple devices on a rs485 bus or devices connected to a modbus repeater. 0 is the broadcast id. "
required: false
type: integer
- default: 0
+ default: 1
unique_id:
description: "ID that uniquely identifies this entity.
Slaves will be given a unique_id of <>_<>.
@@ -838,7 +838,7 @@ modbus:
port: 502
climates:
- name: "Watlow F4T"
- address: 27586
+ address: 0x6BC2
input_type: holding
count: 1
data_type: custom
@@ -1458,7 +1458,7 @@ modbus:
sensors:
- name: Room_1
slave: 10
- address: 0
+ address: 0x9A
input_type: holding
unit_of_measurement: ยฐC
state_class: measurement
diff --git a/source/_integrations/monzo.markdown b/source/_integrations/monzo.markdown
index afcfa7b1cf6..0534bc085b6 100644
--- a/source/_integrations/monzo.markdown
+++ b/source/_integrations/monzo.markdown
@@ -3,6 +3,7 @@ title: Monzo
description: Instructions on how to integrate Monzo integration into Home Assistant.
ha_category:
- Sensor
+ - Finance
ha_release: 2024.6
ha_iot_class: Cloud Polling
ha_codeowners:
diff --git a/source/_integrations/mpd.markdown b/source/_integrations/mpd.markdown
index fb6aa21850b..fa556397494 100644
--- a/source/_integrations/mpd.markdown
+++ b/source/_integrations/mpd.markdown
@@ -40,4 +40,4 @@ relaxdeck:
volume_level: 0.60
```
-This platform works with [Music Player Daemon](https://www.musicpd.org/) and [mopidy](https://www.mopidy.com/) with [Mopidy-MPD](https://mopidy.com/ext/mpd/) as used by [Pi MusicBox](https://www.pimusicbox.com/). While all of these rely on the common MPD protocol, not all implementations support all features, especially with regard to album artwork, embedded artwork and volume control. The platform will fall back gracefully if support isn't detected.
+This platform works with [Music Player Daemon](https://www.musicpd.org/) and [mopidy](https://www.mopidy.com/) with [Mopidy-MPD](https://mopidy.com/ext/mpd/) as used by [Pi MusicBox](https://pimusicbox.github.io/). While all of these rely on the common MPD protocol, not all implementations support all features, especially with regard to album artwork, embedded artwork and volume control. The platform will fall back gracefully if support isn't detected.
diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown
index b2e448f427a..09bb23b667a 100644
--- a/source/_integrations/mqtt.markdown
+++ b/source/_integrations/mqtt.markdown
@@ -133,7 +133,7 @@ Note: This action does not remove the [MQTT broker](#setting-up-a-broker) or its
Your first step to get MQTT and Home Assistant working is to choose a broker.
The easiest option is to install the official Mosquitto Broker add-on. You can choose to set up and configure this add-on automatically when you set up the MQTT integration. Home Assistant will automatically generate and assign a safe username and password, and no further attention is required. This also works if you have already set up this add-on yourself in advance.
-You can set up additional logins for your MQTT devices and services using the [Mosquitto add-on configuration](https://my.home-assistant.io/create-link/?redirect=supervisor_addon&addon=core_mosquitto).
+You can set up additional logins for your MQTT devices and services using the [Mosquitto add-on configuration](https://my.home-assistant.io/redirect/supervisor_addon/?addon=core_mosquitto).
{% important %}
When MQTT is set up with the official Mosquitto MQTT broker add-on, the broker's credentials are generated and kept secret. If the official Mosquitto MQTT broker needs to be re-installed, make sure you save a copy of the add-on user options, like the additional logins. After re-installing the add-on, the MQTT integration will automatically update the new password for the re-installed broker. It will then reconnect automatically.
diff --git a/source/_integrations/music_assistant.markdown b/source/_integrations/music_assistant.markdown
index 08e8b267f01..ae804021bfd 100644
--- a/source/_integrations/music_assistant.markdown
+++ b/source/_integrations/music_assistant.markdown
@@ -49,7 +49,7 @@ Play Adele's album 25
```yaml
entity_id: media_player.music_assistant_player
-media_content_type: MUSIC
+media_content_type: album
media_content_id: 'Adele - 25'
```
@@ -57,7 +57,7 @@ Play all tracks from Stevie Wonder in random order
```yaml
entity_id: media_player.music_assistant_player
-media_content_type: MUSIC
+media_content_type: artist
media_content_id: 'Stevie Wonder'
```
@@ -65,7 +65,7 @@ Play the playlist The Best of Disco
```yaml
entity_id: media_player.music_assistant_player
-media_content_type: PLAYLIST
+media_content_type: playlist
media_content_id: 'The Best of Disco'
```
diff --git a/source/_integrations/myuplink.markdown b/source/_integrations/myuplink.markdown
index b3121f46f4b..495f289d0aa 100644
--- a/source/_integrations/myuplink.markdown
+++ b/source/_integrations/myuplink.markdown
@@ -27,6 +27,7 @@ ha_integration_type: integration
related:
- url: https://myuplink.com/
title: myUplink web portal
+ha_quality_scale: silver
---
The **myUplink** {% term integration %} lets you get information about and control heat-pump devices supporting myUplink using the [official cloud API](https://dev.myuplink.com).
diff --git a/source/_integrations/nice_go.markdown b/source/_integrations/nice_go.markdown
index c448b3497e8..69cd5a33c23 100644
--- a/source/_integrations/nice_go.markdown
+++ b/source/_integrations/nice_go.markdown
@@ -21,7 +21,10 @@ ha_platforms:
ha_integration_type: hub
---
-The **Nice G.O.** {% term integration %} lets you control Nice G.O. garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your Nice G.O. mobile app.
+The **Nice G.O.** {% term integration %} is used to integrate with [Nice/Linear](https://linear-solutions.com/) and [Mighty Mule](https://mightymule.com/) products.
+This integration is used for garage doors and gate openers created by these companies.
+
+Device names in Home Assistant are generated based on the names defined in your Nice G.O. mobile app.
## Prerequisites
@@ -44,3 +47,9 @@ Lights on your garage door will appear as lights.
## Switch
A switch for turning vacation mode on and off will be made available for each device. Vacation mode prevents the operation of the door from physical control points such as a wall station, wireless keypad, remote control, or HomeLink. It can still be controlled from Home Assistant.
+
+## 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/niko_home_control.markdown b/source/_integrations/niko_home_control.markdown
index 89a2c938e2c..5da250fac47 100644
--- a/source/_integrations/niko_home_control.markdown
+++ b/source/_integrations/niko_home_control.markdown
@@ -5,19 +5,18 @@ ha_codeowners:
- '@VandeurenGlenn'
ha_config_flow: true
ha_category:
- - Light
- Cover
+ - Light
ha_iot_class: Local Push
ha_release: 0.82
ha_domain: niko_home_control
ha_platforms:
- - light
- cover
+ - light
ha_integration_type: integration
related:
- docs: /docs/configuration/
title: Configuration file
-ha_quality_scale: legacy
---
The `niko_home_control` {% term integration %} allows you to integrate your [Niko Home Control](https://www.niko.eu/enus/products/niko-home-control) into Home Assistant.
diff --git a/source/_integrations/nordpool.markdown b/source/_integrations/nordpool.markdown
index 968ea517cd4..7aa59c8f2a0 100644
--- a/source/_integrations/nordpool.markdown
+++ b/source/_integrations/nordpool.markdown
@@ -15,6 +15,7 @@ ha_platforms:
- diagnostics
- sensor
ha_integration_type: hub
+ha_quality_scale: platinum
---
The **Nord Pool** {% term integration %} integrates [Nord Pool Group](https://www.nordpoolgroup.com/) energy prices into Home Assistant.
@@ -43,7 +44,8 @@ All prices are displayed as `[Currency]/kWh`.
Data is polled from the **Nord Pool** API on an hourly basis, exactly on the hour, to ensure the price sensors are displaying the correct price.
-If polling cannot happen because of no connectivity or a malfunctioning API, there is no retry; the next periodic update will try again.
+If polling cannot happen because of no connectivity or a malfunctioning API, it will wait a retry a few times before failing.
+The user can use the [`homeassistant.update_entity`](homeassistant#action-homeassistantupdate_entity) action to manually try again later, in the case the user has solved the connectivity issue.
## Troubleshooting
diff --git a/source/_integrations/notify.markdown b/source/_integrations/notify.markdown
index 7856277dd29..7b404c8923e 100644
--- a/source/_integrations/notify.markdown
+++ b/source/_integrations/notify.markdown
@@ -69,7 +69,7 @@ Notifications can also be sent using [Notify groups](https://www.home-assistant.
### Test if it works
-After you setup a [notifier](/integrations/#notifications), a simple way to test if you have set up your notify platform correctly is to open {% my developer_services title="**Developer tools** > **Actions**" %}** tab from the sidebar. Choose your action from the **Action** dropdown menu depending on the integration you want to test, such as **Notifications: Send a persistent notification** or **Notifications: Send a notification via mobile_app_your_phone_name**. Enter your message into the **message** field, and select the **Perform action** button.
+After you set up a [notifier](/integrations/#notifications), a simple way to test if you have set up your notify platform correctly is to open {% my developer_services title="**Developer tools** > **Actions**" %} tab from the sidebar. Choose your action from the **Action** dropdown menu depending on the integration you want to test, such as **Notifications: Send a persistent notification** or **Notifications: Send a notification via mobile_app_your_phone_name**. Enter your message into the **message** field, and select the **Perform action** button.
To test the entity platform action, select the `notify.send_message` action, and select one or more of `entity`, `device`, `area`, or `label`. Then, supply a `message`.
@@ -109,7 +109,7 @@ actions:
In the **Developer Tools**, on the **Action** tab, select the **Notifications: Send a persistent notification** action. 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 %} actions %, whose YAML will appear the same:
+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 %} actions, whose YAML will appear the same:
{% raw %}
diff --git a/source/_integrations/ohme.markdown b/source/_integrations/ohme.markdown
index 867be61bc61..2bca9700acf 100644
--- a/source/_integrations/ohme.markdown
+++ b/source/_integrations/ohme.markdown
@@ -2,8 +2,8 @@
title: Ohme
description: Instructions to configure the Ohme integration into Home Assistant.
ha_category:
- - Sensor
- Car
+ - Sensor
ha_release: 2025.1
ha_iot_class: Cloud Polling
ha_codeowners:
@@ -11,9 +11,11 @@ ha_codeowners:
ha_config_flow: true
ha_domain: ohme
ha_platforms:
+ - button
- sensor
- switch
- - button
+ha_quality_scale: silver
+ha_integration_type: device
---
The **Ohme** {% term integration %} allows you to connect your [Ohme](https://ohme-ev.com/) EV charger to Home Assistant.
diff --git a/source/_integrations/onkyo.markdown b/source/_integrations/onkyo.markdown
index 3d9cffd7e09..1c7109f7226 100644
--- a/source/_integrations/onkyo.markdown
+++ b/source/_integrations/onkyo.markdown
@@ -5,6 +5,7 @@ ha_category:
- Media player
ha_codeowners:
- '@arturpragacz'
+ - '@eclair4151'
ha_config_flow: true
ha_domain: onkyo
ha_integration_type: device
@@ -12,6 +13,7 @@ ha_iot_class: Local Push
ha_platforms:
- media_player
ha_release: 0.17
+ha_ssdp: true
---
The `onkyo` {% term integration %} allows you to control [Onkyo](https://www.onkyo.com) and [Integra](http://www.integrahometheater.com) (from 2011 onward) and also [Pioneer](https://www.pioneerelectronics.com) (from 2016 onward) receivers using Home Assistant.
diff --git a/source/_integrations/openai_conversation.markdown b/source/_integrations/openai_conversation.markdown
index 977e8458891..c2bc2ffe991 100644
--- a/source/_integrations/openai_conversation.markdown
+++ b/source/_integrations/openai_conversation.markdown
@@ -57,7 +57,7 @@ If you choose to not use the recommended settings, you can configure the followi
{% configuration_basic %}
Model:
- description: The GPT language model is used for text generation. You can find more details on the available models in the [OpenAI GPT-3.5 Turbo Documentation](https://platform.openai.com/docs/models/gpt-3-5-turbo), [OpenAI GPT-4 Turbo and GPT-4 Documentation](https://platform.openai.com/docs/models/gpt-4-turbo-and-gpt-4), or [GPT-4o Documentation](https://platform.openai.com/docs/models/gpt-4o). The default is "gpt-4o".
+ description: The GPT language model is used for text generation. You can find more details on the available models in the [GPT-4o Documentation](https://platform.openai.com/docs/models/gpt-4o). The default is "gpt-4o-mini".
Maximum Tokens to Return in Response:
description: The maximum number of words or "tokens" that the AI model should generate in its completion of the prompt. For more information, see the [OpenAI Completion Documentation](https://platform.openai.com/docs/guides/completion/introduction).
Temperature:
diff --git a/source/_integrations/overkiz.markdown b/source/_integrations/overkiz.markdown
index f3ba6d7c814..20e0a378ecf 100644
--- a/source/_integrations/overkiz.markdown
+++ b/source/_integrations/overkiz.markdown
@@ -1,6 +1,6 @@
---
title: Overkiz
-description: Instructions on how to integrate hubs whom use the Overkiz platform with Home Assistant.
+description: Instructions on how to integrate hubs that use the Overkiz IoT platform with Home Assistant.
ha_category:
- Alarm
- Binary sensor
@@ -49,39 +49,70 @@ ha_platforms:
ha_integration_type: hub
---
-The Overkiz (by Somfy) integration platform is used by many different vendors, like Somfy, Hitachi, and Atlantic. This integration will allow users to integrate their devices into Home Assistant using the Overkiz API.
+The Overkiz (by Somfy) IoT platform is used by many different vendors, like Somfy, Hitachi, and Atlantic. This integration will allow users to integrate their devices into Home Assistant using the Overkiz API.
-## Supported hubs
+## Supported hubs & devices
- Atlantic Cozytouch
+- Bouygues Flexom
- Hitachi Hi Kumo
- Nexity Eugรฉnie
-- Rexel Energeasy
+- Sauter Cozytouch
+- Simu LiveIn2
- Somfy Connectivity Kit
- Somfy Connexoon IO _(local API available)_
- Somfy Connexoon RTS _(local API available)_
-- Somfy TaHoma _(local API available)_
+- Somfy TaHoma v2 _(local API available)_
- Somfy TaHoma Beecon _(local API available)_
- Somfy TaHoma Switch _(local API available)_
- Thermor Cozytouch
-
-## Supported devices
+- Ubiwizz
Over 6000 devices from 60 brands are compatible with the Overkiz platform. This integration will retrieve your devices and map them to the relevant Home Assistant platforms.
{% include integrations/config_flow.md %}
+The Overkiz integration supports both the Overkiz cloud API and the local API (only supported by some Somfy hubs). For compatible Somfy hubs, you can connect locally, allowing device control without an internet connection. Start by selecting the server or app that you use to control your devices.
+
+### Login to Overkiz (Cloud API)
+
+{% configuration_basic %}
+"Username":
+ description: "Username for your Overkiz cloud account (account you use in your IoT app)."
+Password:
+ description: "Password for your Overkiz cloud account (account you use in your IoT app)."
+{% endconfiguration_basic %}
+
+### Login to Overkiz (Local API)
+
+To use the local API, you will need to activate the [Somfy TaHoma Developer Mode](https://github.com/Somfy-Developer/Somfy-TaHoma-Developer-Mode?tab=readme-ov-file#getting-started) via the Somfy website. Activating this mode will enable a local API on your TaHoma box. Your cloud credentials are required to negotiate a token with the cloud API to authenticate your calls to the local API. This is a one-time setup and the token will be stored in your Home Assistant configuration.
+
+Scenarios and climate entities are **not** supported via the Somfy TaHoma Developer Mode.
+
+{% configuration_basic %}
+"Host":
+ description: "The hostname or IP address of your Overkiz hub. The hostname is your Gateway PIN + .local:8443 (e.g. 1234-4567-8912.local)."
+"Username":
+ description: "Username for your Overkiz cloud account (account you use in your IoT app)."
+Password:
+ description: "Password for your Overkiz cloud account (account you use in your IoT app)."
+Verify SSL:
+ description: "Verify the SSL certificate of your hub. This option is available only when connecting via the hostname."
+{% endconfiguration_basic %}
+
+## Data updates
+
+This integration retrieves data from Overkiz every 30 seconds to ensure timely updates. If you only have stateless devices (RTS protocol), the integration will poll for new data every hour to reduce unnecessary load on the Overkiz API.
+
## Known limitations
### Zigbee, Z-Wave, Hue, and Sonos devices not supported
-Even though most Overkiz hubs support adding Zigbee, Z-Wave, Hue, and Sonos devices, this isn't supported in the Overkiz integration. All these platforms have native integrations in Home Assistant which are more stable and feature-rich.
+Even though most Overkiz hubs support adding Zigbee, Z-Wave, Hue, and Sonos devices, this isn't supported in the Overkiz integration. All these platforms have native integrations in Home Assistant, which provide more frequent state updates and are more feature-rich.
### Stateless RTS covers
-Covers that use the RTS protocol are stateless and do not report their state back to the hub. This means that Home Assistant will not know the state of the device after it has been controlled.
-
-If you only control your RTS cover from Home Assistant, you can use the [template cover](/integrations/cover.template/) to create a stateful cover entity. This will allow you to keep track of the current state (open or closed) and use the cover in automations and scenes.
+RTS covers do not report their state back to the hub, so Home Assistant cannot track their state after they are controlled. If you only control your RTS cover from Home Assistant, you can use the [template cover](/integrations/cover.template/) to create a stateful cover entity. This will help you track the current state (open or closed) and use the cover in automations and scenes.
```yaml
cover:
@@ -106,6 +137,12 @@ cover:
### Overkiz API limits
+**Device state changes are not broadcasted for all devices**
+
+Some Overkiz devices do not broadcast status changes. To update their status, the vendor's app (for example, Somfy TaHoma) requests a status update when opened. The app then broadcasts the states via events that the Overkiz integration also listens to. The Overkiz integration cannot replicate this behavior, as it does not know when you access the Home Assistant dashboard or run automations.
+
+As a result, the state of some Overkiz devices in Home Assistant may not always be up-to-date.
+
**Server busy, please try again later. (Too many executions)**
During peak hours, it could happen that the Overkiz platform is unable to execute your command. The integration will try to retry this command, however, this is not guaranteed to succeed.
@@ -114,18 +151,22 @@ During peak hours, it could happen that the Overkiz platform is unable to execut
The Overkiz API only supports 10 requests in its execution queue. If you try to command more devices at the same time, for example with a group, this will fail with `EXEC_QUEUE_FULL`. To work around this, you can create a scenario in the corresponding application and call that scenario instead after syncing it in the integration.
-### Internet connectivity required
+### Device support via the local API
-This integration communicates via the cloud-based Overkiz API in most cases. Depending on your hub and devices, there are options which communicate over your local network.
+Various sensors, scenarios, and climate entities are **not** supported via the Somfy TaHoma Developer Mode due to limitations of the local API. If your device functions with the Cloud API but not with the Local API, this is an inherent limitation of the Local API and cannot be resolved.
-#### Local API via Somfy TaHoma Developer Mode
+### Device support via HomeKit
-The Somfy TaHoma v2, Somfy Connexoon and Somfy TaHoma Switch support the [Somfy TaHoma Developer Mode (local API)](https://github.com/Somfy-Developer/Somfy-TaHoma-Developer-Mode). During setup, you can choose **Local API**. This allows you to use the local API in Home Assistant. Climate devices are not supported via the Somfy TaHoma Developer Mode.
+If your hub (e.g. Somfy Connectivity Kit) supports HomeKit, a sensor named **HomeKit Setup Code** will be added to Home Assistant. To configure the [HomeKit Controller](/integrations/homekit_controller/) integration for local control, follow these steps:
-#### Local API via HomeKit Controller
+1. Locate the **HomeKit Setup Code** sensor in Home Assistant.
+2. Retrieve the setup code value from the sensor.
+3. Use this setup code to configure the [HomeKit Controller](/integrations/homekit_controller/) integration in Home Assistant.
-If your hub (e.g. Somfy Connectivity Kit) supports HomeKit natively, your setup code will be added as a sensor in Home Assistant. Find your hub in Home Assistant and retrieve the value from the **HomeKit Setup Code** sensor. You can now configure the [HomeKit Controller](/integrations/homekit_controller/) integration in Home Assistant and benefit from local support. Only a [limited set of devices is supported](https://service.somfy.com/downloads/nl_v5/tahoma-homekitcompatibilitylist_eng.pdf).
+Please note that only a [limited set of devices is supported via HomeKit](https://service.somfy.com/downloads/nl_v5/tahoma-homekitcompatibilitylist_eng.pdf).
-#### Local API via Velux KLF200 hub
+## Removing the integration
-If you are only using Somfy IO-compatible devices, you could purchase a Velux KLF200 hub and use [the Velux integration](/integrations/velux/) which has a local API.
+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/palazzetti.markdown b/source/_integrations/palazzetti.markdown
index 6f185ba1b4c..29cb2659bc7 100644
--- a/source/_integrations/palazzetti.markdown
+++ b/source/_integrations/palazzetti.markdown
@@ -12,6 +12,7 @@ ha_domain: palazzetti
ha_platforms:
- climate
- diagnostics
+ - number
- sensor
ha_integration_type: device
ha_dhcp: true
@@ -19,10 +20,25 @@ ha_dhcp: true
The **Palazzetti** {% term integration %} integrates the [Palazzetti](https://palazzettigroup.com/)
stoves equipped with a [Connection Box](https://palazzettigroup.com/research-and-development/app/).
-It is accessing the device's local API.
+It is accessing the device's local API. [WPalaControl](https://github.com/Domochip/WPalaControl)
+devices have a compatible API and are supported by this integration too.
+
+## Prerequisites
+
+- You need the Connection Box bridge or WPalaControl to be added to a network accessible to Home Assistant.
+- You either need to:
+ - know the IP address or hostname of the Connection Box or WPalaControl on the network.
+ - or configure the Connection Box or WPalaControl with DHCP on the same network as Home Assistant.
{% include integrations/config_flow.md %}
+{% configuration_basic %}
+Host:
+ description: "The IP address or hostname of your Connection Box. You can find it in your router or in the Palazzetti app under **Settings** > **Diagnostic information** > **Ethernet** or **Wifi**."
+ required: true
+ type: string
+{% endconfiguration_basic %}
+
## Climate
The Palazzetti integration offers a climate entity that allows you to read the
@@ -106,4 +122,61 @@ Temperature sensors:
Fuel Sensors:
- Pellet quantity (kg - cumulative quantity consumed)
-- Pellet level (cm - current level)
\ No newline at end of file
+- Pellet level (cm - current level)
+
+## Possible use-cases
+
+- Control the operations, temperature, and fans.
+- Get alerts when the pellet level is low or empty, or on stove errors.
+- Auto start or stop the stove based on presence.
+
+## Automations
+
+Get started quickly with these automation examples.
+
+### Automatically lower the temperature when the last person leaves home
+
+{% details "Example YAML configuration" %}
+
+{% raw %}
+
+```yaml
+alias: "Lower the temperature when last person leaves"
+description: "Lower the temperature when last person leaves the home"
+mode: single
+triggers:
+ - trigger: state
+ entity_id:
+ - zone.home
+ to: 0
+actions:
+ - action: climate.set_temperature
+ data:
+ temperature: 16
+ target:
+ entity_id: climate.my_stove
+```
+
+{% endraw %} {% enddetails %}
+
+## Known limitations
+
+This integration does **not** yet support the following features and sensors:
+
+- Light and Door entities on stove models equipped with them.
+- Fan control other than the main one.
+- Combustion power control.
+
+## Troubleshooting
+
+{% details "On and off switch does not always work" %}
+During certain operations, it is not possible to turn the stove on or off. This action is available
+only when the status of the stove is in one of the following states: `off`, `off_timer`, `burning`, `burning_mod`, `cool_fluid`,
+`clean_fire`, `cooling`, `ecomode`, `firewood_finished`.
+{% enddetails %}
+
+## 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/peblar.markdown b/source/_integrations/peblar.markdown
index 0ef650f7e64..62d57222b75 100644
--- a/source/_integrations/peblar.markdown
+++ b/source/_integrations/peblar.markdown
@@ -4,6 +4,7 @@ description: Instructions on how to integrate Peblar Rocksolid EV Charger with H
ha_category:
- Car
- Energy
+ - Update
ha_release: 2025.1
ha_iot_class: Local Polling
ha_config_flow: true
@@ -11,12 +12,17 @@ ha_codeowners:
- '@frenck'
ha_domain: peblar
ha_platforms:
+ - binary_sensor
+ - button
+ - diagnostics
+ - number
- select
- sensor
+ - switch
- update
ha_integration_type: device
ha_zeroconf: true
-ha_quality_scale: bronze
+ha_quality_scale: platinum
---
The Peblar {% term integration %} integrates your [Peblar Rocksolid EV Charger]
@@ -90,7 +96,7 @@ web interface for more information about the error or warning.
{% important %}
These binary sensors are disabled by default. If you want to use them, you need
-to enable first. See the [enabling or disabling entities](/common-tasks/general/#enabling-or-disabling-entities)
+to enable them first. See the [enabling or disabling entities](/common-tasks/general/#enabling-or-disabling-entities)
documentation for information on how to do this.
{% endimportant %}
@@ -107,13 +113,13 @@ the charger. The following buttons are available:
{% important %}
These buttons are disabled by default. If you want to use them, you need
-to enable first. See the [enabling or disabling entities](/common-tasks/general/#enabling-or-disabling-entities)
+to enable them first. See the [enabling or disabling entities](/common-tasks/general/#enabling-or-disabling-entities)
documentation for information on how to do this.
{% endimportant %}
### Numbers
-This integration provides a singles number entity: **Charge limit**.
+This integration provides a single number entity: **Charge limit**.
Using this entity, you can set the maximum current the charger can provide to
your electric vehicle. The value of this entity is in amperes (A).
@@ -250,7 +256,7 @@ as a device.
{% important %}
The sensors marked with \*\* are disabled by default. If you want to use them,
-you need to enable first. See the [enabling or disabling entities](/common-tasks/general/#enabling-or-disabling-entities)
+you need to enable them first. See the [enabling or disabling entities](/common-tasks/general/#enabling-or-disabling-entities)
documentation for information on how to do this.
{% endimportant %}
@@ -323,7 +329,7 @@ automation:
- alias: "Peblar software update available"
triggers:
- trigger: state
- entity_id: sensor.peblar_firmware
+ entity_id: update.peblar_firmware
from: "off"
to: "on"
@@ -344,7 +350,7 @@ detects an error or raises a warning.
```yaml
automation:
- - alias: "Peblar software update available"
+ - alias: "Peblar issue detected"
triggers:
- trigger: state
entity_id:
@@ -372,15 +378,15 @@ automation:
Not all functionality of the Peblar charger is available through this
integration. The following limitations are known:
-- The Peblar APIs currently aren't communicating the charger is awaiting
+- The Peblar APIs currently aren't communicating that the charger is awaiting
authentication (for example, using an RFID card) before it can start
- charging. As a result, you will see an suspended charging status in Home
+ charging. As a result, you will see a suspended charging status in Home
Assistant, while the charger is awaiting authentication.
- Home Assistant uses and manages the charger's REST API. This means that
the use of this integration will enable the REST API on the charger
automatically. It is possible to use the REST API directly in parallel
with this integration.
-- Peblar is also sold as white-label products, like the [CoolBlue BlueBuilt](https://www.coolblue.nl/en/charging-stations/our-charging-stations).
+- Peblar is also sold as white-label products, like the [CoolBlue BlueBuilt](https://www.coolblue.nl/en/charging-stations/our-charging-stations), [Eneco Connectricยฎ](https://www.eneco.nl/campagnes/laadpalen/) or [Shell Recharge](https://www.shell.nl/b2b-business/shell-fleet-solutions/electric-charging/at-home-ev-charging.html#thuisladers).
This integration is tested with the Peblar branded products, and it is unknown
if it works with white-label products.
diff --git a/source/_integrations/pinecil.markdown b/source/_integrations/pinecil.markdown
index abea23d09a1..b2fc10df268 100644
--- a/source/_integrations/pinecil.markdown
+++ b/source/_integrations/pinecil.markdown
@@ -2,7 +2,9 @@
title: Pinecil
description: Connect and control your Pinecil devices using the IronOS integration
ha_category:
+ - Binary sensor
- Number
+ - Select
- Sensor
- Update
ha_release: 2024.8
@@ -14,7 +16,9 @@ ha_codeowners:
- '@tr4nt0r'
ha_config_flow: true
ha_platforms:
+ - binary_sensor
- number
+ - select
- sensor
- update
ha_iot_class: Local Polling
diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown
index b72b652da89..1dbc71b3f0c 100644
--- a/source/_integrations/plugwise.markdown
+++ b/source/_integrations/plugwise.markdown
@@ -1,6 +1,6 @@
---
title: Plugwise
-description: Plugwise Smile platform integration.
+description: Plugwise Gateway platform integration.
ha_category:
- Binary sensor
- Button
@@ -30,56 +30,135 @@ ha_platforms:
ha_integration_type: hub
---
-This enables [Plugwise](https://www.plugwise.com) integrations with a central Smile gateway to be integrated. This integration talks locally to your **Smile** interface, and you will need its password and IP address.
-The platform supports [Anna](https://www.plugwise.com/en_US/products/anna), [Adam (zonecontrol)](https://www.plugwise.com/en_US/zonecontrol), [P1](https://www.plugwise.com/en_US/products/smile-p1) Smile products and the Stretch products (not in sale). See below list for more details.
+[Plugwise](https://www.plugwise.com) provides smart home devices that allow you to monitor and control your climate, energy (including gas) consumption, and energy production. The energy information can be used for the [energy dashboard](/home-energy-management).
-Platforms available - depending on your Smile and setup include:
-
- - `climate` (for the stand-alone Anna, for Adam, a climate entity is shown for each zone containing devices like an Anna or another type of wired-thermostat, Jip or Lisa combined with one or more Tom/Floor devices)
- - `binary_sensor` (for showing the status of e.g. domestic hot water heating or secondary heater)
- - `button` (for the Adam and the non-legacy Anna and P1 gateways)
- - `number` (for changing a boiler setpoint, a temperature offset)
- - `sensor` (for all relevant products including the Smile P1)
- - `select` (for changing a thermostat schedule, a regulation mode (Adam only))
- - `switch` (for Plugs connected to Adam, or Circles and Stealths connected to a Stretch)
+This integration supports one or multiple Plugwise Gateways connected to your network. You can connect to these gateways using your browser, the Plugwise App, or Home Assistant. There are 4 [supported](#supported-devices) types of gateways:
+- Full zonecontrol using the [Adam](https://www.plugwise.com/en_US/zonecontrol) using [additional devices](#adam) such as zone thermostats, smart valves and smart-plugs.
+- A stand-alone smart thermostat called [Anna](https://www.plugwise.com/en_US/products/anna).
+- For power and gas-usage monitoring there is a device simply called the [P1](https://www.plugwise.com/en_US/products/smile-p1).
+- Although no longer sold, there also is support for Stretch, a gateway to create network connectivity for their older power products.
## Pre-requisites
-The Plugwise Smile(s) in your network will be automatically discovered and shown on the integrations dashboard. All you need is the Smile ID as its password, which is an 8-character string printed on the sticker on the bottom of your Smile. Repeat this for each individual Smile.
+Plugwise gateways on your network are automatically discovered and displayed on the integrations dashboard. Each gateway requires its unique 8-character ID, found on a sticker at the bottom, as its password. Repeat this process for each gateway.
{% include integrations/config_flow.md %}
{% configuration_basic %}
Host:
- description: "The hostname or IP address of your Smile. For example: `192.168.1.25`. You can find it in your router or in the Plugwise app using the **Settings** icon (☰) -> **System** -> **Network**. If you are looking for a different device in the Plugwise App, on the main screen first select **Gateways** -> the Smile of your choice, and then follow the previous instruction. Normally, the Smile(s) are automatically discovered, and you don't have to provide the hostname or IP address."
+ description: "The hostname or IP address of your gateway. For example: `192.168.1.25`. You can find it in your router or in the Plugwise app using the **Settings** icon (☰) -> **System** -> **Network**. In the Plugwise App, to locate a specific device, select **Gateways** on the main screen, choose your desired gateway, and then follow the previous instructions. Normally, the gateway(s) are automatically discovered, and you don't have to provide the hostname or IP address."
Username:
- description: "Username to log in to the Smile. This should be just `smile` - or `stretch` for a Stretch."
+ description: "Username to log in to the gateway. This should be 'smile' for most devices, or 'stretch' for a Stretch."
Password:
- description: "This is the password (i.e. Smile ID) printed on the sticker on the back of your Smile (i.e. Adam, Smile-T, or P1) and should be 8 characters long."
+ description: "Each gateway requires its unique 8-character ID, found on a sticker at the bottom, as its password."
{% endconfiguration_basic %}
-### Further configuration
+### Schedule Management
-For a thermostat, the active schedule can be deactivated or reactivated via the climate card. Please note, that when no schedule is active, one must first be activated in the Plugwise App. Once that has been done, the Plugwise Integration can manage future operations.
+1. **Initial Setup**: First, activate a schedule using the Plugwise App or browser.
+2. **Control via Home Assistant**:
+ - Use the climate card to activate/deactivate schedules.
+ - 'Auto' mode indicates the schedule is active.
+ - 'Heat', 'Cool' or 'Heat_cool' modes signify the schedule is inactive.
+3. **Changing Schedules**: Use the thermostat [select](#change-climate-schedule) entity.
-Auto means the schedule is active, and Heat means it's not active. The active thermostat schedule can be changed via the connected thermostat select entity. Please note that only schedules with two or more schedule points will be shown as select options.
+{% note %}
+Only schedules with two or more schedule points will appear as options.
+{% endnote %}
-## Entities
+## Supported functionality
-This integration will show all Plugwise devices (like hardware devices, multi-thermostat climate-zones, and virtual switchgroups) present in your Plugwise configuration. In addition, you will see a Gateway device representing your central Plugwise gateway (i.e., the Smile Anna, Smile P1, Adam or Stretch).
+This integration displays all Plugwise devices in your configuration, including hardware devices, multi-thermostat climate zones, and virtual switch groups. Additionally, a device representing your Plugwise gateway (e.g., Adam, Smile-T, or P1) will be visible.
-For example, if you have an Adam setup with a Lisa named 'Living' and a Tom named 'Bathroom', these will show up as individual devices. The heating/cooling device connected to your Smile will be shown as 'OpenTherm' or 'OnOff', depending on how the Smile communicates with the device. If you have Plugs (as in, pluggable switches connecting to an Adam) those will be shown as devices as well.
+For example, if you have an Adam setup with a Lisa named 'Living' and a Tom named 'Bathroom', these will show up as individual devices. The heating/cooling device connected to your gateway will be shown as 'OpenTherm' or 'OnOff', depending on how the gateway communicates with the device. If you have Plugs (as in, pluggable switches connecting to an Adam) or Aqara Smart Plugs, those will be shown as devices as well.
-Under each device there will be entities shown like binary_sensors, sensors, etc. depending on the capabilities of the device: for instance centralized measurements such as 'power' for a P1, 'outdoor_temperature' on Anna or Adam will be assigned to your gateway device. Heating/cooling device measurements such as 'boiler_temperature' will be assigned to the OpenTherm/OnOff device.
+Each device will list entities such as `binary sensors`, `sensors`, etc., depending on its capabilities: for instance, centralized measurements such as `power` for a P1, `outdoor_temperature` on Anna or Adam will be assigned to your gateway device. Heating/cooling device measurements such as `boiler_temperature` will be assigned to the OpenTherm/OnOff device.
+
+### Climate entities
+
+#### Binary sensors
+
+Depending on your setup, one or more binary sensors will provide the state of your connected elements. Examples include:
+
+- **Cooling** & **Heating**
+ - **Description**: Indicates if your system is actively cooling or heating.
+- **DHW State**
+ - **Description**: Indicates active heating of domestic hot water.
+- **Flame State**
+ - **Description**: If gas is being consumed by your heater, i.e., firing for space or DHW-heating.
+
+#### Numbers
+
+Modifying specific number-based settings allows you to fine-tune your setup.
+
+- **Maximum boiler temperature setpoint**
+ - **Description**: Adjust the maximum temperature for secondary heater.
+- **Domestic hot water setpoint**
+ - **Description**: Adjust the temperature for your domestic hot water.
+- **Temperature offset**
+ - **Description**: Fine-tune the perceived temperature.
+
+#### Sensors
+
+A generous number of sensors is provided for your climate setup. Examples include:
+
+- **Setpoint**
+ - **Description**: The setpoint for the current zone (Adam) or generic (Anna).
+- **Indoor temperature**
+ - **Description**: For Anna, Lisa or Jip this will show the temperature measured at the specific thermostat.
+- **Outdoor temperature**
+ - **Description**: The temperature your climate gateway retrieves online.
+- **Outdoor air temperature**
+ - **Description**: The temperature reported by the sensor present in the outdoor unit of your HVAC system, such as a heat pump.
+
+#### Selects
+
+- **Thermostat schedule**
+ - **Description**: Select between available schedules, generic (Anna) or for the current zone (Adam).
+ - **Remark**: Please check the [further configuration](#further-configuration) for requirements on configuring schedules.
+
+#### Switches
+
+- **Cooling**
+ - **Description**: Toggle if cooling should be enabled.
+- **DHW Comfort Mode**
+ - **Description**: Toggle comfort mode for domestic hot water.
+
+### Power and gas entities
+
+#### Sensors
+
+A generous number of sensors is provided. Examples include:
+
+- **Electricity consumed point**
+ - **Description**: Electricity (in Watt) consumed currently by a phase (P1) or a plug.
+ - **Gateways**: Adam, P1 or Stretch.
+- **Gas Consumed Interval**
+ - **Description**: The gas consumed since the last interval.
+ - **Gateways**: P1.
+- **P1 Net Electricity Point**
+ - **Description**: Your netto electricity use at this time, can be negative when producing energy, i.e. though solar panels.
+ - **Gateways**: P1.
+- **P1 Electricity Produced off-peak cumulative**
+ - **Description**: The total produced electricity during off-peak.
+ - **Gateways**: P1.
+
+#### Switches
+
+- **Relay**
+ - **Description**: Switch a plug on or off
+ - **Gateways**: Adam, P1 or Stretch.
## Data updates
-The interval which the integration fetches data from the Smile depends on the device:
+The interval at which the integration fetches data from the gateway depends on the device-type.
-- Power entities, such as the P1, will be refreshed every 10 seconds.
-- Climate entities will be refreshed every 60 seconds.
-- Stretch entities will be refreshed every 60 seconds.
+|Device-type|Interval|
+--- | ---
+| Climate entities |60 seconds|
+| Energy and gas entities |10 seconds|
+| Stretch entities |60 seconds|
## Removing the integration
@@ -236,33 +315,120 @@ script:
preset_mode: asleep
```
-### Supported devices
+## Supported devices
-The current implementation of the Python module (Plugwise-Smile) includes:
+### Adam
-Adam (zone_control) with On/Off, OpenTherm, and Loria/Thermastage heating and cooling support:
+A complete zone control system also known as [Adam HA](https://www.plugwise.com/en_US/zonecontrol), supporting:
- - v3.x
- - v2.3
+- On/Off, OpenTherm heating and cooling support.
+- Running firmwares v3.x or v2.3.
+- Additional devices:
+ - Zone thermostats such as Lisa or Anna (see warning below on Anna),
+ - A temperature sensor, Jip,
+ - Valve controllers called Floor or Tom,
+ - An under-floor heating controller Koen (note: a Koen always comes with a Plug, which is the active part),
+ - Smart switches, either Plug or Aqara Smart Plug.
- - Devices supported are Anna, Lisa, Jip, Floor, Tom, Plug, Aqara Smart Plug, and Koen (a Koen always comes with a Plug, the active part)
+{% note %}
+You can also use the Adam SA (Stand-alone, no Zigbee stick present) to make your regular OpenTherm thermostat smart.
+{% endnote %}
-Anna (thermostat) with OnOff, OpenTherm heating, and Elga and Loria/Thermastage with heating and cooling support:
+### Anna
- - v4.x
- - v3.x
- - v1.x
+A [smart thermostat](https://www.plugwise.com/en_US/products/anna), supporting:
-On the Elga, the cooling-mode can only be turned on, or off, via a switch present on the device, not via a toggle in the Plugwise App.
-Please make sure to reload the Plugwise integration after the cooling-mode-switch is turned off after being on, or the other way around. This will ensure that the Plugwise integration is being adapted to the change in function of the Elga.
+- On/Off, OpenTherm heating and cooling support.
+- Running firmware v4.x, v3.x or v1.x.
-Smile P1 (DSMR):
+### P1 (DSMR)
- - v4.x
- - v3.x
- - v2.x
+A [P1](https://www.plugwise.com/en_US/products/smile-p1) smart meter monitor for the single- or multi-phase grid power connection to your home including gas usage monitoring. Running firmware v4.x, v3.x or v2.x.
-Stretch (power switches):
+### Stretch (end-of-sale)
+
+For controlling and monitoring legacy power switches, such as the Circles or Stealths, with v3.x or v2.x Stretch firmware.
+
+### Unsupported devices
+
+#### Anna P1
+
+A smart thermostat [combined](https://www.plugwise.com/en_US/products/anna-p1) with an energy monitor can transform the way you manage energy. If your solar setup generates surplus energy and you're charged for it, this combination ensures that excess solar power is redirected efficiently. Powering your heat pump for instance to make the most of renewable energy. Do you have a setup like this? Weโd love to hear your experience!
+
+#### Stick
+
+Plugwise formerly sold power-based products comprised of a USB stick, as the controller, and smart plugs (amongst a few other items). This integration does not support the USB-stick. Reuse of the these products, such as Circles and Stealths using a Stretch or an Adam is supported. Work for USB support is in development by the community, but not ready to become a formal Home Assistant integration just yet.
- v3.x
- v2.x
+
+## Troubleshooting
+
+### Accessing the local device
+
+If you need to configure the gateway directly, without using the Plugwise App, you can find the link to your device by:
+
+1. Go to {% my integrations title="**Settings** > **Devices & services**" %}, and select your integration.
+2. If you have more than one Plugwise gateway, select the one to configure.
+3. Select the gateway device, this should be called 'Adam', 'Stretch' or contain 'Smile' in its name.
+4. On the integration entry, choose to open the configuration URL left of the {% icon "mdi:dots-vertical" %} icon.
+5. A new window/tab will open, enter 'smile' (or 'stretch') as the username and the ID, from the sticker on the back, as the password.
+6. Consult the manual or click the 'search' button on the [Plugwise Support](https://plugwise.com/support/) page for interactive help.
+
+### Adjusting the update interval
+
+Please note that the [default intervals](#data-updates) are considered best practice and according to how Plugwise normally updates their data. Updating too frequently may induce considerable load on your gateway(s) resulting in unexpected results or missing data.
+
+{% include common-tasks/define_custom_polling.md %}
+
+### Diagnostic data
+
+If you need to create an issue to report a bug or want to inspect diagnostic data, use the below method to retrieve diagnostics:
+
+1. Go to {% my integrations title="**Settings** > **Devices & services**" %}, and select your integration.
+2. If you have more than one Plugwise gateway, select the gateway that is experiencing issues.
+3. Select the gateway device, this should be called 'Adam', 'Stretch' or contain 'Smile' in its name.
+4. On the integration entry, select the {% icon "mdi:dots-vertical" %}.
+ - Then, select **Download diagnostics** and a JSON file will be downloaded.
+5. You can inspect the downloaded file or, when requested, upload it to your issue report.
+
+### Rebooting your gateway
+
+For each gateway, there will be a reboot button available in your integration.
+
+1. Go to {% my integrations title="**Settings** > **Devices & services**" %}, and select your integration.
+2. If you have more than one Plugwise Smile, select the gateway that is experiencing issues.
+3. Select the gateway device, this should be called 'Adam', 'Stretch' or contain 'Smile' in its name.
+4. On the integration entry, look for the 'Reboot' button to press in the **Configuration** section.
+
+## Known limitations
+
+### Schedule configuration and pre-requisites
+
+Creation, modification or deleting of climate schedules is not supported through this integration. We recommend using the Plugwise App or visit the local device to configure schedules. See [accessing the local device](#accessing-the-local-device) above on how to access the local device from Home Assistant.
+
+To display your schedule as a valid `select` option for this integration, ensure that the schedule has a minimal of two schedule points.
+
+### Anna connected to Adam
+
+If you are using your Anna as part of your Adam zone control system, it becomes a zone thermostat, and cannot be configured as a smart thermostat. The integration will not discover your Anna or allow manual configuration.
+
+### Anna with Elga
+
+The cooling mode can only be toggled via a **physical switch** on the device (not through a toggle in the Plugwise App or using Home Assistant).
+
+The change in cooling mode should be detected by Home Assistant. If not, please try to **reload** the Plugwise integration as indicated below and report your findings.
+
+1. Create an issue including your [diagnostic data](#diagnostic-data).
+2. Go to {% my integrations title="**Settings** > **Devices & services**" %}, and select your integration.
+3. On the "**Hubs**" page, use the {% icon "mdi:dots-vertical" %} icon next to your Anna and choose "**Reload**".
+
+### Vacation preset
+
+The `vacation` preset is only available on an Anna. Adam has a vacation-mode (called Action in the Plugwise App) that disables the active schedule and sets the vacation-preset for all zones.
+
+Also, there's a pause-mode that disables the active schedule and sets the away-preset for all zones.
+
+### Idling climate actions
+
+You can only stop climate actions on an Adam, see [turn on / turn off](#turn-on--turn-off). An alternative could be to adjust your [preset mode](#set-preset-mode) to `no_frost` to stop any heating actions.
diff --git a/source/_integrations/powerfox.markdown b/source/_integrations/powerfox.markdown
index f363d0f62d6..90227136b58 100644
--- a/source/_integrations/powerfox.markdown
+++ b/source/_integrations/powerfox.markdown
@@ -11,8 +11,11 @@ ha_codeowners:
- '@klaasnicolaas'
ha_domain: powerfox
ha_platforms:
+ - diagnostics
- sensor
ha_integration_type: integration
+ha_quality_scale: silver
+ha_zeroconf: true
---
The **Powerfox** {% term integration %} allows you to gather data from your [Poweropti](https://shop.powerfox.energy/collections/frontpage) devices, by using their cloud API and fetch the data in Home Assistant.
@@ -37,7 +40,7 @@ Not all Poweropti devices are supported currently. Check the list below to see i
| Device | Type | Supported |
| --------------------- | ----------- | ---------- |
| PA 201901 / PA 201902 | Power meter | Yes |
-| PB 202001 | Power meter | Not tested |
+| PB 202001 | Power meter | Yes |
| WA 201902 | Water meter | Yes |
| Powerfox FLOW | Gas meter | No |
| HA 201902 | Heat meter | Yes |
diff --git a/source/_integrations/renault.markdown b/source/_integrations/renault.markdown
index 8767de587f8..fc6ca17872d 100644
--- a/source/_integrations/renault.markdown
+++ b/source/_integrations/renault.markdown
@@ -21,6 +21,7 @@ ha_platforms:
- select
- sensor
ha_integration_type: hub
+ha_quality_scale: silver
---
The Renault integration offers integration with the **MyRenault** cloud service and provides sensors such as charger state and temperature.
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index 14cfed9a001..4ffef4b1639 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -362,8 +362,8 @@ The following hubs/NVRs have been tested and confirmed to work with battery-powe
- [Reolink Home Hub](https://reolink.com/product/reolink-home-hub/)
- [Reolink Home Hub Pro](https://reolink.com/product/reolink-home-hub-pro/)
-- [RLN8-410 NVR](https://reolink.com/product/rln8-410/) (only the latest hardware version N7MB01, older versions might receive the required firmware update later)
-- [RLN16-410 NVR](https://reolink.com/product/rln16-410/) (only the latest hardware version N6MB01, older versions might receive the required firmware update later)
+- [RLN8-410 NVR](https://reolink.com/product/rln8-410/) (only hardware versions N7MB01, N3MB01, N2MB02, or H3MB18. Hardware versions H3MB02 and H3MB16 did not get firmware updates since 2022)
+- [RLN16-410 NVR](https://reolink.com/product/rln16-410/) (only hardware versions N6MB01 or H3MB18. Hardware version H3MB02 did not get firmware updates since 2022)
- [RLN36 NVR](https://reolink.com/product/rln36/)
- [NVS8 NVR](https://reolink.com/product/nvs8/) (Retail version of RLN8)
- [NVS16 NVR](https://reolink.com/product/nvs16/) (Retail version of RLN16)
@@ -457,7 +457,7 @@ Set up the Reolink integration in Home Assistant using the credentials you set i
Removing a directly connected camera/NVR/Home Hub can be done by removing the integration following these steps:
-{% include integrations/remove_device_service.md %}
+{% include integrations/remove_device_service_steps.md %}
This will also remove all cameras/chimes connected to the NVR/Home Hub from Home Assistant.
@@ -494,11 +494,135 @@ For example, you can place arrow buttons on the card to [control the camera](/da
You can receive rich notifications on your phone when someone rings a Reolink doorbell or a Reolink camera detects an event like motion or a person.
+
+
+
+
+
+{% details "Rich notification tutorial" icon="mdi:cursor-hand" %}
+
+Prerequisites:
+
+- This [Reolink integration](#configuration)
+- [Android or iOS companion app](https://companion.home-assistant.io/docs/getting_started#setting-up)
+- [Remote access to Home Assistant](https://www.home-assistant.io/docs/configuration/remote/). Although you can receive text notifications without remote access, to see the camera image in the notification (rich notification), the phone needs to be able to reach Home Assistant. The rich notification will always work, even without remote access, when the phone is on the same network as Home Assistant.
+
+1. In order to receive such a rich notification, we are going to make an automation in Home Assistant. In Home Assistant go to {% my automations title="**Settings** > **Automations & scenes**" %} and select **Create automation** > **Create new automation**.
+
+
+
+
+
+
+
+ Then under **Entity**, select the binary sensor from the drop-down list corresponding to the camera event for which you want to receive a rich notification. For the Reolink integration the options are:
+
+ - binary_sensor.*camera name*_motion
+ - binary_sensor.*camera name*_person
+ - binary_sensor.*camera name*_vehicle
+ - binary_sensor.*camera name*_pet
+ - binary_sensor.*camera name*_animal
+ - binary_sensor.*camera name*_visitor (doorbell press)
+ - binary_sensor.*camera name*_package
+
+
+
+
+
+ Note that these entity names will be translated into the language you configured Home Assistant in. You can type to search through all your entities. You can add multiple triggers if you want to send the same message for multiple camera events like person and vehicle detection. You can also create multiple automations with different messages for each event. In this case, we chose the visitor detection for doorbell presses:
+
+3. Under **To** select the state in which the event is detected: for visitor **On** for the other sensors **Detected**:
+
+
+
+
+
+4. Under **And if** you can **optionally** limit when the notifications need to be sent.
+
+- For instance only when you are not home. The companion app will provide a device_tracker entity based on the GPS of your phone if you allow location tracking during the setup of the app. We will use this as an example but you can add as many conditions as you like:
+
+ Select **+ Add Condition** > **Entity** > **State**. Then under **Entity** select the device_tracker entity of your phone and under **State** select **Home**.
+
+
+
+
+
+- If you want to limit the amount of notifications being sent using a cooldown time you can use the following template condition:
+
+ Select **Add Condition** again > **Other conditions** > **Template**. Then, under **Value template**, type the following:
+
+{% raw %}
+
+```yaml
+{{as_timestamp(now()) - as_timestamp(state_attr('automation.reolink_push', 'last_triggered'), 0) > 30}}
+```
+
+{% endraw %}
+
+ The `automation.reolink_push` is the name of this automation, which will be set under step 7, and the `30` is the cooldown time in seconds.
+
+
+
+
+
+5. Under **Then do**, select **Add Action** > **Camera** > **Take snapshot**.
+
+
+
+
+
+ Under **Targets**, select **Choose entity** and select the camera for which you want to add the image to the notification.
+
+
+
+
+ Under **Filename**, fill in `/config/www/reolink_snapshot/last_snapshot_doorbell.jpg`. The first part `/config/www/` is absolutely necessary to allow your phone to access the saved image when it receives the notification. The reset of the folder and filename can be changed at will as long as you fill in the same filename under step 6.
+
+
+
+
+
+6. Add another action underneath by selecting **Add Action** > **Notifications** > **Send a notification via mobile_app_**.
+
+
+
+
+
+ Under **message**, type the text you want to receive in the notification. For instance, โSomeone rang the doorbellโ.
+ If you want to give the notification a title, select the **title** option. For instance, if you have multiple cameras that send you notifications, select the camera name: `Doorbell`.
+ Select the **data** option and fill in `image: /local/reolink_snapshot/last_snapshot_doorbell.jpg`. Note that `/config/www/` of the filename of step 5 now needs to be changed to `/local/`. The rest of the filename needs to be the same as in step 5.
+
+
+
+
+
+ You can personalize the notification further and even control what happens if you tap the notification on your phone, [read more about this here](https://companion.home-assistant.io/docs/notifications/notifications-basic/).
+
+7. Select **Save**, give your automation a name like `doorbell notification`, and select **save** again.
+
+
+
+ You are all set, ring your doorbell and see the notification on your phone. Remember the conditions under **And if** need to be met, otherwise you will not receive the notification.
+
+{% enddetails %}
+
### Automation ideas
- Turn on (outdoor) lights near the camera to improve image clarity at night once the camera detects a person, vehicle, or animal.
- Turn off notifications and recording when you get home (based on, e.g., geofencing) and turn it back on when you leave home.
-When someone presses the doorbell, Play ringtones on speakers (Echo Dot/Google Home/smart hubs) throughout the house.
+- When someone presses the doorbell, play ringtones on speakers (Echo Dot/Google Home/smart hubs) throughout the house.
- Pause a TV and show a notification badge on the TV when the doorbell is pressed (only when the TV is already on).
- Play the quick replay messages of a Reolink doorbell only when not home (geofencing)
- Wake up and start recording on other battery cameras nearby if one camera/motion sensor detects an event.
diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown
index adabc6b7455..19e6a9ffb89 100644
--- a/source/_integrations/roborock.markdown
+++ b/source/_integrations/roborock.markdown
@@ -229,3 +229,20 @@ target:
entity_id: vacuum.s7_roborock
```
+
+## Troubleshooting
+
+### I get a invalid or no user agreement error - but nothing shows up in my app
+
+Roborock servers require accepting a user agreement before using the API, which may block Home Assistant during setup. Additionally, the Roborock may ask you to re-enter the user agreement, even if you have entered it before. To allow Home Assistant to use the Roborock API, you need to take the following steps:
+1. Open your Roborock app.
+2. Open **Profile** > **About Us** > **User Agreement & Privacy Policy**.
+3. Hit **Revoke authorization**.
+4. Log back in and accept the policy.
+5. Reload the Roborock integration!
+
+### The integration tells me it cannot reach my vacuum and is using the cloud API and that this is not supported
+
+This integration has the capability to control your devices through the cloud API and the local API. If the local API is not reachable, it will just use the cloud API. We recommend only using the local API as it helps prevent any kind of rate-limiting.
+
+The steps needed to fix this issue are specific to your networking setup. Make sure your Home Assistant instance can communicate on port 58867 with the IP address of your vacuum. This may require changing firewall settings, VLAN configuration, etc.
diff --git a/source/_integrations/roomba.markdown b/source/_integrations/roomba.markdown
index 6c5f4db1601..d56981f0dcb 100644
--- a/source/_integrations/roomba.markdown
+++ b/source/_integrations/roomba.markdown
@@ -88,3 +88,9 @@ Use this credentials in dorita980 lib :)
```
Copy the password (everything between `=>` and `<=`, not including leading and trailing whitespace) into the Home Assistant password dialog.
+
+## Troubleshooting
+
+- **Integration wizard shows "Failed to connect" after submitting the password**: Before attempting a factory reset (which can be a cumbersome process), attempt submitting the password in the integration wizard while the Roomba is actively running (i.e. cleaning). Avoid opening the app to start a manual job to help with this. Instead, push the physical clean button on the device directly to start the manual job. This appears to resolve the issue on some models because they answer queries only while actively running.
+
+ If this still does not resolve the issue, factory reset the model.
diff --git a/source/_integrations/russound_rio.markdown b/source/_integrations/russound_rio.markdown
index 508206c3950..480c8757c0a 100644
--- a/source/_integrations/russound_rio.markdown
+++ b/source/_integrations/russound_rio.markdown
@@ -7,11 +7,13 @@ ha_release: 0.49
ha_iot_class: Local Push
ha_domain: russound_rio
ha_platforms:
+ - diagnostics
- media_player
ha_codeowners:
- '@noahhusby'
ha_config_flow: true
ha_integration_type: integration
+ha_quality_scale: silver
---
The Russound RIO {% term integration %} allows you to control Russound devices that make use of the RIO protocol.
diff --git a/source/_integrations/sabnzbd.markdown b/source/_integrations/sabnzbd.markdown
index 13e3f1273a8..108720d5301 100644
--- a/source/_integrations/sabnzbd.markdown
+++ b/source/_integrations/sabnzbd.markdown
@@ -17,6 +17,7 @@ ha_platforms:
- number
- sensor
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.
@@ -72,4 +73,4 @@ This integration will create a number entity to set the download queue speed lim
This integration follows standard integration removal. No extra steps are required.
-{% include integrations/remove_device_service.md %}
\ No newline at end of file
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown
index d8a38008830..bf9a9e8ae55 100644
--- a/source/_integrations/scrape.markdown
+++ b/source/_integrations/scrape.markdown
@@ -39,7 +39,7 @@ scrape:
- resource: https://www.home-assistant.io
sensor:
- name: "Current version"
- select: ".current-version h1"
+ select: ".release-date"
```
{% configuration %}
@@ -178,8 +178,7 @@ scrape:
- resource: https://www.home-assistant.io
sensor:
- name: Release
- select: ".current-version h1"
- value_template: '{{ value.split(":")[1] }}'
+ select: ".release-date"
```
{% endraw %}
diff --git a/source/_integrations/sensor.rest.markdown b/source/_integrations/sensor.rest.markdown
index 346285725ff..51b8b4fb04f 100644
--- a/source/_integrations/sensor.rest.markdown
+++ b/source/_integrations/sensor.rest.markdown
@@ -172,7 +172,7 @@ In this section you find some real-life examples of how to use this sensor.
### External IP address
-You can find your external IP address using the service [JSON Test](https://www.jsontest.com/) at their [http://ip.jsontest.com/](http://ip.jsontest.com/) URL.
+You can find your external IP address using the [ipify](https://www.ipify.org) service for both IPv4 and IPv6.
{% raw %}
@@ -182,6 +182,11 @@ sensor:
name: "External IP"
resource: "https://api.ipify.org/?format=json"
value_template: "{{ value_json.ip }}"
+
+ - platform: rest
+ name: "External IPv6"
+ resource: "https://api6.ipify.org/?format=json"
+ value_template: "{{ value_json.ip }}"
```
{% endraw %}
diff --git a/source/_integrations/shell_command.markdown b/source/_integrations/shell_command.markdown
index bc720ca3e7c..c19c8da114c 100644
--- a/source/_integrations/shell_command.markdown
+++ b/source/_integrations/shell_command.markdown
@@ -109,7 +109,7 @@ The following example shows how the shell command response may be used in automa
```yaml
# Create a ToDo notification based on file contents
automation:
- - alias: "run_set_ac"
+ - alias: "run_get_file_contents"
triggers:
- ...
actions:
diff --git a/source/_integrations/sky_remote.markdown b/source/_integrations/sky_remote.markdown
index 322e9a7ec90..18b9ba28269 100644
--- a/source/_integrations/sky_remote.markdown
+++ b/source/_integrations/sky_remote.markdown
@@ -22,7 +22,7 @@ The **Sky Remote** {% term integration %} lets you control a [Sky](https://www.s
## Supported models
-This integration is intended to control all Sky satellite receiver boxes with a LAN port. It will not control Sky stream pucks.
+This integration is intended to control Sky+ HD and Sky Q satellite receiver boxes with a LAN port. It will not control Sky stream pucks.
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/slide_local.markdown b/source/_integrations/slide_local.markdown
index 4991004a751..2958422c420 100644
--- a/source/_integrations/slide_local.markdown
+++ b/source/_integrations/slide_local.markdown
@@ -10,9 +10,13 @@ ha_codeowners:
- '@dontinelli'
ha_domain: slide_local
ha_platforms:
+ - button
- cover
-ha_integration_type: integration
+ - diagnostics
+ - switch
+ha_integration_type: device
ha_zeroconf: true
+ha_quality_scale: gold
---
The Slide Local {% term integration %} allows you to integrate your [Slide](https://slide.store/) devices in Home Assistant using the local API.
diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown
index 2d2b7ad3691..b0cac8beefe 100644
--- a/source/_integrations/smartthings.markdown
+++ b/source/_integrations/smartthings.markdown
@@ -31,6 +31,10 @@ ha_dhcp: true
ha_integration_type: integration
---
+{% warning %}
+The Samsung SmartThings integration currently does not allow new installations. We are working directly with Samsung to get this resolved.
+{% endwarning %}
+
SmartThings is integrated into Home Assistant through the SmartThings Cloud API. The features of this integration include:
1. Controlling SmartThings devices as Home Assistant entities ([see platforms for supported devices and capabilities](#platforms)).
@@ -61,7 +65,9 @@ The PAT is used to create a Home Assistant SmartApp in your SmartThings account
This integration requires an internet accessible incoming webhook to receive push updates from SmartThings. The preferred approach is to subscribe to [Home Assistant Cloud (Nabu Casa)](https://www.nabucasa.com/) and the integration will configure and use a cloudhook automatically. Alternatively, you will have to configure and setup an internet accessible webhook in Home Assistant as described below:
-1. Setup [remote access](/docs/configuration/remote/) via a domain name secured with SSL. *Self-signed SSL certificates are not supported by the SmartThings Cloud API.*
+1. Setup [remote access](/docs/configuration/remote/) via a domain name secured with SSL.
+ 1. *Self-signed SSL certificates are not supported by the SmartThings Cloud API.*
+ 2. *SmartThings Cloud API requires SSL connection with **maximum** TLS version 1.2*
2. Set the external URL in the Home Assistant [configuration](/integrations/homeassistant/#external_url) to the URL that Home Assistant is available on the internet (this must start with `https://`). If you do not use Nabu Casa you must configure your network to allow TCP traffic from the internet to reach the IP address and port of the device running Home Assistant.
## Setup instructions
diff --git a/source/_integrations/solax.markdown b/source/_integrations/solax.markdown
index c148a7d2a2d..6c2588f9c4f 100644
--- a/source/_integrations/solax.markdown
+++ b/source/_integrations/solax.markdown
@@ -46,16 +46,3 @@ There are generally at least 3 sensors from your inverter that you need to confi
- The consumption sensor (in kWh) for the **Grid Consumption**.
- The feed-in sensor (in kWh) for the **Return to grid**, for example, the solar panel energy you do not consume and return to the grid instead.
- The on-grid yield sensor (in kWh) for the **Solar production**.
-
-### Note
-
-Inverter models with newer firmware (and also those using devices like PocketWifi) no longer expose an API when connected to your wireless network, they do however continue to expose it on their own broadcasted SSID. To use this sensor in this case it is necessary to set up a reverse proxy with something like NGINX and use a Raspberry Pi (or similar) with two network connections (one being Wi-Fi that connects to the inverters SSID).
-
-
-Example NGINX configuration
-
-```text
-location / {
- proxy_pass http://5.8.8.8;
-}
-```
diff --git a/source/_integrations/ssdp.markdown b/source/_integrations/ssdp.markdown
index 1384463fb9f..7ffa6516953 100644
--- a/source/_integrations/ssdp.markdown
+++ b/source/_integrations/ssdp.markdown
@@ -38,8 +38,11 @@ The following integrations are automatically discovered by the SSDP integration:
- [Hyperion](/integrations/hyperion/)
- [Keenetic NDMS2 Router](/integrations/keenetic_ndms2/)
- [Konnected.io](/integrations/konnected/)
+ - [LG webOS TV](/integrations/webostv/)
- [Logitech Harmony](/integrations/harmony/)
+ - [Lutron Casรฉta](/integrations/lutron_caseta/)
- [OctoPrint](/integrations/octoprint/)
+ - [Onkyo](/integrations/onkyo/)
- [Philips Hue](/integrations/hue/)
- [Roku](/integrations/roku/)
- [Samsung SyncThru Printer](/integrations/syncthru/)
diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown
index 421b506172c..cfe89d538ae 100644
--- a/source/_integrations/statistics.markdown
+++ b/source/_integrations/statistics.markdown
@@ -10,6 +10,7 @@ ha_release: '0.30'
ha_quality_scale: internal
ha_codeowners:
- '@ThomDietrich'
+ - '@gjohansson-ST'
ha_domain: statistics
ha_config_flow: true
ha_platforms:
diff --git a/source/_integrations/stiebel_eltron.markdown b/source/_integrations/stiebel_eltron.markdown
index 95b6078c2e6..0454a8fce0a 100644
--- a/source/_integrations/stiebel_eltron.markdown
+++ b/source/_integrations/stiebel_eltron.markdown
@@ -30,6 +30,7 @@ It requires the following components:
By now, the following units are tested:
- LWZ 504e
+- LWZ 404eco
- LWZ 304
- LWZ 304 Trend
diff --git a/source/_integrations/suez_water.markdown b/source/_integrations/suez_water.markdown
index 8dd751463fe..6b54ef11f49 100644
--- a/source/_integrations/suez_water.markdown
+++ b/source/_integrations/suez_water.markdown
@@ -13,6 +13,7 @@ ha_domain: suez_water
ha_platforms:
- sensor
ha_integration_type: integration
+ha_quality_scale: bronze
---
The **Suez Water** {% term integration %} fetches your water consumption data from the French water provider [Tout Sur Mon Eau](https://www.toutsurmoneau.fr) website.
@@ -26,7 +27,27 @@ The **Suez Water** {% term integration %} fetches your water consumption data fr
{% configuration_basic %}
Counter ID:
- description: "The water counter ID. It should be found automatically during setup. If it was not found, the ID can be found on your _Tout Sur Mon Eau_ [user account](https://www.toutsurmoneau.fr/mon-compte-en-ligne/historique-de-consommation-tr). Look in the source code of the page for something similar to `url: '/mon-compte-en-ligne/statMData' + '/123456789'`. The `counter_id` in this case is `123456789`."
+ description: "The water counter ID. It should be found automatically during setup. If it was not found, the ID can be found on your _Tout Sur Mon Eau_ [user account](https://www.toutsurmoneau.fr/mon-compte-en-ligne/historique-de-consommation-tr).
+ You need to be **authenticated** to access the page above.
+
+ Follow these steps to find your counter ID:
+
+ 1. Open the browser's developer tools (usually F12 or right-click > **Inspect**).
+
+ 2. Open the **Network** tab in the developer tools.
+
+ 3. Navigate to the page or reload it if already open.
+
+ 4. In the **Network** tab, search for `https://www.toutsurmoneau.fr/public-api/cel-consumption/meters-list`.
+
+ 5. Select the request and open the **Preview** tab.
+
+ 6. Expand the `content > clientCompteursPro > list > compteursPro > list` path.
+
+ 7. Look for the `id_PDS` field - this value is your counter ID.
+
+ "
+
{% endconfiguration_basic %}
## Extra attributes
diff --git a/source/_integrations/switch.template.markdown b/source/_integrations/switch.template.markdown
index e007966275a..a986dbde679 100644
--- a/source/_integrations/switch.template.markdown
+++ b/source/_integrations/switch.template.markdown
@@ -116,9 +116,9 @@ If you are using the state of a platform that takes extra time to load, the Temp
In this section you find some real-life examples of how to use this switch.
-### Copy Switch
+### Invert a Switch
-This example shows a switch that copies another switch.
+This example shows a switch that is the inverse of another switch.
{% raw %}
@@ -126,14 +126,15 @@ This example shows a switch that copies another switch.
switch:
- platform: template
switches:
- copy:
- value_template: "{{ is_state('switch.source', 'on') }}"
+ invert:
+ value_template: "{{ not is_state('switch.target', 'on') }}"
+ availability_template: "{{ has_value('switch.target') }}"
turn_on:
- action: switch.turn_on
+ action: switch.turn_off
target:
entity_id: switch.target
turn_off:
- action: switch.turn_off
+ action: switch.turn_on
target:
entity_id: switch.target
```
diff --git a/source/_integrations/systemmonitor.markdown b/source/_integrations/systemmonitor.markdown
index b1ed8db4076..bf379f507ed 100644
--- a/source/_integrations/systemmonitor.markdown
+++ b/source/_integrations/systemmonitor.markdown
@@ -16,8 +16,7 @@ ha_codeowners:
- '@gjohansson-ST'
---
-The System monitor integration allows you to monitor disk usage,
-memory usage, CPU usage, and running processes.
+The **System monitor** {% term integration %} allows you to monitor disk usage, memory usage, network usage, CPU usage, and running processes.
{% include integrations/config_flow.md %}
@@ -25,7 +24,7 @@ memory usage, CPU usage, and running processes.
{% note %}
-All entities are disabled by default, you need to enable the entities that you wish to use.
+All entities are disabled by default, you need to [enable the entities](/common-tasks/general/#enabling-or-disabling-entities) that you wish to use.
All sensors are also marked as diagnostic and won't be automatically added to automatic dashboards.
@@ -33,20 +32,24 @@ All sensors are also marked as diagnostic and won't be automatically added to au
### Disks
-- Disk free - (One per disk/mount point)
-- Disk use - (One per disk/mount point)
-- Disk usage (percent) - (One per disk/mount point)
+One sensor per found disk/mount point will be created
+
+- Disk free
+- Disk use
+- Disk usage (percent)
### Network
-- IPv4 address - (One per network interface)
-- IPv6 address - (One per network interface)
-- Network in - (One per network interface)
-- Network out - (One per network interface)
-- Packets in - (One per network interface)
-- Packets out - (One per network interface)
-- Network throughput in - (One per network interface)
-- Network throughput out - (One per network interface)
+One sensor per found network interface will be created
+
+- IPv4 address
+- IPv6 address
+- Network in
+- Network out
+- Packets in
+- Packets out
+- Network throughput in
+- Network throughput out
### Other
@@ -65,23 +68,29 @@ All sensors are also marked as diagnostic and won't be automatically added to au
## Add `process` binary sensor
-The `process` binary sensor needs to be configured by the config entry options. Go to **{% my integrations title="Settings > Devices & services" %}**, select the **System Monitor** integration and click **Configure** to select which `process` binary sensors should be created.
+The `process` binary sensor needs to be configured by the config entry options. Go to **{% my integrations title="Settings > Devices & services" %}**, select the **System Monitor** integration and select **Configure**.
+
+You can select from the pre-populated list (current running processes) or manually enter the process name, to which a binary sensor will be created per selected `process`.
## Disk usage
{% note %}
-The disk usage sensors do not support monitoring folder/directory sizes. Instead, it is only concerned with "disks" (more specifically mount points on Linux).
+The disk usage sensors do not support monitoring folder/directory sizes. Instead, it is only targeting "disks" (more specifically mount points on Linux).
{% endnote %}
+**Example output from the Linux `df -H` command**
+
```bash
+
$ df -H
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 12G 16G 42% /
devtmpfs 805M 0 805M 0% /dev
tmpfs 934M 0 934M 0% /dev/shm
/dev/mmcblk0p1 253M 54M 199M 22% /boot
+
```
## Processor temperature
diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown
index a4fed8e1ece..67be19f7cb5 100644
--- a/source/_integrations/template.markdown
+++ b/source/_integrations/template.markdown
@@ -939,7 +939,7 @@ binary_sensor:
sensors:
sun_up:
friendly_name: "Sun is up"
- value_template: {{ state_attr('sun.sun', 'elevation') > 0 }}
+ value_template: "{{ state_attr('sun.sun', 'elevation') > 0 }}"
```
{% endraw %}
diff --git a/source/_integrations/tesla_fleet.markdown b/source/_integrations/tesla_fleet.markdown
index 306a72d3edf..ac4d28e4a7c 100644
--- a/source/_integrations/tesla_fleet.markdown
+++ b/source/_integrations/tesla_fleet.markdown
@@ -18,7 +18,7 @@ ha_release: 2024.8
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- - "@Bre77"
+ - '@Bre77'
ha_domain: tesla_fleet
ha_platforms:
- binary_sensor
@@ -40,53 +40,150 @@ The Tesla Fleet API {% term integration %} exposes various sensors from Tesla ve
## Prerequisites
-You must have a [Tesla](https://tesla.com) account, and a [Developer Application](https://developer.tesla.com/en_AU/dashboard).
+You must have:
-### Developer Application
-
-You must [create your own application](https://developer.tesla.com/docs/fleet-api/getting-started/what-is-fleet-api#step-2-create-an-application) for the Tesla Fleet API and configure it as an [application credential](https://my.home-assistant.io/redirect/application_credentials).
-When creating the application, you must set the redirect URL to `https://my.home-assistant.io/redirect/oauth`, but the other URLs can be set as desired. You must also complete both [step 3](https://developer.tesla.com/docs/fleet-api/getting-started/what-is-fleet-api#step-3-generate-a-public-private-key-pair) and [step 4](https://developer.tesla.com/docs/fleet-api/getting-started/what-is-fleet-api#step-4-call-the-register-endpoint) before the application will be able to make API calls.
+- A [Tesla](https://tesla.com) account
+- A [Developer Application](https://developer.tesla.com/en_US/dashboard)
+- A web domain and host that you can serve your public key file from. Some free options include:
+ - [FleetKey.cc](https://fleetkey.cc)
+ - [AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html)
+ - [Cloudflare Pages](https://pages.cloudflare.com/)
+ - [Firebase Hosting](https://firebase.google.com/docs/hosting)
+
{% include integrations/config_flow.md %}
+{% details "Hosting a Public/Private Key Pair" %}
+
+While the [Tesla Fleet API documentation Step 3](https://developer.tesla.com/docs/fleet-api/getting-started/what-is-fleet-api#step-3-generate-a-public-private-key-pair) mentions this as a later step, it is recommended that you do this first to ensure key reachability before the rest of the integration.
+
+1. Open a new terminal on your computer.
+2. Run this command to create a private key: `openssl ecparam -name prime256v1 -genkey -noout -out private-key.pem`
+3. Run this command to create and associate a public key with it: `openssl ec -in private-key.pem -pubout -out public-key.pem`
+4. Rename the public key file to `com.tesla.3p.public-key.pem`. This needs to be exactly this for Tesla's API to partner with your account correctly.
+5. Backup both these files somewhere safe and private for access later.
+6. Upload the public key file to your domain at the path `/.well-known/appspecific/com.tesla.3p.public-key.pem`. For example, if your domain is `https://my.domain.com`, the public key file must be accessible at `https://my.domain.com/.well-known/appspecific/com.tesla.3p.public-key.pem`. Do not use redirection logic to handle this, or the Tesla API will not recognize your app later in the process.
+
+{% enddetails %}
+
+{% details "Setting up the Developer Application" %}
+
+These steps are also summarized in the [Tesla Fleet API documentation Step 2](https://developer.tesla.com/docs/fleet-api/getting-started/what-is-fleet-api#step-2-create-an-application), but it is recommended to follow the steps below to cover specific details.
+
+1. If you have not already set up your [Tesla Developer account](https://developer.tesla.com/teslaaccount): Confirm that you have a verified email and multi-factor authentication set up.
+2. Navigate to the [Developer dashboard](https://developer.tesla.com/en_US/dashboard). Change your locale if needed to wherever your account is based, using the globe icon at the top-right corner.
+3. Select **Create New Application**. This should launch a new page with the header **Create Fleet API Application**.
+4. For simple integrations, under **Registration Type**, select **Just for me**. If you're confident about your situation being a business setup instead, select **For my business**. Select **Next**.
+5. At the **Application Details** step, use a name that is easy to refer to later, such as `ha-integration`. This will be needed later while configuring the integration. Select **Next**.
+6. At the **Client Details** step, under **Oauth Grant Type**, select **Authorization Code and Machine-to-Machine**.
+ - Under **Allowed Origin URL(s)**, enter your domain where you hosted your public key earlier. Using the example above, this would be `https://my.domain.com/`.
+ - Under **Allowed Redirect URI(s)**, enter `https://my.home-assistant.io/redirect/oauth`.
+ - Select **Next**.
+7. At the **API & Scopes** step, select the configurations you'd like to access.
+ - At least one of `Vehicle Information` or `Energy Product Information` **must** be selected for the integration to function. It is recommended you select all scopes for full functionality.
+ - If you're unsure, you can select only one of these two required scopes for now and update the scopes later from the Developer Dashboard. However, note that if the scopes are updated, you will need to reconfigure the integration fully (refer to the **Integration is broken and needs to be reconfigured** troubleshooting steps below).
+ - Select **Next**.
+8. At the **Billing Details (Optional)** step, enter your billing details if needed, then select **Submit**. Tesla does not support billing in all countries yet. **Developers in countries that do not yet support payments will not see this step**.
+ - Tesla provides a $10 monthly credit for personal API usage, so your level of usage may be covered for free. Detailed pricing info for commands, data polling, and wake signals can be found at [developer.tesla.com](https://developer.tesla.com). Use these details to calculate your usage estimate if you rely heavily on this integration.
+ - If unsure, you can select **Skip & Submit** for now and add the billing details later when your usage is close to the free threshold.
+9. Your developer application is ready for use!
+
+{% enddetails %}
+
+{% details "Register your application as a Fleet API partner" %}
+
+These steps are also summarized in the [Tesla Fleet API documentation Step 4](https://developer.tesla.com/docs/fleet-api/getting-started/what-is-fleet-api#step-4-call-the-register-endpoint), but the steps below provide easier copy-pasteable code and additional checks.
+
+{% warning %}
+The following steps involve sensitive credentials. Never share your `Client Secret` or access token with anyone directly, and ensure you're working in a secure environment.
+{% endwarning %}
+
+1. Get your OAuth details by going to your [Developer dashboard](https://developer.tesla.com/en_US/dashboard). Under the app you set up for Home Assistant integration select **View Details**. Then, select the **Credentials & APIs** tab. Note the `Client ID` and `Client Secret` strings.
+
+2. Run this CURL request, replacing the variable values as specified in the notes below:
+
+ ```shell
+ CLIENT_ID=REPLACE_THIS_WITH_YOUR_CLIENT_ID
+ CLIENT_SECRET=REPLACE_THIS_WITH_YOUR_CLIENT_SECRET
+ AUDIENCE="https://fleet-api.prd.na.vn.cloud.tesla.com"
+ curl --request POST \
+ --header 'Content-Type: application/x-www-form-urlencoded' \
+ --data-urlencode 'grant_type=client_credentials' \
+ --data-urlencode "client_id=$CLIENT_ID" \
+ --data-urlencode "client_secret=$CLIENT_SECRET" \
+ --data-urlencode 'scope=openid vehicle_device_data vehicle_cmds vehicle_charging_cmds' \
+ --data-urlencode "audience=$AUDIENCE" \
+ 'https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/token'
+ ```
+
+ Notes about the variable values:
+ - For the `CLIENT_SECRET` value, depending on your terminal environment, you may need to escape any `!` and `$` characters in the string, or the curl request will fail.
+ - Replace the `AUDIENCE` value with your region-specific URL. The URL in the example is for users in North America and Asia-Pacific (excluding China). Refer to the [Base URLs documentation](https://developer.tesla.com/docs/fleet-api/getting-started/base-urls) for the URLs for other regions.
+ - For the `scope=...` line, replace the values with a space-delimited list of [the official scope keywords](https://developer.tesla.com/docs/fleet-api/authentication/overview#scopes), as you defined them earlier in your app.
+3. The CURL request should return a response that looks something like:
+
+ ```json
+ {"access_token":"JSON_WEB_TOKEN","expires_in":28800,"token_type":"Bearer"}
+ ```
+
+ This is your access token. Copy everything between the double-quotes to be used next.
+4. Run this CURL request, replacing the variable values as specified in the notes below:
+
+ ```shell
+ curl --location 'https://fleet-api.prd.na.vn.cloud.tesla.com/api/1/partner_accounts' \
+ --header 'Content-Type: application/json' \
+ --header 'Authorization: Bearer JSON_WEB_TOKEN' \
+ --data '{
+ "domain": "my.domain.com"
+ }'
+ ```
+
+ - If you had to change the `AUDIENCE` URL for your region in step 2, update the main domain of the `--location` arg.
+ - Replace `LONG_GIBBERISH_ACCESS_TOKEN_STRING` with the access token that you copied in the previous step.
+ - In the `domain:` line, enter your domain without the leading `https://` and the trailing `/`.
+5. You should see a response that contains information about your Tesla Fleet developer app, pricing info, and such. This confirms that the Tesla Fleet API has successfully registered your developer application as a partner. The hard part is over.
+
+{% enddetails %}
+
+{% details "Linking the Developer Application with Home Assistant" %}
+
+1. Get your OAuth details by going to your [Developer dashboard](https://developer.tesla.com/en_US/dashboard). Select **View Details** under the app you set up for Home Assistant integration. Then, select the **Credentials & APIs** tab. Note the `Client ID` and `Client Secret` strings, these will be needed later.
+2. In Home Assistant, the integration wizard should walk you through the default steps. If not already started, scroll above and select the **ADD INTEGRATION TO MY** button to start the integration wizard. The integration will ask you for all of the necessary integration configurations.
+3. In the **Add credentials** step in the wizard, enter your Tesla Fleet developer application name (from step 5 in the **Setting up the Developer Application** section above), and the Oauth Client ID and Client Secret (from step 1 above). Select **Submit**.
+4. At this step, you should be taken to the Tesla authentication page. You will need to re-enter your Tesla account login credentials.
+5. At the confirmation page with the header **Allow ha-integration access to your Tesla Account** (the specific application name will be whatever you set earlier), select the **Select All** button. This list of scopes is already limited to the specific scopes you chose for the application information earlier, so it is not necessary to review them again. Select **Allow**.
+6. You should now see a Home Assistant page asking if you would like to **Link account to Home Assistant?**. Select **Link account**.
+7. You're all set! The integration should fetch your device details into Home Assistant.
+
+{% enddetails %}
+
## Scopes
-When connecting your Tesla account to Home Assistant, you **must** select the `Vehicle Information` or `Energy Product Information` scope. It is recommended you select all scopes for full functionality. The `Vehicle Location` scope was added in Home Assistant 2024.1, so any authorizations performed on previous releases that want this scope will need to be [modified](https://accounts.tesla.com/en_au/account-settings/security?tab=tpty-apps).
+When connecting your Tesla account to Home Assistant, you **must** select at least one of the `Vehicle Information` or `Energy Product Information` scopes. It is recommended you select all scopes for full functionality. The `Vehicle Location` scope was added in Home Assistant 2024.1, so any authorizations performed on previous releases that want this scope will need to be [modified](https://accounts.tesla.com/en_au/account-settings/security?tab=tpty-apps).
## Pay per use
-
+
Previously, Tesla restricted this integration to a very modest rate limit. However, from January 2025, accounts in eligible countries will be charged for every API call. Here's what you need to know:
-- Tesla provides a $10 credit per developer account per calandar month
+- Tesla provides a $10 credit per developer account per calendar month
- Every vehicle coordinator refresh, vehicle command, and wake up has a cost
- This credit only allows for a maximum of 5000 coordinator refreshes
- Energy product APIs are free to use at this time
- To go beyond the free credit, you must provide payment details to Tesla
-For more details please see [developer.tesla.com](https://developer.tesla.com).
+For more details, please see [developer.tesla.com](https://developer.tesla.com).
+
+Note that Tesla does not support billing in all countries yet. **Developers in countries that do not yet support payments will not be able to review their billing or usage**. For countries that do support billing, the current billing usage can be viewed at any time by going to your [Developer Dashboard](https://developer.tesla.com/en_US/dashboard), select **View Details** under the app you set up for Home Assistant integration. Then, select the **Application Usage** tab.
## Command signing
-Certain vehicles, including all vehicles manufactured since late 2023, require vehicle commands to be signed with a private key. All actions on vehicle entities will fail with an error if this is required and the key has not been added to the vehicle.
+Certain vehicles, including all vehicles manufactured since late 2023, require vehicle commands to be signed with a private key. All actions on vehicle entities will fail with an error if this is required and the key has not been setup correctly.
-You will need to use Tesla's [command line tools](https://github.com/teslamotors/vehicle-command/blob/main/README.md#installation-and-configuration) to generate a key pair and install the public key on your vehicle using Bluetooth.
+The integration expects your private key to be located at `config/tesla_fleet.key`.
-```shell
-tesla-keygen -key-file tesla_fleet.key create > tesla_fleet.pem
-tesla-control -ble -key-file tesla_fleet.key -vin VINVINVINVIN -debug add-key-request tesla_fleet.pem owner cloud_key
-```
+Your public key must be added to each of your vehicles by visiting https://tesla.com/_ak/YOUR.DOMAIN and following the instructions in the Tesla app.
-Finally, copy `tesla_fleet.key` to your Home Assistant config directory and then reload the Tesla Fleet {% term integration %}.
-
-{% note %}
-If you receive a "BLE connection attempt failed" error, follow these steps:
-
-1. Disable Bluetooth on your phone
-2. Execute the `tesla-control` command
-3. Re-enable Bluetooth after the command completes
-
-This is necessary because the tool cannot establish a connection while another Bluetooth device is connected to the car.
-{% endnote %}
+For more details see [Tesla Fleet API vehicle commands documentation](https://developer.tesla.com/docs/fleet-api/endpoints/vehicle-commands#key-pairing).
## Entities
@@ -246,3 +343,22 @@ The Tesla Fleet API only provides power data for Powerwall and Solar products. T
Energy flows can be calculated from `Battery power` and `Grid power` sensors using a [Template Sensor](/integrations/template/) to separate the positive and negative values into positive import and export values.
The `Load power`, `Solar power`, and the templated sensors can then use a [Riemann Sum](/integrations/integration/) to convert their instant power (kW) values into cumulative energy values (kWh),
which then can be used within the energy dashboard.
+
+## Troubleshooting
+
+- **General troubleshooting steps**
+ 1. Confirm that your vehicle or energy product can be accessed and updates within the official Tesla app. This rules out any issues that are outside the control of Home Assistant or this integration.
+ 2. For some errors in the integration, waking the vehicle or energy product through the official app, then restarting Home Assistant will sometimes help re-authenticate the connection with Tesla's API. You may be asked to re-authenticate through the Tesla website.
+
+- **Integration is broken or needs to be reconfigured**
+ 1. Ensure that you have a Tesla developer application ready for usage (refer to the instructions in the **Setting up the Developer Application** section above).
+ 2. Go to your Tesla Fleet integration page in Home Assistant, then select the **Reconfigure** button to bring the integration wizard up.
+ - If the **Reconfigure** button is not visible, clear any Application Credentials related to Tesla Fleet from your Application Credentials page (can be found at `http://homeassistant.local:PORT/config/application_credentials`), then restart Home Assistant. After the restart, navigate to the Tesla Fleet integration page, and the **Reconfigure ** button should be visible.
+ 3. Follow the steps in the **Linking the Developer Application with Home Assistant** section above.
+
+- **Integration no longer works after the January 2025 API pricing updates**
+ 1. Refer to the **Integration is broken** troubleshooting steps above.
+
+- **Integration shows `a condition has not been met to process the request`**
+ 1. Confirm that you've run all the steps from both the **Hosting a Public/Private Key Pair** and **Register your application as a Fleet API partner** sections above.
+
diff --git a/source/_integrations/tesla_wall_connector.markdown b/source/_integrations/tesla_wall_connector.markdown
index a4c7aa17cf0..5e028d9c125 100644
--- a/source/_integrations/tesla_wall_connector.markdown
+++ b/source/_integrations/tesla_wall_connector.markdown
@@ -21,3 +21,36 @@ ha_integration_type: integration
The Tesla Wall Connector integration allows you to integrate your Gen 3 [Tesla Wall Connector](https://www.tesla.com/support/home-charging-installation/wall-connector) with Wi-Fi into Home Assistant.
{% include integrations/config_flow.md %}
+
+## Supported functionality
+
+### Entities
+
+The Tesla Wall Connector integration provides the following entities.
+
+#### Sensors
+- **Energy** - Running total of energy used by the Wall Connector.
+- **Session energy** - Energy used during the current charging session.
+- **Status** - Present status of the Wall Connector.
+ - **Possible states** - booting, not_connected, connected, ready, negotiating, error, charging_finished, waiting_car, charging_reduced, charging
+- **Contactor closed** - Binary sensor indicating if the Wall Connector is currently charging.
+- **Grid frequency** - Sensor for grid frequency of the incoming AC power.
+- **Grid voltage** - Sensor for grid voltage of the incoming AC power.
+- **Handle temperature** - Sensor for temperature of the Wall Connector handle.
+- **MCU temperature** - Sensor for temperature of the Wall Connector Main Computing Unit (MCU).
+- **PCB temperature** - Sensor for temperature of the Wall Connector Power Control Board (PCB).
+- **Phase current** - Sensor for the power current of each incoming AC electricity phase.
+- **Phase voltage** - Sensor for the voltage of each incoming AC electricity phase.
+- **Vehicle connected** - Binary sensor indicating if a vehicle is connected.
+- **Status code** - Sensor for error codes generated by the Wall Connector.
+
+## Energy dashboard
+
+Energy usage can be easily added to the built-in [Energy dashboard](/docs/energy/) using the energy sensor.
+
+To add the Tesla Wall Connector to your Energy dashboard:
+
+1. Navigate to **Settings** > **Dashboards** > **Energy**.
+2. In the **Electricity grid** section, select **Add consumption**.
+3. Select the Tesla Wall Connector's "Energy" sensor.
+4. Select **Save**.
diff --git a/source/_integrations/third_reality.markdown b/source/_integrations/third_reality.markdown
index 29d4db226a1..46039115399 100644
--- a/source/_integrations/third_reality.markdown
+++ b/source/_integrations/third_reality.markdown
@@ -7,28 +7,39 @@ ha_category:
- Cover
- Switch
- Binary sensor
+ - Light
- Sensor
- Button
ha_domain: third_reality
ha_integration_type: integration
works_with:
- zigbee
+ - matter
ha_platforms:
- binary_sensor
- button
+ - light
- sensor
- switch
- cover
-ha_iot_standard: zigbee
+ha_iot_standard:
+ - zigbee
+ - matter
ha_brand: true
---
-[Third Reality](https://3reality.com) is a member of the Works with Home Assistant partner program for their Zigbee products. Third Reality is committed to making sure their products are up-to-date and ready to use in Home Assistant.
+[Third Reality](https://3reality.com) is a member of the Works with Home Assistant partner program for their Zigbee and Matter products. Third Reality is committed to making sure their products are up-to-date and ready to use in Home Assistant.
Third Reality Zigbee devices work locally and integrate seamlessly with the Zigbee integration in Home Assistant (Zigbee stick required).
-To add Third Reality products, pair them as Zigbee devices:
+To add Third Reality products, pair them as Zigbee or Matter devices, depending on which you have purchased:
{% my add_zigbee_device badge brand=page.ha_domain %}
[Learn more about Zigbee in Home Assistant.](/integrations/zha/)
+
+Third Reality 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.
+
+{% my add_matter_device badge domain=page.ha_domain %}
+
+[Learn more about Matter in Home Assistant.](/integrations/matter/)
diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown
index 5be8c0e94c2..a1e6d3c4514 100644
--- a/source/_integrations/timer.markdown
+++ b/source/_integrations/timer.markdown
@@ -96,7 +96,7 @@ You can also use `entity_id: all` and all active timers will be started.
### Action `timer.change`
-Change an active timer. This changes the duration of the timer with the duration given. You can also use `entity_id: all` and all active timers will be changed.
+Change an active timer. This changes the duration of the timer with the duration given. You can also use `entity_id: all` and all active timers will be changed. You cannot extend the duration beyond that set by `timer.start`.
| Data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
diff --git a/source/_integrations/totalconnect.markdown b/source/_integrations/totalconnect.markdown
index 275910d0942..0ee19234a80 100644
--- a/source/_integrations/totalconnect.markdown
+++ b/source/_integrations/totalconnect.markdown
@@ -21,19 +21,100 @@ ha_integration_type: integration
The `totalconnect` integration provides connectivity with Resideo Total Connect 2.0-enabled alarm systems.
+The integration allows automations based on the state of the alarm system. For example: when the alarm is armed, turn on the outside light.
+
+The integration can also arm or disarm the alarm panel. For example: when I arrive home, disarm the alarm panel
+
+## Supported devices
+
+This integration supports alarm panels with "communicator modules" that are compatible with the Total Connect 2.0 service. An active account is required via a third party alarm monitoring company. Panels may be branded as Resideo, Honeywell, Ademco or other third party alarm companies.
+
+Device models known to work include:
+
+- ProSeries (ProA7, ProA7Plus)
+- Lyric (AIO, Gateway)
+- Lynx Touch (L5100, L5200, L5210, L7000)
+- Lynx Plus (L3000)
+- VISTA (15P, 20P, 21iP)
+
+## Unsupported devices
+
+The following devices are not supported:
+
+- Older Lynx models (not Touch or Plus)
+- Other panels without a Total Connect compatible communicator module
+
## Prerequisites
Log in to the [Total Connect website](https://totalconnect2.com) and create a "standard" Total Connect user account specifically for use with Home Assistant. It should not have full administrative privileges.
Give the user access to your Location, along with a user code, usually a 4 digit number.
+{% details "Notes for Home Assistant Core Installations" %}
+
+If you have issues running this integration, you may require `libxml2-dev` and `libxmlsec1-dev` packages. To install these on Raspbian, run the command:
+
+```bash
+sudo apt install libxml2-dev libxmlsec1-dev
+```
+
+{% enddetails %}
+
{% include integrations/config_flow.md %}
## Configuration Options
**Auto Bypass Low Battery:** if enabled, TotalConnect zones will immediately be bypassed when they report low battery. This option helps because zones tend to report low battery in the middle of the night. The downside of this option is that when the alarm system is armed, the bypassed zone will not be monitored.
-**Require Code:** if enabled, you must enter the user code to disarm the alarm.
+**Require Code:** if enabled, you must enter the user code to arm or disarm the alarm.
+
+## Alarm control panel
+
+The integration provides an alarm control panel for each Total Connect location. It uses the name of your location from Total Connect. For example, if your location name in Total Connect is "Home", Home Assistant will use `alarm_control_panel.home`.
+
+The `triggered` state also provides a state attribute called `triggered_source` giving more detail on what triggered the alarm:
+
+- `Police/Medical` is when sensors detected a burglar and/or the Police or Medical button was pressed
+- `Fire/Smoke` is when fire or smoke is detected, and/or the Fire button was pressed
+- `Carbon Monoxide` is when carbon monoxide is detected
+
+## Binary sensor
+
+The integration provides a binary sensor for each Total Connect zone. To see faulted zones in Home Assistant, your Total Connect account must have "Sensor Activities" enabled. Your alarm monitoring company may charge an extra fee to enable this. If available, these can be found in the Total Connect 2 web portal at **Notifications** -> **Sensor Activities**. Alternately, they can be found in the Total Connect mobile app at **More** -> **Settings** -> **Notifications** -> **Sensor Activities**. Enable each zone you want to monitor. Unmonitored zones will display as `Closed` in Home Assistant.
+
+Home Assistant device class `door` is assigned to Total Connect entry/exit, perimeter, and motion zones; along with most alarm panel buttons. The sensor will appear as `True` if the zone is opened (either fault or triggered in Total Connect) and `False` if closed. Device class `smoke` is assigned to Total Connect smoke detectors and alarm panel buttons set to a "Fire No Verification" response type. The sensor will appear as `True` if smoke is detected or the respective button is pressed. Device class `gas` is assigned to Total Connect carbon monoxide detectors. The sensor will appear as `True` if carbon monoxide is detected.
+
+## Buttons
+
+The integration provides a bypass button for each zone that can be bypassed. The **Bypass All** button for the alarm panel will bypass all faulted or troubled zones. The **Clear Bypass** button for the alarm panel will clear all bypassed zones.
+
+## Actions
+
+The alarm control panel supports the following basic actions: `alarm_arm_away`, `alarm_arm_home`, `alarm_arm_night`, and `alarm_disarm`.
+
+### Action: Arm home instant
+
+The `totalconnect.arm_home_instant` action puts the alarm panel in "arm home" with zero entry delay, triggering the alarm instantly if an entry/exit zone is faulted. This is equivalent to "arm stay instant" in most alarm panels.
+
+| Data attribute | Optional | Description |
+|------------------------|----------|------------------------------------------------------|
+| `entity_id` | No | The ID of the alarm panel to arm. |
+
+### Action: Arm away instant
+
+The `totalconnect.arm_away_instant` action puts the alarm panel in "arm away" with zero entry delay, triggering the alarm instantly if an entry/exit zone is faulted. This is equivalent to "arm away instant" in most alarm panels.
+
+| Data attribute | Optional | Description |
+|------------------------|----------|------------------------------------------------------|
+| `entity_id` | No | The ID of the alarm panel to arm. |
+
+## Diagnostic Sensors
+
+The following diagnostic sensors are available:
+
+- Low Battery for Zones and Alarm Panels will be `On` if the battery is low.
+- Tamper for Zones and Alarm Panels will be `On` if in a tampered state.
+- Power for Alarm Panels will be `On` if main power is connected or `Off` if running on the backup battery.
## Automation example
@@ -42,7 +123,7 @@ automation:
- alias: "Alarm: Disarmed Daytime"
triggers:
- trigger: state
- entity_id: alarm_control_panel.total_connect
+ entity_id: alarm_control_panel.home
to: "disarmed"
conditions:
- condition: sun
@@ -55,7 +136,7 @@ automation:
- alias: "Alarm: Armed Away"
triggers:
- trigger: state
- entity_id: alarm_control_panel.total_connect
+ entity_id: alarm_control_panel.home
to: "armed_away"
actions:
- action: scene.turn_on
@@ -70,45 +151,37 @@ automation:
actions:
- action: totalconnect.arm_home_instant
target:
- entity_id: alarm_control_panel.total_connect
+ entity_id: alarm_control_panel.home
```
-{% details "Notes for Home Assistant Core Installations" %}
+## Removing the integration
-If you have issues running this integration, you may require `libxml2-dev` and `libxmlsec1-dev` packages. To install these on Raspbian, run the command:
+This integration follows standard integration removal. No extra steps are required.
-```bash
-sudo apt install libxml2-dev libxmlsec1-dev
-```
+{% include integrations/remove_device_service.md %}
-{% enddetails %}
+After deleting the integration, go to Total Connect and remove the user account you created for Home Assistant.
-## Alarm control panel
+## Data Updates
-The integration provides an alarm control panel for each Total Connect location. It uses the name of your location from Total Connect. For example, if your location name in Total Connect is "Home", Home Assistant will use `alarm_control_panel.home`.
+Your alarm panel contacts the Total Connect 2.0 server to provide status updates. This is a "polling integration" that contacts the Total Connect 2.0 server every 30 seconds to retrieve the status of your alarm panel and sensors. Home Assistant cannot communicate locally with the alarm panel.
-The alarm control panel supports the following actions: `alarm_arm_away`, `alarm_arm_home`, `alarm_arm_night`, and `alarm_disarm`. The integration also provides unique actions for `totalconnect.arm_home_instant` and `totalconnect.arm_away_instant` which arms the system with zero entry delay, triggering the alarm instantly if an entry/exit zone is faulted.
+## Limitations
-The `triggered` state also provides a state attribute called `triggered_source` giving more detail on what triggered the alarm:
+The polling window is 30 seconds. If your door opens and then closes again within 30 seconds, it may not be visible in Home Assistant. Automations based on the short term status of doors and windows are not recommended.
-- `Police/Medical` is when sensors detected a burglar and/or the Police or Medical button was pressed
-- `Fire/Smoke` is when fire or smoke is detected, and/or the Fire button was pressed
-- `Carbon Monoxide` is when carbon monoxide is detected
+The Total Connect API has limited zone type information. Many zones are simply described as "perimeter" and thus appear as a `door` in Home Assistant. You may have to manually adjust some entities.
-## Binary sensor
+Some alarm panels integrate Z-Wave, cameras, smart locks or garage door openers, and those add-on devices can be controlled by the Total Connect app. This integration does not yet support awareness of or control of these add-on devices.
-The integration provides a binary sensor for each Total Connect zone. To see faulted zones in Home Assistant, your Total Connect account must have "Sensor Activities" enabled. Your alarm monitoring company may charge an extra fee to enable this. If available, these can be found in the Total Connect 2 web portal at **Notifications** -> **Sensor Activities**. Alternately, they can be found in the Total Connect mobile app at **More** -> **Settings** -> **Notifications** -> **Sensor Activities**. Enable each zone you want to monitor. Unmonitored zones will display as `Closed` in Home Assistant.
+This integration cannot "trigger" the alarm panel or cause the alarm to sound.
-The Total Connect API has limited zone type information. Home Assistant device class `door` is assigned to Total Connect entry/exit, perimeter, and motion zones; along with most alarm panel buttons. The sensor will appear as `True` if the zone is opened (either fault or triggered in Total Connect) and `False` if closed. Device class `smoke` is assigned to Total Connect smoke detectors and alarm panel buttons set to a "Fire No Verification" response type. The sensor will appear as `True` if smoke is detected or the respective button is pressed. Device class `gas` is assigned to Total Connect carbon monoxide detectors. The sensor will appear as `True` if carbon monoxide is detected.
+## Troubleshooting
-## Buttons
+### Error Connecting or Service Unavailable
-The integration provides a bypass button for each zone that can be bypassed. The **Bypass All** button for the alarm panel will bypass all faulted or troubled zones. The **Clear Bypass** button for the alarm panel will clear all bypassed zones.
+The integration depends on the Total Connect 2.0 servers and your internet connection. Verify your internet is working and check https://status.resideo.com/ for server outages.
-## Diagnostic Sensors
+### Unknown ResultCode, ArmingState, ZoneType or ZoneStatus
-The following diagnostic sensors are available:
-
-- Low Battery for Zones and Alarm Panels will be `On` if the battery is low.
-- Tamper for Zones and Alarm Panels will be `On` if in a tampered state.
-- Power for Alarm Panels will be `On` if main power is connected or `Off` if running on the backup battery.
+The Total Connect API does not fully document all modes of every alarm panel so the integration was developed based on testing with the developers' own hardware. New or different hardware may result in unknown ResultCode, ArmingState, ZoneType, ZoneStatus or similar messages in the Home Assistant logs. If encountered, please [submit an issue](https://github.com/craigjmidwinter/total-connect-client/issues) for `total-connect-client` which enables this integration.
diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown
index 84756d2190e..738be9c6499 100644
--- a/source/_integrations/tplink.markdown
+++ b/source/_integrations/tplink.markdown
@@ -39,7 +39,13 @@ ha_dhcp: true
ha_integration_type: integration
---
-The `tplink` integration allows you to control your [TP-Link Kasa Smart Home Devices](https://www.tp-link.com/kasa-smart/) and [TP-Link Tapo Devices](https://www.tapo.com/) such as plugs, power strips, wall switches and bulbs.
+The `tplink` integration allows you to control your [TP-Link Kasa Smart Home Devices](https://www.tp-link.com/kasa-smart/) and [TP-Link Tapo Devices](https://www.tapo.com/) such as cameras, lights, plugs, wall switches, hubs, and hub-attached devices.
+
+## How you can use this integration
+
+The TP-Link integration lets you do many things, such as switching devices on and off based on schedules or events, monitoring energy usage in the Home Assistant dashboards, viewing live camera feeds, and controlling device configurations manually or via automations.
+
+## Prerequisites
You need to provision your newly purchased device to connect to your network before it can be added via the integration. This can be done either by using [kasa command-line tool](https://python-kasa.readthedocs.io/en/latest/cli.html#provisioning) or by adding it to the official Kasa or Tapo app before trying to add them to Home Assistant. Some apps for TP-Link's other products, such as the Deco app, also allow you to add Kasa and Tapo devices. Since these devices use the same TP-Link Cloud Account for authorization, they work with this integration as well.
@@ -48,6 +54,29 @@ If you have an older device that does not currently require authentication, you
{% include integrations/config_flow.md %}
+{% configuration_basic %}
+
+Host:
+ description: |
+ Hostname or IP address of your TP-Link device.
+Username:
+ description: |
+ Your TP-Link cloud username which is your *case-sensitive* email address. Required for Tapo and newer Kasa devices.
+Password:
+ description: |
+ Your TP-Link cloud password. Required for Tapo and newer Kasa devices.
+Live view:
+ description: |
+ Checkbox to enable live view will create the live view camera entity for Tapo cameras. Requires your camera account credentials which you set up from the Tapo app under **Device Settings** > **Advanced Settings** > **Camera Account**.
+Camera account username:
+ description: |
+ Your camera account username as configured in the Tapo app.
+Camera account password:
+ description: |
+ Your camera account password configured for the device in the Tapo app.
+
+{% endconfiguration_basic %}
+
## Supported Devices
See [Supported Devices in python-kasa](https://python-kasa.readthedocs.io/en/stable/SUPPORTED.html) for an up to date list that includes hardware and firmware versions.
@@ -88,31 +117,113 @@ Alternatively, you can factory reset and then prevent the device from accessing
[^2]: Newer versions require authentication
[^3]: Devices may work across TAPO/KASA branded hubs
-## Unavailable entities
+
+## Supported functionality
+
+### Cameras
+
+Only Tapo cameras are currently supported.
+In order for live view to work, you will need to enable your camera account in the Tapo App under **Device Settings** > **Advanced Settings** > **Camera Account**.
+If you do not want to do this, keep **Live view** unchecked when adding the device. This can be changed at a later date using the `reconfigure` option on the integration entry.
+
+Depending on the supported features of the camera, you can control various settings such as privacy mode, pan/tilt, and motion detection alerts.
+
+### Lights
+
+Light entities are added for bulbs, light strips, and dimmer switches.
+Depending on the supported features of the device, the integration will allow changing brightness, color, color temperature, and light effects.
+
+If light effects are supported by a device, they can be selected from the bottom of the light card.
+Light presets are also supported and can be set via the config preset drop down on the device page.
+
+Depending on the supported features of the device you can control various other configuration settings such as on/off transitions and auto-on/off.
+
+### Plugs and switches
+
+Switch entities are added for plugs, simple wall switches and power strips. In addition to turning devices on and off, you can control the various configuration options that the device supports, such as auto-on/off and automatic firmware updates.
+
+### Energy monitoring
+
+If a device supports energy monitoring sensors will be created for consumption metrics which can be fed into the Home Assistant energy dashboard.
+
+### Hub-attached devices
+
+Various hub attached devices are supported such as those providing climate control, motion detection, humidity monitoring and water leak detection.
+
+
+## Data updates
+
+Devices are polled for data updates every 5 seconds. When you make changes through Home Assistant (e.g., switching a device on), the device's state is updated immediately rather than waiting for the next poll.
+The integration connects locally to the devices without going via the TP-Link cloud. This is different from the native Tapo and Kasa apps which will connect to the devices via the TP-Link cloud if the device has access to the internet.
+
+## Known limitations
+
+### Camera connections
+
+Some firmware versions of Tapo Cameras will not authenticate unless you enable **Tapo Lab** > **Third-Party Compatibility** in the native Tapo app.
+Alternatively, you can factory reset and then prevent the device from accessing the internet.
+
+### Subnets and discovery
+
+If devices are on a different subnet to Home Assistant, automatic discovery will not work.
+In this instance it is recommended to add devices by IP address and configure them with static IP addresses to prevent issues when IP addresses change.
+
+### Buttons
+
+The hub-attached Tapo buttons S200B and S200D, do not currently support alerting when the button is pressed.
+
+### Hub-attached cameras
+
+Hub attached cameras will be supported in the future. Due to battery considerations they do not support live view.
+
+### No light effects on kasa bulbs
+
+Light effects are currently not supported on Kasa bulbs.
+
+### Kasa power strips
+
+Due to limitations of the devices, the energy monitoring state of Kasa power strip child plugs is only updated every 60 seconds.
+
+If required, you can manually trigger an update via **Developer tools** > **Actions** > **Home Assistant Core Integration: Update entity** passing a list of the child entities.
+
+## Troubleshooting
+
+### Device connections
+
+- Take note of the known limitation for subnets above.
+- Try switching the device off for 5 seconds before switching back on again.
+- Check the [supported device list](#supported-devices) to see if the device is tested to work with the integration.
+- Try running the [kasa tool](https://github.com/python-kasa/python-kasa) to connect to the device. An easy way to do this is to [install uv](https://docs.astral.sh/uv/getting-started/installation/) and run `uvx --from python-kasa kasa --username --password `
+- Raise a support issue
+
+### Unavailable entities
Some entities might be showing as Unavailable if they have been removed from the integration.
-## Cameras
-
-Only Tapo cameras are currently supported.
-In order for live view to work, you will need to enable your camera account in the Tapo App > **Advanced Settings** > **Camera Account**.
-If you do not want to do this, keep **Live view** unchecked when adding the device.
-
-### Total consumption
+#### Total consumption sensor
This entity is only reported by older kasa devices.
Currently, Tapo devices and newer Kasa devices do not report total consumption, although briefly during 2024.6, they incorrectly reported today's consumption as "total consumption." You can safely delete this entity if it is reported as unavailable on a newer Kasa or Tapo device.
-### Update
+#### Update available sensor
This entity has been removed from the integration due to stability issues, calling the TPLink cloud API to check for updates. It will be replaced in a future release with a new Update entity, but if you have an Unavailable entity ID starting with `binary_sensor.` and ending with `update`, you can safely delete it.
-## Light effects
-If light effects are supported by a device they can be selected from the bottom of the light card.
-They are currently not supported on Kasa bulbs.
+## Examples
-### Random Effect - Action `tplink.random_effect`
+### Automation ideas
+
+- Turn on lights when it gets dark and turn them off again with a voice command.
+- Turn off privacy mode and turn on motion detection for internal cameras when you leave home (with geofencing) and toggle back when you get home.
+
+### Light effect services
+
+There are two services for light effects that can be used in automations.
+
+These are available on devices that support light effects such as bulbs and light strips, except for [kasa bulbs](#no-light-effects-on-kasa-bulbs)
+
+#### Random Effect - Action `tplink.random_effect`
Light strips allow setting a random effect.
@@ -161,7 +272,7 @@ data:
random_seed: 80
```
-### Sequence Effect - Action `tplink.sequence_effect`
+#### Sequence Effect - Action `tplink.sequence_effect`
Light strips allow setting a sequence effect.
diff --git a/source/_integrations/tplink_tapo.markdown b/source/_integrations/tplink_tapo.markdown
index 3ee90a156dd..54b4fe6a931 100644
--- a/source/_integrations/tplink_tapo.markdown
+++ b/source/_integrations/tplink_tapo.markdown
@@ -4,6 +4,7 @@ description: Connect and control your Tapo devices using the TP-Link Smart Home
ha_category:
- Binary sensor
- Button
+ - Camera
- Climate
- Fan
- Hub
@@ -26,6 +27,7 @@ ha_config_flow: true
ha_platforms:
- binary_sensor
- button
+ - camera
- climate
- diagnostics
- fan
diff --git a/source/_integrations/tradfri.markdown b/source/_integrations/tradfri.markdown
index cd51168b901..55802cdff94 100644
--- a/source/_integrations/tradfri.markdown
+++ b/source/_integrations/tradfri.markdown
@@ -23,7 +23,7 @@ ha_platforms:
ha_integration_type: integration
---
-The IKEA TRร DFRI integration allows you to connect your IKEA Trรฅdfri Gateway to Home Assistant. The gateway can control compatible Zigbee-based lights (certified Zigbee Light Link products) connected to it. Home Assistant will automatically discover the gateway's presence on your local network if `discovery:` is present in your {% term "`configuration.yaml`" %} file.
+The IKEA TRร DFRI integration allows you to connect your IKEA Trรฅdfri Gateway to Home Assistant. The gateway can control compatible Zigbee-based lights (certified Zigbee Light Link products) connected to it.
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown
index 2f3208d2543..75417e85de2 100644
--- a/source/_integrations/transmission.markdown
+++ b/source/_integrations/transmission.markdown
@@ -26,23 +26,25 @@ Your Transmission client must first be configured to allow remote access. In you
{% include integrations/config_flow.md %}
-## Integration entities
+## Supported functionality
The Transmission integration will add the following sensors and switches.
-**Sensors**:
-- `sensor.transmission_current_status`: The status of your Transmission daemon.
-- `sensor.transmission_download_speed`: The current download speed [MB/s].
-- `sensor.transmission_upload_speed`: The current upload speed [MB/s].
-- `sensor.transmission_active_torrents`: The current number of active torrents.
-- `sensor.transmission_paused_torrents`: The current number of paused torrents.
-- `sensor.transmission_total_torrents`: The total number of torrents present in the client.
-- `sensor.transmission_started_torrents`: The current number of started torrents (downloading).
-- `sensor.transmission_completed_torrents`: The current number of completed torrents (seeding).
+### Sensors
-**Switches**:
-- `switch.transmission_switch`: A switch to start/stop all torrents.
-- `switch.transmission_turtle_mode`: A switch to enable turtle mode (a.k.a. alternative speed limits).
+- The status of your Transmission daemon.
+- The current download speed [MB/s].
+- The current upload speed [MB/s].
+- The current number of active torrents.
+- The current number of paused torrents.
+- The total number of torrents present in the client.
+- The current number of started torrents (downloading).
+- The current number of completed torrents (seeding).
+
+### Switches
+
+- A switch to start/stop all torrents.
+- A switch to enable turtle mode (a.k.a. alternative speed limits).
## Event automation
diff --git a/source/_integrations/twentemilieu.markdown b/source/_integrations/twentemilieu.markdown
index 7f7ee6468db..033c98f2504 100644
--- a/source/_integrations/twentemilieu.markdown
+++ b/source/_integrations/twentemilieu.markdown
@@ -16,6 +16,7 @@ ha_platforms:
- diagnostics
- sensor
ha_integration_type: service
+ha_quality_scale: silver
---
The Twente Milieu {% term integration %} enables you to monitor the upcoming
diff --git a/source/_integrations/update.mqtt.markdown b/source/_integrations/update.mqtt.markdown
index 326b16765c7..3ad2fc316fb 100644
--- a/source/_integrations/update.mqtt.markdown
+++ b/source/_integrations/update.mqtt.markdown
@@ -156,11 +156,11 @@ json_attributes_topic:
required: false
type: string
latest_version_template:
- description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the latest version value."
+ description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the latest version value. Use `state_topic` with a `value_template` if all update state values can be extracted from a single JSON payload."
required: false
type: template
latest_version_topic:
- description: The MQTT topic subscribed to receive an update of the latest version.
+ description: The MQTT topic subscribed to receive an update of the latest version. Use `state_topic` with a `value_template` if all update state values can be extracted from a single JSON payload.
required: false
type: string
name:
@@ -198,7 +198,7 @@ retain:
type: boolean
default: false
state_topic:
- description: "The MQTT topic subscribed to receive state updates. The state update may be either JSON or a simple string with `installed_version` value. When a JSON payload is detected, the state value of the JSON payload should supply the `installed_version` and can optional supply: `latest_version`, `title`, `release_summary`, `release_url` or an `entity_picture` URL."
+ description: "The MQTT topic subscribed to receive state updates. The state update may be either JSON or a simple string with `installed_version` value. When a JSON payload is detected, the state value of the JSON payload should supply the `installed_version` and can optionally supply: `latest_version`, `title`, `release_summary`, `release_url`, and an `entity_picture` URL. To allow progress monitoring `in_progress` (a boolean to indicate an update is in progress), or `update_percentage` (a float value to indicate the progress percentage) may be part of the JSON message."
required: false
type: string
title:
diff --git a/source/_integrations/valve.markdown b/source/_integrations/valve.markdown
index 4b38e165503..6b47dca70ef 100644
--- a/source/_integrations/valve.markdown
+++ b/source/_integrations/valve.markdown
@@ -46,8 +46,8 @@ The following device classes are supported for valves:
### Valve control actions
-All valves respond to `valve.open`, `valve.close`, and `valve.toggle`.
-Valves that allow setting a specific position may also be controlled with `valve.set_position` and `valve.stop`.
+All valves respond to `valve.open_valve`, `valve.close_valve`, and `valve.toggle`.
+Valves that allow setting a specific position may also be controlled with `valve.set_valve_position` and `valve.stop_valve`.
| Data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
@@ -61,12 +61,12 @@ automation:
- trigger: time
at: "07:15:00"
actions:
- - action: valve.close
+ - action: valve.close_valve
target:
entity_id: valve.demo
```
-### Action `valve.set_position`
+### Action `valve.set_valve_position`
Set the position of one or multiple valves if they support setting a specific position.
@@ -83,7 +83,7 @@ automation:
- trigger: time
at: "07:15:00"
actions:
- - action: valve.set_position
+ - action: valve.set_valve_position
target:
entity_id: valve.demo
data:
diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown
index f03288982d3..6801075769b 100644
--- a/source/_integrations/vicare.markdown
+++ b/source/_integrations/vicare.markdown
@@ -190,3 +190,9 @@ Invalid data from Vicare server: {
```
Usually, this resolves itself after a while, but if this state persists, try to power cycle your gateway.
+
+## Removing the integration
+
+This integration follows standard integration removal. Once the integration is removed, you can remove the API client (assuming it was only used by this integration) by going to the [Viessmann developer portal](https://app.developer.viessmann.com/) and deleting the client you created for Home Assistant.
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/voip.markdown b/source/_integrations/voip.markdown
index 2c4af8077ec..8dca402a195 100644
--- a/source/_integrations/voip.markdown
+++ b/source/_integrations/voip.markdown
@@ -12,6 +12,7 @@ ha_domain: voip
ha_integration_type: integration
ha_quality_scale: internal
ha_platforms:
+ - assist_satellite
- binary_sensor
- select
- switch
diff --git a/source/_integrations/watergate.markdown b/source/_integrations/watergate.markdown
index 3283539fccd..325640bb9c0 100644
--- a/source/_integrations/watergate.markdown
+++ b/source/_integrations/watergate.markdown
@@ -12,8 +12,10 @@ ha_codeowners:
- '@adam-the-hero'
ha_domain: watergate
ha_platforms:
- - valve
- sensor
+ - valve
+ha_quality_scale: bronze
+ha_integration_type: integration
---
The **Watergate** integration integrates your Watergate Devices (currently Sonic Wi-Fi) with your Home Assistant.
@@ -104,4 +106,4 @@ The water meter volume entity can be added to the Energy Dashboard, allowing you
- Turn on the water when someone arrives home.
- Send a notification when the water is too hot.
- Send a notification when the water is too cold.
-- Send a notification when water is flowing for too long.
\ No newline at end of file
+- Send a notification when water is flowing for too long.
diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown
index e901115ca20..cbf4c35e436 100644
--- a/source/_integrations/webostv.markdown
+++ b/source/_integrations/webostv.markdown
@@ -1,6 +1,6 @@
---
-title: LG webOS Smart TV
-description: Instructions on how to integrate a LG webOS Smart TV within Home Assistant.
+title: LG webOS TV
+description: Instructions on how to integrate a LG webOS TV within Home Assistant.
ha_category:
- Media player
- Notifications
@@ -18,7 +18,7 @@ ha_platforms:
ha_integration_type: integration
---
-The `webostv` platform allows you to control a [LG](https://www.lg.com/) webOS Smart TV.
+The `webostv` platform allows you to control a [LG](https://www.lg.com/) webOS TV.
There is currently support for the following device types within Home Assistant:
@@ -29,15 +29,40 @@ To begin with enable *LG Connect Apps* feature in *Network* settings of the TV.
{% include integrations/config_flow.md %}
-## Turn on action
+{% configuration_basic %}
+Host:
+ description: "The Hostname or IP address of your TV. You can find it in your router."
+{% endconfiguration_basic %}
-If you want to use an automation to turn on an LG webOS Smart TV, install an {% term integration %} such as the [HDMI-CEC](/integrations/hdmi_cec/) or [WakeOnLan](/integrations/wake_on_lan/). They provide an action that can be used for that.
+## Configuration options
+The integration provides the following configuration options:
+
+{% configuration_basic %}
+Sources:
+ description: It is possible to select which sources will be available to the media player. When the TV is powered on press the **CONFIGURE** button in the {% term integration %} card and select the sources to enable. If you don't select any source the media player will offer all of the sources of the TV.
+{% endconfiguration_basic %}
+
+## Supported devices
+
+LG webOS TV devices running webOS 2.0 and above.
+
+## Actions
+
+The integration provides the following actions.
+
+### Action: Turn on
+
+The `webostv.turn_on` action is used to create an automation to turn on the TV using the media player power button.
+
+| Data attribute | Optional | Description |
+| ---------------------- | -------- | ---------------------------------------------------- |
+| `entity_id` | no | Entity requested to turn on. For example `media_player.lg_webos_tv`|
+
+If you want to use an automation to turn on an LG webOS TV, install an {% term integration %} such as the [HDMI-CEC](/integrations/hdmi_cec/) or [WakeOnLan](/integrations/wake_on_lan/). They provide an action that can be used for that.
Common for webOS 3.0 and higher would be to use WakeOnLan feature. To use this feature your TV should be connected to your network via Ethernet rather than Wireless and you should enable the *LG Connect Apps* feature in *Network* settings of the TV (or *Mobile App* in *General* settings for older models) (*may vary by version).
-On newer models (2017+), WakeOnLan may need to be enabled in the TV settings by going to Settings > General > Mobile TV On > Turn On Via WiFi [instructions](https://support.quanticapps.com/hc/en-us/articles/115005985729-How-to-turn-on-my-LG-Smart-TV-using-the-App-WebOS-).
-
{% important %}
This usually only works if the TV is connected to the same network. Routing the WakeOnLan packet to a different subnet requires special configuration on your router or may not be possible.
{% endimportant %}
@@ -53,7 +78,7 @@ automation:
- alias: "Turn On Living Room TV with WakeOnLan"
triggers:
- trigger: webostv.turn_on
- entity_id: media_player.lg_webos_smart_tv
+ entity_id: media_player.lg_webos_tv
actions:
- action: wake_on_lan.send_magic_packet
data:
@@ -62,11 +87,87 @@ automation:
Any other [actions](/docs/automation/action/) to power on the device can be configured.
-## Sources
+### Action: Select sound output
-It is possible to select which sources will be available to the media player. When the TV is powered on press the **CONFIGURE** button in the {% term integration %} card and select the sources to enable. If you don't select any source the media player will offer all of the sources of the TV.
+The `webostv.select_sound_output` action is used to select the active sound output.
+The current sound output of the TV can be found under the state attributes.
-### Switching source with automation
+| Data attribute | Optional | Description |
+| ---------------------- | -------- | --------------------------------------- |
+| `entity_id` | no | Target a specific webostv media player. |
+| `sound_output` | no | Name of the sound output to switch to. |
+
+### Action: Button press
+
+The `webostv.button` action is used to simulate a button press.
+
+| Data attribute | Optional | Description |
+| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `entity_id` | no | Target a specific webostv media player. |
+| `button` | no | Name of the button. Known possible values are `LEFT`, `RIGHT`, `DOWN`, `UP`, `HOME`, `MENU`, `BACK`, `ENTER`, `DASH`, `INFO`, `ASTERISK`, `CC`, `EXIT`, `MUTE`, `RED`, `GREEN`, `BLUE`, `YELLOW`, `VOLUMEUP`, `VOLUMEDOWN`, `CHANNELUP`, `CHANNELDOWN`, `PLAY`, `PAUSE`, `NETFLIX`, `GUIDE`, `AMAZON`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9` |
+
+### Action: Generic command
+
+The `webostv.command` action is used to send a generic command to the TV.
+
+| Data attribute | Optional | Description |
+| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `entity_id` | no | Target a specific webostv media player. |
+| `command` | no | Endpoint for the command, e.g., `system.launcher/open`. The full list of known endpoints is available at |
+| `payload` | yes | An optional payload to provide to the endpoint in the format of key value pair(s). |
+
+```yaml
+script:
+ home_button:
+ sequence:
+ - action: webostv.button
+ target:
+ entity_id: media_player.lg_webos_tv
+ data:
+ button: "HOME"
+
+ open_google_command:
+ sequence:
+ - action: webostv.command
+ target:
+ entity_id: media_player.lg_webos_tv
+ data:
+ command: "system.launcher/open"
+ payload:
+ target: https://www.google.com
+```
+
+### Action: Notify
+
+The `notify` platform allows you to send notifications to a LG webOS TV.
+The icon can be overridden for individual notifications by providing a path to an alternative icon image to use:
+
+| Data attribute | Optional | Description |
+| ---------------------- | -------- | --------------------------------------- |
+| `entity_id` | no | Target a specific webostv media player. |
+| `message` | no | Message to be displayed on the TV. |
+| `icon` | yes | Optional icon to be shown with the notification. |
+
+```yaml
+automation:
+ - alias: "Front door motion"
+ triggers:
+ - trigger: state
+ entity_id: binary_sensor.front_door_motion
+ to: "on"
+ actions:
+ - action: notify.livingroom_tv
+ data:
+ message: "Movement detected: Front Door"
+ data:
+ icon: "/home/homeassistant/images/doorbell.png"
+```
+
+## Data updates
+
+LG webOS TV devices are automatically pushing data to Home Assistant.
+
+## Switching source with automation
Imagine you want your LG TV to automatically switch to a specific source when it turns on. Below is a simple automation example that launches `YouTube` after the TV is switched on.
It leverages `select_source` action from the [Media player](/integrations/media_player/) integration to launch a specific app installed on your LG TV.
@@ -76,10 +177,10 @@ To find available sources for your TV
1. Go to {% my developer_states title="**Developer Tools** > **States**" %}.
2. Find your TV's media_player entity.
3. Look for the `source_list` attribute which contains all available sources.
-
+
{% tip %}
Source list example: `source_list: ARD Mediathek, Apps, HDMI 1, Home Dashboard, JBL Bar 1300, Media Player, Netflix, Prime Video, Public Value, Spotify - Music and Podcasts, Timer, Web Browser, YouTube, ZDFmediathek`
-{% endtip %}
+{% endtip %}
The automation can be created entirely through the Home Assistant UI. When setting it up, you'll only need to manually enter the source name (for example, "YouTube") in the action configuration. Below is the YAML code generated as a result:
@@ -115,7 +216,7 @@ The `play_media` action can be used in a script to switch to the specified TV ch
# Example action entry in script to switch to channel number 1
action: media_player.play_media
target:
- entity_id: media_player.lg_webos_smart_tv
+ entity_id: media_player.lg_webos_tv
data:
media_content_id: 1
media_content_type: "channel"
@@ -123,7 +224,7 @@ data:
# Example action entry in script to switch to channel including 'TF1' in its name
action: media_player.play_media
target:
- entity_id: media_player.lg_webos_smart_tv
+ entity_id: media_player.lg_webos_tv
data:
media_content_id: "TF1"
media_content_type: "channel"
@@ -136,81 +237,27 @@ The behavior of the next and previous buttons is different depending on the acti
- if the source is 'LiveTV' (television): next/previous buttons act as channel up/down
- otherwise: next/previous buttons act as next/previous track
-### Sound output
+## Troubleshooting
-The current sound output of the TV can be found under the state attributes.
-To change the sound output, the following action is available:
+### Device is not automatically detected
-#### Action `webostv.select_sound_output`
+This integration uses the [SSDP](/integrations/ssdp) integration, which must be enabled for device discovery to work.
-| Data attribute | Optional | Description |
-| ---------------------- | -------- | --------------------------------------- |
-| `entity_id` | no | Target a specific webostv media player. |
-| `sound_output` | no | Name of the sound output to switch to. |
+### [WakeOnLan](/integrations/wake_on_lan/) does not work
-### Generic commands and buttons
+On newer models (2017+), WakeOnLan may need to be enabled in the TV settings by going to **Settings** > **General** > **Mobile TV On** > **Turn On Via WiFi** [instructions](https://support.quanticapps.com/hc/en-us/articles/115005985729-How-to-turn-on-my-LG-Smart-TV-using-the-App-WebOS-).
-Available actions: `button`, `command`
+### Pairing fails when trying to add the TV
-### Action `webostv.button`
+Make sure to enable *LG Connect Apps* feature in *Network* settings of the TV.
-| Data attribute | Optional | Description |
-| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `entity_id` | no | Target a specific webostv media player. |
-| `button` | no | Name of the button. Known possible values are `LEFT`, `RIGHT`, `DOWN`, `UP`, `HOME`, `MENU`, `BACK`, `ENTER`, `DASH`, `INFO`, `ASTERISK`, `CC`, `EXIT`, `MUTE`, `RED`, `GREEN`, `BLUE`, `YELLOW`, `VOLUMEUP`, `VOLUMEDOWN`, `CHANNELUP`, `CHANNELDOWN`, `PLAY`, `PAUSE`, `NETFLIX`, `GUIDE`, `AMAZON`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9` |
+## Known limitations
-### Action `webostv.command`
+- If Home Assistant and your TV are not on the same network, you need to create a firewall rule, which allows a connection on ports 3000 & 3001 with the TCP protocol from Home Assistant to your TV.
+- Most newer TV firmware does not allow passing the `icon` parameter to the `notify` command, the TV will ignore the icon and only display the message.
-| Data attribute | Optional | Description |
-| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `entity_id` | no | Target a specific webostv media player. |
-| `command` | no | Endpoint for the command, e.g., `system.launcher/open`. The full list of known endpoints is available at |
-| `payload` | yes | An optional payload to provide to the endpoint in the format of key value pair(s). |
+## Removing the integration
-### Example
+This integration follows standard integration removal. No extra steps are required.
-```yaml
-script:
- home_button:
- sequence:
- - action: webostv.button
- target:
- entity_id: media_player.lg_webos_smart_tv
- data:
- button: "HOME"
-
- open_google_command:
- sequence:
- - action: webostv.command
- target:
- entity_id: media_player.lg_webos_smart_tv
- data:
- command: "system.launcher/open"
- payload:
- target: https://www.google.com
-```
-
-## Notifications
-
-The `webostv` notify platform allows you to send notifications to a LG webOS Smart TV.
-
-The icon can be overridden for individual notifications by providing a path to an alternative icon image to use:
-
-```yaml
-automation:
- - alias: "Front door motion"
- triggers:
- - trigger: state
- entity_id: binary_sensor.front_door_motion
- to: "on"
- actions:
- - action: notify.livingroom_tv
- data:
- message: "Movement detected: Front Door"
- data:
- icon: "/home/homeassistant/images/doorbell.png"
-```
-
-## Notes
-
-If Home Assistant and your TV are not on the same network, you need to create a firewall rule, which allows a connection on ports 3000 & 3001 with the TCP protocol from Home Assistant to your TV.
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/weheat.markdown b/source/_integrations/weheat.markdown
index 4d383d6666d..4be775ebe6c 100644
--- a/source/_integrations/weheat.markdown
+++ b/source/_integrations/weheat.markdown
@@ -12,12 +12,17 @@ ha_codeowners:
- '@jesperraemaekers'
ha_domain: weheat
ha_platforms:
+ - binary_sensor
- sensor
ha_integration_type: integration
---
The **Weheat** {% term integration %} allows you to display your [Weheat](https://www.weheat.nl/) devices through Home Assistant.
+## Supported devices
+
+The Blackbird, Sparrow and Flint heat pumps are supported.
+
## Prerequisites
- You need a Weheat account, **username**, and **password**
@@ -59,3 +64,25 @@ Depending on the model/installation, states for the Indoor Unit states are avail
- **Indoor unit DHW valve or water pump**
- **Indoor unit gas boiler heating allowed** - Note: This may be True even when no gas boiler is installed or active at this time.
- **Indoor unit electric heater**
+
+## Data updates
+
+The integration is {% term polling %} and retrieves data every 30 seconds from the cloud.
+
+## Actions
+
+This integration does not provide any actions.
+
+## Known limitations
+
+There is currently no way to control the heat pump via this integration.
+
+## Troubleshooting
+
+In case no devices are discovered, make sure that you can log in to the [Weheat portal](https://portal.weheat.nl) and the correct heat pumps are visible there. If they are available there, contact Weheat support.
+
+## Remove integration
+
+This integration follows standard integration removal, no extra steps are required.
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown
index 4233856ed3e..f585dbe67dc 100644
--- a/source/_integrations/withings.markdown
+++ b/source/_integrations/withings.markdown
@@ -16,6 +16,7 @@ ha_platforms:
- diagnostics
- sensor
ha_integration_type: integration
+ha_dhcp: true
---
The **Withings** {% term integration %} consumes data from various health products produced by [Withings](https://www.withings.com).
diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown
index 067f3ac54b4..6827d51c485 100644
--- a/source/_integrations/workday.markdown
+++ b/source/_integrations/workday.markdown
@@ -26,7 +26,7 @@ This can be used to make daily automations that act differently on workdays than
## Setup
-Check the [country list](https://github.com/dr-prodigy/python-holidays#available-countries) for available provinces (and other subdivisions, like states and territories) for each country.
+Check the [country list](https://github.com/vacanza/holidays#available-countries) for available provinces (and other subdivisions, like states and territories) for each country.
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/wyoming.markdown b/source/_integrations/wyoming.markdown
index 7550079d424..b33dcc331b2 100644
--- a/source/_integrations/wyoming.markdown
+++ b/source/_integrations/wyoming.markdown
@@ -11,6 +11,7 @@ ha_codeowners:
ha_domain: wyoming
ha_integration_type: service
ha_platforms:
+ - assist_satellite
- binary_sensor
- conversation
- number
diff --git a/source/_integrations/zabbix.markdown b/source/_integrations/zabbix.markdown
index 2cd7e7e8c16..361d481c770 100644
--- a/source/_integrations/zabbix.markdown
+++ b/source/_integrations/zabbix.markdown
@@ -14,6 +14,8 @@ related:
- docs: /docs/configuration/
title: Configuration file
ha_quality_scale: legacy
+ha_codeowners:
+ - '@kruton'
---
The **Zabbix** {% term integration %} is the main {% term integration %} to connect to a [Zabbix](https://www.zabbix.com/) monitoring instance via the Zabbix API.
diff --git a/source/_posts/2025-01-03-3-2-1-backup.markdown b/source/_posts/2025-01-03-3-2-1-backup.markdown
new file mode 100644
index 00000000000..cdb91af5876
--- /dev/null
+++ b/source/_posts/2025-01-03-3-2-1-backup.markdown
@@ -0,0 +1,80 @@
+---
+layout: post
+title: "3โฆ2โฆ1โฆ Backup"
+description: "Stop what you're doing and take 5 minutes to set up automatic encrypted backups to keep your smart home running smoothly."
+date: 2025-01-03 00:00:01
+date_formatted: "January 3, 2025"
+author: Paulus Schoutsen
+comments: true
+categories: Announcements
+og_image: /images/blog/2025-01-backups/art.jpg
+---
+
+
+
+Home Assistant is a powerful tool that can save you time and money by automating your home. Pretty important things around the home, from heating to an automatic fish feeder, need to depend on it. However, as your setup grows more complex, maintaining itโwhat we call *"digital housekeeping"*โcan become a time-consuming task. Backups are a critical part of this maintenance, yet theyโre often overlooked, especially by new users, often until it is too late when disaster strikes.
+
+To make backups effortless, weโve introduced new automated and off-site backup features in [the latest release of Home Assistant](/blog/2025/01/03/release-20251/). These improvements will make it easier than ever to safeguard your setup. As we step into the New Year, we would encourage you to adopt a simple yet crucial resolution: regularly back up your data. With our new tools, it takes just five minutes to set up and provides lasting peace of mind.
+
+Learn more about our backups below, or get started now by [updating](https://my.home-assistant.io/redirect/updates/) and visiting the [backups](https://my.home-assistant.io/redirect/backup/) page.
+
+
+
+## Whatโs in a backup?
+Backups are essential for a reliable smart home. They protect your system from hardware failures, natural disasters, and cyberattacks, allowing you to quickly restore operations. A solid backup strategy follows the 3-2-1 rule:
+
+- 3 copies of your data
+- 2 stored on different media
+- 1 kept off-site
+
+While this may seem excessive, consider a scenario like a lightning strike: both your Home Assistant system and any local storage, like network-attached storage (NAS), could be destroyed. Thatโs why an off-site backup is non-negotiable for true resilience, and a comprehensive backup strategy should include:
+
+- Regular and frequent backups of critical data
+- Following the 3-2-1 rule for redundancy
+- Encrypting backups to protect against theft and corruption
+- Testing backups to ensure they are functional
+- Defining how long backups should be retained
+
+To support these best practices, we have worked hard to introduce Automatic Backups and seamless integration with off-site backup location providers, such as [Home Assistant Cloud](/cloud/). These updates, part of [our 2024 roadmap](/blog/2024/06/12/roadmap-2024h1/#home-assistant-cloud-peace-of-mind), make it easier than ever to provide peace of mind to our users, by implementing a robust backup strategy, and keep your smart home running smoothly.
+
+## Backups have never been this easy
+
+
+
+Home Assistant backups are incredibly good, backing up every setting and add-on, making restores feel a bit like magic. It even works across different CPU architectures! Up until recently setting up a 3-2-1 backup strategy in Home Assistant was not entirely straightforward. This changes with Home Assistant 2025.1, where we're elevating our backup experience with three new important features.
+
+- **Automatic encrypted backups** - You can now schedule automatic backups every night or once a week, ensuring you always have a recent backup at hand.
+- **Automatic cleanup** - No longer worry about backups overrunning your disk space, as you can now set the maximum number of backups that should be stored.
+- **Backup locations** - We have added a new system for integrations to provide backup locations (also known as [backup agents](https://developers.home-assistant.io/docs/core/platform/backup)), allowing you to sync backups to both local or off-site storage. It's launching with support for [network shares](https://my.home-assistant.io/redirect/storage/) and [Home Assistant Cloud](https://my.home-assistant.io/redirect/cloud/) (included at no additional cost to subscribers), with more locations to follow.
+
+### Get started with our Backup Wizard
+
+
+
+The new automatic backup feature in Home Assistant 2025.1 comes with a new easy to use backup wizard. With a couple of clicks, you can backup your Home Assistant system on a regular schedule and easily choose the places where backups are stored. New users will be prompted with a wizard to make sure they set up automatic encrypted backups. Selecting the recommended settings ensures that a backup is made every night, that three backups are kept, and that they are uploaded to all available locations.
+
+### Backup locations
+
+
+
+At launch, only a few backup locations will be available, but we've made it easy for developers to integrate more, so expect a lot of options to follow. As part of this renewed focus on smart home resilience set out in [our roadmap](/blog/2024/06/12/roadmap-2024h1/#next-priority-encrypted-cloud-backup), cloud backup has been added to [Home Assistant Cloud](/cloud/), which will be available day one to all subscribers for no additional cost. It will only store the latest backup, which must be under 5GB (you'll be notified to repair it if it is too large to upload). If you lose your other backups, you can always go to [your Cloud account page](https://account.nabucasa.com/) and download the latest backup.
+
+New Home Assistant features like this supercharged backup capability is only possible with funding from our Home Assistant Cloud subscribers. Adding backup to the subscription at no additional cost, was the least we could do to thank them for their continued support.
+
+### Secure by default
+
+
+
+Backups contain all Home Assistant data, including all the keys to every integrated device in your smart home and the history of how you live your life. This data is very important to keep secure. With automatic backups and the 3-2-1 approach we are promoting to users to store their backups off-site. This is why all automatic backups are fully encrypted.
+
+When a user configures automatic backups, they will be presented with the encryption key and the option to download an emergency kit. The emergency kit contains all the important information, including a link to [the instructions on how to use it to restore a backup](/more-info/backup-emergency-kit). If you were to ever delete your emergency kit, it is available to re-download in the [backup configuration page](https://my.home-assistant.io/redirect/backup/).
+
+#### Apply 3-2-1 to your backups
+
+
+
+Check out the above video tutorial or read our docs to learn more about setting up [automatic and off-site backups](/integrations/backup/).
+
+## Conclusion
+
+Too often, people just starting their smart home journey move forward a little too fast and make a mistake that causes some downtime. This impacts the household's confidence, as something that should be making their lives easier is actually seen as unreliable. Avoid this early pitfall and build a resilient smart home with 3-2-1 backups.
diff --git a/source/_posts/2025-01-03-release-20251.markdown b/source/_posts/2025-01-03-release-20251.markdown
new file mode 100644
index 00000000000..54c4a1f06a0
--- /dev/null
+++ b/source/_posts/2025-01-03-release-20251.markdown
@@ -0,0 +1,1019 @@
+---
+layout: post
+title: "2025.1: Backing Up into 2025!"
+description: "A complete overhaul of the backup system, including Home Assistant Cloud backup storage, retention policies, and fully extendable by integrations. Lots of Month of 'What the Heck?!' improvements, new integrations, and more!"
+date: 2025-01-03 00:00:00
+date_formatted: "January 3, 2025"
+author: Franck Nijhof
+author_twitter: frenck
+comments: true
+categories:
+ - Release-Notes
+ - Core
+og_image: /images/blog/2025-01/social.jpg
+---
+
+
+
+Home Assistant 2025.1! ๐ฅ
+
+Happy New Year! The whole Home Assistant project wishes you and your loved ones
+a fantastic and healthy 2025! โค๏ธ Let's make this year even better than the last!
+
+We are all super excited to kick off the new year with an absolute **massive**
+release! ๐
+
+This release brings a complete overhaul of the backup system in Home Assistant,
+which has been in the works for months! And I'm not just talking about some
+user interface changesโno, we are talking about a complete overhaul from front
+to back!
+
+Automated backups, encrypted Home Assistant Cloud backup storage, retention
+policies, configuration wizards, and even the ability for integrations to offer
+backup storage locations! ๐คฏ
+
+But that is not all! We also had the [Month of โWhat the Heck?!โ](/blog/2024/11/30/the-month-of-what-the-heck/)
+in December, which resulted in a lot of quality-of-life improvements raised
+by the community that month!
+
+There is so much to unwrap in this release, seriously, let's just dive in!
+
+Enjoy the release!
+
+../Frenck
+
+
+
+- [Overhaul of the backup system](#overhaul-of-the-backup-system)
+ - [Automated backups ๐ค](#automated-backups-)
+ - [Triggering an off-schedule automated backup ๐](#triggering-an-off-schedule-automated-backup-)
+ - [Home Assistant Cloud backups ๐](#home-assistant-cloud-backups-)
+ - [Backup locations are extendable by design ๐งฉ](#backup-locations-are-extendable-by-design-)
+ - [Encrypted backups by default ๐](#encrypted-backups-by-default-)
+ - [Restoring backups available to all installation methods ๐ค](#restoring-backups-available-to-all-installation-methods-)
+ - [Backup retention ๐](#backup-retention-)
+ - [Setting up backups for the first time ๐](#setting-up-backups-for-the-first-time-)
+ - [3โฆ2โฆ1โฆ Backups ๐](#321-backups-)
+- [Month of "What the Heck?!"](#month-of-what-the-heck)
+ - [Setting categories and labels when creating automations and scripts](#setting-categories-and-labels-when-creating-automations-and-scripts)
+ - [Quickly navigate to a device](#quickly-navigate-to-a-device)
+ - [Zoom \& Pan for charts](#zoom--pan-for-charts)
+ - [Controlling the default exposure of new entities to Assist](#controlling-the-default-exposure-of-new-entities-to-assist)
+ - [More "What the Heck?!" improvements](#more-what-the-heck-improvements)
+- [Integrations](#integrations)
+ - [New integrations](#new-integrations)
+ - [Noteworthy improvements to existing integrations](#noteworthy-improvements-to-existing-integrations)
+ - [Now available to set up from the UI](#now-available-to-set-up-from-the-ui)
+ - [Farewell to the following](#farewell-to-the-following)
+- [Other noteworthy changes](#other-noteworthy-changes)
+- [Dashboard background settings](#dashboard-background-settings)
+- [Media player volume feature for Tile card](#media-player-volume-feature-for-tile-card)
+- [Patch releases](#patch-releases)
+ - [2025.1.1 - January 7](#202511---january-7)
+ - [2025.1.2 - January 9](#202512---january-9)
+ - [2025.1.3 - January 20](#202513---january-20)
+- [Need help? Join the community!](#need-help-join-the-community)
+- [Backward-incompatible changes](#backward-incompatible-changes)
+- [All changes](#all-changes)
+
+## Overhaul of the backup system
+
+Letโs talk about backups. Letโs be honest: theyโre one of the most important yet
+often overlooked tasks. But when disaster strikes, like a hardware failure,
+having a reliable backup can save the day. Wouldn't you love to be back up and
+running after disaster strikes?
+
+While Home Assistant's previous backup system has proven to be solid
+and reliable over the years, it didn't exactly make following best
+practicesโlike regular backups, encryption, and off-site
+storageโeasy. Many of you had to rely on custom add-ons, automations,
+or blueprints for backups to fill the gaps.
+
+**That changes with this release! ๐**
+
+We've completely reworked the Home Assistant backup experience to help you set
+up a solid backup strategy, using best practices in just a few clicks;
+giving you peace of mind when it comes to your backups.
+
+No worries, if you are using any custom solution for backups, they will continue
+to work today. Even with everything new, we've made sure to keep everything
+backward compatible.
+
+So, without further ado, let's dive into the new backup system!
+
+### Automated backups ๐ค
+
+Yes, you read that rightโHome Assistant now supports automated backups!
+
+Using a schedule, backups will be created on a regular basis without you having
+to lift a finger. This ensures you always have a recent backup available,
+without having to worry about it.
+
+
+
+When you navigate to your backups in the settings menu, you will be
+greeted with a new overview page that shows you exactly when your last backup
+took place and when the next one is scheduled. Instant peace of mind!
+
+Automated backups are taking place at 4:45 AM. So, while everyone in your home
+is sleeping, Home Assistant makes sure your data is safe and sound. Backing up
+at this early hour also means Home Assistant is done with its internal database
+maintenance, ensuring your backup is as compact as possible.
+
+If something ever goes wrong during the automated scheduled backup process,
+Home Assistant will notify you through the repair center, ensuring you are
+aware of it and can take action.
+
+### Triggering an off-schedule automated backup ๐
+
+Automated backups on a schedule are great, but sometimes, you might want to
+trigger a backupย **right now**! Maybe you are about to make big changes or
+upgrade a whole bunch of things during an evening of tinkering.
+
+No worries! You can now trigger an off-schedule automated backup from the backup
+page at any time. This will immediately create a backup with the same
+configuration as your scheduled automated backups.
+
+
+
+The ability to trigger an on-demand automated backup is excellent, as it covers
+all your backup settings in a single click. However, the ability to create
+manual backups also still exists. This allows you to create a very specific
+backup with the exact contents you want to have in it.
+
+### Home Assistant Cloud backups ๐
+
+Are you a [Home Assistant Cloud by Nabu Casa] subscriber? Then you're in for a
+treat! You can now automatically store your latest, fully encrypted, backup in
+your Home Assistant Cloud account.
+
+**This feature provides 5GB of storage at no extra cost, offering fully
+encrypted off-site protection for your data! ๐**
+
+
+
+The backup can be downloaded from Home Assistant itself, but also from the
+[Home Assistant Cloud account page](https://account.nabucasa.com/) @ Nabu Casa
+in case you need it. This way, you can always access your latest backup, even
+in case your Home Assistant hardware completely fails.
+
+[Home Assistant Cloud by Nabu Casa]: https://www.nabucasa.com/
+
+### Backup locations are extendable by design ๐งฉ
+
+So, automated backups can be stored on your local disk and in Home Assistant
+Cloud, but what if you want to store your backups somewhere else?
+
+Choice is an important aspect of Home Assistant; we want to make everything as
+flexible as possible without vendor lock-in. Therefore, the backup system
+is designed to be **extendable**.
+
+This means **integrations** can offer new storage locationsโsuch as NAS devices,
+Google Drive, Backblaze B2, or other storage providersโin the future.
+
+
+
+Currently, this feature is brand new โจ, so **no** integrations offer additional
+locations yet. However, we expect to see a few more integrations that provide
+backup locations in the next release.
+
+This extensibility ensures you can store your backups where you want them,
+giving you the flexibility and choice to choose the storage solution you
+prefer and trust.
+
+### Encrypted backups by default ๐
+
+With the addition of Home Assistant Cloud as an off-site backup location, and
+the potential for integrations to offer even more (off-site) backup locations,
+security has become more important than ever. Your backups not only contain the
+access credentials to your smart home devices but also the history of your home,
+and no one should be able to access information that sensitive! **Ever!**
+
+That is why all backups are now [AES-128] encrypted by default. To prioritize
+your backupsโ security we replaced the previous optional password
+with a mandatory encryption key.
+
+
+
+When you set up your backups for the first time, an encryption key will be
+generated for you. Make sure to store this key in a safe place, as you will need
+it to restore your backups. To make this easier, you can download the key as
+part of an emergency kit during setupโor anytime later from the backup settings
+page. Keep it safe! ๐
+
+[AES-128]: https://en.wikipedia.org/wiki/Advanced_Encryption_Standard
+
+### Restoring backups available to all installation methods ๐ค
+
+More good newsโrestoring backups is now supported across
+**all installation methods!** ๐
+
+Previously, only Home Assistant OS installations could restore backups. But
+with this release, this feature is now available for all installation methods!
+No matter how you run Home Assistant, even if you use our containers in a Docker
+environment, you can now restore your Home Assistant backups.
+
+This also means you can restore backups from local storage, Home Assistant
+Cloud, or any future backup locations added through integrations.
+
+As a matter of fact, all backup features, including everything we release today,
+will be available regardless of the installation method you are using. We want
+everyone to have a solid backup strategy.
+
+### Backup retention ๐
+
+Our previous backup system made solid backups, which was good, but if you didn't
+clean them up manually, eventually, you'd annoyingly run out of disk space. ๐ฌ
+
+So! Backup retention is now a thing! You can now configure how many backups you
+want to keep, and Home Assistant will handle the rest.
+
+
+
+This cleanup will happen automatically after each backup. If you create a backup
+manually for whatever reason, those will remain untouched, giving you full
+control over special cases and workflows.
+
+### Setting up backups for the first time ๐
+
+Getting started with the new backup system is quick and easy!
+
+The first time you open the backup settings after upgrading, you will be greeted
+by a **setup wizard** that will guide you through setting up your backups
+step-by-step.
+
+
+
+The wizard will help you set up your encryption key, configure your backup
+frequency, and set up your backup retention policy. And when it is ready, it
+will immediately kick off your first backup!
+
+All set! One less thing to worry about ๐
+
+### 3โฆ2โฆ1โฆ Backups ๐
+
+We are super excited about this new backup system! As we enter the new year,
+we encourage you to get serious about your backups.
+A good New Yearโs resolution, maybe? ๐
+
+So, stop what you are doing right now and set up your backups! Go ahead and set
+up that 3-2-1 backup strategy. Not sure what that is?
+
+**You can read all about it in our [3โฆ2โฆ1โฆ Backup blog post](/blog/2025/01/03/3-2-1-backup/).**
+
+## Month of "What the Heck?!"
+
+Decemberโs **[Month of โWhat the Heck?!โ](/blog/2024/11/30/the-month-of-what-the-heck/)**
+was an absolute blast! ๐
+
+A big thank you to everyone who contributed by sharing their โWhat the Heck?!โ
+moments and ideas for improving Home Assistant. Your input is incredibly
+valuable and helps shape our roadmap and priorities moving forward.
+
+Quite a bunch of shared "What the Heck?!" moments have been addressed in this
+release already ๐ โand weโre not stopping there! Expect to see even more
+improvements inspired by your feedback in upcoming releases.
+
+### Setting categories and labels when creating automations and scripts
+
+For the first WTH item that has been resolved, we have [@jpbede] to thank!
+And this one is also one of the higher-voted ones, so it is a good one!
+Andrew Jackson wrote:
+
+[_**"WTH can you not add categories, labels etc when creating an automation"**_](https://community.home-assistant.io/t/wth-can-you-not-add-categories-labels-etc-when-creating-an-automation/802562)
+
+Yeah, that is a good WTH! Whenever you create a new automation or script, you
+probably want to organize it right away and not have to go back to the settings.
+**FIXED**! ๐
+
+
+
+When you create a new automation or script, and also when renaming it,
+you can now set the description, category, labels, and areas right away!
+๐ท๏ธ Nice!
+
+### Quickly navigate to a device
+
+You might be aware that you can bring up our quick navigation bar anywhere in
+Home Assistant by pressing theย `c`ย key on your keyboard to navigate various
+places and theย `e`ย key to search and navigate to any entity. Howeverโฆ
+
+[_**"WTH is there no quick bar for devices?"**_](https://community.home-assistant.io/t/wth-is-there-no-quick-bar-for-devices/802310)
+
+Well, that is a good question that Andreas Brett raised! There is indeed no
+such thing for devices. [@jpbede] to the rescue! You can now navigate to any
+device using the quick bar by pressing the `d` key on your keyboard.
+
+
+
+### Zoom & Pan for charts
+
+KNXBroker raised the following WTH topic:
+
+[_**"WTH lets upgrade History Graphs"**_](https://community.home-assistant.io/t/wth-lets-upgrade-history-graphs/802568)
+
+You are right! The history graphs in Home Assistant are basic but functional!
+Nevertheless, we can do better! ๐
+
+One of the bigger items in that WTH topic was the ability to zoom and pan...
+Thanks toย [@MindFreeze], you can now zoom and pan in any graph
+in Home Assistant! ๐
+
+
+
+Zoom and drag any graph in Home Assistant, by holding ctrl (or command on mac)
+and scrolling your mouse wheel!
+
+
+Hold the control key (or command on macOS) and scroll to zoom in and out using
+your mouse. You can also click and drag to pan around the zoomed graph.
+
+In addition to this change,ย [@MindFreeze]ย enabled small micro-animation for the
+history graphs, making them look more alive and less static.
+
+[@MindFreeze]: https://github.com/MindFreeze
+
+### Controlling the default exposure of new entities to Assist
+
+mathd made the following point in a Month of "What the Heck?!" topic:
+
+[_"WTH Are all new entities exposed to Assist by default?"_](https://community.home-assistant.io/t/wth-are-all-new-entities-exposed-to-assist-by-default/803889)
+
+We hear you! Thanks to [@jpbede], you can now control the default exposure of
+new entities to Assist. You can now toggle this on or off in the Home Assistant
+Voice Assistant settings.
+
+
+
+### More "What the Heck?!" improvements
+
+Many smaller improvements originate from the Month of โWhat the Heck?!โ in this
+release. Here are some of the other noteworthy ones:
+
+[_**"WTH there is no hotkey for Assist"**_](https://community.home-assistant.io/t/wth-there-is-no-hotkey-for-assist/802403)**
+
+Well, thanks to [@jpbede], you can now press the `a` key on your keyboard
+anywhere in Home Assistant to summon Assist! ๐๏ธ Nice!
+
+[_**"WTH doesn't HA ask if I want to save automations?"**_](https://community.home-assistant.io/t/wth-doesnt-ha-ask-if-i-want-to-save-automations/804030)
+
+Whoa! That is a good one! Thanks to [@jpbede], Home Assistant will now ask if
+you want to save your automation before leaving the editor if there are unsaved
+changes. ๐ค
+
+[_**"WTH Is in Energy Dashboard the individual devices not able to reorder"**_](https://community.home-assistant.io/t/wth-is-in-energy-dashboard-the-individual-devices-not-able-to-reorder/805051)
+
+Thanks for that one yormedia! Honestly, this one has been raised in previous
+editions of the Month of "What the Heck?!" a few times. Reason enough for
+[@karwosts] to pick this up and make it happen! You can now reorder them in
+the setting for categorization purposes. ๐ก
+
+[_**"WTH Can't I filter labels within a table filter?"**_](https://community.home-assistant.io/t/wth-cant-i-filter-labels-within-a-table-filter/802529)
+
+Good question. If you have a lot of labels, scrolling through the list of labels
+in the filter option can be a bit cumbersome. Thanks to [@silamon], you can
+now search and filter through the labels in the filter option! ๐
+
+[_**WTH sentence trigger doesn't contain any context**_](https://community.home-assistant.io/t/wth-sentence-trigger-doesnt-contain-any-context/802386)
+
+Great idea! Thanks to [@balloob], the full conversation input is now available
+to sentence triggers! ๐ฃ๏ธ This was actually the first WTH item to be resolved in
+this edition! ๐
+
+[@balloob]: https://github.com/balloob
+[@jpbede]: https://github.com/jpbede
+[@karwosts]: https://github.com/karwosts
+[@silamon]: https://github.com/silamon
+
+## Integrations
+
+Thanks to our community for keeping pace with the new {% term integrations %}
+and improvements to existing ones! Youโre all awesome ๐ฅฐ
+
+### New integrations
+
+We welcome the following new integrations in this release:
+
+- **[Cookidoo]**, added by [@miaucl]
+ Interact with your shopping lists of [Cookidoo the official Thermomix recipe platform].
+- **[EHEIM Digital]**, added by [@autinerd]
+ Control your [EHEIM Digital aquarium devices] with Home Assistant.
+- **[Ituran]**, added by [@shmuelzon]
+ Retrieve and use information from your Ituran-equipped vehicle.
+- **[Ohme]**, added by [@dan-r]
+ Get sensor information from your Ohme smart EV charger.
+- **[Peblar]**, added by [@frenck]
+ Control and monitor the charging sessions of your [Peblar EV Charger].
+- **[Powerfox]**, added by [@klaasnicolaas]
+ Gather data from your [Poweropti] devices reading electricity, water, gas, and heat.
+- **[Slide Local]**, added by [@dontinelli]
+ Integrate your [Slide] cover device directly with Home Assistant using a local API.
+- **[Watergate]**, added by [@adam-the-hero]
+ Integrate your Watergate Sonic Local with Home Assistant.
+
+[@adam-the-hero]: https://github.com/adam-the-hero
+[@autinerd]: https://github.com/autinerd
+[@dan-r]: https://github.com
+[@dontinelli]: https://github.com/dontinelli
+[@frenck]: https://github.com/frenck
+[@klaasnicolaas]: https://github.com/klaasnicolaas
+[@miaucl]: https://github.com/miaucl
+[@shmuelzon]: https://github.com/shmuelzon
+[Cookidoo the official Thermomix recipe platform]: https://cookidoo.international/
+[Cookidoo]: /integrations/cookidoo
+[EHEIM Digital aquarium devices]: https://eheim.com/en_GB/aquatics/eheim-digital/
+[EHEIM Digital]: /integrations/eheimdigital
+[Ituran]: /integrations/ituran
+[Ohme]: /integrations/ohme
+[Peblar EV Charger]: https://www.peblar.com
+[Peblar]: /integrations/peblar
+[Powerfox]: /integrations/powerfox
+[Poweropti]: https://shop.powerfox.energy/collections/frontpage
+[Slide Local]: /integrations/slide_local
+[Slide]: https://slide.store/
+[Watergate]: /integrations/watergate
+
+### Noteworthy improvements to existing integrations
+
+It is not just new {% term integrations %} that have been added; existing
+integrations are also being constantly improved. Here are some of the noteworthy
+changes to existing integrations:
+
+- The [TP-Link Smart Home] now has support for cameras! Nice work [@sdb9696]!
+- [@RaHehl] added [UniFi Protect AI Port] support to the
+ [UniFi Protect integration]. Awesome!
+- The [Music Assistant integration] now has support for actions with response
+ values from your [Music Assistant]. Thanks, [@marcelveldt]!
+- The [Cambridge Audio] integration now supports media browsing!
+ Thanks, [@noahhusby]!
+- [@dotav] added the ability to control the combustion power of your
+ [Palazzetti] pellet stove. Nice!
+- The [SwitchBot Bluetooth integration] now supports the SwitchBot Water Leak
+ Detector and relay switch. Good work, [@luc-ass] and [@greyeee]!
+- [@davidrapan] has been working on the [Starlink integration], adding sensors
+ reporting power, energy, and data usage. Nice!
+
+[@davidrapan]: https://github.com/davidrapan
+[@dotav]: https://github.com/dotav
+[@greyeee]: https://github.com/greyeee
+[@luc-ass]: https://github.com/luc-ass
+[@marcelveldt]: https://github.com/marcelveldt
+[@noahhusby]: https://github.com/noahhusby
+[@RaHehl]: https://github.com/RaHehl
+[@sdb9696]: https://github.com/sdb9696
+[Cambridge Audio]: /integrations/cambridge_audio
+[Music Assistant integration]: /integrations/music_assistant
+[Music Assistant]: https://music-assistant.io/
+[Palazzetti]: /integrations/palazzetti
+[Starlink integration]: /integrations/starlink
+[SwitchBot Bluetooth integration]: /integrations/switchbot
+[TP-Link Smart Home]: /integrations/tplink
+[UniFi Protect AI Port]: https://store.ui.com/us/en/products/up-ai-port
+[UniFi Protect integration]: /integrations/unifiprotect
+
+### Now available to set up from the UI
+
+While most {% term integrations %} can be set up directly from the Home Assistant
+user interface, some were only available using YAML configuration. We keep moving
+more integrations to the UI, making them more accessible for everyone
+to set up and use.
+
+The following integration is now available via the Home Assistant UI:
+
+- **[Niko Home Control]**, done by [@VandeurenGlenn]
+
+[@VandeurenGlenn]: https://github.com/VandeurenGlenn
+[Niko Home Control]: /integrations/niko_home_control
+
+### Farewell to the following
+
+The following {% term integrations %} are also no longer available as
+of this release:
+
+- **DTE Energy Bridge** has been removed after being deprecated. The integration
+ was no longer functional.
+- **Simulated** has been previously deprecated and is now removed.
+- **Stookalert** has been removed. The upstream data is no longer updated.
+ The [Stookwijzer] integration is a good alternative to get the same information.
+
+[Stookwijzer]: /integrations/stookwijzer
+
+## Other noteworthy changes
+
+There are many more improvements in this release; here are some of the other
+noteworthy changes:
+
+- When viewing data tables and using `ctrl+f` in your browser to search, the
+ search input will now be focused automatically. As native browser searches
+ will not work on data tables. Thanks [@jpbede]!
+- [@marcinbauer85] adjusted the "Add card" dialog, to automatically focus on the
+ search field when you add a card, so you can start typing to search
+ right away! Nice touch!
+- Images uploaded through Home Assistant (for example, as background or as a
+ user profile picture) are now browsable in the media browser.
+ Thanks [@karwosts]!
+- The unit of measurement is now shown next to the numeric slider in the
+ more-info dialog of number entities. Thanks, [@abmantis]!
+- Home Assistant now supports `mWh` as a unit of measurement for energy sensors
+ and `mW` for electrical potential power sensors. Thanks [@agners]!
+- [@wendevlin] added settings and category overflow actions to the automation
+ and script editor (the three-dotted menu in the top right corner), making
+ it easier to access those straight from the editor. Nice!
+- The [logbook card] supports picking a target for things it should show
+ events for. You can now pick based on entities, devices, areas, floors,
+ and labels! Thanks, [@silamon]!
+
+[@abmantis]: https://github.com/abmantis
+[@agners]: https://github.com/agners
+[@jpbede]: https://github.com/jpbede
+[@karwosts]: https://github.com/karwosts
+[@marcinbauer85]: https://github.com/marcinbauer85
+[@silamon]: https://github.com/silamon
+[@wendevlin]: https://github.com/wendevlin
+[logbook card]: /dashboards/logbook/
+
+## Dashboard background settings
+
+A few releases ago, we made adding a background image to your dashboard easier.
+This release, [@silamon] takes it a step further by adding a lot of settings
+to customize how the background image is displayed.
+
+This includes support for tiled backgrounds, transparency, size settings,
+alignment, and allowing the background to scroll with the page or stay fixed.
+
+
+
+Nice! Thanks, [@silamon]!
+
+[@silamon]: https://github.com/silamon
+
+## Media player volume feature for Tile card
+
+This is a super nice addition from [@simon-zumbrunnen]! The Tile card now
+supports a media player volume slider feature. This feature allows you to
+control the volume of a media player directly from the Tile card. ๐
+Nice work Simon!
+
+
+
+[@simon-zumbrunnen]: https://github.com/simon-zumbrunnen
+
+## Patch releases
+
+We will also release patch releases for Home Assistant 2025.1 in January.
+These patch releases only contain bug fixes. Our goal is to release a patch
+release every Friday.
+
+### 2025.1.1 - January 7
+
+- Matter Battery replacement icon ([@lboue] - [#134460])
+- Small fix to allow playing of expandable favorites on Squeezebox ([@peteS-UK] - [#134572])
+- Bump bleak-esphome to 2.0.0 ([@bdraco] - [#134580])
+- Bump uiprotect to version 7.2.0 ([@RaHehl] - [#134587])
+- Mention case-sensitivity in tplink credentials prompt ([@rytilahti] - [#134606])
+- Fix Flick Electric authentication ([@ZephireNZ] - [#134611])
+- Fix hive color tunable light ([@epenet] - [#134628])
+- Set logging in manifest for Cookidoo ([@miaucl] - [#134645])
+- Remove call to remove slide ([@joostlek] - [#134647])
+- Update twentemilieu to 2.2.1 ([@frenck] - [#134651])
+- Fix Reolink playback of recodings ([@starkillerOG] - [#134652])
+- Update peblar to 0.3.3 ([@frenck] - [#134658])
+- Bump cookidoo-api library to 0.11.1 of for Cookidoo ([@miaucl] - [#134661])
+- Update demetriek to 1.1.1 ([@frenck] - [#134663])
+- Cookidoo exotic domains ([@miaucl] - [#134676])
+- Iterate over a copy of the list of programs at Home Connect select setup entry ([@Diegorro98] - [#134684])
+- Change from host to ip in zeroconf discovery for slide_local ([@dontinelli] - [#134709])
+- Bump ZHA to 0.0.45 ([@TheJulianJES] - [#134726])
+- Bump openwebifpy to 4.3.1 ([@autinerd] - [#134746])
+- Fix swapped letter order in "ยฐF" and "ยฐC" temperature units ([@NoRi2909] - [#134750])
+- Bumb python-homewizard-energy to 7.0.1 ([@DCSBL] - [#134753])
+- Register base device entry during coordinator setup in AVM Fritz!Tools integration ([@mib1185] - [#134764])
+- Bump pysuezV2 to 2.0.1 ([@jb101010-2] - [#134769])
+- Fix missing sentence-casing etc. in several strings ([@NoRi2909] - [#134775])
+- Raise ImportError in python_script ([@gjohansson-ST] - [#134792])
+- Replace "id" with "ID" for consistency across HA ([@NoRi2909] - [#134798])
+- Fix a few typos or grammar issues in asus_wrt ([@NoRi2909] - [#134813])
+- Bump uiprotect to version 7.4.1 ([@RaHehl] - [#134829])
+- Bump habluetooth to 3.7.0 ([@bdraco] - [#134833])
+- Fix how function arguments are passed on actions at Home Connect ([@Diegorro98] - [#134845])
+- Bump aiolifx-themes to update colors ([@Djelibeybi] - [#134846])
+- Update Roborock config flow message when an account is already configured ([@allenporter] - [#134854])
+- Log upload BackupAgentError ([@ludeeus] - [#134865])
+- Log cloud backup upload response status ([@ludeeus] - [#134871])
+- Bump solax to 3.2.3 ([@squishykid] - [#134876])
+- Add extra failure exceptions during roborock setup ([@Lash-L] - [#134889])
+- Use uppercase for "ID" and sentence-case for "name" / "icon" ([@NoRi2909] - [#134890])
+- Bump python-kasa to 0.9.1 ([@sdb9696] - [#134893])
+- Add `bring_api` to loggers in Bring integration ([@tr4nt0r] - [#134897])
+- Fix wrong power limit decimal place in IronOS ([@tr4nt0r] - [#134902])
+- Update frontend to 20250106.0 ([@bramkragten] - [#134905])
+- Bump powerfox to v1.1.0 ([@klaasnicolaas] - [#134730])
+- Bump powerfox to v1.2.0 ([@klaasnicolaas] - [#134908])
+- Bump holidays to 0.64 ([@gjohansson-ST] - [#134922])
+- Revert "Remove deprecated supported features warning in LightEntity" ([@arturpragacz] - [#134927])
+- Revert "Remove deprecated supported features warning in ..." (multiple) ([@frenck] - [#134933])
+
+[#134460]: https://github.com/home-assistant/core/pull/134460
+[#134572]: https://github.com/home-assistant/core/pull/134572
+[#134580]: https://github.com/home-assistant/core/pull/134580
+[#134587]: https://github.com/home-assistant/core/pull/134587
+[#134606]: https://github.com/home-assistant/core/pull/134606
+[#134611]: https://github.com/home-assistant/core/pull/134611
+[#134628]: https://github.com/home-assistant/core/pull/134628
+[#134645]: https://github.com/home-assistant/core/pull/134645
+[#134647]: https://github.com/home-assistant/core/pull/134647
+[#134651]: https://github.com/home-assistant/core/pull/134651
+[#134652]: https://github.com/home-assistant/core/pull/134652
+[#134658]: https://github.com/home-assistant/core/pull/134658
+[#134661]: https://github.com/home-assistant/core/pull/134661
+[#134663]: https://github.com/home-assistant/core/pull/134663
+[#134676]: https://github.com/home-assistant/core/pull/134676
+[#134684]: https://github.com/home-assistant/core/pull/134684
+[#134709]: https://github.com/home-assistant/core/pull/134709
+[#134726]: https://github.com/home-assistant/core/pull/134726
+[#134730]: https://github.com/home-assistant/core/pull/134730
+[#134746]: https://github.com/home-assistant/core/pull/134746
+[#134750]: https://github.com/home-assistant/core/pull/134750
+[#134753]: https://github.com/home-assistant/core/pull/134753
+[#134764]: https://github.com/home-assistant/core/pull/134764
+[#134769]: https://github.com/home-assistant/core/pull/134769
+[#134775]: https://github.com/home-assistant/core/pull/134775
+[#134792]: https://github.com/home-assistant/core/pull/134792
+[#134798]: https://github.com/home-assistant/core/pull/134798
+[#134813]: https://github.com/home-assistant/core/pull/134813
+[#134829]: https://github.com/home-assistant/core/pull/134829
+[#134833]: https://github.com/home-assistant/core/pull/134833
+[#134845]: https://github.com/home-assistant/core/pull/134845
+[#134846]: https://github.com/home-assistant/core/pull/134846
+[#134854]: https://github.com/home-assistant/core/pull/134854
+[#134865]: https://github.com/home-assistant/core/pull/134865
+[#134871]: https://github.com/home-assistant/core/pull/134871
+[#134876]: https://github.com/home-assistant/core/pull/134876
+[#134889]: https://github.com/home-assistant/core/pull/134889
+[#134890]: https://github.com/home-assistant/core/pull/134890
+[#134893]: https://github.com/home-assistant/core/pull/134893
+[#134897]: https://github.com/home-assistant/core/pull/134897
+[#134902]: https://github.com/home-assistant/core/pull/134902
+[#134905]: https://github.com/home-assistant/core/pull/134905
+[#134908]: https://github.com/home-assistant/core/pull/134908
+[#134922]: https://github.com/home-assistant/core/pull/134922
+[#134927]: https://github.com/home-assistant/core/pull/134927
+[#134933]: https://github.com/home-assistant/core/pull/134933
+[@DCSBL]: https://github.com/DCSBL
+[@Diegorro98]: https://github.com/Diegorro98
+[@Djelibeybi]: https://github.com/Djelibeybi
+[@Lash-L]: https://github.com/Lash-L
+[@NoRi2909]: https://github.com/NoRi2909
+[@RaHehl]: https://github.com/RaHehl
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@ZephireNZ]: https://github.com/ZephireNZ
+[@allenporter]: https://github.com/allenporter
+[@arturpragacz]: https://github.com/arturpragacz
+[@autinerd]: https://github.com/autinerd
+[@bdraco]: https://github.com/bdraco
+[@bramkragten]: https://github.com/bramkragten
+[@dontinelli]: https://github.com/dontinelli
+[@epenet]: https://github.com/epenet
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@jb101010-2]: https://github.com/jb101010-2
+[@joostlek]: https://github.com/joostlek
+[@klaasnicolaas]: https://github.com/klaasnicolaas
+[@lboue]: https://github.com/lboue
+[@ludeeus]: https://github.com/ludeeus
+[@miaucl]: https://github.com/miaucl
+[@mib1185]: https://github.com/mib1185
+[@peteS-UK]: https://github.com/peteS-UK
+[@rytilahti]: https://github.com/rytilahti
+[@sdb9696]: https://github.com/sdb9696
+[@squishykid]: https://github.com/squishykid
+[@starkillerOG]: https://github.com/starkillerOG
+[@tr4nt0r]: https://github.com/tr4nt0r
+
+### 2025.1.2 - January 9
+
+- Fix Mรฉtรฉo-France setup in non French cities (because of failed next rain sensor) ([@Quentame] - [#134782])
+- Increase cloud backup download timeout ([@ludeeus] - [#134961])
+- Fix ZHA "referencing a non existing `via_device`" warning ([@puddly] - [#135008])
+- Catch errors in automation (instead of raise unexpected error) in Overkiz ([@iMicknl] - [#135026])
+- Fix channel retrieval for Reolink DUO V1 connected to a NVR ([@starkillerOG] - [#135035])
+- Bump aioautomower to 2025.1.0 ([@Thomas55555] - [#135039])
+- Bump cookidoo-api to 0.12.2 ([@miaucl] - [#135045])
+- Implement upload retry logic in CloudBackupAgent ([@ludeeus] - [#135062])
+- Add jitter to backup start time to avoid thundering herd ([@emontnemery] - [#135065])
+- Bump pysuezV2 to 2.0.3 ([@jb101010-2] - [#135080])
+- Fix Flick Electric Pricing ([@ZephireNZ] - [#135154])
+- Update frontend to 20250109.0 ([@bramkragten] - [#135235])
+
+[#134782]: https://github.com/home-assistant/core/pull/134782
+[#134961]: https://github.com/home-assistant/core/pull/134961
+[#135008]: https://github.com/home-assistant/core/pull/135008
+[#135026]: https://github.com/home-assistant/core/pull/135026
+[#135035]: https://github.com/home-assistant/core/pull/135035
+[#135039]: https://github.com/home-assistant/core/pull/135039
+[#135045]: https://github.com/home-assistant/core/pull/135045
+[#135062]: https://github.com/home-assistant/core/pull/135062
+[#135065]: https://github.com/home-assistant/core/pull/135065
+[#135080]: https://github.com/home-assistant/core/pull/135080
+[#135154]: https://github.com/home-assistant/core/pull/135154
+[#135235]: https://github.com/home-assistant/core/pull/135235
+[@Quentame]: https://github.com/Quentame
+[@Thomas55555]: https://github.com/Thomas55555
+[@ZephireNZ]: https://github.com/ZephireNZ
+[@bramkragten]: https://github.com/bramkragten
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@iMicknl]: https://github.com/iMicknl
+[@jb101010-2]: https://github.com/jb101010-2
+[@ludeeus]: https://github.com/ludeeus
+[@miaucl]: https://github.com/miaucl
+[@puddly]: https://github.com/puddly
+[@starkillerOG]: https://github.com/starkillerOG
+
+### 2025.1.3 - January 20
+
+- Fix DiscoveryFlowHandler when discovery_function returns bool ([@kgraefe] - [#133563])
+- Aprilaire - Fix humidifier showing when it is not available ([@chamberlain2007] - [#133984])
+- Gracefully handle webhook unsubscription if error occurs while contacting Withings ([@dcmeglio] - [#134271])
+- Image entity key error when camera is ignored in EZVIZ ([@RenierM26] - [#134343])
+- Bump pyaussiebb to 0.1.5 ([@Bre77] - [#134943])
+- Fix Watergate Power supply mode description and MQTT/Wifi uptimes ([@adam-the-hero] - [#135085])
+- Fix missing comma in ollama MODEL_NAMES ([@epenet] - [#135262])
+- Bump Freebox to 1.2.2 ([@Quentame] - [#135313])
+- Actually use translated entity names in Lametric ([@joostlek] - [#135381])
+- Fix descriptions of send_message action of Bring! integration ([@NoRi2909] - [#135446])
+- Bump switchbot-api to 2.3.1 ([@SeraphicRav] - [#135451])
+- Fix incorrect cast in HitachiAirToWaterHeatingZone in Overkiz ([@iMicknl] - [#135468])
+- Replace pyhiveapi with pyhive-integration ([@KJonline] - [#135482])
+- Fix referenced objects in script sequences ([@arturpragacz] - [#135499])
+- Use STT/TTS languages for LLM fallback ([@synesthesiam] - [#135533])
+- Bump demetriek to 1.2.0 ([@joostlek] - [#135580])
+- Use device supplied ranges in LaMetric ([@joostlek] - [#135590])
+- Bump elkm1-lib to 2.2.11 ([@gwww] - [#135616])
+- Fix mqtt number state validation ([@jbouwh] - [#135621])
+- Add reauthentication to SmartThings ([@joostlek] - [#135673])
+- Handle invalid HS color values in HomeKit Bridge ([@bdraco] - [#135739])
+- Update aioairzone to v0.9.9 ([@Noltari] - [#135866])
+- Remove device_class from NFC and fingerprint event descriptions ([@RaHehl] - [#135867])
+- Prevent HomeKit from going unavailable when min/max is reversed ([@bdraco] - [#135892])
+- Bump onvif-zeep-async to 3.2.2 ([@bdraco] - [#135898])
+- Round brightness in Niko Home Control ([@VandeurenGlenn] - [#135920])
+- Update NHC lib to v0.3.4 ([@VandeurenGlenn] - [#135923])
+- Update knx-frontend to 2025.1.18.164225 ([@farmio] - [#135941])
+- Bump aiooui to 0.1.8 ([@bdraco] - [#135945])
+- Bump aiooui to 0.1.9 ([@bdraco] - [#135956])
+- Fix switchbot cloud library logger ([@joostlek] - [#135987])
+- Correct type for off delay in rfxtrx ([@elupus] - [#135994])
+- Handle invalid datetime in onvif ([@bdraco] - [#136014])
+- Bump aioraven to 0.7.1 ([@cottsay] - [#136017])
+- Bump onvif-zeep-async to 3.2.3 ([@bdraco] - [#136022])
+- Bump yt-dlp to 2025.01.15 ([@joostlek] - [#136072])
+- Bump deebot-client to 11.0.0 ([@edenhaus] - [#136073])
+- Always include SSL folder in backups ([@emontnemery] - [#136080])
+
+[#133563]: https://github.com/home-assistant/core/pull/133563
+[#133984]: https://github.com/home-assistant/core/pull/133984
+[#134271]: https://github.com/home-assistant/core/pull/134271
+[#134343]: https://github.com/home-assistant/core/pull/134343
+[#134943]: https://github.com/home-assistant/core/pull/134943
+[#135085]: https://github.com/home-assistant/core/pull/135085
+[#135262]: https://github.com/home-assistant/core/pull/135262
+[#135313]: https://github.com/home-assistant/core/pull/135313
+[#135381]: https://github.com/home-assistant/core/pull/135381
+[#135446]: https://github.com/home-assistant/core/pull/135446
+[#135451]: https://github.com/home-assistant/core/pull/135451
+[#135468]: https://github.com/home-assistant/core/pull/135468
+[#135482]: https://github.com/home-assistant/core/pull/135482
+[#135499]: https://github.com/home-assistant/core/pull/135499
+[#135533]: https://github.com/home-assistant/core/pull/135533
+[#135580]: https://github.com/home-assistant/core/pull/135580
+[#135590]: https://github.com/home-assistant/core/pull/135590
+[#135616]: https://github.com/home-assistant/core/pull/135616
+[#135621]: https://github.com/home-assistant/core/pull/135621
+[#135673]: https://github.com/home-assistant/core/pull/135673
+[#135739]: https://github.com/home-assistant/core/pull/135739
+[#135866]: https://github.com/home-assistant/core/pull/135866
+[#135867]: https://github.com/home-assistant/core/pull/135867
+[#135892]: https://github.com/home-assistant/core/pull/135892
+[#135898]: https://github.com/home-assistant/core/pull/135898
+[#135920]: https://github.com/home-assistant/core/pull/135920
+[#135923]: https://github.com/home-assistant/core/pull/135923
+[#135941]: https://github.com/home-assistant/core/pull/135941
+[#135945]: https://github.com/home-assistant/core/pull/135945
+[#135956]: https://github.com/home-assistant/core/pull/135956
+[#135987]: https://github.com/home-assistant/core/pull/135987
+[#135994]: https://github.com/home-assistant/core/pull/135994
+[#136014]: https://github.com/home-assistant/core/pull/136014
+[#136017]: https://github.com/home-assistant/core/pull/136017
+[#136022]: https://github.com/home-assistant/core/pull/136022
+[#136072]: https://github.com/home-assistant/core/pull/136072
+[#136073]: https://github.com/home-assistant/core/pull/136073
+[#136080]: https://github.com/home-assistant/core/pull/136080
+[@Bre77]: https://github.com/Bre77
+[@KJonline]: https://github.com/KJonline
+[@NoRi2909]: https://github.com/NoRi2909
+[@Noltari]: https://github.com/Noltari
+[@Quentame]: https://github.com/Quentame
+[@RaHehl]: https://github.com/RaHehl
+[@RenierM26]: https://github.com/RenierM26
+[@SeraphicRav]: https://github.com/SeraphicRav
+[@VandeurenGlenn]: https://github.com/VandeurenGlenn
+[@adam-the-hero]: https://github.com/adam-the-hero
+[@arturpragacz]: https://github.com/arturpragacz
+[@bdraco]: https://github.com/bdraco
+[@bramkragten]: https://github.com/bramkragten
+[@chamberlain2007]: https://github.com/chamberlain2007
+[@cottsay]: https://github.com/cottsay
+[@dcmeglio]: https://github.com/dcmeglio
+[@edenhaus]: https://github.com/edenhaus
+[@elupus]: https://github.com/elupus
+[@emontnemery]: https://github.com/emontnemery
+[@epenet]: https://github.com/epenet
+[@farmio]: https://github.com/farmio
+[@frenck]: https://github.com/frenck
+[@gwww]: https://github.com/gwww
+[@iMicknl]: https://github.com/iMicknl
+[@jbouwh]: https://github.com/jbouwh
+[@joostlek]: https://github.com/joostlek
+[@kgraefe]: https://github.com/kgraefe
+[@synesthesiam]: https://github.com/synesthesiam
+
+## Need help? Join the community!
+
+Home Assistant has a great community of users who are all more than willing
+to help each other out. So, join us!
+
+Our very active [Discord chat server](/join-chat) is an excellent place to be
+at, and don't forget to join our amazing [forums](https://community.home-assistant.io/).
+
+Found a bug or issue? Please report it in our [issue tracker](https://github.com/home-assistant/core/issues),
+to get it fixed! Or, check [our help page](/help) for guidance for more
+places you can go.
+
+Are you more into email? [Sign-up for our Building the Open Home Newsletter](/newsletter)
+to get the latest news about features, things happening in our community and
+other news about building an Open Home; straight into your inbox.
+
+## Backward-incompatible changes
+
+We do our best to avoid making changes to existing functionality that might
+unexpectedly impact your Home Assistant installation. Unfortunately, sometimes,
+it is inevitable.
+
+We always make sure to document these changes to make the transition as easy as
+possible for you. This release has the following backward-incompatible changes:
+
+{% details "1-Wire" %}
+
+The unit of measurement has been removed from 1-Wire counters because
+`count` is not a unit ๐
+
+([@jrieger] - [#132076]) ([documentation](/integrations/onewire))
+
+[@jrieger]: https://github.com/jrieger
+[#132076]: https://github.com/home-assistant/core/pull/132076
+
+{% enddetails %}
+
+{% details "Denon HEOS" %}
+
+Grouping a HEOS media player will now raise an exception if one of the members
+is not a valid HEOS player. Previously unknown or invalid members would be
+silently dropped.
+
+([@andrewsayre] - [#132213]) ([documentation](/integrations/heos))
+
+[@andrewsayre]: https://github.com/andrewsayre
+[#132213]: https://github.com/home-assistant/core/pull/132213
+
+{% enddetails %}
+
+{% details "devolo Home Control" %}
+
+The integration with devolo Home Control has been updated to remove the option
+to set the mydevolo URL. This option was used to integrate with the devolo
+Home Control Cloud for development purposes only.
+This option is no longer available.
+
+([@Shutgun] - [#132821]) ([documentation](/integrations/devolo_home_control))
+
+[@Shutgun]: https://github.com/Shutgun
+[#132821]: https://github.com/home-assistant/core/pull/132821
+
+{% enddetails %}
+
+{% details "FXCOM RFXtrx" %}
+
+The unit of measurement has been removed from FXCOM RFXtrx counters because
+`count` is not a unit ๐
+
+([@jrieger] - [#133108]) ([documentation](/integrations/rfxtrx))
+
+[@jrieger]: https://github.com/jrieger
+[#133108]: https://github.com/home-assistant/core/pull/133108
+
+{% enddetails %}
+
+{% details "HomeWizard Energy" %}
+
+The unit of measurement for the "Water usage" sensor has been updated from
+`l/min` to `L/min`. This change standardizes the unit to improve consistency
+across Home Assistant.
+
+Any automations, scripts, or templates that rely on the old unit may need to be
+adjusted. Long-term statistics will remain intact, but repair issues will be
+created to ensure the data is updated with the new unit.
+
+([@DCSBL] - [#132261]) ([documentation](/integrations/homewizard))
+
+[@DCSBL]: https://github.com/DCSBL
+[#132261]: https://github.com/home-assistant/core/pull/132261
+
+{% enddetails %}
+
+{% details "LIFX" %}
+
+The options `color_temp` and `kelvin` are no longer valid arguments for LIFX
+actions. Please use `color_temp_kelvin` instead.
+
+([@epenet] - [#132730]) ([documentation](/integrations/lifx))
+
+[@epenet]: https://github.com/epenet
+[#132730]: https://github.com/home-assistant/core/pull/132730
+
+{% enddetails %}
+
+{% details "Tesla Fleet" %}
+
+The included OAuth application credentials have been removed, as Tesla no longer
+supports Open Source application registrations and is moving to a pay-per-use
+model.
+
+Read more about this announcement in this [blog post](https://developer.tesla.com/docs/fleet-api/announcements#2024-11-27-pay-per-use-pricing).
+
+([@Bre77] - [#132431]) ([documentation](/integrations/tesla_fleet))
+
+[@Bre77]: https://github.com/Bre77
+[#132431]: https://github.com/home-assistant/core/pull/132431
+
+{% enddetails %}
+
+{% details "UniFi Network" %}
+
+The states of "Device State" sensors have been standardized to match
+Home Assistant core rules and be translatable. This affects the following
+UniFi sensor states:
+
+- `Connected`, which now became `connected`
+- `Pending`, which now became `pending`
+- `Firmware Mismatch`, which now became `firmware_mismatch`
+- `Upgrading`, which now became `upgrading`
+- `Provisioning`, which now became `provisioning`
+- `Heartbeat Missed`, which now became `heartbeat_missed`
+- `Adopting`, which now became `adopting`
+- `Deleting`, which now became `deleting`
+- `Inform Error`, which now became `inform_error`
+- `Adoption Failed`, which now became `adoption_failed`
+- `Isolated`, which now became `isolated`
+- `Unknown`, which now became `unknown`
+
+If you used those states directly in your automations, scripts, or templates;
+you will need to adjust those to match these changes.
+
+([@bieniu] - [#131921]) ([documentation](/integrations/unifi))
+
+[@bieniu]: https://github.com/bieniu
+[#131921]: https://github.com/home-assistant/core/pull/131921
+
+{% enddetails %}
+
+{% details "Zabbix" %}
+
+The integration now uses the official Zabbix Python API. Because of this, the
+minimum supported Zabbix version is now 5.0. This change drops support for
+Zabbix 4 and before.
+
+([@kruton] - [#131674]) ([documentation](/integrations/zabbix))
+
+[@kruton]: https://github.com/kruton
+[#131674]: https://github.com/home-assistant/core/pull/131674
+
+{% enddetails %}
+
+If you are a custom integration developer and want to learn about changes and
+new features available for your integration: Be sure to follow our
+[developer blog][devblog]. The following are the most notable for this release:
+
+- [Changed name of WaterHeaterEntityDescription](https://developers.home-assistant.io/blog/2024/12/13/water-heater-entity-description)
+- [Climate entity now supports independent horizontal swing](https://developers.home-assistant.io/blog/2024/12/03/climate-horizontal-swing)
+- [Moving to Pydantic v2](https://developers.home-assistant.io/blog/2024/12/21/moving-to-pydantic-v2)
+- [New vacuum state property](https://developers.home-assistant.io/blog/2024/12/08/new-vacuum-state-property)
+- [Use Kelvin as the preferred color temperature unit](https://developers.home-assistant.io/blog/2024/12/14/kelvin-preferred-color-temperature-unit)
+- [New area device class](https://developers.home-assistant.io/blog/2024/12/26/area-squared-units/)
+
+[devblog]: https://developers.home-assistant.io/blog/
+
+## All changes
+
+Of course, there is a lot more in this release. You can find a list of
+all changes made here: [Full changelog for Home Assistant Core 2025.1](/changelogs/core-2025.1)
diff --git a/source/_redirects b/source/_redirects
index 10959560130..082dec0af0d 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -16,6 +16,7 @@ layout: null
/feature-requests https://community.home-assistant.io/c/feature-requests
/issues https://github.com/home-assistant/core/issues
/community https://community.home-assistant.io/
+/voice /voice_control/builtin_sentences/
/latest-security-alert /security/
# Link to latest release notes
diff --git a/source/changelogs/core-2025.1.markdown b/source/changelogs/core-2025.1.markdown
new file mode 100644
index 00000000000..b74782733a5
--- /dev/null
+++ b/source/changelogs/core-2025.1.markdown
@@ -0,0 +1,2435 @@
+---
+title: Full changelog for Home Assistant Core 2025.1
+description: Detailed changelog for the Home Assistant Core 2025.1 release
+replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$
+---
+
+These are all the changes included in the Home Assistant Core 2025.1 release.
+
+For a summary in a more readable format:
+[Release notes blog for this release](/blog/2024/01/03/release-20251/).
+
+- Bump version to 2025.1.0dev0 ([@cdce8p] - [#131751])
+- Remove unreachable code in Habitica ([@tr4nt0r] - [#131778])
+- Add translations for units of measurement to Habitica integration ([@tr4nt0r] - [#131761])
+- Add units of measurement to Bring integration ([@tr4nt0r] - [#131763])
+- Log warning if via_device reference not exists when creating or updating a device registry entry ([@jbouwh] - [#131746])
+- Enable strict typing for Schlage ([@dknowles2] - [#131734])
+- Store Schlage runtime data in entry.runtime_data ([@dknowles2] - [#131731])
+- Set parallel updates in IronOS integration ([@tr4nt0r] - [#131721])
+- Remove deprecated camera constants ([@edenhaus] - [#131796])
+- Remvove deprecated core constants ([@edenhaus] - [#131803])
+- Remove deprecated automation constants ([@edenhaus] - [#131792])
+- Remove deprecated binary sensor constants ([@edenhaus] - [#131793])
+- Remove deprecated device registry constants ([@edenhaus] - [#131802])
+- Remove deprecated alarm control panel constants ([@edenhaus] - [#131790])
+- Remove deprecated home assistant const constants ([@edenhaus] - [#131799])
+- Remove deprecated water heater constants ([@edenhaus] - [#131805])
+- Remove deprecated remote constants ([@edenhaus] - [#131809])
+- Remove deprecated cover constants ([@edenhaus] - [#131797])
+- Remove deprecated siren constants ([@edenhaus] - [#131807])
+- Remove deprecated number constants ([@edenhaus] - [#131810])
+- Remove deprecated lock constants ([@edenhaus] - [#131812])
+- Fix group flaky test ([@epenet] - [#131815])
+- Cleanup deprecated exception in websocket tests ([@epenet] - [#131808])
+- Rename constant in tests/components/recorder/test_migration_from_schema_32.py ([@emontnemery] - [#131819])
+- Delay "Split tests for full run" in CI ([@epenet] - [#131813])
+- Remove deprecated switch constants ([@edenhaus] - [#131806])
+- Use common string for items unit in Bring ([@tr4nt0r] - [#131834])
+- Add comments in homeassistant/components/recorder/migration.py ([@emontnemery] - [#131820])
+- Remove deprecated device tracker constants ([@edenhaus] - [#131846])
+- Add unit translations to Ista EcoTrend integration ([@tr4nt0r] - [#131768])
+- Remove deprecated fan constants ([@edenhaus] - [#131845])
+- Remove deprecated humidifier constants ([@edenhaus] - [#131844])
+- Deprecate dt_util.utc_to_timestamp ([@emontnemery] - [#131787])
+- Add config flow rules to quality_scale hassfest validation ([@epenet] - [#131791])
+- Remove unnecessary hass.data defaults from Rainbird ([@allenporter] - [#131858])
+- Add diagnostics rule to quality_scale hassfest validation ([@epenet] - [#131859])
+- Correction of prices update time in Tibber integration (with CLA now) ([@rd-blue] - [#131861])
+- Use ConfigEntry.runtime_data in Nest ([@allenporter] - [#131871])
+- Remove deprecated sensor constants ([@edenhaus] - [#131843])
+- Add data descriptions to Nice G.O. config flow ([@IceBotYT] - [#131865])
+- Add strict_typing rule to quality_scale hassfest validation ([@epenet] - [#131877])
+- Remove deprecated data entry flow constants ([@edenhaus] - [#131800])
+- Remove deprecated climate constants ([@edenhaus] - [#131798])
+- Refactor calendars in Habitica ([@tr4nt0r] - [#131020])
+- Add documentation URL to quality_scale hassfest validation ([@epenet] - [#131879])
+- Add unique_config_entry rule to quality_scale hassfest validation ([@epenet] - [#131878])
+- Ensure Schlage exceptions are translated ([@dknowles2] - [#131733])
+- Add discovery rule to quality_scale hassfest validation ([@epenet] - [#131890])
+- Add runtime_data rule to quality_scale hassfest validation ([@allenporter] - [#131857])
+- Bump pynecil to v1.0.1 ([@tr4nt0r] - [#131935])
+- Bump ruff to 0.8.1 ([@autinerd] - [#131927])
+- Use typed ConfigEntry in discovergy ([@epenet] - [#131891])
+- Add missing state_class in IronOS ([@tr4nt0r] - [#131928])
+- Use HomeAssistant error in the right cases ([@Diegorro98] - [#131923])
+- Make uploaded images browsable in media ([@karwosts] - [#131468])
+- Add config flow to NHC ([@VandeurenGlenn] - [#130554])
+- Improvements for bluetooth device for lamarzocco ([@zweckj] - [#131875])
+- Add support for `linked_doorbell_sensor` to HomeKit locks ([@krauseerl] - [#131660])
+- Make the full conversation input available to sentence triggers ([@balloob] - [#131982])
+- Match "delete" with "create" in the action descriptions ([@NoRi2909] - [#131989])
+- Add final translations to mqtt exceptions ([@jbouwh] - [#131933])
+- Reduce time syscalls needed to insert new statistics ([@bdraco] - [#131984])
+- Use typed ConfigEntry in lamarzocco ([@epenet] - [#131892])
+- Use typed ConfigEntry in tedee ([@epenet] - [#131893])
+- Use typed ConfigEntry in twentemilieu ([@epenet] - [#131894])
+- Cleanup pylint obsolete import checks ([@epenet] - [#131904])
+- Add exception translation for entity action not supported ([@jbouwh] - [#131956])
+- Improve renault config-flow translation strings ([@epenet] - [#131706])
+- Improve renault config flow tests ([@epenet] - [#131698])
+- Improve recorder migration logging ([@emontnemery] - [#132006])
+- Remove unnecessary assignment in Recorder._process_state_changed_event_into_session ([@emontnemery] - [#132011])
+- Clarify description of fan actions, fix typo ([@NoRi2909] - [#132023])
+- Set parallel updates for BMW entities ([@rikroe] - [#132019])
+- Fix description of 'clear_completed_items' to use "remove" ([@NoRi2909] - [#132014])
+- Add pre-commit VSCode task ([@dotvav] - [#131637])
+- Add additional data_descriptions for Fully Kiosk Browser fields ([@cgarwood] - [#131716])
+- Add reauthentication flow for Autarco integration ([@klaasnicolaas] - [#131816])
+- Change library to livisi ([@joostlek] - [#132001])
+- Improve service names and descriptions for 'remote_connect' and 'remote_disconnect' in Home Assistant Cloud ([@yazan-abdalrahman] - [#131993])
+- Bump cryptography to 44.0.0 and pyOpenSSL to 24.3.0 ([@bdraco] - [#132035])
+- Use typed config entry in rainbird ([@epenet] - [#132031])
+- Use typed config entry in imap ([@epenet] - [#132029])
+- Remove CONF_NAME from config entry in solarlog ([@dontinelli] - [#131738])
+- Use runtime data in HEOS ([@andrewsayre] - [#132030])
+- Set PARALLEL_UPDATES in renault and bump quality scale ([@epenet] - [#132047])
+- Bump webio_api to 0.1.11 ([@nasWebio] - [#131730])
+- Update livisi to 0.0.24 ([@cdce8p] - [#132058])
+- Add additional number entities to IronOS ([@tr4nt0r] - [#131943])
+- Bump zwave-js-server-python to 0.60.0 ([@MindFreeze] - [#132059])
+- Bump dawidd6/action-download-artifact from 6 to 7 (@dependabot - [#132040])
+- Reboot host to aiohasupervisor ([@mdegat01] - [#130391])
+- Update mypy-dev to 1.14.0a5 ([@cdce8p] - [#132063])
+- Change wording in config flow dialog for fyta ([@dontinelli] - [#132075])
+- Remove option to update settings using second config flow in Reolink ([@starkillerOG] - [#131695])
+- Ensure Schlage config entry uniqueness ([@dknowles2] - [#131732])
+- Record Plugwise Quality Scale ([@CoMPaTech] - [#131888])
+- Add Reolink quality scale yaml ([@starkillerOG] - [#131123])
+- Fix type hints in IronOS coordinators ([@tr4nt0r] - [#132107])
+- Cleanup dead code in renault coordinator ([@epenet] - [#132078])
+- Improve Renault reauth test ([@epenet] - [#132077])
+- Rename 'Reolink IP NVR/camera' to 'Reolink' ([@starkillerOG] - [#132113])
+- Add data description to Nord pool config flow ([@gjohansson-ST] - [#132115])
+- Drop operating mode property in sharkiq ([@gjohansson-ST] - [#132097])
+- Remove unneeded step from reauth in Reolink ([@starkillerOG] - [#132143])
+- Revert "bump hassil and intents" ([@epenet] - [#132138])
+- Move set_room_setpoint to opentherm_gw hub ([@mvn23] - [#132152])
+- Bump syrupy to 4.8.0 ([@epenet] - [#132134])
+- Plugwise fixes from quality review ([@CoMPaTech] - [#132158])
+- Bump renault-api to 0.2.8 ([@epenet] - [#132135])
+- Support Z-Wave JS abort S2 bootstrapping ([@MindFreeze] - [#132140])
+- Set PARALLEL_UPDATES for all BMW platforms ([@rikroe] - [#132088])
+- Improve Reolink config flow tests ([@starkillerOG] - [#131693])
+- Bump voip-utils ([@synesthesiam] - [#132110])
+- Cleanup dead code in renault ([@epenet] - [#132172])
+- Bump nettigo-air-monitor to version 4.0.0 ([@bieniu] - [#132106])
+- Reapply "bump hassil and intents" (#132138) ([@epenet] - [#132151])
+- Dump pip freeze in CI ([@epenet] - [#132173])
+- Use typed config entry in SABnzbd coordinator ([@jpbede] - [#132098])
+- Pass config entry directly to update coordinator in Sensibo ([@gjohansson-ST] - [#132114])
+- Fix check dirty in Prepare dependencies CI ([@epenet] - [#132180])
+- Add initial quality scale for TotalConnect ([@austinmroczek] - [#132012])
+- Refactor roomba to set vacuums in vacuum file ([@gjohansson-ST] - [#132102])
+- Add dhcp discovery for fyta ([@dontinelli] - [#132185])
+- Remove support for live recorder data migration of entity IDs ([@emontnemery] - [#131952])
+- Bump pytest to 8.3.4 ([@epenet] - [#132179])
+- Generic Thermostat Add Target Min Max to UI config ([@hughsaunders] - [#131168])
+- Fix mypy issue in airzone cloud ([@gjohansson-ST] - [#132208])
+- Update test_config_flow for solarlog ([@dontinelli] - [#132104])
+- Fix next mypy issue in airzone_cloud ([@gjohansson-ST] - [#132217])
+- Improve BMWDataUpdateCoordinator typing ([@rikroe] - [#132087])
+- Add powerfox integration ([@klaasnicolaas] - [#131640])
+- Add missing data description for solarlog ([@dontinelli] - [#131712])
+- Bump pynecil to v2.0.2 ([@tr4nt0r] - [#132221])
+- Plugwise quality docs benchmark data update and removal ([@CoMPaTech] - [#132082])
+- Suez water add quality_scale.yaml ([@jb101010-2] - [#131360])
+- Add quality scale for fyta ([@dontinelli] - [#131508])
+- Add quality scale for Mastodon ([@andrew-codechimp] - [#131357])
+- Add quality_scale.yaml for Google Photos integration ([@allenporter] - [#131329])
+- Add reauthentication flow for Powerfox integration ([@klaasnicolaas] - [#132225])
+- Bump onvif-zeep-async to 3.1.13 ([@jterrace] - [#132229])
+- Add diagnostics to Powerfox integration ([@klaasnicolaas] - [#132226])
+- Use typed config entry in fyta ([@epenet] - [#132248])
+- Use typed config entry in mastodon ([@epenet] - [#132249])
+- Fix Visual Studio Code tasks to use selected Python interpreter ([@masto] - [#132219])
+- Improve discovery rule in IQS validation ([@epenet] - [#132251])
+- Pass config entry to UpdateCoordinator in yale_smart_alarm ([@gjohansson-ST] - [#132205])
+- Catch exceptions on entry setup for Autarco integration ([@klaasnicolaas] - [#132227])
+- Fix sensibo test coverage to 100% ([@gjohansson-ST] - [#132202])
+- Improve tests of recorder util resolve_period ([@emontnemery] - [#132259])
+- Bump github/codeql-action from 3.27.5 to 3.27.6 (@dependabot - [#132237])
+- Add IronOS quality scale record ([@tr4nt0r] - [#131598])
+- Refactor Snapcast client and group classes to use a common base clase ([@mill1000] - [#124499])
+- Set new polling interval for Powerfox integration ([@klaasnicolaas] - [#132263])
+- Add ista EcoTrend quality scale record ([@tr4nt0r] - [#131580])
+- Record current IQS state for Cambridge Audio ([@noahhusby] - [#131080])
+- Add quality scale for Husqvarna Automower ([@Thomas55555] - [#131560])
+- Fix test_dump_log_object timeouts in the CI ([@bdraco] - [#132234])
+- Add Bring! quality scale record ([@tr4nt0r] - [#131584])
+- Check token scope earlier in Husqvarna Automower ([@Thomas55555] - [#132289])
+- Refactor template lock to only return LockState or None ([@gjohansson-ST] - [#132093])
+- Clean up common modules in Husqvarna Automower ([@Thomas55555] - [#132290])
+- Add support for onvif tplink person and vehicle events ([@jterrace] - [#130769])
+- Bump aiosomecomfort to 0.0.28 in Honeywell ([@mkmer] - [#132294])
+- Use config_entry.runtime_data in Honeywell ([@mkmer] - [#132297])
+- Set command_line quality scale to legacy ([@gjohansson-ST] - [#132306])
+- Fix runtime data in Cambridge Audio ([@noahhusby] - [#132285])
+- Add quality scale to Onkyo ([@arturpragacz] - [#131322])
+- Remove stale requirement for androidtv ([@tofuSCHNITZEL] - [#132319])
+- Revert "Pin rpds-py to 0.21.0 to fix CI" ([@epenet] - [#132331])
+- Bump pylamarzocco to 1.3.2 ([@zweckj] - [#132344])
+- Remove dead code in fritzbox_callmonitor ([@epenet] - [#132353])
+- Fix missing AV info in Onkyo ([@arturpragacz] - [#132328])
+- Use typed config entry in husqvarna_automower ([@epenet] - [#132346])
+- Remove deprecated supported features warning in FanEntity ([@epenet] - [#132369])
+- Remove deprecated supported features warning in `ClimateEntity` ([@gjohansson-ST] - [#132206])
+- Mark test-before-setup as exempt in mqtt ([@epenet] - [#132334])
+- Remove yaml import from feedreader integration ([@jbouwh] - [#132278])
+- Remove yaml import from incomfort integration after deprecation time ([@jbouwh] - [#132275])
+- Add data description for Onkyo config flow ([@arturpragacz] - [#132349])
+- Remove deprecated supported features warning in CoverEntity ([@epenet] - [#132367])
+- Avoid access to `self.context["source"]` in integration config flows ([@epenet] - [#132355])
+- Remove _enable_turn_on_off_backwards_compatibility A-F ([@gjohansson-ST] - [#132417])
+- Remove _enable_turn_on_off_backwards_compatibility G-M ([@gjohansson-ST] - [#132418])
+- Remove _enable_turn_on_off_backwards_compatibility N-S ([@gjohansson-ST] - [#132422])
+- Remove _enable_turn_on_off_backwards_compatibility T-Z ([@gjohansson-ST] - [#132423])
+- Remove yaml import from hive ([@epenet] - [#132354])
+- Remove deprecated integration dte_energy_bridge ([@jbouwh] - [#132276])
+- Update mypy-dev to 1.14.0a6 ([@cdce8p] - [#132440])
+- Bump actions/cache from 4.1.2 to 4.2.0 (@dependabot - [#132419])
+- Handle Z-Wave JS S2 inclusion via Inclusion Controller ([@MindFreeze] - [#132073])
+- Fix flaky CI from azure_event_hub ([@epenet] - [#132461])
+- Log warning on use of deprecated light constants ([@epenet] - [#132387])
+- Adjust scope of zha global quirks fixture ([@epenet] - [#132463])
+- Implement new state property for vacuum which is using an enum ([@gjohansson-ST] - [#126353])
+- Bump codecov/codecov-action from 5.0.7 to 5.1.1 (@dependabot - [#132455])
+- Set parallel updates in Bring integration ([@tr4nt0r] - [#132504])
+- Move light constants to separate module ([@epenet] - [#132473])
+- Add tests for media player support_* properties ([@epenet] - [#132458])
+- Remove deprecated supported features warning in LightEntity ([@epenet] - [#132371])
+- Add check for unique id mismatch in reauth of Bring integration ([@tr4nt0r] - [#132499])
+- Add more models to Tesla Fleet ([@Bre77] - [#132430])
+- Remove default OAuth implementation from Tesla Fleet ([@Bre77] - [#132431])
+- Bump actions/attest-build-provenance from 1.4.4 to 2.0.0 (@dependabot - [#132332])
+- Remove migration for tag ([@gjohansson-ST] - [#132200])
+- Small cleanup in sensibo ([@gjohansson-ST] - [#132118])
+- Cache AST module parsing in hassfest ([@epenet] - [#132244])
+- Remove not needed name from yale_smart_alarm ([@gjohansson-ST] - [#132204])
+- Improve recorder util resolve_period ([@emontnemery] - [#132264])
+- Remove support for live recorder data migration of event type IDs ([@emontnemery] - [#131826])
+- Remove native_unit_of_measurement from Onewire counters ([@jrieger] - [#132076])
+- Removes previously deprecated simulated integration ([@gjohansson-ST] - [#132111])
+- Add parallel-updates rule to quality_scale validation ([@epenet] - [#132041])
+- Use build in unit of measurement in HomeWizard 'Water usage' sensor ([@DCSBL] - [#132261])
+- Plugwise add missing translation ([@CoMPaTech] - [#132239])
+- Add exception handlers to Home Connect action calls ([@Diegorro98] - [#131895])
+- Update go2rtc-client to 0.1.2 ([@frenck] - [#132517])
+- Use device area/floor in intent_script ([@arturpragacz] - [#130644])
+- Set PARALLEL_UPDATES in Bring sensor platform ([@jpbede] - [#132538])
+- Bump pylamarzocco to 1.3.3 ([@zweckj] - [#132534])
+- Bump uiprotect to 6.7.0 ([@RaHehl] - [#132565])
+- Use runtime_data in Whirlpool ([@mkmer] - [#132613])
+- Add tests to Nord Pool ([@gjohansson-ST] - [#132468])
+- Plugwise Quality improvements ([@CoMPaTech] - [#132175])
+- Bump nsapi to 3.1.2 ([@hugoideler] - [#132596])
+- Bump homematicip from 1.1.3 to 1.1.5 ([@hahn-th] - [#132537])
+- Increase test coverage in apsystems coordinator ([@Thomas55555] - [#132631])
+- Bump actions/attest-build-provenance from 2.0.0 to 2.0.1 (@dependabot - [#132661])
+- Remove deprecated supported features warning in Camera ([@epenet] - [#132640])
+- Use ast_parse_module in parallel_updates IQS rule ([@epenet] - [#132646])
+- Remove Stookalert integration ([@frenck] - [#132569])
+- Remove not needed code check in yale_smart_alarm ([@gjohansson-ST] - [#132649])
+- Remove deprecated supported features warning in Remote ([@epenet] - [#132643])
+- Remove deprecated supported features warning in Humidifier ([@epenet] - [#132641])
+- Remove deprecated supported features warning in Lock ([@epenet] - [#132642])
+- Remove YAML support from vizio ([@epenet] - [#132351])
+- Remove deprecated supported features warning in AlarmControlPanel ([@epenet] - [#132665])
+- Remove deprecated supported features warning in Siren ([@epenet] - [#132666])
+- Remove deprecated supported features warning in Vacuum ([@epenet] - [#132670])
+- Remove deprecated supported features warning in WaterHeater ([@epenet] - [#132668])
+- Add tip connected detection to IronOS ([@tr4nt0r] - [#131946])
+- Remove deprecated supported features warning in Update ([@epenet] - [#132667])
+- Add slightly more detailed descriptions for Counter actions ([@NoRi2909] - [#132576])
+- Set quality scale to silver for Husqvarna Automower ([@Thomas55555] - [#132293])
+- Use ATTR_COLOR_TEMP_KELVIN in emulated_hue light ([@epenet] - [#132693])
+- Use ATTR_COLOR_TEMP_KELVIN in baf light ([@epenet] - [#132692])
+- Move SABnzbd action setup to async_setup ([@jpbede] - [#132629])
+- Add binary platform to IronOS ([@tr4nt0r] - [#132691])
+- Increase test coverage in yale_smart_alarm ([@gjohansson-ST] - [#132650])
+- Palazzetti power control ([@dotvav] - [#131833])
+- Fix reading of max mireds from Matter lights ([@epenet] - [#132710])
+- Change to module function in statistics ([@gjohansson-ST] - [#132648])
+- Set unique_id in myuplink config entry ([@astrandb] - [#132672])
+- Migrate opple lights to use Kelvin ([@epenet] - [#132697])
+- Use kelvin attributes in baf ([@epenet] - [#132725])
+- Add myself as code owner to statistics ([@gjohansson-ST] - [#132719])
+- Update pylint to 3.3.2 and astroid to 3.3.6 ([@cdce8p] - [#132718])
+- Add Starlink consumption sensors ([@davidrapan] - [#132262])
+- Migrate flux_led lights to use Kelvin ([@epenet] - [#132687])
+- Migrate switchbot lights to use Kelvin ([@epenet] - [#132695])
+- Bump uiprotect to 6.8.0 ([@RaHehl] - [#132735])
+- Use ATTR_COLOR_TEMP_KELVIN in alexa ([@epenet] - [#132733])
+- Improve Plugwise tests ([@CoMPaTech] - [#132677])
+- Plugwise improve exception translations ([@CoMPaTech] - [#132663])
+- Add Watergate Sonic Local Integration ([@adam-the-hero] - [#129686])
+- Remove YAML support from cert_expiry ([@epenet] - [#132350])
+- Improve name and description of Include list, fix `holidays` keyword name ([@NoRi2909] - [#132188])
+- Add Ituran integration ([@shmuelzon] - [#129067])
+- Add reconfigure flow to Cambridge Audio ([@noahhusby] - [#131091])
+- Fix `LazyState` compatibility with `State` `under_cached_property` change ([@bdraco] - [#132752])
+- Migrate deconz lights to use Kelvin ([@epenet] - [#132698])
+- Add quality scale to myUplink - reflect current state ([@astrandb] - [#131686])
+- Mark Cambridge Audio quality scale as platinum ([@noahhusby] - [#132762])
+- Add clearer descriptions to all Timer actions ([@NoRi2909] - [#132571])
+- Migrate limitlessled lights to use Kelvin ([@epenet] - [#132689])
+- Remove old compatibility code (and add new warning) in lifx ([@epenet] - [#132730])
+- Migrate smartthings lights to use Kelvin ([@epenet] - [#132699])
+- Migrate hive lights to use Kelvin ([@epenet] - [#132686])
+- Change BMW reauth/reconfigure to only allow password ([@rikroe] - [#132767])
+- Remove deprecated supported features warning in MediaPlayer ([@epenet] - [#132365])
+- Use local ATTR_KELVIN constant in yeelight ([@epenet] - [#132731])
+- Add missing `last_reported_timestamp` to `LazyState` ([@bdraco] - [#132761])
+- Remove legacy behavior from Teslemetry ([@Bre77] - [#132760])
+- Update demetriek to v1.0.0 ([@frenck] - [#132765])
+- Improve description of 'vapid_email' field ([@NoRi2909] - [#131349])
+- Use consistent UI name for system_log.clear action ([@NoRi2909] - [#132083])
+- Migrate osramlightify lights to use Kelvin ([@epenet] - [#132688])
+- Migrate matter lights to use Kelvin ([@epenet] - [#132685])
+- Set Nord Pool device as a service ([@gjohansson-ST] - [#132717])
+- Suez_water: close session after config flow ([@jb101010-2] - [#132714])
+- Migrate abode lights to use Kelvin ([@epenet] - [#132690])
+- Add new api to fetch sentence triggers ([@balloob] - [#132764])
+- Migrate elgato lights to use Kelvin ([@epenet] - [#132789])
+- Change fields allowed to change in options flow for Mold indicator ([@gjohansson-ST] - [#132400])
+- Add Starlink usage sensors ([@davidrapan] - [#132738])
+- Bump actions/attest-build-provenance from 2.0.1 to 2.1.0 (@dependabot - [#132788])
+- Migrate homekit_controller lights to use Kelvin ([@epenet] - [#132792])
+- Remove sleep and forbidden handling from Teslemetry ([@Bre77] - [#132784])
+- Migrate eufy lights to use Kelvin ([@epenet] - [#132790])
+- Migrate blebox lights to use Kelvin ([@epenet] - [#132787])
+- Migrate mired attributes to kelvin in limitlessled ([@epenet] - [#132785])
+- Migrate iglo lights to use Kelvin ([@epenet] - [#132796])
+- Update ciso8601 to v2.3.2 ([@frenck] - [#132793])
+- bump pyituran to 0.1.4 ([@shmuelzon] - [#132791])
+- Add diagnostics platform to Russound RIO ([@noahhusby] - [#132776])
+- Bump aioswitcher to 5.1.0 ([@YogevBokobza] - [#132753])
+- Use UnitOfEnergy.KILO_CALORIE in Tractive integration ([@bieniu] - [#131909])
+- Migrate wiz lights to use Kelvin ([@epenet] - [#132809])
+- Migrate wemo lights to use Kelvin ([@epenet] - [#132808])
+- Migrate tuya lights to use Kelvin ([@epenet] - [#132803])
+- Migrate tradfri lights to use Kelvin ([@epenet] - [#132800])
+- Migrate template lights to use Kelvin ([@epenet] - [#132799])
+- Migrate homematic lights to use Kelvin ([@epenet] - [#132794])
+- Migrate nanoleaf lights to use Kelvin ([@epenet] - [#132797])
+- Address misc comments from myuplink quality scale review ([@astrandb] - [#132802])
+- Migrate yeelight lights to use Kelvin ([@epenet] - [#132814])
+- Migrate xiaomi_miio lights to use Kelvin ([@epenet] - [#132811])
+- Update pvo to v2.2.0 ([@frenck] - [#132812])
+- Migrate vesync lights to use Kelvin ([@epenet] - [#132806])
+- Use "remove" in description of "Clear playlist" action ([@NoRi2909] - [#132079])
+- Migrate zwave_js lights to use Kelvin ([@epenet] - [#132818])
+- Remove config flow option to set mydevolo URL ([@Shutgun] - [#132821])
+- Update gotailwind to v0.3.0 ([@frenck] - [#132817])
+- Add missing Kelvin attributes to mqtt ignore list ([@epenet] - [#132820])
+- Improve myuplink tests to reach full coverage for all modules ([@astrandb] - [#131937])
+- Update wled to v0.21.0 ([@frenck] - [#132822])
+- Address review comment on myuplink tests ([@astrandb] - [#132819])
+- Add check for typed ConfigEntry in quality scale validation ([@epenet] - [#132028])
+- spaceapi: fix sensor values ([@Xiretza] - [#132099])
+- Migrate hue lights to use Kelvin ([@epenet] - [#132835])
+- Add exception translations for Fronius ([@farmio] - [#132830])
+- Add data descriptions to devolo Home Control ([@Shutgun] - [#132703])
+- Cleanup unnecessary mired attributes in esphome ([@epenet] - [#132833])
+- Fix wrong name attribute in mqtt ignore list ([@epenet] - [#132831])
+- Plugwise improve platform tests ([@CoMPaTech] - [#132748])
+- Add a quality scale for fitbit integration ([@allenporter] - [#131326])
+- Add beolink_join source_id parameter to Bang & Olufsen ([@mj23000] - [#132377])
+- Bump mozart-api to 4.1.1.116.4 ([@mj23000] - [#132859])
+- Add retry to api calls in Nord Pool ([@gjohansson-ST] - [#132768])
+- Bump pydantic to 2.10.3 and update required deps ([@bdraco] - [#131963])
+- Use floats instead of datetime in statistics ([@gjohansson-ST] - [#132746])
+- Add quality scale to Nord Pool ([@gjohansson-ST] - [#132415])
+- Set config-flow rule in IQS to todo in Bring integration ([@tr4nt0r] - [#132855])
+- Migrate demo lights to use Kelvin ([@epenet] - [#132837])
+- Add model_id to flexit (bacnet) entity ([@lellky] - [#132875])
+- Update numpy to 2.2.0 ([@cdce8p] - [#132874])
+- Test the google tasks api connection in setup ([@allenporter] - [#132657])
+- Use runtime_data for roku ([@ctalkington] - [#132781])
+- Fix typo in water heater integration ([@lboue] - [#132891])
+- Bump github/codeql-action from 3.27.6 to 3.27.7 (@dependabot - [#132900])
+- Refactor light significant change to use kelvin attribute ([@epenet] - [#132853])
+- Remove old codeowner no longer working on the integration ([@shapournemati-iotty] - [#132807])
+- Fix docker hassfest ([@edenhaus] - [#132823])
+- Migrate flux to use Kelvin over Mireds ([@epenet] - [#132839])
+- Add remaining test coverage to yale_smart_alarm ([@gjohansson-ST] - [#132869])
+- Migrate tasmota lights to use Kelvin ([@epenet] - [#132798])
+- Migrate zha lights to use Kelvin ([@epenet] - [#132816])
+- Enable pydantic.v1 mypy plugin ([@cdce8p] - [#132907])
+- upgrade iottycloud lib to 0.3.0 ([@shapournemati-iotty] - [#132836])
+- Allow bytearray for mqtt payload type ([@cdce8p] - [#132906])
+- Use snapshot tests for remaining myuplink platforms ([@astrandb] - [#132915])
+- Create quality_scale.yaml from integration scaffold script ([@farmio] - [#132199])
+- Velbus add quality_scale.yaml ([@cereal2nd] - [#131377])
+- Set quality_scale for myUplink to Silver ([@astrandb] - [#132923])
+- Adjust lifx to use local _ATTR_COLOR_TEMP constant ([@epenet] - [#132840])
+- Add data description to suez_water config flow ([@jb101010-2] - [#132466])
+- Migrate mqtt lights to use Kelvin ([@epenet] - [#132828])
+- Split the velbus services code in its own file ([@cereal2nd] - [#131375])
+- Fix mqtt light attributes ([@epenet] - [#132941])
+- Set go2rtc quality scale to internal ([@edenhaus] - [#132945])
+- Update xknx to 3.4.0 ([@farmio] - [#132943])
+- Add Dutch locale on supported Alexa interfaces ([@jbouwh] - [#132936])
+- Record current IQS state for Russound RIO ([@noahhusby] - [#131219])
+- Add quality scale for nest integration ([@allenporter] - [#131330])
+- Improve coverage in light reproduce state ([@epenet] - [#132929])
+- Trigger full ci run on global mypy config change ([@cdce8p] - [#132909])
+- Remove port from Elgato configuration flow ([@frenck] - [#132961])
+- Bump pylamarzocco to 1.4.0 ([@zweckj] - [#132917])
+- Add parallel updates & use typed config entry for Russound RIO ([@noahhusby] - [#132958])
+- Update quality scale for nordpool ([@gjohansson-ST] - [#132964])
+- Merge feature branch with backup changes to dev ([@emontnemery] - [#132954])
+- Add reconfiguration flow to myuplink ([@astrandb] - [#132970])
+- Set strict typing for myuplink ([@astrandb] - [#132972])
+- Add missing body height icon in Withings integration ([@CFenner] - [#132991])
+- Introduce parallel updates for Plugwise ([@CoMPaTech] - [#132940])
+- Enforce strict typing for Russound RIO ([@noahhusby] - [#132982])
+- Improve config flow test coverage for Russound RIO ([@noahhusby] - [#132981])
+- Set parallel updates for roku ([@ctalkington] - [#132892])
+- Set parallel updates in Elgato ([@frenck] - [#132998])
+- Migrate elgato light tests to use Kelvin ([@epenet] - [#133004])
+- Move coordinator for TwenteMilieu into own module ([@frenck] - [#133000])
+- Bump velbusaio to 2024.12.0 ([@cereal2nd] - [#132989])
+- Use ConfigEntry runtime_data in EnergyZero ([@klaasnicolaas] - [#132979])
+- Don't use kitchen_sink integration in config entries tests ([@emontnemery] - [#133012])
+- Fix config entry import in Twente Milieu diagnostic ([@frenck] - [#133017])
+- Migrate google_assistant color_temp handlers to use Kelvin ([@epenet] - [#132997])
+- Add reconfigure flow for Powerfox integration ([@klaasnicolaas] - [#132260])
+- Improve diagnostics code of EnergyZero integration ([@klaasnicolaas] - [#133019])
+- Migrate tplink light tests to use Kelvin ([@epenet] - [#133026])
+- Small test cleanups in Twente Milieu ([@frenck] - [#133028])
+- Adjust backup agent platform ([@emontnemery] - [#132944])
+- Migrate template light tests to use Kelvin ([@epenet] - [#133025])
+- Explicitly pass config entry to coordinator in Elgato ([@frenck] - [#133014])
+- Clean up Elgato config flow tests ([@frenck] - [#133045])
+- Bump hass-nabucasa from 0.86.0 to 0.87.0 ([@klejejs] - [#133043])
+- Improve husqvarna_automower decorator typing ([@cdce8p] - [#133047])
+- Add data descriptions to Twente Milieu config flow ([@frenck] - [#133046])
+- Fix music_assistant decorator typing ([@cdce8p] - [#133044])
+- Bump ruff to 0.8.2 ([@autinerd] - [#133041])
+- Small test improvements to Tailwind tests ([@frenck] - [#133051])
+- Bump uv to 0.5.8 ([@edenhaus] - [#133036])
+- Migrate emulated_hue light tests to use Kelvin ([@epenet] - [#133006])
+- Migrate esphome light tests to use Kelvin ([@epenet] - [#133008])
+- Migrate homekit light tests to use Kelvin ([@epenet] - [#133011])
+- Improve Callable annotations ([@cdce8p] - [#133050])
+- Use PEP 695 TypeVar syntax ([@cdce8p] - [#133049])
+- Migrate mqtt light tests to use Kelvin ([@epenet] - [#133035])
+- Adjust light test helpers to use Kelvin, and cleanup unused helpers ([@epenet] - [#133048])
+- Remove reference to self.min/max_mireds in mqtt light ([@epenet] - [#133055])
+- Fix load of backup store ([@emontnemery] - [#133024])
+- Bump velbusaio to 2024.12.1 ([@cereal2nd] - [#133056])
+- Migrate deconz light tests to use Kelvin ([@epenet] - [#133002])
+- Fix backup strategy retention filter ([@MartinHjelmare] - [#133060])
+- Add HEOS quality scale ([@andrewsayre] - [#132311])
+- Update demetriek to v1.1.0 ([@frenck] - [#133064])
+- Explicitly pass config entry to coordinator in Tailwind ([@frenck] - [#133065])
+- Migrate group light tests to use Kelvin ([@epenet] - [#133010])
+- Use ConfigEntry runtime_data in easyEnergy ([@klaasnicolaas] - [#133053])
+- Improve auth generic typing ([@cdce8p] - [#133061])
+- Add support for subentries to config entries ([@emontnemery] - [#117355])
+- Migrate wiz light tests to use Kelvin ([@epenet] - [#133032])
+- Migrate abode light tests to use Kelvin ([@epenet] - [#133001])
+- Add new integration slide_local ([@dontinelli] - [#132632])
+- Migrate flux_led light tests to use Kelvin ([@epenet] - [#133009])
+- Add Cookidoo integration ([@miaucl] - [#129800])
+- Migrate wemo light tests to use Kelvin ([@epenet] - [#133031])
+- Migrate tradfri light tests to use Kelvin ([@epenet] - [#133030])
+- Migrate yeelight light tests to use Kelvin ([@epenet] - [#133033])
+- Migrate zwave_js light tests to use Kelvin ([@epenet] - [#133034])
+- Promote Twente Milieu quality scale to silver ([@frenck] - [#133074])
+- Migrate demo light tests to use Kelvin ([@epenet] - [#133003])
+- Migrate switch_as_x light tests to use Kelvin ([@epenet] - [#133023])
+- Migrate smartthings light tests to use Kelvin ([@epenet] - [#133022])
+- Use runtime_data in velbus ([@cereal2nd] - [#132988])
+- Small improvements to the AdGuard tests ([@frenck] - [#133073])
+- Add source zone exclusion to Russound RIO ([@noahhusby] - [#130392])
+- Refactor light reproduce state to use kelvin attribute ([@epenet] - [#132854])
+- Migrate alexa color_temp handlers to use Kelvin ([@epenet] - [#132995])
+- Migrate lifx light tests to use Kelvin ([@epenet] - [#133020])
+- Improve Solar.Forecast configuration flow tests ([@frenck] - [#133077])
+- Add test-before-setup rule to quality_scale validation ([@epenet] - [#132255])
+- Fix CI failure in russound_rio ([@epenet] - [#133081])
+- Update Rainbird quality scale grading on the Silver quality checks ([@allenporter] - [#131498])
+- Use correct ATTR_KELVIN constant in yeelight tests ([@epenet] - [#133088])
+- Bump github/codeql-action from 3.27.7 to 3.27.9 (@dependabot - [#133104])
+- Move config entry type of energyzero integration ([@klaasnicolaas] - [#133094])
+- Remove unused constant from blink ([@epenet] - [#133109])
+- Handle step size correctly in myuplink number platform ([@astrandb] - [#133016])
+- Bump watchdog to 6.0.0 ([@mweinelt] - [#132895])
+- Update devcontainer to Python 3.13 ([@cdce8p] - [#132313])
+- Velbus docs quality bump ([@cereal2nd] - [#133070])
+- Simplify access to hass in service calls ([@epenet] - [#133062])
+- Use internal min/max mireds in template ([@epenet] - [#133113])
+- Add mWh as unit of measurement for Matter energy sensors ([@agners] - [#133005])
+- Remove HEOS yaml import ([@andrewsayre] - [#133082])
+- Remove `native_unit_of_measurement` from rfxtrx counters ([@jrieger] - [#133108])
+- Replace functools.partial with ServiceCall.hass in knx ([@epenet] - [#133111])
+- Add data/data_description translation checks ([@epenet] - [#131705])
+- Raise issue for deprecated imperial unit system ([@gjohansson-ST] - [#130979])
+- Fix failing CI due to Russound Rio incorrect IQS ([@frenck] - [#133118])
+- Add a quality scale for Google Tasks ([@allenporter] - [#131497])
+- Cookidoo reauth config flow for silver ([@miaucl] - [#133110])
+- Fix typo in `WaterHeaterEntityDescription` name ([@lboue] - [#132888])
+- Add contact vip info to fritzbox_callmonitor sensor ([@cdce8p] - [#132913])
+- Push Nibe package to 2.14.0 ([@martijnrusschen] - [#133125])
+- Make Twitch sensor state and attributes translatable ([@jpbede] - [#133127])
+- Update open-meteo to v0.3.2 ([@frenck] - [#133122])
+- Reduce functools.partial with ServiceCall.hass in energyzero ([@epenet] - [#133134])
+- Replace functools.partial with ServiceCall.hass in unifiprotect ([@epenet] - [#133131])
+- Replace functools.partial with ServiceCall.hass in tibber ([@epenet] - [#133132])
+- Reduce functools.partial with ServiceCall.hass in easyenergy ([@epenet] - [#133133])
+- Improve data description and title for Cookidoo integration ([@miaucl] - [#133106])
+- Bump velbusaio to 2024.12.2 ([@cereal2nd] - [#133130])
+- Fix typos in devolo Home Network tests ([@Shutgun] - [#133139])
+- Set quality scale to silver for Powerfox integration ([@klaasnicolaas] - [#133095])
+- Add warning when light entities do not provide kelvin attributes or properties ([@epenet] - [#132723])
+- Fix missing password for slide_local ([@dontinelli] - [#133142])
+- Bump PyViCare to 2.38.0 ([@CFenner] - [#133126])
+- Velbus test before setup ([@cereal2nd] - [#133069])
+- Add reconfigure flow to MQTT ([@jbouwh] - [#132246])
+- Deprecate light constants ([@epenet] - [#132680])
+- Fix Tailwind config entry typing in async_unload_entry signature ([@frenck] - [#133153])
+- Bump ruff to 0.8.3 ([@autinerd] - [#133163])
+- Update debugpy to 1.8.11 ([@frenck] - [#133169])
+- Add STT error code for cloud authentication failure ([@synesthesiam] - [#133170])
+- Add response slot to HassRespond intent ([@synesthesiam] - [#133162])
+- Add eheimdigital integration ([@autinerd] - [#126757])
+- Bump uiprotect to 7.0.2 ([@bdraco] - [#132975])
+- Improve Slide Local device tests ([@joostlek] - [#133197])
+- Bump openwebifpy to 4.3.0 ([@autinerd] - [#133188])
+- Add reconfiguration to slide_local ([@dontinelli] - [#133182])
+- Add button entity to slide_local ([@dontinelli] - [#133141])
+- Add Ohme integration ([@dan-r] - [#132574])
+- Switcher move _async_call_api to entity.py ([@YogevBokobza] - [#132877])
+- Suez_water: add removal instructions ([@jb101010-2] - [#133206])
+- Bump pynecil to 2.1.0 ([@tr4nt0r] - [#133211])
+- Update Fronius translations ([@farmio] - [#132876])
+- set PARALLEL_UPDATES to 1 for enphase_envoy ([@catsmanac] - [#132373])
+- Suez_water: store coordinator in runtime_data ([@jb101010-2] - [#133204])
+- Fix pydantic warnings in purpleair ([@cdce8p] - [#133247])
+- Bump aioautomower to 2024.12.0 ([@Thomas55555] - [#132962])
+- Fix enigma2 integration for devices not reporting MAC address ([@autinerd] - [#133226])
+- Enhance translation strings in fibaro ([@rappenze] - [#133234])
+- Replace aiogithub dependency with pynecil update check ([@tr4nt0r] - [#133213])
+- Use entry.runtime_data in fibaro ([@rappenze] - [#133235])
+- Fix lingering mqtt device_trigger unload entry test ([@jbouwh] - [#133202])
+- Replace "this" with "a" to fix Install Update action description ([@NoRi2909] - [#133210])
+- Improve BMW translations ([@rikroe] - [#133236])
+- Update elevenlabs to 1.9.0 ([@cdce8p] - [#133264])
+- Mark Google Tasks action-exceptions quality scale as done ([@allenporter] - [#133253])
+- Bump pymodbus version 3.7.4 ([@crug80] - [#133175])
+- Don't update existing Fronius config entries from config flow ([@farmio] - [#132886])
+- Improve MQTT json color_temp validation ([@jbouwh] - [#133174])
+- Update quality scale documentation rules in IronOS integration ([@tr4nt0r] - [#133245])
+- Add button platform to Ohme ([@dan-r] - [#133267])
+- Use typed BMWConfigEntry ([@rikroe] - [#133272])
+- Fix two typos in KEF strings ([@NoRi2909] - [#133294])
+- Bump pynordpool 0.2.3 ([@gjohansson-ST] - [#133277])
+- Explicitly set `PARALLEL_UPDATES` for Google Tasks ([@allenporter] - [#133296])
+- Refactor Onkyo tests to patch underlying pyeiscp library ([@eclair4151] - [#132653])
+- Update quality scale for Nord Pool ([@gjohansson-ST] - [#133282])
+- Bump plugwise to v1.6.4 and adapt ([@bouwew] - [#133293])
+- Fix typo "configurered" in MQTT ([@NoRi2909] - [#133295])
+- Improve Fronius tests ([@farmio] - [#132872])
+- Mark Google Tasks `test-before-setup` quality scale rule as `done` ([@allenporter] - [#133298])
+- Adjust MQTT tests not to assert on deprecated color_temp attribute ([@jbouwh] - [#133198])
+- Fix missing Fronius data_description translation for reconfigure flow ([@farmio] - [#133304])
+- Increase test coverage for google tasks init ([@allenporter] - [#133252])
+- Full test coverage for Vodafone Station button platform ([@chemelli74] - [#133281])
+- Cleanup tests for tedee ([@zweckj] - [#133306])
+- Split coordinator in lamarzocco ([@zweckj] - [#133208])
+- Conversation: Use [] when we know key exists ([@balloob] - [#133305])
+- Update docker base image to 2024.12.1 ([@cdce8p] - [#133323])
+- Set default min/max color temperature in abode lights ([@epenet] - [#133331])
+- Set default min/max color temperature in demo lights ([@epenet] - [#133330])
+- Add reconfigure flow to Roku ([@ctalkington] - [#132986])
+- Set default min/max color temperature in wemo lights ([@epenet] - [#133338])
+- Avoid string manipulations in hassio backup reader/writer ([@emontnemery] - [#133339])
+- Set default min/max color temperature in deconz lights ([@epenet] - [#133333])
+- Use `ConfigEntry.runtime_data` in Twitch ([@jpbede] - [#133337])
+- Set default min/max color temperature in matter lights ([@epenet] - [#133340])
+- Suez_water: mark reached bronze scale level ([@jb101010-2] - [#133352])
+- Set default min/max color temperature in homekit_controller lights ([@epenet] - [#133334])
+- Reduce false-positives in test-before-setup IQS check ([@epenet] - [#133349])
+- Add Idasen Desk quality scale record ([@abmantis] - [#132368])
+- Add Habitica quality scale record ([@tr4nt0r] - [#131429])
+- Record current IQS state for LaMetric ([@frenck] - [#133040])
+- Use unique_id in devolo Home Network tests ([@Shutgun] - [#133147])
+- Update myuplink quality scale ([@astrandb] - [#133083])
+- Velbus finish config-flow-test-coverage ([@cereal2nd] - [#133149])
+- Add reauth flow to Ituran ([@shmuelzon] - [#132755])
+- Remove custom "unknown" state from Fronius Enum sensor ([@farmio] - [#133361])
+- Velbus add PARALLEL_UPDATES to all platforms ([@cereal2nd] - [#133155])
+- Update hassio backup agents on mount added or removed ([@emontnemery] - [#133344])
+- Translate exception messages in myUplink ([@astrandb] - [#131626])
+- Add HEOS reconfigure flow ([@andrewsayre] - [#133326])
+- Set default min/max color temperature in mqtt lights ([@epenet] - [#133356])
+- Increase backup upload timeout ([@ludeeus] - [#132990])
+- Add quality scale to ElevenLabs ([@sorgfresser] - [#133276])
+- Remove support for live recorder data post migration of entity IDs ([@emontnemery] - [#133370])
+- Gives a friendly name to emoncms entities if unit is not specified ([@alexandrecuer] - [#133358])
+- Add switch platform to local_slide ([@dontinelli] - [#133369])
+- Load sun via entity component ([@gjohansson-ST] - [#132598])
+- Improvements to the LaMetric config flow tests ([@frenck] - [#133383])
+- Add required domain to vacuum intents ([@synesthesiam] - [#133166])
+- Update axis to v64 ([@cdce8p] - [#133385])
+- Remove setup entry mock assert from LaMetric config flow ([@frenck] - [#133387])
+- Add reauth flow to Ohme ([@dan-r] - [#133275])
+- Nord Pool iqs platinum ([@gjohansson-ST] - [#133389])
+- Add Matter battery replacement description ([@lboue] - [#132974])
+- Update mypy-dev to 1.14.0a7 ([@cdce8p] - [#133390])
+- Fix issue when no data, where the integer sensor value is given a string ([@vche] - [#132123])
+- Add tests for Habitica integration ([@tr4nt0r] - [#131780])
+- Fix mqtt reconfigure flow ([@jbouwh] - [#133315])
+- Add palazzetti status sensor ([@dotvav] - [#131348])
+- Fix incorrect schema in config tests ([@epenet] - [#133404])
+- Add quality_scale.yaml to enphase_envoy ([@catsmanac] - [#132489])
+- Fix schema translation checks for nested config-flow sections ([@epenet] - [#133392])
+- Check if requirement is typed in strict_typing IQS validation ([@epenet] - [#133415])
+- Bump aiohasupervisor to version 0.2.2b2 ([@emontnemery] - [#133417])
+- Add reconfigure to Cookidoo integration ([@miaucl] - [#133144])
+- Improve hassio backup agent test coverage ([@emontnemery] - [#133424])
+- Improve hassio backup agent test coverage ([@emontnemery] - [#133426])
+- Mark lamarzocco as platinum quality ([@zweckj] - [#131609])
+- Mark acaia as platinum quality ([@zweckj] - [#131723])
+- Record current IQS scale for Tailwind ([@frenck] - [#133158])
+- Add MFA login flow support for cloud component ([@klejejs] - [#132497])
+- Record current IQS state for SABnzbd ([@jpbede] - [#131656])
+- Add quality scale for Fronius ([@farmio] - [#131770])
+- Adapt hassio backup agent to supervisor changes ([@emontnemery] - [#133428])
+- Fix two occurrences of "HomeAssistant" adding the missing space ([@NoRi2909] - [#133435])
+- Don't raise when removing non-existing cloud backup ([@emontnemery] - [#133429])
+- Remove three duplicated space characters in strings.json ([@NoRi2909] - [#133436])
+- Add transmission download path to events + add_torrent service ([@DrBlokmeister] - [#121371])
+- Support units and filters in async_get_travel_times_service for waze_travel_time ([@eifinger] - [#130776])
+- Simplify modern_forms config flow (part 2) ([@epenet] - [#130494])
+- Distinct sources per zone in Onkyo ([@arturpragacz] - [#130547])
+- Clean up backups after manual backup ([@emontnemery] - [#133434])
+- Don't run recorder data migration on new databases ([@emontnemery] - [#133412])
+- Improve empty state handling for SomfyThermostat in Overkiz ([@iMicknl] - [#131700])
+- Add optional category in OptionsFlow to holiday ([@gjohansson-ST] - [#129514])
+- Add missing CozyTouch servers to ConfigFlow expection handler in Overkiz ([@iMicknl] - [#131696])
+- Limit unique_id migration to platform for BMW ([@rikroe] - [#131582])
+- Remove unused constants from SABnzbd ([@jpbede] - [#133445])
+- Allow only single instance of energyzero integration ([@klaasnicolaas] - [#133443])
+- Use entity services in bluesound integration ([@LouisChrist] - [#129266])
+- Differentiate File integration entries by prefixing the title with the platform instead ([@benjamin-dcs] - [#131016])
+- Mark docs-removal-instructions for SABnzbd as done ([@jpbede] - [#133446])
+- Allow only single instance of easyenergy integration ([@klaasnicolaas] - [#133447])
+- Do not remove services when last config entry is unloaded in SABnzbd ([@jpbede] - [#133449])
+- Fix reconfigure in Nord Pool ([@gjohansson-ST] - [#133431])
+- Add Get price service to Nord Pool ([@gjohansson-ST] - [#130185])
+- Add integration_type to Idasen Desk ([@abmantis] - [#132486])
+- Bump actions/upload-artifact from 4.4.3 to 4.5.0 (@dependabot - [#133461])
+- Add sensors to Ituran integration ([@shmuelzon] - [#133359])
+- Add reconfigure flow to Russound RIO ([@noahhusby] - [#133091])
+- Add support for ACB batteries to Enphase Envoy ([@catsmanac] - [#131298])
+- Improve test coverage for Russound RIO ([@noahhusby] - [#133096])
+- Lift SABnzbd to bronze quality scale ([@jpbede] - [#133453])
+- Use a common base entity for Idasen Desk ([@abmantis] - [#132496])
+- Add ssdp discovery to Onkyo ([@eclair4151] - [#131066])
+- Fix test-before-setup IQS check ([@epenet] - [#133467])
+- Handle Home Connect error at diagnostics ([@Diegorro98] - [#131644])
+- Bump pypalazzetti to 0.1.15 ([@dotvav] - [#133433])
+- Add name to cloud connection info response ([@ludeeus] - [#133468])
+- Use enum instead of string for button entities key in Overkiz ([@iMicknl] - [#133472])
+- Add identify device class in Overkiz ([@iMicknl] - [#133474])
+- Set the with_strategy_settings to None for unknown backups ([@emontnemery] - [#133466])
+- Change device class from Volume to Volume Storage in Overkiz ([@iMicknl] - [#133473])
+- Add test button for SmokeSensor in Overkiz ([@iMicknl] - [#133476])
+- Add support for SwitchBot Relay Switch 1 and Relay Switch 1PM ([@greyeee] - [#132327])
+- Rename test file to singular form ([@joostlek] - [#133482])
+- Revert "Add support for subentries to config entries" ([@emontnemery] - [#133470])
+- Remove uneeded logger param from Idasen Desk Coordinator ([@abmantis] - [#133485])
+- Allow data description in sections ([@basbruss] - [#128965])
+- Deprecate Home Connect program switches ([@Diegorro98] - [#131641])
+- Add device_id parameter to LCN actions (service calls) ([@alengwenus] - [#129590])
+- Add entity translations to devolo Home Control ([@Shutgun] - [#132927])
+- Complete adding custom integration action sections support to hassfest ([@mj23000] - [#132443])
+- Add sensors platform to Watergate integration ([@adam-the-hero] - [#133015])
+- Add ability to translate ENUM sensor states in Unifi integration ([@bieniu] - [#131921])
+- Change log level of connection failure to info ([@philipdouglas] - [#132625])
+- Add diagnostics to slide_local ([@dontinelli] - [#133488])
+- Add (de)humidifier platform to Honeywell ([@mkmer] - [#132287])
+- Add exceptions and translations for slide_local ([@dontinelli] - [#133490])
+- Update quality scale for Russound RIO ([@noahhusby] - [#133093])
+- Rename strategy backup to automatic backup ([@emontnemery] - [#133489])
+- Increase Squeezebox config_flow test coverage to 100% ([@peteS-UK] - [#133484])
+- add exception translation to enphase_envoy ([@catsmanac] - [#132483])
+- Store automatic backup flag in backup metadata ([@emontnemery] - [#133500])
+- Add Peblar Rocksolid EV Chargers integration ([@frenck] - [#133501])
+- weatherkit: use stale data for up to an hour if updates fail ([@tjhorner] - [#130398])
+- Add select platform to IronOS ([@tr4nt0r] - [#132218])
+- Add tests for already_configured erros in IronOS integration ([@tr4nt0r] - [#132265])
+- Update number platform values before add in APSystems and add tests ([@Thomas55555] - [#131938])
+- Add "cancel room setpoint override" button to opentherm_gw ([@mvn23] - [#132162])
+- Use Switcher _async_call_api in climate ([@thecode] - [#133230])
+- Fix the local_file.update_file_path action's name and description ([@NoRi2909] - [#133509])
+- Reolink translate errors ([@starkillerOG] - [#132301])
+- Add tests for cover and increase test coverage for slide_local ([@dontinelli] - [#133515])
+- Ensure indices needed by data migrators exist ([@emontnemery] - [#133367])
+- Bump PyViCare to 2.39.0 ([@CFenner] - [#133519])
+- Bump uiprotect to 7.1.0 ([@RaHehl] - [#133520])
+- Reolink platinum quality scale ([@starkillerOG] - [#133514])
+- Fix names and description of two actions ([@NoRi2909] - [#133528])
+- Bump idasen-ha to 2.6.3 ([@abmantis] - [#133508])
+- Improve field descriptions for Download file action ([@NoRi2909] - [#133413])
+- Add integration setup tests to Peblar Rocksolid EV Chargers ([@frenck] - [#133532])
+- Simplify Idasen Desk entity properties ([@abmantis] - [#133536])
+- Add zeroconf discovery to Peblar Rocksolid EV chargers ([@frenck] - [#133529])
+- Optimize start time state queries for PostgreSQL ([@bdraco] - [#133228])
+- Use mV and mA as units for electrical power measurement in Matter ([@agners] - [#133505])
+- Set default min/max color temperature in hue lights ([@epenet] - [#133548])
+- Revert "Update docker base image to 2024.12.1" ([@frenck] - [#133552])
+- Add comment motivating magic number for MySQL error codes ([@emontnemery] - [#133516])
+- Bump pydantic to 2.10.4 ([@bdraco] - [#133539])
+- Revert "Optimize start time state queries for PostgreSQL" ([@bdraco] - [#133555])
+- Fulfill IQS rule config-flow in ViCare integration ([@CFenner] - [#133524])
+- Create repair issues when automatic backup fails ([@emontnemery] - [#133513])
+- Update Home Assistant base image to 2024.12.0 ([@frenck] - [#133558])
+- Grammar fixes for action names and descriptions ([@NoRi2909] - [#133559])
+- Change 'GSuite' to 'Workspace', fix 'Start' field label ([@NoRi2909] - [#133554])
+- Bump codecov/codecov-action from 5.1.1 to 5.1.2 (@dependabot - [#133547])
+- Replace start time state query with single correlated scalar subquery ([@bdraco] - [#133553])
+- Revert "Revert "Improve recorder history queries (#131702)"" ([@emontnemery] - [#133561])
+- Revert "Revert "Simplify recorder RecorderRunsManager (#131785)"" ([@emontnemery] - [#133564])
+- Add mW as unit of measurement for Matter electrical power sensors ([@agners] - [#133504])
+- Set Russound RIO quality scale to silver ([@noahhusby] - [#133494])
+- Bump pylamarzocco to 1.4.1 ([@zweckj] - [#133557])
+- Fix boot loop after restoring backup ([@emontnemery] - [#133581])
+- Improve Google Tasks coordinator updates behavior ([@allenporter] - [#133316])
+- Update Airgradient quality scale ([@joostlek] - [#133569])
+- Add data descriptions to Mealie integration ([@andrew-codechimp] - [#133590])
+- Set default min/max color temperature in template lights ([@epenet] - [#133549])
+- Add basic UniFi Protect AiPort support ([@RaHehl] - [#133523])
+- Improve Airgradient config flow tests ([@joostlek] - [#133594])
+- Bump yalexs-ble to 2.5.6 ([@bdraco] - [#133593])
+- Update Idasen Desk user flow step strings ([@abmantis] - [#133605])
+- Fix Watergate Water meter volume sensor ([@adam-the-hero] - [#133606])
+- Mark `docs-installation-parameters` for SABnzbd as done ([@jpbede] - [#133609])
+- Bump PyViCare to 2.39.1 ([@CFenner] - [#133619])
+- Remove lower bound for history start time state query ([@bdraco] - [#133607])
+- Fixes and code cleanup for IronOS integration ([@tr4nt0r] - [#133579])
+- Add min/max price sensor to Nord Pool ([@gjohansson-ST] - [#133534])
+- Add async_register_backup_agents_listener to cloud/backup ([@ludeeus] - [#133584])
+- Define setpoints as constants in flexit_bacnet ([@lellky] - [#133580])
+- Switch to official Zabbix Python API ([@kruton] - [#131674])
+- Bump aiohasupervisor to version 0.2.2b3 ([@emontnemery] - [#133631])
+- Add scale support to lamarzocco ([@zweckj] - [#133335])
+- Upgrade QS from bronze to silver for slide_local ([@dontinelli] - [#133560])
+- Record Knocki quality scale ([@joostlek] - [#133582])
+- Record Mealie quality scale ([@joostlek] - [#133587])
+- Record NYT Games quality scale ([@joostlek] - [#133592])
+- Add Swiss Public Transport quality scale record ([@miaucl] - [#131629])
+- Fix homeassistant_included flag for local backups ([@emontnemery] - [#133640])
+- Fix reading extra metadata for local backups ([@emontnemery] - [#133643])
+- Record Analytics Insights quality scale ([@joostlek] - [#133571])
+- Reject duplicates in WS command backup/config/update ([@emontnemery] - [#133650])
+- Fix inconsistent spelling of "PIN" vs. "pin" ([@NoRi2909] - [#133656])
+- Fix inconsistent spelling of "PIN" vs. "pin" ([@NoRi2909] - [#133655])
+- Add Mealie to strict typing ([@joostlek] - [#133644])
+- Fix inconsistent spelling of "PIN" and "ID" ([@NoRi2909] - [#133653])
+- Fix logic in backup retention filter ([@emontnemery] - [#133654])
+- Bump aiohasupervisor to version 0.2.2b4 ([@emontnemery] - [#133652])
+- Add outlet device class to iotty switch entity ([@shapournemati-iotty] - [#132912])
+- Validate password before restoring backup ([@emontnemery] - [#133647])
+- Fix target temperature for AtlanticElectricalTowelDryer in Overkiz ([@iMicknl] - [#133657])
+- Add translations to Mealie exceptions ([@joostlek] - [#133648])
+- Bump pypck to 0.8.1 ([@alengwenus] - [#133646])
+- Add missing await in Minecraft Server ([@elmurato] - [#133670])
+- Add check for client errors to stream component ([@sdb9696] - [#132866])
+- Replace tests for Idasen Desk with parameterized test ([@abmantis] - [#133672])
+- Improve recorder data migrator tests ([@emontnemery] - [#133628])
+- Reword invoke_pin action to avoid misunderstanding with "PIN" ([@NoRi2909] - [#133665])
+- Add parallel updates to Mealie ([@joostlek] - [#133660])
+- Bump intents to 2024.12.20 ([@synesthesiam] - [#133676])
+- Allow Filter title to be translated ([@gjohansson-ST] - [#128929])
+- Update Roborock to 2.8.4 ([@Lash-L] - [#133680])
+- Fix Mealie test coverage ([@joostlek] - [#133659])
+- Bump PySwitchbot to 0.55.2 ([@bdraco] - [#133690])
+- Add initial support for SwitchBot relay switch ([@greyeee] - [#130863])
+- Add entity translation strings for ScreenLogic ([@dieselrabbit] - [#130708])
+- Bump Ohme library version to 1.2.0 ([@dan-r] - [#133666])
+- iaqualink: fix load_verify_locations() blocking call ([@flz] - [#133459])
+- Use common mock fixture in Idasen Desk config flow tests ([@abmantis] - [#133679])
+- Adjust the default backup name ([@emontnemery] - [#133668])
+- Improve HEOS group handling ([@andrewsayre] - [#132213])
+- Simplify query to find oldest state ([@bdraco] - [#133700])
+- Improve purge performance for PostgreSQL with large databases ([@bdraco] - [#133699])
+- Update the Google Tasks quality scale with documentation improvements ([@allenporter] - [#133701])
+- Add update platform to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133570])
+- Fix inconsistent use of "pin" vs. "PIN" ([@NoRi2909] - [#133685])
+- Replace lowercase "pin" in error message with the correct "PIN" ([@NoRi2909] - [#133684])
+- Change "pin" to "PIN" for consistency with common string ([@NoRi2909] - [#133682])
+- Change "pin" to correct "PIN" for consistent translations ([@NoRi2909] - [#133681])
+- Handle WebsocketConnectionError during mqtt auto reconnect ([@bdraco] - [#133697])
+- Improve BMW config flow ([@rikroe] - [#133705])
+- Allow lamarzocco to reconnect websocket ([@zweckj] - [#133635])
+- Enable AEMET data cache ([@Noltari] - [#131226])
+- Add diagnostic to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133706])
+- Use MAC address in Twinkly `DeviceInfo.connections` ([@bieniu] - [#133708])
+- Add sensors tests for Peblar Rocksolid EV Chargers ([@frenck] - [#133710])
+- Adjust freezer tick in settings tests of IronOS integration ([@tr4nt0r] - [#133707])
+- Fix section translations check ([@arturpragacz] - [#133683])
+- Store Twinkly runtime data in config entry ([@bieniu] - [#133714])
+- Add updates tests for Peblar Rocksolid EV Chargers ([@frenck] - [#133712])
+- Test color_temp updates are processed when an mqtt json light is turned off ([@jbouwh] - [#133715])
+- Fix test coverage in workday ([@gjohansson-ST] - [#133616])
+- Add device test for Peblar Rocksolid EV Chargers ([@frenck] - [#133713])
+- Use super constructor self.config_entry in enphase_envoy coordinator ([@catsmanac] - [#133718])
+- Use mac address in Twinkly for unique id ([@joostlek] - [#133717])
+- Fix spelling of "Gateway PIN" and remove two excessive spaces ([@NoRi2909] - [#133716])
+- Add select platform to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133720])
+- KNX: Option to select specific tunnel endpoint on TCP connections ([@farmio] - [#131996])
+- Update aiohasupervisor to 0.2.2b5 ([@frenck] - [#133722])
+- Add power and energy related sensors to Peblar Rocksolid EV Chargers ([@frenck] - [#133729])
+- Update AEMET-OpenData to v0.6.4 ([@Noltari] - [#133723])
+- Add missing asserts to enphase_envoy config flow test ([@catsmanac] - [#133730])
+- Reuse title of deleted enphase_envoy config entry if present ([@catsmanac] - [#133611])
+- Replace two outdated occurrences of "service" with "action" ([@NoRi2909] - [#133728])
+- Replace "service" with "action" in Z-Wave action descriptions ([@NoRi2909] - [#133727])
+- Add reconfiguration flow to Plugwise ([@CoMPaTech] - [#132878])
+- Bump tplink python-kasa dependency to 0.9.0 ([@sdb9696] - [#133735])
+- Change niko_home_control library to nhc to get push updates ([@VandeurenGlenn] - [#132750])
+- Add DHCP discovery to Withings ([@joostlek] - [#133737])
+- Add number platform to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133739])
+- Add switch platform to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133749])
+- Update peblar to v0.3.0 ([@frenck] - [#133751])
+- Fix Peblar current limit user setting value ([@frenck] - [#133753])
+- Add binary sensor platform to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133755])
+- Add more sensors to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133754])
+- Add reauthentication support to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133757])
+- Replace queries using distinct with correlated scalar subqueries to significantly improve purge performance ([@bdraco] - [#133748])
+- Reduce complexity to find unused data_ids and attributes_ids for db engines with slow range select ([@bdraco] - [#133752])
+- TotalConnect use entry.runtime_data ([@austinmroczek] - [#133756])
+- Bump pyOverkiz to 1.15.4 ([@iMicknl] - [#133769])
+- Add additional Hitachi sensors to Overkiz ([@iMicknl] - [#133772])
+- Update integration quality scale for Peblar Rocksolid EV Chargers ([@frenck] - [#133764])
+- Merge similar tests to parameterized tests for enphase_envoy ([@catsmanac] - [#133740])
+- Migrate to runtime data in Overkiz ([@iMicknl] - [#133760])
+- Add support for HitachiAirToWaterHeatingZone in Overkiz ([@iMicknl] - [#133768])
+- Use new UnitOfEnergy constants in Overkiz ([@iMicknl] - [#133778])
+- Fix binary_sensor typing in Overkiz ([@iMicknl] - [#133782])
+- Add button platform to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133780])
+- Refactor Twinkly tests ([@joostlek] - [#133725])
+- Update quality-scale status for enphase_envoy config_flow missing data descriptions ([@catsmanac] - [#133726])
+- Set parallel updates for Peblar Rocksolid EV Chargers integration ([@frenck] - [#133786])
+- Fix errors in HitachiDHW in Overkiz ([@iMicknl] - [#133765])
+- Add base entity for Niko Home Control ([@joostlek] - [#133744])
+- Remove myself from govee_ble codeowners ([@PierreAronnax] - [#133790])
+- Add base entity to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133794])
+- Add reconfigure flow to Peblar Rocksolid EV Chargers integration ([@frenck] - [#133785])
+- Add button error handling for Peblar Rocksolid EV Chargers ([@frenck] - [#133802])
+- Use feature checks in tplink integration ([@sdb9696] - [#133795])
+- Add config flow stream preview to generic camera ([@davet2001] - [#122563])
+- Bump Weheat to 2024.12.22 ([@jesperraemaekers] - [#133796])
+- Bump PySwitchbot to 0.55.3 ([@bdraco] - [#133812])
+- Bump async-upnp-client to 0.42.0 ([@StevenLooman] - [#133806])
+- Add Compressor, Inside Unit and Energy Output fields to Weheat ([@barryvdh] - [#129632])
+- Show device name in Twinkly discovery ([@joostlek] - [#133814])
+- Add binary states for Weheat indoor unit ([@barryvdh] - [#133811])
+- Add select error handling for Peblar Rocksolid EV Chargers ([@frenck] - [#133804])
+- Fix typo in ElevenLabs ([@sorgfresser] - [#133819])
+- Remove unneeded type for enphase_envoy coordinator in async_unload_entry ([@catsmanac] - [#133817])
+- Add switch error handling for Peblar Rocksolid EV Chargers ([@frenck] - [#133805])
+- Add number error handling for Peblar Rocksolid EV Chargers ([@frenck] - [#133803])
+- Add get_user_keyring_info service to UniFi Protect integration ([@RaHehl] - [#133138])
+- Remove unused fixture from LCN tests ([@alengwenus] - [#133821])
+- Bump flux_led to 1.1.0 ([@bdraco] - [#133818])
+- Add camera platform to tplink integration ([@sdb9696] - [#129180])
+- Add reconfigure flow to slide_local ([@dontinelli] - [#133669])
+- Add already exists config flow tests for Ecovacs ([@edenhaus] - [#133572])
+- Add media browsing to Cambridge Audio ([@noahhusby] - [#129106])
+- Load data for multiple days in Nord Pool ([@gjohansson-ST] - [#133371])
+- Unifiprotect Add user information retrieval for NFC and fingerprint events ([@RaHehl] - [#132604])
+- Add pan/tilt features to tplink integration ([@sdb9696] - [#133829])
+- Bump pylamarzocco to 1.4.2 ([@zweckj] - [#133826])
+- Add Switchbot Water Leak Detector (BLE) ([@luc-ass] - [#133799])
+- Add light tests for Niko Home Control ([@joostlek] - [#133750])
+- Bump pyOverkiz to 1.15.5 ([@iMicknl] - [#133835])
+- Make To-do action names and descriptions consistent with HA standard ([@NoRi2909] - [#133734])
+- Reload on connection lost for LCN integration ([@alengwenus] - [#133638])
+- Suez_water: fix yesterday sensor extra_state invalid typing ([@jb101010-2] - [#133425])
+- Add data descriptions to Config Flow in Overkiz ([@iMicknl] - [#133758])
+- Add detection switches to tplink integration ([@sdb9696] - [#133828])
+- Unifiprotect: add error message if the get_user_keyring_info permissions are not sufficient ([@RaHehl] - [#133841])
+- Bump protobuf to 5.29.2 ([@bdraco] - [#133839])
+- Bump anyio to 4.7.0 ([@bdraco] - [#133842])
+- Fulfill IQS rule runtime-data in ViCare integration ([@CFenner] - [#133633])
+- Add backup the list of integrations platforms to preload ([@bdraco] - [#133856])
+- Add backup to the list of storage preloads ([@bdraco] - [#133855])
+- Bump ZHA to 0.0.43 ([@TheJulianJES] - [#133854])
+- Ensure late import in backup of hassio.backup does not block the event loop ([@bdraco] - [#133857])
+- Fix TypeError in maxcube climate action inference logic ([@mweinelt] - [#133853])
+- Ignore devices (bravias) with 'video' service_type for songpal discovery ([@rytilahti] - [#133724])
+- Bump github/codeql-action from 3.27.9 to 3.28.0 (@dependabot - [#133862])
+- Ensure icalendar==6.1.0 is installed for caldav integration ([@jon6fingrs] - [#133541])
+- Bump PySwitchbot to 0.55.4 ([@bdraco] - [#133861])
+- Add translated enum entity for Fronius error code ([@farmio] - [#133394])
+- Adding initial support for Tuya Electric Fireplaces ([@mrtlhfr] - [#133503])
+- Upgrade QS from silver to gold for slide_local ([@dontinelli] - [#133863])
+- Add Leak detect entity for YoLink water meter controller ([@matrixd2] - [#131682])
+- Use user defined charge limit for charge limit range in Peblar ([@DCSBL] - [#133868])
+- Add actions with response values to Music Assistant ([@marcelveldt] - [#133521])
+- Add coordinator error handling for Peblar Rocksolid EV Chargers ([@frenck] - [#133809])
+- Mark Peblar Rocksolid EV Chargers Platinum ([@frenck] - [#133823])
+- Add compatibility code for deprecated WaterHeaterEntityEntityDescription ([@epenet] - [#133351])
+- Add coordinator to Twinkly ([@joostlek] - [#133793])
+- Respect ESPHome ClimateTrait supports_current_temperature ([@Omniflux] - [#132149])
+- Bump deebot-client to 10.0.1 ([@edenhaus] - [#133634])
+- ElevenLabs invalid api key config flow testing ([@sorgfresser] - [#133822])
+- Fix tplink camera entity unique id ([@sdb9696] - [#133880])
+- Improve firmware update required issue ([@starkillerOG] - [#133878])
+- Add cover to the niko_home_control integration ([@VandeurenGlenn] - [#133801])
+- Add AEMET Weather Radar images ([@Noltari] - [#131386])
+- Add Ecovacs station entities ([@edenhaus] - [#133876])
+- Set Fronius integration quality scale to gold ([@farmio] - [#133884])
+- Update frontend to 20241223.1 ([@bramkragten] - [#133886])
+- Make tplink entities unavailable if camera is off ([@sdb9696] - [#133877])
+- Use SD stream for tplink mpeg stream ([@sdb9696] - [#133879])
+- Streamline Peblar translations ([@DCSBL] - [#133883])
+- Preload supported color properties in fritzbox lights ([@mib1185] - [#133798])
+- Catch ClientConnectorError and TimeOutError in APSystems ([@Thomas55555] - [#132027])
+- Fix a history stats bug when window and tracked state change simultaneously ([@karwosts] - [#133770])
+- Add Harvey virtual integration ([@Jordi1990] - [#133874])
+- Map RGB+CCT to RGB for WLED ([@mmrazik] - [#133900])
+- Sort integration platforms preload list ([@bdraco] - [#133905])
+- Ensure cloud and recorder backup platforms do not have to wait for the import executor ([@bdraco] - [#133907])
+- Fix duplicate call to async_register_preload_platform ([@bdraco] - [#133909])
+- Add cronsim to default dependencies ([@abmantis] - [#133913])
+- Slow down polling in Teslemetry ([@Bre77] - [#133924])
+- Fix missing % in string for generic camera ([@davet2001] - [#133925])
+- Fix Peblar import in data coordinator ([@frenck] - [#133926])
+- Stop using shared aiohttp client session for Subaru integration ([@G-Two] - [#133931])
+- Fix reload modbus component issue ([@crug80] - [#133820])
+- Hive: Fix error when device goes offline ([@KJonline] - [#133848])
+- fix "Slow" response leads to "Could not find a charging station" #124129 ([@dannerph] - [#133889])
+- Update apprise to v1.9.1 ([@frenck] - [#133936])
+- Use SignedSession in Xbox ([@joostlek] - [#133938])
+- Update Jinja2 to 3.1.5 ([@cdce8p] - [#133951])
+- Update frontend to 20241224.0 ([@bramkragten] - [#133963])
+- Fix swiss public transport line field none ([@miaucl] - [#133964])
+- Ensure all states have been migrated to use timestamps ([@bdraco] - [#134007])
+- Bump pylamarzocco to 1.4.3 ([@zweckj] - [#134008])
+- Improve Google Tasks error messages ([@allenporter] - [#134023])
+- Fix Nord Pool empty response ([@gjohansson-ST] - [#134033])
+- Cleanup devices in Nord Pool from reconfiguration ([@gjohansson-ST] - [#134043])
+- Bump aiorussound to 4.1.1 ([@noahhusby] - [#134058])
+- Change SimpliSafe websocket reconnection log to `DEBUG`-level ([@bachya] - [#134063])
+- Remove timeout from Russound RIO initialization ([@noahhusby] - [#134070])
+- Fix KNX config flow translations and add data descriptions ([@farmio] - [#134078])
+- Make google tasks recoverable ([@joostlek] - [#134092])
+- Make elevenlabs recoverable ([@joostlek] - [#134094])
+- Bump python-homeassistant-analytics to 0.8.1 ([@joostlek] - [#134101])
+- Bump `pytile` to 2024.12.0 ([@bachya] - [#134103])
+- Bump yt-dlp to 2024.12.23 ([@joostlek] - [#134131])
+- Add missing device classes in scrape ([@gjohansson-ST] - [#134141])
+- Update knx-frontend to 2024.12.26.233449 ([@farmio] - [#134184])
+- Make PEGELONLINE recoverable ([@mib1185] - [#134199])
+- Make feedreader recoverable ([@mib1185] - [#134202])
+- Fix Wake on LAN Port input as Box instead of Slider ([@luc-ass] - [#134216])
+- Bump VoIP utils to 0.2.2 ([@synesthesiam] - [#134219])
+- Bump frontend to 20241229.0 ([@balloob] - [#134225])
+- Bump pyvlx to 0.2.26 ([@pawlizio] - [#115483])
+- Make triggers and condition for monetary sensor consistent ([@NoRi2909] - [#131184])
+- Quickly process unavailable metrics in Prometheus ([@agoode] - [#133219])
+- Bump elmax-api ([@albertogeniola] - [#133845])
+- Fix duplicate sensor disk entities in Systemmonitor ([@gjohansson-ST] - [#134139])
+- Fix Onkyo volume rounding ([@arturpragacz] - [#134157])
+- Bump opower to 0.8.7 ([@tronikos] - [#134228])
+- Bump aiopegelonline to 0.1.1 ([@mib1185] - [#134230])
+- Avoid KeyError for ignored entries in async_step_zeroconf of Android TV Remote ([@tronikos] - [#134250])
+- Fix 400 This voice does not support speaking rate or pitch parameters at this time for Google Cloud Journey voices ([@tronikos] - [#134255])
+- Bump pylamarzocco to 1.4.5 ([@zweckj] - [#134259])
+- ollama: update to 0.4.5 ([@FliegendeWurst] - [#134265])
+- Remove excessive period at end of action name ([@NoRi2909] - [#134272])
+- Bump aiomealie to 0.9.5 ([@andrew-codechimp] - [#134274])
+- Update frontend to 20241230.0 ([@bramkragten] - [#134284])
+- Improve Mealie set mealplan service ([@joostlek] - [#130606])
+- Update Flick Electric API ([@ZephireNZ] - [#133475])
+- Add stream preview to options flow in generic camera ([@davet2001] - [#133927])
+- Bump aiocomelit to 0.10.1 ([@chemelli74] - [#134214])
+- Handle missing application credentials in Tesla Fleet ([@Bre77] - [#134237])
+- Allow automations to pass any conversation_id for Google Generative AI ([@tronikos] - [#134251])
+- Set backup manager state to completed when restore is finished ([@bramkragten] - [#134283])
+- Bump reolink-aio to 0.11.6 ([@starkillerOG] - [#134286])
+- Bump pysynthru version to 0.8.0 ([@nielstron] - [#134294])
+- Bump aioshelly to 12.2.0 ([@chemelli74] - [#134352])
+- Bump hassil to 2.1.0 ([@synesthesiam] - [#134359])
+- Revert speech seconds to 0.3 ([@synesthesiam] - [#134360])
+- Update frontend to 20241231.0 ([@bramkragten] - [#134363])
+- Bump pylamarzocco to 1.4.6 ([@zweckj] - [#134367])
+- Improve is docker env checks ([@candrews] - [#132404])
+- Handle backup errors more consistently ([@MartinHjelmare] - [#133522])
+- Improve support for Aprilaire S86WMUPR ([@chamberlain2007] - [#133974])
+- Add new ID LAP-V201S-AEUR for Vital200S AirPurifier in Vesync integration ([@by-cx] - [#133999])
+- Vesync unload error when not all platforms used ([@cdnninja] - [#134166])
+- Improve Supervisor backup error handling ([@agners] - [#134346])
+- Bump zabbix-utils to 2.0.2 ([@kruton] - [#134373])
+- Check vehicle metadata ([@Bre77] - [#134381])
+- Add state attributes translations to GIOS ([@krzysdabro] - [#134390])
+- Fix SQL sensor name ([@gjohansson-ST] - [#134414])
+- Bump intents to 2025.1.1 ([@synesthesiam] - [#134424])
+- Bump ZHA to 0.0.44 ([@TheJulianJES] - [#134427])
+- Improve hassio backup create and restore parameter checks ([@emontnemery] - [#134434])
+- Export IncorrectPasswordError from backup integration ([@emontnemery] - [#134436])
+- Adjust language in backup integration ([@emontnemery] - [#134440])
+- Initialize AppleTVConfigFlow.identifiers ([@emontnemery] - [#134443])
+- Bump aioacaia to 0.1.12 ([@zweckj] - [#134454])
+- Update frontend to 20250102.0 ([@bramkragten] - [#134462])
+- open_meteo: correct UTC timezone handling in hourly forecast ([@aagit] - [#129664])
+- Include host in Peblar EV-Charger discovery setup description ([@DCSBL] - [#133954])
+- Don't start recorder if a database from the future is used ([@emontnemery] - [#134467])
+- Bump deebot-client to 10.1.0 ([@edenhaus] - [#134470])
+- Fix a few small typos in peblar ([@NoRi2909] - [#134481])
+- Update peblar to 0.3.1 ([@frenck] - [#134486])
+- Fix input_datetime.set_datetime not accepting 0 timestamp value ([@frenck] - [#134489])
+- Bump aioacaia to 0.1.13 ([@zweckj] - [#134496])
+- Fix backup dir not existing ([@balloob] - [#134506])
+- Add error prints for recorder fatal errors ([@emontnemery] - [#134517])
+- Improve recorder schema migration error test ([@emontnemery] - [#134518])
+- Handle deCONZ color temp 0 is never used when calculating kelvin CT ([@Kane610] - [#134521])
+- Fix activating backup retention config on startup ([@emontnemery] - [#134523])
+- Update peblar to v0.3.2 ([@frenck] - [#134524])
+- Only load Peblar customization update entity when present ([@frenck] - [#134526])
+- Add Reolink proxy for playback ([@starkillerOG] - [#133916])
+- Simplify error handling when creating backup ([@emontnemery] - [#134528])
+- Add backup as after_dependency of frontend ([@emontnemery] - [#134534])
+- Set Ituran to silver ([@joostlek] - [#134538])
+- Avoid early COMPLETED event when restoring backup ([@emontnemery] - [#134546])
+- Log cloud backup agent file list ([@emontnemery] - [#134556])
+- Update frontend to 20250103.0 ([@bramkragten] - [#134561])
+- Cherry pick single file from #134020 to fix generic component tests ([@edenhaus] - [#134569])
+- Bump whirlpool-sixth-sense to 0.18.11 ([@abmantis] - [#134562])
+
+## Release 2025.1.1 - January 7
+
+- Matter Battery replacement icon ([@lboue] - [#134460])
+- Small fix to allow playing of expandable favorites on Squeezebox ([@peteS-UK] - [#134572])
+- Bump bleak-esphome to 2.0.0 ([@bdraco] - [#134580])
+- Bump uiprotect to version 7.2.0 ([@RaHehl] - [#134587])
+- Mention case-sensitivity in tplink credentials prompt ([@rytilahti] - [#134606])
+- Fix Flick Electric authentication ([@ZephireNZ] - [#134611])
+- Fix hive color tunable light ([@epenet] - [#134628])
+- Set logging in manifest for Cookidoo ([@miaucl] - [#134645])
+- Remove call to remove slide ([@joostlek] - [#134647])
+- Update twentemilieu to 2.2.1 ([@frenck] - [#134651])
+- Fix Reolink playback of recodings ([@starkillerOG] - [#134652])
+- Update peblar to 0.3.3 ([@frenck] - [#134658])
+- Bump cookidoo-api library to 0.11.1 of for Cookidoo ([@miaucl] - [#134661])
+- Update demetriek to 1.1.1 ([@frenck] - [#134663])
+- Cookidoo exotic domains ([@miaucl] - [#134676])
+- Iterate over a copy of the list of programs at Home Connect select setup entry ([@Diegorro98] - [#134684])
+- Change from host to ip in zeroconf discovery for slide_local ([@dontinelli] - [#134709])
+- Bump ZHA to 0.0.45 ([@TheJulianJES] - [#134726])
+- Bump openwebifpy to 4.3.1 ([@autinerd] - [#134746])
+- Fix swapped letter order in "ยฐF" and "ยฐC" temperature units ([@NoRi2909] - [#134750])
+- Bumb python-homewizard-energy to 7.0.1 ([@DCSBL] - [#134753])
+- Register base device entry during coordinator setup in AVM Fritz!Tools integration ([@mib1185] - [#134764])
+- Bump pysuezV2 to 2.0.1 ([@jb101010-2] - [#134769])
+- Fix missing sentence-casing etc. in several strings ([@NoRi2909] - [#134775])
+- Raise ImportError in python_script ([@gjohansson-ST] - [#134792])
+- Replace "id" with "ID" for consistency across HA ([@NoRi2909] - [#134798])
+- Fix a few typos or grammar issues in asus_wrt ([@NoRi2909] - [#134813])
+- Bump uiprotect to version 7.4.1 ([@RaHehl] - [#134829])
+- Bump habluetooth to 3.7.0 ([@bdraco] - [#134833])
+- Fix how function arguments are passed on actions at Home Connect ([@Diegorro98] - [#134845])
+- Bump aiolifx-themes to update colors ([@Djelibeybi] - [#134846])
+- Update Roborock config flow message when an account is already configured ([@allenporter] - [#134854])
+- Log upload BackupAgentError ([@ludeeus] - [#134865])
+- Log cloud backup upload response status ([@ludeeus] - [#134871])
+- Bump solax to 3.2.3 ([@squishykid] - [#134876])
+- Add extra failure exceptions during roborock setup ([@Lash-L] - [#134889])
+- Use uppercase for "ID" and sentence-case for "name" / "icon" ([@NoRi2909] - [#134890])
+- Bump python-kasa to 0.9.1 ([@sdb9696] - [#134893])
+- Add `bring_api` to loggers in Bring integration ([@tr4nt0r] - [#134897])
+- Fix wrong power limit decimal place in IronOS ([@tr4nt0r] - [#134902])
+- Update frontend to 20250106.0 ([@bramkragten] - [#134905])
+- Bump powerfox to v1.1.0 ([@klaasnicolaas] - [#134730])
+- Bump powerfox to v1.2.0 ([@klaasnicolaas] - [#134908])
+- Bump holidays to 0.64 ([@gjohansson-ST] - [#134922])
+- Revert "Remove deprecated supported features warning in LightEntity" ([@arturpragacz] - [#134927])
+- Revert "Remove deprecated supported features warning in ..." (multiple) ([@frenck] - [#134933])
+
+[#134460]: https://github.com/home-assistant/core/pull/134460
+[#134572]: https://github.com/home-assistant/core/pull/134572
+[#134580]: https://github.com/home-assistant/core/pull/134580
+[#134587]: https://github.com/home-assistant/core/pull/134587
+[#134606]: https://github.com/home-assistant/core/pull/134606
+[#134611]: https://github.com/home-assistant/core/pull/134611
+[#134628]: https://github.com/home-assistant/core/pull/134628
+[#134645]: https://github.com/home-assistant/core/pull/134645
+[#134647]: https://github.com/home-assistant/core/pull/134647
+[#134651]: https://github.com/home-assistant/core/pull/134651
+[#134652]: https://github.com/home-assistant/core/pull/134652
+[#134658]: https://github.com/home-assistant/core/pull/134658
+[#134661]: https://github.com/home-assistant/core/pull/134661
+[#134663]: https://github.com/home-assistant/core/pull/134663
+[#134676]: https://github.com/home-assistant/core/pull/134676
+[#134684]: https://github.com/home-assistant/core/pull/134684
+[#134709]: https://github.com/home-assistant/core/pull/134709
+[#134726]: https://github.com/home-assistant/core/pull/134726
+[#134730]: https://github.com/home-assistant/core/pull/134730
+[#134746]: https://github.com/home-assistant/core/pull/134746
+[#134750]: https://github.com/home-assistant/core/pull/134750
+[#134753]: https://github.com/home-assistant/core/pull/134753
+[#134764]: https://github.com/home-assistant/core/pull/134764
+[#134769]: https://github.com/home-assistant/core/pull/134769
+[#134775]: https://github.com/home-assistant/core/pull/134775
+[#134792]: https://github.com/home-assistant/core/pull/134792
+[#134798]: https://github.com/home-assistant/core/pull/134798
+[#134813]: https://github.com/home-assistant/core/pull/134813
+[#134829]: https://github.com/home-assistant/core/pull/134829
+[#134833]: https://github.com/home-assistant/core/pull/134833
+[#134845]: https://github.com/home-assistant/core/pull/134845
+[#134846]: https://github.com/home-assistant/core/pull/134846
+[#134854]: https://github.com/home-assistant/core/pull/134854
+[#134865]: https://github.com/home-assistant/core/pull/134865
+[#134871]: https://github.com/home-assistant/core/pull/134871
+[#134876]: https://github.com/home-assistant/core/pull/134876
+[#134889]: https://github.com/home-assistant/core/pull/134889
+[#134890]: https://github.com/home-assistant/core/pull/134890
+[#134893]: https://github.com/home-assistant/core/pull/134893
+[#134897]: https://github.com/home-assistant/core/pull/134897
+[#134902]: https://github.com/home-assistant/core/pull/134902
+[#134905]: https://github.com/home-assistant/core/pull/134905
+[#134908]: https://github.com/home-assistant/core/pull/134908
+[#134922]: https://github.com/home-assistant/core/pull/134922
+[#134927]: https://github.com/home-assistant/core/pull/134927
+[#134933]: https://github.com/home-assistant/core/pull/134933
+[@DCSBL]: https://github.com/DCSBL
+[@Diegorro98]: https://github.com/Diegorro98
+[@Djelibeybi]: https://github.com/Djelibeybi
+[@Lash-L]: https://github.com/Lash-L
+[@NoRi2909]: https://github.com/NoRi2909
+[@RaHehl]: https://github.com/RaHehl
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@ZephireNZ]: https://github.com/ZephireNZ
+[@allenporter]: https://github.com/allenporter
+[@arturpragacz]: https://github.com/arturpragacz
+[@autinerd]: https://github.com/autinerd
+[@bdraco]: https://github.com/bdraco
+[@bramkragten]: https://github.com/bramkragten
+[@dontinelli]: https://github.com/dontinelli
+[@epenet]: https://github.com/epenet
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@jb101010-2]: https://github.com/jb101010-2
+[@joostlek]: https://github.com/joostlek
+[@klaasnicolaas]: https://github.com/klaasnicolaas
+[@lboue]: https://github.com/lboue
+[@ludeeus]: https://github.com/ludeeus
+[@miaucl]: https://github.com/miaucl
+[@mib1185]: https://github.com/mib1185
+[@peteS-UK]: https://github.com/peteS-UK
+[@rytilahti]: https://github.com/rytilahti
+[@sdb9696]: https://github.com/sdb9696
+[@squishykid]: https://github.com/squishykid
+[@starkillerOG]: https://github.com/starkillerOG
+[@tr4nt0r]: https://github.com/tr4nt0r
+
+## Release 2025.1.2 - January 9
+
+- Fix Mรฉtรฉo-France setup in non French cities (because of failed next rain sensor) ([@Quentame] - [#134782])
+- Increase cloud backup download timeout ([@ludeeus] - [#134961])
+- Fix ZHA "referencing a non existing `via_device`" warning ([@puddly] - [#135008])
+- Catch errors in automation (instead of raise unexpected error) in Overkiz ([@iMicknl] - [#135026])
+- Fix channel retrieval for Reolink DUO V1 connected to a NVR ([@starkillerOG] - [#135035])
+- Bump aioautomower to 2025.1.0 ([@Thomas55555] - [#135039])
+- Bump cookidoo-api to 0.12.2 ([@miaucl] - [#135045])
+- Implement upload retry logic in CloudBackupAgent ([@ludeeus] - [#135062])
+- Add jitter to backup start time to avoid thundering herd ([@emontnemery] - [#135065])
+- Bump pysuezV2 to 2.0.3 ([@jb101010-2] - [#135080])
+- Fix Flick Electric Pricing ([@ZephireNZ] - [#135154])
+- Update frontend to 20250109.0 ([@bramkragten] - [#135235])
+
+[#134782]: https://github.com/home-assistant/core/pull/134782
+[#134961]: https://github.com/home-assistant/core/pull/134961
+[#135008]: https://github.com/home-assistant/core/pull/135008
+[#135026]: https://github.com/home-assistant/core/pull/135026
+[#135035]: https://github.com/home-assistant/core/pull/135035
+[#135039]: https://github.com/home-assistant/core/pull/135039
+[#135045]: https://github.com/home-assistant/core/pull/135045
+[#135062]: https://github.com/home-assistant/core/pull/135062
+[#135065]: https://github.com/home-assistant/core/pull/135065
+[#135080]: https://github.com/home-assistant/core/pull/135080
+[#135154]: https://github.com/home-assistant/core/pull/135154
+[#135235]: https://github.com/home-assistant/core/pull/135235
+[@Quentame]: https://github.com/Quentame
+[@Thomas55555]: https://github.com/Thomas55555
+[@ZephireNZ]: https://github.com/ZephireNZ
+[@bramkragten]: https://github.com/bramkragten
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@iMicknl]: https://github.com/iMicknl
+[@jb101010-2]: https://github.com/jb101010-2
+[@ludeeus]: https://github.com/ludeeus
+[@miaucl]: https://github.com/miaucl
+[@puddly]: https://github.com/puddly
+[@starkillerOG]: https://github.com/starkillerOG
+
+## Release 2025.1.3 - January 20
+
+- Fix DiscoveryFlowHandler when discovery_function returns bool ([@kgraefe] - [#133563])
+- Aprilaire - Fix humidifier showing when it is not available ([@chamberlain2007] - [#133984])
+- Gracefully handle webhook unsubscription if error occurs while contacting Withings ([@dcmeglio] - [#134271])
+- Image entity key error when camera is ignored in EZVIZ ([@RenierM26] - [#134343])
+- Bump pyaussiebb to 0.1.5 ([@Bre77] - [#134943])
+- Fix Watergate Power supply mode description and MQTT/Wifi uptimes ([@adam-the-hero] - [#135085])
+- Fix missing comma in ollama MODEL_NAMES ([@epenet] - [#135262])
+- Bump Freebox to 1.2.2 ([@Quentame] - [#135313])
+- Actually use translated entity names in Lametric ([@joostlek] - [#135381])
+- Fix descriptions of send_message action of Bring! integration ([@NoRi2909] - [#135446])
+- Bump switchbot-api to 2.3.1 ([@SeraphicRav] - [#135451])
+- Fix incorrect cast in HitachiAirToWaterHeatingZone in Overkiz ([@iMicknl] - [#135468])
+- Replace pyhiveapi with pyhive-integration ([@KJonline] - [#135482])
+- Fix referenced objects in script sequences ([@arturpragacz] - [#135499])
+- Use STT/TTS languages for LLM fallback ([@synesthesiam] - [#135533])
+- Bump demetriek to 1.2.0 ([@joostlek] - [#135580])
+- Use device supplied ranges in LaMetric ([@joostlek] - [#135590])
+- Bump elkm1-lib to 2.2.11 ([@gwww] - [#135616])
+- Fix mqtt number state validation ([@jbouwh] - [#135621])
+- Add reauthentication to SmartThings ([@joostlek] - [#135673])
+- Handle invalid HS color values in HomeKit Bridge ([@bdraco] - [#135739])
+- Update aioairzone to v0.9.9 ([@Noltari] - [#135866])
+- Remove device_class from NFC and fingerprint event descriptions ([@RaHehl] - [#135867])
+- Prevent HomeKit from going unavailable when min/max is reversed ([@bdraco] - [#135892])
+- Bump onvif-zeep-async to 3.2.2 ([@bdraco] - [#135898])
+- Round brightness in Niko Home Control ([@VandeurenGlenn] - [#135920])
+- Update NHC lib to v0.3.4 ([@VandeurenGlenn] - [#135923])
+- Update knx-frontend to 2025.1.18.164225 ([@farmio] - [#135941])
+- Bump aiooui to 0.1.8 ([@bdraco] - [#135945])
+- Bump aiooui to 0.1.9 ([@bdraco] - [#135956])
+- Fix switchbot cloud library logger ([@joostlek] - [#135987])
+- Correct type for off delay in rfxtrx ([@elupus] - [#135994])
+- Handle invalid datetime in onvif ([@bdraco] - [#136014])
+- Bump aioraven to 0.7.1 ([@cottsay] - [#136017])
+- Bump onvif-zeep-async to 3.2.3 ([@bdraco] - [#136022])
+- Bump yt-dlp to 2025.01.15 ([@joostlek] - [#136072])
+- Bump deebot-client to 11.0.0 ([@edenhaus] - [#136073])
+- Always include SSL folder in backups ([@emontnemery] - [#136080])
+
+[#133563]: https://github.com/home-assistant/core/pull/133563
+[#133984]: https://github.com/home-assistant/core/pull/133984
+[#134271]: https://github.com/home-assistant/core/pull/134271
+[#134343]: https://github.com/home-assistant/core/pull/134343
+[#134943]: https://github.com/home-assistant/core/pull/134943
+[#135085]: https://github.com/home-assistant/core/pull/135085
+[#135262]: https://github.com/home-assistant/core/pull/135262
+[#135313]: https://github.com/home-assistant/core/pull/135313
+[#135381]: https://github.com/home-assistant/core/pull/135381
+[#135446]: https://github.com/home-assistant/core/pull/135446
+[#135451]: https://github.com/home-assistant/core/pull/135451
+[#135468]: https://github.com/home-assistant/core/pull/135468
+[#135482]: https://github.com/home-assistant/core/pull/135482
+[#135499]: https://github.com/home-assistant/core/pull/135499
+[#135533]: https://github.com/home-assistant/core/pull/135533
+[#135580]: https://github.com/home-assistant/core/pull/135580
+[#135590]: https://github.com/home-assistant/core/pull/135590
+[#135616]: https://github.com/home-assistant/core/pull/135616
+[#135621]: https://github.com/home-assistant/core/pull/135621
+[#135673]: https://github.com/home-assistant/core/pull/135673
+[#135739]: https://github.com/home-assistant/core/pull/135739
+[#135866]: https://github.com/home-assistant/core/pull/135866
+[#135867]: https://github.com/home-assistant/core/pull/135867
+[#135892]: https://github.com/home-assistant/core/pull/135892
+[#135898]: https://github.com/home-assistant/core/pull/135898
+[#135920]: https://github.com/home-assistant/core/pull/135920
+[#135923]: https://github.com/home-assistant/core/pull/135923
+[#135941]: https://github.com/home-assistant/core/pull/135941
+[#135945]: https://github.com/home-assistant/core/pull/135945
+[#135956]: https://github.com/home-assistant/core/pull/135956
+[#135987]: https://github.com/home-assistant/core/pull/135987
+[#135994]: https://github.com/home-assistant/core/pull/135994
+[#136014]: https://github.com/home-assistant/core/pull/136014
+[#136017]: https://github.com/home-assistant/core/pull/136017
+[#136022]: https://github.com/home-assistant/core/pull/136022
+[#136072]: https://github.com/home-assistant/core/pull/136072
+[#136073]: https://github.com/home-assistant/core/pull/136073
+[#136080]: https://github.com/home-assistant/core/pull/136080
+[@Bre77]: https://github.com/Bre77
+[@KJonline]: https://github.com/KJonline
+[@NoRi2909]: https://github.com/NoRi2909
+[@Noltari]: https://github.com/Noltari
+[@Quentame]: https://github.com/Quentame
+[@RaHehl]: https://github.com/RaHehl
+[@RenierM26]: https://github.com/RenierM26
+[@SeraphicRav]: https://github.com/SeraphicRav
+[@VandeurenGlenn]: https://github.com/VandeurenGlenn
+[@adam-the-hero]: https://github.com/adam-the-hero
+[@arturpragacz]: https://github.com/arturpragacz
+[@bdraco]: https://github.com/bdraco
+[@bramkragten]: https://github.com/bramkragten
+[@chamberlain2007]: https://github.com/chamberlain2007
+[@cottsay]: https://github.com/cottsay
+[@dcmeglio]: https://github.com/dcmeglio
+[@edenhaus]: https://github.com/edenhaus
+[@elupus]: https://github.com/elupus
+[@emontnemery]: https://github.com/emontnemery
+[@epenet]: https://github.com/epenet
+[@farmio]: https://github.com/farmio
+[@frenck]: https://github.com/frenck
+[@gwww]: https://github.com/gwww
+[@iMicknl]: https://github.com/iMicknl
+[@jbouwh]: https://github.com/jbouwh
+[@joostlek]: https://github.com/joostlek
+[@kgraefe]: https://github.com/kgraefe
+[@synesthesiam]: https://github.com/synesthesiam
+
+[#115483]: https://github.com/home-assistant/core/pull/115483
+[#117355]: https://github.com/home-assistant/core/pull/117355
+[#121371]: https://github.com/home-assistant/core/pull/121371
+[#122563]: https://github.com/home-assistant/core/pull/122563
+[#124499]: https://github.com/home-assistant/core/pull/124499
+[#126353]: https://github.com/home-assistant/core/pull/126353
+[#126757]: https://github.com/home-assistant/core/pull/126757
+[#128929]: https://github.com/home-assistant/core/pull/128929
+[#128965]: https://github.com/home-assistant/core/pull/128965
+[#129067]: https://github.com/home-assistant/core/pull/129067
+[#129106]: https://github.com/home-assistant/core/pull/129106
+[#129180]: https://github.com/home-assistant/core/pull/129180
+[#129266]: https://github.com/home-assistant/core/pull/129266
+[#129514]: https://github.com/home-assistant/core/pull/129514
+[#129590]: https://github.com/home-assistant/core/pull/129590
+[#129632]: https://github.com/home-assistant/core/pull/129632
+[#129664]: https://github.com/home-assistant/core/pull/129664
+[#129686]: https://github.com/home-assistant/core/pull/129686
+[#129800]: https://github.com/home-assistant/core/pull/129800
+[#130185]: https://github.com/home-assistant/core/pull/130185
+[#130391]: https://github.com/home-assistant/core/pull/130391
+[#130392]: https://github.com/home-assistant/core/pull/130392
+[#130398]: https://github.com/home-assistant/core/pull/130398
+[#130494]: https://github.com/home-assistant/core/pull/130494
+[#130547]: https://github.com/home-assistant/core/pull/130547
+[#130554]: https://github.com/home-assistant/core/pull/130554
+[#130606]: https://github.com/home-assistant/core/pull/130606
+[#130644]: https://github.com/home-assistant/core/pull/130644
+[#130708]: https://github.com/home-assistant/core/pull/130708
+[#130769]: https://github.com/home-assistant/core/pull/130769
+[#130776]: https://github.com/home-assistant/core/pull/130776
+[#130863]: https://github.com/home-assistant/core/pull/130863
+[#130979]: https://github.com/home-assistant/core/pull/130979
+[#131016]: https://github.com/home-assistant/core/pull/131016
+[#131020]: https://github.com/home-assistant/core/pull/131020
+[#131066]: https://github.com/home-assistant/core/pull/131066
+[#131080]: https://github.com/home-assistant/core/pull/131080
+[#131091]: https://github.com/home-assistant/core/pull/131091
+[#131123]: https://github.com/home-assistant/core/pull/131123
+[#131168]: https://github.com/home-assistant/core/pull/131168
+[#131184]: https://github.com/home-assistant/core/pull/131184
+[#131219]: https://github.com/home-assistant/core/pull/131219
+[#131226]: https://github.com/home-assistant/core/pull/131226
+[#131298]: https://github.com/home-assistant/core/pull/131298
+[#131322]: https://github.com/home-assistant/core/pull/131322
+[#131326]: https://github.com/home-assistant/core/pull/131326
+[#131329]: https://github.com/home-assistant/core/pull/131329
+[#131330]: https://github.com/home-assistant/core/pull/131330
+[#131348]: https://github.com/home-assistant/core/pull/131348
+[#131349]: https://github.com/home-assistant/core/pull/131349
+[#131357]: https://github.com/home-assistant/core/pull/131357
+[#131360]: https://github.com/home-assistant/core/pull/131360
+[#131375]: https://github.com/home-assistant/core/pull/131375
+[#131377]: https://github.com/home-assistant/core/pull/131377
+[#131386]: https://github.com/home-assistant/core/pull/131386
+[#131429]: https://github.com/home-assistant/core/pull/131429
+[#131468]: https://github.com/home-assistant/core/pull/131468
+[#131497]: https://github.com/home-assistant/core/pull/131497
+[#131498]: https://github.com/home-assistant/core/pull/131498
+[#131508]: https://github.com/home-assistant/core/pull/131508
+[#131560]: https://github.com/home-assistant/core/pull/131560
+[#131580]: https://github.com/home-assistant/core/pull/131580
+[#131582]: https://github.com/home-assistant/core/pull/131582
+[#131584]: https://github.com/home-assistant/core/pull/131584
+[#131598]: https://github.com/home-assistant/core/pull/131598
+[#131609]: https://github.com/home-assistant/core/pull/131609
+[#131626]: https://github.com/home-assistant/core/pull/131626
+[#131629]: https://github.com/home-assistant/core/pull/131629
+[#131637]: https://github.com/home-assistant/core/pull/131637
+[#131640]: https://github.com/home-assistant/core/pull/131640
+[#131641]: https://github.com/home-assistant/core/pull/131641
+[#131644]: https://github.com/home-assistant/core/pull/131644
+[#131656]: https://github.com/home-assistant/core/pull/131656
+[#131660]: https://github.com/home-assistant/core/pull/131660
+[#131674]: https://github.com/home-assistant/core/pull/131674
+[#131682]: https://github.com/home-assistant/core/pull/131682
+[#131686]: https://github.com/home-assistant/core/pull/131686
+[#131693]: https://github.com/home-assistant/core/pull/131693
+[#131695]: https://github.com/home-assistant/core/pull/131695
+[#131696]: https://github.com/home-assistant/core/pull/131696
+[#131698]: https://github.com/home-assistant/core/pull/131698
+[#131700]: https://github.com/home-assistant/core/pull/131700
+[#131705]: https://github.com/home-assistant/core/pull/131705
+[#131706]: https://github.com/home-assistant/core/pull/131706
+[#131712]: https://github.com/home-assistant/core/pull/131712
+[#131716]: https://github.com/home-assistant/core/pull/131716
+[#131721]: https://github.com/home-assistant/core/pull/131721
+[#131723]: https://github.com/home-assistant/core/pull/131723
+[#131730]: https://github.com/home-assistant/core/pull/131730
+[#131731]: https://github.com/home-assistant/core/pull/131731
+[#131732]: https://github.com/home-assistant/core/pull/131732
+[#131733]: https://github.com/home-assistant/core/pull/131733
+[#131734]: https://github.com/home-assistant/core/pull/131734
+[#131738]: https://github.com/home-assistant/core/pull/131738
+[#131746]: https://github.com/home-assistant/core/pull/131746
+[#131751]: https://github.com/home-assistant/core/pull/131751
+[#131761]: https://github.com/home-assistant/core/pull/131761
+[#131763]: https://github.com/home-assistant/core/pull/131763
+[#131768]: https://github.com/home-assistant/core/pull/131768
+[#131770]: https://github.com/home-assistant/core/pull/131770
+[#131778]: https://github.com/home-assistant/core/pull/131778
+[#131780]: https://github.com/home-assistant/core/pull/131780
+[#131787]: https://github.com/home-assistant/core/pull/131787
+[#131790]: https://github.com/home-assistant/core/pull/131790
+[#131791]: https://github.com/home-assistant/core/pull/131791
+[#131792]: https://github.com/home-assistant/core/pull/131792
+[#131793]: https://github.com/home-assistant/core/pull/131793
+[#131796]: https://github.com/home-assistant/core/pull/131796
+[#131797]: https://github.com/home-assistant/core/pull/131797
+[#131798]: https://github.com/home-assistant/core/pull/131798
+[#131799]: https://github.com/home-assistant/core/pull/131799
+[#131800]: https://github.com/home-assistant/core/pull/131800
+[#131802]: https://github.com/home-assistant/core/pull/131802
+[#131803]: https://github.com/home-assistant/core/pull/131803
+[#131805]: https://github.com/home-assistant/core/pull/131805
+[#131806]: https://github.com/home-assistant/core/pull/131806
+[#131807]: https://github.com/home-assistant/core/pull/131807
+[#131808]: https://github.com/home-assistant/core/pull/131808
+[#131809]: https://github.com/home-assistant/core/pull/131809
+[#131810]: https://github.com/home-assistant/core/pull/131810
+[#131812]: https://github.com/home-assistant/core/pull/131812
+[#131813]: https://github.com/home-assistant/core/pull/131813
+[#131815]: https://github.com/home-assistant/core/pull/131815
+[#131816]: https://github.com/home-assistant/core/pull/131816
+[#131819]: https://github.com/home-assistant/core/pull/131819
+[#131820]: https://github.com/home-assistant/core/pull/131820
+[#131826]: https://github.com/home-assistant/core/pull/131826
+[#131833]: https://github.com/home-assistant/core/pull/131833
+[#131834]: https://github.com/home-assistant/core/pull/131834
+[#131843]: https://github.com/home-assistant/core/pull/131843
+[#131844]: https://github.com/home-assistant/core/pull/131844
+[#131845]: https://github.com/home-assistant/core/pull/131845
+[#131846]: https://github.com/home-assistant/core/pull/131846
+[#131857]: https://github.com/home-assistant/core/pull/131857
+[#131858]: https://github.com/home-assistant/core/pull/131858
+[#131859]: https://github.com/home-assistant/core/pull/131859
+[#131861]: https://github.com/home-assistant/core/pull/131861
+[#131865]: https://github.com/home-assistant/core/pull/131865
+[#131871]: https://github.com/home-assistant/core/pull/131871
+[#131875]: https://github.com/home-assistant/core/pull/131875
+[#131877]: https://github.com/home-assistant/core/pull/131877
+[#131878]: https://github.com/home-assistant/core/pull/131878
+[#131879]: https://github.com/home-assistant/core/pull/131879
+[#131888]: https://github.com/home-assistant/core/pull/131888
+[#131890]: https://github.com/home-assistant/core/pull/131890
+[#131891]: https://github.com/home-assistant/core/pull/131891
+[#131892]: https://github.com/home-assistant/core/pull/131892
+[#131893]: https://github.com/home-assistant/core/pull/131893
+[#131894]: https://github.com/home-assistant/core/pull/131894
+[#131895]: https://github.com/home-assistant/core/pull/131895
+[#131904]: https://github.com/home-assistant/core/pull/131904
+[#131909]: https://github.com/home-assistant/core/pull/131909
+[#131921]: https://github.com/home-assistant/core/pull/131921
+[#131923]: https://github.com/home-assistant/core/pull/131923
+[#131927]: https://github.com/home-assistant/core/pull/131927
+[#131928]: https://github.com/home-assistant/core/pull/131928
+[#131933]: https://github.com/home-assistant/core/pull/131933
+[#131935]: https://github.com/home-assistant/core/pull/131935
+[#131937]: https://github.com/home-assistant/core/pull/131937
+[#131938]: https://github.com/home-assistant/core/pull/131938
+[#131943]: https://github.com/home-assistant/core/pull/131943
+[#131946]: https://github.com/home-assistant/core/pull/131946
+[#131952]: https://github.com/home-assistant/core/pull/131952
+[#131956]: https://github.com/home-assistant/core/pull/131956
+[#131963]: https://github.com/home-assistant/core/pull/131963
+[#131982]: https://github.com/home-assistant/core/pull/131982
+[#131984]: https://github.com/home-assistant/core/pull/131984
+[#131989]: https://github.com/home-assistant/core/pull/131989
+[#131993]: https://github.com/home-assistant/core/pull/131993
+[#131996]: https://github.com/home-assistant/core/pull/131996
+[#132001]: https://github.com/home-assistant/core/pull/132001
+[#132006]: https://github.com/home-assistant/core/pull/132006
+[#132011]: https://github.com/home-assistant/core/pull/132011
+[#132012]: https://github.com/home-assistant/core/pull/132012
+[#132014]: https://github.com/home-assistant/core/pull/132014
+[#132019]: https://github.com/home-assistant/core/pull/132019
+[#132023]: https://github.com/home-assistant/core/pull/132023
+[#132027]: https://github.com/home-assistant/core/pull/132027
+[#132028]: https://github.com/home-assistant/core/pull/132028
+[#132029]: https://github.com/home-assistant/core/pull/132029
+[#132030]: https://github.com/home-assistant/core/pull/132030
+[#132031]: https://github.com/home-assistant/core/pull/132031
+[#132035]: https://github.com/home-assistant/core/pull/132035
+[#132040]: https://github.com/home-assistant/core/pull/132040
+[#132041]: https://github.com/home-assistant/core/pull/132041
+[#132047]: https://github.com/home-assistant/core/pull/132047
+[#132058]: https://github.com/home-assistant/core/pull/132058
+[#132059]: https://github.com/home-assistant/core/pull/132059
+[#132063]: https://github.com/home-assistant/core/pull/132063
+[#132073]: https://github.com/home-assistant/core/pull/132073
+[#132075]: https://github.com/home-assistant/core/pull/132075
+[#132076]: https://github.com/home-assistant/core/pull/132076
+[#132077]: https://github.com/home-assistant/core/pull/132077
+[#132078]: https://github.com/home-assistant/core/pull/132078
+[#132079]: https://github.com/home-assistant/core/pull/132079
+[#132082]: https://github.com/home-assistant/core/pull/132082
+[#132083]: https://github.com/home-assistant/core/pull/132083
+[#132087]: https://github.com/home-assistant/core/pull/132087
+[#132088]: https://github.com/home-assistant/core/pull/132088
+[#132093]: https://github.com/home-assistant/core/pull/132093
+[#132097]: https://github.com/home-assistant/core/pull/132097
+[#132098]: https://github.com/home-assistant/core/pull/132098
+[#132099]: https://github.com/home-assistant/core/pull/132099
+[#132102]: https://github.com/home-assistant/core/pull/132102
+[#132104]: https://github.com/home-assistant/core/pull/132104
+[#132106]: https://github.com/home-assistant/core/pull/132106
+[#132107]: https://github.com/home-assistant/core/pull/132107
+[#132110]: https://github.com/home-assistant/core/pull/132110
+[#132111]: https://github.com/home-assistant/core/pull/132111
+[#132113]: https://github.com/home-assistant/core/pull/132113
+[#132114]: https://github.com/home-assistant/core/pull/132114
+[#132115]: https://github.com/home-assistant/core/pull/132115
+[#132118]: https://github.com/home-assistant/core/pull/132118
+[#132123]: https://github.com/home-assistant/core/pull/132123
+[#132134]: https://github.com/home-assistant/core/pull/132134
+[#132135]: https://github.com/home-assistant/core/pull/132135
+[#132138]: https://github.com/home-assistant/core/pull/132138
+[#132140]: https://github.com/home-assistant/core/pull/132140
+[#132143]: https://github.com/home-assistant/core/pull/132143
+[#132149]: https://github.com/home-assistant/core/pull/132149
+[#132151]: https://github.com/home-assistant/core/pull/132151
+[#132152]: https://github.com/home-assistant/core/pull/132152
+[#132158]: https://github.com/home-assistant/core/pull/132158
+[#132162]: https://github.com/home-assistant/core/pull/132162
+[#132172]: https://github.com/home-assistant/core/pull/132172
+[#132173]: https://github.com/home-assistant/core/pull/132173
+[#132175]: https://github.com/home-assistant/core/pull/132175
+[#132179]: https://github.com/home-assistant/core/pull/132179
+[#132180]: https://github.com/home-assistant/core/pull/132180
+[#132185]: https://github.com/home-assistant/core/pull/132185
+[#132188]: https://github.com/home-assistant/core/pull/132188
+[#132199]: https://github.com/home-assistant/core/pull/132199
+[#132200]: https://github.com/home-assistant/core/pull/132200
+[#132202]: https://github.com/home-assistant/core/pull/132202
+[#132204]: https://github.com/home-assistant/core/pull/132204
+[#132205]: https://github.com/home-assistant/core/pull/132205
+[#132206]: https://github.com/home-assistant/core/pull/132206
+[#132208]: https://github.com/home-assistant/core/pull/132208
+[#132213]: https://github.com/home-assistant/core/pull/132213
+[#132217]: https://github.com/home-assistant/core/pull/132217
+[#132218]: https://github.com/home-assistant/core/pull/132218
+[#132219]: https://github.com/home-assistant/core/pull/132219
+[#132221]: https://github.com/home-assistant/core/pull/132221
+[#132225]: https://github.com/home-assistant/core/pull/132225
+[#132226]: https://github.com/home-assistant/core/pull/132226
+[#132227]: https://github.com/home-assistant/core/pull/132227
+[#132229]: https://github.com/home-assistant/core/pull/132229
+[#132234]: https://github.com/home-assistant/core/pull/132234
+[#132237]: https://github.com/home-assistant/core/pull/132237
+[#132239]: https://github.com/home-assistant/core/pull/132239
+[#132244]: https://github.com/home-assistant/core/pull/132244
+[#132246]: https://github.com/home-assistant/core/pull/132246
+[#132248]: https://github.com/home-assistant/core/pull/132248
+[#132249]: https://github.com/home-assistant/core/pull/132249
+[#132251]: https://github.com/home-assistant/core/pull/132251
+[#132255]: https://github.com/home-assistant/core/pull/132255
+[#132259]: https://github.com/home-assistant/core/pull/132259
+[#132260]: https://github.com/home-assistant/core/pull/132260
+[#132261]: https://github.com/home-assistant/core/pull/132261
+[#132262]: https://github.com/home-assistant/core/pull/132262
+[#132263]: https://github.com/home-assistant/core/pull/132263
+[#132264]: https://github.com/home-assistant/core/pull/132264
+[#132265]: https://github.com/home-assistant/core/pull/132265
+[#132275]: https://github.com/home-assistant/core/pull/132275
+[#132276]: https://github.com/home-assistant/core/pull/132276
+[#132278]: https://github.com/home-assistant/core/pull/132278
+[#132285]: https://github.com/home-assistant/core/pull/132285
+[#132287]: https://github.com/home-assistant/core/pull/132287
+[#132289]: https://github.com/home-assistant/core/pull/132289
+[#132290]: https://github.com/home-assistant/core/pull/132290
+[#132293]: https://github.com/home-assistant/core/pull/132293
+[#132294]: https://github.com/home-assistant/core/pull/132294
+[#132297]: https://github.com/home-assistant/core/pull/132297
+[#132301]: https://github.com/home-assistant/core/pull/132301
+[#132306]: https://github.com/home-assistant/core/pull/132306
+[#132311]: https://github.com/home-assistant/core/pull/132311
+[#132313]: https://github.com/home-assistant/core/pull/132313
+[#132319]: https://github.com/home-assistant/core/pull/132319
+[#132327]: https://github.com/home-assistant/core/pull/132327
+[#132328]: https://github.com/home-assistant/core/pull/132328
+[#132331]: https://github.com/home-assistant/core/pull/132331
+[#132332]: https://github.com/home-assistant/core/pull/132332
+[#132334]: https://github.com/home-assistant/core/pull/132334
+[#132344]: https://github.com/home-assistant/core/pull/132344
+[#132346]: https://github.com/home-assistant/core/pull/132346
+[#132349]: https://github.com/home-assistant/core/pull/132349
+[#132350]: https://github.com/home-assistant/core/pull/132350
+[#132351]: https://github.com/home-assistant/core/pull/132351
+[#132353]: https://github.com/home-assistant/core/pull/132353
+[#132354]: https://github.com/home-assistant/core/pull/132354
+[#132355]: https://github.com/home-assistant/core/pull/132355
+[#132365]: https://github.com/home-assistant/core/pull/132365
+[#132367]: https://github.com/home-assistant/core/pull/132367
+[#132368]: https://github.com/home-assistant/core/pull/132368
+[#132369]: https://github.com/home-assistant/core/pull/132369
+[#132371]: https://github.com/home-assistant/core/pull/132371
+[#132373]: https://github.com/home-assistant/core/pull/132373
+[#132377]: https://github.com/home-assistant/core/pull/132377
+[#132387]: https://github.com/home-assistant/core/pull/132387
+[#132400]: https://github.com/home-assistant/core/pull/132400
+[#132404]: https://github.com/home-assistant/core/pull/132404
+[#132415]: https://github.com/home-assistant/core/pull/132415
+[#132417]: https://github.com/home-assistant/core/pull/132417
+[#132418]: https://github.com/home-assistant/core/pull/132418
+[#132419]: https://github.com/home-assistant/core/pull/132419
+[#132422]: https://github.com/home-assistant/core/pull/132422
+[#132423]: https://github.com/home-assistant/core/pull/132423
+[#132430]: https://github.com/home-assistant/core/pull/132430
+[#132431]: https://github.com/home-assistant/core/pull/132431
+[#132440]: https://github.com/home-assistant/core/pull/132440
+[#132443]: https://github.com/home-assistant/core/pull/132443
+[#132455]: https://github.com/home-assistant/core/pull/132455
+[#132458]: https://github.com/home-assistant/core/pull/132458
+[#132461]: https://github.com/home-assistant/core/pull/132461
+[#132463]: https://github.com/home-assistant/core/pull/132463
+[#132466]: https://github.com/home-assistant/core/pull/132466
+[#132468]: https://github.com/home-assistant/core/pull/132468
+[#132473]: https://github.com/home-assistant/core/pull/132473
+[#132483]: https://github.com/home-assistant/core/pull/132483
+[#132486]: https://github.com/home-assistant/core/pull/132486
+[#132489]: https://github.com/home-assistant/core/pull/132489
+[#132496]: https://github.com/home-assistant/core/pull/132496
+[#132497]: https://github.com/home-assistant/core/pull/132497
+[#132499]: https://github.com/home-assistant/core/pull/132499
+[#132504]: https://github.com/home-assistant/core/pull/132504
+[#132517]: https://github.com/home-assistant/core/pull/132517
+[#132534]: https://github.com/home-assistant/core/pull/132534
+[#132537]: https://github.com/home-assistant/core/pull/132537
+[#132538]: https://github.com/home-assistant/core/pull/132538
+[#132565]: https://github.com/home-assistant/core/pull/132565
+[#132569]: https://github.com/home-assistant/core/pull/132569
+[#132571]: https://github.com/home-assistant/core/pull/132571
+[#132574]: https://github.com/home-assistant/core/pull/132574
+[#132576]: https://github.com/home-assistant/core/pull/132576
+[#132596]: https://github.com/home-assistant/core/pull/132596
+[#132598]: https://github.com/home-assistant/core/pull/132598
+[#132604]: https://github.com/home-assistant/core/pull/132604
+[#132613]: https://github.com/home-assistant/core/pull/132613
+[#132625]: https://github.com/home-assistant/core/pull/132625
+[#132629]: https://github.com/home-assistant/core/pull/132629
+[#132631]: https://github.com/home-assistant/core/pull/132631
+[#132632]: https://github.com/home-assistant/core/pull/132632
+[#132640]: https://github.com/home-assistant/core/pull/132640
+[#132641]: https://github.com/home-assistant/core/pull/132641
+[#132642]: https://github.com/home-assistant/core/pull/132642
+[#132643]: https://github.com/home-assistant/core/pull/132643
+[#132646]: https://github.com/home-assistant/core/pull/132646
+[#132648]: https://github.com/home-assistant/core/pull/132648
+[#132649]: https://github.com/home-assistant/core/pull/132649
+[#132650]: https://github.com/home-assistant/core/pull/132650
+[#132653]: https://github.com/home-assistant/core/pull/132653
+[#132657]: https://github.com/home-assistant/core/pull/132657
+[#132661]: https://github.com/home-assistant/core/pull/132661
+[#132663]: https://github.com/home-assistant/core/pull/132663
+[#132665]: https://github.com/home-assistant/core/pull/132665
+[#132666]: https://github.com/home-assistant/core/pull/132666
+[#132667]: https://github.com/home-assistant/core/pull/132667
+[#132668]: https://github.com/home-assistant/core/pull/132668
+[#132670]: https://github.com/home-assistant/core/pull/132670
+[#132672]: https://github.com/home-assistant/core/pull/132672
+[#132677]: https://github.com/home-assistant/core/pull/132677
+[#132680]: https://github.com/home-assistant/core/pull/132680
+[#132685]: https://github.com/home-assistant/core/pull/132685
+[#132686]: https://github.com/home-assistant/core/pull/132686
+[#132687]: https://github.com/home-assistant/core/pull/132687
+[#132688]: https://github.com/home-assistant/core/pull/132688
+[#132689]: https://github.com/home-assistant/core/pull/132689
+[#132690]: https://github.com/home-assistant/core/pull/132690
+[#132691]: https://github.com/home-assistant/core/pull/132691
+[#132692]: https://github.com/home-assistant/core/pull/132692
+[#132693]: https://github.com/home-assistant/core/pull/132693
+[#132695]: https://github.com/home-assistant/core/pull/132695
+[#132697]: https://github.com/home-assistant/core/pull/132697
+[#132698]: https://github.com/home-assistant/core/pull/132698
+[#132699]: https://github.com/home-assistant/core/pull/132699
+[#132703]: https://github.com/home-assistant/core/pull/132703
+[#132710]: https://github.com/home-assistant/core/pull/132710
+[#132714]: https://github.com/home-assistant/core/pull/132714
+[#132717]: https://github.com/home-assistant/core/pull/132717
+[#132718]: https://github.com/home-assistant/core/pull/132718
+[#132719]: https://github.com/home-assistant/core/pull/132719
+[#132723]: https://github.com/home-assistant/core/pull/132723
+[#132725]: https://github.com/home-assistant/core/pull/132725
+[#132730]: https://github.com/home-assistant/core/pull/132730
+[#132731]: https://github.com/home-assistant/core/pull/132731
+[#132733]: https://github.com/home-assistant/core/pull/132733
+[#132735]: https://github.com/home-assistant/core/pull/132735
+[#132738]: https://github.com/home-assistant/core/pull/132738
+[#132746]: https://github.com/home-assistant/core/pull/132746
+[#132748]: https://github.com/home-assistant/core/pull/132748
+[#132750]: https://github.com/home-assistant/core/pull/132750
+[#132752]: https://github.com/home-assistant/core/pull/132752
+[#132753]: https://github.com/home-assistant/core/pull/132753
+[#132755]: https://github.com/home-assistant/core/pull/132755
+[#132760]: https://github.com/home-assistant/core/pull/132760
+[#132761]: https://github.com/home-assistant/core/pull/132761
+[#132762]: https://github.com/home-assistant/core/pull/132762
+[#132764]: https://github.com/home-assistant/core/pull/132764
+[#132765]: https://github.com/home-assistant/core/pull/132765
+[#132767]: https://github.com/home-assistant/core/pull/132767
+[#132768]: https://github.com/home-assistant/core/pull/132768
+[#132776]: https://github.com/home-assistant/core/pull/132776
+[#132781]: https://github.com/home-assistant/core/pull/132781
+[#132784]: https://github.com/home-assistant/core/pull/132784
+[#132785]: https://github.com/home-assistant/core/pull/132785
+[#132787]: https://github.com/home-assistant/core/pull/132787
+[#132788]: https://github.com/home-assistant/core/pull/132788
+[#132789]: https://github.com/home-assistant/core/pull/132789
+[#132790]: https://github.com/home-assistant/core/pull/132790
+[#132791]: https://github.com/home-assistant/core/pull/132791
+[#132792]: https://github.com/home-assistant/core/pull/132792
+[#132793]: https://github.com/home-assistant/core/pull/132793
+[#132794]: https://github.com/home-assistant/core/pull/132794
+[#132796]: https://github.com/home-assistant/core/pull/132796
+[#132797]: https://github.com/home-assistant/core/pull/132797
+[#132798]: https://github.com/home-assistant/core/pull/132798
+[#132799]: https://github.com/home-assistant/core/pull/132799
+[#132800]: https://github.com/home-assistant/core/pull/132800
+[#132802]: https://github.com/home-assistant/core/pull/132802
+[#132803]: https://github.com/home-assistant/core/pull/132803
+[#132806]: https://github.com/home-assistant/core/pull/132806
+[#132807]: https://github.com/home-assistant/core/pull/132807
+[#132808]: https://github.com/home-assistant/core/pull/132808
+[#132809]: https://github.com/home-assistant/core/pull/132809
+[#132811]: https://github.com/home-assistant/core/pull/132811
+[#132812]: https://github.com/home-assistant/core/pull/132812
+[#132814]: https://github.com/home-assistant/core/pull/132814
+[#132816]: https://github.com/home-assistant/core/pull/132816
+[#132817]: https://github.com/home-assistant/core/pull/132817
+[#132818]: https://github.com/home-assistant/core/pull/132818
+[#132819]: https://github.com/home-assistant/core/pull/132819
+[#132820]: https://github.com/home-assistant/core/pull/132820
+[#132821]: https://github.com/home-assistant/core/pull/132821
+[#132822]: https://github.com/home-assistant/core/pull/132822
+[#132823]: https://github.com/home-assistant/core/pull/132823
+[#132828]: https://github.com/home-assistant/core/pull/132828
+[#132830]: https://github.com/home-assistant/core/pull/132830
+[#132831]: https://github.com/home-assistant/core/pull/132831
+[#132833]: https://github.com/home-assistant/core/pull/132833
+[#132835]: https://github.com/home-assistant/core/pull/132835
+[#132836]: https://github.com/home-assistant/core/pull/132836
+[#132837]: https://github.com/home-assistant/core/pull/132837
+[#132839]: https://github.com/home-assistant/core/pull/132839
+[#132840]: https://github.com/home-assistant/core/pull/132840
+[#132853]: https://github.com/home-assistant/core/pull/132853
+[#132854]: https://github.com/home-assistant/core/pull/132854
+[#132855]: https://github.com/home-assistant/core/pull/132855
+[#132859]: https://github.com/home-assistant/core/pull/132859
+[#132866]: https://github.com/home-assistant/core/pull/132866
+[#132869]: https://github.com/home-assistant/core/pull/132869
+[#132872]: https://github.com/home-assistant/core/pull/132872
+[#132874]: https://github.com/home-assistant/core/pull/132874
+[#132875]: https://github.com/home-assistant/core/pull/132875
+[#132876]: https://github.com/home-assistant/core/pull/132876
+[#132877]: https://github.com/home-assistant/core/pull/132877
+[#132878]: https://github.com/home-assistant/core/pull/132878
+[#132886]: https://github.com/home-assistant/core/pull/132886
+[#132888]: https://github.com/home-assistant/core/pull/132888
+[#132891]: https://github.com/home-assistant/core/pull/132891
+[#132892]: https://github.com/home-assistant/core/pull/132892
+[#132895]: https://github.com/home-assistant/core/pull/132895
+[#132900]: https://github.com/home-assistant/core/pull/132900
+[#132906]: https://github.com/home-assistant/core/pull/132906
+[#132907]: https://github.com/home-assistant/core/pull/132907
+[#132909]: https://github.com/home-assistant/core/pull/132909
+[#132912]: https://github.com/home-assistant/core/pull/132912
+[#132913]: https://github.com/home-assistant/core/pull/132913
+[#132915]: https://github.com/home-assistant/core/pull/132915
+[#132917]: https://github.com/home-assistant/core/pull/132917
+[#132923]: https://github.com/home-assistant/core/pull/132923
+[#132927]: https://github.com/home-assistant/core/pull/132927
+[#132929]: https://github.com/home-assistant/core/pull/132929
+[#132936]: https://github.com/home-assistant/core/pull/132936
+[#132940]: https://github.com/home-assistant/core/pull/132940
+[#132941]: https://github.com/home-assistant/core/pull/132941
+[#132943]: https://github.com/home-assistant/core/pull/132943
+[#132944]: https://github.com/home-assistant/core/pull/132944
+[#132945]: https://github.com/home-assistant/core/pull/132945
+[#132954]: https://github.com/home-assistant/core/pull/132954
+[#132958]: https://github.com/home-assistant/core/pull/132958
+[#132961]: https://github.com/home-assistant/core/pull/132961
+[#132962]: https://github.com/home-assistant/core/pull/132962
+[#132964]: https://github.com/home-assistant/core/pull/132964
+[#132970]: https://github.com/home-assistant/core/pull/132970
+[#132972]: https://github.com/home-assistant/core/pull/132972
+[#132974]: https://github.com/home-assistant/core/pull/132974
+[#132975]: https://github.com/home-assistant/core/pull/132975
+[#132979]: https://github.com/home-assistant/core/pull/132979
+[#132981]: https://github.com/home-assistant/core/pull/132981
+[#132982]: https://github.com/home-assistant/core/pull/132982
+[#132986]: https://github.com/home-assistant/core/pull/132986
+[#132988]: https://github.com/home-assistant/core/pull/132988
+[#132989]: https://github.com/home-assistant/core/pull/132989
+[#132990]: https://github.com/home-assistant/core/pull/132990
+[#132991]: https://github.com/home-assistant/core/pull/132991
+[#132995]: https://github.com/home-assistant/core/pull/132995
+[#132997]: https://github.com/home-assistant/core/pull/132997
+[#132998]: https://github.com/home-assistant/core/pull/132998
+[#133000]: https://github.com/home-assistant/core/pull/133000
+[#133001]: https://github.com/home-assistant/core/pull/133001
+[#133002]: https://github.com/home-assistant/core/pull/133002
+[#133003]: https://github.com/home-assistant/core/pull/133003
+[#133004]: https://github.com/home-assistant/core/pull/133004
+[#133005]: https://github.com/home-assistant/core/pull/133005
+[#133006]: https://github.com/home-assistant/core/pull/133006
+[#133008]: https://github.com/home-assistant/core/pull/133008
+[#133009]: https://github.com/home-assistant/core/pull/133009
+[#133010]: https://github.com/home-assistant/core/pull/133010
+[#133011]: https://github.com/home-assistant/core/pull/133011
+[#133012]: https://github.com/home-assistant/core/pull/133012
+[#133014]: https://github.com/home-assistant/core/pull/133014
+[#133015]: https://github.com/home-assistant/core/pull/133015
+[#133016]: https://github.com/home-assistant/core/pull/133016
+[#133017]: https://github.com/home-assistant/core/pull/133017
+[#133019]: https://github.com/home-assistant/core/pull/133019
+[#133020]: https://github.com/home-assistant/core/pull/133020
+[#133022]: https://github.com/home-assistant/core/pull/133022
+[#133023]: https://github.com/home-assistant/core/pull/133023
+[#133024]: https://github.com/home-assistant/core/pull/133024
+[#133025]: https://github.com/home-assistant/core/pull/133025
+[#133026]: https://github.com/home-assistant/core/pull/133026
+[#133028]: https://github.com/home-assistant/core/pull/133028
+[#133030]: https://github.com/home-assistant/core/pull/133030
+[#133031]: https://github.com/home-assistant/core/pull/133031
+[#133032]: https://github.com/home-assistant/core/pull/133032
+[#133033]: https://github.com/home-assistant/core/pull/133033
+[#133034]: https://github.com/home-assistant/core/pull/133034
+[#133035]: https://github.com/home-assistant/core/pull/133035
+[#133036]: https://github.com/home-assistant/core/pull/133036
+[#133040]: https://github.com/home-assistant/core/pull/133040
+[#133041]: https://github.com/home-assistant/core/pull/133041
+[#133043]: https://github.com/home-assistant/core/pull/133043
+[#133044]: https://github.com/home-assistant/core/pull/133044
+[#133045]: https://github.com/home-assistant/core/pull/133045
+[#133046]: https://github.com/home-assistant/core/pull/133046
+[#133047]: https://github.com/home-assistant/core/pull/133047
+[#133048]: https://github.com/home-assistant/core/pull/133048
+[#133049]: https://github.com/home-assistant/core/pull/133049
+[#133050]: https://github.com/home-assistant/core/pull/133050
+[#133051]: https://github.com/home-assistant/core/pull/133051
+[#133053]: https://github.com/home-assistant/core/pull/133053
+[#133055]: https://github.com/home-assistant/core/pull/133055
+[#133056]: https://github.com/home-assistant/core/pull/133056
+[#133060]: https://github.com/home-assistant/core/pull/133060
+[#133061]: https://github.com/home-assistant/core/pull/133061
+[#133062]: https://github.com/home-assistant/core/pull/133062
+[#133064]: https://github.com/home-assistant/core/pull/133064
+[#133065]: https://github.com/home-assistant/core/pull/133065
+[#133069]: https://github.com/home-assistant/core/pull/133069
+[#133070]: https://github.com/home-assistant/core/pull/133070
+[#133073]: https://github.com/home-assistant/core/pull/133073
+[#133074]: https://github.com/home-assistant/core/pull/133074
+[#133077]: https://github.com/home-assistant/core/pull/133077
+[#133081]: https://github.com/home-assistant/core/pull/133081
+[#133082]: https://github.com/home-assistant/core/pull/133082
+[#133083]: https://github.com/home-assistant/core/pull/133083
+[#133088]: https://github.com/home-assistant/core/pull/133088
+[#133091]: https://github.com/home-assistant/core/pull/133091
+[#133093]: https://github.com/home-assistant/core/pull/133093
+[#133094]: https://github.com/home-assistant/core/pull/133094
+[#133095]: https://github.com/home-assistant/core/pull/133095
+[#133096]: https://github.com/home-assistant/core/pull/133096
+[#133104]: https://github.com/home-assistant/core/pull/133104
+[#133106]: https://github.com/home-assistant/core/pull/133106
+[#133108]: https://github.com/home-assistant/core/pull/133108
+[#133109]: https://github.com/home-assistant/core/pull/133109
+[#133110]: https://github.com/home-assistant/core/pull/133110
+[#133111]: https://github.com/home-assistant/core/pull/133111
+[#133113]: https://github.com/home-assistant/core/pull/133113
+[#133118]: https://github.com/home-assistant/core/pull/133118
+[#133122]: https://github.com/home-assistant/core/pull/133122
+[#133125]: https://github.com/home-assistant/core/pull/133125
+[#133126]: https://github.com/home-assistant/core/pull/133126
+[#133127]: https://github.com/home-assistant/core/pull/133127
+[#133130]: https://github.com/home-assistant/core/pull/133130
+[#133131]: https://github.com/home-assistant/core/pull/133131
+[#133132]: https://github.com/home-assistant/core/pull/133132
+[#133133]: https://github.com/home-assistant/core/pull/133133
+[#133134]: https://github.com/home-assistant/core/pull/133134
+[#133138]: https://github.com/home-assistant/core/pull/133138
+[#133139]: https://github.com/home-assistant/core/pull/133139
+[#133141]: https://github.com/home-assistant/core/pull/133141
+[#133142]: https://github.com/home-assistant/core/pull/133142
+[#133144]: https://github.com/home-assistant/core/pull/133144
+[#133147]: https://github.com/home-assistant/core/pull/133147
+[#133149]: https://github.com/home-assistant/core/pull/133149
+[#133153]: https://github.com/home-assistant/core/pull/133153
+[#133155]: https://github.com/home-assistant/core/pull/133155
+[#133158]: https://github.com/home-assistant/core/pull/133158
+[#133162]: https://github.com/home-assistant/core/pull/133162
+[#133163]: https://github.com/home-assistant/core/pull/133163
+[#133166]: https://github.com/home-assistant/core/pull/133166
+[#133169]: https://github.com/home-assistant/core/pull/133169
+[#133170]: https://github.com/home-assistant/core/pull/133170
+[#133174]: https://github.com/home-assistant/core/pull/133174
+[#133175]: https://github.com/home-assistant/core/pull/133175
+[#133182]: https://github.com/home-assistant/core/pull/133182
+[#133188]: https://github.com/home-assistant/core/pull/133188
+[#133197]: https://github.com/home-assistant/core/pull/133197
+[#133198]: https://github.com/home-assistant/core/pull/133198
+[#133202]: https://github.com/home-assistant/core/pull/133202
+[#133204]: https://github.com/home-assistant/core/pull/133204
+[#133206]: https://github.com/home-assistant/core/pull/133206
+[#133208]: https://github.com/home-assistant/core/pull/133208
+[#133210]: https://github.com/home-assistant/core/pull/133210
+[#133211]: https://github.com/home-assistant/core/pull/133211
+[#133213]: https://github.com/home-assistant/core/pull/133213
+[#133219]: https://github.com/home-assistant/core/pull/133219
+[#133226]: https://github.com/home-assistant/core/pull/133226
+[#133228]: https://github.com/home-assistant/core/pull/133228
+[#133230]: https://github.com/home-assistant/core/pull/133230
+[#133234]: https://github.com/home-assistant/core/pull/133234
+[#133235]: https://github.com/home-assistant/core/pull/133235
+[#133236]: https://github.com/home-assistant/core/pull/133236
+[#133245]: https://github.com/home-assistant/core/pull/133245
+[#133247]: https://github.com/home-assistant/core/pull/133247
+[#133252]: https://github.com/home-assistant/core/pull/133252
+[#133253]: https://github.com/home-assistant/core/pull/133253
+[#133264]: https://github.com/home-assistant/core/pull/133264
+[#133267]: https://github.com/home-assistant/core/pull/133267
+[#133272]: https://github.com/home-assistant/core/pull/133272
+[#133275]: https://github.com/home-assistant/core/pull/133275
+[#133276]: https://github.com/home-assistant/core/pull/133276
+[#133277]: https://github.com/home-assistant/core/pull/133277
+[#133281]: https://github.com/home-assistant/core/pull/133281
+[#133282]: https://github.com/home-assistant/core/pull/133282
+[#133293]: https://github.com/home-assistant/core/pull/133293
+[#133294]: https://github.com/home-assistant/core/pull/133294
+[#133295]: https://github.com/home-assistant/core/pull/133295
+[#133296]: https://github.com/home-assistant/core/pull/133296
+[#133298]: https://github.com/home-assistant/core/pull/133298
+[#133304]: https://github.com/home-assistant/core/pull/133304
+[#133305]: https://github.com/home-assistant/core/pull/133305
+[#133306]: https://github.com/home-assistant/core/pull/133306
+[#133315]: https://github.com/home-assistant/core/pull/133315
+[#133316]: https://github.com/home-assistant/core/pull/133316
+[#133323]: https://github.com/home-assistant/core/pull/133323
+[#133326]: https://github.com/home-assistant/core/pull/133326
+[#133330]: https://github.com/home-assistant/core/pull/133330
+[#133331]: https://github.com/home-assistant/core/pull/133331
+[#133333]: https://github.com/home-assistant/core/pull/133333
+[#133334]: https://github.com/home-assistant/core/pull/133334
+[#133335]: https://github.com/home-assistant/core/pull/133335
+[#133337]: https://github.com/home-assistant/core/pull/133337
+[#133338]: https://github.com/home-assistant/core/pull/133338
+[#133339]: https://github.com/home-assistant/core/pull/133339
+[#133340]: https://github.com/home-assistant/core/pull/133340
+[#133344]: https://github.com/home-assistant/core/pull/133344
+[#133349]: https://github.com/home-assistant/core/pull/133349
+[#133351]: https://github.com/home-assistant/core/pull/133351
+[#133352]: https://github.com/home-assistant/core/pull/133352
+[#133356]: https://github.com/home-assistant/core/pull/133356
+[#133358]: https://github.com/home-assistant/core/pull/133358
+[#133359]: https://github.com/home-assistant/core/pull/133359
+[#133361]: https://github.com/home-assistant/core/pull/133361
+[#133367]: https://github.com/home-assistant/core/pull/133367
+[#133369]: https://github.com/home-assistant/core/pull/133369
+[#133370]: https://github.com/home-assistant/core/pull/133370
+[#133371]: https://github.com/home-assistant/core/pull/133371
+[#133383]: https://github.com/home-assistant/core/pull/133383
+[#133385]: https://github.com/home-assistant/core/pull/133385
+[#133387]: https://github.com/home-assistant/core/pull/133387
+[#133389]: https://github.com/home-assistant/core/pull/133389
+[#133390]: https://github.com/home-assistant/core/pull/133390
+[#133392]: https://github.com/home-assistant/core/pull/133392
+[#133394]: https://github.com/home-assistant/core/pull/133394
+[#133404]: https://github.com/home-assistant/core/pull/133404
+[#133412]: https://github.com/home-assistant/core/pull/133412
+[#133413]: https://github.com/home-assistant/core/pull/133413
+[#133415]: https://github.com/home-assistant/core/pull/133415
+[#133417]: https://github.com/home-assistant/core/pull/133417
+[#133424]: https://github.com/home-assistant/core/pull/133424
+[#133425]: https://github.com/home-assistant/core/pull/133425
+[#133426]: https://github.com/home-assistant/core/pull/133426
+[#133428]: https://github.com/home-assistant/core/pull/133428
+[#133429]: https://github.com/home-assistant/core/pull/133429
+[#133431]: https://github.com/home-assistant/core/pull/133431
+[#133433]: https://github.com/home-assistant/core/pull/133433
+[#133434]: https://github.com/home-assistant/core/pull/133434
+[#133435]: https://github.com/home-assistant/core/pull/133435
+[#133436]: https://github.com/home-assistant/core/pull/133436
+[#133443]: https://github.com/home-assistant/core/pull/133443
+[#133445]: https://github.com/home-assistant/core/pull/133445
+[#133446]: https://github.com/home-assistant/core/pull/133446
+[#133447]: https://github.com/home-assistant/core/pull/133447
+[#133449]: https://github.com/home-assistant/core/pull/133449
+[#133453]: https://github.com/home-assistant/core/pull/133453
+[#133459]: https://github.com/home-assistant/core/pull/133459
+[#133461]: https://github.com/home-assistant/core/pull/133461
+[#133466]: https://github.com/home-assistant/core/pull/133466
+[#133467]: https://github.com/home-assistant/core/pull/133467
+[#133468]: https://github.com/home-assistant/core/pull/133468
+[#133470]: https://github.com/home-assistant/core/pull/133470
+[#133472]: https://github.com/home-assistant/core/pull/133472
+[#133473]: https://github.com/home-assistant/core/pull/133473
+[#133474]: https://github.com/home-assistant/core/pull/133474
+[#133475]: https://github.com/home-assistant/core/pull/133475
+[#133476]: https://github.com/home-assistant/core/pull/133476
+[#133482]: https://github.com/home-assistant/core/pull/133482
+[#133484]: https://github.com/home-assistant/core/pull/133484
+[#133485]: https://github.com/home-assistant/core/pull/133485
+[#133488]: https://github.com/home-assistant/core/pull/133488
+[#133489]: https://github.com/home-assistant/core/pull/133489
+[#133490]: https://github.com/home-assistant/core/pull/133490
+[#133494]: https://github.com/home-assistant/core/pull/133494
+[#133500]: https://github.com/home-assistant/core/pull/133500
+[#133501]: https://github.com/home-assistant/core/pull/133501
+[#133503]: https://github.com/home-assistant/core/pull/133503
+[#133504]: https://github.com/home-assistant/core/pull/133504
+[#133505]: https://github.com/home-assistant/core/pull/133505
+[#133508]: https://github.com/home-assistant/core/pull/133508
+[#133509]: https://github.com/home-assistant/core/pull/133509
+[#133513]: https://github.com/home-assistant/core/pull/133513
+[#133514]: https://github.com/home-assistant/core/pull/133514
+[#133515]: https://github.com/home-assistant/core/pull/133515
+[#133516]: https://github.com/home-assistant/core/pull/133516
+[#133519]: https://github.com/home-assistant/core/pull/133519
+[#133520]: https://github.com/home-assistant/core/pull/133520
+[#133521]: https://github.com/home-assistant/core/pull/133521
+[#133522]: https://github.com/home-assistant/core/pull/133522
+[#133523]: https://github.com/home-assistant/core/pull/133523
+[#133524]: https://github.com/home-assistant/core/pull/133524
+[#133528]: https://github.com/home-assistant/core/pull/133528
+[#133529]: https://github.com/home-assistant/core/pull/133529
+[#133532]: https://github.com/home-assistant/core/pull/133532
+[#133534]: https://github.com/home-assistant/core/pull/133534
+[#133536]: https://github.com/home-assistant/core/pull/133536
+[#133539]: https://github.com/home-assistant/core/pull/133539
+[#133541]: https://github.com/home-assistant/core/pull/133541
+[#133547]: https://github.com/home-assistant/core/pull/133547
+[#133548]: https://github.com/home-assistant/core/pull/133548
+[#133549]: https://github.com/home-assistant/core/pull/133549
+[#133552]: https://github.com/home-assistant/core/pull/133552
+[#133553]: https://github.com/home-assistant/core/pull/133553
+[#133554]: https://github.com/home-assistant/core/pull/133554
+[#133555]: https://github.com/home-assistant/core/pull/133555
+[#133557]: https://github.com/home-assistant/core/pull/133557
+[#133558]: https://github.com/home-assistant/core/pull/133558
+[#133559]: https://github.com/home-assistant/core/pull/133559
+[#133560]: https://github.com/home-assistant/core/pull/133560
+[#133561]: https://github.com/home-assistant/core/pull/133561
+[#133564]: https://github.com/home-assistant/core/pull/133564
+[#133569]: https://github.com/home-assistant/core/pull/133569
+[#133570]: https://github.com/home-assistant/core/pull/133570
+[#133571]: https://github.com/home-assistant/core/pull/133571
+[#133572]: https://github.com/home-assistant/core/pull/133572
+[#133579]: https://github.com/home-assistant/core/pull/133579
+[#133580]: https://github.com/home-assistant/core/pull/133580
+[#133581]: https://github.com/home-assistant/core/pull/133581
+[#133582]: https://github.com/home-assistant/core/pull/133582
+[#133584]: https://github.com/home-assistant/core/pull/133584
+[#133587]: https://github.com/home-assistant/core/pull/133587
+[#133590]: https://github.com/home-assistant/core/pull/133590
+[#133592]: https://github.com/home-assistant/core/pull/133592
+[#133593]: https://github.com/home-assistant/core/pull/133593
+[#133594]: https://github.com/home-assistant/core/pull/133594
+[#133605]: https://github.com/home-assistant/core/pull/133605
+[#133606]: https://github.com/home-assistant/core/pull/133606
+[#133607]: https://github.com/home-assistant/core/pull/133607
+[#133609]: https://github.com/home-assistant/core/pull/133609
+[#133611]: https://github.com/home-assistant/core/pull/133611
+[#133616]: https://github.com/home-assistant/core/pull/133616
+[#133619]: https://github.com/home-assistant/core/pull/133619
+[#133628]: https://github.com/home-assistant/core/pull/133628
+[#133631]: https://github.com/home-assistant/core/pull/133631
+[#133633]: https://github.com/home-assistant/core/pull/133633
+[#133634]: https://github.com/home-assistant/core/pull/133634
+[#133635]: https://github.com/home-assistant/core/pull/133635
+[#133638]: https://github.com/home-assistant/core/pull/133638
+[#133640]: https://github.com/home-assistant/core/pull/133640
+[#133643]: https://github.com/home-assistant/core/pull/133643
+[#133644]: https://github.com/home-assistant/core/pull/133644
+[#133646]: https://github.com/home-assistant/core/pull/133646
+[#133647]: https://github.com/home-assistant/core/pull/133647
+[#133648]: https://github.com/home-assistant/core/pull/133648
+[#133650]: https://github.com/home-assistant/core/pull/133650
+[#133652]: https://github.com/home-assistant/core/pull/133652
+[#133653]: https://github.com/home-assistant/core/pull/133653
+[#133654]: https://github.com/home-assistant/core/pull/133654
+[#133655]: https://github.com/home-assistant/core/pull/133655
+[#133656]: https://github.com/home-assistant/core/pull/133656
+[#133657]: https://github.com/home-assistant/core/pull/133657
+[#133659]: https://github.com/home-assistant/core/pull/133659
+[#133660]: https://github.com/home-assistant/core/pull/133660
+[#133665]: https://github.com/home-assistant/core/pull/133665
+[#133666]: https://github.com/home-assistant/core/pull/133666
+[#133668]: https://github.com/home-assistant/core/pull/133668
+[#133669]: https://github.com/home-assistant/core/pull/133669
+[#133670]: https://github.com/home-assistant/core/pull/133670
+[#133672]: https://github.com/home-assistant/core/pull/133672
+[#133676]: https://github.com/home-assistant/core/pull/133676
+[#133679]: https://github.com/home-assistant/core/pull/133679
+[#133680]: https://github.com/home-assistant/core/pull/133680
+[#133681]: https://github.com/home-assistant/core/pull/133681
+[#133682]: https://github.com/home-assistant/core/pull/133682
+[#133683]: https://github.com/home-assistant/core/pull/133683
+[#133684]: https://github.com/home-assistant/core/pull/133684
+[#133685]: https://github.com/home-assistant/core/pull/133685
+[#133690]: https://github.com/home-assistant/core/pull/133690
+[#133697]: https://github.com/home-assistant/core/pull/133697
+[#133699]: https://github.com/home-assistant/core/pull/133699
+[#133700]: https://github.com/home-assistant/core/pull/133700
+[#133701]: https://github.com/home-assistant/core/pull/133701
+[#133705]: https://github.com/home-assistant/core/pull/133705
+[#133706]: https://github.com/home-assistant/core/pull/133706
+[#133707]: https://github.com/home-assistant/core/pull/133707
+[#133708]: https://github.com/home-assistant/core/pull/133708
+[#133710]: https://github.com/home-assistant/core/pull/133710
+[#133712]: https://github.com/home-assistant/core/pull/133712
+[#133713]: https://github.com/home-assistant/core/pull/133713
+[#133714]: https://github.com/home-assistant/core/pull/133714
+[#133715]: https://github.com/home-assistant/core/pull/133715
+[#133716]: https://github.com/home-assistant/core/pull/133716
+[#133717]: https://github.com/home-assistant/core/pull/133717
+[#133718]: https://github.com/home-assistant/core/pull/133718
+[#133720]: https://github.com/home-assistant/core/pull/133720
+[#133722]: https://github.com/home-assistant/core/pull/133722
+[#133723]: https://github.com/home-assistant/core/pull/133723
+[#133724]: https://github.com/home-assistant/core/pull/133724
+[#133725]: https://github.com/home-assistant/core/pull/133725
+[#133726]: https://github.com/home-assistant/core/pull/133726
+[#133727]: https://github.com/home-assistant/core/pull/133727
+[#133728]: https://github.com/home-assistant/core/pull/133728
+[#133729]: https://github.com/home-assistant/core/pull/133729
+[#133730]: https://github.com/home-assistant/core/pull/133730
+[#133734]: https://github.com/home-assistant/core/pull/133734
+[#133735]: https://github.com/home-assistant/core/pull/133735
+[#133737]: https://github.com/home-assistant/core/pull/133737
+[#133739]: https://github.com/home-assistant/core/pull/133739
+[#133740]: https://github.com/home-assistant/core/pull/133740
+[#133744]: https://github.com/home-assistant/core/pull/133744
+[#133748]: https://github.com/home-assistant/core/pull/133748
+[#133749]: https://github.com/home-assistant/core/pull/133749
+[#133750]: https://github.com/home-assistant/core/pull/133750
+[#133751]: https://github.com/home-assistant/core/pull/133751
+[#133752]: https://github.com/home-assistant/core/pull/133752
+[#133753]: https://github.com/home-assistant/core/pull/133753
+[#133754]: https://github.com/home-assistant/core/pull/133754
+[#133755]: https://github.com/home-assistant/core/pull/133755
+[#133756]: https://github.com/home-assistant/core/pull/133756
+[#133757]: https://github.com/home-assistant/core/pull/133757
+[#133758]: https://github.com/home-assistant/core/pull/133758
+[#133760]: https://github.com/home-assistant/core/pull/133760
+[#133764]: https://github.com/home-assistant/core/pull/133764
+[#133765]: https://github.com/home-assistant/core/pull/133765
+[#133768]: https://github.com/home-assistant/core/pull/133768
+[#133769]: https://github.com/home-assistant/core/pull/133769
+[#133770]: https://github.com/home-assistant/core/pull/133770
+[#133772]: https://github.com/home-assistant/core/pull/133772
+[#133778]: https://github.com/home-assistant/core/pull/133778
+[#133780]: https://github.com/home-assistant/core/pull/133780
+[#133782]: https://github.com/home-assistant/core/pull/133782
+[#133785]: https://github.com/home-assistant/core/pull/133785
+[#133786]: https://github.com/home-assistant/core/pull/133786
+[#133790]: https://github.com/home-assistant/core/pull/133790
+[#133793]: https://github.com/home-assistant/core/pull/133793
+[#133794]: https://github.com/home-assistant/core/pull/133794
+[#133795]: https://github.com/home-assistant/core/pull/133795
+[#133796]: https://github.com/home-assistant/core/pull/133796
+[#133798]: https://github.com/home-assistant/core/pull/133798
+[#133799]: https://github.com/home-assistant/core/pull/133799
+[#133801]: https://github.com/home-assistant/core/pull/133801
+[#133802]: https://github.com/home-assistant/core/pull/133802
+[#133803]: https://github.com/home-assistant/core/pull/133803
+[#133804]: https://github.com/home-assistant/core/pull/133804
+[#133805]: https://github.com/home-assistant/core/pull/133805
+[#133806]: https://github.com/home-assistant/core/pull/133806
+[#133809]: https://github.com/home-assistant/core/pull/133809
+[#133811]: https://github.com/home-assistant/core/pull/133811
+[#133812]: https://github.com/home-assistant/core/pull/133812
+[#133814]: https://github.com/home-assistant/core/pull/133814
+[#133817]: https://github.com/home-assistant/core/pull/133817
+[#133818]: https://github.com/home-assistant/core/pull/133818
+[#133819]: https://github.com/home-assistant/core/pull/133819
+[#133820]: https://github.com/home-assistant/core/pull/133820
+[#133821]: https://github.com/home-assistant/core/pull/133821
+[#133822]: https://github.com/home-assistant/core/pull/133822
+[#133823]: https://github.com/home-assistant/core/pull/133823
+[#133826]: https://github.com/home-assistant/core/pull/133826
+[#133828]: https://github.com/home-assistant/core/pull/133828
+[#133829]: https://github.com/home-assistant/core/pull/133829
+[#133835]: https://github.com/home-assistant/core/pull/133835
+[#133839]: https://github.com/home-assistant/core/pull/133839
+[#133841]: https://github.com/home-assistant/core/pull/133841
+[#133842]: https://github.com/home-assistant/core/pull/133842
+[#133845]: https://github.com/home-assistant/core/pull/133845
+[#133848]: https://github.com/home-assistant/core/pull/133848
+[#133853]: https://github.com/home-assistant/core/pull/133853
+[#133854]: https://github.com/home-assistant/core/pull/133854
+[#133855]: https://github.com/home-assistant/core/pull/133855
+[#133856]: https://github.com/home-assistant/core/pull/133856
+[#133857]: https://github.com/home-assistant/core/pull/133857
+[#133861]: https://github.com/home-assistant/core/pull/133861
+[#133862]: https://github.com/home-assistant/core/pull/133862
+[#133863]: https://github.com/home-assistant/core/pull/133863
+[#133868]: https://github.com/home-assistant/core/pull/133868
+[#133874]: https://github.com/home-assistant/core/pull/133874
+[#133876]: https://github.com/home-assistant/core/pull/133876
+[#133877]: https://github.com/home-assistant/core/pull/133877
+[#133878]: https://github.com/home-assistant/core/pull/133878
+[#133879]: https://github.com/home-assistant/core/pull/133879
+[#133880]: https://github.com/home-assistant/core/pull/133880
+[#133883]: https://github.com/home-assistant/core/pull/133883
+[#133884]: https://github.com/home-assistant/core/pull/133884
+[#133886]: https://github.com/home-assistant/core/pull/133886
+[#133889]: https://github.com/home-assistant/core/pull/133889
+[#133900]: https://github.com/home-assistant/core/pull/133900
+[#133905]: https://github.com/home-assistant/core/pull/133905
+[#133907]: https://github.com/home-assistant/core/pull/133907
+[#133909]: https://github.com/home-assistant/core/pull/133909
+[#133913]: https://github.com/home-assistant/core/pull/133913
+[#133916]: https://github.com/home-assistant/core/pull/133916
+[#133924]: https://github.com/home-assistant/core/pull/133924
+[#133925]: https://github.com/home-assistant/core/pull/133925
+[#133926]: https://github.com/home-assistant/core/pull/133926
+[#133927]: https://github.com/home-assistant/core/pull/133927
+[#133931]: https://github.com/home-assistant/core/pull/133931
+[#133936]: https://github.com/home-assistant/core/pull/133936
+[#133938]: https://github.com/home-assistant/core/pull/133938
+[#133951]: https://github.com/home-assistant/core/pull/133951
+[#133954]: https://github.com/home-assistant/core/pull/133954
+[#133963]: https://github.com/home-assistant/core/pull/133963
+[#133964]: https://github.com/home-assistant/core/pull/133964
+[#133974]: https://github.com/home-assistant/core/pull/133974
+[#133999]: https://github.com/home-assistant/core/pull/133999
+[#134007]: https://github.com/home-assistant/core/pull/134007
+[#134008]: https://github.com/home-assistant/core/pull/134008
+[#134023]: https://github.com/home-assistant/core/pull/134023
+[#134033]: https://github.com/home-assistant/core/pull/134033
+[#134043]: https://github.com/home-assistant/core/pull/134043
+[#134058]: https://github.com/home-assistant/core/pull/134058
+[#134063]: https://github.com/home-assistant/core/pull/134063
+[#134070]: https://github.com/home-assistant/core/pull/134070
+[#134078]: https://github.com/home-assistant/core/pull/134078
+[#134092]: https://github.com/home-assistant/core/pull/134092
+[#134094]: https://github.com/home-assistant/core/pull/134094
+[#134101]: https://github.com/home-assistant/core/pull/134101
+[#134103]: https://github.com/home-assistant/core/pull/134103
+[#134131]: https://github.com/home-assistant/core/pull/134131
+[#134139]: https://github.com/home-assistant/core/pull/134139
+[#134141]: https://github.com/home-assistant/core/pull/134141
+[#134157]: https://github.com/home-assistant/core/pull/134157
+[#134166]: https://github.com/home-assistant/core/pull/134166
+[#134184]: https://github.com/home-assistant/core/pull/134184
+[#134199]: https://github.com/home-assistant/core/pull/134199
+[#134202]: https://github.com/home-assistant/core/pull/134202
+[#134214]: https://github.com/home-assistant/core/pull/134214
+[#134216]: https://github.com/home-assistant/core/pull/134216
+[#134219]: https://github.com/home-assistant/core/pull/134219
+[#134225]: https://github.com/home-assistant/core/pull/134225
+[#134228]: https://github.com/home-assistant/core/pull/134228
+[#134230]: https://github.com/home-assistant/core/pull/134230
+[#134237]: https://github.com/home-assistant/core/pull/134237
+[#134250]: https://github.com/home-assistant/core/pull/134250
+[#134251]: https://github.com/home-assistant/core/pull/134251
+[#134255]: https://github.com/home-assistant/core/pull/134255
+[#134259]: https://github.com/home-assistant/core/pull/134259
+[#134265]: https://github.com/home-assistant/core/pull/134265
+[#134272]: https://github.com/home-assistant/core/pull/134272
+[#134274]: https://github.com/home-assistant/core/pull/134274
+[#134283]: https://github.com/home-assistant/core/pull/134283
+[#134284]: https://github.com/home-assistant/core/pull/134284
+[#134286]: https://github.com/home-assistant/core/pull/134286
+[#134294]: https://github.com/home-assistant/core/pull/134294
+[#134346]: https://github.com/home-assistant/core/pull/134346
+[#134352]: https://github.com/home-assistant/core/pull/134352
+[#134359]: https://github.com/home-assistant/core/pull/134359
+[#134360]: https://github.com/home-assistant/core/pull/134360
+[#134363]: https://github.com/home-assistant/core/pull/134363
+[#134367]: https://github.com/home-assistant/core/pull/134367
+[#134373]: https://github.com/home-assistant/core/pull/134373
+[#134381]: https://github.com/home-assistant/core/pull/134381
+[#134390]: https://github.com/home-assistant/core/pull/134390
+[#134414]: https://github.com/home-assistant/core/pull/134414
+[#134424]: https://github.com/home-assistant/core/pull/134424
+[#134427]: https://github.com/home-assistant/core/pull/134427
+[#134434]: https://github.com/home-assistant/core/pull/134434
+[#134436]: https://github.com/home-assistant/core/pull/134436
+[#134440]: https://github.com/home-assistant/core/pull/134440
+[#134443]: https://github.com/home-assistant/core/pull/134443
+[#134454]: https://github.com/home-assistant/core/pull/134454
+[#134462]: https://github.com/home-assistant/core/pull/134462
+[#134467]: https://github.com/home-assistant/core/pull/134467
+[#134470]: https://github.com/home-assistant/core/pull/134470
+[#134481]: https://github.com/home-assistant/core/pull/134481
+[#134486]: https://github.com/home-assistant/core/pull/134486
+[#134489]: https://github.com/home-assistant/core/pull/134489
+[#134496]: https://github.com/home-assistant/core/pull/134496
+[#134506]: https://github.com/home-assistant/core/pull/134506
+[#134517]: https://github.com/home-assistant/core/pull/134517
+[#134518]: https://github.com/home-assistant/core/pull/134518
+[#134521]: https://github.com/home-assistant/core/pull/134521
+[#134523]: https://github.com/home-assistant/core/pull/134523
+[#134524]: https://github.com/home-assistant/core/pull/134524
+[#134526]: https://github.com/home-assistant/core/pull/134526
+[#134528]: https://github.com/home-assistant/core/pull/134528
+[#134534]: https://github.com/home-assistant/core/pull/134534
+[#134538]: https://github.com/home-assistant/core/pull/134538
+[#134546]: https://github.com/home-assistant/core/pull/134546
+[#134556]: https://github.com/home-assistant/core/pull/134556
+[#134561]: https://github.com/home-assistant/core/pull/134561
+[#134562]: https://github.com/home-assistant/core/pull/134562
+[#134569]: https://github.com/home-assistant/core/pull/134569
+[@Bre77]: https://github.com/Bre77
+[@CFenner]: https://github.com/CFenner
+[@CoMPaTech]: https://github.com/CoMPaTech
+[@DCSBL]: https://github.com/DCSBL
+[@Diegorro98]: https://github.com/Diegorro98
+[@DrBlokmeister]: https://github.com/DrBlokmeister
+[@FliegendeWurst]: https://github.com/FliegendeWurst
+[@G-Two]: https://github.com/G-Two
+[@IceBotYT]: https://github.com/IceBotYT
+[@Jordi1990]: https://github.com/Jordi1990
+[@KJonline]: https://github.com/KJonline
+[@Kane610]: https://github.com/Kane610
+[@Lash-L]: https://github.com/Lash-L
+[@LouisChrist]: https://github.com/LouisChrist
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@MindFreeze]: https://github.com/MindFreeze
+[@NoRi2909]: https://github.com/NoRi2909
+[@Noltari]: https://github.com/Noltari
+[@Omniflux]: https://github.com/Omniflux
+[@PierreAronnax]: https://github.com/PierreAronnax
+[@RaHehl]: https://github.com/RaHehl
+[@Shutgun]: https://github.com/Shutgun
+[@StevenLooman]: https://github.com/StevenLooman
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@Thomas55555]: https://github.com/Thomas55555
+[@VandeurenGlenn]: https://github.com/VandeurenGlenn
+[@Xiretza]: https://github.com/Xiretza
+[@YogevBokobza]: https://github.com/YogevBokobza
+[@ZephireNZ]: https://github.com/ZephireNZ
+[@aagit]: https://github.com/aagit
+[@abmantis]: https://github.com/abmantis
+[@adam-the-hero]: https://github.com/adam-the-hero
+[@agners]: https://github.com/agners
+[@agoode]: https://github.com/agoode
+[@albertogeniola]: https://github.com/albertogeniola
+[@alengwenus]: https://github.com/alengwenus
+[@alexandrecuer]: https://github.com/alexandrecuer
+[@allenporter]: https://github.com/allenporter
+[@andrew-codechimp]: https://github.com/andrew-codechimp
+[@andrewsayre]: https://github.com/andrewsayre
+[@arturpragacz]: https://github.com/arturpragacz
+[@astrandb]: https://github.com/astrandb
+[@austinmroczek]: https://github.com/austinmroczek
+[@autinerd]: https://github.com/autinerd
+[@bachya]: https://github.com/bachya
+[@balloob]: https://github.com/balloob
+[@barryvdh]: https://github.com/barryvdh
+[@basbruss]: https://github.com/basbruss
+[@bdraco]: https://github.com/bdraco
+[@benjamin-dcs]: https://github.com/benjamin-dcs
+[@bieniu]: https://github.com/bieniu
+[@bouwew]: https://github.com/bouwew
+[@bramkragten]: https://github.com/bramkragten
+[@by-cx]: https://github.com/by-cx
+[@candrews]: https://github.com/candrews
+[@catsmanac]: https://github.com/catsmanac
+[@cdce8p]: https://github.com/cdce8p
+[@cdnninja]: https://github.com/cdnninja
+[@cereal2nd]: https://github.com/cereal2nd
+[@cgarwood]: https://github.com/cgarwood
+[@chamberlain2007]: https://github.com/chamberlain2007
+[@chemelli74]: https://github.com/chemelli74
+[@crug80]: https://github.com/crug80
+[@ctalkington]: https://github.com/ctalkington
+[@dan-r]: https://github.com/dan-r
+[@dannerph]: https://github.com/dannerph
+[@davet2001]: https://github.com/davet2001
+[@davidrapan]: https://github.com/davidrapan
+[@dieselrabbit]: https://github.com/dieselrabbit
+[@dknowles2]: https://github.com/dknowles2
+[@dontinelli]: https://github.com/dontinelli
+[@dotvav]: https://github.com/dotvav
+[@eclair4151]: https://github.com/eclair4151
+[@edenhaus]: https://github.com/edenhaus
+[@eifinger]: https://github.com/eifinger
+[@elmurato]: https://github.com/elmurato
+[@emontnemery]: https://github.com/emontnemery
+[@epenet]: https://github.com/epenet
+[@farmio]: https://github.com/farmio
+[@flz]: https://github.com/flz
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@greyeee]: https://github.com/greyeee
+[@hahn-th]: https://github.com/hahn-th
+[@hughsaunders]: https://github.com/hughsaunders
+[@hugoideler]: https://github.com/hugoideler
+[@iMicknl]: https://github.com/iMicknl
+[@jb101010-2]: https://github.com/jb101010-2
+[@jbouwh]: https://github.com/jbouwh
+[@jesperraemaekers]: https://github.com/jesperraemaekers
+[@jon6fingrs]: https://github.com/jon6fingrs
+[@joostlek]: https://github.com/joostlek
+[@jpbede]: https://github.com/jpbede
+[@jrieger]: https://github.com/jrieger
+[@jterrace]: https://github.com/jterrace
+[@karwosts]: https://github.com/karwosts
+[@klaasnicolaas]: https://github.com/klaasnicolaas
+[@klejejs]: https://github.com/klejejs
+[@krauseerl]: https://github.com/krauseerl
+[@kruton]: https://github.com/kruton
+[@krzysdabro]: https://github.com/krzysdabro
+[@lboue]: https://github.com/lboue
+[@lellky]: https://github.com/lellky
+[@luc-ass]: https://github.com/luc-ass
+[@ludeeus]: https://github.com/ludeeus
+[@marcelveldt]: https://github.com/marcelveldt
+[@martijnrusschen]: https://github.com/martijnrusschen
+[@masto]: https://github.com/masto
+[@matrixd2]: https://github.com/matrixd2
+[@mdegat01]: https://github.com/mdegat01
+[@miaucl]: https://github.com/miaucl
+[@mib1185]: https://github.com/mib1185
+[@mill1000]: https://github.com/mill1000
+[@mj23000]: https://github.com/mj23000
+[@mkmer]: https://github.com/mkmer
+[@mmrazik]: https://github.com/mmrazik
+[@mrtlhfr]: https://github.com/mrtlhfr
+[@mvn23]: https://github.com/mvn23
+[@mweinelt]: https://github.com/mweinelt
+[@nasWebio]: https://github.com/nasWebio
+[@nielstron]: https://github.com/nielstron
+[@noahhusby]: https://github.com/noahhusby
+[@pawlizio]: https://github.com/pawlizio
+[@peteS-UK]: https://github.com/peteS-UK
+[@philipdouglas]: https://github.com/philipdouglas
+[@rappenze]: https://github.com/rappenze
+[@rd-blue]: https://github.com/rd-blue
+[@rikroe]: https://github.com/rikroe
+[@rytilahti]: https://github.com/rytilahti
+[@sdb9696]: https://github.com/sdb9696
+[@shapournemati-iotty]: https://github.com/shapournemati-iotty
+[@shmuelzon]: https://github.com/shmuelzon
+[@sorgfresser]: https://github.com/sorgfresser
+[@starkillerOG]: https://github.com/starkillerOG
+[@synesthesiam]: https://github.com/synesthesiam
+[@thecode]: https://github.com/thecode
+[@tjhorner]: https://github.com/tjhorner
+[@tofuSCHNITZEL]: https://github.com/tofuSCHNITZEL
+[@tr4nt0r]: https://github.com/tr4nt0r
+[@tronikos]: https://github.com/tronikos
+[@vche]: https://github.com/vche
+[@yazan-abdalrahman]: https://github.com/yazan-abdalrahman
+[@zweckj]: https://github.com/zweckj
diff --git a/source/common-tasks/os.markdown b/source/common-tasks/os.markdown
index 198637e4ef1..833a4e851ae 100644
--- a/source/common-tasks/os.markdown
+++ b/source/common-tasks/os.markdown
@@ -10,6 +10,20 @@ This section will provide guides to some common tasks and information which you
{% include common-tasks/file_access.md %}
+## Backup
+
+To learn how to back up the system or how to restore a system from a backup, refer to the backup documentation under [common tasks](/common-tasks/general/#backups).
+
+### Alternative: Creating a backup using the Home Assistant Command Line Interface
+
+In general, to create or restore from a backup, follow the steps described under [common tasks](/common-tasks/general/#backups). However, If you have the {% term "Home Assistant Operating System" %} installed, you can also create a backup from the command line. Follow these steps:
+
+1. `ha backups list` - lists backups and their slugnames
+2. `ha backups restore slugname` - restores a specific backup
+3. `ha backups new --name nameofbackup` - create a backup
+
+For additional information about command line usage, use the `ha help` command or refer to the [Home Assistant Command Line documentation](/common-tasks/os/#home-assistant-via-the-command-line).
+
## Updating Home Assistant
If you have the {% term "Home Assistant Operating System" %} installed, you receive update notifications from different components:
@@ -27,7 +41,7 @@ Updates of the {% term "Home Assistant Operating System" %} are independent of o
- [Backup](/common-tasks/general/#backups) your installation.
- Make sure the backup is downloaded and stored outside of the system.
- - So that you can restore from that backup in case there is an issue with the system.
+ - So that you can [restore from that backup](/common-tasks/general/#restoring-a-backup) in case there is an issue with the system.
#### To update the Home Assistant Operating System
diff --git a/source/common-tasks/supervised.markdown b/source/common-tasks/supervised.markdown
index c4c6cbf4d31..f401528657e 100644
--- a/source/common-tasks/supervised.markdown
+++ b/source/common-tasks/supervised.markdown
@@ -10,6 +10,20 @@ related:
{% include common-tasks/file_access.md %}
+## Backup
+
+To learn how to back up the system or how to restore a system from a backup, refer to the backup documentation under [common tasks](/common-tasks/general/#backups).
+
+### Alternative: Creating a backup using the Home Assistant Command Line Interface
+
+In general, to create or restore from a backup, follow the steps described under [common tasks](/common-tasks/general/#backups). However, If you have the {% term "Home Assistant Supervised" %} installed, you can also create a backup from the command line. Follow these steps:
+
+1. `ha backups list` - lists backups and their slugnames
+2. `ha backups restore slugname` - restores a specific backup
+3. `ha backups new --name nameofbackup` - create a backup
+
+For additional information about command line usage, use the `ha help` command or refer to the [Home Assistant Command Line documentation](/common-tasks/supervised/#home-assistant-via-the-command-line).
+
## Update
{% include common-tasks/update.md %}
diff --git a/source/connectzbt1/index.html b/source/connectzbt1/index.html
index 970d60e3fa7..0f2deb3cf03 100644
--- a/source/connectzbt1/index.html
+++ b/source/connectzbt1/index.html
@@ -22,6 +22,10 @@ frontpage_image: /images/frontpage/feature-zbt1.jpg
#landingpage #buy-dialog {
overflow-y: auto;
}
+ #landingpage .page-content .content .bullet-points .item span{
+ letter-spacing: unset;
+ }
+
.multi-pan {
max-width: 750px;
margin: 100px auto;
@@ -385,6 +389,24 @@ frontpage_image: /images/frontpage/feature-zbt1.jpg
+
+
+
+ indicates that this integration depends on the cloud.
-The file icon indicates that this integration was not set up via the UI. You have either set it up in your {% term "`configuration.yaml`" %} file, or it is a dependency set up by another integration. If you want to configure it, you will need to do so in your {% term "`configuration.yaml`" %} file.
+- The file icon indicates that this integration was not set up via the UI. You have either set it up in your {% term "`configuration.yaml`" %} file, or it is a dependency set up by another integration. If you want to configure it, you will need to do so in your {% term "`configuration.yaml`" %} file.
- The custom icon indicates that this is not an official Home Assistant integration but that it was custom made. It could be imported from another source, for example downloaded from HACS.
For a full list of compatible {% term integrations %}, refer to the [integrations](/integrations) documentation.
diff --git a/source/getting-started/onboarding.markdown b/source/getting-started/onboarding.markdown
index a624b66a4e6..ea89826e8b2 100644
--- a/source/getting-started/onboarding.markdown
+++ b/source/getting-started/onboarding.markdown
@@ -28,7 +28,7 @@ After Home Assistant has been [installed](/installation/) on your device, there
- Select **Create account**.
- **Option 2: restore from backup**: If you want to restore a backup of a previous installation, select **Restore from backup**.
- - Ignore the rest of this procedure and continue with the procedure on [restoring from backup](/common-tasks/os/#restoring-a-backup).
+ - Ignore the rest of this procedure and continue with the procedure on [restoring from backup](/common-tasks/general/#restoring-a-backup).
- If you have a Home Assistant Yellow, start with the [Yellow documentation on restoring from backup](https://yellow.home-assistant.io/guides/restore-backup/).
- If you have a Home Assistant Green, start with the [Green documentation on restoring from backup](https://green.home-assistant.io/guides/restore-backup/).
diff --git a/source/green/index.html b/source/green/index.html
index 32b4f1d6c3d..c40ed1377ff 100644
--- a/source/green/index.html
+++ b/source/green/index.html
@@ -2497,7 +2497,7 @@ dark_header: true
@@ -355,17 +355,6 @@ toc: true
>2: Home Assistant Supervised requires users to maintain their own operating system.
-
- 3: Home Assistant Core and Home Assistant Container can create backups via the user interface but they need to be manually restored.
-
-
- 3: Backups for Home Assistant Core and Home Assistant Container are either
- a tool to migrate to HAOS or a completely manual restore of the backup.
-
diff --git a/source/integrations/index.html b/source/integrations/index.html
index 24ffeaeccbe..908979ca990 100644
--- a/source/integrations/index.html
+++ b/source/integrations/index.html
@@ -67,7 +67,7 @@ regenerate: false
{%- assign category_name = cat -%}
{%- endif -%}
{%- endfor -%}
- {%- endif -%}
+ {%- endif -%}
{%- assign components_count = components_count | plus: 1 -%}
{%- endif -%}
{%- endfor -%}
@@ -98,7 +98,7 @@ regenerate: false
{%- assign category_name = cat -%}
{%- endif -%}
{%- endfor -%}
- {%- endif -%}
+ {%- endif -%}
{%- assign components_count = components_count | plus: 1 -%}
{%- endif -%}
{%- endfor -%}
@@ -208,7 +208,7 @@ allComponents.pop(); // remove placeholder element at the end
if (hash.indexOf(SEARCH_PREFIX) === 0) {
// search through title and category
search = decodeURIComponent(hash).substring(SEARCH_PREFIX.length).toLowerCase();
- filter = comp =>
+ filter = comp =>
comp.search.indexOf(search) !== -1 ||
comp.cat.find((c) => c.includes("#")) != undefined;
@@ -309,17 +309,19 @@ allComponents.pop(); // remove placeholder element at the end
};
// update view by search text
+ let lastSearchText = '';
searchInputEl.addEventListener('keyup', debounce(() => {
const text = searchInputEl.value
// sanitize input
.replace(/[(\?|\&\{\}\(\))]/gi, '')
.trim();
-
- let newHash = typeof text === "string" && text.length >= 1
- ? SEARCH_PREFIX + text
- : '#all';
- // Only apply filter if hash has changed
- if (newHash !== window.location.hash) {
+
+ // Only apply filter if value has changed
+ if (lastSearchText !== text) {
+ lastSearchText = text;
+ const newHash = typeof text === "string" && text.length >= 1
+ ? SEARCH_PREFIX + text
+ : '#all';
history.pushState('', '', newHash);
applyFilter();
}
diff --git a/source/more-info/backup-emergency-kit.markdown b/source/more-info/backup-emergency-kit.markdown
index ece0a3a665a..003b1602a31 100644
--- a/source/more-info/backup-emergency-kit.markdown
+++ b/source/more-info/backup-emergency-kit.markdown
@@ -4,9 +4,11 @@ description: "Information about backup emergency kit"
related:
- docs: /common-tasks/general/#backups
title: Backups
+ - docs: /common-tasks/general/#restoring-a-backup
+ title: Restoring a backup
---
-[Backups](/common-tasks/general/#backups) are encrypted (using [AES-128](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)). The backup emergency kit contains information needed to recover your backup, such as the encryption key and metadata about the related backup.
+[Backups](/common-tasks/general/#backups) are encrypted (using [AES-128](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)). The backup emergency kit contains information needed to [restore the backup](/common-tasks/general/#restoring-a-backup), such as the encryption key and metadata about the related backup.
## What is encryption, and why are backups encrypted?
@@ -14,14 +16,14 @@ Encryption is a method of converting data into a coded format so that it can onl
## Storing the backup emergency kit somewhere safe
-1. To download the backup emergency kit, go to {% my backup title="**Settings** > **System** > **Backups**" %}
+1. To download the backup emergency kit, go to {% my backup title="**Settings** > **System** > **Backups**" %}.
2. If it is your first time defining backup settings, select **Setup automatic backup** and download the backup emergency kit.
- You can also download the encryption key again later from the backup configuration page.

3. Store the kit somewhere safe, outside the Home Assistant system.
- - Without the encryption key, there is no way to restore the [backup](/common-tasks/general/#backups).
+ - Without the encryption key, there is no way to [restore the backup](/common-tasks/general/#restoring-a-backup).
## Changing your encryption key
diff --git a/source/more-info/unsupported/cgroup_version.markdown b/source/more-info/unsupported/cgroup_version.markdown
index ad49b3c3faf..19b9bb4f3e2 100644
--- a/source/more-info/unsupported/cgroup_version.markdown
+++ b/source/more-info/unsupported/cgroup_version.markdown
@@ -16,6 +16,8 @@ before we publish a version that will require you to upgrade CGroups.
## The solution
+If your host uses CGroup v2, add this to the Linux kernel boot parameters: `systemd.unified_cgroup_hierarchy=0` and then reboot your operating system.
+
In a supervised installation if you have switched to CGroup v2 you will need to
revert what you did. Or you can re-run the [supervised installer](https://github.com/home-assistant/supervised-installer)
to fix it. Please be sure to reboot the system after the installation is done.
diff --git a/source/voice-pe/index.html b/source/voice-pe/index.html
index 603c6c0022b..3e9bf6ff8cb 100644
--- a/source/voice-pe/index.html
+++ b/source/voice-pe/index.html
@@ -112,7 +112,7 @@ frontpage_image: /images/frontpage/voice-pe-frontpage.jpg
diff --git a/source/voice-pe/styles.css b/source/voice-pe/styles.css
index e47f13c335d..4f7e836a838 100644
--- a/source/voice-pe/styles.css
+++ b/source/voice-pe/styles.css
@@ -1590,25 +1590,10 @@ section#hero .bg-gradient {
-.vpe-main #timeline[data-event="0"] .timeline .track .icon {
- --top: calc(var(--grid-m) * -5);
-}
-
-.vpe-main #timeline[data-event="1"] .timeline .track .icon {
- --top: calc(var(--grid-m) * var(--event-height));
-}
-
.vpe-main #timeline[data-event="2"] .timeline .track .icon {
- --top: calc(var(--grid-m) * (var(--event-height) * 2));
+ --top: calc(var(--grid-m) * (var(--event-height) * 2.333));
}
-.vpe-main #timeline[data-event="3"] .timeline .track .icon {
- --top: calc(var(--grid-m) * (var(--event-height) * 3));
-}
-
-.vpe-main #timeline[data-event="4"] .timeline .track .icon {
- --top: calc(var(--grid-m) * (var(--event-height) * 4));
-}
.vpe-main #timeline[data-event="0"] .event:nth-child(1) .content {
opacity: 1;
diff --git a/source/voice_control/android.markdown b/source/voice_control/android.markdown
index dfc8b3699dd..f7b06c1b5e9 100644
--- a/source/voice_control/android.markdown
+++ b/source/voice_control/android.markdown
@@ -7,6 +7,8 @@ related:
title: Best practices with Assist
- url: https://companion.home-assistant.io/docs/getting_started/
title: Home Assistant Companion App
+ - url: https://voice-pe.home-assistant.io/
+ title: Voice Preview Edition
---
## Assist on Android phones
diff --git a/source/voice_control/apple.markdown b/source/voice_control/apple.markdown
index 65fbe00da53..87f28cfde9f 100644
--- a/source/voice_control/apple.markdown
+++ b/source/voice_control/apple.markdown
@@ -7,6 +7,8 @@ related:
title: Best practices with Assist
- url: https://companion.home-assistant.io/docs/getting_started/
title: Home Assistant Companion App
+ - url: https://voice-pe.home-assistant.io/
+ title: Voice Preview Edition
---
## Assist on iPhones
diff --git a/source/voice_control/best_practices.markdown b/source/voice_control/best_practices.markdown
index 88ea016fb2c..d3efbedbd2a 100644
--- a/source/voice_control/best_practices.markdown
+++ b/source/voice_control/best_practices.markdown
@@ -11,6 +11,8 @@ related:
title: Sentences starter kit
- url: https://www.nabucasa.com/config/
title: Home Assistant Cloud
+ - url: https://voice-pe.home-assistant.io/
+ title: Voice Preview Edition
---
There are a few things you should do to get the most out of the voice assistant experience.
@@ -58,7 +60,7 @@ English has pretty simple grammar rules, but there are languages where definite
Assist leverages domains to define the proper verbs for the action being taken (for example, turning on/off a `light`, or a `fan`, opening/closing a `cover` with a `door` `device_class`, opening/closing a `valve` or locking/unlocking a `lock`.).
-It might not bother anyone to have a `switch.main`_valve in the UI instead of a valve, but you canโt ask Assist to open the main valve if the main valve is a switch. If it was a `valve.main_valve`, then the former sentence would have worked without a hitch.
+It might not bother anyone to have a `switch.main_valve` in the UI instead of a valve, but you canโt ask Assist to open the main valve if the main valve is a switch. If it was a `valve.main_valve`, then the former sentence would have worked without a hitch.
To prevent this, you can use either the [Change device type of a switch integration](/integrations/switch_as_x/) or create virtual entities using [template](/integrations/template/) entities or Generic X (e.g. [generic thermostat](/integrations/generic_thermostat/)).
@@ -81,4 +83,4 @@ There are a few example commands to help you get started in [our Sentences start
If you don't get the right response, we recommend you check the Aliases. Sometimes, different household members may call an entity differently. You may say "TV", whereas someone else may say "Television"
-You can create aliases for exposed entities so that you can target them using different names with Assist. Aliases are available at entity, area, and floor level. Learn how in the [Alias tutorial](/voice_control/aliases/).
\ No newline at end of file
+You can create aliases for exposed entities so that you can target them using different names with Assist. Aliases are available at entity, area, and floor level. Learn how in the [Alias tutorial](/voice_control/aliases/).
diff --git a/source/voice_control/expanding_assist.markdown b/source/voice_control/expanding_assist.markdown
index a1e715e1d22..9793b29becc 100644
--- a/source/voice_control/expanding_assist.markdown
+++ b/source/voice_control/expanding_assist.markdown
@@ -7,6 +7,8 @@ related:
title: Custom sentences with Assist
- url: https://www.nabucasa.com/config/
title: Home Assistant Cloud
+ - url: https://voice-pe.home-assistant.io/
+ title: Voice Preview Edition
---
Once you have completed the steps in the [Best practices](/voice_control/best_practices/), you have your bases covered and are ready to use Assist. This section provides some ideas on how to expand your setup for more advanced use cases.
diff --git a/source/voice_control/index.markdown b/source/voice_control/index.markdown
index 56295f137cb..69beced6a2b 100644
--- a/source/voice_control/index.markdown
+++ b/source/voice_control/index.markdown
@@ -11,6 +11,8 @@ related:
title: Best practices with Assist
- url: https://www.nabucasa.com/config/assist/
title: Home Assistant Cloud
+ - url: https://voice-pe.home-assistant.io/
+ title: Voice Preview Edition
---
This section will help you set up Assist, which is Home Assistant voice assistant.
@@ -34,7 +36,7 @@ Ready? Now let's get started
## Expand and Experiment
-Once your setup is up and running and you follow the [best practices](/voice_control/best_practices), check all the possibilities we found for [Expanding your Assist setup](/voice_control/expanding_assist), and further experiment with different setups like [wake words](/voice_control/about_wake_word/). Do you want to talk to Super Mario? Or another figure? If you want Assist to respond in a fun way, you can create an assistant with an [OpenAI personality](/voice_control/assist_create_open_ai_personality/).
+Once your setup is up and running and you follow the [best practices](/voice_control/best_practices), check all the possibilities we found for [Expanding your Assist setup](/voice_control/expanding_assist), and further experiment with different setups like [wake words](/voice_control/about_wake_word/). Do you want to talk to Super Mario? Or another figure? If you want Assist to respond in a fun way, you can create an assistant with an [AI personality](/voice_control/assist_create_open_ai_personality/).
Another things you can do to further push your setup:
diff --git a/source/voice_control/using_tts_in_automation.markdown b/source/voice_control/using_tts_in_automation.markdown
index 302eb6c4c63..561720f9f10 100644
--- a/source/voice_control/using_tts_in_automation.markdown
+++ b/source/voice_control/using_tts_in_automation.markdown
@@ -6,14 +6,12 @@ This procedure shows you how to create a text-to-speech {% term action %}. For t
1. Go to **{% my automations title="Settings > Automations & Scenes" %}**, and select **Create automation**.
2. Select **Create new automation**, then **Add action**.
-3. From the drop-down menu, select **Play media** and select the media player you want to use for this automation.
- 
-4. Select **Pick media**, then, select **Text-to-speech**.
- 
-5. To use fully local text-to-speech processing, select **Piper**.
- 
+3. From the drop-down menu, search for or select **TTS: Speak**.
+ 
+4. To use fully local text-to-speech processing, select **piper** from the **Choose entity** control.
+ 
+5. Select the media player you want the automation to use.
6. Enter the text you want to hear for this automation.
- 
+ 
7. Your text-to-speech action is now ready to be used in your script or automation.
- 
8. Save your action.
diff --git a/source/voice_control/voice_remote_cloud_assistant.markdown b/source/voice_control/voice_remote_cloud_assistant.markdown
index a5c9d65a64f..5bc193a2467 100644
--- a/source/voice_control/voice_remote_cloud_assistant.markdown
+++ b/source/voice_control/voice_remote_cloud_assistant.markdown
@@ -1,16 +1,16 @@
---
title: "Getting Started - Home Assistant Cloud"
related:
- - docs: /voice_control/install_wake_word_add_on/
- title: Enabling a wake word
- - docs: /voice_control/create_wake_word/
- title: Create your own wake word
+ - docs: /voice_control/best_practices/
+ title: Best practices with Assist
+ - docs: /voice_control/expanding_assist/
+ title: Expanding Assist
- docs: /voice_control/voice_remote_local_assistant/
title: Creating a local assistant
- docs: /voice_control/voice_remote_expose_devices/
title: Exposing devices to Assist
- - docs: /voice_control/best_practices/
- title: Best practices with Assist
+ - url: https://voice-pe.home-assistant.io/documentation/
+ title: Voice Preview Edition - Documentation
---
Before being able to use Assist, you need to configure it.
@@ -48,4 +48,8 @@ To have the fastest processing voice assistant experience, follow these steps:
6. That's it. You can now speak to your device, and the device can answer in the language you defined.
-Once Assist is configured, now can now start using it. Check this page to learn how:
+
+## Next steps
+Once Assist is configured, now can now start using it. You can now talk through your device ([Android](/voice_control/android/), [iOS](/voice_control/apple/) or [Voice Preview edition](https://voice-pe.home-assistant.io/getting-started/)).
+
+To get the best out of the voice interaction, don't forget to check the [best practices](/voice_control/best_practices/).
diff --git a/source/voice_control/voice_remote_local_assistant.markdown b/source/voice_control/voice_remote_local_assistant.markdown
index 188e8cb5dd8..4c01878a9cf 100644
--- a/source/voice_control/voice_remote_local_assistant.markdown
+++ b/source/voice_control/voice_remote_local_assistant.markdown
@@ -1,16 +1,16 @@
---
title: "Getting started - Local"
related:
- - docs: /voice_control/voice_remote_expose_devices/#exposing-your-devices
- title: Expose your devices to Assist
- - docs: /voice_control/create_wake_word/
- title: Create your own wake words
- - url: https://github.com/openai/whisper
- title: Whisper for speech-to-text
- - url: https://github.com/rhasspy/piper
- title: Piper for text-to-speech
- docs: /voice_control/best_practices/
title: Best practices with Assist
+ - docs: /voice_control/expanding_assist/
+ title: Expanding Assist
+ - docs: /voice_control/voice_remote_local_assistant/
+ title: Creating a local assistant
+ - docs: /voice_control/voice_remote_expose_devices/
+ title: Exposing devices to Assist
+ - url: https://voice-pe.home-assistant.io/documentation/
+ title: Voice Preview Edition - Documentation
---
The simplest and most effective way to use Assist is to leverage the voice providers (for speech-to-text and text-to-speech) included in [Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/)
@@ -95,4 +95,6 @@ The options are also documented in the add-on itself. Go to the {% my supervisor
Also be sure to check the specific tutorial for [using Piper in Automations](voice_control/using_tts_in_automation/)
## Next steps
-Once the pipeline is configured, you are ready to jump into the basic conversation setup in Best Practices
+Once Assist is configured, now can now start using it. You can now talk through your device ([Android](/voice_control/android/), [iOS](/voice_control/apple/) or [Voice Preview edition](https://voice-pe.home-assistant.io/getting-started/)).
+
+To get the best out of the voice interaction, don't forget to check the [best practices](/voice_control/best_practices/).
diff --git a/source/yellow/index.html b/source/yellow/index.html
index e3f73fb341b..16f11ae0a6b 100644
--- a/source/yellow/index.html
+++ b/source/yellow/index.html
@@ -48,6 +48,9 @@ frontpage_image: /images/frontpage/yellow-frontpage.jpg
max-width: initial;
width: 100px;
}
+ #landingpage .page-content .content .bullet-points .item span{
+ letter-spacing: unset;
+ }
.banner-overlay-button, #landingpage .fab {
background-color: #ffc900 !important;
color: black !important;