diff --git a/CODEOWNERS b/CODEOWNERS index 08de6b73e71..dec4df0029b 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -161,6 +161,7 @@ source/_integrations/config.markdown @home-assistant/core source/_integrations/configurator.markdown @home-assistant/core source/_integrations/control4.markdown @lawtancool source/_integrations/conversation.markdown @home-assistant/core @synesthesiam +source/_integrations/cookidoo.markdown @miaucl source/_integrations/coolmaster.markdown @OnFreund source/_integrations/counter.markdown @fabaff source/_integrations/cover.markdown @home-assistant/core @@ -223,6 +224,7 @@ source/_integrations/ecovacs.markdown @mib1185 @edenhaus @Augar source/_integrations/ecowitt.markdown @pvizeli source/_integrations/efergy.markdown @tkdrob source/_integrations/egardia.markdown @jeroenterheerdt +source/_integrations/eheimdigital.markdown @autinerd source/_integrations/electrasmart.markdown @jafar-atili source/_integrations/electric_kiwi.markdown @mikey0000 source/_integrations/elevenlabs.markdown @sorgfresser @@ -329,7 +331,7 @@ source/_integrations/google_photos.markdown @allenporter source/_integrations/google_sheets.markdown @tkdrob source/_integrations/google_tasks.markdown @allenporter source/_integrations/google_travel_time.markdown @eifinger -source/_integrations/govee_ble.markdown @bdraco @PierreAronnax +source/_integrations/govee_ble.markdown @bdraco source/_integrations/govee_light_local.markdown @Galorhallen source/_integrations/gpsd.markdown @fabaff @jrieger source/_integrations/gree.markdown @cmroche @@ -414,7 +416,7 @@ source/_integrations/intellifire.markdown @jeeftor source/_integrations/intesishome.markdown @jnimmo source/_integrations/ios.markdown @robbiet480 source/_integrations/iotawatt.markdown @gtdiehl @jyavenard -source/_integrations/iotty.markdown @pburgio @shapournemati-iotty +source/_integrations/iotty.markdown @shapournemati-iotty source/_integrations/iperf3.markdown @rohankapoorcom source/_integrations/ipma.markdown @dgomes source/_integrations/iqvia.markdown @bachya @@ -428,6 +430,7 @@ source/_integrations/israel_rail.markdown @shaiu source/_integrations/iss.markdown @DurgNomis-drol source/_integrations/ista_ecotrend.markdown @tr4nt0r source/_integrations/isy994.markdown @bdraco @shbatm +source/_integrations/ituran.markdown @shmuelzon source/_integrations/izone.markdown @Swamp-Ig source/_integrations/jellyfin.markdown @j-stienstra @ctalkington source/_integrations/jewish_calendar.markdown @tsvi @@ -545,6 +548,7 @@ source/_integrations/motioneye.markdown @dermotduffy source/_integrations/mqtt.markdown @emontnemery @jbouwh @bdraco source/_integrations/msteams.markdown @peroyvind source/_integrations/mullvad.markdown @meichthys +source/_integrations/music_assistant.markdown @music-assistant source/_integrations/mutesync.markdown @currentoor source/_integrations/my.markdown @home-assistant/core source/_integrations/mysensors.markdown @MartinHjelmare @functionpointer @@ -570,6 +574,7 @@ source/_integrations/nfandroidtv.markdown @tkdrob source/_integrations/nibe_heatpump.markdown @elupus source/_integrations/nice_go.markdown @IceBotYT source/_integrations/nightscout.markdown @marciogranzotto +source/_integrations/niko_home_control.markdown @VandeurenGlenn source/_integrations/nilu.markdown @hfurubotten source/_integrations/nina.markdown @DeerMaximum source/_integrations/nissan_leaf.markdown @filcole @@ -594,13 +599,14 @@ source/_integrations/nzbget.markdown @chriscla source/_integrations/obihai.markdown @dshokouhi @ejpenney source/_integrations/octoprint.markdown @rfleming71 source/_integrations/ohmconnect.markdown @robbiet480 +source/_integrations/ohme.markdown @dan-r source/_integrations/ollama.markdown @synesthesiam source/_integrations/ombi.markdown @larssont source/_integrations/onboarding.markdown @home-assistant/core source/_integrations/oncue.markdown @bdraco @peterager source/_integrations/ondilo_ico.markdown @JeromeHXP source/_integrations/onewire.markdown @garbled1 @epenet -source/_integrations/onkyo.markdown @arturpragacz +source/_integrations/onkyo.markdown @arturpragacz @eclair4151 source/_integrations/onvif.markdown @hunterjm source/_integrations/open_meteo.markdown @frenck source/_integrations/openai_conversation.markdown @balloob @@ -626,6 +632,7 @@ source/_integrations/p1_monitor.markdown @klaasnicolaas source/_integrations/palazzetti.markdown @dotvav source/_integrations/panel_custom.markdown @home-assistant/frontend source/_integrations/pcs_lighting.markdown @gwww +source/_integrations/peblar.markdown @frenck source/_integrations/peco.markdown @IceBotYT source/_integrations/peco_opower.markdown @tronikos source/_integrations/pegel_online.markdown @mib1185 @@ -646,6 +653,7 @@ source/_integrations/plum_lightpad.markdown @ColinHarrington @prystupa source/_integrations/point.markdown @fredrike source/_integrations/poolsense.markdown @haemishkyd source/_integrations/portlandgeneral.markdown @tronikos +source/_integrations/powerfox.markdown @klaasnicolaas source/_integrations/powerwall.markdown @bdraco @jrester @daniel-simpson source/_integrations/private_ble_device.markdown @Jc2k source/_integrations/profiler.markdown @bdraco @@ -773,6 +781,7 @@ source/_integrations/skybell.markdown @tkdrob source/_integrations/slack.markdown @tkdrob @fletcherau source/_integrations/sleepiq.markdown @mfugate1 @kbickar source/_integrations/slide.markdown @ualex73 +source/_integrations/slide_local.markdown @dontinelli source/_integrations/slimproto.markdown @marcelveldt source/_integrations/sma.markdown @kellerza @rklomp source/_integrations/smappee.markdown @bsmappee @@ -808,11 +817,10 @@ source/_integrations/squeezebox.markdown @rajlaud @pssc @peteS-UK source/_integrations/srp_energy.markdown @briglx source/_integrations/starline.markdown @anonym-tsk source/_integrations/starlink.markdown @boswelja -source/_integrations/statistics.markdown @ThomDietrich +source/_integrations/statistics.markdown @ThomDietrich @gjohansson-ST source/_integrations/steam_online.markdown @tkdrob source/_integrations/steamist.markdown @bdraco source/_integrations/stiebel_eltron.markdown @fucm -source/_integrations/stookalert.markdown @fwestenberg @frenck source/_integrations/stookwijzer.markdown @fwestenberg source/_integrations/stream.markdown @hunterjm @uvjustin @allenporter source/_integrations/stt.markdown @home-assistant/core @@ -939,6 +947,7 @@ source/_integrations/wake_word.markdown @home-assistant/core @synesthesiam source/_integrations/wallbox.markdown @hesselonline source/_integrations/waqi.markdown @joostlek source/_integrations/water_heater.markdown @home-assistant/core +source/_integrations/watergate.markdown @adam-the-hero source/_integrations/watson_tts.markdown @rutkai source/_integrations/watttime.markdown @bachya source/_integrations/waze_travel_time.markdown @eifinger @@ -987,6 +996,7 @@ source/_integrations/yi.markdown @bachya source/_integrations/yolink.markdown @matrixd2 source/_integrations/youless.markdown @gjong source/_integrations/youtube.markdown @joostlek +source/_integrations/zabbix.markdown @kruton source/_integrations/zamg.markdown @killer0071234 source/_integrations/zengge.markdown @emontnemery source/_integrations/zeroconf.markdown @bdraco diff --git a/_config.yml b/_config.yml index ed513ae0c89..8d30cf518f7 100644 --- a/_config.yml +++ b/_config.yml @@ -106,10 +106,10 @@ social: account: "https://fosstodon.org/@homeassistant" # Home Assistant release details -current_major_version: 2024 -current_minor_version: 12 -current_patch_version: 5 -date_released: 2024-12-20 +current_major_version: 2025 +current_minor_version: 1 +current_patch_version: 0 +date_released: 2025-01-03 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_dashboards/logbook.markdown b/source/_dashboards/logbook.markdown index 8f86938ebd3..e344a6ac3ca 100644 --- a/source/_dashboards/logbook.markdown +++ b/source/_dashboards/logbook.markdown @@ -2,7 +2,7 @@ type: card title: "Logbook card" sidebar_label: Logbook -description: "The logbook card displays entries from the logbook for specific entities." +description: "The logbook card displays entries from the logbook for specific entities, devices, areas, and/or labels." related: - docs: /integrations/frontend/ title: Themes @@ -10,7 +10,7 @@ related: title: Dashboard cards --- -The logbook card displays entries from the logbook for specific entities. +The logbook card displays entries from the logbook for specific entities, devices, areas, and/or labels.

Screenshot of the logbook card @@ -22,8 +22,8 @@ The logbook card displays entries from the logbook for specific entities. ## Card settings {% configuration_basic %} -Entities: - description: The entities whose logbook entries will show in the card. +Target: + description: The entities, devices, areas and labels whose logbook entries will show in the card. See [target selector](/docs/blueprint/selectors/#target-selector) for more information. Title: description: The title that shows on the top of the card. Hours to show: @@ -41,10 +41,10 @@ type: required: true description: "`logbook`" type: string -entities: +target: required: true - description: The entities that will show in the card. - type: list + description: The target to use for the card. + type: map title: required: false description: Title of the card. @@ -64,9 +64,24 @@ theme: ```yaml type: logbook -entities: - - fan.ceiling_fan - - fan.living_room_fan - - light.ceiling_lights +target: + entity_id: + - fan.ceiling_fan + - fan.living_room_fan + - light.ceiling_lights hours_to_show: 24 ``` + +```yaml +type: logbook +target: + area_id: living_room + device_id: + - ff22a1889a6149c5ab6327a8236ae704 + - 52c050ca1a744e238ad94d170651f96b + entity_id: + - light.hallway + - light.landing + label_id: + - lights +``` diff --git a/source/_dashboards/map.markdown b/source/_dashboards/map.markdown index eadd522b5a6..f1bb649f315 100644 --- a/source/_dashboards/map.markdown +++ b/source/_dashboards/map.markdown @@ -125,7 +125,7 @@ name: label_mode: required: false default: name - description: When set to `state`, renders the entity's state as the label for the map marker instead of the entity's name. This option doesn't apply to [zone](/integrations/zone/) entities because they don't use a label but an icon. + description: When set to `icon`, renders the entity's icon in the marker instead of text. When set to `state`, renders the entity's state as the label for the map marker instead of the entity's name. This option doesn't apply to [zone](/integrations/zone/) entities because they don't use a label but an icon. type: string focus: required: false @@ -143,6 +143,11 @@ source: required: true description: Name of a geolocation source, or `all`. type: string +label_mode: + required: false + default: name + description: When set to `icon`, renders the geolocation entity's icon in the marker instead of text. When set to `state`, renders the entity's state as the label for the map marker instead of the entity's name. + type: string focus: required: false default: true diff --git a/source/_dashboards/statistics-graph.markdown b/source/_dashboards/statistics-graph.markdown index 52a69b301be..2a24180ab68 100644 --- a/source/_dashboards/statistics-graph.markdown +++ b/source/_dashboards/statistics-graph.markdown @@ -74,6 +74,19 @@ logarithmic_scale: description: If true, numerical values on the Y-axis will be displayed with a logarithmic scale. type: boolean default: false +min_y_axis: + required: false + description: Lower bound for the Y-axis range. + type: float +max_y_axis: + required: false + description: Upper bound for the Y-axis range. + type: float +fit_y_data: + required: false + description: If true, configured Y-axis bounds would automatically extend (but not shrink) to fit the data. + type: boolean + default: false {% endconfiguration %} ### Options for entities diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown index b73bfb1378f..77811b8ca69 100644 --- a/source/_docs/configuration.markdown +++ b/source/_docs/configuration.markdown @@ -6,7 +6,7 @@ related: title: YAML syntax - docs: /docs/configuration/secrets title: Storing credentials in `secrets.yaml` file - - docs: /common-tasks/os/#backups + - docs: /common-tasks/general/#backups title: Creating and restoring backups - docs: /integrations/backup/docs/tools/dev-tools/#reloading-the-yaml-configuration title: Creating backups for Home Assistant Container and Core diff --git a/source/_docs/tools/quick-bar.markdown b/source/_docs/tools/quick-bar.markdown index df86c08417d..ec7dceb3024 100644 --- a/source/_docs/tools/quick-bar.markdown +++ b/source/_docs/tools/quick-bar.markdown @@ -18,9 +18,11 @@ Type these from anywhere in the application to launch the dialog. | Mode | Hotkey | Switch Modes | ------------- | ------------- | ------------- | -| Entity Filter | `e` | Type `>` at start of input to switch to command palette. +| Entity Filter | `e` | Type `>` at start of input to switch to command palette. Type `#` at start of input to switch to device filter. | Command Palette | `c` | Remove `>` from start of input to switch to entity filter. +| Device Filter | `d` | Remove `#` from start of input to switch to entity filter. | Create [`my`](/integrations/my) link | `m` | Open a new tab to create a my link to the page you are on. +| Assist | `a` | Open the Home Assistant Assist dialog. {% important %} The application must have focus for the hotkey to register. If the dialog doesn't launch, try clicking into an empty part of the main content area of Home Assistant and type it again. @@ -41,6 +43,17 @@ Once launched, start typing your entity id (or ["bits and pieces" of your entity This is helpful when, say, you are in the middle of writing an automation and need some quick insight about an entity but don't want to navigate away to Developer Tools. +## Device filter + +*Hotkey: `d`* + +Similar to {% my entities title="Settings -> Devices & Services -> Devices" %}, but accessible from anywhere in the frontend. + +Once launched, start typing your device name to get back a filtered list of your devices. Clicking on a device (or hitting `enter` when the desired device is highlighted) will open the selected device detail page. + +This is helpful when you need to quickly access a device's detail page without navigating your way through the menu. + + ## Command palette *Hotkey: `c`* @@ -66,6 +79,15 @@ Type | Available | Create [`my`](/integrations/my) links from any supported page in the user interface, when invoked on a supported page it will open a new tab that will allow you to share the link in different formats. +## Assist + +*Hotkey: `a`* + +Opens the Assist dialog to interact with Home Assistant using your voice or by text. +This feature is only available if you have set up a voice assistant. + +Learn more about [voice assistants](/voice_control). + ## Disabling shortcuts You can enable or disable all of Home Assistant's keyboard shortcuts by going to your User Profile and clicking the "Keyboard Shortcuts" toggle button. diff --git a/source/_includes/common-tasks/backups.md b/source/_includes/common-tasks/backups.md index 0f887c9e3b6..429a787f1e6 100644 --- a/source/_includes/common-tasks/backups.md +++ b/source/_includes/common-tasks/backups.md @@ -1,8 +1,8 @@ ## Backups -Backup of your Home Assistant, add-on data, and configuration. Backups are used to [restore](#restoring-a-backup) a system or parts of it if a rollback is needed or to migrate your Home Assistant to new hardware. It is good practice to create a backup before updating. +It is important to regularly back up your Home Assistant setup. You may have spent many hours configuring your system and creating automations. Keep your configurations safe so that you can [restore](#restoring-a-backup) a system or migrate your Home Assistant to new hardware. -Backups are made from the backups panel under {% my supervisor_backups title="**Settings** > **System** > **Backups**" %}. There is also an [action](/integrations/hassio/#action-hassiobackup_full) available that allows you to trigger the creation of a backup from an automation. Backups are stored in a compressed archive file (.tar) and by default, stored locally in the `/backup` directory. +Backups are encrypted and stored in a compressed archive file (.tar) and by default, stored locally in the `/backup` directory. A full backup includes the following directories: @@ -16,23 +16,68 @@ A partial backup consists of any number of the above default directories and ins ### Preparing for a backup -1. Before creating a backup, check if you can reduce the size of the backup. - - Check if your configuration directory contains a large database file. Go to **{% my system_health title="Settings > System > Repairs" %}**. From the three dot menu, select **System information** and under the **Recorder** section, look for the **Estimated Database Size (MiB)**. +Before creating a backup, check if you can reduce the size of the backup. This is especially important if you want to use the backup to migrate the system to new hardware, for example from a Raspberry Pi Compute Module 4 to a Raspberry Pi Compute Module 5. + +1. Check if your configuration directory contains a large database file: + - Go to {% my system_health title="**Settings** > **System** > **Repairs**" %}. + - From the three dot menu, select **System information** and under the **Recorder** section, look for the **Estimated Database Size (MiB)**. - By default, the data is kept for 10 days. If you have modified that to a longer period, check the [`recorder`](/integrations/recorder/) integration page for options to keep your database data down to a size that won't cause issues. - Note the keep days, purge interval, and include/exclude options. +2. To check how much space you've used in total, go to {% my system_health title="**Settings** > **System** > **Repairs**" %}. + - From the three dot menu, select **System information**, and check under **Home Assistant Supervisor** > **Disk used**. - If you have add-ons installed that you no longer use, uninstall those add-ons. Some add-ons require quite a bit of space. -2. Old backups are not included in the backup. However, while you are here, you could delete all old and unneeded backups. +3. If you want to store the backup on your network storage instead of just locally on your system, follow the steps on [adding a new network storage](/common-tasks/os/#add-a-new-network-storage) and select the **Backup** option. -### Making a backup from the UI +### Setting up an automatic backup process -1. Go to {% my supervisor_backups title="**Settings** > **System** > **Backups**" %} in the UI. -2. Select the **Create backup** button in the lower right. -3. Provide a name for the backup. -4. Choose **Full backup** or **Partial backup**. - - If you choose **Partial backup**, make sure to select Home Assistant and all the folders and add-ons you want to backup or migrate. - - Note that the number of add-ons increases the size of the backup as well as the time it takes to restore from that backup. -5. Optionally, enable password protection. -6. Select **Create** to begin the backup. +The automatic backup process creates a backup on a predefined schedule and also deletes old, redundant backups. + +1. Go to {% my supervisor_backups title="**Settings** > **System** > **Backups**" %}. +2. Under **Automatic backups**, select **Configure automatic backups**. +3. Enable automatic backup. +4. Define the backup schedule. It is recommended to back up daily. +5. Define how many backups you want to keep. + - Older backups will be automatically deleted. + - For example: if you back up daily, and select 7 backups, then the backup from 8 days ago and older will be deleted. +6. Define the data you want to back up. + - It is recommended to disable media and the share folder to reduce the size of the backup. + - A large backup also takes longer to restore. + - Some add-ons may also be quite large. +7. [Define the location for backups](#defining-backup-locations). +8. Backups are encrypted. To be able to restore encrypted backups, download the emergency kit and store it somewhere safe. + - To learn more, refer to the documentation on the [backup emergency kit](/more-info/backup-emergency-kit/). + +### Defining backup locations + +You might need a backup in case your system has crashed. If you only store backups on the device itself, you won't be able to access them easily. It is recommended to keep a copy on another system and ideally also one off-site. + +#### About the backup storage on Home Assistant Cloud + +If you have Home Assistant Cloud, you can store a backup of maximum 5 GB on Home Assistant Cloud. This cloud storage space is available for all existing and new Home Assistant Cloud subscribers without additional cost. It stores one backup file: the backup that was last saved to Home Assistant Cloud. Backups are always encrypted. To restore encrypted backups, you need the encryption key stored in the [backup emergency kit](/more-info/backup-emergency-kit/). + +#### To define the backup location for automatic backups + +1. Go to {% my supervisor_backups title="**Settings** > **System** > **Backups**" %} and under **Automatic backups**, select **Configure automatic backups**. +2. Under **Locations**, enable all the backup locations you want to use. + - If you don't see Home Assistant Cloud in the list, you are not [logged in](https://www.nabucasa.com/config/). + - If you don't see a network storage, you haven't added one. Follow the steps on [adding a new network storage](/common-tasks/os/#add-a-new-network-storage) and select the **Backup** option. + ![Define the backup locations](/images/screenshots/network-storage/backup_locations_all.png) + +### Creating a manual backup + +This creates a backup instantly. You can create a manual backup at any time, irrespective of any automatic backups you may have defined. + +1. Go to {% my supervisor_backups title="**Settings** > **System** > **Backups**" %}. +2. In the lower-right corner, select **Backup now** and select **Manual backup**. +3. Define the data you want to back up. + - It is recommended to disable media and the share folder to reduce the size of the backup. + - A large backup also takes longer to restore. + - Some add-ons may also be quite large. +4. Provide a name for the backup. +5. Choose the backup locations. + - To learn more about the locations, refer to the section on [defining the backup location](#defining-backup-locations). +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 @@ -42,38 +87,50 @@ A partial backup consists of any number of the above default directories and ins 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). -### Copying your backups to another location +### Downloading your local backups -You might need a backup in case your system has crashed. If you only store them on the device itself, you won't be able to access them easily. We recommend that you copy them from `/backup` to another machine on occasion. +There are multiple ways to download your local backup from your Home Assistant instance and store it on another device: -There are multiple ways to store the backup on another device: +**Option 1**: Download from the backup page: -- **Option 1**: Under {% my supervisor_backups title="**Settings** > **System** > **Backups**" %}, on the list, single-click or tap the backup of interest. - - **Result**: The backup dialog opens. - - In the dialog, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Download backup**. - - **Result**: The selected backup is stored in the **Downloads** folder of your computer. -- **Option 2**: If you haven't already done so, [configure access to files on Home Assistant](/common-tasks/{{page.installation}}/#configuring-access-to-files), using one of the methods listed there. - - For example, [use the samba add-on](/common-tasks/{{page.installation}}/#installing-and-using-the-samba-add-on). - - In your file explorer, access Home Assistant, open the `backup` folder and copy the file to your computer. -- **Option 3**: You can also change the default location for backups: - - [Add a network storage location](/common-tasks/{{page.installation}}/#network-storage) for backups. - - [Change the default location](/common-tasks/{{page.installation}}/#change-default-backup-location) for backups. +1. Under {% my supervisor_backups title="**Settings** > **System** > **Backups**" %}, select **Show all backups**. +2. To select one backup, on the list, single-click or tap the backup of interest. + - To select multiple backups, select the {% icon "mdi:order-checkbox-ascending" %} button. +3. In the dialog, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Download backup**. + - **Result**: The selected backup is stored in the **Downloads** folder of your computer. -- **Option 4**: Or even better, create an automation to handle that, using one of the [backup actions](/integrations/hassio/#action-hassiobackup_full). -- **Option 5**: Make use of a third-party add-on: - - [Google Drive Backup](https://github.com/sabeechen/hassio-google-drive-backup) - - [OneDrive Backup](https://github.com/lavinir/hassio-onedrive-backup) - - [Nextcloud Backup](https://github.com/Sebclem/hassio-nextcloud-backup) - - [Remote Backup (scp/rsync/rclone)](https://github.com/ikifar2012/remote-backup-addon) - - [Samba backup](https://github.com/thomasmauerer/hassio-addons/tree/master/samba-backup) - - [Syncthing](https://github.com/Poeschl/Hassio-Addons/tree/main/syncthing) +**Option 2**: Copy backups from the backups folder: + +1. If you haven't already done so, [configure access to files on Home Assistant](/common-tasks/{{page.installation}}/#configuring-access-to-files), using one of the methods listed there. + - For example, [use the samba add-on](/common-tasks/{{page.installation}}/#installing-and-using-the-samba-add-on). +2. In your file explorer, access Home Assistant, open the `backup` folder and copy the file to your computer. + +### Downloading a backup from Home Assistant Cloud + +If you were logged in to Home Assistant Cloud and had Cloud backup enabled when creating a backup, your last backup is stored on Home Assistant Cloud. + +1. To download the backup, log in to your [Home Assistant Cloud account](https://account.nabucasa.com/). +2. Under **Stored files**, you can see the latest available backup file. Select the download button. + +### Deleting obsolete backups + +If you defined an automatic backup and backup purge schedule, old backups are deleted automatically. However, you might still have some old backups around that you want to delete. + +To delete old backups, follow these steps: + +1. Under {% my supervisor_backups title="**Settings** > **System** > **Backups**" %}, select **Show all backups**. +2. To delete one backup, on the list, select the backup of interest. + - Select the three dots {% icon "mdi:dots-vertical" %} menu and select **Delete** +3. To delete multiple backups, select the {% icon "mdi:order-checkbox-ascending" %} button. + - From the list of backups, select all the ones you want to delete and select **Delete selected**. + - {% icon "mdi:information-outline" %} Consider keeping at least one recent backup for recovery purposes. ### Restoring a backup There are two ways to use a backup: - On your current system to recover your settings. -- During onboarding, to migrate your setup to a new device or a to device on which you performed a factory reset and a new installation. +- During onboarding, to migrate your setup to a new device or to device on which you performed a factory reset. #### Estimated duration @@ -89,16 +146,17 @@ You can use a backup during the onboarding process to restore your configuration - This procedure assumes you have already completed the [installation](/installation/) procedure on your target device and are now viewing the welcome screen as part of the [onboarding](/getting-started/onboarding/). - The login credentials of the device from which you made the backup. +- The [backup emergency kit](/more-info/backup-emergency-kit/) that contains the key needed to decrypt the backup. - **Required storage capacity**: If you migrate the installation to a new device, make sure the new device has more storage capacity than the existing device. - - Before migrating, on the old system, check how much storage you used. - - Go to **{% my system_health title="Settings > System > Repairs -> ... -> System Information" %}**, and under **Home Assistant Supervisor**, look at the **Disk used** value. - - The target device must have more free space than the source device. - - If your target device is a Home Assistant Yellow, note that it is the size of the eMMC that is relevant. - - The restore process mainly uses the eMMC, not the NVMe. - - The size of the backup file is no indication of the size of your installation. To know the size of your installation, you need to check the **Disk used** value mentioned above. + - Before migrating, on the old system, check how much storage you used. + - Go to **{% my system_health title="Settings > System > Repairs > ... > System Information" %}**, and under **Home Assistant Supervisor**, look at the **Disk used** value. + - The target device must have more free space than the source device. + - If your target device is a Home Assistant Yellow, note that it is the size of the eMMC that is relevant. + - The restore process mainly uses the eMMC, not the NVMe. + - The size of the backup file is no indication of the size of your installation. To know the size of your installation, you need to check the **Disk used** value mentioned above. - If you are migrating to a new device: - - You do not need to transfer the backup to a USB or SD card to bring it to your device. - - You will be able to upload the backup file from the device you are accessing the onboarding from. + - You do not need to transfer the backup to a USB or SD card to bring it to your device. + - You will be able to upload the backup file from the device you are accessing the onboarding from. ##### To restore a backup during onboarding @@ -108,25 +166,32 @@ You can use a backup during the onboarding process to restore your configuration - Then, select **Upload backup**. - The file explorer opens on the device on which you are viewing the Home Assistant User interface. - You can access any connected network drive from there. -3. Select the backup file, then, in the dialog, select **Full backup** and **Restore**. +3. Select the backup file, then, in the dialog, select all parts you want to restore. + - Your current system will be overwritten with the parts that you choose to restore. + - If you want to restore the complete configuration with all directories and add-ons, select everything. +4. Under **Backup password**, enter the encryption key stored in the [backup emergency kit](/more-info/backup-emergency-kit/). +5. To start the process, select **Restore**. - The restore may take a while, depending on the amount of data. - To see if the restore is complete, reload the page from time to time. - If your previous installation had certificates enabled directly for the [`http` integration](/integrations/http), when the restore is complete, it will no longer respond to `http://` requests. In this case, use `https://` (added `s`) instead. -4. On the login screen, enter the credentials of the system from which you took the backup. +6. On the login screen, enter the credentials of the system from which you took the backup. + - The login password and username must match the ones you used at the time the backup was taken. - Your dashboard should show all the elements as they were when you created the backup. - - If some devices are shown as unavailable, you may need to wake the battery powered devices. -5. If you had [network storage](/common-tasks/os/#network-storage) connected on the previous system, you may need to reconnect those. -6. If you had Zigbee devices, and you migrated to a new device with its own Zigbee radio built-in: + - If some devices are shown as unavailable, you may need to wake the battery-powered devices. +7. If you had [network storage](/common-tasks/os/#network-storage) connected on the previous system, you may need to reconnect those. +8. If you had Zigbee devices, and you migrated to a new device with its own Zigbee radio built-in: - Because this is now a different Zigbee radio, you need to [migrate Zigbee](/integrations/zha/#migrating-to-a-new-zigbee-coordinator-adapter-inside-zha). #### To restore a backup on your current system 1. Go to **{% my backup title="Settings > System > Backups" %}**. 2. From the list of backups, select the backup from which you want to restore. -3. If you want to restore the complete configuration with all directories and add-ons, select **Full backup**. -4. If you only want to restore specific elements, select **Partial backup**. - - From the list, select the installation, folders, and add-ons you want to restore. -5. Select **Restore**. - - This may take a while, depending on how much you have to compress or decompress. -6. Once the restore is complete, Home Assistant restarts to apply the new settings. +3. Select what to restore: + - Your current system will be overwritten with the parts that you choose to restore. + - If you want to restore the complete configuration with all directories and add-ons, select everything. + - If you only want to restore specific elements, only select the folders and add-ons you want to restore. +4. Select **Restore**. + - This may take a while, depending on how much there is to compress or decompress. +5. Once the restore is complete, Home Assistant restarts to apply the new settings. - You will lose the connection to the UI and it will return once the restart is completed. +6. On the login screen, enter the password and username as they were at the time the backup was taken. diff --git a/source/_includes/common-tasks/data_disk.md b/source/_includes/common-tasks/data_disk.md index 0909abd5200..e1c7257d011 100644 --- a/source/_includes/common-tasks/data_disk.md +++ b/source/_includes/common-tasks/data_disk.md @@ -66,7 +66,7 @@ This can be an option if the following elements apply to your use case: - You have another, new, Home Assistant instance (system 2). - You now want to use the data disk of system 1 on system 2 instead. -The aim is to migrate the data from system 1 to system 2. One way to do this is by [restoring a backup](/common-tasks/os/#restoring-a-backup). The other way is to move the data disk. This can be an interesting option if you have a large amount of data on your external disk or if your external disk has more storage capacity than your new system. +The aim is to migrate the data from system 1 to system 2. One way to do this is by [restoring a backup](/common-tasks/general/#restoring-a-backup). The other way is to move the data disk. This can be an interesting option if you have a large amount of data on your external disk or if your external disk has more storage capacity than your new system. #### Prerequisites @@ -77,7 +77,7 @@ The aim is to migrate the data from system 1 to system 2. One way to do this is To migrate an external data disk from one system to another, follow these steps: -1. [Create a backup](/common-tasks/os/#backups) of both systems and store these backups on another system (not strictly necessary, but recommended just in case, at least for the important data). +1. [Create a backup](/common-tasks/general/#backups) of both systems and store these backups on another system (not strictly necessary, but recommended just in case, at least for the important data). 2. Shut down system 1 and remove the data disk. 3. Make sure system 2 has Home Assistant OS installed, and Home Assistant is up and running. Home Assistant is using the data disk (partition) on the boot drive (e.g. SD card) at this point. 4. Make sure system 2 has completed the basic [onboarding](/getting-started/onboarding/) steps, including the last steps where devices are discovered automatically. diff --git a/source/_includes/common-tasks/network_storage.md b/source/_includes/common-tasks/network_storage.md index 6b1895cb275..45e49c6df28 100644 --- a/source/_includes/common-tasks/network_storage.md +++ b/source/_includes/common-tasks/network_storage.md @@ -71,31 +71,21 @@ Server: {% configuration_basic "hassio.network_share.usage" %} Backup: - description: This will become a target. You can use it in service calls or when manually creating a backup. The first storage you add of this type becomes your new default target. If you want to change the default target, [check out the documentation below](#change-default-backup-location). + description: This will become a target. You can use it when creating an automatic or manual backup. The first storage you add of this type becomes your new default target. If you want to change the default target, [check out the documentation below](#change-default-local-backup-location). Media: description: A new directory with the name you gave your network storage will be created under `/media`. This directory can be accessed by Home Assistant and add-ons. Share: description: A new directory with the name you gave your network storage will be created under `/share`. This directory can be accessed by Home Assistant and add-ons. {% endconfiguration_basic %} -### Change default backup location +### Change default local backup location -By default, the first network storage of type **Backup** that you add will be set as your default backup target. +By default, the first network storage of type **Backup** that you add is used as your local default backup location. -If you want to change the default backup target, you can do the following: +If you want to change the local network storage that is used to store your backups, follow these steps: -1. Go to **{% my backup title="Settings > System > Backups" %}** in the UI. -2. Select the menu in the top right of the screen and select the **Change default backup location** option. -3. In the dialog, there is a single option to set the default backup target. -4. Choose the one you want from the list. -5. Select **Save**. - -This list will contain all the network storage targets you have added of usage type **Backup**. It also contains another option to set it back to use `/backup` again. - -

- - - - - Screenshot of changing the default backup target. -

+1. Go to **{% my backup title="Settings > System > Backups" %}**. +2. In the top-right corner, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Change local backup location**. +3. Select your preferred network location and save your changes. + ![Select default location used for local backup](/images/screenshots/network-storage/backup_select_local_default.png) +4. **Troubleshooting**: Don't see your external storage location? This list contains only the network storage targets you have added of type **Backup**. diff --git a/source/_includes/common-tasks/specific_version.md b/source/_includes/common-tasks/specific_version.md index fe9c4ab215e..69406162d8a 100644 --- a/source/_includes/common-tasks/specific_version.md +++ b/source/_includes/common-tasks/specific_version.md @@ -20,7 +20,7 @@ ha core update --version {{current_version}} --backup _The_ `--backup` _flag here ensures that you have a partial backup of your current setup in case you need to downgrade later._ -To downgrade your installation, do a [partial restore of a backup](/common-tasks/os/#backups) instead. +To downgrade your installation, do a [partial restore of a backup](/common-tasks/general/#backups) instead. {% elsif page.installation == "container" %} diff --git a/source/_includes/common-tasks/update.md b/source/_includes/common-tasks/update.md index 6d5c7087ade..14a6e9ad7be 100644 --- a/source/_includes/common-tasks/update.md +++ b/source/_includes/common-tasks/update.md @@ -1,6 +1,6 @@ Best practice for updating Home Assistant Core: -1. Backup your installation{% if page.installation == "os" or page.installation == "supervised" %}, using the [backup functionality](/common-tasks/os/#backups) Home Assistant offers{% endif %}. +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 %}. 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. diff --git a/source/_integrations/acaia.markdown b/source/_integrations/acaia.markdown index c9aea0d6b65..1ea74fc2461 100644 --- a/source/_integrations/acaia.markdown +++ b/source/_integrations/acaia.markdown @@ -18,6 +18,7 @@ ha_bluetooth: true ha_codeowners: - '@zweckj' ha_integration_type: device +ha_quality_scale: platinum --- The **Acaia** {% term integration %} allows you to control [Acaia](https://acaia.co/) scales through Home Assistant. diff --git a/source/_integrations/aemet.markdown b/source/_integrations/aemet.markdown index 3dce3858432..7dfef36bb88 100644 --- a/source/_integrations/aemet.markdown +++ b/source/_integrations/aemet.markdown @@ -10,6 +10,7 @@ ha_config_flow: true ha_domain: aemet ha_platforms: - diagnostics + - image - sensor - weather ha_integration_type: integration diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 9a3b285756d..21ea56f7103 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -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`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`, `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 @@ -416,6 +416,7 @@ The supported locales are: - `hi-IN` - `it-IT` - `ja-JP` +- `nl-NL` - `pt-BR` See [List of Capability Interfaces and Supported Locales][alexa-supported-locales]. diff --git a/source/_integrations/backup.markdown b/source/_integrations/backup.markdown index 3a4b2acc437..5acb2fe5a3b 100644 --- a/source/_integrations/backup.markdown +++ b/source/_integrations/backup.markdown @@ -11,25 +11,25 @@ ha_codeowners: ha_iot_class: Calculated ha_integration_type: system related: - - docs: /installation/#advanced-installation-methods - title: Home Assistant installation methods + - docs: /common-tasks/general/#backups + title: Backups - docs: /getting-started/onboarding/ title: Recover from backup during onboarding - - docs: /docs/configuration/ - title: Configuration file - - docs: /common-tasks/os/#restoring-a-backup - title: Home Assistant Operating System- Restoring a backup + - docs: /more-info/backup-emergency-kit/ + title: backup emergency kit --- -The **Backup** {% term integration %} is used for {% term "Home Assistant Core" %} and {% term "Home Assistant Container" %} installations to create and download backups. This backup file can be used if you migrate to {% term "Home Assistant Operating System" %}. +The **Backup** {% term integration %} is used by all [installation types](/installation/#advanced-installation-methods) to create and restore backups. -Note: If you use {% term "Home Assistant Operating System" %} or {% term "Home Assistant Supervised" %} installation, this page is not for you. Instead, refer to the documentation on using the [built-in back up](/common-tasks/os/#backups). +To learn how to create and restore a backup, refer to the backup section under [common tasks](/common-tasks/general/#backups). ## Actions The **Backup** integration exposes an action that can be used to automate the backup process. +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" %} The {% my developer_call_service service="backup.create" %} action can be used @@ -61,20 +61,4 @@ automation: ## Restoring a backup -Backups created via the **Backup** integration are in a subdirectory `backups`, located in your [configuration directory](/docs/configuration/#editing-configurationyaml). -The {% term "Home Assistant Container" %} installation typically mounts this directory via `docker-compose.yml` or `docker run` to a directory of your choice. - -The steps on recovering from a backup depend on the installation type and use case. Follow one of these steps: - -1. If you use {% term "Home Assistant Operating System" %} or {% term "Home Assistant Supervised" %}: - - Follow the steps described in [Restoring a backup](/common-tasks/os/#restoring-a-backup). -2. If you use a {% term "Home Assistant Core" %} or {% term "Home Assistant Container" %} installation: - - A Home Assistant backup is just a tar file of the [configuration directory](/docs/configuration/#editing-configurationyaml), plus some metadata. - - To manually restore a backup, use the following command: - - ```shell - tar -xOf "./homeassistant.tar.gz" | tar --strip-components=1 -zxf - -C - ``` - -3. If you migrate from a {% term "Home Assistant Core" %} or {% term "Home Assistant Container" %} installation to {% term "Home Assistant Operating System" %}: - - You can use these backup files during [onboarding](/getting-started/onboarding/) to recover your installation from backup. +To restore a backup, follow the steps described in [Restoring a backup](/common-tasks/general/#restoring-a-backup). diff --git a/source/_integrations/bang_olufsen.markdown b/source/_integrations/bang_olufsen.markdown index ec92d023b3c..baf66548185 100644 --- a/source/_integrations/bang_olufsen.markdown +++ b/source/_integrations/bang_olufsen.markdown @@ -285,15 +285,70 @@ data: ### Custom actions -The Bang & Olufsen integration additionally supports different custom actions +The Bang & Olufsen integration additionally supports different custom actions for Beolink. + +[Beolink](https://support.bang-olufsen.com/hc/en-us/articles/4411572883089-What-is-Beolink-Multiroom) is Bang & Olufsen's advanced multiroom audio solution. This integration supports Home Assistant's `media_player` grouping, but to fully benefit from Beolink, such as being able to join legacy devices not added in Home Assistant, custom actions have been defined. + +Attempting to execute an invalid Beolink action will result in either a Home Assistant error or an audible error indication from your device. #### `bang_olufsen.beolink_join` Join a Beolink experience. -| Action data attribute | Optional | Description | -| --------------------- | -------- | ------------------------------------- | -| `beolink_jid` | yes | Manually specify Beolink JID to join. | +| Action data attribute | Optional | Description | +| --------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `beolink_jid` | yes | Manually specify Beolink JID to join. | +| `source_id` | yes | Specify which source to join, behavior varies between hardware platforms. Source names prefaced by a platform name can only be used when connecting to that platform. For example "ASE Beoradio" can only be used when joining an ASE device, while ”ASE / Mozart Deezer” can be used with ASE or Mozart devices. A defined Beolink JID is required. | + +##### Join a currently active beolink experience or device playing compatible source + +```yaml +action: bang_olufsen.beolink_join +target: + entity_id: media_player.beosound_balance_12345678 +``` + +Repeatedly calling this will cycle through available devices. + +Will also be triggered by calling the `media_player.join` action with an empty list of `group_members`: + +```yaml +action: media_player.join +target: + entity_id: media_player.beosound_balance_12345678 +data: + group_members: +``` + +##### Join a specific active beolink experience + +```yaml +action: bang_olufsen.beolink_join +target: + entity_id: media_player.beosound_balance_12345678 +data: + beolink_jid: 1111.2222222.33333333@products.bang-olufsen.com +``` + +##### Join the "radio" source on a Beolink Converter NL/ML + +```yaml +action: bang_olufsen.beolink_join +target: + entity_id: media_player.beosound_balance_12345678 +data: + beolink_jid: 1111.2222222.33333333@products.bang-olufsen.com + source_id: radio +``` + +A limited selection of `source_id`s are available. The below table shows which `source_id` can be joined on which hardware platform: + +| Hardware platform | Compatible source_ids | +| ----------------------- | ------------------------------------------ | +| ASE | `beoradio` | +| ASE and Mozart | `deezer`, `spotify` | +| Mozart | `tidal` | +| Beolink Converter NL/ML | `radio`, `tp1`, `tp2`, `cd`, `aux_a`, `ph` | #### `bang_olufsen.beolink_expand` @@ -304,6 +359,62 @@ Expand current Beolink experience. | `all_discovered` | yes | Expand Beolink experience to all discovered devices. | | `beolink_jids` | yes | Specify which Beolink JIDs will join current Beolink experience. | +##### Expand an active Beolink experience to all other devices discovered by the defined device + +```yaml +action: bang_olufsen.beolink_expand +target: + entity_id: media_player.beosound_balance_12345678 +data: + all_discovered: true +``` + +##### Expand an active Beolink experience to a specific device + +```yaml +action: bang_olufsen.beolink_expand +target: + entity_id: media_player.beosound_balance_12345678 +data: + beolink_jids: + - 1111.2222222.33333333@products.bang-olufsen.com +``` + +Will also be triggered by calling the `media_player.join` action, with the entity_id of a `media_player` entity from this integration in `group_members`: + +```yaml +action: media_player.join +target: + entity_id: media_player.beosound_balance_12345678 +data: + group_members: + - media_player.beosound_balance_33333333 +``` + +##### Expand an active Beolink experience to specific devices + +```yaml +action: bang_olufsen.beolink_expand +target: + entity_id: media_player.beosound_balance_12345678 +data: + beolink_jids: + - 1111.2222222.33333333@products.bang-olufsen.com + - 4444.5555555.66666666@products.bang-olufsen.com +``` + +Will also be triggered by calling the `media_player.join` action, with the entity_ids of `media_player` entities from this integration in `group_members`: + +```yaml +action: media_player.join +target: + entity_id: media_player.beosound_balance_12345678 +data: + group_members: + - media_player.beosound_balance_33333333 + - media_player.beosound_balance_66666666 +``` + #### `bang_olufsen.beolink_unexpand` Unexpand from current Beolink experience. @@ -312,14 +423,61 @@ Unexpand from current Beolink experience. | --------------------- | -------- | ---------------------------------------------------------------------- | | `beolink_jids` | no | Specify which Beolink JIDs will leave from current Beolink experience. | +##### Remove a device from an active Beolink experience + +```yaml +action: bang_olufsen.beolink_unexpand +target: + entity_id: media_player.beosound_balance_12345678 +data: + beolink_jids: + - 1111.2222222.33333333@products.bang-olufsen.com +``` + +##### Remove devices from an active Beolink experience + +```yaml +action: bang_olufsen.beolink_unexpand +target: + entity_id: media_player.beosound_balance_12345678 +data: + beolink_jids: + - 1111.2222222.33333333@products.bang-olufsen.com + - 4444.5555555.66666666@products.bang-olufsen.com +``` + #### `bang_olufsen.beolink_leave` Leave a Beolink experience. +##### Action usage example + +```yaml +action: bang_olufsen.beolink_leave +target: + entity_id: media_player.beosound_balance_12345678 +``` + +Same behavior as calling the `media_player.unjoin` action: + +```yaml +action: media_player.unjoin +target: + entity_id: media_player.beosound_balance_12345678 +``` + #### `bang_olufsen.beolink_allstandby` Set all connected Beolink devices to standby. +##### Action usage example + +```yaml +action: bang_olufsen.beolink_allstandby +target: + entity_id: media_player.beosound_balance_12345678 +``` + ## Automations WebSocket notifications received from the device are fired as events in Home Assistant. These can be received by listening to `bang_olufsen_websocket_event` event types, where `device_id` or `serial_number` can be used to differentiate devices. diff --git a/source/_integrations/bmw_connected_drive.markdown b/source/_integrations/bmw_connected_drive.markdown index f531a9148d5..d9455794649 100644 --- a/source/_integrations/bmw_connected_drive.markdown +++ b/source/_integrations/bmw_connected_drive.markdown @@ -117,11 +117,22 @@ This {% term integration %} provides the following {% term platforms %}: {% warning %} Every platform except **binary sensors** and **sensors** can change the state of your vehicle. Once you change the state in Home Assistant, a command is sent to your car. +{% endwarning %}   -**Use with care!** -{% endwarning %} +{% important %} +The `North America` and `Rest of world` regions require a captcha challenge to be solved, i.e. you need to verify that you are a human. +After entering your login data, a second step will ask for a `Captcha token` and provide you with a link to a website. +Please open this link, solve the "are you a human?" challenge and press `Submit`. +Copy the resulting token into Home Assistant and continue. + +No data of your Home Assistant instance is shared with any third party during this step. +{% endimportant %} + +{% note %} +For `china`, it is mandatory to prefix your username/phone number with `86`, i.e. `8612345678`. +{% endnote %} ### Notifications diff --git a/source/_integrations/cambridge_audio.markdown b/source/_integrations/cambridge_audio.markdown index a52567c4825..e6ada106d95 100644 --- a/source/_integrations/cambridge_audio.markdown +++ b/source/_integrations/cambridge_audio.markdown @@ -17,6 +17,7 @@ ha_codeowners: ha_config_flow: true ha_integration_type: device ha_zeroconf: true +ha_quality_scale: platinum --- The **Cambridge Audio** {% term integration %} allows you to control all receivers and streamers that support the [StreamMagic](https://www.cambridgeaudio.com/usa/en/products/streammagic) app. @@ -104,6 +105,12 @@ data: media_content_type: "internet_radio" media_content_id: "https://example.com/internet-radio/station_abcd.mp3" ``` + +## Browsing media + +The Cambridge Audio integration allows you to browse saved presets from your dashboard. +All stored presets will be categorized into playlists, artists, and tracks. + ## Troubleshooting ### The buttons to skip, shuffle, and repeat the track are missing diff --git a/source/_integrations/cookidoo.markdown b/source/_integrations/cookidoo.markdown new file mode 100644 index 00000000000..1eb892719d0 --- /dev/null +++ b/source/_integrations/cookidoo.markdown @@ -0,0 +1,76 @@ +--- +title: Cookidoo +description: Instructions on how to integrate the Cookidoo todo list with Home Assistant. +ha_category: + - To-do list +ha_iot_class: Cloud Polling +ha_release: 2025.1 +ha_config_flow: true +ha_codeowners: + - '@miaucl' +ha_domain: cookidoo +ha_integration_type: service +ha_platforms: + - todo +related: + - docs: /integrations/todo + title: To-do list integration documentation + - docs: /integrations/#to-do-list + title: List of to-do list integrations + - docs: /dashboards/todo-list/ + title: To-do list card + - url: https://cookidoo.international/ + title: Cookidoo the official Thermomix recipe platform + - url: https://www.vorwerk.com/ + title: Vorwerk GmbH +ha_quality_scale: silver +--- + +The **Cookidoo** {% term integration %} allows you to interact with your shopping lists of [Cookidoo the official Thermomix recipe platform](https://cookidoo.international/) within Home Assistant. + +{% configuration_basic %} +Email: + description: "Enter the email address associated with your Cookidoo." +Password: + description: "Enter the password for your Cookidoo account." +Localization: + description: "Select the language and country for your Cookidoo account (e.g., English - United States)." +{% endconfiguration_basic %} + +{% include integrations/config_flow.md %} + +## To-do lists + +This integration provides two non-sortable to-do lists: + +1. **Shopping list** + - Contains ingredients from recipes + - Items can only be `checked` + - Items cannot be `created`, `deleted`, or `renamed` + +2. **Additional purchases** + - Contains user-added items to purchase + - Items can be `created`, `deleted`, and `updated` + - Items do not have a `description` field + +For example, if you add a pasta recipe, ingredients like "500g pasta" and "2 tomatoes" will appear in your "Shopping list". You can check these items off as you shop, but you cannot modify the label. + +In contrast, in your "Additional purchases" list, you can freely add items like "Kitchen towels" or "Dish soap", and modify or remove them as needed. + +## Known Limitations + +{% important %} +As Cookidoo cannot share shopping lists between accounts and everybody interacting with it uses the same credentials, make sure you protect your credentials accordingly. All users of your Home Assistant instance will have access to the same Cookidoo account. +{% endimportant %} + +The Home Assistant to-do list interface allows both renaming items and changing their state. However, for the "Shopping list", only state changes (checking/unchecking items) are supported. Any attempts to rename items will not be saved. + +## Data updates + +The Cookidoo integration fetches data from the device every 90 seconds by default. + +## Remove integration + +This integration follows standard integration removal, no extra steps are required. + +{% include integrations/remove_device_service.md %} diff --git a/source/_integrations/devolo_home_control.markdown b/source/_integrations/devolo_home_control.markdown index 7588b7735ad..19936d6c57e 100755 --- a/source/_integrations/devolo_home_control.markdown +++ b/source/_integrations/devolo_home_control.markdown @@ -33,7 +33,17 @@ ha_integration_type: hub {% include integrations/config_flow.md %} -Please do not change the URL provided in the advanced mode unless you know what you are doing. +{% configuration_basic %} +Email / mydevolo ID: + description: "Email address you used to register the central unit at mydevolo." +Password: + description: "Password of your mydevolo account." +{% endconfiguration_basic %} + +{% note %} +Your mydevolo account is only used to acquire local credentials. Afterward, communication is completely local as long as the gateway is within the same network. +{% endnote %} + ## Supported devices and functions diff --git a/source/_integrations/eastron.markdown b/source/_integrations/eastron.markdown index 233d3baba7a..826ea9fd210 100644 --- a/source/_integrations/eastron.markdown +++ b/source/_integrations/eastron.markdown @@ -18,6 +18,7 @@ ha_platforms: - sensor - switch ha_iot_class: Local Polling +ha_dhcp: true ha_zeroconf: true --- diff --git a/source/_integrations/easyenergy.markdown b/source/_integrations/easyenergy.markdown index 6f9c111d98d..f7f9ab43472 100644 --- a/source/_integrations/easyenergy.markdown +++ b/source/_integrations/easyenergy.markdown @@ -13,7 +13,7 @@ ha_domain: easyenergy ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: service --- The **easyEnergy** {% term integration %} integrates the [easyEnergy](https://www.easyenergy.com) API platform with Home Assistant. @@ -228,4 +228,4 @@ template: This integration follows standard integration removal steps. If you also use the template sensors, you need to remove them manually. -{% include integrations/remove_device_service.md %} \ No newline at end of file +{% include integrations/remove_device_service.md %} diff --git a/source/_integrations/eheimdigital.markdown b/source/_integrations/eheimdigital.markdown new file mode 100644 index 00000000000..9bed232ff50 --- /dev/null +++ b/source/_integrations/eheimdigital.markdown @@ -0,0 +1,47 @@ +--- +title: EHEIM Digital +description: Instructions on how to set up EHEIM Digital with Home Assistant. +ha_category: + - Light +ha_release: 2025.1 +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@autinerd' +ha_domain: eheimdigital +ha_integration_type: hub +ha_platforms: + - light +ha_quality_scale: bronze +ha_zeroconf: true +--- + +The **EHEIM Digital** {% term integration %} allows you to control your [EHEIM Digital](https://eheim.com/en_GB/aquatics/eheim-digital/) smart aquarium devices from Home Assistant. + +{% include integrations/config_flow.md %} + +{% configuration_basic %} +Host: + description: "The IP address or hostname of your EHEIM Digital main device. Defaults to `eheimdigital.local`, an IP address should only be necessary if the hostname doesn't work." + required: true + type: string +{% endconfiguration_basic %} + +## Supported devices and entities + +Currently, the following devices and entities are supported: + +### [EHEIM classicLEDcontrol+e](https://eheim.com/en_GB/aquatics/technology/lighting-control/classicledcontrol-e/classicledcontrol-e) + +#### Lights + +- **Brightness**: Controlling the brightness of both light channels +- **Daycycle mode effect**: Automatically controls the brightness based on the daytime as configured on the device + +Support for additional EHEIM Digital devices and entities will be added in future updates. + +## Remove integration + +This integration follows standard integration removal, no extra steps are required. + +{% include integrations/remove_device_service.md %} diff --git a/source/_integrations/energyzero.markdown b/source/_integrations/energyzero.markdown index 457d389a488..bb7b9b5709f 100644 --- a/source/_integrations/energyzero.markdown +++ b/source/_integrations/energyzero.markdown @@ -12,7 +12,7 @@ ha_domain: energyzero ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: service --- The **EnergyZero** {% term integration %} integrates the [EnergyZero](https://www.energyzero.nl/) API platform with Home Assistant. diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown index f6cf96847ee..40740524122 100644 --- a/source/_integrations/enphase_envoy.markdown +++ b/source/_integrations/enphase_envoy.markdown @@ -132,6 +132,11 @@ For Enphase Ensemble systems with the Enpower/IQ System Controller and Encharge/ - Metering status for storage CT (aggregate and phase) - Count of meter status flags active storage CT (aggregate and phase) +For system with both older type ACB batteries and Encharge/IQ Batteries: + +- 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. + *: 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. **: 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. 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/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 aafecc51471..1772f39e6a2 100644 --- a/source/_integrations/fyta.markdown +++ b/source/_integrations/fyta.markdown @@ -13,6 +13,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/govee_ble.markdown b/source/_integrations/govee_ble.markdown index 3b3d42b25ea..a020e2f3fe9 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 4cdc1cae0c7..b46f2b405d3 100644 --- a/source/_integrations/habitica.markdown +++ b/source/_integrations/habitica.markdown @@ -86,8 +86,8 @@ Verify SSL certificate: - **Mana**: Displays the current mana points of your character (for example, "61 MP"). - **Max. mana**: Indicates the maximum mana points your character can have at the current level (for example, "70 MP"). - **Next level**: Indicates the remaining experience points needed to reach the next level (for example, "440 XP"). -- **Ha Dispbits**: Shows the number of habits being tracked (for example, "4 tasks"). -- **Rewards**:lays the rewards that can be redeemed (for example, "1 task") +- **Habits**: Shows the number of habits being tracked (for example, "4 tasks"). +- **Rewards**: Displays the rewards that can be redeemed (for example, "1 task") - **Gems**: Shows the total number of gems currently owned by your Habitica character, used for purchasing items and customizations. - **Mystic hourglasses**: Displays the number of mystic hourglasses earned as a subscriber, which can be redeemed for exclusive items from past events. - **Strength, intelligence, constitution, perception**: Display your character's attribute points (stats). The sensors' attributes provide a breakdown of contributions from level, battle gear, class equip bonus, allocation, and buffs. diff --git a/source/_integrations/harvey.markdown b/source/_integrations/harvey.markdown new file mode 100644 index 00000000000..17c6f3266ba --- /dev/null +++ b/source/_integrations/harvey.markdown @@ -0,0 +1,19 @@ +--- +title: Harvey +description: Integrate Harvey water softeners with Home Assistant using the AquaCell integration. +ha_category: + - Sensor +ha_domain: harvey +ha_release: 2025.1 +ha_integration_type: virtual +ha_supporting_domain: aquacell +ha_supporting_integration: AquaCell +ha_codeowners: + - '@Jordi1990' +ha_config_flow: true +ha_platforms: + - sensor +ha_iot_class: Cloud Polling +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/holiday.markdown b/source/_integrations/holiday.markdown index 5744366345c..824648b469d 100644 --- a/source/_integrations/holiday.markdown +++ b/source/_integrations/holiday.markdown @@ -21,6 +21,8 @@ It uses the Python module [holidays](https://pypi.org/project/holidays/) to inco A calendar entity has a state and attributes that represent the next upcoming event (only). A calendar trigger is a much more flexible way to power automations with fewer limitations than using the entity state. +Some countries provides additional categories to be configured besides the public holidays. See the details for each country in the [holidays](https://pypi.org/project/holidays/) library. If the country does not support additional categories, the option to configure categories will not be displayed. + {% include integrations/config_flow.md %} ## Holiday calendar automations diff --git a/source/_integrations/home_connect.markdown b/source/_integrations/home_connect.markdown index 5964b8e5d8b..54f380b9e66 100644 --- a/source/_integrations/home_connect.markdown +++ b/source/_integrations/home_connect.markdown @@ -35,7 +35,6 @@ The integration will add one Home Assistant device for each connected home appli - A power switch - If the device has programs: - - Switches for each of the individual programs will be added. Note that program options cannot be configured currently. - Two select entities that will allow you to select and start a program between the available ones. - A timestamp sensor for remaining time and a numeric sensor for the progress percentage. - Light: diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index 815550f059c..0d8c72b7bf3 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -160,7 +160,7 @@ homekit: required: false type: string linked_doorbell_sensor: - description: The `entity_id` of a `binary_sensor` or `event` entity to use as the doorbell sensor of the camera accessory to enable doorbell notifications. + description: The `entity_id` of a `binary_sensor` or `event` entity to use as the doorbell sensor of a `lock` or `camera` accessory to enable doorbell notifications. required: false type: string linked_humidity_sensor: @@ -421,7 +421,7 @@ The following integrations are currently supported: | fan | Fan | All fans that support `speed` and `speed_list` through value mapping: `speed_list` is assumed to contain values in ascending order. The numeric ranges of HomeKit map to a corresponding entry of `speed_list`. The first entry of `speed_list` should be equivalent to `off` to match HomeKit's concept of fan speeds. (Example: `speed_list` = [`off`, `low`, `high`]; `off` -> `<= 33`; `low` -> between `33` and `66`; `high` -> `> 66`) | | humidifier | HumidifierDehumidifier | Humidifier and Dehumidifier devices. | | light | Light | Support for `on / off`, `brightness` and `rgb_color`. | -| lock | DoorLock | Support for `lock / unlock`. | +| lock | DoorLock | Support for `lock / unlock`. A doorbell event / sensor can be linked with `linked_doorbell_sensor`. | | media_player | MediaPlayer | Represented as a series of switches which control `on / off`, `play / pause`, `play / stop`, or `mute` depending on `supported_features` of entity and the `mode` list specified in `entity_config`. | | media_player | TelevisionMediaPlayer | All media players that have `tv` as their `device_class`. Represented as Television and Remote accessories in HomeKit to control `on / off`, `play / pause`, `select source`, or `volume increase / decrease`, depending on `supported_features` of entity. Requires iOS 12.2/macOS 10.14.4 or later. | | media_player | ReceiverMediaPlayer | All media players that have `receiver` as their `device_class`. Represented as Receiver and Remote accessories in HomeKit to control `on / off`, `play / pause`, `select source`, or `volume increase / decrease`, depending on `supported_features` of entity. Requires iOS 12.2/macOS 10.14.4 or later. | diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown index 425a0607073..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 @@ -27,6 +28,7 @@ If your system is compatible with this integration, then you will be able access - [Climate](#climate) - [Sensor](#sensor) - [Switch](#switch) +- [Humidifier](#humidifier) {% include integrations/config_flow.md %} @@ -48,7 +50,7 @@ Other devices like Security systems are not currently supported by this integrat The climate platform integrates Honeywell US-based thermostats into Home Assistant, allowing control of the thermostat through the user interface. The current inside temperature, operating mode, and fan state are also displayed on the thermostat card. -All [climate actions](/integrations/climate) are supported except set_swing_mode. +All [climate actions](/integrations/climate) are supported except `set_swing_mode`. Due to the instability of the Honeywell total connect system, actions within automations should repeat until success similar to the following example: @@ -98,3 +100,39 @@ This integration will add a switch for the following: |Switch|Value| --- | --- |Emergency Heat | Activates second stage heat source as primary heat| + +## Humidifier + +If the discovered device supports humidity control, the integration will add a humidifier and/or dehumidifier for each device. + +### Available Actions + +| Action | Description | +|--------|-------------| +| `humidifier.set_humidity` | Set target humidity level | +| `humidifier.turn_on` | Enable humidity control | +| `humidifier.turn_off` | Disable humidity control | +| `humidifier.toggle` | Toggle humidity control | + +For more details, see the [humidifier](/integrations/humidifier) integration documentation. + +### Configuration Example + +```yaml +# Example configuration.yaml entry +automation: + - alias: "Maintain Comfortable Humidity" + trigger: + - platform: numeric_state + entity_id: sensor.indoor_humidity + below: 30 # Trigger when humidity drops below 30% + action: + - service: humidifier.turn_on + target: + entity_id: humidifier.living_room + - service: humidifier.set_humidity + target: + entity_id: humidifier.living_room + data: + humidity: 35 # Set target humidity to 35% (recommended for comfort) +``` 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/idasen_desk.markdown b/source/_integrations/idasen_desk.markdown index db6fb5c11f0..fd479a02247 100644 --- a/source/_integrations/idasen_desk.markdown +++ b/source/_integrations/idasen_desk.markdown @@ -12,7 +12,7 @@ ha_platforms: - button - cover - sensor -ha_integration_type: integration +ha_integration_type: device ha_codeowners: - '@abmantis' --- diff --git a/source/_integrations/image_upload.markdown b/source/_integrations/image_upload.markdown index 7bb4d212467..89f71e13258 100644 --- a/source/_integrations/image_upload.markdown +++ b/source/_integrations/image_upload.markdown @@ -2,6 +2,7 @@ title: Image upload description: The image upload integration handle image assets in Home Assistant. ha_category: + - Media source - Other ha_release: 0.115 ha_codeowners: @@ -14,6 +15,8 @@ ha_integration_type: system The **Image upload** {% term integration %} allows Home Assistant to handle image assets in Home Assistant, for example, the profile photos of your systems account. +Uploaded images are also viewable in the media browser. + ## Configuration This integration is by default enabled, unless you've disabled or removed the diff --git a/source/_integrations/iotty.markdown b/source/_integrations/iotty.markdown index 52b85e19e19..d596ed9262e 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: diff --git a/source/_integrations/iron_os.markdown b/source/_integrations/iron_os.markdown index 30281656242..5d07a6719c3 100644 --- a/source/_integrations/iron_os.markdown +++ b/source/_integrations/iron_os.markdown @@ -2,7 +2,9 @@ title: IronOS description: Instructions on how to integrate IronOS-based Pinecil V2 devices with Home Assistant. ha_category: + - Binary sensor - Number + - Select - Sensor - Update ha_iot_class: Local Polling @@ -13,7 +15,9 @@ ha_codeowners: ha_domain: iron_os ha_integration_type: integration ha_platforms: + - binary_sensor - number + - select - sensor - update --- @@ -51,6 +55,10 @@ Home Assistant will detect nearby IronOS devices. Discovered devices will show u - **Setpoint temperature:** Allows to set the desired target temperature for the soldering iron tip. +## Binary sensors + +- **Soldering tip:** Indicates whether a soldering tip is currently connected to the device. + ## Sensors - **Tip temperature:** Monitors the current temperature of the soldering iron tip. @@ -71,6 +79,49 @@ Home Assistant will detect nearby IronOS devices. Discovered devices will show u - **Firmware:** The update entity indicates if the firmware is up-to-date or if there is a newer IronOS version available for your device. For more information on how to update your device, please refer to the [IronOS documentation](https://ralim.github.io/IronOS/). +## Device settings and configuration + +The following controls allow you to customize the settings and options for your soldering device. Some controls are deactivated by default, as they are either advanced settings, less critical, or usually do not require adjustment. + +### Basic settings + +- **Boost temperature:** Sets the temperature for boost mode, which temporarily overrides the soldering temperature when the front button is held down. +- **Sleep temperature:** The temperature the device drops to after a specified period of inactivity (no movement or button presses). +- **Sleep timeout:** The duration of inactivity required before the device enters sleep mode and drops to the sleep temperature. + +- **Long-press temperature step:** The temperature adjustment increment when holding down a button. Defaults to 10°. +- **Short-press temperature step:** The temperature adjustment increment when briefly pressing a button. Defaults to 1°. +- **Motion sensitivity:** Controls how sensitive the device is to movement. Higher values increase sensitivity (for example, 0 = motion detection is off). +- **Hall effect sensitivity:** Configures the sensitivity of the hall effect sensor (if present) for detecting a magnet to activate sleep mode. +- **Display brightness:** Adjusts the brightness of the soldering iron's display. +- **Button locking mode:** Configures whether buttons can be locked to prevent accidental presses, with options for disabled, full locking, or boost only. +- **Display orientation mode:** Sets the display orientation with options for left-handed, right-handed, or automatic adjustment. +- **Startup behavior:** Defines the mode the device enters on power-up: disabled, sleeping mode, idle mode (heat-off until moved), or soldering mode. + +### User interface settings + +- **Scrolling speed:** Adjusts the speed of the description text scrolling in the menu, with options for slow or fast. +- **Temperature display unit:** Sets the unit for displaying temperature as Celsius (C°) or Fahrenheit (F°). +- **Animation speed:** Adjusts the pace of icon animations in the menu, with options for off, slow, medium, or fast. +- **Boot logo duration:** Sets the duration for the boot logo, with options for off, 1–5 seconds, or loop. + +### Power management + +- **Keep-awake pulse duration:** Specifies the duration of the power pulse to keep connected power banks awake. Shorter durations minimize power waste and unnecessary heating. +- **Keep-awake pulse delay:** Adjusts the interval between power pulses. Longer delays reduce unwanted heating, but must be short enough to prevent the power bank from shutting off. +- **Keep-awake pulse intensity:** Enables and sets the wattage of the power pulse. The power pulse briefly activates the heater to draw sufficient power, preventing connected power banks from entering sleep mode. +- **Power source:** Sets the power source type, with options for an external power supply or 3S to 6S battery configurations. +- **Min. voltage per cell:** Sets the minimum voltage per battery cell before shutdown. This value is multiplied by the cell count (for example, 3S: 3–3.7V, 4–6S: 2.4–3.7V). +- **Power Delivery timeout:** Defines how long the firmware will attempt to negotiate USB-PD before switching to Quick Charge. Lower values are recommended for faster PD negotiation. +- **Power limit:** Sets a custom wattage cap for the device to maintain the **average** power below this value. Note: Peak power cannot be controlled. When using USB-PD, the limit will be the lower of this setting and the power supply's advertised wattage. +- **Quick Charge voltage:** Adjusts the maximum voltage for Quick Charge negotiation. Does not affect USB-PD. Ensure the setting aligns with the current rating of your power supply for safety. + +### Advanced settings + +These settings are intended for technically experienced users and require careful consideration before changes. + +- **Voltage divider:** Fine-tunes the measured voltage to account for variations in the voltage sense resistors between units. +- **Calibration offset:** Adjusts the calibration of the thermocouple measurements, which determine the temperature displayed for the tip. ## Automations Get started with this automation example for IronOS with a ready-to-use blueprint! diff --git a/source/_integrations/ituran.markdown b/source/_integrations/ituran.markdown new file mode 100644 index 00000000000..3d40966fd00 --- /dev/null +++ b/source/_integrations/ituran.markdown @@ -0,0 +1,66 @@ +--- +title: Ituran +description: Instructions on how to add Ituran to Home Assistant. +ha_category: + - Car + - Device Tracker + - Presence detection +ha_release: '2025.1' +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@shmuelzon' +ha_domain: ituran +ha_platforms: + - device_tracker + - sensor +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. + +## Prerequisites + +You must have an Ituran account for use with the Ituran APP ([Android](https://play.google.com/store/apps/details?id=com.ituran.forall)/[iOS](https://apps.apple.com/app/id1227756834)). All devices that work with the app, should work with this integration as well. + +{% include integrations/config_flow.md %} + +{% configuration_basic %} +ID or passport number: + description: Your government ID or passport number used to sign-up with Ituran. +Mobile phone number: + description: The mobile phone number used to sign-up with Ituran. A one-time-password will be sent to this number. +{% endconfiguration_basic %} + +## Data updates + +The information is pulled every 5 minutes from the Ituran web service; however, the data is updated at intervals determined by Ituran based on whether the vehicle is stationary or not. + +## Supported functionality + +### Device tracker + +The Ituran {% term integration %} will track the location of each vehicle registered to your account. + +### Sensor + +The Ituran {% term integration %} also exposes the following sensor 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` +- **Heading** - The direction (0-359°) that the vehicle is pointing to +- **Last update from vehicle** - The time from when the vehicle last published its information to the Ituran cloud +- **Mileage** - The distance (km) the vehicle has traveled +- **Speed** - The current speed (km/h) of the vehicle + +## 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 +- 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 + +## 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/knx.markdown b/source/_integrations/knx.markdown index 101bf6d28c3..9f762782209 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -2015,6 +2015,10 @@ device_class: | 16.000 | string | 14 | ASCII | | | 16.001 | latin_1 | 14 | ISO 8859-1 / Latin-1 | | | 17.001 | scene_number | 1 | 1 ... 64 | | +| 29 | 8byte_signed | 8 | ±9223372036854775807 | | +| 29.010 | active_energy_8byte | 8 | ±9223372036854775807 | Wh | +| 29.011 | apparant_energy_8byte | 8 | ±9223372036854775807 | VAh | +| 29.012 | reactive_energy_8byte | 8 | ±9223372036854775807 | VARh | ### More examples @@ -2294,7 +2298,7 @@ address_day_night: required: false type: [string, list] address_air_pressure: - description: KNX address reading current air pressure. *DPT 9.006* + description: KNX address reading current air pressure. *DPT 9.006 or 14.058* required: false type: [string, list] address_humidity: diff --git a/source/_integrations/lamarzocco.markdown b/source/_integrations/lamarzocco.markdown index 0902dd1fa8b..15169b00d82 100644 --- a/source/_integrations/lamarzocco.markdown +++ b/source/_integrations/lamarzocco.markdown @@ -28,6 +28,7 @@ ha_dhcp: true ha_codeowners: - '@zweckj' ha_integration_type: device +ha_quality_scale: platinum --- This integration interacts with [La Marzocco](https://lamarzocco.com/it/en/) coffee machines through calls to the La Marzocco cloud API. Optionally, local API calls, which include a WebSocket connection for (near) real-time updates and a Bluetooth connection, can be utilized for local connections. @@ -86,7 +87,6 @@ Use Bluetooth: | **Preinfusion time** | Duration of preinfusion | `Linea Micra`, `Linea Mini`, `GS3 AV` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | `GS3` has this multiple times, one for each physical key (1-4), and the entities are disabled by default | | **Smart standby time** | Time until the machine will automatically stand by (if enabled) | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | - ## Switches | Switch name | Description | Available for machines | Controllable through | @@ -102,6 +102,7 @@ Use Bluetooth: | **Water tank empty** | Indicates whether the water tank needs a refill. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} {% icon "material-symbols:wifi" title="Local connection" %} | - | | **Brewing active** | Is on if you are in the process of making coffee. | `all` | {% icon "material-symbols:wifi" title="Local connection" %} | Only available when the `Host` was set during component configuration. | | **Backflush enabled** | Is on if you started the backflushing process. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} {% icon "material-symbols:wifi" title="Local connection" %} | - | +| **Connectivity** | Whether the LM Acaia scale is currently connected to the machine. | `Linea Mini` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | Only available if you have the Acaia LM scale and configured it with your machine. | ## Sensors @@ -112,6 +113,7 @@ Use Bluetooth: | **Total coffees made** | Counter for total coffees made| `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | | **Total flushes made** | Counter for total flushes done | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %}| - | | **Shot timer** | Time the current brew is running | `all` | {% icon "material-symbols:wifi" title="Local connection" %} | Only available when the `Host` was set during component configuration. | +| **Battery** | Battery level of the LM Acaia scale | `Linea Mini` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | Only available if you have the Acaia LM scale and configured it with your machine. | ## Updates diff --git a/source/_integrations/lcn.markdown b/source/_integrations/lcn.markdown index 9f288022cc2..8814c6d968c 100644 --- a/source/_integrations/lcn.markdown +++ b/source/_integrations/lcn.markdown @@ -106,10 +106,10 @@ To delete multiple devices at once, enable selection mode. Select the desired e ### Configuring entities -Entities configured for all devices are listed on the **Entities** tab. +Entities configured for all devices are listed on the **Entities** tab. To view entities for a specific device (module or group), in the **Modules / Groups** tab, select the device entry. - - **Result**: The **Entities** tab opens, showing entities of the selected device. + - **Result**: The **Entities** tab opens, showing entities of the selected device. - To apply custom filters, enable the filter option. ![Create module/group dialog](/images/integrations/lcn/lcn_entities_page.png) @@ -128,13 +128,13 @@ To view entities for a specific device (module or group), in the **Modules / Gro #### Deleting entities To delete a single entity, select the trash can icon next to it. -- **Result**: This removes the entity from the list and from Home Assistant. +- **Result**: This removes the entity from the list and from Home Assistant. To delete multiple entities, enable selection mode, select the desired entries, and select **Delete Selected** in the upper right. #### Displaying entity properties -Once an entity is created, you can view and configure its properties. +Once an entity is created, you can view and configure its properties. Select the entity in the entity list. - This opens the Home Assistant dialog for entity properties, allowing you to configure the entity as you would from the general Home Assistant entity configuration panel. @@ -431,13 +431,15 @@ For an explanation of the attributes refer to the corresponding [events](#events In order to directly interact with the LCN system, and invoke commands which are not covered by the implemented platforms, the following actions can be used. Refer to the [Performing actions](/docs/scripts/service-calls) page for examples on how to use them. +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. + ### Action: `output_abs` Set absolute brightness of output port in percent. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | --------------------------------- | --------------------- | -| `address` | No | [LCN address](#lcn-addresses) | +| `device_id` | No | Home Assistant device id || | `output` | No | Output port of module | [OUTPUT_PORT](#ports) | | `brightness` | Yes | Absolute brightness in percent | 0..100 | | `transition` | Yes | Transition (ramp) time in seconds | 0..486 | @@ -447,7 +449,7 @@ Example: ```yaml action: lcn.output_abs data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 output: output1 brightness: 100 transition: 0 @@ -457,9 +459,9 @@ data: Set relative brightness of output port in percent. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | --------------------------------- | --------------------- | -| `address` | No | [LCN address](#lcn-addresses) | +| `device_id` | No | Home Assistant device id || | `output` | No | Output port of module | [OUTPUT_PORT](#ports) | | `brightness` | Yes | Relative brightness in percent | -100..100 | | `transition` | Yes | Transition (ramp) time in seconds | 0..486 | @@ -469,7 +471,7 @@ Example: ```yaml action: lcn.output_rel data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 output: output1 brightness: 30 ``` @@ -478,9 +480,9 @@ data: Toggle output port. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | --------------------------------- | --------------------- | -| `address` | No | [LCN address](#lcn-addresses) | +| `device_id` | No | Home Assistant device id || | `output` | No | Output port of module | [OUTPUT_PORT](#ports) | | `transition` | Yes | Transition (ramp) time in seconds | 0..486 | @@ -489,7 +491,7 @@ Example: ```yaml action: lcn.output_toggle data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 output: output1 transition: 0 ``` @@ -501,17 +503,17 @@ Each character represents the state change of a relay (1=on, 0=off, t=toggle, -= Example states: `t---001-` -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------------------------- | ------ | -| `address` | No | [LCN address](#lcn-addresses) | -| `state` | No | Relay states as string | +| `device_id` | No | Home Assistant device id || +| `state` | No | Relay states as string || Example: ```yaml action: lcn.relays data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 state: t---001- ``` @@ -519,9 +521,9 @@ data: Set the LED status. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------------------------- | -------------------- | -| `address` | No | [LCN address](#lcn-addresses) | +| `device_id` | No | Home Assistant device id || | `state` | No | LED state as string | [LED_STATE](#states) | Example: @@ -529,7 +531,7 @@ Example: ```yaml action: lcn.led data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 led: led6 state: blink ``` @@ -540,9 +542,9 @@ Set the absolute value of a variable or setpoint. If `value` is not defined, it is assumed to be 0. If `unit_of_measurement` is not defined, it is assumed to be `native`. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------------------------- | ------------------------------------------------------------------ | -| `address` | No | [LCN address](#lcn-addresses) | +| `device_id` | No | Home Assistant device id || | `variable` | No | Variable name | [VARIABLE](#variables-and-units), [SETPOINT](#variables-and-units) | | `value` | Yes | Variable value | _any positive number_ | | `unit_of_measurement` | Yes | Variable unit | [VAR_UNIT](#variables-and-units) | @@ -552,7 +554,7 @@ Example: ```yaml action: lcn.var_abs data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 variable: var1 value: 75 unit_of_measurement: % @@ -569,9 +571,9 @@ Set the relative value of a variable or setpoint. If `value` is not defined, it is assumed to be 0. If `unit_of_measurement` is not defined, it is assumed to be `native`. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------------------------- | ----------------------------------------------------------------------------------------------------- | -| `address` | No | [LCN address](#lcn-addresses) | +| `device_id` | No | Home Assistant device id || | `variable` | No | Variable name | [VARIABLE](#variables-and-units), [SETPOINT](#variables-and-units), [THRESHOLD](#variables-and-units) | | `value` | Yes | Variable value | _any positive or negative number_ | | `unit_of_measurement` | Yes | Variable unit | [VAR_UNIT](#variables-and-units) | @@ -581,7 +583,7 @@ Example: ```yaml action: lcn.var_rel data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 variable: var1 value: 10 unit_of_measurement: % @@ -596,9 +598,9 @@ Otherwise the module might show unexpected behavior or return error messages. Reset value of variable or setpoint. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------------------------- | ------------------------------------------------------------------ | -| `address` | No | [LCN address](#lcn-addresses) | +| `device_id` | No | Home Assistant device id || | `variable` | No | Variable name | [VARIABLE](#variables-and-units), [SETPOINT](#variables-and-units) | Example: @@ -606,7 +608,7 @@ Example: ```yaml action: lcn.var_reset data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 variable: var1 ``` @@ -620,9 +622,9 @@ Otherwise the module might show unexpected behavior or return error messages. Locks a regulator setpoint. If `state` is not defined, it is assumed to be `False`. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------------------------- | -------------------------------- | -| `address` | No | [LCN address](#lcn-addresses) | +| `device_id` | No | Home Assistant device id || | `setpoint` | No | Setpoint name | [SETPOINT](#variables-and-units) | | `state` | Yes | Lock state | true, false | @@ -631,7 +633,7 @@ Example: ```yaml action: lcn.lock_regulator data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 setpoint: r1varsetpoint state: true ``` @@ -644,9 +646,9 @@ If `state` is not defined, it is assumed to be `hit`. The command allows the sending of keys immediately or deferred. For a deferred sending the attributes `time` and `time_unit` have to be specified. For deferred sending, the only key state allowed is `hit`. If `time_unit` is not defined, it is assumed to be `seconds`. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------------------------- | --------------------------------- | -| `address` | No | [LCN address](#lcn-addresses) | +| `device_id` | No | Home Assistant device id || | `keys` | No | Keys string | | `state` | Yes | Keys state | [KEY_STATE](#states) | | `time` | Yes | Deferred time | 0.. | @@ -658,7 +660,7 @@ Send keys immediately: ```yaml action: lcn.send_keys data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 keys: a1a5d8 state: hit ``` @@ -667,7 +669,7 @@ Send keys deferred: ```yaml action: lcn.send_keys data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 keys: a1a5d8 time: 5 time_unit: s @@ -681,10 +683,10 @@ The key lock states are defined as a string with eight characters. Each characte The command allows the locking of keys for a specified time period. For a time period, the attributes `time` and `time_unit` have to be specified. For a time period, only table `a` is allowed. If `time_unit` is not defined, it is assumed to be `seconds`. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------------------------- | --------------------------------- | -| `address` | No | [LCN address](#lcn-addresses) | -| `table` | Yes | Table with keys to lock | +| `device_id` | No | Home Assistant device id || +| `table` | Yes | Table with keys to lock || | `state` | No | Key lock states as string | [KEY_STATE](#states) | | `time` | Yes | Time period to lock | 0.. | | `time_unit` | Yes | Time unit | [TIME_UNIT](#variables-and-units) | @@ -695,7 +697,7 @@ Lock keys forever: ```yaml action: lcn.lock_keys data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 table: a state: 1---t0-- ``` @@ -704,7 +706,7 @@ Lock keys for a specified time period: ```yaml action: lcn.lock_keys data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 state: 1---t0-- time: 10 time_unit: s @@ -716,19 +718,18 @@ Send dynamic text to LCN-GTxD displays. The displays support four rows for text messages. Each row can be set independently and can store up to 60 characters (encoded in UTF-8). - -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | ---------------------------------- | ------ | -| `address` | No | [LCN address](#lcn-addresses) | -| `row` | No | Text row 1..4 | -| `text` | No | Text to send for the specified row | +| `device_id` | No | Home Assistant device id || +| `row` | No | Text row 1-4 || +| `text` | No | Text to send for the specified row || Example: ```yaml action: lcn.dyn_text data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 row: 1 text: "text in row 1" ``` @@ -737,17 +738,17 @@ data: Send arbitrary PCK command. Only the command part of the PCK command has to be specified in the `pck` string. -| Data attribute | Optional | Description | Values | +| Data attribute | Optional | Description | Values | | ---------------------- | -------- | ----------------------------- | ------ | -| `address` | No | [LCN address](#lcn-addresses) | -| `pck` | No | PCK command | +| `device_id` | No | Home Assistant device id || +| `pck` | No | PCK command || Example: ```yaml action: lcn.pck data: - address: myhome.0.7 + device_id: 91aa039a2fb6e0b9f9ec7eb219a6b7d2 pck: PIN4 ``` diff --git a/source/_integrations/music_assistant.markdown b/source/_integrations/music_assistant.markdown index 63adcdf32c7..1e17e065662 100644 --- a/source/_integrations/music_assistant.markdown +++ b/source/_integrations/music_assistant.markdown @@ -7,7 +7,7 @@ ha_release: 2024.12 ha_iot_class: Local Push ha_config_flow: true ha_codeowners: - - '@music_assistant' + - '@music-assistant' ha_domain: music_assistant ha_platforms: - media_player @@ -15,7 +15,7 @@ ha_zeroconf: true ha_integration_type: integration --- -The **Music Assistant**(MA) {% term integrations %} allows you to connect Home Assistant to a [Music Assistant Server](https://music-assistant.io/). Once configured, all [MA Players](https://music-assistant.io/player-support/) show up as Home Assistant [media player entities](/integrations/media_player/). Media players will allow you to control media playback and see the currently playing item. +The **Music Assistant** (MA) {% term integration %} allows you to connect Home Assistant to a [Music Assistant Server](https://music-assistant.io/). Once configured, all [MA Players](https://music-assistant.io/player-support/) show up as Home Assistant [media player entities](/integrations/media_player/). Media players will allow you to control media playback and see the currently playing item. There is currently support for the following Home Assistant Platforms: @@ -27,11 +27,11 @@ All of the Home Assistant [Media Player Control Actions](https://www.home-assist ### Manual configuration -Under normal circumstances, Home Assistant automatically discovers your running Music Assistant Server. If something special about the HA or MA setup (for example, the MA server is running as a remote Docker container) or discovery is not working, you can manually specify the URL to your Music Assistant server. +Under normal circumstances, Home Assistant automatically discovers your running Music Assistant Server. If there is something special about the HA or MA setup (for example, the MA server is running as a remote Docker container) or discovery is not working, you can manually specify the URL to your Music Assistant server. If the Music Assistant Server is not installed then follow these [installation instructions](https://music-assistant.io/installation/). ## Media player -The Music Assistant media player creates media player entities for all players available in MA including those imported from Home Assistant. This is needed to provide the full functionality Music Assistant has to offer. These entities will display media information, playback progress, and playback controls. +The Music Assistant integration creates media player entities for all players available in MA including those imported from Home Assistant. This is needed to provide the full functionality Music Assistant has to offer. These entities will display media information, playback progress, and playback controls. ### Action `media_player.play_media` @@ -85,11 +85,11 @@ Play media on a Music Assistant player with more fine-grained control options. - **Example**: `playlist` - **Data attribute**: `artist` - **Optional**: Yes. - - **Description**: When specifying a track or album in the Media ID field, you can optionally restrict results by this artist name. + - **Description**: When specifying a track or album by name in the Media ID field, you can optionally restrict results by this artist name. - **Example**: `Queen` - **Data attribute**: `album` - **Optional**: Yes. - - **Description**: When specifying a track in the Media ID field, you can optionally restrict results by this album name. + - **Description**: When specifying a track by name in the Media ID field, you can optionally restrict results by this album name. - **Example**: `News of the world` - **Data attribute**: `enqueue` - **Optional**: Yes. @@ -122,6 +122,19 @@ Play announcement on a Music Assistant player with more fine-grained control opt - **Description**: Use a forced volume level for the announcement. Omit to use the player default. - **Example**: `75` +### Action `music_assistant.transfer_queue` + +Transfer the player's queue to another player. + +- **Data attribute**: `source_player` + - **Optional**: Yes. + - **Description**: The source media player which has the queue to be transferred. When omitted, the first playing player will be used. + - **Example**: `media_player.kitchen_speaker` +- **Data attribute**: `auto_play` + - **Optional**: Yes. + - **Description**: Start playing the queue on the target player. Omit to use the default behavior. + - **Example**: `true` + ## Notes - Any Home Assistant players added to Music Assistant will appear duplicated as the MA version of the player is created. The original HA player can be hidden if desired. 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/niko_home_control.markdown b/source/_integrations/niko_home_control.markdown index e87525e900d..5da250fac47 100644 --- a/source/_integrations/niko_home_control.markdown +++ b/source/_integrations/niko_home_control.markdown @@ -1,37 +1,24 @@ --- title: Niko Home Control description: Instructions on how to integrate Niko Home Control lights into Home Assistant. +ha_codeowners: + - '@VandeurenGlenn' +ha_config_flow: true ha_category: + - Cover - Light -ha_iot_class: Local Polling +ha_iot_class: Local Push ha_release: 0.82 ha_domain: niko_home_control ha_platforms: + - 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. -## Configuration - -To enable this lights, add the following lines to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -light: - - platform: niko_home_control - host: IP_ADDRESS -``` - -{% configuration %} -host: - description: The IP address of the Niko Home light. - required: false - type: string -{% endconfiguration %} +{% include integrations/config_flow.md %} diff --git a/source/_integrations/nordpool.markdown b/source/_integrations/nordpool.markdown index b0e4013f321..b7595e12dd9 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. @@ -65,6 +66,8 @@ The integration will create entities showing today's energy prices for the confi | Previous price | [Currency]/kWh | The price of the previous hour. | | Next price | [Currency]/kWh | The price of the next hour. | | Daily average | [Currency]/kWh | The average of today's energy prices. | +| Lowest price | [Currency]/kWh | Today's lowest price (start and end time are provided in state attributes) | +| Highest price | [Currency]/kWh | Today's highest price (start and end time are provided in state attributes) | ### Peak & off-peak sensors @@ -96,6 +99,52 @@ The block price sensors are not enabled by default. | Exchange rate | Integer | The exchange rate between the configure currency and Euro's. | | Last updated | Datetime | The time when the market prices were last updated. | +## Actions + +### Get price for date + +The integration entities provide price information only for the current date. Use the "Get price for date" action to retrieve pricing information for any date within the last two months or for tomorrow. + +The areas and currency parameters are optional. If omitted, the values configured in the integration will be used. + +See [examples](#examples) how to use in a trigger template sensor. + +{% configuration_basic %} +Nord Pool configuration entry: + description: Select the Nord Pool configuration entry to target. +Date: + description: Pick the date to fetch prices for (see note about possible dates below). +Areas: + description: Select one market area to create output for. If omitted it will use the areas from the configuration entry. +Currency: + description: Currency to display prices in. EUR is the base currency in Nord Pool prices. If omitted it will use the currency from the configuration entry. +{% endconfiguration_basic %} + +{% note %} + +The public API only allows us to see past pricing information for up to 2 months. + +Tomorrow's prices are typically released around 13:00 CET, and trying to get them before that time will generate an error that needs to be considered in such a case. + +{% endnote %} + +#### Example action with data + +{% raw %} + +```yaml +action: nordpool.get_prices_for_date +data: + config_entry: 1234567890a + date: "2024-11-10" + areas: + - SE3 + - SE4 + currency: SEK +``` + +{% endraw %} + ## Examples A template sensor to add VAT and fixed cost is useful to get the actual energy cost in the energy dashboard. @@ -138,6 +187,65 @@ template: {% endraw %} +### Tomorrow's lowest price + +Using a trigger template, you can create a template sensor to calculate tomorrow's lowest price which also puts the list of all prices in the attributes of the sensor. All prices are returned in [Currency]/MWh. + +{% note %} +You need to replace the `config_entry` with your own Nord Pool config entry id. + +Below example will convert the action call response to kWh prices in the selected currency and add all prices for tomorrow as a list in an attribute. +{% endnote %} + +{% raw %} + +```yaml +template: + - trigger: + - trigger: time_pattern + minutes: /10 + - trigger: homeassistant + event: start + action: + - action: nordpool.get_prices_for_date + data: + config_entry: 01JEDAR1YEHJ6DZ376MP24MRDG + date: "{{ now().date() + timedelta(days=1) }}" + areas: SE3 + currency: SEK + response_variable: tomorrow_price + sensor: + - name: Tomorrow lowest price + unique_id: se3_tomorrow_low_price + state: > + {% if not tomorrow_price %} + unavailable + {% else %} + {% set data = namespace(prices=[]) %} + {% for state in tomorrow_price['SE3'] %} + {% set data.prices = data.prices + [(state.price / 1000)] %} + {% endfor %} + {{min(data.prices)}} + {% endif %} + attributes: + data: > + {% if not tomorrow_price %} + [] + {% else %} + {% set data = namespace(prices=[]) %} + {% for state in tomorrow_price['SE3'] %} + {% set data.prices = data.prices + [{'start':state.start, 'end':state.end, 'price': state.price/1000}] %} + {% endfor %} + {{data.prices}} + {% endif %} +``` + +{% endraw %} + +

+ Screenshot: Trigger template: Tomorrow lowest price +

+ ### Energy Dashboard To use the Nordpool integration in the **Energy** dashboard, when configuring grid consumption and production, use the **Use an entity with current price** option. diff --git a/source/_integrations/number.markdown b/source/_integrations/number.markdown index eac4a902ba6..ee39325cb0f 100644 --- a/source/_integrations/number.markdown +++ b/source/_integrations/number.markdown @@ -51,8 +51,8 @@ The following device classes are supported for numbers: - **data_rate**: Data rate in bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s, or GiB/s - **data_size**: Data size in bit, kbit, Mbit, Gbit, B, kB, MB, GB, TB, PB, EB, ZB, YB, KiB, MiB, GiB, TiB, PiB, EiB, ZiB, or YiB - **distance**: Generic distance in km, m, cm, mm, mi, yd, or in -- **energy**: Energy in Wh, kWh, MWh, GWh, TWh, MJ, or GJ -- **energy_storage**: Stored energy in Wh, kWh, MWh, GWh, TWh, MJ, or GJ +- **energy**: Energy in J, kJ, MJ, GJ, mWh, Wh, kWh, MWh, GWh, TWh, cal, kcal, Mcal, or Gcal +- **energy_storage**: Stored energy in J, kJ, MJ, GJ, mWh, Wh, kWh, MWh, GWh, TWh, cal, kcal, Mcal, or Gcal - **frequency**: Frequency in Hz, kHz, MHz, or GHz - **gas**: Gasvolume in m³, ft³, or CCF - **humidity**: Percentage of humidity in the air @@ -69,7 +69,7 @@ The following device classes are supported for numbers: - **pm10**: Concentration of particulate matter less than 10 micrometers in µg/m³ - **pm25**: Concentration of particulate matter less than 2.5 micrometers in µg/m³ - **power_factor**: Power factor(unitless), unit may be `None` or % -- **power**: Power in W, kW, MW, GW or TW +- **power**: Power in mW, W, kW, MW, GW or TW - **precipitation**: Accumulated precipitation in cm, in or mm - **precipitation_intensity**: Precipitation intensity in in/d, in/h, mm/d, or mm/h - **pressure**: Pressure in Pa, kPa, hPa, bar, cbar, mbar, mmHg, inHg, or psi diff --git a/source/_integrations/ohme.markdown b/source/_integrations/ohme.markdown new file mode 100644 index 00000000000..f07dba3a47b --- /dev/null +++ b/source/_integrations/ohme.markdown @@ -0,0 +1,81 @@ +--- +title: Ohme +description: Instructions to configure the Ohme integration into Home Assistant. +ha_category: + - Car + - Sensor +ha_release: 2025.1 +ha_iot_class: Cloud Polling +ha_codeowners: + - '@dan-r' +ha_config_flow: true +ha_domain: ohme +ha_platforms: + - button + - sensor +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. + + +## Prerequisites + +- Ah Ohme account. If you signed up to Ohme with a third party account like Google, you will need to [reset your password](https://api.ohme.io/fleet/index.html#/authentication/forgotten-password) before configuring this integration. + + +## Supported devices + +The following devices are known to be supported by the integration: +- Ohme Home Pro +- Ohme Home +- Ohme Go +- Ohme ePod + + +{% include integrations/config_flow.md %} +{% configuration_basic %} +Email: + description: "Email to log in to your Ohme account." +Password: + description: "Password to log in to your Ohme account." +{% endconfiguration_basic %} + + +## Supported functionality + +### Entities + +The Ohme integration provides the following entities. + +#### Buttons + +- **Approve charge** + - **Description**: If sensor **Status** is `Pending approval`, this will approve the charge. + - **Available for devices**: all + +#### Sensors + +- **Status** + - **Description**: Current status of the charger. Possible states: `Unplugged`, `Pending approval`, `Plugged in`, `Charging`. + - **Available for devices**: all +- **Power** + - **Description**: Power draw from the charger in kW. + - **Available for devices**: all +- **Current** + - **Description**: Current draw from the charger in amperes. + - **Available for devices**: all +- **Energy** + - **Description**: Energy consumption of the charger in kWh. + - **Available for devices**: all +- **CT current** + - **Description**: If a current transformer (CT) was installed with your charger, this will show the current used by your whole home. + - **Available for devices**: Home Pro, ePod + + +## 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/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/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index edfa553cf45..ac49b485a8f 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -73,6 +73,14 @@ Floor Temperature: ### Button +The integration adds the following buttons to your Home Assistant instance: + +#### Cancel Room Setpoint Override + +Pressing this button, which can be found on the `OpenTherm Thermostat` device, cancels an active room setpoint override. Note that it does not change the target temperature, it only returns control to the thermostat. + +#### Restart + The restart button on the `OpenTherm Gateway` device can be used to restart the OpenTherm Gateway. ### Select diff --git a/source/_integrations/palazzetti.markdown b/source/_integrations/palazzetti.markdown index 9f7a3d52813..f3b415d8493 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 @@ -39,14 +40,56 @@ This integration supports the following actions (see [Climate](/integrations/cli - `off` to turn the stove off - [`set_fan_mode`](/integrations/climate/#action-climateset_fan_mode) - `Silent` let the stove run in silent mode - - `1`, `2`, `3`, `4`, `5` increasing fan speeds + - `1` to `5` increasing fan speeds - `High` the highest available fan speed - `Auto` let the stove set the optimal fan speed +## Numbers + +The Palazzetti integration offers control over the combustion power of the stove on a scale from `1` to `5`. + ## Sensors The Palazzetti integration offers the following sensors, for the products that provide them: +State sensors: + +- Status (current operational state) can take the following values: + - `off`: Off + - `off_timer`: Timer-regulated switch off + - `test_fire`: Ignition test + - `heatup`: Pellet feed + - `fueling`: Ignition + - `ign_test`: Fuel check + - `burning`: Operating + - `burning_mod`: Operating - Modulating + - `unknown`: Unknown + - `cool_fluid`: Stand-by + - `fire_stop`: Switch off + - `clean_fire`: Burn pot cleaning + - `cool`: Cooling in progress + - `cleanup`: Final cleaning + - `ecomode`: Ecomode + - `chimney_alarm`: Chimney alarm + - `grate_error`: Grate error + - `pellet_water_error`: Pellet probe or return water error + - `t05_error`: T05 error disconnected or faulty probe + - `hatch_door_open`: Feed hatch or door open + - `pressure_error`: Safety pressure switch error + - `main_probe_failure`: Main probe failure + - `flue_probe_failure`: Flue gas probe failure + - `exhaust_temp_high`: Too high exhaust gas temperature + - `pellet_finished`: Pellets finished or ignition failed + - `firewood_finished`: Firewood finished + - `cooling`: Cooling + - `general_error`: General error + - `door_open`: Door open + - `temp_too_high`: Temperature too high + - `cleaning_warning`: Cleaning warning + - `fuel_error`: Fuel error + +Temperature sensors: + - Outlet air temperature (°C) - Wood combustion temperature (°C) - Room temperature (°C) @@ -54,5 +97,8 @@ The Palazzetti integration offers the following sensors, for the products that p - Tank water temperature (°C) - Hydro temperature 1 (°C) - Hydro temperature 2 (°C) -- Pellet quantity (kg) -- Pellet level (cm) + +Fuel Sensors: + +- Pellet quantity (kg - cumulative quantity consumed) +- Pellet level (cm - current level) diff --git a/source/_integrations/peblar.markdown b/source/_integrations/peblar.markdown new file mode 100644 index 00000000000..37a88899adb --- /dev/null +++ b/source/_integrations/peblar.markdown @@ -0,0 +1,402 @@ +--- +title: Peblar +description: Instructions on how to integrate Peblar Rocksolid EV Charger with Home Assistant. +ha_category: + - Car + - Energy + - Update +ha_release: 2025.1 +ha_iot_class: Local Polling +ha_config_flow: true +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: platinum +--- + +The Peblar {% term integration %} integrates your [Peblar Rocksolid EV Charger] +with Home Assistant. Allowing you to monitor the charging status and energy +consumption of your electric vehicle connected to the Peblar charger, while +also providing the ability to add the charger to your Home Assistant +energy dashboard. + +[Peblar Rocksolid EV Charger]: https://peblar.com/ + +## Supported devices + +The following rocksolid Pebler EV chargers are supported by this integration: + +- Peblar Home +- Peblar Home Plus +- Peblar Business + +{% include integrations/config_flow.md %} + +### Configuration parameters + +{% configuration_basic %} +Host: + description: The hostname or IP address of your Peblar charger on your home network. +Password: + description: The password as used to log in to the Peblar device' local web interface. +{% endconfiguration_basic %} + +The above configuration can also be adjusted later via +{% my integrations title="**Settings** > **Devices & services**" %}, +click {% icon "mdi:dots-vertical" %} and select **Reconfigure**. + +## Use cases + +This integration provides all the information about your rock-solid EV charger +from Peblar. There are multiple use cases for this integration, such as: + +- Monitoring the charging status of your electric vehicle. +- Adding the charger to your Home Assistant energy dashboard, allowing you to + monitor the energy consumption of your electric vehicle as part of your home + energy usage. +- Creating automations, for example: + - To notify you when the charging of your electric vehicle is complete. + - Turn off solar-only charging when the expected solar production is not + sufficient today. + - Notify when the charger has detected an error or has raised a warning. +- See updates in Home Assistant when there are updates available for your + Peblar charger. + +## Supported functionality + +The Peblar integration provides a whole lot of functionality to Home Assistant. +All of them are provided as entities in Home Assistant. Below is an overview of +the entities provided by this integration. + +### Binary sensors + +The binary sensors provided are used to indicate the health status of the +charger. The following binary sensors are available: + +- **Active error**: Indicates if the charger has detected an error. If this + sensor is on ({% term state %}: `on`) an error has been detected, otherwise, it is off + ({% term state %}: `off`). +- **Active warning**: Indicates if the charger has raised a warning. If this +- sensor is on ({% term state %}: `on`) a warning has been raised, otherwise, it is off + ({% term state %}: `off`). + +If any of these binary sensors are on, you should check the charger's local +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) +documentation for information on how to do this. +{% endimportant %} + +### Buttons + +The buttons provided by this integration can be used to trigger an action on +the charger. The following buttons are available: + +- **Identify**: This button can be used to identify the charger. This can be + useful if you have multiple chargers and want to identify which one is which. + Once pressed, the LED on the charger will start blinking for a few seconds. +- **Restart**: This button can be used to restart the charger. This can be + useful if the charger is not responding as expected. + +{% 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) +documentation for information on how to do this. +{% endimportant %} + +### Numbers + +This integration provides a singles 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). + +The minimum value for this entity is 6A, and the maximum value is depending on +your charger's configuration. The value can be set in increments of 1A. + +### Selects + +This integration provides a single select entity: **Smart charging**. + +It reflects the same smart charging state as is shown on the charger's local +web interface, and allows you to control the charging behavior of the charger. + +The following options are available: + +- **Default** ({% term state %}: `default`): The charger will charge the electric vehicle + as soon as it is connected. +- **Fast solar** ({% term state %}: `fast_solar`): The charger will fast charge the + electric vehicle with the overproduction of solar energy, but will also use + grid power if the solar production is not sufficient. +- **Smart solar** ({% term state %}: `smart_solar`): The charger will charge the electric + vehicle with the overproduction of solar energy, but will also use grid power + if the solar production is not sufficient. +- **Pure solar** ({% term state %}: `solar_only`): The charger will only charge the + electric vehicle with the overproduction of solar energy. +- **Scheduled** ({% term state %}: `scheduled`): The charger will charge the electric + vehicle according to the schedule configured on the charger. + +### Sensors + +The Peblar integration provides a lot of sensors to Home Assistant. + +{% tip %} +The ability to add your charger to the Home Assistant energy dashboard is +arguably the most useful feature of this integration. It is therefore +recommended to add your Peblar charger to the Home Assistant energy dashboard, +by adding the **Lifetime energy** sensor to the energy dashboard configuration +as a device. +{% endtip %} + +- **Current**: The current current (in amperes) the charger is consuming to + charge your electric vehicle. This is a combined value for all your phases. + Additionally, three additionally sensors are available, if your charging is + using multiple phases: + - **Current Phase 1**\*\*: The current current (in amperes) the charger is + consuming on phase 1. + - **Current Phase 2**\*\*: The current current (in amperes) the charger is + consuming on phase 2. + - **Current Phase 3**\*\*: The current current (in amperes) the charger is + consuming on phase 3. +- **Lifetime energy**: The total energy (in kilowatt-hours) consumed by the + charger since it was installed. **This is the recommended sensor to use in the + Home Assistant energy dashboard.** +- **Limit source**: The source/origin of the current charging limit that is + in effect. The source can be one of the following: + - _Charging cable_ ({% term state %}: `charging_cable`): The current limit is + the maximum current the charging cable handle. + - _Current limiter_ ({% term state %}: `current_limiter`): The current limit is + set by the current limiter. + - _Dynamic load balancing_ ({% term state %}: `dynamic_load_balancing`): The current + limit is set by the dynamic load balancing feature. + - _External power limit_ ({% term state %}: `external_power_limit`): The current + limit is set by an external power limiter. + - _Group load balancing_ ({% term state %}: `group_load_balancing`): The current + limit is set by the group load balancing feature, which is a feature that + allows multiple chargers to share the available power. + - _Hardware limitation_ ({% term state %}: `hardware_limitation`): The current limit + is limited by the hardware of the charger that can't provide more current. + - _High temperature_ ({% term state %}: `high_temperature`): The current limit is + limited due to high temperatures. + - _Household power limit_ ({% term state %}: `household_power_limit`): The current + limit is set by the household power limit feature, which is a feature that + allows the charger to limit the current to prevent overloading the household + power. + - _Installer limitation_ ({% term state %}: `installer_limitation`): The current + limit is set by the installer, for example, to prevent overloading the fuse + of the house. + - _Local Modbus API_ ({% term state %}: `local_modbus_api`): The current limit is + set by software using the local Modbus API. + - _Local REST API_ ({% term state %}: `local_rest_api`): The current limit is set + by software using the local REST API. Home Assistant uses this API to set + the current limit, so if you see this state, it means the current limit is + likely set through Home Assistant. + - _OCPP smart charging_ ({% term state %}: `ocpp_smart_charging`): The current limit + is set by the OCPP smart charging feature. + - _Overcurrent protection_ ({% term state %}: `overcurrent_protection`): The current + limit is limited due to overcurrent protection. + - _Phase imbalance_ ({% term state %}: `phase_imbalance`): The current limit is + limited due to phase imbalance in the electrical installation. + - _Power factor_ ({% term state %}: `power_factor`): The current limit is limited + due to a low power factor in the electrical installation. + - _Solar charging_ ({% term state %}: `solar_charging`): The current limit is set + by the solar charging feature of the charger. This means the charger is + awaiting an overproduction of solar energy to start charging. +- **Power**: The current power (in Watts) the charger is consuming to charge + your electric vehicle. This is a combined value for all your phases. + Additionally, three additionally sensors are available, if your charging is + using multiple phases: + - **Power Phase 1**\*\*: The current power (in Watts) the charger is consuming + on phase 1. + - **Power Phase 2**\*\*: The current power (in Watts) the charger is consuming + on phase 2. + - **Power Phase 3**\*\*: The current power (in Watts) the charger is consuming + on phase 3. +- **Session energy**: The total energy (in kilowatt-hours) consumed by the + charger during the current charging session. This sensor is reset when a + new charging session starts. While you could, it is **not** recommended to + use this sensor in the Home Assistant energy dashboard. Use the **Lifetime + energy** sensor instead. +- **State**: The current state of the charger. The state can be one of the + following: + - _Charging_ ({% term state %}: `charging`): The charger is currently charging the + electric vehicle. + - _Error_ ({% term state %}: `error`): The charger has detected an error and is + currently not charging the electric vehicle. + - _Fault_ ({% term state %}: `fault`): The charger has detected a fault and is + currently not charging the electric vehicle. + - _No EV connected_ ({% term state %}: `no_ev_connected`): The charger is currently not + connected to an electric vehicle. + - _Suspended_ ({% term state %}: `suspended`): The charger is currently not charging + the electric vehicle, but is ready to start charging when needed. + - _Invalid_ ({% term state %}: `invalid`): The charger is in an invalid state. +- **Uptime**\*\*: The total time the charger has been running since the last + restart. This sensor is reset when the charger is restarted. +- **Voltage**: The current voltage (in volts) the charger is using to charge. + Only available if your charger is connected to a single-phase power source. +- **Voltage Phase 1**\*\*: The current voltage (in volts) on phase 1. Only + available if your charger is connected to at least a two-phase power source. +- **Voltage Phase 2**\*\*: The current voltage (in volts) on phase 2. Only + available if your charger is connected to at least a two-phase power source. +- **Voltage Phase 3**\*\*: The current voltage (in volts) on phase 3. + Only available if your charger is connected to a three-phase power source. + +{% 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) +documentation for information on how to do this. +{% endimportant %} + +### Switches + +This integration provides a single switch entity: **Force single phase**. + +This switch can be used to force the charger to use a single phase for charging +your electric vehicle. This can be useful if you want to limit your current +draw from the charger to a single phase, for example, to prevent overloading +your electrical installation. + +Note that this switch is only available if your charger is connected to multiple +phases. If your charger is connected to a single-phase power source, this switch +will not be created. + +### Updates + +The Peblar integration provides two update entities for the Pebler charger: + +- **Firmware**: Indicates if there is a firmware update available for the + charger. The firmware can be thought of as the operating system of the charger. +- **Customization**: Indicates if there is a customization update available for + the charger. The customization can be thought as the user interface of the + charger that you see when you log in to the charger's local web interface. + +Software updates cannot be installed through Home Assistant. You need to log in +to the charger's local web interface to install the updates. + +## Data updates + +This integration is a local polling integration, meaning it will check for +changes to all the entities by frequently polling the Peblar charger on your +home network. + +There are three different polling frequencies used by this integration: + +- **every 10 seconds**: For all sensors and binary sensors, ensuring you + have the latest insights into your electric vehicle's charging status. +- **every 5 minutes**: It will check for configuration changes to the charger, + this affects all configuration entities, like the smart charging mode and + the current limit. +- **every 2 hours**: It will check for updates to the charger itself, ensuring + you are aware of any updates available for your Peblar charger. + +While this integration uses local polling, configuration changes made to the +Peblar charger from Home Assistant will be reflected in the charger almost +instantly. + +## Actions + +This integration does not provide additional actions. All actions available +for this integration are provided by their respective entities. + +## Examples + +The following examples show how to use the Peblar integration in Home +Assistant automations. These examples are just a starting point, and you can +use them as inspiration to create your own automations. + +Feel free to contribute more examples to this documentation ❤️. + +### Notify when there is an software update available + +The following example sends a notification to your mobile device when there is +a software update available for your Peblar charger. + +```yaml +automation: + - alias: "Peblar software update available" + triggers: + - trigger: state + entity_id: sensor.peblar_firmware + from: "off" + to: "on" + + actions: + - action: notify.mobile_app_your_device + data: + title: "Peblar charger update available!" + message: > + There is a software update available for your Peblar charger. + Please log in to the charger's local web interface to install the + update. +``` + +### Notify when an issue is detected + +The following example automation will send out a notification when the charger +detects an error or raises a warning. + +```yaml +automation: + - alias: "Peblar software update available" + triggers: + - trigger: state + entity_id: + - binary_sensor.peblar_active_error + - binary_sensor.peblar_active_warning + from: "off" + to: "on" + - trigger: state + entity_id: sensor.peblar_state + to: + - "error" + - "fault" + + actions: + - action: notify.mobile_app_your_device + data: + title: "Peblar charger issue detected!" + message: > + An issue with your Peblar charger has been detected. Please check + the charger's local web interface for more information. +``` + +## Known limitations + +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 + authentication (for example, using an RFID card) before it can start + charging. As a result, you will see an 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). + This integration is tested with the Peblar branded products, and it is unknown + if it works with white-label products. + +## Troubleshooting + +There are no commonly known issues with this integration. + +## 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/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/powerfox.markdown b/source/_integrations/powerfox.markdown new file mode 100644 index 00000000000..e4bbef3c4d8 --- /dev/null +++ b/source/_integrations/powerfox.markdown @@ -0,0 +1,90 @@ +--- +title: Powerfox +description: Instructions on how to integrate Powerfox within Home Assistant. +ha_category: + - Energy + - Sensor +ha_release: 2025.1 +ha_iot_class: Cloud Polling +ha_config_flow: true +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. + +[Powerfox](https://www.powerfox.energy/) is a German company that provides smart meters (Poweropti) for reading electricity, water, gas, and heat. They have their own cloud platform where you can monitor the usage of your devices and get insights into your energy consumption. + +{% include integrations/config_flow.md %} + +### Configuration parameters + +{% configuration_basic %} +Email: + description: The email address of your Powerfox account. +Password: + description: The password of your Powerfox account. +{% endconfiguration_basic %} + +## Poweropti devices + +Not all Poweropti devices are supported currently. Check the list below to see if your device is working with this integration. Create a [feature request](/help/) if your device is not supported yet. + +| Device | Type | Supported | +| --------------------- | ----------- | ---------- | +| PA 201901 / PA 201902 | Power meter | Yes | +| PB 202001 | Power meter | Not tested | +| WA 201902 | Water meter | Yes | +| Powerfox FLOW | Gas meter | No | +| HA 201902 | Heat meter | No | + +## Data updates + +The integration will update its information by polling Powerfox every +minute. This ensures the data in Home Assistant is up to date. + +## Actions + +This integration does not provide additional actions. + +## Supported functionality + +The Powerfox platform mainly provides sensors that you can use in your [energy dashboard](/energy). + +### Power meter + +It will create the following sensors: + +- **Power (W)**: Active power that is measured. +- **Energy usage (kWh)**: How much energy is used since the installation. +- **Energy usage - low tariff (kWh)**: Energy usage on the low tariff. +- **Energy usage - high tariff (kWh)**: Energy usage on the high tariff. +- **Energy returned (kWh)**: Energy returned to the grid. + +{% note %} +The energy tariff sensors are only available if your Poweropti device supports it. +{% endnote %} + +### Water meter + +It will create the following sensors: + +- **Cold water (m³)**: How much cold water is used. +- **Warm water (m³)**: How much warm water is used. + +## Troubleshooting + +There are no commonly known issues with this integration. + +## Remove integration + +This integration follows standard integration removal. No extra steps are required. + +{% include integrations/remove_device_service.md %} 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 681dcb55f55..a5e22e0474d 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -1,5 +1,5 @@ --- -title: Reolink IP NVR/camera +title: Reolink description: Instructions on how to integrate Reolink devices (NVR/cameras) into Home Assistant. ha_category: - Camera @@ -26,6 +26,7 @@ ha_platforms: - update ha_integration_type: integration ha_dhcp: true +ha_quality_scale: platinum related: - docs: /dashboards/picture-glance/#creating-a-card-to-control-the-camera title: Controlling the camera from the dashboard diff --git a/source/_integrations/ring.markdown b/source/_integrations/ring.markdown index d9d265dd9ab..84a978fdc41 100644 --- a/source/_integrations/ring.markdown +++ b/source/_integrations/ring.markdown @@ -41,15 +41,13 @@ There is currently support for the following device types within Home Assistant: - [Camera](#camera) - [Saving the videos captured by your Ring Door Bell](#saving-the-videos-captured-by-your-ring-door-bell) - [Event](#event) + - [Realtime event stability](#realtime-event-stability) - [Sensor](#sensor) - [Siren](#siren) - [Switch](#switch) - [Light](#light) - [Number](#number) -{% note %} -This integration does NOT allow for live viewing of your Ring camera within Home Assistant. -{% endnote %} {% include integrations/config_flow.md %} @@ -65,22 +63,26 @@ Once you have enabled the [Ring integration](/integrations/ring), you can start ## Camera -{% important %} -Please note that downloading and playing Ring video will require a Ring Protect plan. -{% endimportant %} +Once you have enabled the [Ring integration](/integrations/ring), you can start using the camera platform. +Currently, it supports doorbells and stickup cameras. +Two camera entities are provided: `live_view` and `last_recording`. +`last_recording` is disabled by default. -Once you have enabled the [Ring integration](/integrations/ring), you can start using the camera platform. Currently, it supports doorbell and stickup cameras. +{% important %} +Please note that downloading and playing Ring video from the `last_recording` camera will require a Ring Protect plan. +{% endimportant %} ### Saving the videos captured by your Ring Door Bell -You can save locally the latest video captured by your Ring Door Bell using the [downloader](/integrations/downloader) along with either an [automation](/integrations/automation) or [python_script](/integrations/python_script). First, enable the [downloader](/integrations/downloader) integration in your configuration by adding the following to your `configuration.yaml`. +You can save locally the latest video captured by your Ring Door Bell using the [downloader](/integrations/downloader) along with either an [automation](/integrations/automation) or [python_script](/integrations/python_script). +First, enable the [downloader](/integrations/downloader) integration in your configuration by adding the following to your `configuration.yaml`. ```yaml downloader: download_dir: downloads ``` -Then you can use the following automation, with the entities from your system, which will save the video file under `/downloads///`: +Then you can use the following automation, with the entities from your system, which will save the video file under `/downloads//.mp4`: {% raw %} @@ -89,14 +91,20 @@ automation: alias: "Save the video when the doorbell is pushed" triggers: - trigger: state - entity_id: binary_sensor.front_doorbell_ding - to: "on" + entity_id: event.front_doorbell_ding + from: null actions: + - delay: + hours: 0 + minutes: 5 + seconds: 0 + milliseconds: 0 - action: downloader.download_file data: - url: "{{ state_attr('camera.front_door', 'video_url') }}" - subdir: "{{state_attr('camera.front_door', 'friendly_name')}}" - filename: "{{state_attr('camera.front_door', 'friendly_name')}}" + overwrite: true + url: "{{ state_attr('camera.front_door_last_recording', 'video_url') }}" + subdir: "{{state_attr('camera.front_door_last_recording', 'friendly_name')}}" + filename: "{{state_attr('camera.front_door_last_recording', 'friendly_name')}}.mp4" ``` {% endraw %} @@ -106,8 +114,8 @@ You may consider some modifications in the subdirectory and the filename to suit {% raw %} ```yaml data: - url: "{{ state_attr('camera.front_door', 'video_url') }}" - subdir: "{{ state_attr('camera.front_door', 'friendly_name') }}/{{ now().strftime('%Y.%m') }}" + url: "{{ state_attr('camera.front_door_last_recording', 'video_url') }}" + subdir: "{{ state_attr('camera.front_door_last_recording', 'friendly_name') }}/{{ now().strftime('%Y.%m') }}" filename: "{{ now().strftime('%Y-%m-%d-at-%H-%M-%S') }}.mp4" ``` {% endraw %} @@ -125,7 +133,7 @@ You can then use the following `python_script` to save the video file: ```python # obtain ring doorbell camera object # replace the camera.front_door by your camera entity -ring_cam = hass.states.get("camera.front_door") +ring_cam = hass.states.get("camera.front_door_last_recording") subdir_name = f"ring_{ring_cam.attributes.get('friendly_name')}" 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/sensor.markdown b/source/_integrations/sensor.markdown index c258a25ea35..194b8ef07e2 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -62,8 +62,8 @@ The following device classes are supported for sensors: - **date**: Date string (ISO 8601) - **distance**: Generic distance in km, m, cm, mm, mi, nmi, yd, or in - **duration**: Duration in d, h, min, s, or ms -- **energy**: Energy in J, kJ, MJ, GJ, Wh, kWh, MWh, cal, kcal, Mcal, or Gcal -- **energy_storage**: Stored energy in J, kJ, MJ, GJ, Wh, kWh, MWh, cal, kcal, Mcal, or Gcal +- **energy**: Energy in J, kJ, MJ, GJ, mWh, Wh, kWh, MWh, GWh, TWh, cal, kcal, Mcal, or Gcal +- **energy_storage**: Stored energy in J, kJ, MJ, GJ, mWh, Wh, kWh, MWh, GWh, TWh, cal, kcal, Mcal, or Gcal - **enum**: Has a limited set of (non-numeric) states - **frequency**: Frequency in Hz, kHz, MHz, or GHz - **gas**: Gasvolume in m³, ft³ or CCF @@ -81,7 +81,7 @@ The following device classes are supported for sensors: - **pm25**: Concentration of particulate matter less than 2.5 micrometers in µg/m³ - **pm10**: Concentration of particulate matter less than 10 micrometers in µg/m³ - **power_factor**: Power factor (unitless), unit may be `None` or % -- **power**: Power in W, kW, MW, GW or TW +- **power**: Power in mW, W, kW, MW, GW or TW - **precipitation**: Accumulated precipitation in cm, in or mm - **precipitation_intensity**: Precipitation intensity in in/d, in/h, mm/d or mm/h - **pressure**: Pressure in Pa, kPa, hPa, bar, cbar, mbar, mmHg, inHg or psi diff --git a/source/_integrations/simulated.markdown b/source/_integrations/simulated.markdown deleted file mode 100644 index 38de30ef4f3..00000000000 --- a/source/_integrations/simulated.markdown +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Simulated -description: Integration for simulating a numerical sensor. -ha_category: - - Sensor - - Utility -ha_iot_class: Local Polling -ha_release: 0.65 -ha_quality_scale: internal -ha_domain: simulated -ha_platforms: - - sensor -ha_integration_type: integration ---- - -{% warning %} -The `simulated` integration has been deprecated and will be removed in 2025.1 -{% endwarning %} - -The `simulated` sensor platform provides a simulated sensor that generates a time-varying signal `V(t)` given by the [function](https://en.wikipedia.org/wiki/Sine_wave): - -```text -V(t) = M + A sin((2 pi (t - t_0) / w) + P) + N(s) -``` - -where: - -- **M** = the [mean](https://en.wikipedia.org/wiki/Mean) value of the sensor -- **A** = the [amplitude](https://en.wikipedia.org/wiki/Amplitude) of the periodic contribution -- **t** = the time when a value is generated -- **t_0** = the time when the sensor is started -- **w** = the time [period](https://en.wikipedia.org/wiki/Periodic_function) in seconds for a single complete cycle of the periodic contribution -- **P** = the [phase](https://en.wikipedia.org/wiki/Phase_(waves)) offset to add to the periodic contribution, in units of degrees -- **N(s)** = the random [Gaussian noise](https://en.wikipedia.org/wiki/Gaussian_noise) with spread **s** - -The output will be limited to 3 decimals. - -## Configuration - -To add a simulated sensor to your installation, add the following to your {% term "`configuration.yaml`" %} file: - -```yaml -sensor: - - platform: simulated -``` - -{% configuration %} -name: - description: The name of the sensor. - required: false - default: simulated - type: string -unit: - description: The unit to apply. - required: false - default: value - type: string -amplitude: - description: The amplitude of periodic contribution. - required: false - default: 1 - type: float -mean: - description: The mean level of the sensor. - required: false - default: 0 - type: float -period: - description: The time in seconds for one complete oscillation of the periodic contribution. - required: false - default: 0 - type: integer -phase: - description: The phase offset (in degrees) to apply to the periodic component. - required: false - default: 0 - type: float -seed: - description: The [seed](https://docs.python.org/3.6/library/random.html#random.seed) value for the random noise component. - required: false - default: 999 - type: integer -spread: - description: The spread is the range of the randomly distributed values about their mean. This is sometimes referred to as the Full Width at Half Maximum ([FWHM](https://en.wikipedia.org/wiki/Full_width_at_half_maximum)) of the random distribution. - required: false - default: None - type: float -relative_to_epoch: - description: Whether to simulate from epoch time (00:00:00, 1970-01-01), or relative to when the sensor was started. - required: false - default: true - type: boolean -{% endconfiguration %} - -## Example - -To give an example of simulating real world data, a simulated relative humidity sensor (in %) can be added using the following configuration: - -```yaml -sensor: - - platform: simulated - name: "simulated relative humidity" - unit: "%" - amplitude: 0 # Turns off the periodic contribution - mean: 50 - spread: 10 - seed: 999 - relative_to_epoch: false -``` diff --git a/source/_integrations/slide_local.markdown b/source/_integrations/slide_local.markdown new file mode 100644 index 00000000000..2958422c420 --- /dev/null +++ b/source/_integrations/slide_local.markdown @@ -0,0 +1,84 @@ +--- +title: Slide Local +description: Instructions on how to integrate the Innovation in Motion Slide covers with Home Assistant. +ha_category: + - Cover +ha_iot_class: Local Polling +ha_release: 2025.1 +ha_config_flow: true +ha_codeowners: + - '@dontinelli' +ha_domain: slide_local +ha_platforms: + - button + - cover + - 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. + +## Supported devices + +The integration should work with all Slide covers (API version 1 and 2). + +## Prerequisites + +Before you can use the integration, you have to make sure the slide is configured for the local API. By default, the Slide connects to the cloud API, but it is possible to use the local API, too (only one of them can be active). To switch between the cloud and local API, do the following: + + Press the reset button 2x + +LED flashes 5x fast: cloud API disabled, local API enabled +LED flashes 2x slow: local API disabled, cloud API enabled + +![screenshot slide bottom](/images/integrations/slide_local/slide_bottom.png) + +{% include integrations/config_flow.md %} + +To setup the integration you need the following information: + +{% configuration_basic %} +hostname: + description: Hostname or IP of the slide device. +password: + description: The device code of your Slide (inside of your Slide or in the box, 8 characters). Only required for API 1, with API 2 you can fill in anything here. +{% endconfiguration_basic %} + +{% include integrations/option_flow.md %} + +{% configuration_basic %} +Invert position: + description: Check the box, if your cover uses inverted positions for open and closed. +{% endconfiguration_basic %} + +## Supported functionality + +### Cover + +Your slide device will appear as cover. + +### Button + +You can start the calibration sequence for your slide by pushing on the Calibration button. + +### Switch + +You can enable/disable the Touch&Go functionality (open/close cover by a short pull on the cover) by using the TouchGo switch. + +## Data updates + +The integration fetches data from the device every 15 seconds. + +## Known limitations + +The integration only provides connection with Slide devices via the local API. For connecting via the cloud API, please use the [Slide](./slide) integration. + + +## Remove integration + +This integration can be removed by following these steps: + +{% include integrations/remove_device_service.md %} diff --git a/source/_integrations/starlink.markdown b/source/_integrations/starlink.markdown index 12bf682fa45..3600e07a206 100644 --- a/source/_integrations/starlink.markdown +++ b/source/_integrations/starlink.markdown @@ -41,6 +41,10 @@ The Starlink integration allows you to integrate your [Starlink](https://www.sta - Uplink throughput - The amount of data being uploaded through Starlink - Downlink throughput - The amount of data being downloaded through Starlink - Last boot time - The time Starlink was last turned on +- Upload - Total number of bytes uploaded from the user terminal since reboot +- Download - Total number of bytes downloaded to the user terminal since reboot +- Power - Last measured power [W] +- Energy - Measured energy consumption since reboot [kWh] ### Binary sensor 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/stookalert.markdown b/source/_integrations/stookalert.markdown deleted file mode 100644 index 661a28ed48a..00000000000 --- a/source/_integrations/stookalert.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: RIVM Stookalert -description: Instructions on how to use Stookalert data within Home Assistant -ha_category: - - Binary sensor - - Environment -ha_release: 0.104 -ha_iot_class: Cloud Polling -ha_codeowners: - - '@fwestenberg' - - '@frenck' -ha_domain: stookalert -ha_config_flow: true -ha_platforms: - - binary_sensor - - diagnostics -ha_integration_type: service ---- - -The Stookalert integration queries the [RIVM Stookalert](https://www.rivm.nl/stookalert) API for unfavorable weather conditions or poor air quality. With a Stookalert, the RIVM calls on people not to burn wood. This can prevent health problems in people in the area. - -{% include integrations/config_flow.md %} diff --git a/source/_integrations/suez_water.markdown b/source/_integrations/suez_water.markdown index 8dd751463fe..52b54a7765c 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. diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 9e6f2e2aa00..45c5e6c729f 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -66,6 +66,9 @@ Some SwitchBot devices need to be configured within the app before being control - [Lock Pro (WoLockPro)](https://www.switch-bot.com/pages/switchbot-lock-pro) - [Blind Tilt (WoBlindTilt)](https://switch-bot.com/pages/switchbot-blind-tilt) - [Hub 2 (WoHub2)](https://switch-bot.com/pages/switchbot-hub-2) (currently only supports retrieving sensor data, does not yet support device control) +- [Relay Switch 1](https://www.switch-bot.com/products/switchbot-relay-switch-1) +- [Relay Switch 1PM](https://www.switch-bot.com/products/switchbot-relay-switch-1pm) +- [Water Leak Detector](https://www.switch-bot.com/products/switchbot-water-leak-detector) ## SwitchBot Entity @@ -78,11 +81,11 @@ There are three attributes available on the SwitchBot entity to give you more in - `Retry count`: How many times to retry sending commands to your SwitchBot devices. -## SwitchBot Lock / SwitchBot Lock Pro +## SwitchBot Lock / SwitchBot Lock Pro / Relay Switch 1 / Relay Switch 1PM The integration currently only uses the primary lock state; in dual lock mode, not all things might work properly. -A SwitchBot lock can be set up in Home Assistant in two different ways. You can enter the key id and encryption key yourself, or Home Assistant can import them from your SwitchBot account. +A SwitchBot lock and relay switch can be set up in Home Assistant in two different ways. You can enter the key id and encryption key yourself, or Home Assistant can import them from your SwitchBot account. ### SwitchBot account (recommended) diff --git a/source/_integrations/switchbot_cloud.markdown b/source/_integrations/switchbot_cloud.markdown index 6ed774ad077..2a5375aa95d 100644 --- a/source/_integrations/switchbot_cloud.markdown +++ b/source/_integrations/switchbot_cloud.markdown @@ -52,6 +52,8 @@ Please note, device names configured in the SwitchBot app are transferred into H - Outdoor Meter - Vacuum K10+, K10+ pro, S1, S1 Plus - Hub 2 +- Relay Switch 1 +- Relay Switch 1PM ## Important considerations diff --git a/source/_integrations/tesla_fleet.markdown b/source/_integrations/tesla_fleet.markdown index 4b00df6d1ac..2d0b57b11d1 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 @@ -36,30 +36,34 @@ ha_platforms: ha_integration_type: integration --- -The Tesla Fleet API {% term integration %} exposes various sensors from Tesla vehicles and energy sites. +The Tesla Fleet API {% term integration %} exposes various sensors from Tesla vehicles and energy sites using the [Tesla Fleet API](https://developer.tesla.com/). ## Prerequisites -You must have a [Tesla](https://tesla.com) account and a Tesla vehicle, PowerWall, Solar, or Wall Connector, and must not have disabled the [My Home Assistant](/integrations/my/) integration. +You must have a [Tesla](https://tesla.com) account, and a [Developer Application](https://developer.tesla.com/en_AU/dashboard). -{% details "Use a custom OAuth application" %} +### Developer Application -The integration has a built-in OAuth application that will be suitable for most users. However, you can [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). +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. -You will be prompted to pick your custom application credential when creating a Tesla Fleet config entry. - -{% enddetails %} - {% include integrations/config_flow.md %} ## 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. +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). -## Rate limits +## 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 restricts open-source integrations to the ["Discovery" plan](https://developer.tesla.com/docs/fleet-api/getting-started/subscription-plans) which only allows for 200 vehicle data requests per day. The integration will initially poll every 90 seconds, making vehicle data requests only when the vehicle is awake, and then dynamically slow down polling based on how many vehicle data requests have been made in the last 24 hours. +- Tesla provides a $10 credit per developer account per calandar 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). ## Command signing diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index 7dd35bdeea7..84756d2190e 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -4,6 +4,7 @@ description: Instructions on integrating TP-Link Smart Home Devices to Home Assi ha_category: - Binary sensor - Button + - Camera - Climate - Fan - Hub @@ -24,6 +25,7 @@ ha_domain: tplink ha_platforms: - binary_sensor - button + - camera - climate - diagnostics - fan @@ -53,14 +55,19 @@ See [Supported Devices in python-kasa](https://python-kasa.readthedocs.io/en/sta Devices not listed below may work but if you encounter issues submit a bug report to [python-kasa](https://github.com/python-kasa/python-kasa). {% note %} -The hub attached Tapo buttons S200B and S200D do not currently support alerting when the button is pressed. +The hub attached Tapo buttons S200B and S200D, which do not currently support alerting when the button is pressed. +{% endnote %} + +{% note %} +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. {% endnote %} ### Supported Kasa devices - **Plugs**: EP10, EP25[^1], HS100[^2], HS103, HS105, HS110, KP100, KP105, KP115, KP125, KP125M[^1], KP401 - **Power Strips**: EP40, EP40M[^1], HS107, HS300, KP200, KP303, KP400 -- **Wall Switches**: ES20M, HS200[^2], HS210, HS220[^2], KP405, KS200M, KS205[^1], KS220, KS220M, KS225[^1], KS230, KS240[^1] +- **Wall Switches**: ES20M, HS200[^2], HS210, HS220[^2], KP405, KS200, KS200M, KS205[^1], KS220, KS220M, KS225[^1], KS230, KS240[^1] - **Bulbs**: KL110, KL120, KL125, KL130, KL135, KL50, KL60, LB110 - **Light Strips**: KL400L5, KL420L5, KL430 - **Hubs**: KH100[^1] @@ -69,23 +76,28 @@ The hub attached Tapo buttons S200B and S200D do not currently support alerting ### Supported Tapo[^1] devices - **Plugs**: P100, P110, P110M, P115, P125M, P135, TP15 -- **Power Strips**: P300, P304M, TP25 +- **Power Strips**: P210M, P300, P304M, P306, TP25 - **Wall Switches**: S500D, S505, S505D - **Bulbs**: L510B, L510E, L530E, L630 - **Light Strips**: L900-10, L900-5, L920-5, L930-5 -- **Cameras**: C210, TC65 +- **Cameras**: C100, C210, C225, C325WB, C520WS, TC65, TC70 - **Hubs**: H100, H200 - **Hub-Connected Devices[^3]**: S200B, S200D, T100, T110, T300, T310, T315 - -[^1]: Requires authentication -[^2]: Newer versions require authentication +[^1]: Model requires authentication +[^2]: Newer versions require authentication [^3]: Devices may work across TAPO/KASA branded hubs ## 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 This entity is only reported by older kasa devices. 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/transmission.markdown b/source/_integrations/transmission.markdown index a0c1d50c941..75417e85de2 100644 --- a/source/_integrations/transmission.markdown +++ b/source/_integrations/transmission.markdown @@ -56,7 +56,7 @@ Possible events are: - `transmission_started_torrent` - `transmission_removed_torrent` -Inside of the event, there is the name of the torrent that is started or completed, as it is seen in the Transmission User Interface. +Inside the event, there is the name of the torrent that is started or completed and the path where the files are downloaded, as seen in the Transmission User Interface. Example of an automation that notifies on successful download and removes the torrent from the client: @@ -71,7 +71,7 @@ Example of an automation that notifies on successful download and removes the to - action: notify.telegram_notifier data: title: "Torrent completed!" - message: "{{trigger.event.data.name}}" + message: "{{trigger.event.data.name}} downloaded to {{trigger.event.data.download_path}}" - action: transmission.remove_torrent data: entry_id: eeb52bc78e11d813a1e6bc68c8ff93c8 @@ -92,6 +92,7 @@ Adds a new torrent to download. It can either be a URL (HTTP, HTTPS or FTP), mag | ---------------------- | -------- | ------------------------ | | `entry_id` | no | The integration entry_id | | `torrent` | no | Torrent to download | +| `download_path` | yes | Absolute path to the download directory. If not specified, the Transmission's default directory will be used. | ### Action `remove_torrent` 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/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown index 071fd23e4be..a14e64da762 100644 --- a/source/_integrations/unifiprotect.markdown +++ b/source/_integrations/unifiprotect.markdown @@ -256,6 +256,40 @@ Use to remove a privacy zone from a camera. | `device_id` | No | Camera you want to remove privacy zone from. | | `name` | No | The name of the zone to remove. | +### Action unifiprotect.get_user_keyring_info + +| Data attribute | Optional | Description | +| -------------- | -------- | ----------------------------------------------------------------------------------------------------------- | +| `device_id` | No | Any device from the UniFi Protect instance you want to retrieve keyring information for. | + +#### Example Usage + +```yaml +service: unifiprotect.get_user_keyring_info +data: + device_id: your_device_id_here +``` + +The response will include a list of users with their full names, statuses, and associated keys (fingerprint or NFC). + +#### Example Response + +```yaml +users: + - full_name: User One + user_status: ACTIVE + ulp_id: d23e27e0-a32a-41e5-9424-be646330c2d5 + keys: [] + - full_name: User Two + user_status: ACTIVE + ulp_id: a243ffdb-3ab2-4186-b2fe-0b53ccb29f24 + keys: + - key_type: nfc + nfc_id: ABCDEF12 + - key_type: fingerprint + fingerprint_id: "1" +``` + ## Views The {% term integrations %} provides two proxy views to proxy media content from your Home Assistant instance so you can access thumbnails and video clips from within the context of Home Assistant without having to expose your UniFi Protect NVR Console. As with the media identifiers, all IDs are UniFi Protect IDs as they may not map to specific Home Assistant entities depending on how you have configured your {% term integrations %}. @@ -380,9 +414,11 @@ actions: action: notify.mobile_app_your_device # Replace with your notification target ``` +You can obtain the `nfc_id` using the [Action unifiprotect.get_user_keyring_info](#action-unifiprotectget_user_keyring_info). + **Warning:** -When processing NFC scans, always validate the scanned ID. Unknown NFC cards also trigger the scan event. Additionally, this event was developed using third-party cards, as the developer did not have access to official UniFi cards at the time. With third-party cards, the scan relies on the card's serial number. While this approach is not uncommon, it is essential to note that the card's serial number is generally not considered a secure identifier and can be duplicated relatively easily. +When processing NFC scans, always validate the scanned ID. Unknown NFC cards also trigger the scan event. Additionally, this event was developed using third-party cards, as the developer did not have access to official UniFi cards at the time. With third-party cards, the scan relies on the card's serial number. While this approach is not uncommon, it is essential to note that the card's serial number is generally not considered a secure identifier and can be duplicated relatively easily. When the device becomes unavailable and becomes available again in Home Assistant, repeated event processing can occur. The state change is not an issue with the integration but should be considered, mainly if the device is used for actions such as unlocking doors. ### Fingerprint Identified Event @@ -391,7 +427,9 @@ When processing NFC scans, always validate the scanned ID. Unknown NFC cards als - **event_type**: Either `identified` or `not_identified` - **event_id**: A unique ID that identifies the fingerprint event. - **ulp_id**: The ID used to identify the person. If no fingerprint match is found, the `ulp_id` will be empty and the `event_type` will be `not_identified`. -- **Description**: This event is triggered when a fingerprint is scanned by a compatible device. If the fingerprint is recognized, it provides a `ulp_id`, which represents the a internal user ID. If the fingerprint is not recognized, the `event_type` will be set to `not_identified`, and no `ulp_id` will be provided. +- **Description**: This event is triggered when a fingerprint is scanned by a compatible device. If the fingerprint is recognized, it provides a `ulp_id`, which represents the internal user ID. If the fingerprint is not recognized, the `event_type` will be set to `not_identified`, and no `ulp_id` will be provided. + +You can obtain the `ulp_id` using the [Action unifiprotect.get_user_keyring_info](#action-unifiprotectget_user_keyring_info). #### Example G4 Doorbell Fingerprint Identified Automation @@ -423,6 +461,36 @@ action: **Warning:** +Similar to NFC, an event is triggered when a fingerprint is recognized and not recognized. However, unlike NFC, at the time of implementation, no fingerprint ID is included in the event if the fingerprint is unknown. When the device becomes unavailable and becomes available again in Home Assistant, repeated event processing can occur. The state change is not an issue with the integration but should be considered, mainly if the device is used for actions such as unlocking doors. + +#### Example G4 Doorbell Fingerprint Identified Automation + +```yaml +alias: G4 Doorbell Fingerprint Identified Automation +description: Automation that triggers when a fingerprint is successfully identified on the G4 Doorbell Pro +trigger: + - platform: event + event_type: state_changed + event_data: + entity_id: event.g4_doorbell_pro_poe_fingerprint # Replace with your doorbell entity +condition: + - condition: template + value_template: > + {% raw %}{{ + trigger.event.data.new_state is not none and + trigger.event.data.new_state.attributes.event_type == 'identified' and + (trigger.event.data.new_state.attributes.ulp_id|default('')) != '' and + trigger.event.data.new_state.attributes.ulp_id in ['ALLOWED_ID1', 'ALLOWED_ID2'] + }}{% endraw %} +action: + - service: notify.mobile_app_your_device # Replace with your notification target + data: + {% raw %}message: "Fingerprint identified with ID: {{ trigger.event.data.new_state.attributes.ulp_id }}"{% endraw %} + title: "Fingerprint Scan Notification" +``` + +**Warning:** + Similar to NFC, an event is triggered when a fingerprint is recognized and not recognized. However, unlike NFC, at the time of implementation, no fingerprint ID is included in the event if the fingerprint is unknown. ## Troubleshooting 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 new file mode 100644 index 00000000000..325640bb9c0 --- /dev/null +++ b/source/_integrations/watergate.markdown @@ -0,0 +1,109 @@ +--- +title: Watergate +description: Instructions on how to integrate Watergate with Home Assistant. +ha_category: + - Sensor + - Valve + - Water management +ha_release: '2025.1' +ha_iot_class: Local Push +ha_config_flow: true +ha_codeowners: + - '@adam-the-hero' +ha_domain: watergate +ha_platforms: + - 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. +With this integration, you are able to: + +- Control your valve +- Monitor live telemetry (water flow, water pressure, water temperature) +- Monitor water usage + +## Prerequisites + +- You need to have a Sonic device. +- The Local API feature must be enabled in the Watergate application. + +## Supported devices + +The following devices are known to be supported by the integration: + +- Watergate Sonic Wi-Fi + +## Unsupported devices + +The following devices are not supported by the integration: + +- Watergate Sonic Pro + +## Supported functionality + +### Entities + +The Watergate integration provides the following entities. + +#### Sensors + +- **Water meter volume** + - **Description**: Water volume used by this device for the entire lifetime of a Sonic device. + - **Remarks**: It can be used in the Energy Dashboard. + +- **Water flow rate** + - **Description**: The current flow rate of water through the device. + - **Remarks**: Useful for monitoring real-time water usage. + +- **Water pressure** + - **Description**: The current water pressure in the system. + - **Remarks**: Can be used to detect potential issues in the water supply. + +- **Water temperature** + - **Description**: The current temperature of the water. + - **Remarks**: Useful for monitoring and ensuring safe water temperatures. + +#### Valves + +- **Water valve state** + - **Description**: The current state of the water valve (open/closed). + - **Remarks**: It is automatically updated when the valve state is changed. + +## Data updates + +The Watergate integration fetches data from the Sonic device every 2 minutes. +Thanks to the webhook option, Sonic will provide live telemetry every second when water is flowing directly to Home Assistant. + +## Known limitations + +The integration does not provide the ability to set auto shut-off thresholds and does not report any events regarding automatically closed valves. + +{% include integrations/config_flow.md %} + +{% configuration_basic %} +IP address: + description: "The IP address of your Sonic device." +{% endconfiguration_basic %} + +## Removing the integration + +This integration follows standard integration removal procedures. No extra steps are required. + +{% include integrations/remove_device_service.md %} + +## Examples + +### Monitor water usage in the Energy Dashboard + +The water meter volume entity can be added to the Energy Dashboard, allowing you to monitor water usage. + +### Automation ideas + +- Turn off the water when no one is at home. +- 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. diff --git a/source/_integrations/weheat.markdown b/source/_integrations/weheat.markdown index 4c572b97362..ee72e25210d 100644 --- a/source/_integrations/weheat.markdown +++ b/source/_integrations/weheat.markdown @@ -12,6 +12,7 @@ ha_codeowners: - '@jesperraemaekers' ha_domain: weheat ha_platforms: + - binary_sensor - sensor ha_integration_type: integration --- @@ -45,6 +46,17 @@ The Weheat integration provides the following sensors: - **Current room temperature**: Current room temperature in °C - **Room temperature setpoint**: Setpoint for the room temperature in °C - **Electricity used**: Total electricity used in kWh +- **Energy output**: Total output generated in kWh - **State**: The current heat pump state - **DHW top temperature**: The domestic hot water temperature in the top of the vessel in °C (optional) - **DHW bottom temperature"**: The domestic hot water temperature in the bottom of the vessel in °C (optional) +- **Compressor RPM**: The rpm of the compressor fan. +- **Compressor percentage**: The percentage of the compressor fan. Can exceed 100% for some models. + +Depending on the model/installation, states for the Indoor Unit states are available: + +- **Indoor unit water pump** +- **Indoor unit auxiliary water pump** +- **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** 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/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..249ab82c540 --- /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 03, 2025" +author: Paulus Schoutsen +comments: true +categories: Announcements +og_image: /images/blog/2025-01-backups/art.jpg +--- + +3 2 1 backup + +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 + +the backup page + +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 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 + +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 + +Encryption key page + +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..0e494eda91b --- /dev/null +++ b/source/_posts/2025-01-03-release-20251.markdown @@ -0,0 +1,735 @@ +--- +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) +- [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. + +Screenshot showing the bew backup overview page which shows you exactly when your last backup took place + +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. + +Screenshot showing the backup now button + dialog that allows you to trigger an off-schedule backup at any time + +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! 🎁** + +Home Assistant Cloud is now a backup target location, that is included with the Home Assistant Cloud subscription at no additional costs + +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. + +Screenshot showing an potential example storage provider provided by an integration + +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. + +The new backup overview page shows you exactly when your last backup took place + +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. + +You can now configure a retention policy for your backups, allowing Home Assistant to clean it up automatically + +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. + +Screenshot of the our friendly wizard that will help you setting up your backups + +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**! 🎉 + +If you press the d on your keyboard, it will pop up the Quickbar for devices + +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. + +If you press the d on your keyboard, it will pop up the quick bar for devices + +### 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 any graph in Home Assistant, by holding ctrl or command and scrolling your mouse wheel! +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. + +Zoom any graph in Home Assistant, by holding ctrl or command and scroll your mouse wheel! + +### 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. + +You can now fully customize the background of your dashboard, with the options to changing tiling, transparency, alignment, and size seettings + +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! + +The tile card with a media player entity, having the volume feature slider enabled + +[@simon-zumbrunnen]: https://github.com/simon-zumbrunnen + +## 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 446b9c72b6c..10959560130 100644 --- a/source/_redirects +++ b/source/_redirects @@ -400,8 +400,9 @@ layout: null /cookbook/#infrastructure /examples/#infrastructure /cookbook/#automation-examples /examples /cookbook /examples -/common-tasks/os/#snapshots /common-tasks/os/#backups -/common-tasks/supervised/#snapshots /common-tasks/supervised/#backups +/common-tasks/os/#snapshots /common-tasks/general/#backups +/common-tasks/os/#backups /common-tasks/general/#backups +/common-tasks/supervised/#snapshots /common-tasks/general/#backups /more-info/unsupported/container /more-info/unsupported/software /integrations/zigbee /integrations/zha /examples / @@ -612,6 +613,7 @@ layout: null /integrations/shiftr /more-info/removed-integration 301 /integrations/sht31 /more-info/removed-integration 301 /integrations/simple_alarm /more-info/removed-integration 301 +/integrations/simulated /more-info/removed-integration 301 /integrations/smarthab /more-info/removed-integration 301 /integrations/sochain /more-info/removed-integration 301 /integrations/socialblade /more-info/removed-integration 301 @@ -619,6 +621,7 @@ layout: null /integrations/spider /more-info/removed-integration 301 /integrations/spotcrime /more-info/removed-integration 301 /integrations/srp_energy /more-info/removed-integration 301 +/integrations/stookalert /more-info/removed-integration 301 /integrations/synology /more-info/removed-integration 301 /integrations/sytadin /more-info/removed-integration 301 /integrations/tahoma /more-info/removed-integration 301 diff --git a/source/changelogs/core-2025.1.markdown b/source/changelogs/core-2025.1.markdown new file mode 100644 index 00000000000..81c2d5413bb --- /dev/null +++ b/source/changelogs/core-2025.1.markdown @@ -0,0 +1,2161 @@ +--- +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]) + +[#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/container.markdown b/source/common-tasks/container.markdown index bba727053b6..841e2af514b 100644 --- a/source/common-tasks/container.markdown +++ b/source/common-tasks/container.markdown @@ -4,6 +4,10 @@ description: "Common tasks for Home Assistant Container" installation: container --- +## 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). + ## Update {% include common-tasks/update.md %} diff --git a/source/common-tasks/core.markdown b/source/common-tasks/core.markdown index 60ea197ac7e..da09a975c86 100644 --- a/source/common-tasks/core.markdown +++ b/source/common-tasks/core.markdown @@ -4,6 +4,10 @@ description: "Common tasks for Home Assistant Core" installation: core --- +## 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). + ## Update {% include common-tasks/update.md %} diff --git a/source/common-tasks/general.markdown b/source/common-tasks/general.markdown index 125a8b12fa2..aa6bd725dbb 100644 --- a/source/common-tasks/general.markdown +++ b/source/common-tasks/general.markdown @@ -5,6 +5,8 @@ installation_name: "Installation independent" --- This section provides tasks that do not depend on a specific Home Assistant installation type or a specific integration. They may be referenced in other procedures. +{% include common-tasks/backups.md %} + {% include common-tasks/enable_entities.md %} ## Defining a custom polling interval diff --git a/source/common-tasks/os.markdown b/source/common-tasks/os.markdown index fcac32748eb..198637e4ef1 100644 --- a/source/common-tasks/os.markdown +++ b/source/common-tasks/os.markdown @@ -9,7 +9,6 @@ related: This section will provide guides to some common tasks and information which you will need in order to run, maintain, and edit your Home Assistant OS system. For further details on any particular subject, make sure to refer to the documentation for specific add-ons or topics listed here. {% include common-tasks/file_access.md %} -{% include common-tasks/backups.md %} ## Updating Home Assistant @@ -26,7 +25,7 @@ Updates of the {% term "Home Assistant Operating System" %} are independent of o #### Prerequisites -- [Backup](/common-tasks/os/#backups) your installation. +- [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. diff --git a/source/common-tasks/supervised.markdown b/source/common-tasks/supervised.markdown index ca6781d7151..c4c6cbf4d31 100644 --- a/source/common-tasks/supervised.markdown +++ b/source/common-tasks/supervised.markdown @@ -9,7 +9,6 @@ related: {% include common-tasks/file_access.md %} -{% include common-tasks/backups.md %} ## Update diff --git a/source/dashboards/features.markdown b/source/dashboards/features.markdown index 093d3393e88..a94b16e5ca8 100644 --- a/source/dashboards/features.markdown +++ b/source/dashboards/features.markdown @@ -470,6 +470,27 @@ type: type: string {% endconfiguration %} +## Media player volume slider + +Widget that displays a slider to control the volume for a [media player](/integrations/media_player). + +

+ Screenshot of the tile card with media player volume slider feature + Screenshot of the tile card with media player volume slider feature +

+ +```yaml +features: + - type: "media-player-volume-slider" +``` + +{% configuration features %} +type: + required: true + description: "`media-player-volume-slider`" + type: string +{% endconfiguration %} + ## Numeric input Widget that displays a slider or buttons to set the value for a [number](/integrations/number) or [input number](/integrations/input_number). diff --git a/source/dashboards/views.markdown b/source/dashboards/views.markdown index 27362646c87..30405a85324 100644 --- a/source/dashboards/views.markdown +++ b/source/dashboards/views.markdown @@ -193,7 +193,69 @@ Set a separate [theme](/integrations/frontend/#themes) for the view and its card You can style the background of your views with a [theme](/integrations/frontend/#themes). You can use the CSS variable `lovelace-background`. For wallpapers you probably want to use the example below, more options can be found [here](https://developer.mozilla.org/en-US/docs/Web/CSS/background). -### Example +### View-specific background settings + +**Image** - Sets the background image to use behind the view: + - **Upload picture** lets you pick an image from the system used to show your Home Assistant UI. + - **Local path** lets you pick an image stored on Home Assistant. For example: `/homeassistant/images/lights_view_background_image.jpg`. + - To store an image on Home Assistant, you need to [configure access to files](/common-tasks/os/#configuring-access-to-files), for example via [Samba](/common-tasks/os/#installing-and-using-the-samba-add-on) or the [Studio Code Server](/common-tasks/os/#installing-and-using-the-visual-studio-code-vsc-add-on) add-on. + - **web URL** let you pick an image from the web. For example `https://www.home-assistant.io/images/frontpage/assist_wake_word.png`. + +{% configuration views %} +background: + required: false + description: Customize the view's background with options for image, transparency, size, alignment, repeat, and attachment. + type: map + keys: + image: + required: false + description: Sets the background image to use behind the view. + type: string + opacity: + required: false + description: Adjust the background's opacity, from fully opaque to transparent. + type: integer + default: 100 + size: + required: false + description: Choose how the background fits the space. Defaults to the original picture size, fill view (`cover` in YAML) fills the view with cropping if necessary and fits view (`contain` in YAML) fits the image within the view, maintaining aspect ratio. + type: string + default: auto + alignment: + required: false + description: Precisely position the background. Valid options can be anything between top left and bottom right, with center being the default. + type: string + default: center + repeat: + required: false + description: Controls whether the background repeats across the view. Repeating is useful when a tiled background is being used. + type: string + default: no-repeat + attachment: + required: false + description: Controls whether a background image's position is fixed within the view, or scrolls. + type: string + default: scroll +{% endconfiguration %} + +#### Example + +```yaml +# Example background section in view yaml +background: + image: /local/background.png + opacity: 50 # any percentage between 0 and 100 + size: auto # auto, cover, contain + alignment: center # top left, top center, top right, center left, center, center right, bottom left, bottom center, bottom right + repeat: no-repeat # repeat, no-repeat + attachment: scroll # scroll, fixed +``` + +### Background theme variable + +You can style the background of all your views with a [theme](/integrations/frontend/#themes). You can use the CSS variable `lovelace-background`. For wallpapers you probably want to use the example below, more options can be found [here](https://developer.mozilla.org/en-US/docs/Web/CSS/background). + +#### Example ```yaml # Example configuration.yaml entry diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index f2637504869..45fe1b13274 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -8,7 +8,7 @@ related: title: configuration.yaml file - docs: /common-tasks/os/#network-storage title: Network storage - - docs: /common-tasks/os/#backups + - docs: /common-tasks/general/#backups title: Backups - docs: /voice_control/ title: Voice control @@ -40,8 +40,8 @@ You can back up your Home Assistant, add-on data, and configuration. Backups are To learn how to create a backup of your Home Assistant installation, select the link below that matches your installation type. -- {% term "Home Assistant Operating System" %}: [Creating a backup from OS](/common-tasks/os/#backups) -- {% term "Home Assistant Supervised" %}: [Creating a backup from Supervised](/common-tasks/supervised/#backups) +- {% term "Home Assistant Operating System" %}: [Creating a backup from OS](/common-tasks/general/#backups) +- {% term "Home Assistant Supervised" %}: [Creating a backup from Supervised](/common-tasks/general/#backups) - {% term "Home Assistant Core" %} or {% term "Home Assistant Container" %}: [Creating a backup from Core or Container](/integrations/backup/) ## Editing the configuration.yaml and configuring file access diff --git a/source/images/blog/2025-01-backups/art.jpg b/source/images/blog/2025-01-backups/art.jpg new file mode 100644 index 00000000000..906f9786bda Binary files /dev/null and b/source/images/blog/2025-01-backups/art.jpg differ diff --git a/source/images/blog/2025-01-backups/backups.png b/source/images/blog/2025-01-backups/backups.png new file mode 100644 index 00000000000..921920792de Binary files /dev/null and b/source/images/blog/2025-01-backups/backups.png differ diff --git a/source/images/blog/2025-01-backups/encrypt.png b/source/images/blog/2025-01-backups/encrypt.png new file mode 100644 index 00000000000..3f415173a9f Binary files /dev/null and b/source/images/blog/2025-01-backups/encrypt.png differ diff --git a/source/images/blog/2025-01-backups/locations.png b/source/images/blog/2025-01-backups/locations.png new file mode 100644 index 00000000000..43cb79ff194 Binary files /dev/null and b/source/images/blog/2025-01-backups/locations.png differ diff --git a/source/images/blog/2025-01-backups/wizard.png b/source/images/blog/2025-01-backups/wizard.png new file mode 100644 index 00000000000..13cd56b144d Binary files /dev/null and b/source/images/blog/2025-01-backups/wizard.png differ diff --git a/source/images/blog/2025-01/backups-backup-now.png b/source/images/blog/2025-01/backups-backup-now.png new file mode 100644 index 00000000000..5c0bfb304c5 Binary files /dev/null and b/source/images/blog/2025-01/backups-backup-now.png differ diff --git a/source/images/blog/2025-01/backups-encryption.png b/source/images/blog/2025-01/backups-encryption.png new file mode 100644 index 00000000000..49f3f512000 Binary files /dev/null and b/source/images/blog/2025-01/backups-encryption.png differ diff --git a/source/images/blog/2025-01/backups-home-assistant-cloud.png b/source/images/blog/2025-01/backups-home-assistant-cloud.png new file mode 100644 index 00000000000..3c588256bab Binary files /dev/null and b/source/images/blog/2025-01/backups-home-assistant-cloud.png differ diff --git a/source/images/blog/2025-01/backups-integration-location.png b/source/images/blog/2025-01/backups-integration-location.png new file mode 100644 index 00000000000..80126230363 Binary files /dev/null and b/source/images/blog/2025-01/backups-integration-location.png differ diff --git a/source/images/blog/2025-01/backups-retention.png b/source/images/blog/2025-01/backups-retention.png new file mode 100644 index 00000000000..5a0f9a3461c Binary files /dev/null and b/source/images/blog/2025-01/backups-retention.png differ diff --git a/source/images/blog/2025-01/backups-status.png b/source/images/blog/2025-01/backups-status.png new file mode 100644 index 00000000000..2f3980dcdeb Binary files /dev/null and b/source/images/blog/2025-01/backups-status.png differ diff --git a/source/images/blog/2025-01/backups-wizard.png b/source/images/blog/2025-01/backups-wizard.png new file mode 100644 index 00000000000..7014a537821 Binary files /dev/null and b/source/images/blog/2025-01/backups-wizard.png differ diff --git a/source/images/blog/2025-01/dashboards-background-settings.png b/source/images/blog/2025-01/dashboards-background-settings.png new file mode 100644 index 00000000000..88e910ecee3 Binary files /dev/null and b/source/images/blog/2025-01/dashboards-background-settings.png differ diff --git a/source/images/blog/2025-01/social.jpg b/source/images/blog/2025-01/social.jpg new file mode 100644 index 00000000000..b9eabe52c7d Binary files /dev/null and b/source/images/blog/2025-01/social.jpg differ diff --git a/source/images/blog/2025-01/tile-card-feature-volume-slider.png b/source/images/blog/2025-01/tile-card-feature-volume-slider.png new file mode 100644 index 00000000000..72a326eec23 Binary files /dev/null and b/source/images/blog/2025-01/tile-card-feature-volume-slider.png differ diff --git a/source/images/blog/2025-01/wth-category-labels-new-automation.png b/source/images/blog/2025-01/wth-category-labels-new-automation.png new file mode 100644 index 00000000000..4692ee05e36 Binary files /dev/null and b/source/images/blog/2025-01/wth-category-labels-new-automation.png differ diff --git a/source/images/blog/2025-01/wth-default-expose-to-assist.png b/source/images/blog/2025-01/wth-default-expose-to-assist.png new file mode 100644 index 00000000000..f744fe7a216 Binary files /dev/null and b/source/images/blog/2025-01/wth-default-expose-to-assist.png differ diff --git a/source/images/blog/2025-01/wth-quickbar-devices.png b/source/images/blog/2025-01/wth-quickbar-devices.png new file mode 100644 index 00000000000..199792a9eff Binary files /dev/null and b/source/images/blog/2025-01/wth-quickbar-devices.png differ diff --git a/source/images/blog/2025-01/wth-zoom-graphs.gif b/source/images/blog/2025-01/wth-zoom-graphs.gif new file mode 100644 index 00000000000..ef18edc3d70 Binary files /dev/null and b/source/images/blog/2025-01/wth-zoom-graphs.gif differ diff --git a/source/images/dashboards/features/media_player_volume_slider.png b/source/images/dashboards/features/media_player_volume_slider.png new file mode 100644 index 00000000000..e0ce8f91cc4 Binary files /dev/null and b/source/images/dashboards/features/media_player_volume_slider.png differ diff --git a/source/images/integrations/nordpool/nordpool_tomorrow_lowest_price.png b/source/images/integrations/nordpool/nordpool_tomorrow_lowest_price.png new file mode 100644 index 00000000000..1ce64f3fe3a Binary files /dev/null and b/source/images/integrations/nordpool/nordpool_tomorrow_lowest_price.png differ diff --git a/source/images/integrations/slide_local/slide-bottom.png b/source/images/integrations/slide_local/slide-bottom.png new file mode 100644 index 00000000000..770060aabcd Binary files /dev/null and b/source/images/integrations/slide_local/slide-bottom.png differ diff --git a/source/images/more-info/backup_emergency_kit_01.png b/source/images/more-info/backup_emergency_kit_01.png new file mode 100644 index 00000000000..852a3830619 Binary files /dev/null and b/source/images/more-info/backup_emergency_kit_01.png differ diff --git a/source/images/screenshots/network-storage/backup_locations_all.png b/source/images/screenshots/network-storage/backup_locations_all.png new file mode 100644 index 00000000000..2c1f87e0b52 Binary files /dev/null and b/source/images/screenshots/network-storage/backup_locations_all.png differ diff --git a/source/images/screenshots/network-storage/backup_select_local_default.png b/source/images/screenshots/network-storage/backup_select_local_default.png new file mode 100644 index 00000000000..f94de662370 Binary files /dev/null and b/source/images/screenshots/network-storage/backup_select_local_default.png differ diff --git a/source/images/screenshots/network-storage/change_backup_dark.png b/source/images/screenshots/network-storage/change_backup_dark.png deleted file mode 100644 index 6231188c0f4..00000000000 Binary files a/source/images/screenshots/network-storage/change_backup_dark.png and /dev/null differ diff --git a/source/images/screenshots/network-storage/change_backup_light.png b/source/images/screenshots/network-storage/change_backup_light.png deleted file mode 100644 index bfe646bbb74..00000000000 Binary files a/source/images/screenshots/network-storage/change_backup_light.png and /dev/null differ diff --git a/source/installation/index.html b/source/installation/index.html index a3fe1ba5579..f3bf6668838 100644 --- a/source/installation/index.html +++ b/source/installation/index.html @@ -332,7 +332,7 @@ toc: true {% icon "noto-v1:check-mark" %}2 - Backups + Backups {% icon "openmoji:check-mark" %} {% icon "noto-v1:check-mark" %}3 {% icon "noto-v1:check-mark" %}3 diff --git a/source/more-info/backup-emergency-kit.markdown b/source/more-info/backup-emergency-kit.markdown new file mode 100644 index 00000000000..ece0a3a665a --- /dev/null +++ b/source/more-info/backup-emergency-kit.markdown @@ -0,0 +1,39 @@ +--- +title: "Backup emergency kit" +description: "Information about backup emergency kit" +related: + - docs: /common-tasks/general/#backups + title: Backups +--- + +[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. + +## What is encryption, and why are backups encrypted? + +Encryption is a method of converting data into a coded format so that it can only be read by someone who has the encryption key. This ensures that your data about your home remains private. So even if someone else had a copy of your Home Assistant backup, it is unreadable for them without the encryption key. + +## Storing the backup emergency kit somewhere safe + +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. + + ![Screenshot showing the encryption key in the download dialog for the backup emergency kit](/images/more-info/backup_emergency_kit_01.png) + +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). + +## Changing your encryption key + +When you set up your [backups](/common-tasks/general/#backups), an encryption key is generated automatically. This key is used for all your backups. You can replace this key with a new one, which will be used for all future backups. To decrypt backups created before the change, you will still need the previous encryption key. + +1. Go to {% my backup title="**Settings** > **System** > **Backups**" %}. +2. Select **Configure automatic backups** and under **Encryption key**, select **Change**. +3. If you haven't downloaded the old emergency kit yet, do it now. + - As the new encryption key won't work for the backups you've taken until now, keep it somewhere safe and make a note of which backups it applies to. +4. To generate a new encryption key, select **Change encryption key**. +5. Download the new encryption key and store it in a safe place. + +## I lost my backup encryption key - how can I retrieve it? + +If you still have access to your Home Assistant instance you can download the encryption key again from the backup settings. If you have lost the encryption key, and have no access to your Home Assistant instance, there is no way to restore the backup. diff --git a/source/more-info/free-space.markdown b/source/more-info/free-space.markdown index f737abfaf62..2cef9ccd9c1 100644 --- a/source/more-info/free-space.markdown +++ b/source/more-info/free-space.markdown @@ -47,20 +47,15 @@ the database. ### Deleting obsolete backups -Previous backups are not included when you create a new one. But they do take up space. To delete old backups, follow these steps: +Previous backups are not included when you create a new one. But they do take up space. -1. Go to {% my backup title="**Settings** > **System** > **Backups**" %}. -2. From the list of backups, select all the ones you want to delete, then select **Delete selected backups**. - - This clears up space in Home Assistant. +1. To delete old backups, follow the steps on [deleting obsolete backups](/common-tasks/general/#deleting-obsolete-backups). +2. Ideally, backups don't pile up on the system to begin with. + - To define how long automatic backups should be kept on the system, follow the steps on [setting up an automatic backup process](/common-tasks/os/#setting-up-an-automatic-backup-process). ### Storing backups outside of Home Assistant -Storing backups outside of Home Assistant makes sure they don't use space on Home Assistant to begin with. It also makes sure you can [restore Home Assistant from backup](/common-tasks/os/#restoring-a-backup) in case you have an issue with your current installation. - -1. Go to {% my backup title="**Settings** > **System** > **Backups**" %}, and from the list of backups, select the backup you want to keep. -2. In the dialog, select the checkbox for each component, in the three-dots menu, select **Download backup**. -3. Store the backup somewhere safe. - - For example, [add network storage](/common-tasks/os/#network-storage), and then [change your default backup location](/common-tasks/os/#change-default-backup-location). +Storing backups outside of Home Assistant makes sure they don't use space on Home Assistant to begin with. It also makes sure you can [restore Home Assistant from backup](/common-tasks/general/#restoring-a-backup) in case you have an issue with your current installation. Follow the steps on [defining backup locations](/common-tasks/general/#defining-backup-locations). ## Uninstalling unused add-ons @@ -78,7 +73,7 @@ If the above steps to free up space did not help, you need to expand your storag When you are running {% term "Home Assistant Operating System" %}, you can use the following options to expand your storage: -- Replace your current storage medium, for example, the SD card, with a bigger one. Use a backup to [restore Home Assistant from backup](/common-tasks/os/#restoring-a-backup) on the new SD card. +- Replace your current storage medium, for example, the SD card, with a bigger one. Use a backup to [restore Home Assistant from backup](/common-tasks/general/#restoring-a-backup) on the new SD card. - [Use an external data disk](/common-tasks/os/#using-external-data-disk) ### Expanding storage on VM