diff --git a/.vscode/cSpell.json b/.vscode/cSpell.json index 2029b1293af..8fd7b5cbd2f 100644 --- a/.vscode/cSpell.json +++ b/.vscode/cSpell.json @@ -93,7 +93,8 @@ "WSDTH", "WTHV", "Xiaomi", - "Zigbee" + "Zigbee", + "Zimi" ], // flagWords - list of words to be always considered incorrect // This is useful for offensive words and common spelling errors. diff --git a/CODEOWNERS b/CODEOWNERS index 295d70c67ee..69f8ceef5d9 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -15,7 +15,7 @@ source/_integrations/acaia.markdown @zweckj source/_integrations/accuweather.markdown @bieniu source/_integrations/acmeda.markdown @atmurray source/_integrations/acomax.markdown @starkillerOG -source/_integrations/adax.markdown @danielhiversen +source/_integrations/adax.markdown @danielhiversen @lazytarget source/_integrations/adguard.markdown @frenck source/_integrations/ads.markdown @mrpasztoradam source/_integrations/advantage_air.markdown @Bre77 @@ -41,6 +41,7 @@ source/_integrations/alarm_control_panel.template.markdown @home-assistant/core source/_integrations/alert.markdown @home-assistant/core @frenck source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy @jbouwh source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy @jbouwh +source/_integrations/amazon_devices.markdown @chemelli74 source/_integrations/amazon_polly.markdown @jschlyter source/_integrations/amberelectric.markdown @madpilot source/_integrations/ambient_network.markdown @thomaskistler @@ -92,6 +93,7 @@ source/_integrations/auth.markdown @home-assistant/core source/_integrations/automation.markdown @home-assistant/core source/_integrations/avea.markdown @pattyland source/_integrations/awair.markdown @ahayworth @danielsjf +source/_integrations/aws_s3.markdown @tomasbedrich source/_integrations/axis.markdown @Kane610 source/_integrations/azure_data_explorer.markdown @kaareseras source/_integrations/azure_devops.markdown @timmo001 @@ -112,7 +114,7 @@ source/_integrations/blebox.markdown @bbx-a @swistakm source/_integrations/blink.markdown @fronzbot @mkmer source/_integrations/bliss_automation.markdown @starkillerOG source/_integrations/bloc_blinds.markdown @starkillerOG -source/_integrations/blue_current.markdown @Floris272 @gleeuwen +source/_integrations/blue_current.markdown @gleeuwen @NickKoepr @jtodorova23 source/_integrations/bluemaestro.markdown @bdraco source/_integrations/blueprint.markdown @home-assistant/core source/_integrations/bluesound.markdown @thrawnarn @LouisChrist @@ -177,7 +179,6 @@ source/_integrations/cozytouch.markdown @imicknl source/_integrations/cpuspeed.markdown @fabaff source/_integrations/cribl.markdown @Bre77 source/_integrations/crownstone.markdown @Crownstone @RicArch97 -source/_integrations/cups.markdown @fabaff source/_integrations/dacia.markdown @epenet source/_integrations/daikin.markdown @fredrike source/_integrations/date.markdown @home-assistant/core @@ -269,7 +270,7 @@ source/_integrations/event.markdown @home-assistant/core source/_integrations/evergy.markdown @tronikos source/_integrations/evil_genius_labs.markdown @balloob source/_integrations/evohome.markdown @zxdavb -source/_integrations/ezviz.markdown @RenierM26 @baqs +source/_integrations/ezviz.markdown @RenierM26 source/_integrations/faa_delays.markdown @ntilley905 source/_integrations/fan.markdown @home-assistant/core source/_integrations/fan.template.markdown @home-assistant/core @@ -414,6 +415,7 @@ source/_integrations/image_upload.markdown @home-assistant/core source/_integrations/imap.markdown @jbouwh source/_integrations/imeon_inverter.markdown @Imeon-Energy source/_integrations/imgw_pib.markdown @bieniu +source/_integrations/immich.markdown @mib1185 source/_integrations/improv_ble.markdown @emontnemery source/_integrations/incomfort.markdown @jbouwh source/_integrations/indianamichiganpower.markdown @tronikos @@ -454,6 +456,7 @@ source/_integrations/jewish_calendar.markdown @tsvi source/_integrations/juicenet.markdown @jesserockz source/_integrations/justnimbus.markdown @kvanzuijlen source/_integrations/jvc_projector.markdown @SteveEasley @msavazzi +source/_integrations/kaiser_nienhaus.markdown @starkillerOG source/_integrations/kaiterra.markdown @Michsior14 source/_integrations/kaleidescape.markdown @SteveEasley source/_integrations/keba.markdown @dannerph @@ -647,7 +650,7 @@ source/_integrations/openhome.markdown @bazwilliams source/_integrations/opensky.markdown @joostlek source/_integrations/opentherm_gw.markdown @mvn23 source/_integrations/openuv.markdown @bachya -source/_integrations/openweathermap.markdown @fabaff @freekode @nzapponi +source/_integrations/openweathermap.markdown @fabaff @freekode @nzapponi @wittypluck source/_integrations/opnsense.markdown @mtreinish source/_integrations/opower.markdown @tronikos source/_integrations/oralb.markdown @bdraco @Lash-L @@ -662,6 +665,7 @@ source/_integrations/ovo_energy.markdown @timmo001 source/_integrations/p1_monitor.markdown @klaasnicolaas source/_integrations/palazzetti.markdown @dotvav source/_integrations/panel_custom.markdown @home-assistant/frontend +source/_integrations/paperless_ngx.markdown @fvgarrel source/_integrations/pcs_lighting.markdown @gwww source/_integrations/peblar.markdown @frenck source/_integrations/peco.markdown @IceBotYT @@ -689,6 +693,7 @@ 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/probe_plus.markdown @pantherale0 source/_integrations/profiler.markdown @bdraco source/_integrations/profilo.markdown @DavidMStraub @Diegorro98 @MartinHjelmare source/_integrations/progettihwsw.markdown @ardaseremet @@ -768,7 +773,6 @@ source/_integrations/russound_rnet.markdown @noahhusby source/_integrations/ruuvi_gateway.markdown @akx source/_integrations/ruuvitag_ble.markdown @akx source/_integrations/rympro.markdown @OnFreund @elad-bar @maorcc -source/_integrations/s3.markdown @tomasbedrich source/_integrations/sabnzbd.markdown @shaiu @jpbede source/_integrations/saj.markdown @fredericvl source/_integrations/samsam.markdown @klaasnicolaas @@ -804,6 +808,7 @@ source/_integrations/sfr_box.markdown @epenet source/_integrations/sharkiq.markdown @JeffResc @funkybunch source/_integrations/shell_command.markdown @home-assistant/core source/_integrations/shelly.markdown @balloob @bieniu @thecode @chemelli74 @bdraco +source/_integrations/shelly_zwave.markdown @home-assistant/z-wave source/_integrations/shodan.markdown @fabaff source/_integrations/sia.markdown @eavanvalkenburg source/_integrations/siemens.markdown @DavidMStraub @Diegorro98 @MartinHjelmare @@ -826,6 +831,7 @@ source/_integrations/slide_local.markdown @dontinelli source/_integrations/slimproto.markdown @marcelveldt source/_integrations/sma.markdown @kellerza @rklomp @erwindouna source/_integrations/smappee.markdown @bsmappee +source/_integrations/smarla.markdown @explicatis @rlint-explicatis source/_integrations/smart_blinds.markdown @starkillerOG source/_integrations/smart_home.markdown @starkillerOG source/_integrations/smart_meter_texas.markdown @grahamwetzler @@ -870,7 +876,7 @@ source/_integrations/stream.markdown @hunterjm @uvjustin @allenporter source/_integrations/stt.markdown @home-assistant/core source/_integrations/subaru.markdown @G-Two source/_integrations/suez_water.markdown @ooii @jb101010-2 -source/_integrations/sun.markdown @Swamp-Ig +source/_integrations/sun.markdown @home-assistant/core source/_integrations/supla.markdown @mwegrzynek source/_integrations/surepetcare.markdown @benleb @danielhiversen source/_integrations/swepco.markdown @tronikos @@ -880,7 +886,7 @@ source/_integrations/switch.markdown @home-assistant/core source/_integrations/switch.template.markdown @home-assistant/core source/_integrations/switch_as_x.markdown @home-assistant/core source/_integrations/switchbee.markdown @jafar-atili -source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski +source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski @zerzhang source/_integrations/switchbot_cloud.markdown @SeraphicRav @laurence-presland @Gigatrappeur source/_integrations/switcher_kis.markdown @thecode @YogevBokobza source/_integrations/switchmate.markdown @danielhiversen @qiz-li @@ -903,7 +909,7 @@ source/_integrations/tautulli.markdown @ludeeus @tkdrob source/_integrations/technove.markdown @Moustachauve source/_integrations/tedee.markdown @patrickhilker @zweckj source/_integrations/tellduslive.markdown @fredrike -source/_integrations/template.markdown @Petro31 @PhracturedBlue @home-assistant/core +source/_integrations/template.markdown @Petro31 @home-assistant/core source/_integrations/tesla_fleet.markdown @Bre77 source/_integrations/tesla_wall_connector.markdown @einarhauks source/_integrations/teslemetry.markdown @Bre77 @@ -983,7 +989,7 @@ source/_integrations/vizio.markdown @raman325 source/_integrations/vlc_telnet.markdown @rodripf @MartinHjelmare source/_integrations/vodafone_station.markdown @paoloantinori @chemelli74 source/_integrations/voice_assistant.markdown @balloob @synesthesiam -source/_integrations/voip.markdown @balloob @synesthesiam +source/_integrations/voip.markdown @balloob @synesthesiam @jaminh source/_integrations/volumio.markdown @OnFreund source/_integrations/volvooncall.markdown @molobrakos source/_integrations/vulcan.markdown @Antoni-Czaplicki @@ -1048,6 +1054,7 @@ source/_integrations/zeroconf.markdown @bdraco source/_integrations/zerproc.markdown @emlove source/_integrations/zeversolar.markdown @kvanzuijlen source/_integrations/zha.markdown @dmulcahey @adminiuga @puddly @TheJulianJES +source/_integrations/zimi.markdown @markhannon source/_integrations/zodiac.markdown @JulienTant source/_integrations/zondergas.markdown @klaasnicolaas source/_integrations/zone.markdown @home-assistant/core diff --git a/_config.yml b/_config.yml index cd202946ed4..e8d868670ae 100644 --- a/_config.yml +++ b/_config.yml @@ -107,9 +107,9 @@ social: # Home Assistant release details current_major_version: 2025 -current_minor_version: 5 -current_patch_version: 3 -date_released: 2025-05-23 +current_minor_version: 6 +current_patch_version: 0 +date_released: 2025-06-11 # 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/gauge.markdown b/source/_dashboards/gauge.markdown index 96109181545..2fb2304f1e5 100644 --- a/source/_dashboards/gauge.markdown +++ b/source/_dashboards/gauge.markdown @@ -39,6 +39,10 @@ entity: required: true description: Entity ID to show. type: string +attribute: + required: false + description: Attribute from the selected entity to display + type: string name: required: false description: Name of gauge entity. @@ -198,3 +202,14 @@ segments: - from: 65 color: var(--error-color) ``` + +Display attribute of an entity instead of its state: + +```yaml +type: gauge +entity: sensor.back_door_info +attribute: battery_level +unit: '%' +max: 100 +``` +In this example, the card displays the `battery_level` attribute of the `sensor.back_door_info` entity. diff --git a/source/_dashboards/map.markdown b/source/_dashboards/map.markdown index e16e352197a..27197ccdb2a 100644 --- a/source/_dashboards/map.markdown +++ b/source/_dashboards/map.markdown @@ -102,6 +102,11 @@ hours_to_show: description: Shows a path of previous locations. Hours to show as path on the map. type: integer default: 0 +cluster: + required: false + description: 'When set to `false`, the map will not cluster the markers. This is useful when you want to see all markers at once, but it may cause performance issues with a large number of markers.' + type: boolean + default: true {% endconfiguration %} {% important %} diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 676c4014908..dfbc473f02f 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -63,7 +63,8 @@ Jinja supports a set of language extensions that add new functionality to the la To improve the experience of writing Jinja templates, we have enabled the following extensions: -- [Loop Controls](https://jinja.palletsprojects.com/en/3.0.x/extensions/#loop-controls) (`break` and `continue`) +- [Loop Controls](https://jinja.palletsprojects.com/en/stable/extensions/#loop-controls) (`break` and `continue`) +- [Expression Statement](https://jinja.palletsprojects.com/en/stable/extensions/#expression-statement) (`do`) ### Reusing templates @@ -79,7 +80,7 @@ For example, you might define a macro in a template in `config/custom_templates/ {% raw %} -```text +```jinja {% macro format_entity(entity_id) %} {{ state_attr(entity_id, 'friendly_name') }} - {{ states(entity_id) }} {% endmacro %} @@ -91,13 +92,32 @@ In your automations, you could then reuse this macro by importing it: {% raw %} -```text +```jinja {% from 'formatter.jinja' import format_entity %} {{ format_entity('sensor.temperature') }} ``` +{$ endraw %} + +Home Assistant also allows you to write macros with non-string return values by +taking a named argument called `returns` and calling it with a return value. Once created, +pass the macro into the `as_function` filter to use the returned value: + +{% raw %} + +```jinja +{%- macro macro_is_switch(entity_name, returns) -%} + {%- do returns(entity_name.startswith('switch.')) -%} +{%- endmacro -%} +{%- set is_switch = macro_is_switch | as_function -%} +{{ "It's a switch!" if is_switch("switch.my_switch") else "Not a switch!" }} +``` + {% endraw %} +In this way, you can export utility functions that return scalar or complex values rather than +just macros that render to strings. + ## Home Assistant template extensions Extensions allow templates to access all of the Home Assistant specific states and adds other convenience functions and filters. @@ -1174,6 +1194,8 @@ Some examples: - Filter `urlencode` will convert an object to a percent-encoded ASCII text string (e.g., for HTTP requests using `application/x-www-form-urlencoded`). - Filter `slugify(separator="_")` will convert a given string into a "slug". - Filter `ordinal` will convert an integer into a number defining a position in a series (e.g., `1st`, `2nd`, `3rd`, `4th`, etc). +- Filter `value | from_hex` Decodes a hex string to raw bytes. +- Filter `value | base64_encode` Encodes a string or bytes to a base 64 string. - Filter `value | base64_decode` Decodes a base 64 string to a string, by default utf-8 encoding is used. - Filter `value | base64_decode("ascii")` Decodes a base 64 string to a string, using ascii encoding. - Filter `value | base64_decode(None)` Decodes a base 64 string to raw bytes. @@ -1182,9 +1204,11 @@ Some examples: Some examples: {% raw %} - +- `{{ "homeassistant" | base64_encode }}` - renders as `aG9tZWFzc2lzdGFudA==` - `{{ "aG9tZWFzc2lzdGFudA==" | base64_decode }}` - renders as `homeassistant` - `{{ "aG9tZWFzc2lzdGFudA==" | base64_decode(None) }}` - renders as `b'homeassistant'` +- `{{ "0F010003" | from_hex }}` - renders as `b'\x0f\x01\x00\x03'` +- `{{ "0F010003" | from_hex | base64_encode }}` - renders as `DwEAAw==` {% endraw %} @@ -1357,6 +1381,26 @@ Some examples: {% endraw %} +### Working with macros + +Home Assistant provides two additional functions that make macros much more powerful. + +{% raw %} + +- `apply` is both a filter and a test that allows you to use any callable (macros or functions) wherever +you can use other filters and tests. `apply` also passes along any additional parameters to the function. +For example, if you had a function called `double`, you could call +`{{ [1, 2, 3, 4] | map('apply', double) | list }}`, which would render as `[2, 4, 6, 8]`. +Alternatively, if you had a function called `is_multiple_of`, you could call +`{{ [1, 2, 3, 4] | select('apply', is_multiple_of, 2) | list }}`, which would render as `[2, 4]`. +- `as_function` is a filter that takes a macro that has a named parameter called `returns`. The macro can +then call `{%- do returns(return_value) -%}`. After passing this macro into `as_function`, the resulting +function returns your return value directly, preserving the underlying data type rather than rendering +a string. You can return dictionaries, numbers, `True`/`False` (allowing you to write your own tests when +used with `apply`), or any other value your code might produce. + +{% endraw %} + ## Merge action responses Using action responses we can collect information from various entities at the same time. diff --git a/source/_integrations/airthings.markdown b/source/_integrations/airthings.markdown index f8842ee5af9..16e27c13b6b 100644 --- a/source/_integrations/airthings.markdown +++ b/source/_integrations/airthings.markdown @@ -15,6 +15,7 @@ ha_config_flow: true ha_platforms: - sensor ha_integration_type: integration +ha_dhcp: true --- Integrates Airthings sensors into Home Assistant. diff --git a/source/_integrations/alexa_devices.markdown b/source/_integrations/alexa_devices.markdown new file mode 100644 index 00000000000..0a9d399baf9 --- /dev/null +++ b/source/_integrations/alexa_devices.markdown @@ -0,0 +1,108 @@ +--- +title: Alexa Devices +description: Instructions on how to integrate Alexa Devices into Home Assistant. +ha_category: + - Binary Sensor +ha_release: '2025.6' +ha_domain: alexa_devices +ha_config_flow: true +ha_codeowners: + - '@chemelli74' +ha_iot_class: Cloud Polling +ha_platforms: + - binary_sensor + - notify + - switch +ha_integration_type: hub +ha_quality_scale: bronze +ha_dhcp: true +--- + +The **Alexa Devices** {% term integration %} allows you to control your [Amazon Echo dots](https://www.amazon.com/echo-dot/). + +The integration provides information on connected devices and enables control of the main features. + +## Supported devices + +There is support for the following devices within Home Assistant: + +- **Amazon Echo Dot** +- **Amazon Fire TV** + +{% include integrations/config_flow.md %} + +{% configuration_basic %} + country: + description: The country of your Amazon account. + username: + description: The email address of your Amazon account. + password: + description: The password of your Amazon account. + otp: + description: One-time password. +{% endconfiguration_basic %} + +{% note %} +When trying to set up the integration, the form may show the message "Cannot connect". +This means that the specified country may need a special setting. +Open a issue with all details to investigate +{% endnote %} + +## Examples + +### Automation: Announce welcome when you arrive home + +```yaml +automation: +- alias: "Alexa Announce" + id: "alexa_announce" + triggers: + - platform: state + entity_id: person.simone + to: "home" + actions: + - action: notify.send_message + data: + message: Welcome home Simone + target: + entity_id: notify.announce_echo_dot_livingroom +``` + +### Automation: Start Radio on all Echo dots + +```yaml +automation: +- alias: Start Radio B.B.C. + id: "start_radio_bbc" + trigger: + - platform: sun + event: sunset + condition: + conditions: + - alias: "condition alias (home)" + condition: state + entity_id: group.person_family + state: "home" + action: + - action: notify.send_message + data: + message: Play B.B.C. on Tunein + target: + entity_id: notify.custom_everywhere +``` + +## Data updates + +This integration {% term polling polls %} data from the device every 30 seconds by default. + +## Supported functionality + +The **Alexa Devices** {% term integration %} provides the following entities: + +- Binary sensor - main and Bluetooth connectivity + +## 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/aquacell.markdown b/source/_integrations/aquacell.markdown index b6e5e8692eb..89cc23b1835 100644 --- a/source/_integrations/aquacell.markdown +++ b/source/_integrations/aquacell.markdown @@ -53,6 +53,7 @@ This integration provides {% term sensors %} for the following information from - Time remaining until 0% salt level is reached. - i-Lid battery level. - Wi-Fi signal strength. +- Last update time. The time the softener last reported data to the cloud. ## Use cases diff --git a/source/_integrations/backup.markdown b/source/_integrations/backup.markdown index bebda04146b..1d70d2a5675 100644 --- a/source/_integrations/backup.markdown +++ b/source/_integrations/backup.markdown @@ -2,6 +2,7 @@ title: Backup description: Allow creating backups of container and core installations. ha_category: + - Event - Other - Sensor ha_release: 2022.4 @@ -12,6 +13,7 @@ ha_codeowners: ha_iot_class: Calculated ha_platforms: - diagnostics + - event - sensor ha_integration_type: service related: @@ -76,6 +78,8 @@ action: backup.create This is a YAML example for an automation that initiate a backup every night at 3 AM: +{% raw %} + ```yaml automation: - alias: "Backup Home Assistant every night at 3 AM" @@ -87,10 +91,49 @@ automation: action: backup.create ``` +{% endraw %} + ## Restoring a backup To restore a backup, follow the steps described in [Restoring a backup](/common-tasks/general/#restoring-a-backup). +## Event entity + +The **Backup** {% term integration %} provides an {% term "Event entity" %} which represents the state of the last automatic backup (_completed, in progress, failed_). It also provides several event attributes which can be used in automations. + +| Attribute | Description | +| --- | --- | +| `event_type` | The translated state of the last automatic backup task (_possible states: completed, in progress, failed_) +| `backup_stage` | The current automatic backup stage (_is `None` when `event_type` is not in progress_) | +| `failed_reason` | The reason for a failed automatic backup (_is `None` when `event_type` is completed or in progress_) | + +### Usage examples + +Send notification to mobile app, when an automatic backup failed. + +{% raw %} + +```yaml +alias: Backup failed +triggers: + - trigger: state + entity_id: + - event.backup_automatic_backup +conditions: + - condition: state + entity_id: event.backup_automatic_backup + attribute: event_type + state: failed +actions: + - data: + title: Automatic backup failed + message: The last automatic backup failed due to {{ state_attr('event.backup_automatic_backup', 'failed_reason') }} + action: notify.mobile-app +mode: single +``` + +{% endraw %} + ## Sensors The **Backup** {% term integration %} provides several sensors. @@ -108,6 +151,10 @@ The current state of the backup system. Possible states are: The timestamp of the next scheduled automatic backup. +### Last attempted automatic backup + +The timestamp of the last attempted automatic backup. + ### Last successful automatic backup The timestamp of the last successful automatic backup. diff --git a/source/_integrations/balay.markdown b/source/_integrations/balay.markdown index 2196a2f82ea..4d28584e8f0 100644 --- a/source/_integrations/balay.markdown +++ b/source/_integrations/balay.markdown @@ -31,6 +31,7 @@ ha_platforms: - switch - time ha_iot_class: Cloud Push +ha_zeroconf: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/beewi_smartclim.markdown b/source/_integrations/beewi_smartclim.markdown index 3931ca57970..8a5bfb6c03f 100644 --- a/source/_integrations/beewi_smartclim.markdown +++ b/source/_integrations/beewi_smartclim.markdown @@ -25,9 +25,6 @@ Depending on the operating system you're running, you have to configure the prop - `beewi_smartclim` will work out of the box as long as the host supports Bluetooth (like the Raspberry Pi does). - Using [Home Assistant Container installation](/docs/installation/docker/): Works out of the box with `--net=host` and properly configured Bluetooth on the host. -- On other Home Assistant Core systems: - - Preferred solution: Install the `bluepy` and `btlewrap` library (via pip). When using a virtual environment, make sure to use install the library in the right one. - - Fallback solution: Install `btlewrap` library (via pip) and `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth` or `bluez-deprecated`. ## Configuration diff --git a/source/_integrations/blue_current.markdown b/source/_integrations/blue_current.markdown index fe29c46ff7f..c88b7270063 100644 --- a/source/_integrations/blue_current.markdown +++ b/source/_integrations/blue_current.markdown @@ -8,10 +8,12 @@ ha_release: 2024.1 ha_iot_class: Cloud Push ha_config_flow: true ha_codeowners: - - '@Floris272' - '@gleeuwen' + - '@NickKoepr' + - '@jtodorova23' ha_domain: blue_current ha_platforms: + - button - sensor ha_integration_type: integration --- @@ -65,3 +67,13 @@ The following sensors are created as well, but disabled by default: The following sensors are created as well, but disabled by default: - Grid current phase 1-3 + +## Button + +The Blue Current integration provides the following buttons: + +### Charge point buttons + +- Reset +- Reboot +- Stop charge session diff --git a/source/_integrations/bluesound.markdown b/source/_integrations/bluesound.markdown index af67f7c6a35..f4b8393ba66 100644 --- a/source/_integrations/bluesound.markdown +++ b/source/_integrations/bluesound.markdown @@ -7,6 +7,7 @@ ha_release: 0.51 ha_iot_class: Local Polling ha_domain: bluesound ha_platforms: + - button - media_player ha_codeowners: - '@thrawnarn' @@ -23,6 +24,36 @@ The `bluesound` platform allows you to control your [Bluesound](https://www.blue {% include integrations/config_flow.md %} +## Buttons + +These are the available button entities: + +- `button.speaker_name_set_sleep_timer`: Setting a sleep timer. +- `button.speaker_name_sleep_timer`: Clearing the sleep timer. + +Replace `speaker_name` with the name of your speaker. + +### Button `button.speaker_name_set_sleep_timer` + +Sets a timer that will turn off the speaker. For each time you call this it will increase the time by one step. The steps are (in minutes): 15, 30, 45, 60, 90, 0. +If you increase an ongoing timer of for example 13 minutes, it will increase it to 15. If the timer is set to 90, it will remove the time (hence the 0). + +{% note %} +This button is disabled by default. +{% endnote %} + +### Button `button.speaker_name_clear_sleep_timer` + +Clear the sleep timer on a speaker, if one is set. + +{% note %} +This button is disabled by default. +{% endnote %} + +## Actions + +The Bluesound integration makes some custom actions available in addition to the [standard media player actions](/integrations/media_player/#actions). + ### Action `bluesound.join` Group players together under a single master speaker. That will make a new group or join an existing group. @@ -42,6 +73,10 @@ Remove one or more speakers from a group of speakers. If no `entity_id` is provi ### Action `bluesound.set_sleep_timer` +{% note %} +This action is deprecated. Use `button._set_set_timer` instead. +{% endnote %} + Sets a timer that will turn off the speaker. For each time you call this it will increase the time by one step. The steps are (in minutes): 15, 30, 45, 60, 90, 0. If you increase an ongoing timer of for example 13 minutes, it will increase it to 15. If the timer is set to 90, it will remove the time (hence the 0). @@ -51,6 +86,10 @@ If you increase an ongoing timer of for example 13 minutes, it will increase it ### Action `bluesound.clear_sleep_timer` +{% note %} +This action is deprecated. Use `button._clear_set_timer` instead. +{% endnote %} + Clear the sleep timer on a speaker, if one is set. | Data attribute | Optional | Description | diff --git a/source/_integrations/bluetooth.markdown b/source/_integrations/bluetooth.markdown index c8f72d34c5a..a5b78f6a53d 100644 --- a/source/_integrations/bluetooth.markdown +++ b/source/_integrations/bluetooth.markdown @@ -55,10 +55,8 @@ For Bluetooth to function on Linux systems: - Home Assistant Operating System: Upgrade to Home Assistant OS version 9.0 or later. - Home Assistant Container: The host system must run BlueZ, and the D-Bus socket must be accessible to Home Assistant **inside** the container. -- Home Assistant Supervised: The host system must run BlueZ, and the D-Bus socket must be accessible to Home Assistant **inside** the container. -- Home Assistant Core: The system must run BlueZ, and the D-Bus socket must be accessible to Home Assistant. -### Additional details for Container, Core, and Supervised installs +### Additional details for Container {% details "Making the DBus socket available in the Docker container" %} @@ -173,7 +171,7 @@ The following requirements must be met for an adapter to be labeled as High Perf - Establish a connection in about 1s or less - Process at least one advertisement per second from a device without dropping data - 95% of connection attempts are successful within two tries -- Meets the above requirements with Home Assistant Core 2022.11.1 or later and Home Assistant Operating System 9.3 or later +- Meets the above requirements with Home Assistant 2022.11.1 or later and Home Assistant Operating System 9.3 or later - Must be able to hold five (5) connections at the same time Performance testing used the following hardware: diff --git a/source/_integrations/bosch_alarm.markdown b/source/_integrations/bosch_alarm.markdown index e9759a4485f..e580c1e25eb 100644 --- a/source/_integrations/bosch_alarm.markdown +++ b/source/_integrations/bosch_alarm.markdown @@ -3,7 +3,9 @@ title: Bosch Alarm description: Integrate Bosch Alarms. ha_category: - Alarm + - Binary Sensor - Sensor + - Switch ha_release: 2025.4 ha_iot_class: Local Push ha_config_flow: true @@ -13,10 +15,13 @@ ha_codeowners: ha_domain: bosch_alarm ha_platforms: - alarm_control_panel + - binary_sensor - diagnostics - sensor + - switch ha_integration_type: device ha_quality_scale: bronze +ha_dhcp: true --- The **Bosch Alarm Panel** {% term integration %} allows you to connect your [Bosch Alarm Panel](https://www.boschsecurity.com) to Home Assistant to control and monitor your Bosch Alarm Panel. @@ -38,17 +43,79 @@ The **Bosch Alarm Panel** {% term integration %} allows you to connect your [Bos The following {% term entities %} are provided: - [Alarm Control Panel](#alarm-control-panel) +- [Binary Sensor](#binary-sensor) - [Sensor](#sensor) +- [Switch](#switch) ### Alarm Control Panel This integration adds an Alarm Control Panel device for each configured area, with the ability to issue arm/disarm commands. This entity reports state (_disarmed_, _armed_away_, etc.). + +### Binary Sensor -## Sensor +A binary sensor is added for each point configured on your alarm. + +Two binary sensors are added for each area to indicate whether it can be armed away or armed home. + +### Sensor A sensor is provided per area that lists how many points are currently in a faulted state. +A sensor is provided for each of the following alarm types that displays the health of that alarm + +- Fire +- Gas +- Burglary + +The state for the sensor can be one of the following: + +- No issues +- Trouble + + These signals indicate a malfunction or failure within the system. These signals often point to something that, if left unresolved, could lead to a complete system failure. For example, a broken wire or a failed smoke detector could trigger a trouble signal. These signals generally require prompt action to ensure the system continues to work as intended. + +- Supervisory + + These signals relate to system components that require attention but are not in immediate danger of failing. They are typically non-urgent and indicate that something within the system needs maintenance or is functioning suboptimally. These signals might include a closed valve or a fire extinguisher that’s out of service. + +- Alarm + + The alarm is currently triggered. + +### Switch + +A switch is added for each output configured on the panel. Note that for some panels, only outputs with the type set to **remote output** can be controlled via _Mode 2_ API. + +Three switches are added per door, which allow for locking, securing, or momentarily unlocking the door. + +## Actions + +The integration provides the following actions. + +### Action: Set panel date and time + +The `bosch_alarm.set_date_time` action is used to update the date and time on the panel. + +- **Data attribute**: `config_entry_id` + - **Description**: The ID of the config entry of the panel being updated. + - **Optional**: No + +- **Data attribute**: `datetime` + - **Description**: The date and time to set. Defaults to the current date and time if it is not set. + - **Optional**: Yes + +{% raw %} + +```yaml +# Example: Update the panel’s date and time +service: bosch_alarm.set_date_time +data: + config_entry_id: "YOUR_CONFIG_ENTRY_ID" + datetime: "2025-05-01T12:00:00" +``` +{% endraw %} + ## Authentication The primary means of authentication for the _Mode 2_ API is the _Automation_ passcode. It needs to be at least 10 characters long, and it is different from the _User_ code -- a shorter numeric pin used to arm/disarm the panel. @@ -73,6 +140,34 @@ The **Bosch Alarm** {% term integration %} fetches data from the device every 30 Newer devices and firmware revisions have the possibility to push data instead of needing to rely on {% term polling %}. At startup, the integration checks whether your panel supports push data updates and falls back to {% term polling %} if not. +## Examples + +### Turning on lights when walking into a room + +{% raw %} + +```yaml +automation: + - alias: "Turn on light when walking into room" + triggers: + - platform: state + entity_id: + - binary_sensor.bosch_solution_3000_bedroom + to: "on" + actions: + - action: light.turn_on + target: + entity_id: light.bedroom_light + + +``` + +{% endraw %} + +## Reconfiguration + +This integration supports reconfiguration, so it is possible to change the configuration such as the IP Address after it is configured. + ## Troubleshooting ### Issues with Bosch Solution 2000/3000/4000 panels diff --git a/source/_integrations/caldav.markdown b/source/_integrations/caldav.markdown index 596f363adba..20a5f2a0a9e 100644 --- a/source/_integrations/caldav.markdown +++ b/source/_integrations/caldav.markdown @@ -196,16 +196,6 @@ actions that can be used in automations. ## Troubleshooting -{% details "Home Assistant Core Installations" %} - -You might need some additional system packages to compile the Python CalDAV library. On a Debian based system, install them by: - -```bash -sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev -``` - -{% enddetails %} - {% details "iCloud" %} You may be required to use [app specific passwords](https://support.apple.com/en-us/102654) diff --git a/source/_integrations/cambridge_audio.markdown b/source/_integrations/cambridge_audio.markdown index e6ada106d95..3f153d385d6 100644 --- a/source/_integrations/cambridge_audio.markdown +++ b/source/_integrations/cambridge_audio.markdown @@ -68,6 +68,13 @@ The integration provides a few entities to configure the device settings. The fo - Pre-Amp - Early update - Audio output (Speaker select) +- Control Bus mode + +### Pre-Amp +When Pre-Amp mode is enabled, Home Assistant can control the output volume of your Pre-Amplifier. + +### Control Bus +When Control Bus mode is enabled, Home Assistant can control the output volume of your Power Amplifier when it is connected to a Cambridge Audio network player using the Control Bus interface. In this case Pre-Amp mode can be disabled, the network player will send the signal with full volume to the power amplifier and the volume of the power amplifier can be controlled using volume up and down controls. Control Bus does not support setting the volume to a certain value, it can only increase and decrease the current volume. ## Playing media diff --git a/source/_integrations/comelit.markdown b/source/_integrations/comelit.markdown index e05e6c339ae..1ba6d2ad627 100644 --- a/source/_integrations/comelit.markdown +++ b/source/_integrations/comelit.markdown @@ -26,7 +26,7 @@ ha_platforms: - sensor - switch ha_integration_type: hub -ha_quality_scale: bronze +ha_quality_scale: silver --- The **Comelit SimpleHome** {% term integration %} allows you to control your [Comelit home automation devices](https://comelitgroup.it/installatore/offerta/home-building-automation/). diff --git a/source/_integrations/command_line.markdown b/source/_integrations/command_line.markdown index 7b76fce566c..62dcc19a08e 100644 --- a/source/_integrations/command_line.markdown +++ b/source/_integrations/command_line.markdown @@ -164,7 +164,7 @@ command_line: command: description: The action to take. required: true - type: string + type: template command_timeout: description: Defines number of seconds for command timeout. required: false diff --git a/source/_integrations/constructa.markdown b/source/_integrations/constructa.markdown index 81324c5b23a..76db3aa534e 100644 --- a/source/_integrations/constructa.markdown +++ b/source/_integrations/constructa.markdown @@ -31,6 +31,7 @@ ha_platforms: - switch - time ha_iot_class: Cloud Push +ha_zeroconf: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/cups.markdown b/source/_integrations/cups.markdown deleted file mode 100644 index 9439839d4d5..00000000000 --- a/source/_integrations/cups.markdown +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: CUPS -description: Instructions on how to integrate CUPS sensors into Home Assistant. -ha_category: - - System monitor -ha_iot_class: Local Polling -ha_release: 0.32 -ha_codeowners: - - '@fabaff' -ha_domain: cups -ha_platforms: - - sensor -ha_integration_type: integration -related: - - docs: /docs/configuration/ - title: Configuration file -ha_quality_scale: legacy ---- - -The `cups` sensor platform uses the open source printing system [CUPS](https://www.cups.org/) to show details about your printers, including the ink levels. It can obtain the information using a CUPS server or by communicating directly with the printer with the Internet Printing Protocol. - -## Setup - -You will need to install the `python3-dev` or `python3-devel` package and the development files for CUPS (`libcups2-dev` or`cups-devel`) on your system manually (e.g., `sudo apt-get install python3-dev libcups2-dev` or `sudo dnf -y install python3-devel cups-devel`) along with a compiler (`gcc`). This integration doesn't work out-of-the-box in a container-based setup. - -To set up the sensor the "Queue Name" of the printer is needed. The fastest way to get it, is to visit the CUPS web interface at "http://[IP ADDRESS PRINT SERVER]:631" and go to "Printers". - -

- -

- -## Configuration - -To enable the CUPS sensor, add the following lines to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -sensor: - - platform: cups - printers: - - C410 - - C430 -``` - -{% configuration %} -printers: - description: List of printers to add. If you're not using a CUPS server, add your "Printer Name" here. - required: true - type: list -host: - description: The IP address of the CUPS print server or of the printer. - required: false - type: string - default: 127.0.0.1 -port: - description: The port number of the CUPS print server or of the printer. - required: false - type: integer - default: 631 -is_cups_server: - description: Set true if you want to use a CUPS print server, set false otherwise. - required: false - type: boolean - default: true -{% endconfiguration %} - -## Examples - -Default configuration for an IPP printer: - -```yaml -# Example configuration.yaml entry for an IPP printer -sensor: - - platform: cups - host: PRINTER_IP - is_cups_server: false - printers: - - ipp/print -``` diff --git a/source/_integrations/decora.markdown b/source/_integrations/decora.markdown deleted file mode 100644 index e678ec742e6..00000000000 --- a/source/_integrations/decora.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Leviton Decora -description: Instructions on how to setup Leviton Decora Bluetooth dimmers within Home Assistant. -ha_category: - - Light -ha_iot_class: Local Polling -ha_release: 0.37 -ha_domain: decora -ha_platforms: - - light -ha_integration_type: integration -ha_quality_scale: legacy ---- - -Support for the Decora Bluetooth dimmer switch [Leviton](https://www.leviton.com/en/products/residential/dimmers/automation-smart-home/decora-digital-with-bluetooth-dimmers#t=Products&sort=%40wcs_site_tree_rank%20ascending&layout=card). - -The API key can be obtained by downloading [this git repository](https://github.com/mjg59/python-decora) and running the `read_key.py` script with the Bluetooth address of the switch as the first argument. Hold the switch in the off position until the green status LED starts flashing before running the script. The output is the API key. - -To enable these lights, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: decora - devices: - 00:21:4D:00:00:01: - api_key: YOUR_API_KEY -``` - -{% configuration %} -devices: - description: A list of lights to use. - required: true - type: map - keys: - mac_address: - required: true - description: The Bluetooth address of the switch. - type: list - keys: - name: - description: The name to use in the frontend. - required: false - default: "`mac_address` of this switch" - type: string - api_key: - description: The API key to access the device. - required: true - type: string -{% endconfiguration %} - -{% note %} - -If you get an error looking like this: - -```txt -Jun 20 19:41:18 androlapin hass[29588]: ERROR:homeassistant.components.light:Error while setting up platform decora -[...] -Jun 20 19:41:18 androlapin hass[29588]: File "/usr/lib/python3.6/concurrent/futures/thread.py", line 55, in run -Jun 20 19:41:18 androlapin hass[29588]: result = self.fn(*self.args, **self.kwargs) -Jun 20 19:41:18 androlapin hass[29588]: File "/opt/homeassistant/custom_components/light/decora.py", line 68, in setup_platform -Jun 20 19:41:18 androlapin hass[29588]: light = DecoraLight(device) -[...] -Jun 20 19:41:18 androlapin hass[29588]: OSError: [Errno 8] Exec format error -``` - -1. Go to your `.homeassistant` folder -2. Then go to `deps/bluepy` subfolder. -3. Then run `make all` -4. Restart Home Assistant - -{% endnote %} diff --git a/source/_integrations/dlib_face_detect.markdown b/source/_integrations/dlib_face_detect.markdown deleted file mode 100644 index a50462bd2df..00000000000 --- a/source/_integrations/dlib_face_detect.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Dlib Face Detect -description: Instructions on how to integrate Dlib Face Detect into Home Assistant. -ha_category: - - Image processing -ha_iot_class: Local Push -ha_release: 0.44 -ha_domain: dlib_face_detect -ha_integration_type: integration -related: - - docs: /docs/configuration/ - title: Configuration file -ha_quality_scale: legacy ---- - -The `dlib_face_detect` image processing {% term integration %} allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform enables face detection from cameras, and can fire events with attributes. - -This can be used to trigger an automation rule. Further info is on the [integration](/integrations/image_processing/) page. - -{% note %} -This integration is only available on Home Assistant Core installation types. Unfortunately, it cannot be used with Home Assistant OS, Supervised or Container. -{% endnote %} - -## Configuration - -To enable Dlib Face Detect, add the following lines to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: dlib_face_detect - source: - - entity_id: camera.door -``` - -{% configuration %} -source: - description: List of image sources. - required: true - type: list - keys: - entity_id: - description: A camera entity id to get picture from. - required: true - type: string - name: - description: This parameter allows you to override the name of your `image_processing` entity. - required: false - type: string -{% endconfiguration %} diff --git a/source/_integrations/dlib_face_identify.markdown b/source/_integrations/dlib_face_identify.markdown deleted file mode 100644 index 1b6ef3dc42d..00000000000 --- a/source/_integrations/dlib_face_identify.markdown +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Dlib Face Identify -description: Instructions on how to integrate Dlib Face Identify into Home Assistant. -ha_category: - - Image processing -ha_iot_class: Local Push -ha_release: 0.44 -ha_domain: dlib_face_identify -ha_integration_type: integration -related: - - docs: /docs/configuration/ - title: Configuration file -ha_quality_scale: legacy ---- - -The `dlib_face_identify` image processing {% term integration %} allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform allow you to identify persons on camera and fire an event with identify persons. - -For using the result inside an automation rule, take a look at the [integration](/integrations/image_processing/) page. - -{% note %} -This integration is only available on Home Assistant Core installation types. Unfortunately, it cannot be used with Home Assistant OS, Supervised or Container. -{% endnote %} - -## Configuration - -To enable Dlib Face Identify, add the following lines to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: dlib_face_identify - source: - - entity_id: camera.door - faces: - Jon: /home/hass/jon.jpg - Bob: /home/hass/bob.jpg -``` - -{% configuration %} -source: - description: List of image sources. - required: true - type: list - keys: - entity_id: - description: A camera entity id to get picture from. - required: true - type: string - name: - description: This parameter allows you to override the name of your `image_processing` entity. - required: false - type: string -faces: - description: List of faces sources. - required: true - type: list -confidence: - description: How much distance between faces to consider it a match. Using tolerance values lower than 0.6 will make the comparison more strict. - required: false - type: float - default: 0.6 -{% endconfiguration %} - -{% note %} -If the platform fails to load because it could not install its requirement, install cmake: `sudo apt-get install cmake`. -{% endnote %} diff --git a/source/_integrations/eddystone_temperature.markdown b/source/_integrations/eddystone_temperature.markdown deleted file mode 100644 index f3f51484d37..00000000000 --- a/source/_integrations/eddystone_temperature.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Eddystone -description: Instructions on how to integrate Eddystone beacons with Home Assistant in order to receive temperature data. -ha_category: - - DIY -ha_release: 0.42 -ha_iot_class: Local Polling -ha_domain: eddystone_temperature -ha_platforms: - - sensor -ha_integration_type: integration -related: - - docs: /docs/configuration/ - title: Configuration file -ha_quality_scale: legacy ---- - -The `eddystone_temperature` sensor {% term integration %} reads temperature information from Bluetooth LE advertisements transmitted by [Eddystone](https://en.wikipedia.org/wiki/Eddystone_(Google)) beacons. Your beacons must be configured to transmit UID frames (for identification) and TLM frames (for temperature). -All beacons that support the Eddystone protocol, have a temperature sensor and can transmit TLM frames are compatible with this {% term integration %}. For example [Gimbal](https://store.gimbal.com/collections/beacons/), [Estimote](https://estimote.com/) or [kontakt.io](https://kontakt.io/). - -## Requirements - -As this {% term integration %} uses `bluez` to scan for Bluetooth LE devices **a Linux OS with bluez installed** is required. In addition to that, the `libbluetooth` headers need to be installed: - -```bash -sudo apt-get install libbluetooth-dev -``` - -Scanning for Bluetooth LE devices also requires special permissions. To grant these to the Python executable execute the following: - -```bash -sudo apt-get install libcap2-bin -sudo setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which python3)) -``` - -To use your Eddystone beacon in your installation, add the following to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -sensor: - - platform: eddystone_temperature - bt_device_id: 0 # optional - beacons: - living_room: - namespace: "112233445566778899AA" - instance: "000000000001" - kitchen: - namespace: "112233445566778899AA" - instance: "000000000002" -``` - -{% configuration %} -bt_device_id: - description: The id of the Bluetooth device that should be used for scanning (hci*X*). You can find the correct one using `hcitool dev`. - required: false - default: 0 - type: integer -beacons: - description: The beacons that should be monitored. - required: true - type: list - keys: - entry: - description: Name of the beacon. - required: true - type: list - keys: - namespace: - description: Namespace ID of the beacon in hexadecimal notation. Must be exactly 20 characters (10 bytes) long. - required: true - type: string - instance: - description: Instance ID of the beacon in hexadecimal notation. Must be exactly 12 characters (6 bytes) long. - required: true - type: string - name: - description: Friendly name of the beacon. - required: false - type: string -{% endconfiguration %} diff --git a/source/_integrations/eheimdigital.markdown b/source/_integrations/eheimdigital.markdown index 34271c0e012..0a99de2a4f8 100644 --- a/source/_integrations/eheimdigital.markdown +++ b/source/_integrations/eheimdigital.markdown @@ -5,6 +5,7 @@ ha_category: - Climate - Light - Number + - Select - Sensor - Switch - Time @@ -17,8 +18,10 @@ ha_domain: eheimdigital ha_integration_type: hub ha_platforms: - climate + - diagnostics - light - number + - select - sensor - switch - time @@ -41,6 +44,12 @@ Host: Currently, the following devices and entities are supported: +### All devices + +#### Number + +- **System LED brightness**: Controlling the brightness of the system LED + ### [EHEIM classicLEDcontrol+e](https://eheim.com/en_GB/aquatics/technology/lighting-control/classicledcontrol-e/classicledcontrol-e) #### Lights @@ -73,6 +82,13 @@ Currently, the following devices and entities are supported: - **Day speed**: Setting the pump speed for the day in Bio mode - **Night speed**: Setting the pump speed for the night in Bio mode +#### Select + +- **Filter mode**: Setting the filter mode + - Manual mode: The filter uses the **manual speed** + - Pulse mode: The filter uses a high and low pulse, the speeds are configured via **high pulse speed** and **low pulse speed**, the durations are configured via **high pulse duration** and **low pulse duration** + - Bio mode: The filter uses a day and night rhythm, the speeds are configured via **day speed** and **night speed**, the start times of day and night are configured via **day start time** and **night start time** + #### Sensor - **Current pump speed**: Displays the current pump speed diff --git a/source/_integrations/energenie_power_sockets.markdown b/source/_integrations/energenie_power_sockets.markdown index ce5226f7f59..c1e80f2d8c7 100644 --- a/source/_integrations/energenie_power_sockets.markdown +++ b/source/_integrations/energenie_power_sockets.markdown @@ -20,7 +20,7 @@ The **Energenie Power-Sockets** {% term integration %} allows you to include [En ## Troubleshooting -If you are running a {% term "Home Assistant Core" %} or {% term "Home Assistant Container" %} installation: Depending on your system configuration, it may be necessary to grant explicit user access rights to the USB device by creating an udev rule. +If you are running a {% term "Home Assistant Container" %} installation: Depending on your system configuration, it may be necessary to grant explicit user access rights to the USB device by creating an udev rule. {% details "Creating an udev rule" %} diff --git a/source/_integrations/ezviz.markdown b/source/_integrations/ezviz.markdown index ee803638997..0d5d817328c 100644 --- a/source/_integrations/ezviz.markdown +++ b/source/_integrations/ezviz.markdown @@ -9,7 +9,6 @@ ha_iot_class: Cloud Polling ha_domain: ezviz ha_codeowners: - '@RenierM26' - - '@baqs' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index 4228d813cb0..1c4a69cc66b 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -61,24 +61,28 @@ If you still want to use the predefined user, please note that as of FRITZ!OS 7. {% configuration_basic %} Host: - description: "The hostname or IP address of your FRITZ!Box router." + description: The hostname or IP address of your FRITZ!Box router. Port: - description: "The port used to connect to your FRITZ!Box router. Leave it empty to use the default port." + description: The port used to connect to your FRITZ!Box router. Leave it empty to use the default port. Username: - description: "Name of the user to connect Home Assistant to your FRITZ!Box (_see [username](#username)_)" + description: Name of the user to connect Home Assistant to your FRITZ!Box (_see [username](#username)_) Password: - description: "Password for the user to connect Home Assistant to your FRITZ!Box (_see [username](#username)_)" + description: Password for the user to connect Home Assistant to your FRITZ!Box (_see [username](#username)_) Uses an SSL certificate: - description: "Whether to use SSL encryption for connecting to your FRITZ!Box router." + description: Whether to use SSL encryption for connecting to your FRITZ!Box router. +Enable network device tracking: + description: Whether to enable or disable the network device tracking feature. When disabled, all network device related entities (_Parental control switches, Device tracker and WoL buttons_) will also be removed or not created. {% endconfiguration_basic %} {% include integrations/option_flow.md %} {% configuration_basic %} Consider home: - description: Number of seconds that must elapse before considering a disconnected device "not at home". + description: Number of seconds that must elapse before considering a disconnected device "not at home". Enable old discovery method: - description: Required in scenarios such as networks without mesh support (_FritzOS <= 6.x_) or mixed brands network devices or LAN switches. + description: Required in scenarios such as networks without mesh support (_FritzOS <= 6.x_) or mixed brands network devices or LAN switches. +Enable network device tracking: + description: Whether to enable or disable the network device tracking feature. When disabled, all network device related entities (_Parental control switches, Device tracker and WoL buttons_) will also be removed or not created. {% endconfiguration_basic %} ## Data updates diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown index 5b0eca10213..2ffc2224fc2 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -109,27 +109,21 @@ Self defined [templates](https://en.avm.de/guide/three-smart-home-templates-that Thermostats like the [FRITZ!DECT 301][fritzdect_301], [FRITZ!DECT 302][fritzdect_302] or [Eurotronic Comet DECT][eurotronic_comet_dect] will be integrated as {% term climate %} entities. -These entities can have several attributes that can be useful for {% term automations %} and {% term templates %}: - -| Attribute | Description | -| --------- | ----------- | -| `battery_low` | The low battery state indication. | -| `battery_level` | The battery level (only available since Fritz!OS 7). | -| `holiday_mode` | The state of the holiday mode (only available since Fritz!OS 7). | -| `summer_mode` | The state of the summer mode (only available since Fritz!OS 7). | -| `window_open` | The state of the window open detection (only available since Fritz!OS 7). | - -Further there are additional {% term sensor %} and {% term binary_sensor "binary sensor" %} entities created for each device, based on its capabilities: +Further there are additional {% term sensor %} and {% term binary_sensor "binary sensor" %} entities created for each device which can be useful for {% term automations %} and {% term templates %}, based on its capabilities: - Battery +- Battery low - Button lock via UI - Button lock on device - Comfort Temperature - Current Scheduled Preset - Eco Temperature +- Holiday mode - Next Scheduled Change Time - Next Scheduled Preset - Next Scheduled Temperature +- Open window detected +- Summer mode ### Other devices @@ -138,9 +132,11 @@ Some devices like the [FRITZ!DECT 350][fritzdect_350] or the [FRITZ!DECT 440][fr The availability of these {% term sensor %} and {% term binary_sensor "binary sensor" %} entities depends on the features and capabilities of the connected device and can be one or multiple of: - Battery +- Battery low - Button lock via UI - Button lock on device - Humidity +- Open window detected - Temperature [fritzbox_5590_fiber]: https://en.avm.de/products/fritzbox/fritzbox-5590-fiber diff --git a/source/_integrations/fyta.markdown b/source/_integrations/fyta.markdown index 501293748ed..a391e4f1926 100644 --- a/source/_integrations/fyta.markdown +++ b/source/_integrations/fyta.markdown @@ -41,7 +41,7 @@ Password: description: "The password used to access the FYTA account." {% endconfiguration_basic %} -## Configuration options +## Configuration The integration has no additional configuration options. @@ -62,7 +62,7 @@ The following binary sensors are currently available per plant: ### Image -The picture created or chosen in the FYTA app is also exposed to Home Assistant. +An image entity for both the generic plant image and the user image is added. You may use those for your dashboard. ### Sensors diff --git a/source/_integrations/gaggenau.markdown b/source/_integrations/gaggenau.markdown index 4e9182b5dfc..e8d8bcb86b5 100644 --- a/source/_integrations/gaggenau.markdown +++ b/source/_integrations/gaggenau.markdown @@ -31,6 +31,7 @@ ha_platforms: - switch - time ha_iot_class: Cloud Push +ha_zeroconf: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/gpsd.markdown b/source/_integrations/gpsd.markdown index 9c76443f401..2785515b3db 100644 --- a/source/_integrations/gpsd.markdown +++ b/source/_integrations/gpsd.markdown @@ -17,31 +17,4 @@ ha_integration_type: integration The `gpsd` integration is using the GPS information collected by [gpsd](https://gpsd.gitlab.io/gpsd/index.html) and a GPS receiver. -## Setup - -A requirement is that `gpsd` is installed (`$ sudo apt-get install gpsd` or `$ sudo dnf -y install gpsd`). `gpsd` uses the socket activation feature of systemd on recent Linux distributions for USB receivers. This means that if you plug your GPS receiver in, `gpsd` is started. Other GPS device may work too, but this was not tested. - -```bash -$ sudo systemctl status gpsdctl@ttyUSB0.service -● gpsdctl@ttyUSB0.service - Manage ttyUSB0 for GPS daemon - Loaded: loaded (/usr/lib/systemd/system/gpsdctl@.service; static; vendor preset: disabled) - Active: active (exited) since Sat 2016-07-16 09:30:33 CEST; 1 day 23h ago - Process: 5303 ExecStart=/bin/sh -c [ "$USBAUTO" = true ] && /usr/sbin/gpsdctl add /dev/%I || : (code=exited, status=0/SUCCESS) - Main PID: 5303 (code=exited, status=0/SUCCESS) - -Jul 16 09:30:33 laptop019 systemd[1]: Starting Manage ttyUSB0 for GPS daemon... -Jul 16 09:30:33 laptop019 gpsdctl[5305]: gpsd_control(action=add, arg=/dev/ttyUSB0) -Jul 16 09:30:33 laptop019 gpsdctl[5305]: reached a running gpsd -``` - -To check if your setup is working, connect to port 2947 on the host where `gpsd` is running with `telnet`. This may need adjustments to your firewall. - -```bash -$ telnet localhost 2947 -Trying 127.0.0.1... -Connected to localhost. -Escape character is '^]'. -{"class":"VERSION","release":"3.15","rev":"3.15-2.fc23","proto_major":3,"proto_minor":11} -``` - {% include integrations/config_flow.md %} diff --git a/source/_integrations/gstreamer.markdown b/source/_integrations/gstreamer.markdown deleted file mode 100644 index 2001492bda7..00000000000 --- a/source/_integrations/gstreamer.markdown +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: GStreamer -description: Instructions on how to integrate GStreamer into Home Assistant. -ha_category: - - Media player -ha_release: 0.39 -ha_iot_class: Local Push -ha_domain: gstreamer -ha_platforms: - - media_player -ha_integration_type: integration -related: - - docs: /docs/configuration/ - title: Configuration file -ha_quality_scale: legacy ---- - -The `gstreamer` {% term integration %} allows you to play audio via a [gstreamer](https://gstreamer.freedesktop.org/) pipeline. Practically, this means you can play audio directly on the computer running Home Assistant. It is particularly suited for playing TTS. Advanced users can specify a pipeline to transform the audio stream and/or redirect it elsewhere. - -To add a `gstreamer` media player to your installation, add the following to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -media_player: - - platform: gstreamer -``` - -{% configuration %} -name: - description: Name of the media player. - required: false - type: string -pipeline: - description: A `gst` pipeline description. - required: false - type: string -{% endconfiguration %} - -Only the `music` media type is supported. - -## Setup - -And then install the following system dependencies: - -Debian/Ubuntu/Raspberry Pi OS (formerly Raspbian): - -```bash -sudo apt-get install python3-gst-1.0 \ - gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0 \ - gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly \ - gstreamer1.0-tools -``` - -Red Hat/CentOS/Fedora: - -```bash -sudo yum install -y python-gstreamer1 gstreamer1-plugins-good \ - gstreamer1-plugins-ugly -``` - -For Fedora replace `yum` with `dnf`. - -If you're running Home Assistant in a virtual environment, you'll need to symlink the system Python's `gi` module into your virtual environment: - -```bash -ln -s /path/to/your/installation/of/gi /path/to/your/venv/lib/python3.4/site-packages -``` - -On a Raspberry Pi, you may need to add the Home Assistant user to the `audio` group: - -```bash -sudo usermod -a -G audio -``` - -## Example usage - -### Using with TTS - -To play TTS on your local computer (for example, if you have speakers attached to your Raspberry Pi: - -```yaml -media_player: - - platform: gstreamer - -script: - tts: - sequence: - - action: tts.google_say # or amazon_polly, voicerss, etc - target: - entity_id: media_player.gstreamer - data: - message: "example text-to-speech message" -``` - -### Using with Snapcast - -To play to a named pipe for consumption by Snapcast: - -```yaml -media_player: - - platform: gstreamer - pipeline: "audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! wavenc ! filesink location=/tmp/snapcast_gstreamer" -``` diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown index 16ccc3ac3b0..9b636037460 100644 --- a/source/_integrations/habitica.markdown +++ b/source/_integrations/habitica.markdown @@ -97,6 +97,8 @@ Verify SSL certificate: - **Saddles**: Indicates the number of saddles owned, used for instantly raising pets to mounts. - **Hatching potions**: Shows the total count of available hatching potions. The sensor's attributes detail each potion type and quantity. Pour them on an egg to hatch a pet. - **Quest scrolls**: Displays the total number of quest scrolls in your inventory. A list of each quest scroll and its quantity is provided in the sensor's attributes. +- **Pending damage**: Total damage accumulated during the day by completing your tasks. The quest boss is then attacked for this amount at the end of the day. +- **Pending quest items**: Quest items found during the day when completing tasks. The total is counted towards the quest objective at the end of the day. ## Binary sensors diff --git a/source/_integrations/home_connect.markdown b/source/_integrations/home_connect.markdown index 494633465bc..828ea01b0fe 100644 --- a/source/_integrations/home_connect.markdown +++ b/source/_integrations/home_connect.markdown @@ -30,6 +30,7 @@ ha_platforms: - time ha_integration_type: integration ha_zeroconf: true +ha_dhcp: true --- The Home Connect integration allows users to integrate their home appliances supporting the Home Connect standard for Bosch and Siemens using the [official cloud API](https://developer.home-connect.com). diff --git a/source/_integrations/homee.markdown b/source/_integrations/homee.markdown index d0c9e4b9bcf..ba60863f152 100644 --- a/source/_integrations/homee.markdown +++ b/source/_integrations/homee.markdown @@ -10,10 +10,13 @@ ha_codeowners: - '@Taraman17' ha_domain: homee ha_platforms: + - alarm_control_panel - binary_sensor - button - climate - cover + - event + - fan - light - lock - number diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index 47b4c6ec5e0..8338f889af6 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -278,7 +278,7 @@ homekit: required: false type: string default: libx264 - available options: copy, libx264, h264_v4l2m2m, h264_omx + available options: copy, libx264, h264_v4l2m2m, h264_omx, h264_qsv video_profile_names: description: Only for `camera` entities. FFmpeg video profile names for transcoding, only relevant if `video_codec` isn't `copy`. Some encoders, e.g., the Raspberry Pi's `h264_v4l2m2m`, don't use the standard `["baseline", "main", "high"]` profile names but expects `["0", "2", "4"]` instead. Use this option to override the default names, if needed. required: false diff --git a/source/_integrations/immich.markdown b/source/_integrations/immich.markdown new file mode 100644 index 00000000000..ff1548a84a2 --- /dev/null +++ b/source/_integrations/immich.markdown @@ -0,0 +1,69 @@ +--- +title: Immich +description: Instructions on how to integrate an Immich user account into Home Assistant. +ha_category: + - Media source + - Multimedia + - Sensor +ha_release: 2025.6 +ha_config_flow: true +ha_iot_class: Local Polling +ha_domain: immich +ha_platforms: + - diagnostics + - sensor +ha_codeowners: + - '@mib1185' +ha_integration_type: integration +ha_quality_scale: silver +--- + +This integration allows adding an [Immich](https://immich.app/) user account to Home Assistant. + +## Prerequisites + +You need to [obtain the API key](https://immich.app/docs/features/command-line-interface#obtain-the-api-key) for your user account in your Immich instance. + +{% include integrations/config_flow.md %} + +{% configuration_basic %} +URL: + description: "The URL of your Immich instance. (_e.g. `https://immich.example.com`_)." +API key: + description: "API key of your user account to connect to your Immich instance." +Verify SSL certificate: + description: "Whether to verify the SSL certificate when SSL encryption is used to connect to your Immich instance." +{% endconfiguration_basic %} + +## Data fetching + +The integration polls data every 60 seconds. + +## Media source + +A [media source](/integrations/media_source/) is provided for your [Immich](https://immich.app/) albums. It shows only the albums you own or that are shared with you. If you have multiple Immich integrations in Home Assistant (_one integration for each Immich user_), only the albums for that specific user are shown. + +## Sensors + +The following {% term sensors %} are created. For some of those the API key needs to have admin rights. + +| Entity | Description | Default enabled | +| --- | --- | --- | +| **Disk size** | Overall size of the disk | ✅ | +| **Disk available** | Free space on the disk | ✅ | +| **Disk used** | Used space on the disk | ❌ | +| **Disk usage** | Usage of the disk in percentage | ❌ | +| **Photos count** | Count of stored photos (_admin only_) | ✅ | +| **Videos count** | Count of stored videos (_admin only_) | ✅ | +| **Disk used by photos** | Used disk space by photos (_admin only_) | ❌ | +| **Disk used by videos** | Used disk space by videos (_admin only_) | ❌ | + +## Troubleshooting + +In any case, when reporting an issue, please enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics), restart the integration, and as soon as the issue re-occurs, stop the debug logging again (_download of debug log file will start automatically_). Further, if still possible, please also download the [diagnostics](/integrations/diagnostics/) data. If you have collected the debug log and the diagnostics data, provide them with the issue report. + +## Remove the integration + +{% include integrations/remove_device_service.md %} + +If the API key is not used anymore, you can remove it from your Immich instance. diff --git a/source/_integrations/jewish_calendar.markdown b/source/_integrations/jewish_calendar.markdown index 1593fe0bc82..97f12db4f95 100644 --- a/source/_integrations/jewish_calendar.markdown +++ b/source/_integrations/jewish_calendar.markdown @@ -10,6 +10,7 @@ ha_codeowners: ha_domain: jewish_calendar ha_platforms: - binary_sensor + - diagnostics - sensor ha_integration_type: integration ha_config_flow: true diff --git a/source/_integrations/kaiser_nienhaus.markdown b/source/_integrations/kaiser_nienhaus.markdown new file mode 100644 index 00000000000..fa24b49b1f1 --- /dev/null +++ b/source/_integrations/kaiser_nienhaus.markdown @@ -0,0 +1,22 @@ +--- +title: Kaiser Nienhaus +description: Connect and control your Kaiser Nienhaus devices using the Motionblinds integration +ha_category: + - Cover +ha_domain: kaiser_nienhaus +ha_integration_type: virtual +ha_supporting_domain: motion_blinds +ha_supporting_integration: Motionblinds +ha_release: 2020.12 +ha_codeowners: + - '@starkillerOG' +ha_config_flow: true +ha_platforms: + - button + - cover + - sensor +ha_iot_class: Local Push +ha_dhcp: true +--- + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/keyboard.markdown b/source/_integrations/keyboard.markdown deleted file mode 100644 index ebaaf8898d4..00000000000 --- a/source/_integrations/keyboard.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Keyboard -description: Instructions on how to simulate key presses with Home Assistant. -ha_category: - - Automation -ha_release: pre 0.7 -ha_domain: keyboard -ha_iot_class: Local Push -ha_integration_type: integration -ha_quality_scale: legacy ---- - -The `keyboard` integration simulates key presses on the host machine. It currently offers the following Buttons as a Service (BaaS): - -- `keyboard/volume_up` -- `keyboard/volume_down` -- `keyboard/volume_mute` -- `keyboard/media_play_pause` -- `keyboard/media_next_track` -- `keyboard/media_prev_track` - -To load this component, add the following lines to your {% term "`configuration.yaml`" %}: - -```yaml -keyboard: -``` - -## Dependencies - -You may need to install platform-specific [dependencies for PyUserInput](https://github.com/PyUserInput/PyUserInput#dependencies) in order to use the keyboard component. In most cases this can be done by running: - -```bash -pip3 install [package name] -``` - -### Windows - -x64 Windows users may have trouble installing pywin through pip. Using an [executable installer](https://github.com/mhammond/pywin32) should work around this issue. - -[Similar installers](https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook) (unofficial) for pyhook have been ported to Python 3.4 and should help with x64 pip issues with pyhook. diff --git a/source/_integrations/knocki.markdown b/source/_integrations/knocki.markdown index a10add6610f..520f7074557 100644 --- a/source/_integrations/knocki.markdown +++ b/source/_integrations/knocki.markdown @@ -14,6 +14,7 @@ ha_domain: knocki ha_platforms: - event ha_integration_type: hub +ha_dhcp: true --- The **Knocki** {% term integration %} allows you to trigger your favorite automations simply by tapping custom patterns (such as triple taps) on ordinary surfaces. diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 4db83a2c2eb..386b2e5f3e2 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -1141,6 +1141,11 @@ Unlike most KNX devices, Home Assistant defines 0% as closed and 100% as fully o Home Assistant will, by default, `close` a cover by moving it in the `DOWN` direction in the KNX nomenclature, and `open` a cover by moving it in the `UP` direction. {% endnote %} +Cover entities can be created from the frontend in the KNX panel or via YAML. + + +{% details "Configuration of KNX cover entities via YAML" %} + To use your KNX covers in your installation, add the following lines to your top level [KNX Integration](/integrations/knx) configuration key in your {% term "`configuration.yaml`" %}: ```yaml @@ -1149,12 +1154,20 @@ knx: cover: - name: "Kitchen shutter" move_long_address: "3/0/0" - move_short_address: "3/0/1" stop_address: "3/0/4" position_address: "3/0/3" position_state_address: "3/0/2" travelling_time_down: 51 travelling_time_up: 61 + - name: "Bedroom blinds" + move_long_address: "3/1/1" + move_short_address: "3/1/4" + position_address: "3/1/3" + position_state_address: "3/1/2" + angle_address: "3/1/5" + angle_state_address: "3/1/6" + travelling_time_down: 40 + travelling_time_up: 40 ``` {% configuration %} @@ -1227,6 +1240,8 @@ entity_category: default: None {% endconfiguration %} +{% enddetails %} + ## Date The KNX date platform allows to send date values to the KNX bus and update its state from received telegrams. It can optionally respond to read requests from the KNX bus. diff --git a/source/_integrations/kostal_plenticore.markdown b/source/_integrations/kostal_plenticore.markdown index 776a7b9f50a..6522c81a8be 100644 --- a/source/_integrations/kostal_plenticore.markdown +++ b/source/_integrations/kostal_plenticore.markdown @@ -22,6 +22,25 @@ The Kostal Plenticore integration allows you to get data from [Kostal Plenticore The integration uses the REST-API interface which is also used by the integrated Web-UI and therefore uses the same password. +## Installer access + +The integration supports installer-level access using a Master key and Service Code. This enables access to future additional settings that are normally restricted to certified installers. + +{% warning %} + +Using installer credentials: + +- Should only be done if you fully understand the implications +- May void your warranty +- Could potentially damage your device if settings are incorrectly configured +- Should be done with extreme caution + +{% endwarning %} + +To enable installer access, set your Master Key as the password and fill in the Service Code in the configuration when adding the integration. + +For information about obtaining installer credentials, please consult your device documentation or contact a certified installer. + {% include integrations/config_flow.md %} ## Sensors diff --git a/source/_integrations/lamarzocco.markdown b/source/_integrations/lamarzocco.markdown index 2ad9e52879b..8e9c53db3aa 100644 --- a/source/_integrations/lamarzocco.markdown +++ b/source/_integrations/lamarzocco.markdown @@ -35,8 +35,6 @@ This integration interacts with [La Marzocco](https://lamarzocco.com/it/en/) cof If your Home Assistant host can perform [DHCP discovery](https://www.home-assistant.io/integrations/dhcp/), your machine will be discovered automatically. Otherwise, if your machine is in Bluetooth range to your Home Assistant host and the [Bluetooth](/integrations/bluetooth) integration is fully loaded, the machine will be discovered as well. -By default, this integration will receive push updates from the cloud about its general status and otherwise query your machine every 30 seconds for an update, every 15 minutes for new statistics, and every hour for a firmware update. - ## Prerequisites - To be able to configure your machine in Home Assistant, your machine needs to be added to your account using the official La Marzocco app first. @@ -59,6 +57,10 @@ Use Bluetooth: description: Allows you to manually disable Bluetooth communication with the machine (if available). This can be used to avoid longer timeouts, e.g., when your machine is only sometimes in range. {% endconfiguration_basic %} +## Data updates + +By default, this integration will receive push updates from the cloud about its general status. If that is not possible it will query the cloud every 15 seconds for an update of general machine information, every 15 minutes for new statistics, every 30 minutes for updated schedules and every 8 hours for a firmware update. + # Available platforms & entities {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} = La Marzocco Cloud @@ -104,6 +106,7 @@ Use Bluetooth: |------------------- |-------------| ---------------------- | ----------------- | ------- | | **Coffee boiler ready time** | Indicates when the coffee boiler will be ready for brewing. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | | **Steam boiler ready time** | Indicates when the steam boiler will be ready for brewing. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | +| **Brew start time** | If a brew is running, tells the exact start time of that brew. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | | **Total coffees made** | How many coffees have been made in total. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | | **Total flushes done** | How often the machine has been flushed. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | | **Last cleaning time** | Indicates when the machine was last cleaned with a **Backflush**. | `all` | {% icon "material-symbols:cloud-outline" title="La Marzocco Cloud" %} | - | diff --git a/source/_integrations/lektrico.markdown b/source/_integrations/lektrico.markdown index b8b5f346c3a..27666b7bf58 100644 --- a/source/_integrations/lektrico.markdown +++ b/source/_integrations/lektrico.markdown @@ -109,11 +109,12 @@ Buttons available in the library: ### Chargers -| Button | Description | -| :------------------ | :--------------------------------- | -| charge_start | Command charger to start charging. | -| charge_stop | Command charger to stop charging. | -| reboot | Reboot charger. | +| Button | Description | +| :------------------------- | :--------------------------------- | +| charge_start | Command charger to start charging. | +| charge_stop | Command charger to stop charging. | +| charging_schedule_override | Command charger to override the charging schedule for the next charging session. | +| reboot | Reboot charger. | ### Energy meters diff --git a/source/_integrations/lirc.markdown b/source/_integrations/lirc.markdown deleted file mode 100644 index cf28ba30e99..00000000000 --- a/source/_integrations/lirc.markdown +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: LIRC -description: Instructions on how to integrate IR remotes with LIRC into Home Assistant. -ha_category: - - Automation -ha_release: 0.21 -ha_iot_class: Local Push -ha_domain: lirc -ha_integration_type: integration -ha_quality_scale: legacy ---- - -[LIRC](https://www.lirc.org/) integration for Home Assistant allows you to receive signals from an infrared remote control and control actions based on the buttons you press. You can use them to set scenes or trigger any other [automation](/docs/automation/). - -Sending IR commands is not supported in this integration (yet), but can be accomplished using the [shell_command integration](/integrations/shell_command/) in conjunction with the `irsend` command. - -## Installation - -To allow Home Assistant to talk to your IR receiver, you need to first make sure you have the correct dependencies installed: - -```bash -sudo apt-get install lirc liblircclient-dev -``` - -{% note %} - -If you are configuring on a Raspberry Pi, there are excellent instructions with GPIO schematics and driver configurations [here](http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/). Take notice, the instructions in this blog are valid for Raspian Jesse where lirc 0.9.0 was included in the Debian package. In Raspian Stretch lirc 0.9.4 is included in the Debian package. -The configuration is slightly different : - -- The `hardware.conf` file is not supported, obsoleted by a new `lirc_options.conf` file and systemd unit definitions. -- The former single `lirc` service is replaced with the three systemd services `lircd.service`, `lircmd.service` and `irexec.service`. There is no counterpart to the 0.9.0 `lirc` service which covered all of these. Using a separate transmitter device requires yet another service. -- 0.9.4 defaults to using systemd for controlling the services. This is not just start/stop functionality, systemd is used to implement new features and to address shortcomings in 0.9.0. However, traditional systemV scripts are also installed and could be used although this is less tested and not really documented. - -For more information have a look at `/usr/share/doc/lirc/README.Debian.gz` where the update process is explained when you have updated from jessie to stretch. - -{% endnote %} - -## Configuring LIRC - -Now teach LIRC about your particular remote control by preparing a lircd configuration file (`/etc/lirc/lircd.conf`). Search the [LIRC remote database](https://lirc.sourceforge.net/remotes/) for your model. If you can't find it, then you can always use the `irrecord` program to learn your remote. This will create a valid configuration file. Add as many remotes as you want by pasting them into the file. If `irrecord` doesn't work (e.g., for some air conditioner remotes), then the `mode2` program is capable of reading the codes in raw mode, followed by `irrecord -a` to extract hex codes. - -Next, you have to make a `~/.lircrc` file that maps keypresses to system actions. The file has to be in the home dir of the user running Home Assistant, e.g., in `/home/homeassistant/.lircrc` if you're running in a virtual env. [The configuration](https://www.lirc.org/html/configure.html) is a bit tedious but it must be done. Use the `prog = home-assistant` for all keys you want to be recognized by Home Assistant. The values you set for `button` must be the same as in the `lircd.conf` file and the values you put for `config` entry will be the sensor value in Home Assistant when you press the button. An example may look like this: - -```bash -begin - remote = SONY - button = KEY_1 - prog = home-assistant - config = KEY_1 -end -begin - remote = SONY - button = KEY_2 - prog = home-assistant - config = KEY_2 -end -begin - remote = SONY - button = KEY_3 - prog = home-assistant - config = KEY_3 -end -``` - -Test your LIRC installation before proceeding by running: - -```bash -ircat home-assistant -``` - -and pressing some buttons on the remote. You should see them register on the screen if LIRC is properly configured. - -## Configuration Home Assistant - -```yaml -# Example configuration.yaml entry -lirc: -``` - -### Events - -The LIRC integration fires `ir_command_received` events on the bus. You can capture the events and respond to them in automation scripts like this: - -```yaml -# Example configuration.yaml automation entry -automation: - - alias: "Off on Remote" - triggers: - - trigger: event - event_type: ir_command_received - event_data: - button_name: KEY_0 - actions: - - action: homeassistant.turn_off - target: - entity_id: group.a_lights -``` - -The `button_name` data values (e.g., `KEY_0`) are set by you in the `.lircrc` file. diff --git a/source/_integrations/matter.markdown b/source/_integrations/matter.markdown index 1231f30e8b5..dc99f0c7fe8 100644 --- a/source/_integrations/matter.markdown +++ b/source/_integrations/matter.markdown @@ -11,6 +11,7 @@ ha_category: - Light - Lock - Number + - Pump - Select - Sensor - Switch @@ -108,8 +109,6 @@ It is recommended to run the Matter add-on on Home Assistant OS. This is current If you run Home Assistant in a container, you can run a Docker image of the [Matter server](https://github.com/home-assistant-libs/python-matter-server). The requirements and instructions for your host setup are described on that GitHub page. -Running Matter on a Home Assistant Core installation is not supported. - ## Adding a Matter device to Home Assistant Each Matter network is called a fabric. Each home automation controller that controls Matter devices has its own "fabric". You can add devices directly to the fabric of your Home Assistant instance, or share them from another fabric (for example from Google or Apple) to Home Assistant's fabric. We're going to explore all these options below. diff --git a/source/_integrations/media_source.markdown b/source/_integrations/media_source.markdown index 9f98b47403f..eae407edd0a 100644 --- a/source/_integrations/media_source.markdown +++ b/source/_integrations/media_source.markdown @@ -41,9 +41,6 @@ Home Assistant OS and Supervised users can access this folder by using, for example, the Samba add-on. Users of Home Assistant Container can mount a volume of their choice to `/media`. -If you are a Home Assistant Core user, the default directory called is called -`media` under the configuration path (where your {% term "`configuration.yaml`" %} is located). - Files served from `media` are protected by Home Assistant authentication unlike those served from `www`. diff --git a/source/_integrations/metoffice.markdown b/source/_integrations/metoffice.markdown index 0f175596ef3..4c2896bd1ec 100644 --- a/source/_integrations/metoffice.markdown +++ b/source/_integrations/metoffice.markdown @@ -16,17 +16,18 @@ ha_platforms: ha_integration_type: integration --- -The `metoffice` weather platform uses the Met Office's [DataPoint API](https://www.metoffice.gov.uk/datapoint) for weather data. -## Getting started -Their website is not as straightforward so check the [getting started](https://www.metoffice.gov.uk/services/data/datapoint/getting-started). -1. Register for a [Met Office account](https://register.metoffice.gov.uk/WaveRegistrationClient/public/register.do?service=datapoint). -2. After registration and verification of your account, [login](https://register.metoffice.gov.uk/MyAccountClient/account/view) to retrieve your API key. +The **Met Office** weather {% term integration %} uses the Met Office's [DataHub API](https://www.metoffice.gov.uk/services/data/met-office-weather-datahub) for weather data. + +## Prerequisites + +1. Register for a [Met Office DataHub](https://datahub.metoffice.gov.uk/) account. +2. After registration, [subscribe](https://datahub.metoffice.gov.uk/profile/subscriptions) to [Site Specific Global Spot](https://datahub.metoffice.gov.uk/pricing/site-specific) dataset to obtain your API key. Free tier subscription gives 360 calls per day, which is enough for using this integration {% include integrations/config_flow.md %} ## Entities -This integration creates a number of weather entities for each entry created in the configuration by location: one weather entity with a summary and a forecast, and twelve sensor entities for individual reporting on each of the individual measurements, for both 3-hourly and daily updates (to a grand total of 26 entities available). Note that only one of the two summary entities and the 3-hourly sensor entities flagged below are enabled by default, so your system isn't overrun on initial configuration. The time supplied for each forecast is the start time for the forecast. +This integration creates a number of weather entities for each entry created in the configuration by location: one weather entity with a summary and a forecast (daily, hourly, and twice-daily), and sensor entities for individual reporting on each of the individual measurements. Note that only some of the sensor entities flagged below are enabled by default, so your system isn't overrun on initial configuration. The available sensor entities: @@ -37,7 +38,6 @@ The available sensor entities: - temperature - UV index - visibility -- visibility distance - weather - wind direction - wind gust @@ -45,4 +45,4 @@ The available sensor entities: Only probability of precipitation, temperature, weather and wind speed are enabled by default. -Details about the API are available in the [DataPoint API documentation](https://www.metoffice.gov.uk/services/data/datapoint/api-reference). The [DataPoint](https://github.com/EJEP/datapoint-python) library is used to retrieve data. +Details about the API are available in the [DataHub API documentation](https://datahub.metoffice.gov.uk/docs/f/category/site-specific/overview). The [datapoint-python](https://github.com/EJEP/datapoint-python) library is used to retrieve data. diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown index 47fc5239fb8..7c778df2227 100644 --- a/source/_integrations/miele.markdown +++ b/source/_integrations/miele.markdown @@ -10,6 +10,7 @@ ha_category: - Light - Sensor - Switch + - Vacuum ha_iot_class: Cloud Push ha_release: '2025.5' ha_domain: miele @@ -25,6 +26,7 @@ ha_platforms: - light - sensor - switch + - vacuum ha_integration_type: integration ha_zeroconf: true ha_quality_scale: bronze @@ -154,11 +156,18 @@ Climate entities are used to control target temperatures in refrigerators, freez - **Program type**: Shows the current program type. - **Spin speed**: Shows the spin speed selected for the current washing machine program. - **Energy consumption**: Shows the energy consumption during the current program cycle. The value will be reset after finishing the program. + - **Energy forecast**: Shows the forecast percentage of the maximum energy the program will consume for a given cycle. - **Water consumption**: Shows the water consumption during the current program cycle. The value will be reset after finishing the program. + - **Water forecast**: Shows the forecast percentage of the maximum water the program will consume for a given cycle. - **Temperature**: Represents the current temperature in refrigerators, freezers, and ovens. Entities are created for up to 3 zones depending on the device capabilities. + - **Target temperature**: Shows the set target temperature for ovens and washing machines. + - **Core temperature**: Shows the core temperature of the food in ovens with an appropriate temperature probe. + - **Target core temperature**: Shows the set core target temperature for the food in ovens with an appropriate temperature probe. + - **Drying step**: Shows the selected drying step on tumble dryers. - **Elapsed time**: Shows the number of minutes that the current program has been running. - **Remaining time**: Shows the estimated number of minutes remaining in the current program cycle. This value can fluctuate during a program cycle based on load dirtiness or water‑heating time. - **Start in**: Shows the number of minutes until a delayed program start, if configured. + - **Plate**: Four to six sensors that show the current state of hob heating plates. The status mimics the display on the actual hob. For example, 0 is off, 5 is approximately 50% power, and "B" is power boost. Plates can only be monitored from Home Assistant, not controlled. {% enddetails %} ### Switch @@ -170,6 +179,13 @@ Climate entities are used to control target temperatures in refrigerators, freez - **Superfreezing**: The switch controls Superfreezing mode for freezers. {% enddetails %} +### Vacuum + +{% details "List of vacuum entities" %} + +- **Robot vacuum cleaner**: Miele robot vacuum cleaners can be monitored and controlled to a limited extent. The device can be started, stopped, and paused. The fan speed can also be set. +{% enddetails %} + ## Automation examples Get started with these automation examples diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index bcf7bf9c2af..f1895983b8b 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -1239,6 +1239,26 @@ lights: required: false default: 0x00 type: integer + brightness_address: + description: "Address to read/write color brightness." + required: false + default: None + type: integer + color_temp_address: + description: "Address to read/write color temperature." + required: false + default: None + type: integer + min_temp: + description: "Minimal level of color temperature in Kelvin." + required: false + default: 2000 + type: integer + max_temp: + description: "Maximal level of color temperature in Kelvin." + required: false + default: 7000 + type: integer write_type: description: "Type of write request." required: false @@ -1313,6 +1333,22 @@ modbus: slave: 2 address: 14 write_type: coil + brightness_address: 1006 + verify: + - name: "light3" + slave: 2 + address: 14 + write_type: coil + brightness_address: 1006 + color_temp_address: 2006 + - name: "light4" + slave: 2 + address: 14 + write_type: coil + brightness_address: 1006 + color_temp_address: 2006 + min_temp: 2500 + max_temp: 5500 verify: - name: "Register1" address: 11 @@ -1398,7 +1434,7 @@ sensors: required: false type: float nan_value: - description: If a Modbus sensor has a defined NaN value, this value can be set as a hex string starting with `0x` containing one or more bytes (for example, `0xFFFF` or `0x80000000`) or provided as an integer directly. If triggered, the sensor becomes `unavailable`. Please note that the hex to int conversion for `nan_value` does currently not obey home-assistants Modbus encoding using the `data_type`, `structure`, or `swap` arguments. + description: If a Modbus sensor has a defined NaN value, this value can be set as a hex string starting with `0x` containing one or more bytes (for example, `0xFFFF` or `0x80000000`) or provided as an integer directly. If triggered, the sensor becomes `unknown`. Please note that the hex to int conversion for `nan_value` does currently not obey home-assistants Modbus encoding using the `data_type`, `structure`, or `swap` arguments. required: false type: string zero_suppress: diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown index 2a12bf82436..b718a74c5bb 100644 --- a/source/_integrations/motion_blinds.markdown +++ b/source/_integrations/motion_blinds.markdown @@ -36,6 +36,7 @@ Additionally the following brands have been reported to also work with this inte - [Hurrican Shutters Wholesale](https://www.hurricaneshutterswholesale.com/) - [Inspired Shades](https://www.inspired-shades.com/) - [iSmartWindow](https://www.ismartwindow.co.nz/) +- [Kaiser Nienhaus](https://www.kaiser-nienhaus.de/) - [Krispol](https://krispol.eu/en/drives/) - [Linx](https://linxautomation.com.au/) - [Madeco](https://www.madeco.fr/) @@ -69,6 +70,7 @@ The following bridges are reported to work with this integration: - DD7006A Smart Home bridge - Dreamhub Pro 191726 - Dreamhub mini 191717 +- Kaiser Nienhaus Smart Stick {% include integrations/config_flow.md %} diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index cac932e38b7..965021e3dc8 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -122,6 +122,10 @@ MQTT Devices and entities can be set up through [MQTT -discovery](#mqtt-discover {% details "Configuration of MQTT components via Subentries" %} +- [Binary sensor](/integrations/binary_sensor.mqtt/) +- [Button](/integrations/button.mqtt/) +- [Cover](/integrations/cover.mqtt/) +- [Fan](/integrations/fan.mqtt/) - [Light](/integrations/light.mqtt/) - [Notify](/integrations/notify.mqtt/) - [Sensor](/integrations/sensor.mqtt/) diff --git a/source/_integrations/neff.markdown b/source/_integrations/neff.markdown index 2b5f2da4ae7..82506976177 100644 --- a/source/_integrations/neff.markdown +++ b/source/_integrations/neff.markdown @@ -31,6 +31,7 @@ ha_platforms: - switch - time ha_iot_class: Cloud Push +ha_dhcp: true ha_zeroconf: true --- diff --git a/source/_integrations/nexia.markdown b/source/_integrations/nexia.markdown index d8bb85672b2..2de6d466b19 100644 --- a/source/_integrations/nexia.markdown +++ b/source/_integrations/nexia.markdown @@ -90,6 +90,18 @@ The following enable/disable switches are added for each thermostat zone: - Hold mode +The following include/exclude {% term switch %} is added for each RoomIQ sensor (if the device supports +[RoomIQ](https://support.asairhome.com/hc/en-us/articles/360045784651-RoomIQ-Overview-and-Usage)). + +- Include `YOUR_SENSOR_NAME` (with your sensor name) + +These switches allow you to select which RoomIQ sensors to include in a zone's average temperature. +To change your selected sensors, set each switch to represent your choice. +Several seconds after the last such change, the selection is sent to the manufacturer's web service. +It usually takes 10–15 seconds to complete, depending on the web service. +At least one sensor must be selected. +If you exclude all sensors, the switches will revert to show the zone's settings. + ### Action `nexia.set_aircleaner_mode` Sets the air cleaner mode. Options include 'auto', 'quick', and diff --git a/source/_integrations/nmap_tracker.markdown b/source/_integrations/nmap_tracker.markdown index 82073194858..dcd28faf384 100644 --- a/source/_integrations/nmap_tracker.markdown +++ b/source/_integrations/nmap_tracker.markdown @@ -18,12 +18,6 @@ As an alternative to the router-based device tracking, it is possible to directl Please keep in mind that modern smart phones will usually turn off WiFi when they are idle. Simple trackers like this may not be reliable on their own. {% endnote %} -{% note %} -If you are running Home Assistant Core in a Python virtual environment, you might have to install the packages for `arp` and `nmap`. -On Debian based hosts (for example Raspbian) do so by running `sudo apt-get install net-tools nmap`. -On a Fedora host run `sudo dnf -y install nmap`. -{% endnote %} - {% include integrations/config_flow.md %} An example of how the Nmap scanner can be customized: diff --git a/source/_integrations/nordpool.markdown b/source/_integrations/nordpool.markdown index 9597acb27eb..067b90314b1 100644 --- a/source/_integrations/nordpool.markdown +++ b/source/_integrations/nordpool.markdown @@ -241,26 +241,18 @@ template: - 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 %} + {% set data = namespace(prices=[]) %} + {% for state in tomorrow_price['SE3'] %} + {% set data.prices = data.prices + [(state.price / 1000)] %} + {% endfor %} + {{min(data.prices)}} 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 %} + {% 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}} ``` {% endraw %} diff --git a/source/_integrations/number.markdown b/source/_integrations/number.markdown index 3e3d5558bfb..b0cfffc6d3e 100644 --- a/source/_integrations/number.markdown +++ b/source/_integrations/number.markdown @@ -53,10 +53,10 @@ The following device classes are supported for numbers: - **distance**: Generic distance in km, m, cm, mm, mi, nmi, yd, or in - **duration**: Duration in d, h, min, s, ms, or µs - **energy**: Energy in J, kJ, MJ, GJ, mWh, Wh, kWh, MWh, GWh, TWh, cal, kcal, Mcal, or Gcal -- **energy_distance**: Energy per distance in kWh/100km, mi/kWh or km/kWh. +- **energy_distance**: Energy per distance in kWh/100km, Wh/km, mi/kWh, or km/kWh. - **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 +- **gas**: Gas volume in L, m³, ft³ or CCF - **humidity**: Percentage of humidity in the air in % - **illuminance**: The current light level in lx - **irradiance**: Irradiance in W/m² or BTU/(h⋅ft²) @@ -75,13 +75,14 @@ The following device classes are supported for numbers: - **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 +- **reactive_energy**: Reactive energy in varh or kvarh - **reactive_power**: Reactive power in var or kvar - **signal_strength**: Signal strength in dB or dBm - **sound_pressure**: Sound pressure in dB or dBA - **speed**: Generic speed in ft/s, in/d, in/h, in/s, km/h, kn, m/s, mph, mm/d, or mm/s - **sulphur_dioxide**: Concentration of sulphur dioxide in µg/m³ - **temperature**: Temperature in °C, °F or K -- **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³ +- **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³ or mg/m³ - **volatile_organic_compounds_parts**: Ratio of volatile organic compounds in ppm or ppb - **voltage**: Voltage in V, mV, µV, kV, MV - **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF diff --git a/source/_integrations/nut.markdown b/source/_integrations/nut.markdown index 93833ab5ec1..395cc933f08 100644 --- a/source/_integrations/nut.markdown +++ b/source/_integrations/nut.markdown @@ -103,7 +103,10 @@ The following sensors may be available: - **Input load (%)**: Load on (ePDU) input - **Input voltage (V)**: Input voltage - **Load (%)**: Load on UPS -- **Outlet voltage (V)**: Total output voltage +- **Outlet apparent power (VA)**: Apparent power for all outlets +- **Outlet current (A)**: Current for all outlets +- **Outlet real power (W)**: Real power for all outlets +- **Outlet voltage (V)**: Voltage for all outlets - **Output phases**: Output phases - **Output voltage (V)**: Output voltage - **Status**: Human-readable version of "Status data" (see below) diff --git a/source/_integrations/onvif.markdown b/source/_integrations/onvif.markdown index 88d422f37aa..dc5c6b4381d 100644 --- a/source/_integrations/onvif.markdown +++ b/source/_integrations/onvif.markdown @@ -30,10 +30,6 @@ The ONVIF camera integration allows you to use an [ONVIF](https://www.onvif.org/ It is recommended that you create a user on your device specifically for Home Assistant. For all current functionality, it is enough to create a standard user. {% endtip %} -{% note %} -If running Home Assistant Core in a venv, ensure that libxml2 and libxslt Python interfaces are installed via your package manager. -{% endnote %} - ### Configuration notes Most of the ONVIF devices support more than one audio/video profile. Each profile provides different image quality, or in the case of an NVR, separate connected cameras. This integration will add entities for all compatible profiles with the video encoding set to H.264. Usually, the first profile has the highest quality and it is the profile used by default. However, you may want to use a lower quality image. You may disable unwanted entities through the Home Assistant UI. diff --git a/source/_integrations/openweathermap.markdown b/source/_integrations/openweathermap.markdown index c0601e360c3..3c200ef1497 100644 --- a/source/_integrations/openweathermap.markdown +++ b/source/_integrations/openweathermap.markdown @@ -11,6 +11,7 @@ ha_codeowners: - '@fabaff' - '@freekode' - '@nzapponi' + - '@wittypluck' ha_domain: openweathermap ha_platforms: - sensor diff --git a/source/_integrations/pandora.markdown b/source/_integrations/pandora.markdown deleted file mode 100644 index 02165cd8637..00000000000 --- a/source/_integrations/pandora.markdown +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Pandora -description: Instructions on how to integrate Pandora radio into Home Assistant. -ha_category: - - Media player -ha_release: 0.22 -ha_iot_class: Local Polling -ha_domain: pandora -ha_platforms: - - media_player -ha_integration_type: integration -related: - - docs: /docs/configuration/ - title: Configuration file -ha_quality_scale: legacy ---- - -If you have a Pandora account, you can control it from Home Assistant with this media player. - -{% important %} -This integration is only available on Home Assistant Core installation types. Unfortunately, it cannot be used with Home Assistant OS, Supervised or Container. -{% endimportant %} - -### Installation of Pianobar - -This media player uses the [Pianobar command-line Pandora client](https://github.com/PromyLOPh/pianobar), which you have to install separately. This can be done on a Raspberry Pi 2/3 with Raspbian Jessie as follows . _(Note: Other platforms may have different installation processes)_ - -The version of pianobar that comes with Jessie has a bug, so you have to build a more recent version. The latest version depends on a recent version of libraries associated with FFmpeg, so you should make sure you go through the backport process documented in [The FFmpeg integration](/integrations/ffmpeg/) before doing this. Install the following basic dependencies: - -```bash -sudo apt-get install git libao-dev libgcrypt11-dev libfaad-dev libmad0-dev libjson-c-dev make pkg-config libcurl4-openssl-dev -``` - -And now install the backported FFmpeg-related libraries (note that if you're using an older version of FFmpeg for other things on this machine, you may encounter issues after doings this): - -```bash -sudo apt-get -t jessie-backports install libav-tools libavcodec-extra libavcodec-dev libavfilter-dev libavformat-dev -``` - -Now clone the Pianobar repository and build pianobar: - -```bash -git clone https://github.com/PromyLOPh/pianobar.git -cd pianobar -make clean && make -sudo make install -``` - -Configure Pianobar to auto-login and start playing a station (optional, see `man pianobar`) by creating and editing the `~/.config/pianobar/config` file: - -```bash -password = Password -user = you@youraccount.com -``` - -Test it out by running `pianobar` in the command line. You should be able to listen to your Pandora stations. - -### Configuration in Home Assistant - -The Pandora player can be loaded by adding the following lines to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -media_player: - - platform: pandora -``` - -That's it! Now you will find a media player. If you click it you will find all your stations listed as different sources. If you switch to one, the station will begin playing. - -

- -

diff --git a/source/_integrations/paperless_ngx.markdown b/source/_integrations/paperless_ngx.markdown new file mode 100644 index 00000000000..07bc8285841 --- /dev/null +++ b/source/_integrations/paperless_ngx.markdown @@ -0,0 +1,79 @@ +--- +title: Paperless-ngx +description: Instructions on how to integrate Paperless-ngx into Home Assistant +ha_release: 2025.6 +ha_category: + - Sensor +ha_iot_class: Local Polling +ha_config_flow: true +ha_domain: paperless_ngx +ha_codeowners: + - '@fvgarrel' +ha_integration_type: service +ha_quality_scale: silver +related: + - url: https://docs.paperless-ngx.com/ + title: Paperless-ngx +ha_platforms: + - diagnostics + - sensor +--- + +The **Paperless-ngx** {% term integration %} allows you to connect your [Paperless-ngx](https://docs.paperless-ngx.com/) instance to Home Assistant and monitor its status and activity. + +## Prerequisites + +{% important %} +This integration is only fully supported with **Paperless-ngx version 2.15 or later**. Earlier versions are not supported. +{% endimportant %} + +To ensure full functionality of this integration, you must have **read permissions** for all document-related resources, including documents, tags, document types, and correspondents. + +To enable monitoring of diagnostic sensors, you must have **administrator permissions**. Without administrator rights, specific API endpoints cannot be accessed, and the sensor states will not be available. + +{% details "Create an access token" %} + +1. Log in to your **Paperless-ngx** instance. +2. In the upper-right corner, select your profile icon. +3. Select **My Profile**. +4. Under **API Auth Token**, select the right **Refresh** button next to the textbox to generate a new token. Confirm with **yes**. +5. Copy the token and use it during the integration setup in Home Assistant. + +{% enddetails %} + +{% include integrations/config_flow.md %} + +{% configuration_basic %} +URL: + description: "URL to connect to the Paperless-ngx instance." +API key: + description: "API key to connect to the Paperless-ngx API." +{% endconfiguration_basic %} + +## Sensors + +This integration provides {% term sensors %} for the following information from Paperless-ngx: + +| Sensor | Description | +|--------------------------|--------------------------------------------------------------------------------| +| **Correspondents** | Indicates the total number of defined correspondents. | +| **Document types** | Indicates the total number of defined document types. | +| **Documents in inbox** | Indicates the number of documents currently in the inbox. | +| **Tags** | Indicates the total number of defined tags | +| **Total characters** | Indicates the total number of characters extracted from all documents. | +| **Total documents** | Indicates the total number of documents stored. | +| **Total storage** | Indicates the total disk space used by Paperless-ngx. | +| **Available storage** | Indicates the remaining available disk space for Paperless-ngx. | +| **Status database** | Indicates whether the database is reachable and functioning correctly. | +| **Status index** | Indicates whether the document indexing service is operational. | +| **Status classifier** | Indicates whether the document classifier service is running properly. | +| **Status celery** | Indicates whether the Celery task queue is active and processing tasks. | +| **Status redis** | Indicates whether the Redis service used for task queuing is available. | +| **Status sanity** | Indicates the sanity of the Paperless-ngx documents. | + + +## 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/pitsos.markdown b/source/_integrations/pitsos.markdown index dd984659c10..750f2eb91f6 100644 --- a/source/_integrations/pitsos.markdown +++ b/source/_integrations/pitsos.markdown @@ -31,6 +31,7 @@ ha_platforms: - switch - time ha_iot_class: Cloud Push +ha_dhcp: true ha_zeroconf: true --- diff --git a/source/_integrations/powerfox.markdown b/source/_integrations/powerfox.markdown index 5f3cbe96620..13a2e69d046 100644 --- a/source/_integrations/powerfox.markdown +++ b/source/_integrations/powerfox.markdown @@ -48,7 +48,7 @@ Not all Poweropti devices are supported currently. Check the list below to see i ## Data updates The integration will update its information by polling Powerfox every -minute. This ensures the data in Home Assistant is up to date. +10 seconds. This ensures the data in Home Assistant is up to date. ## Actions diff --git a/source/_integrations/probe_plus.markdown b/source/_integrations/probe_plus.markdown new file mode 100644 index 00000000000..ca3fec49afb --- /dev/null +++ b/source/_integrations/probe_plus.markdown @@ -0,0 +1,70 @@ +--- +title: Probe Plus +description: Instructions on how to integrate Probe Plus food temperature probes into Home Assistant. +ha_release: 2025.6 +ha_category: + - Sensor +ha_iot_class: Local Push +ha_config_flow: true +ha_domain: probe_plus +ha_platforms: + - sensor +ha_bluetooth: true +ha_codeowners: + - '@pantherale0' +ha_integration_type: device +ha_quality_scale: bronze +--- + +The **Probe Plus** {% term integration %} allows you to view food temperature probe details supported by [Probe Plus](https://play.google.com/store/apps/details?id=com.yscoco.thermoex) through Home Assistant. + +If your probe is within Bluetooth range to your Home Assistant host and the [Bluetooth](/integrations/bluetooth) integration is fully loaded, the probe should be discovered automatically provided that the model name starts with FM2. If you are configuring the device manually, your probe needs to be turned on during setup. + +Once the integration is set up, Home Assistant will try to connect to your probe every 15 seconds. This means there is sometimes a small delay between you removing the probe from its dock and Home Assistant connecting to it. + +{% include integrations/config_flow.md %} + +{% configuration_basic %} +Device: + description: "The Bluetooth device that is your probe." +{% endconfiguration_basic %} + +## Available functionality + +### Sensors + +- **Battery**: Current battery level of the relay and probe. +- **Temperature**: Current temperature reading from the probe. +- **Probe signal strength**: The signal strength of the probe to its charging dock. +- **Relay voltage**: Voltage of the battery within the charging dock (not supported on all models). +- **Probe voltage**: Voltage of the battery inside the probe. + +## Supported devices + +The following devices have been tested successfully with this integration: + +- FMC210/FMC213 + +If you have successfully tested this integration with another probe model, please let us know by enhancing this documentation, or by opening an issue in GitHub. + +## Possible use-cases + +This integration can be used to monitor food temperatures, you could combine this with your Home Assistant Voice to alert you when the food has finished cooking. As a bonus, multiple probes are supported and therefore if you are cooking a large family meal, you can view all your food temperatures on one dashboard. + +## Known limitations + +- While this integration is configured for your device, you won't be able to use the official app, as only one connection at a time is supported. +- This assumes that the probe is configured to read the temperature in Celsius. Make sure you have changed this in the app before setting up in case you are using Fahrenheit. A template helper can be used to convert between units. + +## Troubleshooting + +{% details "Device not discovered or found" %} + +Make sure your probe is removed from the charging dock and the dock is within Bluetooth range to your Home Assistant instance. [ESPHome Bluetooth Proxies](https://esphome.io/components/bluetooth_proxy.html) are a great way to increase the range if your instance is too far away. Turn on debug settings in the Probe Plus integration and check your logs. +{% enddetails %} + +## Removing the integration + +This integration follows standard integration removal, no extra steps are required. + +{% include integrations/remove_device_service.md %} diff --git a/source/_integrations/profilo.markdown b/source/_integrations/profilo.markdown index 0caa7b2898c..478034af125 100644 --- a/source/_integrations/profilo.markdown +++ b/source/_integrations/profilo.markdown @@ -31,6 +31,7 @@ ha_platforms: - switch - time ha_iot_class: Cloud Push +ha_dhcp: true ha_zeroconf: true --- diff --git a/source/_integrations/ps4.markdown b/source/_integrations/ps4.markdown index e2a9d5a6c0f..afae87b4348 100644 --- a/source/_integrations/ps4.markdown +++ b/source/_integrations/ps4.markdown @@ -50,62 +50,6 @@ Do not run your Home Assistant Core instance itself as root or wit There are varying methods to perform this, dependent on your OS that is running Home Assistant. Specifically, your *Python Interpreter*, which runs your Home Assistant instance, needs access to the mentioned ports. -{% note %} -Additional configuration is only required for Home Assistant Core users **not** running on Docker. -{% endnote %} - -### Debian-based - -Home Assistant installed on a Debian-type OS may require configuration. This section is applicable but not limited to the following operating systems: - -- Debian -- Raspbian -- Armbian -- Ubuntu - -In terminal run the following command: - -```bash -sudo setcap 'cap_net_bind_service=+ep' -``` - -Replace `` with your **system path** to Python that is running Home Assistant and/or your virtual environment if used. The path **should not** be a **symlink** or be **inside of a virtual environment**. - -Example: - -```bash -sudo setcap 'cap_net_bind_service=+ep' /usr/bin/python3.5 -``` - -To find your system Python path: - -- Add the [System Health](/integrations/system_health/) integration to your {% term "`configuration.yaml`" %}. In a web browser, access your frontend and navigate to the about/logs page "http:///developer-tools/info). In the System Health box, locate the item **python_version** and note the value that is displayed. Then in a terminal run: - - ```bash - whereis python - ``` - - Replace `` with the value for `python_version` that is shown in the System Health box. - - Example: - ```bash - whereis python3.5.3 - ``` - - The output which has the directory `/bin/` is likely your system Python path which should look like this `/usr/bin/python3.5` - -- If Home Assistant is installed in a virtual environment, use terminal to `cd` to the root/top directory of your environment and run: - - ```bash - readlink -f bin/python3 - ``` - or - ```bash - readlink -f bin/python - ``` - - The output will be your system Python path. - ### Docker When running Home Assistant using Docker, make sure that the Home Assistant container is discoverable by the PS4. This can be achieved by ensuring that the Home Assistant container uses the `host` network driver (by passing `--net=host` to the container when creating, or adding `network_mode: "host"` to your compose file when using `docker-compose`). diff --git a/source/_integrations/qbus.markdown b/source/_integrations/qbus.markdown index 61591a1cd3f..4fbd89608c7 100644 --- a/source/_integrations/qbus.markdown +++ b/source/_integrations/qbus.markdown @@ -4,10 +4,12 @@ description: Instructions on how to integrate your Qbus installation with Home A ha_category: - Climate - Light + - Scene - Switch ha_platforms: - climate - light + - scene - switch ha_iot_class: Local Push ha_codeowners: @@ -40,13 +42,12 @@ There is currently support for the following **Qbus** products within Home Assis - **CTD01E to CTD03E (CTD 3.0)**: main controllers (yellow). - **CTD10 to CTDMax (CTD 3.5)**: main controllers (black). -- **Toggle**: toggle outputs on controllers. -- **Dimmer**: dimmer outputs on controllers. ## Available entities - **Climate**: manages thermostats by setting temperature and choosing presets. - **Light**: controls dimmer lights, allowing both on/off functionality and brightness adjustment. +- **Scene**: activates predefined scenes. - **Switch**: toggles on/off outputs. ## Removing the integration @@ -59,6 +60,38 @@ This integration follows standard integration removal. No extra steps are requir All data from **Qbus** entities are pushed to Home Assistant over MQTT. +## Examples + +### Automation to activate Qbus scene + +This automation will activate the **Watching TV** Qbus scene when turning on your TV. + +Replace `media_player.my_tv` with your TV entity and `scene.ctd_000001_watching_tv` with your Qbus scene entity. + +{% raw %} + +```yaml +alias: Activate TV scene when turning on TV +description: "" +mode: single +triggers: + - entity_id: + - media_player.my_tv + from: "off" + to: "on" + trigger: state +conditions: [] +actions: + - target: + entity_id: scene.ctd_000001_watching_tv + metadata: {} + alias: Activate TV scene + action: scene.turn_on + data: {} +``` + +{% endraw %} + ## Known limitations The integration does not provide a way to update the firmware on the devices. This can only be done with the configuration software System Manager. diff --git a/source/_integrations/rehlko.markdown b/source/_integrations/rehlko.markdown index b4b6cd8373c..c2b7023b98e 100644 --- a/source/_integrations/rehlko.markdown +++ b/source/_integrations/rehlko.markdown @@ -12,6 +12,7 @@ ha_codeowners: ha_dhcp: true ha_domain: rehlko ha_platforms: + - binary_sensor - sensor ha_integration_type: integration ha_quality_scale: silver @@ -36,6 +37,19 @@ password: The integration uses your generator's name as the device name and within your entity names. To change this name, it is recommended to do so in the Kohler app before configuring the integration. +## Binary sensors + +This integration provides the following binary sensors to help you keep track of your generator's key states: + +- **Auto run** + Lets you know if your generator will automatically start when there is a power outage. + +- **Connectivity** + Shows whether your generator is currently connected to the Rehlko cloud. + +- **Oil pressure** + Monitors the oil pressure sensor. If this sensor is *on*, it means there is a problem with the oil pressure. + ## Sensors The sensors exposed by this integration depend on the specific instrumentation installed on your generator and transfer switch. Sensor availability can vary significantly—even between units of the same model. diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown index aaa55af8e36..fd53b078ccb 100644 --- a/source/_integrations/scrape.markdown +++ b/source/_integrations/scrape.markdown @@ -20,12 +20,6 @@ related: The `scrape` sensor {% term integration %} scrapes information from websites. The sensor loads an HTML page, and allows you to search and extract specific values. As this is not a fully featured web scraper like [scrapy](https://scrapy.org/), it will work with simple web pages and it can be time-consuming to get the right section. -If you are not using Home Assistant Container or Home Assistant Operating System, this integration requires `libxml2` to be installed. On Debian based installs, run: - -```bash -sudo apt install libxml2 -``` - Both UI and YAML setup is supported while YAML provides additional configuration possibilities. {% include integrations/config_flow.md %} diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index c758bca1d64..7719f165edd 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -63,11 +63,11 @@ The following device classes are supported for sensors: - **distance**: Generic distance in km, m, cm, mm, mi, nmi, yd, or in - **duration**: Duration in d, h, min, s, ms, or µs - **energy**: Energy in J, kJ, MJ, GJ, mWh, Wh, kWh, MWh, GWh, TWh, cal, kcal, Mcal, or Gcal -- **energy_distance**: Energy per distance in kWh/100km, mi/kWh or km/kWh. +- **energy_distance**: Energy per distance in kWh/100km, Wh/km, mi/kWh, or km/kWh. - **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 +- **gas**: Gas volume in L, m³, ft³ or CCF - **humidity**: Percentage of humidity in the air in % - **illuminance**: The current light level in lx - **irradiance**: Irradiance in W/m² or BTU/(h⋅ft²) @@ -86,6 +86,7 @@ The following device classes are supported for sensors: - **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 +- **reactive_energy**: Reactive energy in varh or kvarh - **reactive_power**: Reactive power in var or kvar - **signal_strength**: Signal strength in dB or dBm - **sound_pressure**: Sound pressure in dB or dBA @@ -93,7 +94,7 @@ The following device classes are supported for sensors: - **sulphur_dioxide**: Concentration of sulphur dioxide in µg/m³ - **temperature**: Temperature in °C, °F or K - **timestamp**: Datetime object or timestamp string (ISO 8601) -- **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³ +- **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³ or mg/m³ - **volatile_organic_compounds_parts**: Ratio of volatile organic compounds in ppm or ppb - **voltage**: Voltage in V, mV, µV, kV, MV - **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF diff --git a/source/_integrations/seven_segments.markdown b/source/_integrations/seven_segments.markdown index 941c01c6d96..0e40c1a23bf 100644 --- a/source/_integrations/seven_segments.markdown +++ b/source/_integrations/seven_segments.markdown @@ -18,23 +18,6 @@ ha_quality_scale: legacy The `seven_segments` image processing {% term integration %} allows you to read physical seven segments displays through Home Assistant. [`ssocr`](https://www.unix-ag.uni-kl.de/~auerswal/ssocr/) is used to extract the value shown on the display which is observed by a [camera](/integrations/camera/). -{% details "Notes for Home Assistant Core Installations" %} - -`ssocr` needs to be available on your system. Check the installation instruction below: - -```bash -sudo dnf -y install imlib2-devel # Fedora -sudo apt install libimlib2-dev # Ubuntu -brew install imlib2 # macOS -git clone https://github.com/auerswal/ssocr.git -cd ssocr -make -sudo make PREFIX=/usr install # On most systems -make deb # (Optional) This allows you to make a deb so that you apt is aware of ssocr -``` - -{% enddetails %} - ## Configuration To enable the OCR of a seven segment display in your installation, add the following to your {% term "`configuration.yaml`" %} file. diff --git a/source/_integrations/seventeentrack.markdown b/source/_integrations/seventeentrack.markdown index 975156772ec..3207741ffdc 100644 --- a/source/_integrations/seventeentrack.markdown +++ b/source/_integrations/seventeentrack.markdown @@ -108,3 +108,22 @@ The `seventeentrack.archive_package` action allows you to archive a package usin config_entry_id: 2b4be47a1fa7c3764f14cf756dc98991 package_tracking_number: RU0103445624A ``` + +### Action `seventeentrack.add_package` + +The `seventeentrack.add_package` action allows you to add a package using the 17track API. + +| Data attribute | Optional | Description | +| ------------------------- | -------- | --------------------------------------------- | +| `config_entry_id` | No | The selected service to add the package to. | +| `package_tracking_number` | No | The package tracking number to add. | +| `package_friendly_name` | No | The friendly name of the package to be added. | + +```yaml +# Example automation action to add a package with tracking number and its friendly name +- action: seventeentrack.add_package + data: + config_entry_id: 2b4be47a1fa7c3764f14cf756dc98991 + package_tracking_number: RU0103445624A + package_friendly_name: "Example Package" +``` diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index adc9086cf9a..74ddcd28cc3 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -43,6 +43,7 @@ ha_platforms: - update - valve ha_integration_type: device +ha_quality_scale: silver --- Integrate [Shelly devices](https://shelly.com) into Home Assistant. @@ -131,23 +132,26 @@ Currently, only static IP or DHCP reserved IP are supported for the main device. ## Entity naming (generation 1) -The integration uses `Device Name` to name its entities if the device has only one relay or no relays at all. +The integration uses the following strategy to name its devices and entities if the device has only one relay (channel) or no relays at all: -The integration uses the following strategy to name its entities if the device has more than one relay: +- If a `Device Name` is set in the device, the integration will use it to generate the device name and entity names. +- If a `Device Name` is not set, the integration will use the `Device ID` to generate the device name and entity names. -- If `Device Name` or `Channel Name` is set in the device, the integration will use them to generate the entities' name. -- If channel names are set, they will be used in the entity names. The device name will not be used. -- If only the device name is set, and the device has multiple channels, the channel number will be appended to the entity name (e.g., Channel 2). -- In case device name and channel names are not set, the entity name will be generated by the `Device Type`, `Device ID` and `Channel Number`. +The integration creates a sub-device for every relay and uses the following strategy to name its entities if the device has more than one relay: + +- If a `Device Name` is set in the device, the integration will use it to generate the main device name and entity names assigned to the main device. +- If a `Device Name` is not set, the integration will use the `Device ID` to generate the main device name and entity names assigned to the main device. +- If a `Channel Name` is set in the device, the integration will use it to generate the sub-device name and entity names assigned to this sub-device (channel/relay). +- If a `Channel Name` is not set in the device, the integration will use the device name and channel/relay number to generate the sub-device name and entity names assigned to this sub-device (channel/relay). Examples: -| Device Name | Channel Name | Entity Name | -| ----------- | -------------- | ------------------------------- | -| `Not set` | `Not Set` | shellyswitch25-ABC123 Channel 1 | -| `Not set` | Kids Room Bulb | Kids Room Bulb | -| Kitchen | `Not Set` | Kitchen Channel 1 | -| Bedroom | Round Bulb | Round Bulb | +| Device Name | Channel Name | Main Device Name | Sub-device Name | Entity Name | +| ----------- | -------------- | --------------------- | ------------------------------- | -------------------------------- | +| `Not set` | `Not Set` | shellyswitch25-ABC123 | shellyswitch25-ABC123 Channel 1 | shellyswitch25-ABC123 Channel 1 | +| `Not set` | Kids Room Bulb | shellyswitch25-ABC123 | Kids Room Bulb | Kids Room Bulb | +| Kitchen | `Not Set` | Kitchen | Kitchen Channel 1 | Kitchen Channel 1 | +| Bedroom | Round Bulb | Bedroom | Round Bulb | Round Bulb | Names are set from the device web page: @@ -157,10 +161,36 @@ Names are set from the device web page: ## Entity naming (generation 2+) -The integration uses the following strategy to name its entities: +The integration uses the following strategy to name its devices and entities if the device has only one relay (channel) or no relays at all: -- If `Channel Name` is set in the device, the integration will use it to generate the entities' name, e.g. `Kitchen Light` -- If `Channel Name` is set to the default value, the integration will use the `Device ID` and default channel name to generate the entities' name, e.g. `ShellyPro4PM-9808D1D8B912 Switch 0`. +- If a `Device Name` is set in the device, the integration will use it to generate the device name and entity names. +- If a `Device Name` is not set, the integration will use the `Device ID` to generate the device name and entity names. +- If a `Channel Name` is set in the device, the integration will add it as a suffix to the entity names. + +Examples: + +| Device Name | Channel Name | Integration Device Name | Entity Name | +| ----------- | -------------- | ------------------------ | --------------------------------------- | +| `Not set` | `Not Set` | shelly1gen3-aabbccddeeff | shelly1gen3-aabbccddeeff | +| `Not set` | Kids Room Bulb | shelly1gen3-aabbccddeeff | shelly1gen3-aabbccddeeff Kids Room Bulb | +| Kitchen | `Not Set` | Kitchen | Kitchen | +| Bedroom | Round Bulb | Bedroom | Bedroom Round Bulb | + +The integration creates a sub-device for every relay (channel) and uses the following strategy to name its devices and entities if the device has more than one relay: + +- If a `Device Name` is set in the device, the integration will use it to generate the main device name and entity names assigned to the main device. +- If a `Device Name` is not set, the integration will use the `Device ID` to generate the main device name and entity names assigned to the main device. +- If a `Channel Name` is set in the device, the integration will use it to generate the sub-device name and entity names assigned to this sub-device (channel/relay). +- If a `Channel Name` is set to the default value in the device, the integration will use the device name and this ddefault channel name to generate the sub-device name and entity names assigned to this sub-device (channel/relay). + +Examples: + +| Device Name | Channel Name | Main Device Name | Sub-device Name | Entity Name | +| ----------- | -------------- | -------------------------- | ----------------------------------- | ----------------------------------- | +| `Not set` | `Not Set` | shelly2pmgen3-aabbccddeeff | shelly2pmgen3-aabbccddeeff Switch 1 | shelly2pmgen3-aabbccddeeff Switch 1 | +| `Not set` | Kids Room Bulb | shelly2pmgen3-aabbccddeeff | Kids Room Bulb | Kids Room Bulb | +| Kitchen | `Not Set` | Kitchen | Kitchen Switch 1 | Kitchen Switch 1 | +| Bedroom | Round Bulb | Bedroom | Round Bulb | Round Bulb | ## Cover entities diff --git a/source/_integrations/shelly_zwave.markdown b/source/_integrations/shelly_zwave.markdown new file mode 100644 index 00000000000..87014a9d4c8 --- /dev/null +++ b/source/_integrations/shelly_zwave.markdown @@ -0,0 +1,34 @@ +--- +title: Shelly Z-Wave +description: Connect and control your Shelly Z-Wave devices using the Z-Wave integration +ha_release: '2025.6' +ha_iot_class: Local Push +ha_category: + - Sensor + - Switch + - Plug +ha_domain: shelly +ha_integration_type: brand +works_with: + - zwave +ha_platforms: + - binary_sensor + - sensor + - switch +ha_iot_standard: zwave +ha_brand: true +--- + +[Shelly](https://shelly.com) is a member of the Works with Home Assistant partner program for their Z-Wave products. Shelly is committed to making sure their products are up-to-date and ready to use in Home Assistant. + +Shelly Z-Wave devices work locally and integrate seamlessly with the Z-Wave integration in Home Assistant (Z-Wave stick required). As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant. + +{% my add_zwave_device badge domain=page.ha_domain %} + +[Learn more about Z-Wave in Home Assistant.](/integrations/zwave_js/) + +## Supported devices + +- [Shelly Wave 1PM Mini](https://www.shelly.com/products/shelly-qubino-wave-1pm-mini) +- [Shelly Wave PM Mini](https://www.shelly.com/products/shelly-qubino-wave-pm-mini) +- [Shelly Wave i4](https://www.shelly.com/products/shelly-qubino-wave-i4) diff --git a/source/_integrations/siemens.markdown b/source/_integrations/siemens.markdown index 99802d877c2..2d742d70e30 100644 --- a/source/_integrations/siemens.markdown +++ b/source/_integrations/siemens.markdown @@ -31,6 +31,7 @@ ha_platforms: - switch - time ha_iot_class: Cloud Push +ha_dhcp: true ha_zeroconf: true --- diff --git a/source/_integrations/smarla.markdown b/source/_integrations/smarla.markdown new file mode 100644 index 00000000000..aec2431316a --- /dev/null +++ b/source/_integrations/smarla.markdown @@ -0,0 +1,52 @@ +--- +title: Swing2Sleep Smarla +description: Instructions on connecting Swing2Sleep Smarla to Home Assistant. +ha_category: + - Switch +ha_iot_class: Cloud Push +ha_release: 2025.6 +ha_codeowners: + - '@explicatis' + - '@rlint-explicatis' +ha_domain: smarla +ha_integration_type: device +ha_config_flow: true +ha_platforms: + - switch +ha_quality_scale: bronze +--- + +The `smarla` {% term integration %} enables Home Assistant to integrate [Swing2Sleep](https://swing2sleep.de) (Smarla) motorized cradles. This integration will allow you to control your Smarla device. + +## Requirements + +- Swing2Sleep Smarla device with Version 1.6.X or later. +- Swing2Sleep app. +- Internet connectivity. + +## Registration + +1. Follow the instructions in the Swing2Sleep app. +2. Connect the device to your Wi-Fi network. +3. Follow the steps for **Configuration** until the access token field appears +4. In the Swing2Sleep app, generate an access token under **Settings**. +5. Copy the access token and continue with the **Configuration**. + +{% include integrations/config_flow.md %} + +## Entities + +This component will set up the following entities: + +| Entity | Platform | Description | +| -------------- | ----------------- | ------------------------------------- | +| `cradle` | `switch` | Turn on or off the cradle’s oscillation. | +| `smartmode` | `switch` | Enable or disable automatic intensity control. | + +## Removing the integration + +This integration follows standard integration removal. + +{% include integrations/remove_device_service.md %} + +After deleting the integration, go to the Swing2Sleep app and remove the "Home Assistant" entry under **Settings** -> **Connected devices** as well. diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index 86d51c905a2..93afcad5f56 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -20,6 +20,7 @@ ha_category: - Switch - Update - Valve + - Water heater ha_release: 0.87 ha_iot_class: Cloud Push ha_config_flow: true @@ -42,6 +43,7 @@ ha_platforms: - switch - update - valve + - water_heater ha_dhcp: true ha_integration_type: integration ha_codeowners: @@ -76,6 +78,7 @@ SmartThings represents devices as a set of [capabilities](https://developer.smar - [Scene](#scene) - [Switch](#switch) - [Valve](#valve) +- [Water heater](#water-heater) ### Binary sensor @@ -274,6 +277,10 @@ The SmartThings update platform lets you update the firmware of devices that hav The SmartThings Valve platform lets you control devices that have the [`valve`](https://developer.smartthings.com/docs/devices/capabilities/capabilities-reference#valve) capability, showing the valve status and opening and closing. +### Water heater + +The SmartThings Water heater platform lets you control heat pumps that provide hot water. + ## Troubleshooting ### Enabling debug logs and diagnostics diff --git a/source/_integrations/sms.markdown b/source/_integrations/sms.markdown deleted file mode 100644 index 424ab34539d..00000000000 --- a/source/_integrations/sms.markdown +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: SMS notifications via GSM-modem -description: SMS notification via GSM modem. -icon: gammu.png -ha_category: - - Notifications -ha_release: 0.105 -ha_iot_class: Local Polling -ha_config_flow: true -ha_codeowners: - - '@ocalvo' -ha_domain: sms -ha_platforms: - - notify - - sensor -ha_integration_type: integration ---- - -The `sms` integration allows having a local execution SMS notification via [Gammu](https://wammu.eu/gammu/). This is ideal when the internet is offline or when the power goes out. - -This integration provides the following platforms: - -- Notify - -{% include integrations/config_flow.md %} - -## Notifications - -An SMS message can be sent by calling the `notify.sms`. It will send the message to all phone numbers specified in the `target` parameter. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). - -### Send message - -```yaml -actions: - - action: notify.sms - data: - message: "This is a message for you!" - target: "+5068081-8181" -``` - -### Sending SMS using GSM alphabet - -Some devices (receiving or sending) do not support Unicode (the default encoding). For these you can disable Unicode: - -```yaml -actions: - - action: notify.sms - data: - message: "This is a message for you in ANSI" - target: "+5068081-8181" - data: - unicode: False -``` - -### Getting SMS messages - -You can also receive SMS messages that are sent to the SIM card number in your device. -Every time there is a message received, `event: sms.incoming_sms` is fired with date, phone number and text message. -Sample automation that forward all SMS to `user1`: - -#### Define a sensor in `configuration.yaml` to protect user phone number - -```yaml -template: - - sensor: - - name: "User1 Phone Number" - state: !secret user1_phone_number -``` - -#### Define a script in `scripts.yaml` to use the sensor - -{% raw %} - -```yaml -notify_sms_user1: - alias: "Notify via SMS to User1" - fields: - message: - description: "The message content" - example: "The light is on!" - sequence: - - action: notify.sms - data: - message: "{{ message }}" - target: "{{ states('sensor.user1_phone_number') }}" - icon: mdi:chat-alert -``` - -{% endraw %} - -#### Putting it all together in `automations.yaml` - -{% raw %} - -```yaml -- alias: "Forward SMS" - triggers: - - trigger: event - event_type: sms.incoming_sms - actions: - - action: script.notify_sms_user1 - data: - message: | - From: {{trigger.event.data.phone}} - {{trigger.event.data.text}} -``` - -{% endraw %} - -## Required hardware - -You will need a USB GSM stick modem or device like SIM800L v2 connected via USB UART. - -### List of modems known to work -- [SIM800C HAT form factor](https://www.amazon.com/gp/product/B07PQLRCNR/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) Make sure to `enable_uart=1` on your `config.txt` boot file. -- [SIM800C](https://www.amazon.com/gp/product/B087Z6F953/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1) -- [Huawei E3372](https://www.amazon.com/gp/product/B01N6P3HI2/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)( -Note: E3372h-153 and E3372h-510 need to be unlocked [this guide](http://blog.asiantuntijakaveri.fi/2015/07/convert-huawei-e3372h-153-from.html), The Huawei E3372h-320 won't work at all, since it is locked down too much) -- [Huawei E3531](https://www.amazon.com/Modem-Huawei-Unlocked-Caribbean-Desbloqueado/dp/B011YZZ6Q2/ref=sr_1_1?keywords=Huawei+E3531&qid=1581447800&sr=8-1) (note: Devices with firmware versions 22.XX need to be unlocked using [this guide](https://community.home-assistant.io/t/trouble-setting-up-huawei-e3531s-2-with-sms-notifications-via-gsm-modem-integration/462737/9?u=alexschmitz222)) -- [Huawei E3272](https://www.amazon.com/Huawei-E3272s-506-Unlocked-Americas-Europe/dp/B00HBL51OQ) -- ZTE K3565-Z -- Lenovo F5521gw (mPCI-E) - -### List of modems known to NOT work - -- Huawei E3372h-320 - -### List of modems that may work - -Search in the [Gammu database](https://wammu.eu/phones/) for modems with AT connection. - -### Huawei/ZTE modems (and similar) devices - NOT applicable for users of Home Assistant OS, Container or Supervised. - -For some unknown reason, the rule that converts these modems from storage devices into serial devices may not run automatically. To work around this problem, follow the procedure below to change the modem mode and (optionally) create `udev` rule on a configuration USB stick for the device to switch to serial mode persistently. - -1. Install the `usb_modeswitch` software to switch the modem operational mode (for Debian/Ubuntu distros): - -```bash -sudo apt update && sudo apt install usb-modeswitch -y -``` - -2. Run `lsusb`, its output should be similar to this: - -```bash -bus 000 device 001: ID 1FFF:342a -bus 001 device 005: ID 12d1:15ca <-------- Huawei is usually 12d1 -bus 000 device 002: ID 2354:5352 -bus 000 device 002: ID 1232:15ca -``` - -Identify the brand for your GSM modem, copy the `brand_Id` and `product_id` (In this case `brand_id = 12d1` and `product_Id = 15ca`) - -3. Try disabling virtual cd-rom and change work mode to "only modem": - -```bash -sudo /sbin/usb_modeswitch -X -v 12d1 -p 15ca -``` -Re-plug the device. After this the modem correct should work without the following 'udev' rule. - -4. (Optional) Configure the udev rule to persist the correct modem configuration even after disconnecting it: - -Set this content in file `udev\10-gsm-modem.rules` in the [configuration USB](https://github.com/home-assistant/operating-system/blob/master/Documentation/configuration.md#automatic): -(Replace `brand_Id` and `product_id` for the numbers reported by `lsusb`) - -```bash -ACTION=="add" \ -, ATTRS{idVendor}=="brand_Id" \ -, ATTRS{idProduct}=="product_Id" \ -, RUN+="/sbin/usb_modeswitch -X -v brand_Id -p product_Id" -``` - -Here is a sample configuration file: - -```bash -ACTION=="add" \ -, ATTRS{idVendor}=="12d1" \ -, ATTRS{idProduct}=="15ca" \ -, RUN+="/sbin/usb_modeswitch -X -v 12d1 -p 15ca" -``` - -Re-plug the USB stick, reboot the device, run `lsusb` again. -The resulting product id now should be different and the brand id should be the same. -And `ls -l /dev/*USB*` should now report your device. - -Note: if you have multiple USB devices, USB number order can change on boot. For this reason, it's preferable to use your device ID and look in `/dev/serial/by-id/*`. For example, `/dev/serial/by-id/usb-HUAWEI_MOBILE_HUAWEI_MOBILE-if00-port0`. - -If the device is still not recognized, remove the parameter -X from the usb_modeswitch command and reboot again. - -## More details: - -- [Original thread discussion](https://community.home-assistant.io/t/send-sms-with-usb-gsm-modem-when-alarm-triggered/28942/38) diff --git a/source/_integrations/snips.markdown b/source/_integrations/snips.markdown deleted file mode 100644 index e2df623689a..00000000000 --- a/source/_integrations/snips.markdown +++ /dev/null @@ -1,311 +0,0 @@ ---- -title: Snips -description: Instructions on how to integrate Snips within Home Assistant. -ha_category: - - Voice -ha_release: 0.48 -ha_domain: snips -ha_iot_class: Local Push -ha_integration_type: integration -ha_quality_scale: legacy ---- - -{% warning %} -The Snips Console no longer available due to acquisition by Sonos. For more details, read the [announcement on the Snips forum](http://web.archive.org/web/20200109164247/https://forum.snips.ai/t/important-message-regarding-the-snips-console/4145). -{% endwarning %} - -The [Snips Voice Platform](https://www.snips.ai) allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on privacy. It runs 100% on-device, and does not require an internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management. - -The latest documentation can be found here: [Snips Platform Documentation](https://docs.snips.ai/). - -![Snips Modules](/images/screenshots/snips_modules.png) - -Snips takes voice or text as input and produces *intents* as output, which are explicit representations of an intention behind an utterance and which can subsequently be used by Home Assistant to perform appropriate actions. - -![Snips Modules](/images/screenshots/snips_nlu.png) - -## The Snips Voice Platform - -### Installation - -The Snips platform can be installed via the Snips APT/Debian repository. - -```bash -sudo apt-get update -sudo apt-get install -y dirmngr -sudo bash -c 'echo "deb https://raspbian.snips.ai/$(lsb_release -cs) stable main" > /etc/apt/sources.list.d/snips.list' -sudo apt-key adv --fetch-keys https://raspbian.snips.ai/531DD1A7B702B14D.pub -sudo apt-get update -sudo apt-get install -y snips-platform-voice -``` - -Note that if the keyserver pgp.mit.edu is down then try to use another one in the 4th line, like pgp.surfnet.nl: - -```bash -sudo apt-key adv --keyserver pgp.surfnet.nl --recv-keys D4F50CDCA10A2849 -``` - -### Creating an assistant - -Head over to the [Snips Console](https://console.snips.ai) to create your assistant. Launch the training and download by clicking on the "Download Assistant" button. - -The next step is to get the assistant to work on your device. Unzip and copy the `assistant` folder that you downloaded from the web console to the path. Assuming your downloaded `assistant` folder is on your desktop, just run: - -```bash -scp -r ~/Desktop/assistant pi@:/home/pi/. -``` - -Now ssh into your Raspberry Pi: - -```bash -ssh pi@ -``` - -By default, this command is `ssh pi@raspberrypi.local`, if you are using the default Raspberry Pi hostname. - -Then, move the assistant to the right folder: - -```bash -(pi) $ sudo mv /home/pi/assistant /usr/share/snips/assistant -``` - -Note that if you already have an assistant installed and wish to replace it then start by removing the previous one and then move the new one in its place: - -```bash -(pi) $ sudo rm -r /usr/share/snips/assistant -(pi) $ sudo mv /home/pi/assistant /usr/share/snips/assistant -``` - -### Running Snips - -Make sure that a microphone is plugged to the Raspberry Pi. If you are having trouble setting up audio, we have written a guide on [Raspberry Pi Microphones](https://docs.snips.ai/articles/raspberrypi/hardware/microphones). - -Start the Snips Voice Platform by starting the `snips-*` actions: - -```bash -sudo systemctl start "snips-*" -``` - -Snips is now ready to take voice commands from the microphone. To trigger the listening, simply say - -_Hey Snips_ - -followed by a command, e.g. - -_Set the lights to green in the living room_ - -As the Snips Platform parses this query into an intent, it will be published on MQTT, on the `hermes/intent/` topic. The Snips Home Assistant integration subscribes to this topic, and handles the intent according to the rules defined in {% term "`configuration.yaml`" %} file, as explained below. - -#### Optional: specifying an external MQTT broker - -By default, Snips runs its own MQTT broker. But we can also tell Snips to use an external broker by specifying this when launching Snips. In this case, we need to specify this in the `/etc/snips.toml` configuration file. For more information on configuring this, see the [Snips Platform Configuration](https://docs.snips.ai/articles/platform/platform-configuration) article. - -## Home Assistant configuration - -{% configuration %} -feedback_sounds: - description: Turn on feedbacks sounds for Snips. - required: false - type: string - default: false -site_ids: - description: A list of siteIds if using multiple Snips instances. Used to make sure feedback is toggled on or off for all sites. - required: false - type: string -probability_threshold: - description: Threshold for intent probability. Range is from 0.00 to 1.00, 1 being highest match. Intents under this level are discarded. - require: false - type: float -{% endconfiguration %} - -### Specifying the MQTT broker - -Messages between Snips and Home Assistant are passed via MQTT. We can either point Snips to the MQTT broker used by Home Assistant, as explained above, or tell Home Assistant which [MQTT broker](/integrations/mqtt) to use by adding the following entry to the {% term "`configuration.yaml`" %} file: - -```yaml -mqtt: - broker: MQTT_BROKER_IP - port: MQTT_BROKER_PORT -``` - -By default, Snips runs an MQTT broker on port 9898. So if we wish to use this broker, and if Snips and Home Assistant run on the same device, the entry will look as follows: - -```yaml -mqtt: - broker: 127.0.0.1 - port: 9898 -``` - -Alternatively, MQTT can be configured to bridge messages between servers if using a custom MQTT broker such as [mosquitto](https://mosquitto.org/). - -### Triggering actions - -In Home Assistant, we trigger actions based on intents produced by Snips using the [`intent_script`](/integrations/intent_script) integration. For instance, the following block handles a `ActivateLightColor` intent to change light colors: - -Note: If your Snips action is prefixed with a username (e.g., `john:playmusic` or `john__playmusic`), the Snips integration in Home Assistant will try and strip off the username. Bear this in mind if you get the error `Received unknown intent` even when what you see on the MQTT bus looks correct. Internally the Snips integration is trying to match the non-username version of the intent (i.e., just `playmusic`). - -{% raw %} - -```yaml -snips: - -intent_script: - ActivateLightColor: - action: - - action: light.turn_on - target: - entity_id: 'light.{{ objectLocation | replace(" ","_") }}' - data: - color_name: "{{ objectColor }}" -``` - -{% endraw %} - -In the `data` block, we have access to special variables, corresponding to the slot names for the intent. In the present case, the `ActivateLightColor` has two slots, `objectLocation` and `objectColor`. - -### Special slots - -Several special values for slots are populated with the `siteId` the intent originated from and the probability value for the intent, the `sessionId` generate by the dialogue manager, and `slote_name` raw which will contain the raw, uninterpreted text of the slot value. - -In the above example, the slots are plain strings. However, Snips has a duration builtin value used for setting timers and this will be parsed to a seconds value. - -In this example if we had an intent triggered with 'Set a timer for five minutes', `duration:` would equal 300 and `duration_raw:` would be set to 'five minutes'. The duration can be easily used to trigger Home Assistant events and the `duration_raw:` could be used to send a human readable response or alert. - -{% raw %} - -```yaml -SetTimer: - speech: - type: plain - text: "Set a timer" - action: - action: script.set_timer - data: - name: "{{ timer_name }}" - duration: "{{ timer_duration }}" - siteId: "{{ site_id }}" - sessionId: "{{ session_id }}" - duration_raw: "{{ raw_value }}" - probability: "{{ probability }}" -``` - -{% endraw %} - -### Sending TTS Notifications - -You can send TTS notifications to Snips using the `snips.say` and `snips.say_action` actions. `say_action` starts a session and waits for user response, "Would you like me to close the garage door?", "Yes, close the garage door". - -#### Action `snips.say` - -| Data attribute | Optional | Description | -|------------------------|----------|--------------------------------------------------------| -| `text` | no | Text to say. | -| `site_id` | yes | Site to use to start session. | -| `custom_data` | yes | custom data that will be included with all messages in this session. | - -#### Action `snips.say_action` - -| Data attribute | Optional | Description | -|------------------------|----------|--------------------------------------------------------| -| `text` | no | Text to say. | -| `site_id` | yes | Site to use to start session. | -| `custom_data` | yes | custom data that will be included with all messages in this session. | -| `can_be_enqueued` | yes | If True, session waits for an open session to end, if False session is dropped if one is running. | -| `intent_filter` | yes | Array of Strings - A list of intents names to restrict the NLU resolution to on the first query. | - -### Configuration Examples - -#### Turn on a light - -```yaml -intent_script: - turn_on_light: - speech: - type: plain - text: "OK, turning on the light" - action: - action: light.turn_on -``` - -##### Open a Garage Door - -```yaml -intent_script: - OpenGarageDoor: - speech: - type: plain - text: "OK, opening the garage door" - action: - - action: cover.open_cover - target: - entity_id: garage_door -``` - -##### Intiating a query - -Here is a more complex example. The automation is triggered if the garage door is open for more than 10 minutes. Snips will then ask you if you want to close it and if you respond with something like "Close the garage door" it will do so. Unfortunately there is no builtin support for yes and no responses. - -```yaml -automation: - garage_door_has_been_open: - triggers: - - trigger: state - entity_id: binary_sensor.my_garage_door_sensor - from: "off" - to: "on" - for: - minutes: 10 - sequence: - action: snips.say_action - data: - text: "Garage door has been open 10 minutes, would you like me to close it?" - intent_filter: - - closeGarageDoor - -# This intent is fired if the user responds with the appropriate intent after the above notification -intent_script: - closeGarageDoor: - speech: - type: plain - text: "OK, closing the garage door" - actions: - - action: script.garage_door_close -``` - -##### Weather - -So now you can open and close your garage door, let's check the weather. Add the Weather by Snips Skill to your assistant. Create a weather sensor, in this example [Dark Sky](/integrations/darksky) and the `api_key` in the `secrets.yaml` file. - -```yaml -- platform: darksky - name: "Dark Sky Weather" - api_key: !secret dark_sky_key - scan_interval: - minutes: 10 - monitored_conditions: - - summary - - hourly_summary - - temperature - - temperature_max - - temperature_min -``` - -Then add this to your configuration file. - -{% raw %} - -```yaml -intent_script: - searchWeatherForecast: - speech: - type: plain - text: > - The weather is currently - {{ states('sensor.dark_sky_weather_temperature') | round(0) }} - degrees outside and {{ states('sensor.dark_sky_weather_summary') }}. - The high today will be - {{ states('sensor.dark_sky_weather_daily_high_temperature') | round(0)}} - and {{ states('sensor.dark_sky_weather_hourly_summary') }} -``` - -{% endraw %} diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown index c78af30da56..f2f8e0b7a2a 100644 --- a/source/_integrations/sql.markdown +++ b/source/_integrations/sql.markdown @@ -297,25 +297,3 @@ The unit of measurement returned by the above query is `MiB`, please configure t Set the device class to `Data size` so you can use UI unit conversion. {% endtip %} -#### MS SQL - -Use the same Database URL as for the `recorder` integration. Change `DB_NAME` to the name that you use as the database name, to ensure that your sensor will work properly. Be sure `username` has enough rights to access the sys tables. - -Example Database URL: `"mssql+pyodbc://username:password@SERVER_IP:1433/DB_NAME?charset=utf8&driver=FreeTDS"` - -{% note %} -Connecting with MSSQL requires "pyodbc" to be installed on your system, which can only be done on systems using the Home Assistant Core installation type to be able to install the necessary dependencies. - -"pyodbc" has special requirements which need to be pre-installed before installation, see the ["pyodbc" wiki](https://github.com/mkleehammer/pyodbc/wiki/Install) for installation instructions -{% endnote %} - -```sql -SELECT TOP 1 SUM(m.size) * 8 / 1024 as size FROM sys.master_files m INNER JOIN sys.databases d ON d.database_id=m.database_id WHERE d.name='DB_NAME'; -``` -Use `size` as column for value. - -{% tip %} -The unit of measurement returned by the above query is `MiB`, please configure this correctly. - -Set the device class to `Data size` so you can use UI unit conversion. -{% endtip %} diff --git a/source/_integrations/squeezebox.markdown b/source/_integrations/squeezebox.markdown index d98cef90420..01be6ee92a0 100644 --- a/source/_integrations/squeezebox.markdown +++ b/source/_integrations/squeezebox.markdown @@ -3,6 +3,7 @@ title: Squeezebox (Lyrion Music Server) description: Instructions on how to integrate Squeezebox players and a Lyrion Music Server (LMS) into Home Assistant. ha_category: - Media player + - Update ha_release: pre 0.7 ha_iot_class: Local Polling ha_domain: squeezebox @@ -17,6 +18,8 @@ ha_platforms: - button - media_player - sensor + - switch + - update ha_integration_type: integration --- @@ -164,6 +167,11 @@ data: ## Supported functionality +### Switches + +- **Alarm**: Enables a scheduled alarm to sound. Alarms must also be enabled on the associated player for the alarm to sound, using the Alarms Enabled switch or directly on the Lyrion Music Server for that player. +- **Alarms Enabled**: Enables a player to sound alarms. Disabling will prevent all alarms from sounding on that player, regardless of whether the individual alarm is enabled + ### Binary sensors The integration provides the following entities. @@ -219,6 +227,11 @@ The integration provides the following entities. - **Total songs** - **Description**: Total number of music files currently in service. +### Updates + +-- **Lyrion Music Server**: Update of the server software is available. +-- **Updated plugins**: Named Plugins will be updated on the next restart. For some installation types, the service will be restarted automatically after the **Install** button has been selected. Allow enough time for the service to restart. It will become briefly unavailable. + ### Actions The integration provides the following actions. diff --git a/source/_integrations/suez_water.markdown b/source/_integrations/suez_water.markdown index b55246ba2ef..afabfa5e51b 100644 --- a/source/_integrations/suez_water.markdown +++ b/source/_integrations/suez_water.markdown @@ -23,6 +23,50 @@ The **Suez Water** {% term integration %} fetches your water consumption data fr - The **Water usage yesterday** sensor shows yesterday's water consumption data if that data is available. - The **Water price** sensor shows the current water price in euros per cubic meter (€/m3). +### Extra attributes + +Extra attributes of `Water usage yesterday` sensor: + +- Daily consumption for the current month +- Daily consumption for the previous month +- Monthly consumption for the last 26 months +- Highest monthly consumption +- Last year total consumption +- Current year total consumption + +## Energy + +The integration provides statistics containing all available data from Suez. +The data is fetched every 12 hours and is updated once a day by Suez. + +You can find the statistics in {% my developer_statistics title="**Developer Tools** > **Statistics**"%} and search for "suez_water". +**Note: Due to Suez's daily update schedule, data for the current day will not be available, and yesterday's data may be delayed depending on when you check** + +At the initial setup, the integration pulls historical daily usage since the counter installation. + +{% details "Prerequisites" %} + +- The Energy dashboard must be enabled in your Home Assistant instance. If you haven't set it up yet, please refer to the [Energy dashboard documentation](/home-assistant-energy/). + +{% enddetails %} + +In the configuration of the energy dashboard ({% my config_energy title="**Settings** > **Dashboards** > **Energy**" %}): + +1. Select **Add consumption** for **Water source**. +2. Select **Suez water Consumption** followed by your counter ID (e.g., "Suez water Consumption 123456789") for the **consumed water**. +3. Select **Suez water Cost** followed by your counter ID for the **total price** + +### Statistics details + +- **Suez water consumption** (`suez_water_water_consumption_statistics_{counter_id}`): + - Contains daily water consumption in liters + - Provides both state and sum statistics for each day + +- **Suez water cost** (`suez_water_water_cost_statistics_{counter_id}`): + - Contains daily cost calculations in euros + - Provides both state and sum statistics for each day + - **Important**: Historical costs are calculated using the current water price since historical price information is not available. If water prices have changed over time, the calculated historical costs may not match your actual bills. + {% include integrations/config_flow.md %} {% configuration_basic %} @@ -50,17 +94,6 @@ Counter ID: {% endconfiguration_basic %} -## Extra attributes - -Extra attributes of `Water usage yesterday` sensor: - -- Daily consumption for the current month -- Daily consumption for the previous month -- Monthly consumption for the last 26 months -- Highest monthly consumption -- Last year total consumption -- Current year total consumption - ## Removing the integration This integration can be removed by following these steps: diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown index fc7d7101e3b..0a3a3c922b7 100644 --- a/source/_integrations/sun.markdown +++ b/source/_integrations/sun.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: pre 0.7 ha_quality_scale: internal ha_codeowners: - - '@Swamp-Ig' + - '@home-assistant/core' ha_iot_class: Calculated ha_domain: sun ha_config_flow: true diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 18159cac966..05467bc0a1c 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -4,10 +4,12 @@ description: Instructions on how to set up SwitchBot Devices. ha_category: - Binary sensor - Cover + - Fan - Light - Lock - Sensor - Switch + - Vacuum ha_release: 0.78 ha_iot_class: Local Push ha_codeowners: @@ -16,6 +18,7 @@ ha_codeowners: - '@murtas' - '@Eloston' - '@dsypniewski' + - '@zerzhang' ha_domain: switchbot ha_bluetooth: true ha_platforms: @@ -28,8 +31,10 @@ ha_platforms: - lock - sensor - switch + - vacuum ha_config_flow: true ha_integration_type: integration +ha_quality_scale: gold --- The SwitchBot integration allows you to control SwitchBot [devices](https://www.switch-bot.com/) such as sensors, locks, shades, lights, plugs, robot vacuums, hubs and etc. @@ -119,6 +124,8 @@ For instructions on how to obtain the encryption key, see README in [PySwitchbot - [Lock (WoLock)](https://switch-bot.com/pages/switchbot-lock) - [Lock Pro (WoLockPro)](https://www.switch-bot.com/pages/switchbot-lock-pro) +- [Lock Ultra (WoLockUltra)](https://www.switch-bot.com/products/switchbot-lock-ultra) +- [Lock Lite (WoLockLite)](https://www.switchbot.jp/products/switchbot-lock-lite) ### Humidifiers @@ -140,11 +147,24 @@ For instructions on how to obtain the encryption key, see README in [PySwitchbot - [Hub 2 (WoHub2)](https://switch-bot.com/pages/switchbot-hub-2) (currently only supports retrieving sensor data, does not yet support device control) - [Hub Mini Matter Enabled](https://www.switch-bot.com/products/switchbot-hub-mini-matter-enabled)(currently only supports retrieving sensor data, does not yet support device control) +- [Hub 3 (WoHub3)](https://www.switch-bot.com/products/switchbot-hub-3)(currently only supports retrieving sensor data, does not yet support device control) ### Fans - [Circulator Fan](https://www.switch-bot.com/products/switchbot-battery-circulator-fan) +### Vacuums +- [K10+](https://www.switch-bot.com/products/switchbot-mini-robot-vacuum-k10) +- [K10+ Pro](https://www.switch-bot.com/products/switchbot-mini-robot-vacuum-k10-pro) +- [K10+ Pro Combo](https://www.switch-bot.com/products/switchbot-k10-pro-combo) +- [K20](https://www.switchbot.jp/products/switchbot-robot-vacuum-cleaner-k20-pro) +- [S10](https://www.switch-bot.com/products/switchbot-floor-cleaning-robot-s10) + +### Air purifiers + +- [Air Purifier](https://www.switch-bot.com/products/switchbot-air-purifier) +- [Air Purifier Table](https://www.switch-bot.com/products/switchbot-air-purifier-table) + ## Supported functionality ### Common @@ -402,6 +422,30 @@ Features: - calibration state - get battery level +#### Lock Ultra + +This is an encrypted device. + +Features: + +- Lock or unlock +- open or closed state +- auto-lock paused state +- calibration state +- get battery level + +#### Lock Lite + +This is an encrypted device. + +Features: + +- Lock or unlock +- open or closed state +- auto-lock paused state +- calibration state +- get battery level + ### Hubs Some of the hubs can be served as a bridge while the sensor data can be retrieved via Bluetooth connection. Hub 2 displays temperature and humidity through a sensor cable. Without a digital display, Hub Mini Matter Enabled can also read from a sensor cable. @@ -421,9 +465,20 @@ Features: - get temperature - get humidity +#### Hub3 + +Features: + +- get temperature +- get humidity +- get light level +- motion detection state + ### Fans -Fan entities are added for Circulator Fan. +Fan entities are added for Circulator Fan, Air Purifier, and Air Purifier Table + +#### Circulator Fan Features: @@ -433,6 +488,35 @@ Features: - set mode - oscillate left and right +#### Air Purifier + +This is an encrypted device. + +Features: + +- turn on +- turn off +- set mode + +#### Air Purifier Table + +This is an encrypted device. + +Features: + +- turn on +- turn off +- set mode + +### Vacuums + +Vacuum entities are added for K10+, K10+ Pro, K10+ Pro Combo, K20, S10. + +Features: + +- start +- return to base +- get battery ## Data updates diff --git a/source/_integrations/switchbot_cloud.markdown b/source/_integrations/switchbot_cloud.markdown index 93d92244ba4..71115ac577a 100644 --- a/source/_integrations/switchbot_cloud.markdown +++ b/source/_integrations/switchbot_cloud.markdown @@ -2,6 +2,7 @@ title: SwitchBot Cloud description: Instructions on how to set up SwitchBot Devices. ha_category: + - Binary Sensor - Button - Hub - Lock @@ -18,6 +19,7 @@ ha_codeowners: - '@Gigatrappeur' ha_domain: switchbot_cloud ha_platforms: + - binary_sensor - button - climate - lock @@ -32,7 +34,7 @@ The SwitchBot Cloud integration allows you to control SwitchBot [devices](https: ## Prerequisites -In order to use this integration, you will need at least a SwitchBot Hub and a SwitchBot account to get a token and secret key from the SwitchBot mobile app in **Profiles** > **Preferences** > **Developer Options**. If **Developer Options** is not present in preferences, tap the App Version (e.g. 6.24) several times (5~15 times) in succession to open the **Developer Options**. +In order to use this integration, you will need at least a SwitchBot Hub and a SwitchBot account to get a token and secret key from the SwitchBot mobile app in **Profiles** > **Preferences** > **Developer Options**. If **Developer Options** is not present in preferences, tap the App Version (e.g. 6.24) several times (5~15 times) in succession to open the **Developer Options**. See also [SwitchBot's blog](https://blog.switch-bot.com/switchbot-x-home-assistant-the-official-setup-tips-guide-you-asked-for-3/#cloud-integration) for more information specific to the app. Please note, device names configured in the SwitchBot app are transferred into Home Assistant. @@ -67,3 +69,11 @@ Each sensor will request a status update from the SwitchBot Cloud API once every {% warning %} For IR Appliances, the state is inferred from previous commands in Home Assistant and might not reflect reality if you use other ways to control the device. {% endwarning %} + +## Webhook support + +For vacuums, the states are updated from SwitchBot's cloud. + +{% warning %} +Only ONE webhook URL seems to be accepted by the SwitchBot's cloud. So, if you want several applications notified, you need to use a “proxy” to re-dispatch the message to the other applications. +{% endwarning %} diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index d1d3904f8b2..60ce3bd9775 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -2,22 +2,26 @@ title: Template description: Instructions on how to integrate Template Sensors into Home Assistant. ha_category: + - Alarm Control Panel - Binary sensor - Button - Cover + - Fan - Helper - Image - Light + - Lock - Number - Select - Sensor - Switch + - Vacuum + - Weather ha_release: 0.12 ha_iot_class: Local Push ha_quality_scale: internal ha_codeowners: - '@Petro31' - - '@PhracturedBlue' - '@home-assistant/core' ha_domain: template ha_platforms: @@ -46,20 +50,18 @@ related: The `template` integration allows creating entities which derive their values from other data. This is done by specifying [templates](/docs/configuration/templating/) for properties of an entity, like the name or the state. -Sensors, binary (on/off) sensors, buttons, images, numbers, selects, and switches are covered on this page. They can be configured using [UI](#configuration) or [YAML](#yaml-configuration) file. - -For other types, please see the specific pages: - -- [Alarm control panel](/integrations/alarm_control_panel.template/) -- [Fan](/integrations/fan.template/) -- [Lock](/integrations/lock.template/) -- [Vacuum](/integrations/vacuum.template/) -- [Weather](/integrations/weather.template/) +Alarm control panels, binary sensors, buttons, covers, fans, images, lights, locks, numbers, selects, sensors, switches, vacuums, and weathers are covered on this page. They can be configured using [UI](#configuration) or [YAML](#yaml-configuration) file. For Legacy types, please see the specific pages: + +- [Alarm control panel](/integrations/alarm_control_panel.template/) - [Cover](/integrations/cover.template/) +- [Fan](/integrations/fan.template/) - [Light](/integrations/light.template/) +- [Lock](/integrations/lock.template/) - [Switch](/integrations/switch.template/) +- [Vacuum](/integrations/vacuum.template/) +- [Weather](/integrations/weather.template/) {% include integrations/config_flow.md %} @@ -75,11 +77,11 @@ If you need more specific features for your use case, the manual [YAML-configura ## YAML configuration -Entities (binary sensors, buttons, covers, images, lights, numbers, selects, sensors, switches, and weathers) are defined in your YAML configuration files under the `template:` key. You can define multiple configuration blocks as a list. Each block defines sensor/binary sensor/number/select entities and can contain optional update triggers. +Entities (alarm control panels, binary sensors, buttons, covers, fans, images, lights, locks, numbers, selects, sensors, switches, vacuums, and weathers) are defined in your YAML configuration files under the `template:` key. You can define multiple configuration blocks as a list. Each block defines sensor/binary sensor/number/select entities and can contain optional update triggers. _For old sensor/binary sensor configuration format, [see below](#legacy-binary-sensor-configuration-format)._ -### State-based template binary sensors, buttons, covers, images, lights, numbers, selects, sensors, switches, and weathers +### State-based template alarm control panels, binary sensors, buttons, covers, fans, images, lights, numbers, selects, sensors, switches, vacuums, and weathers Template entities will by default update as soon as any of the referenced data in the template updates. @@ -230,6 +232,53 @@ binary_sensor: required: false type: device_class default: None +alarm_control_panel: + description: List of alarm control panels + required: true + type: map + keys: + state: + description: "Defines a template to set the state of the alarm panel. Only the states `armed_away`, `armed_home`, `armed_night`, `armed_vacation`, `arming`, `disarmed`, `pending`, `triggered` and `unavailable` are used." + required: false + type: template + disarm: + description: Defines an action to run when the alarm is disarmed. + required: false + type: action + arm_away: + description: Defines an action to run when the alarm is armed to away mode. + required: false + type: action + arm_home: + description: Defines an action to run when the alarm is armed to home mode. + required: false + type: action + arm_night: + description: Defines an action to run when the alarm is armed to night mode. + required: false + type: action + arm_vacation: + description: Defines an action to run when the alarm is armed to vacation mode. + required: false + type: action + arm_custom_bypass: + description: Defines an action to run when the alarm is armed to custom bypass mode. + required: false + type: action + trigger: + description: Defines an action to run when the alarm is triggered. + required: false + type: action + code_arm_required: + description: If true, the code is required to arm the alarm. + required: false + type: boolean + default: true + code_format: + description: One of `number`, `text` or `no_code`. Format for the code used to arm/disarm the alarm. + required: false + type: string + default: number number: description: List of numbers required: true @@ -348,6 +397,65 @@ cover: description: Defines a template to get the tilt state of the cover. Legal values are numbers between `0` (closed) and `100` (open). If the template produces a `None` value, the current tilt state will be set to `unknown`. required: false type: template +fan: + description: List of fans + required: true + type: map + keys: + state: + description: "Defines a template to get the state of the fan. Valid values: `on`, `off`." + required: true + type: template + percentage: + description: Defines a template to get the speed percentage of the fan. + required: false + type: template + preset_mode: + description: Defines a template to get the preset mode of the fan. + required: false + type: template + oscillating: + description: "Defines a template to get the osc state of the fan. Valid values: `true`, `false`." + required: false + type: template + direction: + description: "Defines a template to get the direction of the fan. Valid values: `forward`, `reverse`." + required: false + type: template + turn_on: + description: Defines an action to run when the fan is turned on. + required: true + type: action + turn_off: + description: Defines an action to run when the fan is turned off. + required: true + type: action + set_percentage: + description: Defines an action to run when the fan is given a speed percentage command. + required: false + type: action + set_preset_mode: + description: Defines an action to run when the fan is given a preset command. + required: false + type: action + set_oscillating: + description: Defines an action to run when the fan is given an oscillation state command. + required: false + type: action + set_direction: + description: Defines an action to run when the fan is given a direction command. + required: false + type: action + preset_modes: + description: List of preset modes the fan is capable of. This is an arbitrary list of strings and must not contain any speeds. + required: false + type: [string, list] + default: [] + speed_count: + description: The number of speeds the fan supports. Used to calculate the percentage step for the `fan.increase_speed` and `fan.decrease_speed` actions. + required: false + type: integer + default: 100 image: description: List of images required: true @@ -463,6 +571,37 @@ light: description: Defines an action to run when the light is given an effect command. Receives the variable `effect`. May also receive the variables `brightness`, and/or `transition`. required: inclusive type: action +lock: + description: List of locks + required: true + type: map + keys: + state: + description: Defines a template to set the state of the lock. + required: true + type: template + code_format: + description: Defines a template to get the `code_format` attribute of the entity. This template must evaluate to a valid [Python regular expression](https://docs.python.org/3/library/re.html#regular-expression-syntax) or `None`. If it evaluates to a not-`None` value, you are prompted to enter a code when interacting with the lock. The code will be matched against the regular expression, and the lock/unlock actions will be executed only if they match. The actual _validity_ of the entered code must be verified within these actions. If there's a syntax error in the template, the entity will be unavailable. If the template fails to render for other reasons or if the regular expression is invalid, no code will be accepted, and the lock/unlock actions will never be invoked. + required: false + type: template + default: None + lock: + description: Defines an action to run when the lock is locked. + required: true + type: action + unlock: + description: Defines an action to run when the lock is unlocked. + required: true + type: action + open: + description: Defines an action to run when the lock is opened. + required: false + type: action + optimistic: + description: Flag that defines if the lock works in optimistic mode. + required: false + type: boolean + default: false switch: description: List of switches required: true @@ -481,6 +620,64 @@ switch: description: Defines an action or list of actions to run when the switch is turned off. required: true type: action +vacuum: + description: List of vacuum entities + required: true + type: map + keys: + state: + description: "Defines a template to get the state of the vacuum. Valid value: `docked`/`cleaning`/`idle`/`paused`/`returning`/`error`" + required: false + type: template + battery_level: + description: "Defines a template to get the battery level of the vacuum. Legal values are numbers between `0` and `100`." + required: false + type: template + fan_speed: + description: Defines a template to get the fan speed of the vacuum. + required: false + type: template + attributes: + description: Defines templates for attributes of the sensor. + required: false + type: map + keys: + "attribute: template": + description: The attribute and corresponding template. + required: true + type: template + start: + description: Defines an action to run when the vacuum is started. + required: true + type: action + pause: + description: Defines an action to run when the vacuum is paused. + required: false + type: action + stop: + description: Defines an action to run when the vacuum is stopped. + required: false + type: action + return_to_base: + description: Defines an action to run when the vacuum is given a return to base command. + required: false + type: action + clean_spot: + description: Defines an action to run when the vacuum is given a clean spot command. + required: false + type: action + locate: + description: Defines an action to run when the vacuum is given a locate command. + required: false + type: action + set_fan_speed: + description: Defines an action to run when the vacuum is given a command to set the fan speed. + required: false + type: action + fan_speeds: + description: List of fan speeds supported by the vacuum. + required: false + type: [string, list] weather: description: List of weather entities required: true diff --git a/source/_integrations/tensorflow.markdown b/source/_integrations/tensorflow.markdown deleted file mode 100644 index ee4969ef617..00000000000 --- a/source/_integrations/tensorflow.markdown +++ /dev/null @@ -1,221 +0,0 @@ ---- -title: TensorFlow -description: Detect and recognize objects with TensorFlow. -ha_category: - - Image processing -ha_iot_class: Local Polling -ha_release: 0.82 -ha_domain: tensorflow -ha_integration_type: integration -related: - - docs: /docs/configuration/ - title: Configuration file -ha_quality_scale: legacy ---- - -The TensorFlow image processing {% term integration %} allows you to detect and recognize objects in a camera image using [TensorFlow](https://www.tensorflow.org/). The state of the entity is the number of objects detected, and recognized objects are listed in the `summary` attribute along with quantity. The `matches` attribute provides the confidence `score` for recognition and the bounding `box` of the object for each detection category. - -{% important %} -This integration is only available on Home Assistant Core installation types. Unfortunately, it cannot be used with Home Assistant OS, Supervised or Container. -{% endimportant %} - -## Prerequisites - -The following packages must be installed on Debian before following the setup for the integration to work: - -`sudo apt-get install libatlas-base-dev libopenjp2-7 libtiff5` - -It is possible that Home Assistant is unable to install the Python TensorFlow bindings. If that is the case, -you'll need to install those manually using: `pip install tensorflow==2.2.0`, as the Python wheel is -not available for all platforms. - -See [the official install guide](https://www.tensorflow.org/install/) for other options. - -Furthermore, the official Python TensorFlow wheels by Google, require your CPU to support the `avx` extension. -If your CPU lacks those capabilities, Home Assistant will crash when using TensorFlow, without any message. - -## Preparation - -This integration requires files to be downloaded, compiled on your computer, and added to the Home Assistant configuration directory. These steps can be performed by cloning [this repository](https://github.com/hunterjm/hass-tensorflow) into your configuration directory. Alternatively, if you wish to perform the process manually, the process is as follows: - -Create the following folder structure in your configuration directory. - -```bash - |- {config_dir} - |- tensorflow/ - |- models/ -``` - -Follow these steps (Linux) to compile the object detection library. - -```bash -# Clone tensorflow/models -git clone https://github.com/tensorflow/models.git -# Compile Protobuf (apt-get install protobuf-compiler) -cd models/research -protoc object_detection/protos/*.proto --python_out=. -# Copy object_detection to {config_dir} -cp -r object_detection {config_dir}/tensorflow -``` - -Your final folder structure should look as follows - -```bash - |- {config_dir} - |- tensorflow/ - |- models/ - |- object_detection/ - |- ... -``` - -## Model Selection - -Lastly, it is time to pick a model. It is recommended to start with one of the COCO models available in the [Model Detection Zoo](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md). - -The trade-off between the different models is accuracy vs speed. Users with a decent CPU should start with one of the `EfficientDet` models. If you are running on an ARM device like a Raspberry Pi, start with the `SSD MobileNet v2 320x320` model. - -Whichever model you choose, download it and extract in to the `tensorflow/models` folder in your configuration directory. - -## Configuration - -To enable this {% term integration %} in your installation, add the following to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: tensorflow - source: - - entity_id: camera.local_file - model: - graph: /config/tensorflow/models/efficientdet_d0_coco17_tpu-32/ -``` - -{% configuration %} -source: - description: The list of image sources. - required: true - type: map - keys: - entity_id: - description: A camera entity id to get picture from. - required: true - type: string - name: - description: This parameter allows you to override the name of your `image_processing` entity. - required: false - type: string -file_out: - description: A [template](/docs/configuration/templating/#processing-incoming-data) for the integration to save processed images including bounding boxes. `camera_entity` is available as the `entity_id` string of the triggered source camera. - required: false - type: list -model: - description: Information about the TensorFlow model. - required: true - type: map - keys: - graph: - description: Full path to the base model directory. - required: true - type: string - labels: - description: Full path to a `*label_map.pbtext`. - required: false - type: string - default: tensorflow/object_detection/data/mscoco_label_map.pbtxt - label_offset: - description: Offset for mapping label ID to a name (only use for custom models) - required: false - type: integer - default: 1 - model_dir: - description: Full path to TensorFlow models directory. - required: false - type: string - default: "`/tensorflow` inside configuration" - area: - description: Custom detection area. Only objects fully in this box will be reported. Top of image is 0, bottom is 1. Same left to right. - required: false - type: map - keys: - top: - description: Top line defined as % from top of image. - required: false - type: float - default: 0 - left: - description: Left line defined as % from left of image. - required: false - type: float - default: 0 - bottom: - description: Bottom line defined as % from top of image. - required: false - type: float - default: 1 - right: - description: Right line defined as % from left of image. - required: false - type: float - default: 1 - categories: - description: List of categories to include in object detection. Can be seen in the file provided to `labels`. - type: list - required: false -{% endconfiguration %} - -`categories` can also be defined as dictionary providing an `area` for each category as seen in the advanced configuration below: - -{% raw %} - -```yaml -# Example advanced configuration.yaml entry -image_processing: - - platform: tensorflow - source: - - entity_id: camera.driveway - - entity_id: camera.backyard - file_out: - - "/tmp/{{ camera_entity.split('.')[1] }}_latest.jpg" - - "/tmp/{{ camera_entity.split('.')[1] }}_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg" - model: - graph: /config/tensorflow/models/efficientdet_d0_coco17_tpu-32/ - categories: - - category: person - area: - # Exclude top 10% of image - top: 0.1 - # Exclude right 15% of image - right: 0.85 - - car - - truck -``` - -{% endraw %} - -## Optimizing resources - -[Image processing components](/integrations/image_processing/) process the image from a camera at a fixed period given by the `scan_interval`. This leads to excessive processing if the image on the camera hasn't changed, as the default `scan_interval` is 10 seconds. You can override this by adding to your configuration `scan_interval: 10000` (setting the interval to 10,000 seconds), and then call the `image_processing.scan` action when you actually want to perform processing. - -```yaml -# Example advanced configuration.yaml entry -image_processing: - - platform: tensorflow - scan_interval: 10000 - source: - - entity_id: camera.driveway - - entity_id: camera.backyard -``` - -```yaml -# Example advanced automations.yaml entry -- alias: "TensorFlow scanning" - triggers: - - trigger: state - entity_id: - - binary_sensor.driveway - actions: - - action: image_processing.scan - target: - entity_id: camera.driveway -``` diff --git a/source/_integrations/teslemetry.markdown b/source/_integrations/teslemetry.markdown index 79cec2f22b8..440fb3cec33 100644 --- a/source/_integrations/teslemetry.markdown +++ b/source/_integrations/teslemetry.markdown @@ -84,6 +84,7 @@ Entities in the device tracker platform specifically require the `Vehicle locati |Binary sensor|Front passenger window|Yes| |Binary sensor|GPS state|No| |Binary sensor|Guest mode enabled|No| +|Binary sensor|Hazard lights|No| |Binary sensor|High beams|No| |Binary sensor|Homelink nearby|No| |Binary sensor|HVAC auto mode|No| @@ -181,6 +182,7 @@ Entities in the device tracker platform specifically require the `Vehicle locati |Sensor|HVAC power state|No| |Sensor|Ideal battery range|No| |Sensor|Inside temperature|Yes| +|Sensor|Left temperature request|No| |Sensor|Odometer|No| |Sensor|Outside temperature|Yes| |Sensor|Passenger temperature setting|No| @@ -209,6 +211,7 @@ Entities in the device tracker platform specifically require the `Vehicle locati |Sensor|Rear right drive inverter temperature|No| |Sensor|Rear right drive unit actual torque|No| |Sensor|Rear right drive unit stator temperature|No| +|Sensor|Right temperature request|No| |Sensor|Roof color|No| |Sensor|Scheduled charging mode|No| |Sensor|Scheduled charging start time|No| @@ -239,6 +242,7 @@ Entities in the device tracker platform specifically require the `Vehicle locati |Switch|Charge|Yes| |Switch|Defrost|Yes| |Switch|Sentry mode|Yes| +|Switch|Valet mode|Yes| |Update|Update|Yes| ### Energy sites @@ -293,6 +297,12 @@ Entities in the device tracker platform specifically require the `Vehicle locati |Sensor|State|Yes| |Sensor|Vehicle|Yes| +### Metadata + +|Domain|Name|Enabled| +|---|---|---| +|Sensor|Teslemetry credits|Yes| + ## Actions Teslemetry provides various custom actions to interact with the Tesla Fleet API directly. diff --git a/source/_integrations/thermador.markdown b/source/_integrations/thermador.markdown index cebeedf5072..972e25e9872 100644 --- a/source/_integrations/thermador.markdown +++ b/source/_integrations/thermador.markdown @@ -31,6 +31,7 @@ ha_platforms: - switch - time ha_iot_class: Cloud Push +ha_dhcp: true ha_zeroconf: true --- diff --git a/source/_integrations/totalconnect.markdown b/source/_integrations/totalconnect.markdown index 0bfacb23f94..09eaf15ffef 100644 --- a/source/_integrations/totalconnect.markdown +++ b/source/_integrations/totalconnect.markdown @@ -50,16 +50,6 @@ Log in to the [Total Connect website](https://totalconnect2.com) and create a "s Give the user access to your Location, along with a user code, usually a 4 digit number. -{% details "Notes for Home Assistant Core Installations" %} - -If you have issues running this integration, you may require `libxml2-dev` and `libxmlsec1-dev` packages. To install these on Raspbian, run the command: - -```bash -sudo apt install libxml2-dev libxmlsec1-dev -``` - -{% enddetails %} - {% include integrations/config_flow.md %} ## Configuration Options diff --git a/source/_integrations/tradfri.markdown b/source/_integrations/tradfri.markdown index bad806b3a3e..74df77b612f 100644 --- a/source/_integrations/tradfri.markdown +++ b/source/_integrations/tradfri.markdown @@ -53,14 +53,6 @@ After updating your IKEA Trådfri Gateway firmware it might be necessary to repe Then restart Home Assistant. When prompted, enter the security key and click *configure*, just like during initial setup. -### Compilation issues - -{% note %} -This does not apply to Home Assistant running in Docker Containers, including the default Home Assistant install. -{% endnote %} - -Please make sure you have `autoconf` installed (`$ sudo apt-get install autoconf`) if you want to use this integration. Also, installing some dependencies might take considerable time (more than one hour) on slow devices. - ## Known limitations - The TRÅDFRI Shortcut button, Remotes and motion sensor only send information about their battery status, no events, to Home Assistant and thus can't be used to automate with. If you want to automate with these devices, you need to use something like [ZHA](/integrations/zha/), or the [HomeKit device](/integrations/homekit_controller) integration as mentioned above. diff --git a/source/_integrations/tuya.markdown b/source/_integrations/tuya.markdown index 3e8ed785415..a02185a9346 100644 --- a/source/_integrations/tuya.markdown +++ b/source/_integrations/tuya.markdown @@ -7,6 +7,7 @@ ha_category: - Climate - Cover - Doorbell + - Event - Fan - Humidifier - Light @@ -31,6 +32,7 @@ ha_platforms: - climate - cover - diagnostics + - event - fan - humidifier - light diff --git a/source/_integrations/voip.markdown b/source/_integrations/voip.markdown index aeb38fe6693..228e77bc829 100644 --- a/source/_integrations/voip.markdown +++ b/source/_integrations/voip.markdown @@ -8,6 +8,7 @@ ha_release: '2023.5' ha_codeowners: - '@balloob' - '@synesthesiam' + - '@jaminh' ha_domain: voip ha_integration_type: integration ha_quality_scale: internal diff --git a/source/_integrations/wallbox.markdown b/source/_integrations/wallbox.markdown index 0e12fa7f446..28eac6ab260 100644 --- a/source/_integrations/wallbox.markdown +++ b/source/_integrations/wallbox.markdown @@ -9,6 +9,7 @@ ha_domain: wallbox ha_platforms: - lock - number + - select - sensor - switch ha_config_flow: true @@ -26,6 +27,8 @@ The **Wallbox** {% term integration %} pulls data from the [MyWallbox Portal](ht The {% term integration %} adds the following sensors: - Added energy (kWh) +- Added green energy (kWh) +- Added grid energy (kWh) - Added range (km) - Charging power (kW) - Charging speed @@ -54,6 +57,10 @@ The number {% term entity %} is only loaded if the supplied username has suffici The {% term integration %} adds a lock {% term entity %}, allowing you to lock the charger. Please note, this only works with a user with admin rights. +## Select + +The {% term integration %} adds a select {% term entity %} to control solar charging options, allowing you to choose between **Eco mode**, **Full solar**, or **Disable solar charging**. + ## Switch The {% term integration %} adds a switch {% term entity %}, allowing you to pause/resume the charging process. diff --git a/source/_integrations/wmspro.markdown b/source/_integrations/wmspro.markdown index e3d9b596997..05e437b4d78 100644 --- a/source/_integrations/wmspro.markdown +++ b/source/_integrations/wmspro.markdown @@ -2,6 +2,7 @@ title: WMS WebControl pro description: Instructions on how to integrate WAREMA devices via WMS WebControl pro within Home Assistant. ha_category: + - Button - Cover - Hub - Light @@ -13,6 +14,7 @@ ha_codeowners: ha_domain: wmspro ha_config_flow: true ha_platforms: + - button - cover - diagnostics - light @@ -30,16 +32,21 @@ The **WMS WebControl pro** {% term integration %} allows you to integrate WAREMA This integration uses a local API which is available with firmware container version 11H. -See device section for support information: [covers](#covers), [lights](#lights) and [scenes](#scenes). +See device section for support information: [buttons](#buttons), [covers](#covers), [lights](#lights) and [scenes](#scenes). {% include integrations/config_flow.md %} The WMS WebControl pro *may* also be discovered on your local network via DHCP. +## Buttons + +- All devices that support an identification activity (for example, winking an awning or blinking a light) + can be triggered to perform such activity. + ## Covers -- *Patio awnings* can be opened, closed, set to a certain position and their movement stopped. -- The integration and library *may* already support other types of awnings with a single motor. +- *Patio awnings* and *roller shutters/blinds* can be opened, closed, set to a certain position and stopped. +- The integration and library *may* already support other types of awnings or covers with a single motor. ## Lights diff --git a/source/_integrations/xiaomi_aqara.markdown b/source/_integrations/xiaomi_aqara.markdown index 22ee825b4a8..12676f12339 100644 --- a/source/_integrations/xiaomi_aqara.markdown +++ b/source/_integrations/xiaomi_aqara.markdown @@ -749,6 +749,5 @@ That means that Home Assistant is not getting any response from your Xiaomi gate - If you receive an `{"error":"Invalid key"}` in your log while trying to control the gateway light - You should generate the key again using an Android Phone or alternatively an emulator such as [bluestacks](https://www.bluestacks.com). In some instances, there is an issue with keys being generated using the iOS application. - You need to make sure to have multicast support on your network. If you are running Home Assistant in a virtual machine (like Proxmox), try `echo 0 >/sys/class/net/vmbr0/bridge/multicast_snooping` on the host and restart the service or reboot the host. -- If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g., `$ sudo apt-get install python3-dev libssl-dev libffi-dev`). If your gateway's MAC address starts with `04:CF:8C` or `7C:49:EB`, there is a good chance that the required port `9898` is closed on your gateway and thus, this method doesn't work. There are workarounds available online, however this requires soldering and working with electricity. diff --git a/source/_integrations/zerproc.markdown b/source/_integrations/zerproc.markdown index 87c072e0b6a..3282011277f 100644 --- a/source/_integrations/zerproc.markdown +++ b/source/_integrations/zerproc.markdown @@ -20,6 +20,3 @@ This {% term integration %} discovers nearby Zerproc lights and adds them to Hom The {% term integration %} will scan for nearby devices, and is completed if any are found. No additional configuration is required. The integration will perform a BLE scan every 60 seconds to search for new devices. -## Additional information for Home Assistant Core on Python environments - -This {% term integration %} requires a working Bluetooth stack. Please refer to the [requirements of the underlying bleak library](https://bleak.readthedocs.io/en/latest/backends/index.html) for the operating system requirements. diff --git a/source/_integrations/zimi.markdown b/source/_integrations/zimi.markdown new file mode 100644 index 00000000000..60e23a09b74 --- /dev/null +++ b/source/_integrations/zimi.markdown @@ -0,0 +1,159 @@ +--- +title: zimi +description: Access and control your Zimi Cloud Controller and its connected Zimi-based devices. +featured: false +ha_iot_class: Local Push +ha_release: 2025.6 +ha_codeowners: + - '@markhannon' +ha_category: + - Cover + - Fan + - Light + - Sensor + - Switch +ha_domain: zimi +ha_platforms: + - cover + - fan + - light + - sensor + - switch +ha_config_flow: true +quality_scale: bronze +integration_type: hub +related: + - url: https://zimi.life/ +ha_quality_scale: bronze +ha_integration_type: integration +--- + +The **Zimi Cloud Controller** {% term integration %} allows you to connect your Zimi Cloud Controller to Home Assistant and, via this integration, control local devices connected to the Zimi mesh. + +For a detailed description of the Zimi portfolio, refer to the [Zimi's website](https://zimi.life/). + +## Supported devices + +This integration supports the following Zimi devices: + +- Zimi Cloud Connect ([links to specifications](https://zimi.life/product/cloud-connect/)) + +## Unsupported devices + +The following Zimi devices are yet to be supported: + +- Zimi Matter Connect ([links to specifications](https://zimi.life/product/matter-connect/)) + +## Prerequisites + +A configured Zimi Cloud Connect and internet connection is needed for this integration to work. + +1. Open the app store and install the Zimi app. +2. Open the Zimi app and configure a Zimi network by adding and naming all Zimi devices. +3. Open the Zimi app and configure a Zimi Cloud Connect device. +4. Take a note of the Zimi Cloud Connect IP address and MAC address. +5. Configure the Zimi integration using standard configuration flow. + +{% include integrations/config_flow.md %} + +You will be prompted to configure the Zimi Cloud Connect through the Home Assistant interface. + +If the Zimi discovery process is successful and there is a single Zimi Cloud Connect, then the integration will be configured without further user input. + +If the Zimi discovery process is successful and there are multiple Zimi Cloud Connects present, then you will be prompted to select the desired Zimi Cloud Connect. + +If the Zimi discovery process is unsuccessful (that is, if the Zimi Cloud Connect is not reachable on the local LAN), then you will be prompted for the following parameters: + +{% configuration_basic %} +host: + description: "The IP address of your Zimi Cloud Connect. You can find it via your router admin interface." +port: + description: "The port number used to connect to your Zimi Cloud Connect. If no port number is entered, the integration will use the default port. (The default port will be correct in almost all deployment scenarios)" +{% endconfiguration_basic %} + +It is possible to add multiple Zimi Cloud Connect devices. + +## Supported functionality + +The integration will support all Zimi devices. Note that the naming conventions and default integration types may not be what you expect. + +1. Zimi devices that are generic switches will be shown in the UI as a switch and not as a light. The **Identify as light for voice control** is not available in the API to pass the necessary information to HA to correctly classify. For more details on the concept and how to change your device to the correct type after the initial integration, see [Change device type of a switch](/integrations/switch_as_x/). +2. Zimi devices and names will be mapped per HA guidelines in the table below. The user may change these names to more friendly names - see [Customizing entities](/docs/configuration/customizing-devices/). + +When you add a supported device, the following entities will be created: + +| Zimi product | HA device name | HA entities | HA default friendly name | +|---------------------------------|----------------|---------------------|------------------------------------------------------------------| +| Blind Controller | Cover | 1xCover | Cover {Name} | +| Fan and Light Controller | Fan | 1xFan
1xSwitch | Fan {Name}
Fan {Name} | +| Garage Door Controller | Cover | 1xCover
2xSensor | Garage {Name}
Garage {Temperature}
Garage {Humidity} | +| Light Dimmer Switch | Light | 1xLight | Light {Name} | +| Multi Dimmer Switch (2 button) | Light | 1xLight | Light {Name} | +| Multi Dimmer Switch (4 button) | Light | 2xLight | Light {Name}
Light {Name} | +| Multi-Purpose Switch (1 button) | Switch | 1xSwitch | Switch {Name} | +| Multi-Purpose Switch (2 button) | Switch | 2xSwitch | Switch {Name}
Switch {Name} | +| Multi-Purpose Switch (3 button) | Switch | 3xSwitch | Switch {Name}
Switch {Name}
Switch {Name} | +| Multi-Purpose Switch (4 button) | Switch | 4xSwitch | Switch {Name}
Switch {Name}
Switch {Name}
Switch {Name} | +| Power Point | Outlet | 2xOutlet | Outlet {Name} | + +### Zimi cover + +- Cover entity: Basic open/close and open to percentage + +### Zimi fan + +- Fan entity: Basic on/off and speed control + +### Zimi light + +- Light entity: Basic on/off and brightness control + +### Zimi sensor + +- Battery Level (in %) +- Garage Temperature (in degrees) +- Garage Humidity (in %) +- Outside Temperature (in degrees) + +### Zimi switch + +- Switch entity: Basic on/off + +## Data updates + +The integration receives updates instantly from the Zimi Cloud Controller via the Zimi API. + +## Known limitations + +Entity name changes made in the Zimi app will not be reflected in Home Assistant until after a restart. This is because entity names are only read during integration setup and Home Assistant startup. + +## Troubleshooting + +### Missing Zimi devices + +If there are missing Zimi devices after the initial integration, you may have to run the discovery process again. + +To do this: + +1. Go to **Settings** > **Devices & Services**. +2. Select **Zimi**. +3. Select **Add Hub**. +This will re-run the discovery process. + +### Device authorization failure + +Due to the authorization lifecycle of the Zimi Cloud Controller, the device implements rate limiting on authorization requests. If you exceed these limits +(typically more than 3-5 requests within a few minutes), the device will temporarily reject new connection attempts. If you encounter this issue, you'll +need to wait for the rate limit to reset. + +To do this: + +1. Remove the integration from {% my integrations title="**Settings** > **Devices & services**" %} > **Zimi**. +2. Wait for approximately 5 minutes. +3. Try adding the integration again. + +## 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/zwave_js.markdown b/source/_integrations/zwave_js.markdown index b57425fbb4f..bb76d7c1cc5 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -774,7 +774,7 @@ In addition to the [standard automation trigger data](/docs/automation/templatin ## Advanced installation instructions -If you are using Home Assistant Container, Home Assistant Core, or you don't want to use the built-in Z-Wave JS Server add-on, you will need to run the Z-Wave JS server yourself, to which the Z-Wave integration will connect. +If you are using Home Assistant Container or you don't want to use the built-in Z-Wave JS Server add-on, you will need to run the Z-Wave JS server yourself, to which the Z-Wave integration will connect. ### Running [Z-Wave JS Server](https://github.com/zwave-js/zwave-js-server) diff --git a/source/_posts/2025-06-11-release-20256.markdown b/source/_posts/2025-06-11-release-20256.markdown new file mode 100644 index 00000000000..64971b2c737 --- /dev/null +++ b/source/_posts/2025-06-11-release-20256.markdown @@ -0,0 +1,389 @@ +--- +layout: post +title: "2025.6: Getting picky about Bluetooth" +description: "Great new Bluetooth connection graphs, all pickers have been revamped, sidebar management improvements, (un)group media players straight from your dashboards, and more!" +date: 2025-06-11 00:00:00 +date_formatted: "June 11, 2025" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2025-06/social.png +--- + + + +Home Assistant 2025.6! 🎉 + +We are already half way through 2025, can you believe it? I personally can't, as it feels like we just started the year. Not just that, there are so many exciting things to still come this year, and I can't wait to share them with you! + +Anyway, the June release is here! A week later than usual, but it also means we had an extra week to polish and beta test this release. Like the [previous release](/blog/2025/05/07/release-20255/), this release is packed with quality-of-life improvements! + +Last release my favorite feature was the new entity picker; this release, we improved ALL other pickers! No surprise that this, again, makes it to my top favorite this release. Although the ability to group media players directly from the media player card is a close second. It is so nice to see how Home Assistant keeps getting better and better, and how our community keeps contributing to it. 😍 + +If you are leveraging Bluetooth in your Home Assistant setup, you will also love the new Bluetooth connection graph that shows how your Bluetooth devices are connected, including Bluetooth proxies. Troubleshooting Bluetooth has become so much easier now! + +Enjoy the release! + +../Frenck + +_PS: We will pick up the regular release schedule again now, so expect the next release on the first Wednesday of July (July 2nd)._ + + + +- [Improving all the "pickers"](#improving-all-the-pickers) +- [Making sense of Bluetooth](#making-sense-of-bluetooth) +- [Iterations of the experimental area dashboard](#iterations-of-the-experimental-area-dashboard) +- [Deprecating installation methods and 32-bit architectures](#deprecating-installation-methods-and-32-bit-architectures) +- [Integrations](#integrations) + - [New integrations](#new-integrations) + - [Noteworthy improvements to existing integrations](#noteworthy-improvements-to-existing-integrations) + - [Integration quality scale achievements](#integration-quality-scale-achievements) + - [Farewell to the following](#farewell-to-the-following) +- [Other noteworthy changes](#other-noteworthy-changes) +- [Sidebar improvements](#sidebar-improvements) +- [Join/unjoin groups of media players](#joinunjoin-groups-of-media-players) +- [Reset/restore entity IDs](#resetrestore-entity-ids) +- [Need help? Join the community!](#need-help-join-the-community) +- [Backward-incompatible changes](#backward-incompatible-changes) +- [All changes](#all-changes) + +## Improving all the "pickers" + +Pickers are those dropdowns you use to select entities, devices, areas, and more. Pickers are *everywhere* in Home Assistant, being used in automations, scripts, and configuration options. + +Last release, we [introduced a new entity picker](/blog/2025/05/07/release-20255/#picking-entities), which was a big hit! This release takes things further by refining the search experience based on your feedback. + +Even better, that same improved search experience now comes to the area, category, floor, label, user, and device pickers too! They are consistent, fast, and easy to use, no matter what you're selecting. + +And the device picker? It now has a fresh look to match, complete with manufacturer logos and styling inspired by the entity picker. + +Screenshot showing the new device picker, including the area and integration that provides them. + +## Making sense of Bluetooth + +Home Assistant has powerful [Bluetooth capabilities], and with the use of something like [ESPHome Bluetooth proxies], you can extend your Bluetooth network to cover your entire home. This release brings some improvements to the Bluetooth integration that will help you understand your Bluetooth network better. + +The Bluetooth integration now provides a visualization that shows how your Bluetooth devices are connected to your Home Assistant instance, whether that's directly to your system or through a Bluetooth proxy. + +Screenshot showcasing the new Bluetooth connection graph; Even Bluetooth proxies are shown in the map. + +It not only shows the actively connected devices, but also the devices that are in range, but not yet known to Home Assistant. This is a great way to see what devices are around you and where they can be potentially connected. + +Oh! And now that the Bluetooth integration has a sleek new visualization, the [Zigbee integration], which already has a similar feature, has been given a visual update. This makes visualizations consistent across Home Assistant. + +[Bluetooth capabilities]: /integrations/bluetooth +[ESPHome Bluetooth proxies]: https://esphome.io/projects/?type=bluetooth +[Zigbee integration]: /integrations/zha + +## Iterations of the experimental area dashboard + +In the April release, we introduced a [new experimental Areas dashboard](/blog/2025/04/02/release-20254/#a-new-experimental-areas-dashboard), which automatically generates a ready-to-use dashboard based on the areas you’ve set up in your home. It uses sections and tile cards for a modern, clean, and intuitive look --- all built for you in a couple of clicks. + +As this is experimental, it is being continuously iterated on. This release brings some nice changes, based on your feedback, to subtly refine the experience. + +We added a new "Actions" section that includes scripts, automations, and scenes. We also added number entities (and number helpers), button entities (and button helpers), counters, and timer helpers to the "Others" section. This makes it easier to find and manage your automations and scenes in the context of your areas. + +Finally, we renamed the "Entertainment" section to "Media players". This makes it clearer that this section is specifically for your players, and may not include your DIY arcade machine 👾. + +Screenshot of the new areas dashboard; showcasing the new Actions section. + +## Deprecating installation methods and 32-bit architectures + +This release introduces important deprecation announcements, and though they only affect a small percentage of users, it is important that they understand the impacts. We've written [a detailed blog](/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/) that explains the rationale, timeline, and tips on how to migrate --- which I highly suggest reading if you think you're affected. + +- **Installation Methods**: The **Core** and **Supervised** installation methods are now officially deprecated. These are advanced setups that are only used by a small portion of users, as they involve running Home Assistant in a Python environment or installing the Supervisor on top of your own operating system. Moving forward, we are focusing our support on the more streamlined and maintainable installation methods: **Home Assistant OS** and **Home Assistant Container**. + +- **32-bit Architectures**: Support for legacy 32-bit CPU architectures (**i386**, **armhf**, and **armv7**) is also being deprecated. These architectures are increasingly uncommon and pose challenges for maintaining compatibility and performance. + +To assist you during this transition, Home Assistant will now raise a **repair issue** after upgrading if your system is affected by these deprecations. This notification will appear in the repair dashboard, providing information about the deprecation along with guidance on how to migrate to a supported setup. + +It's important to note that while these methods and architectures are deprecated, they will continue to receive support for the next six months, until the release of Home Assistant 2025.12. You can continue to use them after this point, but we would highly recommend migrating. After this 6-month period, they will become unsupported, meaning they will no longer receive updates or official assistance. + +If you don't receive this repair message, you're not affected. However, you can double-check using [our guide](/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/#what-does-deprecated-and-unsupported-mean) if you'd like. We also have specific information on what becoming deprecated and unsupported [means for your installation](/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/#what-does-deprecated-and-unsupported-mean). Lastly, we have detailed information on [how best to migrate](/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/#how-to-migrate) to a supported system. + +## 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: + +- **[Alexa Devices]**, added by [@chemelli74] + Connect to and control your Amazon devices like Echo, Fire TV, and Alexa-enabled devices. +- **[Immich]**, added by [@mib1185] + Integrates with [Immich App], a self-hosted photo and video backup solution that puts you in control of your personal media. +- **[Paperless-ngx]**, added by [@fvgarrel] + Connect to your [Paperless-ngx system] to track and manage your digital documents from Home Assistant. +- **[Probe Plus]**, added by [@pantherale0] + Integrate wireless Bluetooth meat thermometers compatible with the PROBE PLUS app, bringing real-time temperature monitoring during cooking into Home Assistant. +- **[Zimi Cloud Connect]**, added by [@mhannon11] + Connect to [Zimi Cloud] devices to monitor and control your Zimi smart home products. + +[@chemelli74]: https://github.com/chemelli74 +[@fvgarrel]: https://github.com/fvgarrel +[@mhannon11]: https://github.com/mhannon11 +[@mib1185]: https://github.com/mib1185 +[@pantherale0]: https://github.com/pantherale0 +[@starkillerOG]: https://github.com/starkillerOG +[Alexa Devices]: /integrations/alexa_devices +[Immich App]: https://immich.app/ +[Immich]: /integrations/immich +[Paperless-ngx system]: https://docs.paperless-ngx.com/ +[Paperless-ngx]: /integrations/paperless_ngx +[Probe Plus]: /integrations/probe_plus +[Zimi Cloud Connect]: /integrations/zimi +[Zimi Cloud]: https://www.zimi.com.au/ + +This release also has new virtual integrations. Virtual integrations are stubs that are handled by other (existing) integrations to help with findability. These ones are new: + +- **[Kaiser Nienhaus]**, provided by [Motionblinds], added by [@starkillerOG] + +[@starkillerOG]: https://github.com/starkillerOG +[Kaiser Nienhaus]: /integrations/kaiser_nienhaus +[Motionblinds]: /integrations/motionblinds + +### 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: + +- [@bdraco] added support for updating [ESPHome] devices that are in deep sleep. + A very welcome improvement for battery-powered devices! +- The [Homee] integration now supports fans and provides alarm control panels. + Thanks for expanding its capabilities, [@Taraman17]! +- [Teslemetry] keeps getting better—[@Bre77] added a hazard lights binary sensor, + a valet mode switch, and a credit balance sensor. Nice! +- [@bieniu] improved the [Shelly] integration to use sub-devices for multi-channel devices. + A notable change for complex setups! +- The [SmartThings] integration saw a huge round of improvements by [@joostlek], including: + support for cooktops, hobs, water heaters, hood fan speeds, Steam closet modes, + freezer and cooler temperatures, washer spin and soil levels, valve positions, + heat pump zone climates, and atmospheric pressure. Amazing! +- [Miele] keeps on shining with new features from [@astrandb], like vacuum support, + drying step sensors, washer-dryer program phases, and hob plate sensors. + [@generically-named] added energy and water forecasts too—very cool! +- [@agorecki] added a Lux sensor to the [Airthings Cloud] integration—bright idea! +- The [Squeezebox] integration now includes service update entities, thanks to [@pssc]! +- [@tedvdb] added a status sensor to the [Whois] integration. Simple, but effective. +- [@zerzhang] added support for [SwitchBot] + [vacuums](https://www.switch-bot.com/products/switchbot-robot-vacuum-k10-plus), + and new lock models: the [Lock Ultra](https://www.switch-bot.com/products/switchbot-lock-ultra) + and [Lock Lite](https://www.switch-bot.com/products/switchbot-lock-lite)! +- [@danielvandenberg95] updated the [Sonos] integration to show playlists under favorites. + A great UX win! +- The [Kostal Plenticore] integration now supports installer login. + Thanks for that improvement, [@Schlauer-Hax]! +- [@Shulyaka] added support for [Anthropic] Claude 4. Welcome to the future! +- And finally, [@chemelli74] added preset mode support to the [Comelit] climate integration. + Another nice quality-of-life addition! + +[@agorecki]: https://github.com/agorecki +[@astrandb]: https://github.com/astrandb +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@Bre77]: https://github.com/Bre77 +[@chemelli74]: https://github.com/chemelli74 +[@danielvandenberg95]: https://github.com/danielvandenberg95 +[@generically-named]: https://github.com/generically-named +[@joostlek]: https://github.com/joostlek +[@pssc]: https://github.com/pssc +[@Schlauer-Hax]: https://github.com/Schlauer-Hax +[@Shulyaka]: https://github.com/Shulyaka +[@Taraman17]: https://github.com/Taraman17 +[@tedvdb]: https://github.com/tedvdb +[@zerzhang]: https://github.com/zerzhang +[Airthings Cloud]: /integrations/airthings +[Anthropic]: /integrations/anthropic +[Comelit]: /integrations/comelit +[ESPHome]: /integrations/esphome +[Homee]: /integrations/homee +[Kostal Plenticore]: /integrations/kostal_plenticore +[Miele]: /integrations/miele +[Shelly]: /integrations/shelly +[SmartThings]: /integrations/smartthings +[Sonos]: /integrations/sonos +[Squeezebox]: /integrations/squeezebox +[SwitchBot]: /integrations/switchbot +[Teslemetry]: /integrations/teslemetry +[Whois]: /integrations/whois + +### Integration quality scale achievements + +One thing we are incredibly proud of in Home Assistant is our +[integration quality scale]. This scale helps us and our contributors to ensure +integrations are of high quality, maintainable, and provide the best possible +user experience. + +This release, we celebrate several {% term integrations %} that have improved +their quality scale: + +- **1 integration reached gold** 🥇 + - [SwitchBot], thanks to [@zerzhang] + +- **1 integration reached silver** 🥈 + - [Shelly], thanks to [@bieniu] + +This is a huge achievement for these integrations and their maintainers. The +effort and dedication required to reach these quality levels is significant, +as it involves extensive testing, documentation, error handling, and often +complete rewrites of parts of the integration. + +A big thank you to all the contributors involved! 👏 + +[integration quality scale]: https://www.home-assistant.io/docs/quality_scale/ +[@astrandb]: https://github.com/astrandb +[@bieniu]: https://github.com/bieniu +[@zerzhang]: https://github.com/zerzhang +[Miele]: /integrations/miele +[Shelly]: /integrations/shelly +[SwitchBot]: /integrations/switchbot + +### Farewell to the following + +The following {% term integrations %} are also no longer available as +of this release: + +- **RTSPtoWebRTC** has been removed as it has been replaced by the [go2rtc] integration. + +[go2rtc]: /integrations/go2rtc + +## Other noteworthy changes + +There are many more improvements in this release; here are some of the other noteworthy changes: + +- A small but neat one: [@balloob] made it so discoveries shown on an integration page are now sorted by title. Helpful! +- The [Home Assistant Cloud] integration will now raise a repair issue when your subscription has expired, helping make sure you’re aware and not caught off guard. Nice one, [@ludeeus]! +- More backup improvements! 🎉 + - Home Assistant will now raise a repair issue if not all add-ons or folders were successfully backed up. Thanks, [@emontnemery]! + - [@agners] made it so that when an add-on is auto-updated, a backup is now correctly created as an "add-on"-backup. Great! + - A new automatic backup [event entity] has been added to track automatic backups made by the system. Great addition by [@mib1185]! +- [@lboue] added support for the [Matter] pump device type. Another one + added to the list—awesome! +- The Template integration got a big boost! + - [@Petro31] added modern-style YAML support for template fans, locks, alarm control panels, vacuums, and covers. So clean! + - You can now create **trigger-based template covers**. Yep, also by [@Petro31]! + - The `trigger_variables` option is now supported when using `for` in a trigger. A small but powerful feature. Thanks, [@Petro31]! + - New template filters! You can now use `from_hex`, and `base64_encode` now supports both bytes and strings. Handy additions from [@Petro31]! +- New sensor capabilities: + - [@Passific] added a new device class and units for **reactive energy**. Nice! + - A new unit for **energy distance (Wh/km)** has been added. Thanks, [@frenck]! + - Sensors now support **mg/m³** as a concentration unit—another nice addition by [@frenck]! + - [@Arnie97] added support for **liters** as a unit for gas sensors. Much appreciated! +- The new `recorder.get_statistics` action lets you query statistics directly + from the recorder. Powerful stuff, [@Hypfer]! + +[@agners]: https://github.com/agners +[@Arnie97]: https://github.com/Arnie97 +[@balloob]: https://github.com/balloob +[@emontnemery]: https://github.com/emontnemery +[@frenck]: https://github.com/frenck +[@Hypfer]: https://github.com/Hypfer +[@lboue]: https://github.com/lboue +[@ludeeus]: https://github.com/ludeeus +[@mib1185]: https://github.com/mib1185 +[@Passific]: https://github.com/Passific +[@Petro31]: https://github.com/Petro31 +[event entity]: /integrations/event +[Home Assistant Cloud]: /integrations/cloud +[Matter]: /integrations/matter +[template entities]: /integrations/template/ + +## Sidebar improvements + +If you didn't know yet, you can actually adjust the contents of your Home Assistant sidebar. You can change the order and show/hide items by pressing and holding the "Home Assistant" text at the top of the sidebar, or by going to your user profile page and selecting "Change the order and hide items from the sidebar". + +This release brings a couple of much-needed improvements to this feature. When you customize the sidebar, it will now bring up a nice and clean dialog that allows you to drag and drop items to change their order, or hide them by clicking the eye icon next to them. + +Screenshot of the new dialog that can be used to order or hide the items in the sidebar. + +The biggest improvement is actually found somewhere else! Previously, the customization of the sidebar was only applied to the device you made the changes on; and even more annoying, sometimes it would lose the changes, or it would magically forget your settings on our [mobile companion apps] when you switched between your home network (and thus the internal URL). 🥲 + +In this release, this annoyance has been fixed! The sidebar customization is now stored in your user profile, so your personalized layout follows you across all devices you use with Home Assistant! + +## Join/unjoin groups of media players + +Media players in Home Assistant can provide actions for media players to join or unjoin a group of media players. This is a great way to dynamically control your media players and the groups they are in. However, this feature was somewhat limited, as it could only be used as actions within things like automations or scripts. + +Now, [@AlexGustafsson] changed that! 🎉 + +You can now use the media player card to join or unjoin groups of media players. This is a great way to control your media players and their groups directly from the UI. + +Screenshot of the media player card providing controls to group media player with the current used media player. + +Please note that, you can only join or unjoin groups of media players that support this feature. Unfortunately, not all media players support this, so it might not be available for all your media players. + +Anyhow, amazing contribution Alex! 👏 + +[@AlexGustafsson]: https://github.com/AlexGustafsson + +## Reset/restore entity IDs + +You can now restore the ID of an entity to its original value. This is useful if you have renamed an entity and want to revert it back to its original entity ID. + +This feature is available in the entity configuration dialog, where you can now find a "Reset" icon on the entity ID field. When clicked, it will restore the entity ID to its original value. Additionally, there is the option called "Recreate entity IDs" in the top right three-dotted menu on the device page, to reset all entity IDs of a device to their original values. + +Screenshot showing the reset option of the entity ID in the entity configuration dialog. + +## 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 "Met Office" %} + +Met Office [deprecated the Datapoint API](https://www.metoffice.gov.uk/services/data/datapoint/datapoint-retirement-faqs) used by this integration, causing it to stop working. To address this, it is now migrated to [DataHub API](https://www.metoffice.gov.uk/services/data/met-office-weather-datahub). + +To keep using this integration, you will need to provide a new API key, which can be obtained by signing up for [DataHub](https://datahub.metoffice.gov.uk/) and subscribing to [Global spot dataset](https://datahub.metoffice.gov.uk/pricing/site-specific). The free subscription provides 360 calls per day, which is enough for this integration to work. + +Some sensors have changed due to the new data source: + +- Hourly forecast provided by the weather entity now has actual hourly entries as opposed to 3-hourly in the old version +- Instead of `visibility` and `visibility_distance` sensors showing a range and qualitative description (such as "1-4 km" and "Poor"), the integration now exposes a single `visibility` sensor with precise visibility distance in meters +- The integration no longer exposes "daily" and "3-hourly" sensors; there is a single set of them now +- The integration sensors no longer expose `Site ID`, `Site name` and `Sensor ID` attributes as these don't provide any additional value + +([@avee87] - [#131425]) ([documentation](/integrations/metoffice)) + +[@avee87]: https://github.com/avee87 +[#131425]: https://github.com/home-assistant/core/pull/131425 + +{% 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 changes are the most notable for this release: + +- [Icon translations now support ranges](https://developers.home-assistant.io/blog/2025/05/22/range-based-icons/) +- [Sensor device classes now have default display precision](https://developers.home-assistant.io/blog/2025/05/26/sensor-default-display-precision/) + +[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.6](/changelogs/core-2025.6) diff --git a/source/_redirects b/source/_redirects index a6d8130ab30..d2404317d9c 100644 --- a/source/_redirects +++ b/source/_redirects @@ -530,15 +530,20 @@ layout: null /integrations/coinmarketcap /more-info/removed-integration 301 /integrations/coronavirus /more-info/removed-integration 301 /integrations/crimereports /more-info/removed-integration 301 +/integrations/cups /more-info/removed-integration 301 /integrations/darksky /more-info/removed-integration 301 +/integrations/decora /more-info/removed-integration 301 /integrations/deutsche_bahn /more-info/removed-integration 301 /integrations/device_tracker.trackr /more-info/removed-integration 301 /integrations/dht /more-info/removed-integration 301 /integrations/digitalloggers /more-info/removed-integration 301 /integrations/discovery /more-info/removed-integration 301 +/integrations/dlib_face_detect /more-info/removed-integration 301 +/integrations/dlib_face_identify /more-info/removed-integration 301 /integrations/dte_energy_bridge /more-info/removed-integration 301 /integrations/duke_energy /more-info/removed-integration 301 /integrations/dyson /more-info/removed-integration 301 +/integrations/eddystone_temperature /more-info/removed-integration 301 /integrations/edp_redy /more-info/removed-integration 301 /integrations/ee_brightbox /more-info/removed-integration 301 /integrations/eight_sleep /more-info/removed-integration 301 @@ -558,6 +563,7 @@ layout: null /integrations/google_domains /more-info/removed-integration 301 /integrations/gpmdp /more-info/removed-integration 301 /integrations/griddy /more-info/removed-integration 301 +/integrations/gstreamer /more-info/removed-integration 301 /integrations/hangouts /more-info/removed-integration 301 /integrations/history_graph /more-info/removed-integration 301 /integrations/htu21d /more-info/removed-integration 301 @@ -565,6 +571,8 @@ layout: null /integrations/hydroquebec /more-info/removed-integration 301 /integrations/ialarm_xr /more-info/removed-integration 301 /integrations/iota /more-info/removed-integration 301 +/integrations/keyboard /more-info/removed-integration 301 +/integrations/lirc /more-info/removed-integration 301 /integrations/life360 /more-info/removed-integration 301 /integrations/lifx_legacy /more-info/removed-integration 301 /integrations/linksys_ap /more-info/removed-integration 301 @@ -595,6 +603,7 @@ layout: null /integrations/opencv /more-info/removed-integration 301 /integrations/orangepi_gpio /more-info/removed-integration 301 /integrations/ozw /more-info/removed-integration 301 +/integrations/pandora /more-info/removed-integration 301 /integrations/panel_iframe /more-info/removed-integration 301 /integrations/pcal9535a /more-info/removed-integration 301 /integrations/pi4ioe5v9xxxx /more-info/removed-integration 301 @@ -617,6 +626,8 @@ layout: null /integrations/simple_alarm /more-info/removed-integration 301 /integrations/simulated /more-info/removed-integration 301 /integrations/smarthab /more-info/removed-integration 301 +/integrations/sms /more-info/removed-integration 301 +/integrations/snips /more-info/removed-integration 301 /integrations/sochain /more-info/removed-integration 301 /integrations/socialblade /more-info/removed-integration 301 /integrations/somfy /more-info/removed-integration 301 @@ -628,6 +639,7 @@ layout: null /integrations/sytadin /more-info/removed-integration 301 /integrations/sunweg /more-info/removed-integration 301 /integrations/tahoma /more-info/removed-integration 301 +/integrations/tensorflow /more-info/removed-integration 301 /integrations/teksavvy /more-info/removed-integration 301 /integrations/tesla /more-info/removed-integration 301 /integrations/tof /more-info/removed-integration 301 diff --git a/source/changelogs/core-2025.6.markdown b/source/changelogs/core-2025.6.markdown new file mode 100644 index 00000000000..74df52b876e --- /dev/null +++ b/source/changelogs/core-2025.6.markdown @@ -0,0 +1,2888 @@ +--- +title: Full changelog for Home Assistant Core 2025.6 +description: Detailed changelog for the Home Assistant Core 2025.6 release +replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$ +--- + +These are all the changes included in the Home Assistant Core 2025.6 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2025/06/11/release-20256/). + +## All changes + +- Add removal instructions to ElevenLabs ([@sorgfresser] - [#133895]) +- Bump version to 2025.2.0dev0 ([@frenck] - [#133893]) +- Mark missing IQS requirements for Idasen Desk as done ([@abmantis] - [#133910]) +- Revise codeowners for Overkiz ([@iMicknl] - [#133784]) +- Remove myself as codeowner from Plugwise ([@frenck] - [#133920]) +- Remove myself as codeowner from Tuya integration ([@frenck] - [#133921]) +- Prevent imports from tests in core codebase ([@frenck] - [#133928]) +- Make screenlogic state enums lowercase ([@dieselrabbit] - [#133866]) +- Bump velbusaio to 2024.12.3 ([@cereal2nd] - [#133939]) +- Update pyvesync version ([@cdnninja] - [#131433]) +- Add pip wheel build constraints to fix numpy builds ([@cdce8p] - [#133962]) +- Bump subarulink to 0.7.13 ([@G-Two] - [#133970]) +- Bump numpy to 2.2.1 ([@bdraco] - [#133844]) +- Add parallel updates to swiss public transport ([@miaucl] - [#133996]) +- Add clear shopping list button for Cookidoo ([@miaucl] - [#133583]) +- Add config flow data description to swiss public transport ([@miaucl] - [#133997]) +- Fulfill IQS rule docs-removal-instructions in ViCare integration ([@CFenner] - [#133982]) +- Update silver docs for swiss public transport ([@miaucl] - [#134001]) +- Bump Tesla Fleet API library ([@Bre77] - [#134019]) +- Bump python-google-nest-sdm to 7.0.0 ([@allenporter] - [#134016]) +- Tado update code owners ([@erwindouna] - [#133987]) +- Fix typo in get_command action description ([@NoRi2909] - [#134026]) +- Use correct uppercase for abbreviations ([@NoRi2909] - [#134028]) +- Fix Nest ConfigEntry typing ([@allenporter] - [#134021]) +- Replace "service" with "action" plus fixed descriptions ([@NoRi2909] - [#134053]) +- Bump pyipma to 3.0.8 ([@dgomes] - [#134055]) +- Remove mqtt publish templates after 6 months of deprecation ([@jbouwh] - [#134056]) +- Fix unifiprotect DeprecationWarnings in tests ([@cdce8p] - [#134060]) +- Suez_water: remove redundant log on refresh failure ([@jb101010-2] - [#134025]) +- Add state_class to EcoWittSensorTypes.DEGREE ([@tkunzfeld] - [#134004]) +- Roborock Add vacuum_goto service ([@RaHehl] - [#133994]) +- Revert "Add state_class to EcoWittSensorTypes.DEGREE" ([@frenck] - [#134079]) +- Add azure_data_explorer to microsoft brand ([@zweckj] - [#134088]) +- Bump pyheos to v0.8.0 ([@andrewsayre] - [#134069]) +- Remove Tile unique id migration ([@joostlek] - [#134106]) +- Extract Tile coordinator in separate file ([@joostlek] - [#134104]) +- Remove YAML import from Tile ([@joostlek] - [#134108]) +- Bump Tado to 0.18.5 ([@erwindouna] - [#133988]) +- Set PARALLEL_UPDATES for incomfort entity platforms ([@jbouwh] - [#134110]) +- Introduce base entity for Tile ([@joostlek] - [#134109]) +- Add unit test for sensors in swiss public transport ([@miaucl] - [#134115]) +- Migrate Tile to use entry.runtime_data ([@joostlek] - [#134107]) +- Remove deprecated yaml import for Russound RIO ([@noahhusby] - [#134072]) +- Bump aiorussound to 4.2.0 ([@noahhusby] - [#134117]) +- Converge stream av open methods, options, and error handling ([@allenporter] - [#134020]) +- Add mute support to Russound RIO ([@noahhusby] - [#134118]) +- Bump pysqueezebox to v0.11.1 ([@rajlaud] - [#134097]) +- Remove incorrect device check in LCN events ([@alengwenus] - [#134116]) +- Add Overseerr integration ([@joostlek] - [#133981]) +- Remove unused parameters from function calls in rainbird ([@allenporter] - [#134124]) +- Refactor Tile tests ([@joostlek] - [#134130]) +- Add Tile device tests ([@joostlek] - [#134138]) +- Add ClassVar annotation for singleton patterns ([@cdce8p] - [#134135]) +- Add Velbus binary sensor tests ([@cereal2nd] - [#134132]) +- Add Tile device tracker tests ([@joostlek] - [#134137]) +- Bump python-overseerr to 0.3.0 ([@joostlek] - [#134147]) +- Add versions to Tile device ([@joostlek] - [#134150]) +- Use x,y in roborock action call ([@gjohansson-ST] - [#134133]) +- Remove deprecated Mastodon yaml config import ([@andrew-codechimp] - [#134040]) +- Add quality_scale.yaml for KNX ([@farmio] - [#133937]) +- Suez_water: use meter id as unique_id ([@jb101010-2] - [#133959]) +- Bump pynecil to v3.0.0 ([@tr4nt0r] - [#134151]) +- Add binary sensor to Tile ([@joostlek] - [#134153]) +- Suez_water: clear quality scale ([@jb101010-2] - [#134027]) +- Add switch platform to IronOS integration ([@tr4nt0r] - [#133691]) +- Bump pynecil to v3.0.1 ([@tr4nt0r] - [#134174]) +- Add Velbus Button tests ([@cereal2nd] - [#134186]) +- Add button platform to IronOS integration ([@tr4nt0r] - [#133678]) +- Bump python-overseerr to 0.4.0 ([@joostlek] - [#134192]) +- Migrate Habitica integration to habiticalib ([@tr4nt0r] - [#131032]) +- Move coordinator to own file in Open-Meteo ([@gjohansson-ST] - [#134197]) +- Bump aioswitcher to 6.0.0 ([@thecode] - [#134185]) +- Fix method subtyping [elkm1] ([@cdce8p] - [#134210]) +- Fix method subtyping [knx] ([@cdce8p] - [#134211]) +- Fix method subtyping [recorder] ([@cdce8p] - [#134212]) +- Fix method subtyping [helpers] ([@cdce8p] - [#134213]) +- Add slot list service to ohme ([@dan-r] - [#134170]) +- Use config entry runtime data in Open-Meteo ([@gjohansson-ST] - [#134198]) +- Add reauth flow to Habitica integration ([@tr4nt0r] - [#131676]) +- Set Scrape sensor unavailable when errors ([@gjohansson-ST] - [#134143]) +- Bump habiticalib to v0.3.2 ([@tr4nt0r] - [#134244]) +- Remove unused translations from Russound RIO ([@noahhusby] - [#134246]) +- Remove deprecated yaml import from OTP integration ([@tr4nt0r] - [#134196]) +- Record LG WebOS TV Quality scale ([@joostlek] - [#133732]) +- Bump Python Matter server to 7.0.0 (Matter 1.4) ([@lboue] - [#132502]) +- Fix two descriptions of yeelight actions ([@NoRi2909] - [#134282]) +- Add battery sensor to ohme ([@dan-r] - [#134222]) +- Replace "service" with "action" ([@NoRi2909] - [#134279]) +- Replace unnecessary abbreviations in set_room_temperature action ([@NoRi2909] - [#134278]) +- Add discovery to Russound RIO ([@noahhusby] - [#134245]) +- Add parallel updates to camera platform in Trafikverket Camera ([@gjohansson-ST] - [#134298]) +- Use typed config entry in Trafikverket Camera ([@gjohansson-ST] - [#134299]) +- Use typed config entry everywhere in Trafikverket Ferry ([@gjohansson-ST] - [#134300]) +- Set parallel updates in Trafikverket Ferry ([@gjohansson-ST] - [#134301]) +- Use typed config entry everywhere in Trafikverket Weatherstation ([@gjohansson-ST] - [#134308]) +- Set parallel updates in Trafiverket Weatherstation ([@gjohansson-ST] - [#134309]) +- Explicitly set config entry in Trafikverket Weatherstation coordinator ([@gjohansson-ST] - [#134310]) +- Explicitly set config entry in Trafikverket Ferry coordinator ([@gjohansson-ST] - [#134305]) +- Use typed config entry everywhere in Trafikverket Train ([@gjohansson-ST] - [#134303]) +- Explicitly set config entry in Trafikverket Train coordinator ([@gjohansson-ST] - [#134304]) +- Set parallel updates in Trafikverket Train ([@gjohansson-ST] - [#134302]) +- Bump pyvesync to 2.1.15 ([@iprak] - [#134156]) +- Update description of the script toggle action ([@NoRi2909] - [#134093]) +- Full test coverage for Vodafone Station sensor platform ([@chemelli74] - [#133285]) +- Refactor and simplify config flow in generic camera ([@davet2001] - [#134330]) +- Bump aiorussound to 4.3.0 ([@noahhusby] - [#134242]) +- Add Bang & Olufsen button Event entities ([@mj23000] - [#127550]) +- Bump aiorussound to 4.4.0 ([@noahhusby] - [#134366]) +- Add Reolink baby crying binary sensor ([@starkillerOG] - [#134290]) +- Use text selectors for lamarzocco config flow ([@zweckj] - [#134368]) +- Remove leftover newline codes and periods from strings.json ([@NoRi2909] - [#134354]) +- Bump ohmepy to 1.2.3 ([@dan-r] - [#134348]) +- Change Reolink test switch entity ID ([@starkillerOG] - [#134339]) +- Ensure an entity platform is added in mqtt tests ([@jbouwh] - [#134331]) +- Use "restore from" in field descriptions of restore_partial action ([@NoRi2909] - [#134285]) +- Add placeholder url to Sensibo api description ([@gjohansson-ST] - [#134342]) +- Add velbus switch platform testcases ([@cereal2nd] - [#134207]) +- Add diagnostics to Trafikverket Weatherstation ([@gjohansson-ST] - [#134314]) +- Add integration for igloohome devices ([@keithle888] - [#130657]) +- Cleanup lamarzocco tests ([@zweckj] - [#134383]) +- Implement base entity class for Twinkly ([@sVnsation] - [#134382]) +- Add Velbus climate platform tests ([@cereal2nd] - [#134387]) +- Calculate number of discovery topics correctly ([@jbouwh] - [#134393]) +- Velbus select platform testcases ([@cereal2nd] - [#134394]) +- Move available property to base entity in Sensibo ([@gjohansson-ST] - [#134410]) +- Add mill number platform ([@Danielhiversen] - [#134044]) +- Add the Model Context Protocol Server integration ([@allenporter] - [#134122]) +- Add base entity to Mill ([@gjohansson-ST] - [#134415]) +- Update mypy-dev to 1.15.0a1 ([@cdce8p] - [#134416]) +- Add HEOS options flow for optional authentication ([@andrewsayre] - [#134105]) +- Add debug log and Optimize code ([@ashionky] - [#134328]) +- Add `current_humidity` state attribute to Google Nest climate entity ([@jbarreiros] - [#134426]) +- Add action translations to Sensibo ([@gjohansson-ST] - [#134420]) +- Add translations to all Sensibo errors ([@gjohansson-ST] - [#134422]) +- Remove habitipy references in Habitica integration ([@tr4nt0r] - [#134419]) +- Improve names and descriptions in neato.custom_cleaning action ([@NoRi2909] - [#134399]) +- Add mode selector to Twinkly ([@sVnsation] - [#134041]) +- Update types packages ([@cdce8p] - [#134433]) +- Add sw_version to apsystems ([@Thomas55555] - [#134441]) +- Improve action descriptions with some more detail from the docs ([@NoRi2909] - [#134120]) +- Add types package for pyserial ([@cdce8p] - [#134444]) +- Remove deprecated yaml import from pyLoad integration ([@tr4nt0r] - [#134200]) +- Improve pandora media_player typing ([@cdce8p] - [#134447]) +- Update pexpect to 4.9.0 ([@cdce8p] - [#134450]) +- Remove deprecated YAML import from MPD ([@noahhusby] - [#134459]) +- Add support for specifying hvac_onoff_register value on modbus ([@illia-piskurov] - [#128366]) +- Remove excessive newline codes from strings.json ([@NoRi2909] - [#134468]) +- Change Reolink person binary sensor icon ([@SparkyDan555] - [#134472]) +- Remove sneaked in IronOS submodule ([@frenck] - [#134477]) +- Use username as config entry title in Sensibo ([@gjohansson-ST] - [#134488]) +- Improve error strings in Sensibo ([@gjohansson-ST] - [#134487]) +- Remove worldclock config entry import ([@gjohansson-ST] - [#134491]) +- Remove deprecated attributes from ecovacs ([@gjohansson-ST] - [#134492]) +- Remove deprecated uptime sensor from qnap_qsw ([@gjohansson-ST] - [#134493]) +- Update pillow to 11.1.0 ([@cdce8p] - [#134469]) +- Bump psutil to 6.1.1 ([@gjohansson-ST] - [#134494]) +- Add types package for pexpect ([@cdce8p] - [#134461]) +- Use the latest version of the pyserial-asyncio-fast library ([@rrooggiieerr] - [#134501]) +- Push Overseerr updates via webhook ([@joostlek] - [#134187]) +- Bump python-overseerr to 0.5.0 ([@joostlek] - [#134522]) +- Add quality scale to Sensibo ([@gjohansson-ST] - [#134296]) +- Add switch platform to Ohme ([@dan-r] - [#134347]) +- Add coordinator to vesync ([@iprak] - [#134087]) +- Add get_tasks action to Habitica integration ([@tr4nt0r] - [#127687]) +- Add state_class to Airthings integration ([@LaStrada] - [#134503]) +- Refactor all Sensibo tests ([@gjohansson-ST] - [#134478]) +- Enable strict typing for pandora ([@cdce8p] - [#134536]) +- Velbus add init testcases ([@cereal2nd] - [#134533]) +- Add Homee integration to Core ([@Taraman17] - [#133738]) +- Fix description of google_assistant.request_sync action ([@NoRi2909] - [#134535]) +- Remove deprecated sensors in Habitica integration ([@tr4nt0r] - [#134320]) +- Add support for `xvoltage` sensor for Shelly Plus UNI ([@bieniu] - [#134261]) +- Move SiLabs firmware probing helper from ZHA into `homeassistant_hardware` ([@puddly] - [#131586]) +- Update quality scale for Sensibo ([@gjohansson-ST] - [#134551]) +- Add supported features property in Sensibo ([@gjohansson-ST] - [#134479]) +- Add HEOS Reauth Flow ([@andrewsayre] - [#134465]) +- Require at least bronze for new integrations ([@joostlek] - [#134537]) +- Improve habitica action descriptions ([@NoRi2909] - [#134563]) +- Add sleep switch for all Foscam cameras if more than 1 camera are configured ([@N3rdix] - [#126064]) +- Velbus diagnostics code cleanup ([@cereal2nd] - [#134553]) +- Add image platform to Habitica integration ([@tr4nt0r] - [#129009]) +- Add velbus light and sensor platform testcases ([@cereal2nd] - [#134485]) +- Clean up docstrings in Sensibo ([@gjohansson-ST] - [#134591]) +- Add velbus diagnostics tests ([@cereal2nd] - [#134621]) +- Bump ical to 8.3.0 ([@allenporter] - [#134617]) +- Fix typo 'devide_id', use uppercase for abbreviations ID and LED ([@NoRi2909] - [#134634]) +- Replace aioclient_mock in Sensibo tests ([@gjohansson-ST] - [#134543]) +- Fix description of device_id field of reconnect_client actions ([@NoRi2909] - [#134275]) +- Update guppy to 3.1.5 ([@frenck] - [#134646]) +- Add velbus cover platform testcases ([@cereal2nd] - [#134654]) +- Remove LG WebOS TV legacy uuid migration ([@thecode] - [#134671]) +- Prefer a local webhook for Overseerr ([@joostlek] - [#134667]) +- Add Overseerr service to get requests ([@joostlek] - [#134229]) +- Bump gcal_sync to 7.0.0 ([@allenporter] - [#134687]) +- Clean-up HEOS entity event setup ([@andrewsayre] - [#134683]) +- Add prompts to MCP server ([@allenporter] - [#134619]) +- Remove excessive newline codes from squeezebox strings ([@NoRi2909] - [#134682]) +- Fix wrong description of group.set action ([@NoRi2909] - [#134697]) +- Fix typos / grammar in description of create_task action ([@NoRi2909] - [#134705]) +- Fix typos / grammar in nasweb integration ([@NoRi2909] - [#134721]) +- Fix spelling of "MAC (address)" and "Gateway" name ([@NoRi2909] - [#134724]) +- Deprecate HEOS sign_in and sign_out actions ([@andrewsayre] - [#134616]) +- Add support for "Lumin Smart Light" LD-0003 ([@rpavlik] - [#133328]) +- Bump ruff to 0.8.6 ([@autinerd] - [#134745]) +- Bump aranet4 to 2.5.0 ([@luc-ass] - [#134752]) +- Fix spelling of "MAC (address)" and "Slide" name in slide_local ([@NoRi2909] - [#134747]) +- Use uppercase "Chime" for product name, fix "MAC address" ([@NoRi2909] - [#134748]) +- Small fixes in the strings file of the Vera integration ([@NoRi2909] - [#134780]) +- Add ATTR_MODEL to DeviceInfo for Aranet ([@luc-ass] - [#134307]) +- Add latest Nighthawk WiFi 7 routers to V2 models ([@lanthaler] - [#134765]) +- Remove unneeded vesync device base class ([@cdnninja] - [#134499]) +- Use uppercase "ID" in Home Connect strings ([@NoRi2909] - [#134783]) +- Fix spelling of "ID" in Roku integration ([@NoRi2909] - [#134779]) +- Update roborock to ensure every room has a name, falling back to a placeholder ([@allenporter] - [#134733]) +- Fix spelling of "ID", slightly reword action description ([@NoRi2909] - [#134817]) +- Pass config entry directly to coordinator in System monitor ([@gjohansson-ST] - [#134837]) +- Set single_config_entry in System monitor manifest ([@gjohansson-ST] - [#134838]) +- Add python_script to strict typing ([@gjohansson-ST] - [#134822]) +- Make ChunkAsyncStreamIterator an aiohttp helper ([@mib1185] - [#134843]) +- Add get device capabilities action call for Sensibo ([@gjohansson-ST] - [#134596]) +- Add horizontal swing to Sensibo ([@gjohansson-ST] - [#132117]) +- Bump pynecil to v4.0.1 ([@tr4nt0r] - [#134852]) +- Remove deprecated binary sensor battery charging from technove ([@gjohansson-ST] - [#134844]) +- Fix spelling of "set up", change "id" to uppercase ([@NoRi2909] - [#134888]) +- Use correct uppercase for "ID" and sentence-case otherwise ([@NoRi2909] - [#134815]) +- Add heat meter to Powerfox integration ([@klaasnicolaas] - [#134799]) +- Add Decorquip virtual motion blinds integration ([@starkillerOG] - [#134402]) +- Bump pymodbus version to 3.8.3 ([@wlcrs] - [#134809]) +- fix typo "looses" to "loses" in MQTT configuration message ([@GlennReilly] - [#134894]) +- Add extra prompt to assist pipeline and conversation ([@balloob] - [#124743]) +- Bump py-synologydsm-api to 2.6.0 ([@mib1185] - [#134914]) +- Handle discovering user configured Wyoming flow ([@balloob] - [#134916]) +- Bump pylutron-caseta to 0.23.0 ([@eclair4151] - [#134906]) +- Remove excessive newline code, fix "ID", enhance descriptions ([@NoRi2909] - [#134920]) +- Add device trackers to enabled_by_default fixture ([@zweckj] - [#134446]) +- Remove deprecated hdr switch from reolink ([@gjohansson-ST] - [#134924]) +- Remove deprecated config entry import from bluesound ([@gjohansson-ST] - [#134926]) +- Add support for extra_system_prompt to OpenAI ([@balloob] - [#134931]) +- Migrate to using aiohttp-asyncmdnsresolver for aiohttp resolver ([@bdraco] - [#134830]) +- Add device tracker test for Vodafone Station ([@chemelli74] - [#134334]) +- Fix spelling of "ID", slightly reword action descriptions ([@NoRi2909] - [#134778]) +- UnifiProtect Refactor light control methods to use new API ([@RaHehl] - [#134625]) +- add proxy view for unifiprotect to grab snapshot at specific time ([@EliSchleifer] - [#133546]) +- Update Shelly integration: Remove double "Error fetching ..." from error messages ([@davidrapan] - [#134950]) +- Bump renault-api to 0.2.9 ([@kelyaenn] - [#134858]) +- Bump zeroconf to 0.137.2 ([@bdraco] - [#134942]) +- Change "id" to uppercase for consistency ([@NoRi2909] - [#134971]) +- Use sentence case, capitalize "IP Secure" and "ID" ([@NoRi2909] - [#134966]) +- Simplify onewire config-flow ([@epenet] - [#134952]) +- Set parallel-updates and scan-interval explicitly in onewire ([@epenet] - [#134953]) +- Update roborock tests to only load the platform under test ([@allenporter] - [#134694]) +- Update HEOS Quality Scale docs-related items ([@andrewsayre] - [#134466]) +- Fix DSMR migration ([@emontnemery] - [#134990]) +- Simplify roborock coordinator ([@allenporter] - [#134700]) +- Add reconfigure to onewire ([@epenet] - [#134996]) +- Validate device id when adding or updating entity registry entry ([@emontnemery] - [#134982]) +- Set PARALLEL_UPDATES to 1 in onewire ([@epenet] - [#135006]) +- Use standard "entity_registry_enabled_by_default" fixture ([@chemelli74] - [#134962]) +- Add total cleaning count sensor to Roborock ([@Lash-L] - [#135015]) +- Add Controller state sensor to screenlogic ([@dieselrabbit] - [#133827]) +- Move OneWireConfigEntry type definition ([@epenet] - [#135004]) +- Improve logic for event polling duration in Overkiz ([@iMicknl] - [#133617]) +- Bump voluptuous openapi to 0.0.6 ([@allenporter] - [#134998]) +- Add data description translations to all tplink config flow steps ([@sdb9696] - [#135022]) +- Improve Huawei LTE suspend integration service description ([@NoRi2909] - [#135021]) +- Add new sensors to fyta ([@dontinelli] - [#135032]) +- Add weather warning sensor to IPMA ([@dgomes] - [#134054]) +- Bump dbus-fast to 2.28.0 ([@bdraco] - [#135049]) +- Fix climate react type ([@gjohansson-ST] - [#135030]) +- Improve type hints in onewire tests ([@epenet] - [#134993]) +- Delete KNX config storage when removing the integration ([@farmio] - [#135071]) +- Update pyheos to 0.9.0 ([@andrewsayre] - [#134947]) +- Add Reolink unexpected error translation ([@starkillerOG] - [#134807]) +- Cleanup LG webOS TV name ([@thecode] - [#135028]) +- Fix DSMR migration ([@emontnemery] - [#135068]) +- TotalConnect improved config flow and test before setup ([@austinmroczek] - [#133852]) +- Remove rounding from onewire sensors ([@epenet] - [#135095]) +- Add quality_scale file to onewire ([@epenet] - [#134951]) +- Add binary sensors to fyta ([@dontinelli] - [#134900]) +- Add satel integra switches and alarm control panels unique_id ([@david1024pl] - [#129636]) +- Update addition logger string in fan.py ([@farkasdi] - [#135098]) +- Add quality_scale.yaml to Minecraft Server ([@elmurato] - [#132551]) +- Add PARALLEL_UPDATES constant to tplink integration platforms ([@sdb9696] - [#135083]) +- Raise HomeAssistantError from tplink light effect service ([@sdb9696] - [#135081]) +- Refactor patching in onewire tests ([@epenet] - [#135070]) +- Split simple and recovery in onewire config-flow user tests ([@epenet] - [#135102]) +- Fix hvac_modes never empty in Sensibo ([@gjohansson-ST] - [#135029]) +- Improve onewire options flow tests ([@epenet] - [#135109]) +- Improve holidays config form and naming ([@bors-ltd] - [#133663]) +- Update enphase_envoy test_init to use str for unique_id and test for loaded config entry ([@catsmanac] - [#133810]) +- Add quality scale file to tplink integration ([@sdb9696] - [#135017]) +- Remove enphase_envoy config flow tests that make no sense ([@catsmanac] - [#133833]) +- Add suggested precision for Airthings BLE integration ([@LaStrada] - [#134985]) +- Add LetPot integration ([@jpelgrom] - [#134925]) +- Set PARALLEL_UPDATES in LG webOS TV ([@thecode] - [#135135]) +- Add DataUpdateCoordinator to bluesound integration ([@LouisChrist] - [#135125]) +- Use is in FlowResultType enum comparison in integration scaffold tests ([@jpelgrom] - [#135133]) +- Impove LG webOS TV tests quality ([@thecode] - [#135130]) +- Add support for Lutron Wood Tilt Blinds ([@eclair4151] - [#135057]) +- Render select entity unavailable when active feature is missing in Sensibo ([@gjohansson-ST] - [#135031]) +- Change minimum SQLite version to 3.40.1 ([@gjohansson-ST] - [#135042]) +- Make devices dynamic in Sensibo ([@gjohansson-ST] - [#134935]) +- Deprecate StarLine engine switch attributes ([@Anonym-tsk] - [#133958]) +- Bump zeroconf to 0.138.1 ([@bdraco] - [#135148]) +- Deprecate raw_value attribute in onewire entity ([@epenet] - [#135171]) +- Mark docs-installation-parameters and docs-removal-instructions for inexogy as done ([@jpbede] - [#135126]) +- Add outside temperature sensor to fujitsu_fglair ([@crevetor] - [#130717]) +- Move OneWire PLATFORM constant back to init ([@epenet] - [#135172]) +- Add and cleanup tplink translations ([@sdb9696] - [#135120]) +- Add uuid as unique_id to config entries for Cookidoo ([@miaucl] - [#134831]) +- Use snapshot_platform helper in onewire tests ([@epenet] - [#135176]) +- Set PARALLEL_UPDATES to 0 in onewire ([@epenet] - [#135178]) +- Add yue language support to Google Translate TTS ([@beginner2047] - [#134480]) +- Fix stale docstrings in tplink integration ([@sdb9696] - [#135183]) +- Update scaffold to use internal _PLATFORM constant ([@epenet] - [#135177]) +- Add select platform to onewire ([@epenet] - [#135181]) +- Add event entities to Overseerr ([@joostlek] - [#134975]) +- Update title and description for setup dialog of thethingsnetwork ([@NoRi2909] - [#134954]) +- add support for dimming/brightening X10 lamps ([@kereyroper] - [#130196]) +- No need to set unique_id in enphase_envoy reauth step ([@catsmanac] - [#133615]) +- Update module properties on module scan for LCN ([@alengwenus] - [#135018]) +- Use friendly names in add_to_playlist action, fix "ID" ([@NoRi2909] - [#134978]) +- Avoid unnecessary executor calls in onewire ([@epenet] - [#135187]) +- Allow to process kelvin as color_temp for mqtt basic light ([@jbouwh] - [#133953]) +- Allow unregistering LLM APIs ([@allenporter] - [#135162]) +- Make generated files appear as generated ([@KapJI] - [#134991]) +- Use typed config entry in tplink coordinator ([@sdb9696] - [#135182]) +- Refactor onewire hub ([@epenet] - [#135186]) +- Fix LG webOS TV init test coverage ([@thecode] - [#135194]) +- Allow to process kelvin as color_temp for mqtt json light ([@jbouwh] - [#133955]) +- Add streaming sensors to Teslemetry ([@Bre77] - [#132783]) +- Bump zeroconf to 0.139.0 ([@bdraco] - [#135213]) +- Use remove-prefix/suffix introduced in Python 3.9 ([@epenet] - [#135206]) +- Add exception-translations rule to quality_scale pytest validation ([@epenet] - [#131914]) +- Add support for Shelly BLU TRV ([@chemelli74] - [#128439]) +- Bump anyio to 4.8.0 ([@bdraco] - [#135224]) +- Refactor Vodafone Station tests ([@chemelli74] - [#134956]) +- Bump fnv-hash-fast to 1.1.0 ([@bdraco] - [#135237]) +- Expand Squeezebox auth test for config_flow to finish on create_entry ([@peteS-UK] - [#133612]) +- Remove per engine max bind vars ([@bdraco] - [#135153]) +- Make description of alarm_arm_vacation consistent ([@NoRi2909] - [#135257]) +- Improve formatting in core files ([@epenet] - [#135256]) +- Split long strings in components ([@epenet] - [#135263]) +- Combine short byte strings in xiaomi_ble tests ([@epenet] - [#135268]) +- Fix LG webOS TV media player test coverage ([@thecode] - [#135225]) +- Improve formatting in component test files ([@epenet] - [#135267]) +- Change 'entity_id' to UI-friendly 'Entity ID', fix spelling of "setpoint" ([@NoRi2909] - [#135234]) +- Combine short strings in components ([@epenet] - [#135265]) +- Split long strings in stream hls tests ([@epenet] - [#135271]) +- Velbus light platform code cleanup ([@cereal2nd] - [#134482]) +- Fix incorrect test in test_core_config ([@epenet] - [#135260]) +- Add model_id and serial_number to onewire device info ([@epenet] - [#135279]) +- Allow to process kelvin as color_temp for mqtt template light ([@jbouwh] - [#133957]) +- Improve formatting in component files ([@epenet] - [#135261]) +- Discover new devices at runtime in onewire ([@epenet] - [#135199]) +- Simplify vesync init loading ([@cdnninja] - [#135052]) +- Move LG webOS TV actions to entitiy services ([@thecode] - [#135285]) +- Adjust HomeWizard to use updated python-homewizard-energy library ([@DCSBL] - [#135046]) +- Smaller grammar fixes, replace 'entity_id' with UI-friendly 'ID' ([@NoRi2909] - [#135236]) +- Mark FGLAir entities unavailable if they are reporting to be offline ([@crevetor] - [#135202]) +- Bump pypalazzetti to 0.1.16 ([@dotvav] - [#135269]) +- Replace 'entity_id' with UI-friendly, localizable 'entity ID' ([@NoRi2909] - [#135232]) +- Add USB-PD Mode select entity to IronOS integration ([@tr4nt0r] - [#134901]) +- Grammar and consistency fixes in hdmi_cec strings ([@NoRi2909] - [#135292]) +- Bump aioshelly to version 12.3.1 ([@bieniu] - [#135299]) +- Use runtime_data in LG webOS TV ([@thecode] - [#135301]) +- Fix typos and inconsistent spelling of "tedee" brand name ([@NoRi2909] - [#135305]) +- Fix typos, replace duplicated strings with references ([@NoRi2909] - [#135303]) +- Don't store uv's lockfile in hassfest image ([@edenhaus] - [#135214]) +- Fix Habitica gems/hourglass sensors ([@tr4nt0r] - [#135323]) +- Use LOGGER from homewizard.const instead per-file loggers ([@DCSBL] - [#135320]) +- Bump habluetooth to 3.8.0 ([@bdraco] - [#135322]) +- Extract resolve announcement media ID for AssistSatelliteEntity ([@balloob] - [#134917]) +- Add bluetooth subscribe_advertisements WebSocket API ([@bdraco] - [#134291]) +- Fix spelling of "Log in", fix "outdated student" ([@NoRi2909] - [#135348]) +- Small fixes in setup flow strings, correct sentence-case ([@NoRi2909] - [#135349]) +- Add config flow to NMBS ([@silamon] - [#121548]) +- Fix backup formatting ([@joostlek] - [#135350]) +- Bump actions/upload-artifact from 4.5.0 to 4.6.0 (@dependabot - [#135255]) +- Bump docker/build-push-action from 6.10.0 to 6.11.0 (@dependabot - [#135254]) +- Remove code owner for nmbs ([@silamon] - [#135357]) +- Fix spelling of "Log in …" and "API key" in LOQED integration ([@NoRi2909] - [#135347]) +- Fix Tado config flow ([@erwindouna] - [#135353]) +- Add more typings to nmbs sensor ([@silamon] - [#135359]) +- Palazzetti Quality Scale update after doc improvement ([@dotvav] - [#135277]) +- Bump Teslemetry Stream ([@Bre77] - [#135344]) +- Enable slowly-changing, important diagnostics for connected devices by default ([@lanthaler] - [#134776]) +- Add reconfigure to LG webOS TV ([@thecode] - [#135360]) +- Add @jterrace to onvif integration owners ([@jterrace] - [#135398]) +- Switcher runner child lock support ([@YogevBokobza] - [#133270]) +- Make all three numbered lists consistent, using 1. 1. 1. for the syntax ([@NoRi2909] - [#135400]) +- Add additional Tapo ONVIF Person/Vehicle/Line/Tamper/Intrusion events ([@jterrace] - [#135399]) +- Reword action descriptions for better translations in Teslemetry ([@NoRi2909] - [#135370]) +- Add sensors for inventory items to Habitica ([@tr4nt0r] - [#135331]) +- Bump pyheos to 1.0.0 ([@andrewsayre] - [#135415]) +- Fix config entries typo s/entruis/entries/ ([@tronikos] - [#135431]) +- Fix translation string: numbering in list ([@WaterInTheLake] - [#135441]) +- Update translations and error messages in Bring! integration ([@tr4nt0r] - [#135455]) +- Fix strings for the Google integrations ([@tronikos] - [#135445]) +- Add current and voltage for plugs to switchbot_cloud ([@SeraphicRav] - [#135458]) +- Refactor upcloud to use config entry runtime data ([@scop] - [#135449]) +- Add bluetooth API to remove scanners that are no longer used ([@bdraco] - [#135408]) +- Ensure Shelly cleanups Bluetooth scanner data upon removal ([@bdraco] - [#135472]) +- Ensure ESPHome cleanups Bluetooth scanner data upon removal ([@bdraco] - [#135470]) +- Bump github/codeql-action from 3.28.0 to 3.28.1 (@dependabot - [#135492]) +- Bump uv to 0.5.18 ([@mib1185] - [#135454]) +- Add missing `total active returned energy` sensor for Shelly Mini PM Gen3 ([@bieniu] - [#135433]) +- Fix typing in zha update entity ([@emontnemery] - [#135500]) +- Add remain, running, schedule time sensors to LG ThinQ ([@LG-ThinQ-Integration] - [#131133]) +- Rework velbus services to deprecated the interface parameter ([@cereal2nd] - [#134816]) +- Change icon ID name in Lametric ([@joostlek] - [#135368]) +- Add hassio discovery to onewire ([@epenet] - [#135294]) +- Replace "Login …" with "Log in …" in two strings of Habitica integration ([@NoRi2909] - [#135383]) +- Add dhcp discovery to velux ([@pawlizio] - [#135138]) +- Replace "click" with "select" to fit for mobile app ([@NoRi2909] - [#135382]) +- Fix when live status is blank in Telsemetry ([@Bre77] - [#130408]) +- Add kV and MV unit conversion for voltages ([@lschloetterer] - [#135396]) +- TotalConnect update quality_scale with documentation updates ([@austinmroczek] - [#134049]) +- Fix grey dailies with weekly frequency and no weekdays selected in Habitica ([@tr4nt0r] - [#135419]) +- Move HomeWizard API initialisation to async_setup_entry ([@DCSBL] - [#135315]) +- Use proper sentence-case for all strings in azure_event_hub ([@NoRi2909] - [#135328]) +- Replace climate fan speed 'silent' with a button ([@dotvav] - [#135075]) +- Bump pypalazzetti to 0.1.19 ([@dotvav] - [#135465]) +- Refresh token before setting up weheat ([@jesperraemaekers] - [#135264]) +- Refactor config flow tests in generic camera ([@davet2001] - [#134385]) +- Small fixes in the strings file of the azure_data_explorer integration ([@NoRi2909] - [#135309]) +- Fix typos "Login" > "Log in" and "Setup" > "Set up" ([@NoRi2909] - [#135306]) +- Fix LG webOS TV trigger validation ([@thecode] - [#135312]) +- Update getmac to 0.9.5 ([@cdce8p] - [#135506]) +- Improve tests of energyzero integration ([@klaasnicolaas] - [#133452]) +- Refactor number/select to use common method in IronOS ([@tr4nt0r] - [#134173]) +- Revert "Make all three numbered lists consistent, using 1. 1. 1. for the syntax" ([@frenck] - [#135510]) +- Change Trafikverket Train to use station signatures ([@gjohansson-ST] - [#131416]) +- Expose raw PM2.5 in Airgradient ([@gentoo-root] - [#135457]) +- Bump go2rtc recommended version to 1.9.8 ([@edenhaus] - [#135523]) +- Removing unused API file form weheat ([@jesperraemaekers] - [#135518]) +- Palazzetti integration: Add support for additional fans ([@dotvav] - [#135377]) +- Bump velbusaio to 2025.1.0 ([@cereal2nd] - [#135525]) +- Deprecate sensors in Habitica integration ([@tr4nt0r] - [#134036]) +- Add zeroconf discovery to onewire ([@epenet] - [#135295]) +- Refactor the MQTT option and reconfigure flow ([@jbouwh] - [#133342]) +- Bump aioimaplib to 2.0.0 ([@jbouwh] - [#135448]) +- Add humidifier entity for Vesync devices ([@iprak] - [#134333]) +- Cleanup tplink test framework ([@sdb9696] - [#135205]) +- Bump smhi-pkg to 1.0.19 ([@gjohansson-ST] - [#135537]) +- Add option to allow to use setpoint instead of override for legacy incomfort RF gateway ([@jbouwh] - [#135143]) +- Register Airzone WebServer device ([@Noltari] - [#135538]) +- Add new integration Qbus ([@Qbus-iot] - [#127280]) +- Velbus update unique-config-entry quality score ([@cereal2nd] - [#135524]) +- Velbus unsubscribe to the status updates on removal ([@cereal2nd] - [#135530]) +- Add quality scale for weheat ([@jesperraemaekers] - [#135384]) +- Velbus add subdevices for din-rail modules ([@cereal2nd] - [#131371]) +- Add person component to strict type checking ([@IgnusG] - [#132754]) +- Add data_descriptions to inexogy config flow ([@jpbede] - [#135536]) +- Set PARALLEL_UPDATES for inexogy ([@jpbede] - [#135545]) +- Fix grammar issue in 'invalid_auth' string ([@NoRi2909] - [#135546]) +- Changed json.schemas.url for devcontainers ([@Master-Guy] - [#135281]) +- Improve improv via BLE log messages ([@emontnemery] - [#135575]) +- Fix deprecated enums ([@arturpragacz] - [#134824]) +- Bump habiticalib to v.0.3.3 ([@tr4nt0r] - [#135551]) +- Set PARALLEL_UPDATES for Weheat ([@jesperraemaekers] - [#135574]) +- Fix nmbs sensor unique_id ([@emontnemery] - [#135576]) +- Add iprak to to vesync code owners ([@iprak] - [#135562]) +- Use percent formatting in logging per guidelines ([@scop] - [#135550]) +- Set inexogy quality scale to silver ([@jpbede] - [#135547]) +- Migrate Velbus to have Entity name ([@cereal2nd] - [#135520]) +- Mark Velbus test coverage as done ([@cereal2nd] - [#135571]) +- Cleanup tedee callbacks ([@zweckj] - [#135577]) +- Bump Weheat to 2025.1.14 ([@jesperraemaekers] - [#135578]) +- Set MQTT quality scale to gold ([@jbouwh] - [#135579]) +- Bump ruff to 0.9.1 ([@joostlek] - [#135197]) +- Bump hass-nabucasa from 0.87.0 to 0.88.1 ([@klejejs] - [#135521]) +- Remove incorrect logging about Unknown device ([@iprak] - [#135585]) +- Unignore ruff rule ISC001 ([@joostlek] - [#135581]) +- Update tplink quality_scale.yaml ([@sdb9696] - [#135209]) +- Match the upstream alt id of the new Levoit air purifier ([@jiriappl] - [#135426]) +- Avoid core documentation url hosted elsewhere ([@joostlek] - [#130513]) +- Reverted async-dependency to todo for Weheat ([@jesperraemaekers] - [#135588]) +- Bump securetar to 2025.1.1 ([@emontnemery] - [#135582]) +- Add streaming binary sensors to Teslemetry ([@Bre77] - [#135248]) +- Add serial number to LaMetric ([@joostlek] - [#135591]) +- Skip fetching deactivated shopping lists in Bring integration ([@tr4nt0r] - [#135336]) +- Adding support for new Lutron RGB tape light ([@RBaragona] - [#130731]) +- Add vesync number platform ([@iprak] - [#135564]) +- Make mqtt integration exports explicit ([@jbouwh] - [#135595]) +- Add entity pictures to Habitica integration ([@tr4nt0r] - [#134179]) +- Rename onewire entity classes ([@epenet] - [#135601]) +- Drop Python 3.12 support ([@frenck] - [#135589]) +- Bump securetar to 2025.1.2 ([@emontnemery] - [#135614]) +- Add `PaddleSwitchPico` (Pico Paddle Remote) device trigger to Lutron Caseta ([@dustMason] - [#135615]) +- More UpCloud config entry refactors ([@scop] - [#135548]) +- Fix spotify typing for Python 3.13 ([@cdce8p] - [#135628]) +- Return OFF in hvac_action for Honeywell climate ([@mkmer] - [#135620]) +- Update mypy-dev to 1.15.0a2 ([@cdce8p] - [#135633]) +- Update Python version for mypy to 3.13 ([@cdce8p] - [#135636]) +- Fix spelling of EnOcean in strings file of the integration ([@NoRi2909] - [#135622]) +- Dynamic devices for Husqvarna Automower ([@Thomas55555] - [#133227]) +- Update buttons in Teslemetry ([@Bre77] - [#135631]) +- Reduce scan interval on SMLIGHT firmware updates ([@tl-sl] - [#135650]) +- Bump pysmlight v0.1.5 ([@tl-sl] - [#135647]) +- Bump homematicip to 1.1.6 ([@hahn-th] - [#135649]) +- Remove unused noqas ([@joostlek] - [#135583]) +- Set MQTT quality scale to platinum ([@jbouwh] - [#135612]) +- Bump aiolifx-themes to v0.6.2 ([@Djelibeybi] - [#135645]) +- Move ZeroconfServiceInfo to service_info helpers ([@epenet] - [#135653]) +- Fix descriptions of send_command action for consistency ([@NoRi2909] - [#135670]) +- Move DhcpServiceInfo to service_info helpers ([@epenet] - [#135658]) +- Improve logging of backup upload errors ([@MartinHjelmare] - [#135672]) +- Move SsdpServiceInfo to service_info helpers ([@epenet] - [#135661]) +- Bump python-otbr-api to 2.7.0 ([@puddly] - [#135638]) +- Add missing camera functions to pylint type hints plugin ([@edenhaus] - [#135676]) +- Move UsbServiceInfo to service_info helpers ([@epenet] - [#135663]) +- Call async_forward_setup_entry after the first refresh in SwitchBot Cloud ([@mckbrmn] - [#135625]) +- Use new ServiceInfo location in components (part 1) ([@epenet] - [#135682]) +- Use new ServiceInfo location in components (part 2) ([@epenet] - [#135685]) +- Use new ServiceInfo location in components (part 3) ([@epenet] - [#135687]) +- Use new ServiceInfo location in sonos ([@epenet] - [#135699]) +- Use new ServiceInfo location in tplink ([@epenet] - [#135700]) +- Use new ServiceInfo location in rainforest_raven ([@epenet] - [#135697]) +- Use new ServiceInfo location in rabbitair ([@epenet] - [#135696]) +- Use new ServiceInfo location in modem_callerid ([@epenet] - [#135695]) +- Use new ServiceInfo location in insteon ([@epenet] - [#135694]) +- Update tplink quality_scale.yaml ([@sdb9696] - [#135705]) +- Add WS command backup/can_decrypt_on_download ([@emontnemery] - [#135662]) +- Bump eheimdigital to 1.0.4 ([@autinerd] - [#135722]) +- Create switches for controlling policy-based routes ([@Ik-12] - [#134473]) +- Add dynamic child device handling to tplink integration ([@sdb9696] - [#135229]) +- Use new ServiceInfo location in wmspro ([@epenet] - [#135702]) +- Use SIP URI for VoIP device identifier ([@jaminh] - [#135603]) +- Slow down polling for Tesla Fleet ([@Bre77] - [#135747]) +- Ensure entity platform in bluetooth tests ([@gjohansson-ST] - [#135716]) +- Add receive backup tests ([@MartinHjelmare] - [#135680]) +- Reword action descriptions to match Home Assistant style ([@NoRi2909] - [#135733]) +- Palazzetti integration: Update integration quality scale ([@dotvav] - [#135752]) +- Ensure entity platform in light tests ([@gjohansson-ST] - [#135724]) +- Bump govee-ble to 0.41.0 ([@bdraco] - [#135750]) +- Reduce USB rescan cooldown from 1 minute to 10 seconds ([@puddly] - [#135712]) +- Use new ServiceInfo location in homeassistant_sky_connect ([@epenet] - [#135693]) +- Use new ServiceInfo location in zwave_js ([@epenet] - [#135704]) +- Return Chat IDs on Telegram Bot ([@tyron] - [#131274]) +- Support decrypting backups when downloading ([@emontnemery] - [#135728]) +- Fix rmtree in translation script on MacOS ([@srescio] - [#129352]) +- Avoid using the backup manager in restore tests ([@MartinHjelmare] - [#135757]) +- Add message_thread_id to telegram_text and telegram_command events ([@DrDonoso] - [#130738]) +- Enable RUF100 ([@joostlek] - [#135760]) +- Use new ServiceInfo location in apple_tv ([@epenet] - [#135688]) +- Bump securetar to 2025.1.3 ([@emontnemery] - [#135762]) +- Change AdGuard Home URL field validator to accept paths ([@maxcabrajac] - [#127957]) +- Add further ventilation-related sensors to ViCare ([@CFenner] - [#131496]) +- Use new ServiceInfo location in esphome ([@epenet] - [#135692]) +- Use new ServiceInfo location in dlna_dmr ([@epenet] - [#135691]) +- Enable RUF022 ([@joostlek] - [#135767]) +- Add temperature and humidity entities to area registry ([@balloob] - [#135423]) +- Fix Vicare patch ([@joostlek] - [#135773]) +- Improve backup decrypt exceptions ([@emontnemery] - [#135765]) +- Improve incomfort coordinator logging ([@jbouwh] - [#135777]) +- Move HomeWizard config options to class ([@DCSBL] - [#135778]) +- Bump youless-api to 2.2.0 ([@gjong] - [#135781]) +- Fix Bang & Olufsen event testing ([@mj23000] - [#135707]) +- Add button to move netatmo cover to preferred position ([@PoppyPop] - [#134722]) +- Add Bluetooth config entries for remote scanners ([@bdraco] - [#135543]) +- Add broadcast intent ([@balloob] - [#135337]) +- Implement a polling fallback for USB monitor ([@puddly] - [#130918]) +- Update aiolifx-themes to 0.6.4 ([@Djelibeybi] - [#135805]) +- Bump govee-ble to 0.42.0 ([@bdraco] - [#135801]) +- USB device add/remove callbacks ([@puddly] - [#131224]) +- Assign entity_category for incomfort entities ([@jbouwh] - [#135807]) +- Improve incomfort test coverage ([@jbouwh] - [#135806]) +- Ensure entity platform in core config tests ([@gjohansson-ST] - [#135729]) +- Remove misleading "Current" in NUT power sensor names ([@thecode] - [#135800]) +- Improve backup store in tests ([@emontnemery] - [#135798]) +- Fix service description to match HA style, fix casing ([@NoRi2909] - [#135797]) +- SMA add serial number in DeviceInfo ([@erwindouna] - [#135809]) +- Fix spelling of "API" and use consistent term "API token" ([@NoRi2909] - [#135795]) +- Bump eheimdigital to 1.0.5 ([@autinerd] - [#135802]) +- Bump SMA to 0.7.5 ([@erwindouna] - [#135799]) +- Several strings fixes in the emoncms integration ([@NoRi2909] - [#135792]) +- Ensure entity platform in media_player tests ([@gjohansson-ST] - [#135788]) +- Ensure entity platform in light tests ([@gjohansson-ST] - [#135787]) +- Ensure entity platform in vacuum tests ([@gjohansson-ST] - [#135786]) +- Bump `imgw_pib` to version 1.0.9 and remove hydrological detail entities ([@bieniu] - [#134668]) +- Enable more RUF rules ([@joostlek] - [#135770]) +- SMA update code owners ([@erwindouna] - [#135812]) +- New paint_theme service added to the LIFX integration ([@Djelibeybi] - [#135667]) +- Bump dbus-fast to 2.29.0 ([@bdraco] - [#135804]) +- Small cleanups to lifx services to reduce code ([@bdraco] - [#135817]) +- Bump zeroconf to 0.140.1 ([@bdraco] - [#135815]) +- Ensure entity platform in blackbird tests ([@gjohansson-ST] - [#135715]) +- Allow is_state_attr to check attributes for None ([@Petro31] - [#132879]) +- Ensure entity platform in alert tests ([@gjohansson-ST] - [#135714]) +- Ensure entity platform in universal tests ([@gjohansson-ST] - [#135727]) +- Ensure entity platform in mochad tests ([@gjohansson-ST] - [#135725]) +- Ensure entity platform in kira tests ([@gjohansson-ST] - [#135723]) +- Ensure entity platform in homeassistant tests ([@gjohansson-ST] - [#135721]) +- Use new syntax for TypeVar defaults ([@cdce8p] - [#135780]) +- Ensure entity platform in google_wifi tests ([@gjohansson-ST] - [#135720]) +- Ensure entity platform in google_assistant tests ([@gjohansson-ST] - [#135719]) +- Ensure entity platform in dsmr_reader tests ([@gjohansson-ST] - [#135718]) +- Use new ServiceInfo location in bosch_shc ([@epenet] - [#135689]) +- Add 'silent' to HTML5_SHOWNOTIFICATION_PARAMETERS ([@redge76] - [#135709]) +- Update quality scale docs-installation-parameters rule for IronOS integration ([@tr4nt0r] - [#133318]) +- Reduce duplicate code in the Bluetooth WebSocket API ([@bdraco] - [#135808]) +- Add BMW quality scale details ([@rikroe] - [#132017]) +- Improve BMW test quality ([@rikroe] - [#133704]) +- Add model option to speak action for ElevenLabs ([@sorgfresser] - [#133902]) +- Enable RUF021 ([@joostlek] - [#135832]) +- Add Energy History to Tesla Fleet ([@Bre77] - [#126878]) +- Set target value on LCN regulator lock ([@alengwenus] - [#133870]) +- Add media position & seek to Russound RIO ([@noahhusby] - [#134372]) +- Enable RUF023 ([@joostlek] - [#135830]) +- Enable RUF101 ([@joostlek] - [#135835]) +- Homee: fix cover if it has no up/down attribute ([@Taraman17] - [#135563]) +- Clarify action descriptions regarding Lost device sound and state ([@NoRi2909] - [#134277]) +- Plugwise test-code improvements ([@bouwew] - [#134193]) +- Add support for EvoHomeController in Overkiz ([@iMicknl] - [#133777]) +- Fix description of "x10_all_units_off" action ([@NoRi2909] - [#135000]) +- Log errors in opower ([@tronikos] - [#135497]) +- Add streaming to Teslemetry cover platform ([@Bre77] - [#135660]) +- Bump Weheat to 2025.1.15 ([@jesperraemaekers] - [#135626]) +- Update yolink "play on speaker hub" action to allow optional values (to match YoLink API) ([@mxr] - [#133099]) +- Add doorbell event to homematicip_cloud ([@hahn-th] - [#133269]) +- Fix several issues in a string of IHC integration ([@NoRi2909] - [#135618]) +- Add zeroconf dependency to devolo Home Network manifest ([@Shutgun] - [#135708]) +- Fix "set" / "sets" in action names and descriptions, spelling of "dB" ([@NoRi2909] - [#135659]) +- Add missing data_descriptions to strings.json for LCN ([@alengwenus] - [#135674]) +- Fix humidifier on off status update ([@iprak] - [#135743]) +- Fix flaky test in acmeda ([@epenet] - [#135846]) +- Remove call to get_serial_by_id in homeassistant_sky_connect ([@epenet] - [#135751]) +- Validate config entry when adding or updating entity registry entry ([@emontnemery] - [#135067]) +- Remove not needed name from config flow in SMHI ([@gjohansson-ST] - [#134841]) +- Add overload for async singleton call with HassKey ([@cdce8p] - [#134059]) +- Use new ServiceInfo location in devolo_home_network ([@epenet] - [#135690]) +- Bump aioesphomeapi to 28.0.1 ([@bdraco] - [#135869]) +- Use new ServiceInfo location in zha ([@epenet] - [#135703]) +- Bump fnv-hash-fast to 1.2.2 ([@bdraco] - [#135872]) +- Bump habluetooth to 3.9.0 ([@bdraco] - [#135877]) +- Bump bluetooth-data-tools to 1.22.0 ([@bdraco] - [#135879]) +- Bump ulid-transform to 1.2.0 ([@bdraco] - [#135882]) +- Bump dbus-fast to 2.30.2 ([@bdraco] - [#135874]) +- Add BThome hold press event ([@Ernst79] - [#135871]) +- Record IQS for Russound RNET ([@noahhusby] - [#134692]) +- Fix typo in Opower log message ([@tronikos] - [#135909]) +- Fix bmw_connected_drive tests ([@zweckj] - [#135911]) +- Use runtime_data in Opower ([@tronikos] - [#135910]) +- Set parallel-updates in Habitica quality scale record ([@tr4nt0r] - [#135901]) +- Bump Teslemetry Stream to 0.6.6 ([@Bre77] - [#135905]) +- Increase test coverage in Habitica integration ([@tr4nt0r] - [#135896]) +- Bump pylitterbot to 2024.0.0 ([@natekspencer] - [#135891]) +- Fix imgw_pib tests ([@zweckj] - [#135913]) +- Add reauth flow to LetPot integration ([@jpelgrom] - [#135734]) +- Increase test coverage for IMGW-PIB ([@bieniu] - [#135915]) +- Remove asserting name in tts test (no entity platform) ([@gjohansson-ST] - [#135726]) +- Set strict-typing in Habitica quality scale record ([@tr4nt0r] - [#135899]) +- Fix acmeda pytest usefixtures spelling ([@cdce8p] - [#135919]) +- Fix DeprecationWarnings in mcp_server ([@cdce8p] - [#135927]) +- Fix aiodns DeprecationWarning in tests ([@cdce8p] - [#135921]) +- Use HassKey for assist_pipeline singleton ([@cdce8p] - [#135875]) +- Fix inconsistently spelled occurrences of "ID" in telegram_bot integration ([@NoRi2909] - [#135928]) +- Bump bleak-retry-connector to 3.7.0 ([@bdraco] - [#135939]) +- Replace additional deprecated USBServiceInfo imports ([@cdce8p] - [#135953]) +- Fix unicode chars in zha tests ([@cdce8p] - [#135954]) +- Bump bluetooth-adapters to 0.21.0 ([@bdraco] - [#135957]) +- Fix duplicated "effect" in Speed field descriptions of flux_led ([@NoRi2909] - [#135948]) +- Add shared history for conversation agents ([@balloob] - [#135903]) +- Improve backup store in tests ([@emontnemery] - [#135974]) +- Vesync switch humidifier to property ([@cdnninja] - [#135949]) +- Improve remote Bluetooth scanner manufacturer data ([@bdraco] - [#135961]) +- Change 'device_id' to translatable 'device ID', fix typos in LCN ([@NoRi2909] - [#135978]) +- Add power switch only if it is available at Home Connect ([@Diegorro98] - [#135930]) +- Improve program related sensors at Home Connect ([@Diegorro98] - [#135929]) +- Fix grammar and plural handling in action descriptions ([@NoRi2909] - [#135654]) +- Set dependency-transparency and async-dependency in Habitica IQS ([@tr4nt0r] - [#135902]) +- Fix KNX default state updater option ([@farmio] - [#135611]) +- Add streaming to device tracker platform in Teslemetry ([@Bre77] - [#135962]) +- Further clarify the meaning of Sensibo's Climate React mode ([@NoRi2909] - [#135833]) +- Add type annotations to stiebel eltron component ([@ThyMYthOS] - [#135228]) +- Rework enigma2 tests ([@autinerd] - [#135475]) +- SMA add diagnostics ([@erwindouna] - [#135852]) +- Fix name and descriptions of actions in EZVIZ integration etc. ([@NoRi2909] - [#135858]) +- Move integration setup to coordinator `_async_setup` in Bring ([@tr4nt0r] - [#135711]) +- Remove unnecessary "title" keys to use default setup flow instead ([@NoRi2909] - [#135512]) +- Fix fan speed in auto mode in ViCare integration ([@CFenner] - [#134256]) +- Improve descriptions in list_notifications action, fix casing ([@NoRi2909] - [#135838]) +- Refactor SwitchBot Cloud make_device_data ([@mckbrmn] - [#135698]) +- Add re-authentication flow to incomfort integration ([@jbouwh] - [#135861]) +- Fix HEOS device information ([@andrewsayre] - [#135940]) +- Fix unset coordinator in Switchbot cloud ([@joostlek] - [#135985]) +- Add re-configure flow incomfort integration ([@jbouwh] - [#135887]) +- Cleanup incomfort translation strings ([@jbouwh] - [#135991]) +- Add diagnostics feature to incomfort integration ([@jbouwh] - [#136009]) +- Disable noisy diagnostic incomfort sensors by default ([@jbouwh] - [#135992]) +- Make strings of create_scene action UI- and translation-friendly ([@NoRi2909] - [#136004]) +- Add incomfort heater serialnr to device info ([@jbouwh] - [#136012]) +- Improve exception handling in Habitica integration ([@tr4nt0r] - [#135950]) +- Fix velbus via devices ([@cereal2nd] - [#135986]) +- Do not base power switch state on appliance's operation state at Home Connect ([@Diegorro98] - [#135932]) +- Bump pydrawise to 2025.1.0 ([@dknowles2] - [#135998]) +- Migrate tests from OpenAI to conversation integration ([@balloob] - [#135963]) +- Update numpy to 2.2.2 ([@cdce8p] - [#135982]) +- Correct translation key for data bits in rfxtrx ([@elupus] - [#135990]) +- Bumb python-homewizard-energy to 8.1.0 ([@DCSBL] - [#136016]) +- Set friendly name for PT2262 sensors to masked name ([@elupus] - [#135988]) +- Fix Slack file upload ([@jsuar] - [#135818]) +- Fix sentence-casing in PurpleAir integration strings ([@NoRi2909] - [#135981]) +- Implement cloudhooks for Overseerr ([@joostlek] - [#134680]) +- Ensure entity platform in camera tests ([@gjohansson-ST] - [#135918]) +- Ensure entity platform in cover tests ([@gjohansson-ST] - [#135917]) +- Add reconfigure flow to Trafikverket Train ([@gjohansson-ST] - [#136000]) +- Bump docker/build-push-action from 6.11.0 to 6.12.0 (@dependabot - [#135749]) +- Bump thermopro-ble to 0.10.1 ([@bdraco] - [#136041]) +- Bump habluetooth to 3.9.2 ([@bdraco] - [#136042]) +- Enable RUF032 ([@joostlek] - [#135836]) +- Use LLM fallback when local matching matches intent but not targets ([@balloob] - [#136045]) +- Add diagnostics platform to IronOS integration ([@tr4nt0r] - [#136040]) +- Add reconfiguration flow to Habitica ([@tr4nt0r] - [#136038]) +- Remove redundant device update code ([@arturpragacz] - [#134100]) +- Use new SsdpServiceInfo location in remaining components ([@epenet] - [#136053]) +- Fix casing of "client" and "ID" in transmission integration ([@NoRi2909] - [#136071]) +- Make the time for automated backups configurable ([@emontnemery] - [#135825]) +- Allow backup writer to update progress during restore ([@emontnemery] - [#135975]) +- Use new ServiceInfo location in component tests (part 1) ([@epenet] - [#136057]) +- Use new ServiceInfo location in component tests (part 2) ([@epenet] - [#136062]) +- Use new ServiceInfo location in component tests (part 3) ([@epenet] - [#136064]) +- Use new ServiceInfo location in component tests (part 4) ([@epenet] - [#136065]) +- Improve user interface strings in opentherm_gw ([@NoRi2909] - [#136078]) +- Use new ServiceInfo location in core tests ([@epenet] - [#136067]) +- Fix spelling of "ID" in hyperion user strings ([@NoRi2909] - [#136082]) +- Replace `targets` key with UI name 'Targets' in media_player.join action ([@NoRi2909] - [#136063]) +- Prevent pylint out-of-memory failures ([@PaulSD] - [#136020]) +- Use fixtures for Network component tests ([@abmantis] - [#135220]) +- Improve conversation typing ([@cdce8p] - [#136084]) +- Set configuration url to overseerr instance ([@joostlek] - [#136085]) +- Bump uv to 0.5.21 ([@edenhaus] - [#136086]) +- Update pylint to 3.3.3 and astroid to 3.3.8 ([@cdce8p] - [#136090]) +- Fix Overseerr event types translations ([@joostlek] - [#136096]) +- Add diagnostics to Overseerr ([@joostlek] - [#136094]) +- Enable Ruff B024 ([@autinerd] - [#136088]) +- Bump velbusaio to 2025.1.1 ([@cereal2nd] - [#136089]) +- Enable dynamic child devices for tplink module entities ([@sdb9696] - [#135822]) +- Bump aiowebostv to 0.5.0 ([@thecode] - [#136097]) +- Add integration_type to HEOS ([@andrewsayre] - [#136105]) +- Fix index in incomfort diagnostics generator ([@jbouwh] - [#136108]) +- Fix upload service response for google_photos ([@autinerd] - [#136106]) +- Add icon to overseerr ([@joostlek] - [#136110]) +- Bump ayla-iot-unofficial to 1.4.5 ([@thecode] - [#136099]) +- Bump python-overseerr to 0.6.0 ([@joostlek] - [#136104]) +- Raise exceptions in HEOS service actions ([@andrewsayre] - [#136049]) +- Enable Ruff B035 ([@autinerd] - [#135883]) +- Remove yaml config fixture from HEOS tests ([@andrewsayre] - [#136123]) +- Add additional entities for Shelly BLU TRV ([@bieniu] - [#135244]) +- Add scheduled envoy firmware checks to enphase_envoy coordinator ([@catsmanac] - [#136102]) +- Bump letpot to 0.3.0 ([@jpelgrom] - [#136133]) +- Add myself to Roborock codeowners ([@allenporter] - [#136134]) +- Add data descriptions for enphase_envoy config flows. ([@catsmanac] - [#136120]) +- Remove not needed warning in Z-Wave ([@cdnninja] - [#136006]) +- Bump actions/stale from 9.0.0 to 9.1.0 (@dependabot - [#136145]) +- Fix buttons in Teslemetry ([@Bre77] - [#136142]) +- Update HEOS tests to not patch internals ([@andrewsayre] - [#136136]) +- Add support for custom weekly backup schedule ([@emontnemery] - [#136079]) +- Bump Devialet to 1.5.7 ([@fwestenberg] - [#136114]) +- Prefer from...import...as over import...as in core tests ([@epenet] - [#136146]) +- Add value is not to Matter discovery schema logic ([@marcelveldt] - [#136157]) +- Clean up entity registry imports in Shelly tests ([@bieniu] - [#136159]) +- Adjust to recommended propcache.api import paths ([@scop] - [#136150]) +- Capitalize "Homematic" brand name and 2 more user string fixes ([@NoRi2909] - [#136113]) +- Fix typo in enphase_envoy data description ([@catsmanac] - [#136164]) +- Add support for Bot in SwitchBot Cloud ([@mckbrmn] - [#135606]) +- Add service backup.create_automatic ([@emontnemery] - [#136152]) +- Satellite announcement to track original media id ([@balloob] - [#136141]) +- Prepare backup store to read version 2 ([@emontnemery] - [#136149]) +- Gate update.install backup parameter by supported feature ([@emontnemery] - [#136169]) +- Homee sensor ([@Taraman17] - [#135447]) +- Add data_description to switchbot translations ([@huyuwei1996] - [#136148]) +- Bumb python-homewizard-energy to 8.1.1 ([@DCSBL] - [#136170]) +- Use HassKey for hassio component data ([@emontnemery] - [#136172]) +- Add more util aliases to import conventions ([@epenet] - [#136153]) +- Update HEOS tests to not interact directly with integration internals ([@andrewsayre] - [#136177]) +- Set PARALLEL_UPDATES for HEOS media_player ([@andrewsayre] - [#136178]) +- Voip migrate entities ([@balloob] - [#136140]) +- Fix casing and spelling in user-facing strings of homematicip_cloud ([@NoRi2909] - [#136188]) +- Add strings and state attrs for ZHA 3 Phase current ([@abmantis] - [#132871]) +- Fix sentence-casing in user-facing strings of nmap_tracker ([@NoRi2909] - [#136195]) +- Cleanup litterrobot switch entity ([@natekspencer] - [#136199]) +- Bump bleak-retry-connector to 3.8.0 ([@bdraco] - [#136203]) +- Add button to reset Litter-Robot 4 ([@natekspencer] - [#136191]) +- Remove excessive newlines from envisalink strings ([@NoRi2909] - [#136194]) +- Remove excessive newline codes from strings of nissan_leaf ([@NoRi2909] - [#136197]) +- Remove extra_state_attributes from Litter-Robot vacuum entities ([@natekspencer] - [#136196]) +- Bump habluetooth to 3.10.0 ([@bdraco] - [#136210]) +- Bump ollama to 0.4.7 ([@Diegorro98] - [#136212]) +- Bump bleak-esphome to 2.1.0 ([@bdraco] - [#136214]) +- Add Eve Thermo TRV Matter features ([@krakonos1602] - [#135635]) +- Fix recorder fixture typing ([@cdce8p] - [#136174]) +- Bump github/codeql-action from 3.28.1 to 3.28.2 (@dependabot - [#136225]) +- Add dhcp discovery to incomfort integration ([@jbouwh] - [#136027]) +- Use icon translations for enphase_envoy. ([@catsmanac] - [#136190]) +- Bump bluetooth-adapters to 0.21.1 ([@bdraco] - [#136220]) +- Bump habluetooth to 3.11.2 ([@bdraco] - [#136221]) +- Use kw_only attribute for remaining entity descriptions in litterrobot ([@natekspencer] - [#136202]) +- Make description of hdmi_cec.select_device action consistent ([@NoRi2909] - [#136228]) +- Add repeat feature to HEOS media player ([@andrewsayre] - [#136180]) +- Handle empty string `BatReplacementDescription` from Matter attribute value ([@lboue] - [#134457]) +- Fix passing value to pymodbus low level function ([@wlcrs] - [#135108]) +- Update LG webOS TV IQS ([@thecode] - [#135509]) +- Bump httpx to 0.28.1, httpcore to 1.0.7 along with required deps ([@bdraco] - [#133840]) +- Add quality_scale file to litterrobot ([@natekspencer] - [#135904]) +- Handle invalid auth in Overseerr ([@joostlek] - [#136243]) +- Replace field keys in descriptions with translatable friendly names ([@NoRi2909] - [#136230]) +- Bump PyViCare to 2.41.0 ([@CFenner] - [#136231]) +- Add reauth flow to Overseerr ([@joostlek] - [#136247]) +- Record IQS for Switchbot ([@huyuwei1996] - [#136058]) +- Add reconfigure flow to Overseerr ([@joostlek] - [#136248]) +- Clean up attributes of Overseerr event entity ([@joostlek] - [#136251]) +- Improve type hints in template helper ([@epenet] - [#136253]) +- Allow multiple Airzone entries with different System IDs ([@Noltari] - [#135397]) +- Indicate in WS API when scheduling additional automatic backup ([@emontnemery] - [#136155]) +- Bump ohmepy to 1.2.4 ([@dan-r] - [#136270]) +- Only add Overseerr event if we are push based ([@joostlek] - [#136258]) +- Set enphase_envoy CT Status flags entity_category to diagnostics. ([@catsmanac] - [#136241]) +- Provide beta release note for Shelly RPC devices ([@bieniu] - [#136154]) +- Bump python-linkplay to v0.1.3 ([@silamon] - [#136267]) +- Bump bleak-esphome to 2.1.1 ([@bdraco] - [#136277]) +- Remove myself from ibeacon codeowners ([@bdraco] - [#136280]) +- Move brightness icon map to icons.json ([@natekspencer] - [#136201]) +- Bump pyHomee to 1.2.3 ([@Taraman17] - [#136213]) +- Bump habluetooth to 3.12.0 ([@bdraco] - [#136281]) +- Cleanup litterrobot select entity ([@natekspencer] - [#136282]) +- Implement Coordinator for HEOS (initial plumbing) ([@andrewsayre] - [#136205]) +- Add number platform to ohme ([@dan-r] - [#136271]) +- Convert LitterRobotHub to a DataUpdateCoordinator ([@natekspencer] - [#136283]) +- Improve type hints in benchmark script ([@epenet] - [#136259]) +- ping: Suppress ProcessLookupError on timeout ([@tswsl1989] - [#134281]) +- Allow time triggers with offsets to use input_datetimes ([@Petro31] - [#131550]) +- Cleanup litterrobot sensor entity ([@natekspencer] - [#136287]) +- Bump incomfort-client to v0.6.7 ([@jbouwh] - [#136285]) +- Revert "Add Tuya based bluetooth lights" ([@rwalker777] - [#133386]) +- Add TP-Link Tapo pet detection to onvif parsers ([@jterrace] - [#136303]) +- Bump onvif-zeep-async to 3.2.5 ([@bdraco] - [#136299]) +- Avoid useless data conversion in sonos config flow ([@bdraco] - [#136294]) +- Bump zeroconf to 0.141.0 ([@bdraco] - [#136292]) +- Bump led-ble to 1.1.4 ([@bdraco] - [#136301]) +- Standardize DOMAIN usage in litterrobot tests ([@natekspencer] - [#136290]) +- Add time platform to ohme ([@dan-r] - [#136289]) +- Fix grammar of OSO auth and action descriptions ([@NoRi2909] - [#136312]) +- Bump github/codeql-action from 3.28.2 to 3.28.3 (@dependabot - [#136308]) +- Bump dawidd6/action-download-artifact from 7 to 8 (@dependabot - [#136309]) +- Bump actions/attest-build-provenance from 2.1.0 to 2.2.0 (@dependabot - [#136307]) +- Bump codecov/codecov-action from 5.1.2 to 5.2.0 (@dependabot - [#136306]) +- Fix handling of non-supported devices in led-ble ([@bdraco] - [#136300]) +- Add heat pump supply pressure sensor in ViCare integration ([@CFenner] - [#136265]) +- Auto select thermostat preset when selecting temperature ([@domingues] - [#134146]) +- Cleanup map references in lovelace ([@epenet] - [#136314]) +- Update Overseerr quality scale ([@joostlek] - [#136260]) +- Use HassKey in lovelace ([@epenet] - [#136313]) +- Add system_health the to Network component ([@abmantis] - [#135514]) +- Add parallel updates to Airgradient ([@joostlek] - [#136323]) +- Restructure the youless integration internals ([@gjong] - [#135842]) +- Add translated action exceptions to Airgradient ([@joostlek] - [#136322]) +- Bump aiowebostv to 0.6.0 ([@thecode] - [#136206]) +- Replace key names with translatable friendly names in zwave_js ([@NoRi2909] - [#136318]) +- Clean up remaining backup manager tests ([@MartinHjelmare] - [#136335]) +- Add reconfigure flow to Airgradient ([@joostlek] - [#136324]) +- Bump myuplink lib to 0.7.0 ([@astrandb] - [#136343]) +- Improve error handling for incomfort gateway ([@jbouwh] - [#136317]) +- Enable strict-typing in lovelace ([@epenet] - [#136327]) +- Fix sentence-casing in isy994 integration strings, reword "lock user code" ([@NoRi2909] - [#136316]) +- Move single-use lovelace function ([@epenet] - [#136336]) +- Use runtime_data in bosch_shc ([@epenet] - [#136356]) +- Use runtime_data in canary ([@epenet] - [#136357]) +- Several fixes in user-facing strings of Renson integration actions ([@NoRi2909] - [#136279]) +- Cleanup hass.data in cloudflare ([@epenet] - [#136358]) +- Bump pyenphase to 1.23.1 ([@catsmanac] - [#136200]) +- Properly parse AirNow API data in coordinator ([@firstof9] - [#136198]) +- Enable strict typing for incomfort integration ([@jbouwh] - [#136291]) +- Fix tplink deprecated entity cleanup ([@sdb9696] - [#136160]) +- Refactor modbus polling to prevent dupe updates and memory leak ([@bdraco] - [#136211]) +- Incorporate ControllerManager into HEOS Coordinator ([@andrewsayre] - [#136302]) +- Set Netgear device entities to unavailable when the device is not connected ([@lanthaler] - [#135362]) +- holiday: asynchronously generate the entity name ([@bors-ltd] - [#136354]) +- Migrate modbus to use HassKey ([@bdraco] - [#136379]) +- Don't translate state names in default agent responses ([@synesthesiam] - [#136382]) +- Allow LLMs to get calendar events from exposed calendars ([@balloob] - [#136304]) +- Use runtime_data in coinbase ([@epenet] - [#136381]) +- Use runtime_data in daikin ([@epenet] - [#136376]) +- Use runtime_data in comelit ([@epenet] - [#136384]) +- Use runtime_data in ccm15 ([@epenet] - [#136378]) +- Add translated action exceptions to LG webOS TV ([@thecode] - [#136397]) +- Bump github/codeql-action from 3.28.3 to 3.28.4 (@dependabot - [#136401]) +- Bump codecov/codecov-action from 5.2.0 to 5.3.0 (@dependabot - [#136402]) +- Remove deprecated 17track package sensor ([@gjohansson-ST] - [#136389]) +- Use runtime_data in coolmaster ([@epenet] - [#136405]) +- Bump aioharmony to 0.4.0 ([@bdraco] - [#136398]) +- Bump aioautomower to 2025.1.1 ([@Thomas55555] - [#136365]) +- Bump WSDiscovery to 2.1.2 ([@bdraco] - [#136363]) +- Move denonavr shared constants to central location ([@epenet] - [#136421]) +- Simplify update listener in denonavr ([@epenet] - [#136422]) +- Omit Peblar update entities for most white label devices ([@frenck] - [#136374]) +- Use runtime_data in denonavr ([@epenet] - [#136424]) +- Bump nhc to 0.3.9 ([@VandeurenGlenn] - [#136418]) +- Fix humidifier mode for Vesync ([@iprak] - [#135746]) +- Incorporate SourceManager into HEOS Coordinator ([@andrewsayre] - [#136377]) +- Rename incomfort exceptions classes to fix typo and assign correct translation domain ([@jbouwh] - [#136426]) +- Tado change to async and add Data Update Coordinator ([@erwindouna] - [#134175]) +- Add missing translations for LG webOS TV and fix names ([@thecode] - [#136438]) +- Refactor the Hydrawise config flow ([@dknowles2] - [#135886]) +- Move dormakaba_dkey coordinator to separate module ([@epenet] - [#136437]) +- Use runtime_data in directv ([@epenet] - [#136435]) +- Move dexcom coordinator to separate module ([@epenet] - [#136433]) +- Use runtime_data in dormakaba_dkey ([@epenet] - [#136440]) +- Use runtime_data in duotecno ([@epenet] - [#136444]) +- Use runtime_data in dexcom ([@epenet] - [#136441]) +- Bump aioharmony to 0.4.1 ([@bdraco] - [#136413]) +- Use runtime_data in dunehd ([@epenet] - [#136443]) +- Reorganize input sources in Onkyo options ([@arturpragacz] - [#133511]) +- Move dynalite service definitions to separate module ([@epenet] - [#136446]) +- Add more sensors to homee ([@Taraman17] - [#136445]) +- Bump aioacaia to 0.1.14 ([@zweckj] - [#136453]) +- Add PARALLEL_UPDATES constant to ring integration platforms ([@sdb9696] - [#136470]) +- Bump uiprotect to version 7.5.0 ([@RaHehl] - [#136475]) +- Fix sentence-casing in strings of Vizio integration ([@NoRi2909] - [#136465]) +- Make Spotify polling interval dynamic ([@joostlek] - [#136461]) +- Powerwall: Reuse authentication cookie ([@choumarin] - [#136147]) +- Bump async-upnp-client to 0.43.0 ([@StevenLooman] - [#136481]) +- Bump pydantic to 2.10.6 ([@bdraco] - [#136483]) +- Cleanup update_listener in deconz ([@epenet] - [#136416]) +- Move deconz function to util.py ([@epenet] - [#136414]) +- Fix httpx late import of trio doing blocking I/O in the event loop ([@bdraco] - [#136409]) +- Bump pysmlight to v0.1.6 ([@tl-sl] - [#136496]) +- Update tplink climate platform to use thermostat module ([@sdb9696] - [#136166]) +- Refactor EZVIZ config flow tests ([@joostlek] - [#136434]) +- Bump reolink_aio to 0.11.8 ([@starkillerOG] - [#136504]) +- Add TemperatureLevel feature from Matter TemperatureControl cluster ([@lboue] - [#134532]) +- Abort config flow is device is unsupported ([@tl-sl] - [#136505]) +- Fix Spotify flaky test ([@joostlek] - [#136529]) +- Incorporate GroupManager into HEOS Coordinator ([@andrewsayre] - [#136462]) +- Reduce boilerplate code to setup modbus platform entities ([@bdraco] - [#136491]) +- Bump AIOSomeComfort to 0.0.30 in Honeywell ([@mkmer] - [#136523]) +- Reuse fixtures in config flow tests for Whirlpool ([@abmantis] - [#136489]) +- Bump pyvesync to 2.1.16 ([@iprak] - [#136493]) +- Remove unneeded call active check in modbus ([@bdraco] - [#136487]) +- Updated igloohome-api dependency to 0.1.0 ([@keithle888] - [#136516]) +- Add heat pump heating rod sensors in ViCare integration ([@CFenner] - [#136467]) +- Add backup agent to Synology DSM ([@mib1185] - [#135227]) +- Add Darsstar as codeowner for solax integration ([@squishykid] - [#136528]) +- Fix wrong plural on tado.add_meter_reading action ([@NoRi2909] - [#136524]) +- Add restore backup tests ([@MartinHjelmare] - [#136538]) +- Bump ohmepy version to 1.2.6 ([@dan-r] - [#136547]) +- Move action implementation out of HEOS Coordinator ([@andrewsayre] - [#136539]) +- Bump opower to 0.8.8 ([@tronikos] - [#136555]) +- Homee cover-test ([@Taraman17] - [#136563]) +- Add select platform to Ohme ([@dan-r] - [#136536]) +- Bump pyHomee to 1.2.5 ([@Taraman17] - [#136567]) +- Make casing of "server" and action descriptions consistent ([@NoRi2909] - [#136561]) +- Use typed ConfigEntry throughout HEOS ([@andrewsayre] - [#136569]) +- Bump HEOS quality scale to silver ([@andrewsayre] - [#136533]) +- Don't cast type in HEOS services ([@andrewsayre] - [#136583]) +- Fix HEOS play media type playlist ([@andrewsayre] - [#136585]) +- Fix spelling of "Home Assistant" and "IDs" in xiaomi_aqara ([@NoRi2909] - [#136578]) +- Fix sentence-casing in action names, spelling of "IDs" ([@NoRi2909] - [#136576]) +- Fix optional argument in deconz test type definition ([@epenet] - [#136411]) +- Bump yt-dlp to 2025.01.26 ([@joostlek] - [#136581]) +- Fix LetPot reauthentication flow tests setting up config entry ([@jpelgrom] - [#136589]) +- Add Reolink privacy switch entity ([@starkillerOG] - [#136521]) +- Bump python-kasa to 0.10.0 ([@sdb9696] - [#136586]) +- Cleanup stale devices on incomfort integration startup ([@jbouwh] - [#136566]) +- Prevent errors when Reolink privacy mode is turned on ([@starkillerOG] - [#136506]) +- Bump SoCo to 0.30.8 - Sonos ([@PeteRager] - [#136601]) +- Optimize enphase_envoy test integration setup. ([@catsmanac] - [#136572]) +- Update mypy-dev to 1.16.0a1 ([@cdce8p] - [#136544]) +- Bump pyheos to v1.0.1 ([@andrewsayre] - [#136604]) +- Push more of the LLM conversation agent loop into ChatSession ([@allenporter] - [#136602]) +- Update hassio to use the backup integration to make backups before update ([@emontnemery] - [#136235]) +- Add diagnostic sensors for the active subscription of Cookidoo ([@miaucl] - [#136485]) +- Bump nest to python-nest-sdm to 7.1.0 ([@allenporter] - [#136611]) +- Use runtime_data in crownstone ([@epenet] - [#136406]) +- Add lovelace compatiblity code ([@epenet] - [#136617]) +- Use runtime_data in dynalite ([@epenet] - [#136448]) +- Use runtime_data in deconz ([@epenet] - [#136412]) +- Ask for permission to disable Reolink privacy mode during config flow ([@starkillerOG] - [#136511]) +- Add a Matter temperature sensor based on `Thermostat` device `LocalTemperature` attribute ([@lboue] - [#133888]) +- Add missing exclude_integrations in lovelace compatibility code ([@epenet] - [#136618]) +- Starlink's energy consumption & usage cumulation fix ([@davidrapan] - [#135889]) +- Add product IDs for new LIFX Ceiling lights ([@Djelibeybi] - [#136619]) +- Use runtime_data in ecobee ([@epenet] - [#136632]) +- Bump codecov/codecov-action from 5.3.0 to 5.3.1 (@dependabot - [#136614]) +- Bump docker/build-push-action from 6.12.0 to 6.13.0 (@dependabot - [#136612]) +- Bump github/codeql-action from 3.28.4 to 3.28.5 (@dependabot - [#136613]) +- Use typed coordinator and runtime_data in eafm ([@epenet] - [#136629]) +- Cleanup unnecessary type hint in assist_satellite ([@epenet] - [#136626]) +- Cleanup hass.data[DOMAIN] in application_credentials ([@epenet] - [#136625]) +- Use typed ConfigEntry in ring coordinator ([@sdb9696] - [#136457]) +- Fix test logic flaw in enphase_envoy test_select ([@catsmanac] - [#136570]) +- Change discovery schema for Matter Identify button to ignore type of None ([@marcelveldt] - [#136621]) +- Fix spelling of "Hub" and sentence-casing of "options" ([@NoRi2909] - [#136573]) +- Add config flow data descriptions to ring integration ([@sdb9696] - [#136464]) +- Twinkly RGBW color fixed ([@Splint77] - [#136593]) +- Replace "bosch_shc" with friendly name of integration ([@NoRi2909] - [#136410]) +- Bump securetar to 2025.1.4 ([@emontnemery] - [#136639]) +- Fix spelling of "Pi-hole" and "API" in user-facing strings ([@NoRi2909] - [#136645]) +- Bump aioshelly to 12.3.2 ([@bieniu] - [#136486]) +- Bump voip-utils to 0.3.0 ([@synesthesiam] - [#136648]) +- Catch and convert MatterError when sending device commands ([@marcelveldt] - [#136635]) +- Add single target constraint to async_match_targets ([@synesthesiam] - [#136643]) +- Add LLM ActionTool ([@Shulyaka] - [#136591]) +- Add the Model Context Protocol integration ([@allenporter] - [#135058]) +- Add HassClimateSetTemperature ([@synesthesiam] - [#136484]) +- Make static modbus entity values classvar defaults ([@bdraco] - [#136488]) +- Add support for tplink siren turn on parameters ([@sdb9696] - [#136642]) +- Log the error when the WebSocket receives a error message ([@bdraco] - [#136492]) +- Bump pyfritzhome to 0.6.14 ([@mib1185] - [#136661]) +- Update flux-led to 1.1.3 ([@cdce8p] - [#136666]) +- Add Bluetooth WebSocket API to subscribe to connection allocations ([@bdraco] - [#136215]) +- Merge Whirlpool tests into a parameterized test ([@abmantis] - [#136490]) +- Increase LaCrosse View polling interval to 60 seconds ([@IceBotYT] - [#136680]) +- Bump aioesphomeapi to 29.0.0 and bleak-esphome to 2.2.0 ([@bdraco] - [#136684]) +- ChatSession: Split native content out of message class ([@balloob] - [#136668]) +- Add power/energy sensor for Matter draft electrical measurement cluster ([@dext0r] - [#132920]) +- Standardize `helpers.xxx_registry` imports ([@epenet] - [#136688]) +- Use runtime_data in ecoforest ([@epenet] - [#136689]) +- Update roborock tests to patch client before test setup ([@allenporter] - [#136587]) +- Use runtime_data in electrasmart ([@epenet] - [#136696]) +- Update config flow tests for litterrobot ([@natekspencer] - [#136658]) +- Use runtime_data in econet ([@epenet] - [#136691]) +- Bump actions/setup-python from 5.3.0 to 5.4.0 (@dependabot - [#136685]) +- Use runtime_data in ezviz ([@epenet] - [#136702]) +- Add translations for youless sensors ([@gjong] - [#136349]) +- Use runtime_data in electric_kiwi ([@epenet] - [#136699]) +- Cleanup use of hass.data in edl21 ([@epenet] - [#136694]) +- Improve type hints in econet ([@epenet] - [#136693]) +- Use runtime_data in evil_genius_labs ([@epenet] - [#136704]) +- Correct labels in EnOcean config flow ([@CFenner] - [#136338]) +- Use runtime_data in eufylife_ble ([@epenet] - [#136705]) +- Update nest config flow to create pub/sub topics ([@allenporter] - [#136609]) +- Support integrated ventilation on heating devices in ViCare integration ([@CFenner] - [#130356]) +- Use runtime_data in epson ([@epenet] - [#136706]) +- Use runtime_data in epion ([@epenet] - [#136708]) +- Introduce `unique_id` to BackupAgent ([@mib1185] - [#136651]) +- Use runtime_data in epic_games_store ([@epenet] - [#136709]) +- Initial implementation for tplink tapo vacuums ([@rytilahti] - [#131965]) +- Bump github/codeql-action from 3.28.5 to 3.28.6 (@dependabot - [#136686]) +- Update tplink coordinators to update hub-attached children ([@sdb9696] - [#135586]) +- Bump bring-api to 1.0.0 ([@tr4nt0r] - [#136657]) +- Bump nice-go to 1.0.1 ([@IceBotYT] - [#136649]) +- Remove unused function in hassio/update ([@arturpragacz] - [#136701]) +- Tag backups created when updating addon with supervisor.addon_update ([@emontnemery] - [#136690]) +- Fix deadlock in WS command backup/can_decrypt_on_download ([@emontnemery] - [#136707]) +- Add test for myuplink DeviceInfo ([@astrandb] - [#136360]) +- Use HassKey in diagnostics ([@epenet] - [#136627]) +- Add HEOS diagnostics ([@andrewsayre] - [#136663]) +- Cleanup ecobee YAML configuration import ([@epenet] - [#136633]) +- Fix spelling of "Ring" and sentence-casing of "integration" ([@NoRi2909] - [#136652]) +- Fix spelling errors in user-facing strings of OctoPrint integration ([@NoRi2909] - [#136644]) +- Raise exceptions in HEOS custom actions ([@andrewsayre] - [#136546]) +- Fix total coffees sensor for lamarzocco ([@zweckj] - [#135283]) +- Use runtime_data in drop_connect ([@epenet] - [#136442]) +- Include error reason in backup events ([@emontnemery] - [#136697]) +- Bump ohmepy to 1.2.8 ([@dan-r] - [#136719]) +- Add support for KNX UI to create BinarySensor entities ([@farmio] - [#136703]) +- Fix LG webOS TV external arc volume set action ([@thecode] - [#136717]) +- Use runtime_data in devialet ([@epenet] - [#136432]) +- Adjust Matter discovery logic to disallow the primary value(s) to be None ([@marcelveldt] - [#136712]) +- Standardize util imports ([@epenet] - [#136723]) +- Migrate usb to use aiousbwatcher ([@bdraco] - [#136676]) +- Add OneDrive as backup provider ([@zweckj] - [#135121]) +- Add SPF sensor for heat pumps in ViCare integration ([@CFenner] - [#136233]) +- Add sensor for Matter OperationalState cluster / CurrentPhase attribute ([@lboue] - [#129757]) +- Add authentication support to MotionMount integration ([@RJPoelstra] - [#126487]) +- Fix Telegram webhook registration if deregistration previously failed ([@rsiv] - [#133398]) +- Parameterize enphase_envoy number tests. ([@catsmanac] - [#136631]) +- Fix all occurrences of "PIN" in MotionMount user strings ([@NoRi2909] - [#136734]) +- Bump python-roborock to 2.9.7 ([@allenporter] - [#136727]) +- Add SmartTowerFan to VeSync Integration ([@cdnninja] - [#136596]) +- Add climate platform to eheimdigital ([@autinerd] - [#135878]) +- Add more tests to vesync ([@iprak] - [#135681]) +- Add config entry load/unload tests for LetPot ([@jpelgrom] - [#136736]) +- Add streaming to Teslemetry number platform ([@Bre77] - [#136048]) +- Add streaming to Teslemetry lock platform ([@Bre77] - [#136037]) +- Mark tplink quality_scale platinum ([@sdb9696] - [#136456]) +- Register service actions in async_setup of AVM Fritz!Box tools ([@mib1185] - [#136380]) +- Add support for HomeWizard Plug-In Battery and v2 API ([@joostlek] - [#136733]) +- Standardize homeassistant imports in full-CI tests ([@epenet] - [#136735]) +- Standardize homeassistant imports in full-CI components ([@epenet] - [#136731]) +- Standardize homeassistant imports in core and base platforms ([@epenet] - [#136730]) +- Add pair/unpair buttons for tplink ([@rytilahti] - [#135847]) +- Let platforms decide entity creation in litterrobot ([@natekspencer] - [#136738]) +- Bump yeelight to 0.7.16 ([@bdraco] - [#136679]) +- Fix LG webOS TV actions not returning responses ([@thecode] - [#136743]) +- Capitalize "Velbus", replace "service calls" with "actions" ([@NoRi2909] - [#136744]) +- Bump habluetooth to 3.13.0 ([@bdraco] - [#136749]) +- Update xknx to 3.5.0 ([@richardpolzer] - [#136759]) +- Add volt/power/power_factor strings and state attrs for ZHA 3 phase meters ([@abmantis] - [#133969]) +- Bump AIOSomecomfort to 0.0.32 ([@mkmer] - [#136751]) +- Add swing support for KNX climate entities ([@richardpolzer] - [#136752]) +- Add translations for ZHA pilot wire mode and device mode ([@piitaya] - [#136753]) +- Abort Bluetooth options flow if local adapters do not support passive scans ([@bdraco] - [#136748]) +- Bump homematicip to 1.1.7 ([@hahn-th] - [#136767]) +- Add Bluetooth WebSocket API to subscribe to scanner details ([@bdraco] - [#136750]) +- Bump hassil to 2.2.0 ([@synesthesiam] - [#136787]) +- Bumb python-homewizard-energy to 8.3.0 ([@DCSBL] - [#136765]) +- Bump aiowebostv to 0.6.1 ([@thecode] - [#136784]) +- Bump ZHA to 0.0.46 ([@TheJulianJES] - [#136785]) +- Explicitly pass in the config_entry in Feedreader coordinator init ([@mib1185] - [#136777]) +- Explicitly pass in the config_entry in PEGELONLINE coordinator init ([@mib1185] - [#136773]) +- Explicitly pass in the config_entry in AVM Fritz!SmartHome coordinator init ([@mib1185] - [#136769]) +- Bump peco to 0.1.2 ([@IceBotYT] - [#136732]) +- Explicitly pass in the config_entry in Tankerkoenig coordinator init ([@mib1185] - [#136780]) +- Explicitly pass in the config_entry in Proximity coordinator init ([@mib1185] - [#136775]) +- Add more vacuum features for tplink ([@rytilahti] - [#136580]) +- Explicitly pass in the config_entry in Synology DSM coordinator init ([@mib1185] - [#136772]) +- Explicitly pass in the config_entry in Nextcloud coordinator init ([@mib1185] - [#136774]) +- Add VoIP announce ([@synesthesiam] - [#136781]) +- Bump habluetooth to 3.14.0 ([@bdraco] - [#136791]) +- Fix typing errors in HEOS tests ([@andrewsayre] - [#136795]) +- Add UI to create KNX BinarySensor entities ([@farmio] - [#136786]) +- Redact stored authentication token in HomeWizard diagnostics ([@DCSBL] - [#136766]) +- Reload template blueprints when reloading templates ([@Petro31] - [#136794]) +- Bump intents to 2025.1.28 ([@synesthesiam] - [#136782]) +- Add power protection entities for tplink ([@rytilahti] - [#132267]) +- Add Google Drive integration for backup ([@tronikos] - [#134576]) +- Enable strict typing for HEOS ([@andrewsayre] - [#136797]) +- Standardize homeassistant imports in component tests (m-z) ([@epenet] - [#136807]) +- Use runtime_data in environment_canada ([@epenet] - [#136805]) +- Use runtime_data in elmax ([@epenet] - [#136803]) +- Fix percentage_charged in Teslemetry ([@Bre77] - [#136798]) +- Add remaining Matter Operational State sensor discovery schemas ([@marcelveldt] - [#136741]) +- Use runtime_data in energenie_power_sockets ([@epenet] - [#136801]) +- Use ConfigEntry.runtime_data in AVM Fritz!Box tools ([@mib1185] - [#136386]) +- Standardize homeassistant imports in component tests (a-l) ([@epenet] - [#136806]) +- Rename environment_canada entities ([@epenet] - [#136817]) +- Add config flow to filter helper ([@gjohansson-ST] - [#121522]) +- Simplify device_info access in environment_canada ([@epenet] - [#136816]) +- Bump aiohasupervisor to version 0.2.2b6 ([@emontnemery] - [#136814]) +- Stop building wheels for 3.12 ([@edenhaus] - [#136811]) +- Add last restart sensor to HomeWizard ([@DCSBL] - [#136763]) +- Use translations for fan_speed in tplink vacuum entity ([@sdb9696] - [#136718]) +- Bump pyiskra to 0.1.15 ([@iskrakranj] - [#136810]) +- vesync: report current humidity ([@oandrew] - [#136799]) +- Add binary sensor platform to VeSync ([@cdnninja] - [#134221]) +- Add diagnostics for Cookidoo integration ([@miaucl] - [#136770]) +- Use the new hybrid Hydrawise client ([@dknowles2] - [#136522]) +- Bump deebot-client to 11.1.0b1 ([@edenhaus] - [#136818]) +- Improve type hints in environment_canada sensors ([@epenet] - [#136813]) +- Standardize homeassistant imports in component (e-f) ([@epenet] - [#136824]) +- Standardize homeassistant imports in component (c-d) ([@epenet] - [#136823]) +- Standardize homeassistant imports in component (a-b) ([@epenet] - [#136821]) +- Improve type hints in environment_canada camera and weather ([@epenet] - [#136819]) +- Correct the behavior of the Charge switch in Tessie/Teslemetry/Tesla Fleet ([@Bre77] - [#136562]) +- Standardize homeassistant imports in component (l-m) ([@epenet] - [#136827]) +- Standardize homeassistant imports in component (i-k) ([@epenet] - [#136826]) +- Standardize homeassistant imports in component (g-h) ([@epenet] - [#136825]) +- Update quality scale for litterrobot ([@natekspencer] - [#136764]) +- Standardize homeassistant imports in component (t-u) ([@epenet] - [#136833]) +- Add image entity for fyta ([@dontinelli] - [#135105]) +- Standardize homeassistant imports in component (n-p) ([@epenet] - [#136830]) +- Standardize homeassistant imports in component (q-r) ([@epenet] - [#136831]) +- Standardize homeassistant imports in component (s) ([@epenet] - [#136832]) +- Standardize homeassistant imports in component (v-z) ([@epenet] - [#136834]) +- Add backup endpoints to the onboarding integration ([@emontnemery] - [#136051]) +- Rename HomeWizard last restart sensor to Uptime ([@DCSBL] - [#136829]) +- Fix command latency in AVM Fritz!SmartHome ([@mib1185] - [#136739]) +- Bump qbusmqttapi to 1.2.4 ([@thomasddn] - [#136835]) +- Update photovoltaic related labels in ViCare ([@CFenner] - [#136430]) +- Standardize remaining homeassistant imports ([@epenet] - [#136836]) +- IQS completion of documentation for Plugwise ([@CoMPaTech] - [#134051]) +- Add support for per-backup agent encryption flag ([@emontnemery] - [#136622]) +- Add select platform discovery schemas for the Matter LaundryWasherControls cluster ([@lboue] - [#136261]) +- Take exclude vias in unique ids for nmbs ([@silamon] - [#136590]) +- Fix spelling of "API" for consistency in Home Assistant UI ([@NoRi2909] - [#136842]) +- Add consumables for tplink tapo vacuums ([@rytilahti] - [#136510]) +- Add cleaning statistics for tplink ([@rytilahti] - [#135784]) +- Adjust deprecation in water heater ([@epenet] - [#136577]) +- Migrate Google Gen AI to ChatSession ([@balloob] - [#136779]) +- Persist backup restore status after core restart ([@emontnemery] - [#136838]) +- Check for fullcolorsupport in fritzbox light ([@flabbamann] - [#136850]) +- Add DHCP discovery to balboa ([@natekspencer] - [#136762]) +- Fix spelling of "API" for consistency in Home Assistant UI ([@NoRi2909] - [#136843]) +- Update frontend to 20250129.0 ([@bramkragten] - [#136852]) +- Tweak Matter discovery to ignore empty lists ([@marcelveldt] - [#136854]) +- Ease understanding of integration failures ([@tomer-w] - [#134475]) +- Interrupt _CipherBackupStreamer workers ([@emontnemery] - [#136845]) +- Use runtime_data in control4 ([@epenet] - [#136403]) +- Simplify Whirlpool auth flows ([@abmantis] - [#136856]) +- Add ability to cache Roborock maps instead of always reloading ([@Lash-L] - [#112047]) +- Update whirlpool-sixth-sense to 0.18.12 ([@abmantis] - [#136851]) +- Add support for per-backup agent encryption flag to hassio ([@emontnemery] - [#136828]) +- Persist hassio backup restore status after core restart ([@emontnemery] - [#136857]) +- Cancel call if user does not pick up ([@synesthesiam] - [#136858]) +- Handle locked account error in Whirlpool ([@abmantis] - [#136861]) +- Fix incorrect Bluetooth source address when restoring data from D-Bus ([@bdraco] - [#136862]) +- Bump backup store to version 1.3 ([@emontnemery] - [#136870]) +- Add start_conversation service to Assist Satellite ([@balloob] - [#134921]) +- Fix loading of SMLIGHT integration when no internet is available ([@tl-sl] - [#136497]) +- Bump ZHA to 0.0.47 ([@TheJulianJES] - [#136883]) +- Bump nest to 7.1.1 ([@allenporter] - [#136888]) +- Poll supervisor job state when creating or restoring a backup ([@emontnemery] - [#136891]) +- Add missing discovery string from onewire ([@epenet] - [#136892]) +- Ignore dangling symlinks when restoring backup ([@emontnemery] - [#136893]) +- Fix handling of renamed backup files in the core writer ([@emontnemery] - [#136898]) +- Don't blow up when a backup doesn't exist on supervisor ([@emontnemery] - [#136907]) +- Fix onedrive does not fail on delete not found ([@zweckj] - [#136910]) +- Convert valve position to int for Shelly BLU TRV ([@bieniu] - [#136912]) +- Don't log errors when raising a backup exception in Google Drive ([@tronikos] - [#136916]) +- Show name of the backup agents in issue ([@joostlek] - [#136925]) +- Fix Sonos importing deprecating constant ([@joostlek] - [#136926]) +- Create Xbox signed session in executor ([@joostlek] - [#136927]) +- Pick onedrive owner from a more reliable source ([@zweckj] - [#136929]) +- Fix backup related translations in Synology DSM ([@mib1185] - [#136931]) +- Fix KeyError for Shelly virtual number component ([@bieniu] - [#136932]) +- Update frontend to 20250130.0 ([@bramkragten] - [#136937]) +- Ensure Reolink can start when privacy mode is enabled ([@starkillerOG] - [#136514]) +- Refactor eheimdigital platform async_setup_entry ([@autinerd] - [#136745]) +- Bump total-connect-client to 2025.1.4 ([@austinmroczek] - [#136793]) +- Fixes to the user-facing strings of energenie_power_sockets ([@NoRi2909] - [#136844]) +- Bump jellyfin-apiclient-python to 1.10.0 ([@RunC0deRun] - [#136872]) +- Suppress color_temp warning if color_temp_kelvin is provided ([@Djelibeybi] - [#136884]) +- Persist roborock maps to disk only on shutdown ([@allenporter] - [#136889]) +- Include the redirect URL in the Google Drive instructions ([@tronikos] - [#136906]) +- Bump opower to 0.8.9 ([@tronikos] - [#136911]) +- Make backup file names more user friendly ([@emontnemery] - [#136928]) +- Bump zeroconf to 0.142.0 ([@bdraco] - [#136940]) +- Bump aiohttp-asyncmdnsresolver to 0.0.2 ([@bdraco] - [#136942]) +- Update knx-frontend to 2025.1.30.194235 ([@farmio] - [#136954]) +- Consume extra system prompt in first pipeline ([@synesthesiam] - [#136958]) +- Bump habluetooth to 3.15.0 ([@bdraco] - [#136973]) +- Delete old addon update backups when updating addon ([@emontnemery] - [#136977]) +- Retry backup uploads in onedrive ([@zweckj] - [#136980]) +- Fix missing duration translation for Swiss public transport integration ([@miaucl] - [#136982]) +- Call backup listener during setup in onedrive ([@zweckj] - [#136990]) +- Bumb python-homewizard-energy to 8.3.2 ([@DCSBL] - [#136995]) +- Use device name as entity name in Eheim digital climate ([@joostlek] - [#136997]) +- Remove the unparsed config flow error from Swiss public transport ([@miaucl] - [#136998]) +- Make sure we load the backup integration before frontend ([@emontnemery] - [#137010]) +- Revert previous PR and remove URL from error message instead ([@NoRi2909] - [#137018]) +- Make supervisor backup file names more user friendly ([@emontnemery] - [#137020]) +- Bump habluetooth to 3.17.0 ([@bdraco] - [#137022]) +- Update frontend to 20250131.0 ([@bramkragten] - [#137024]) +- Bump bleak-esphome to 2.6.0 ([@bdraco] - [#137025]) +- Bump SQLAlchemy to 2.0.37 ([@bdraco] - [#137028]) +- Bump deebot-client to 11.1.0b2 ([@edenhaus] - [#137030]) +- Shorten the integration name for `incomfort` ([@jbouwh] - [#136930]) +- Update Overseerr string to mention CSRF ([@joostlek] - [#137001]) +- Use readable backup names for onedrive ([@zweckj] - [#137031]) +- Bump bthome-ble to 3.11.0 ([@Ernst79] - [#137032]) +- Bump zeroconf to 0.143.0 ([@bdraco] - [#137035]) +- Bump bthome-ble to 3.12.3 ([@bdraco] - [#137036]) +- Bump aiohttp-asyncmdnsresolver to 0.0.3 ([@bdraco] - [#137040]) +- Bump habluetooth to 3.17.1 ([@bdraco] - [#137045]) +- Bump aioimaplib to version 2.0.1 ([@jbouwh] - [#137049]) +- Raise HomeAssistantError from camera snapshot service ([@natekspencer] - [#137051]) +- Allow ignored govee-ble devices to be set up from the user flow ([@bdraco] - [#137052]) +- Allow ignored switchbot devices to be set up from the user flow ([@bdraco] - [#137056]) +- For consistency use suggested_filename in Google Drive ([@tronikos] - [#137061]) +- Bump habluetooth to 3.20.1 ([@bdraco] - [#137063]) +- Load `hassio` before `backup` at frontend stage ([@jpbede] - [#137067]) +- Bump lacrosse-view to 1.0.4 ([@IceBotYT] - [#137058]) +- Update RestrictedPython to 8.0 ([@cdce8p] - [#137075]) +- Set via_device for remote Bluetooth adapters to link to the parent device ([@bdraco] - [#137091]) +- Allow ignored airthings_ble devices to be set up from the user flow ([@bdraco] - [#137102]) +- Allow ignored yale_ble devices to be set up from the user flow ([@bdraco] - [#137103]) +- Allow ignored thermopro devices to be set up from the user flow ([@bdraco] - [#137104]) +- Allow ignored bthome devices to be set up from the user flow ([@bdraco] - [#137105]) +- Allow ignored inkbird devices to be set up from the user flow ([@bdraco] - [#137106]) +- Allow ignored mopeka devices to be set up from the user flow ([@bdraco] - [#137107]) +- Allow ignored oralb devices to be set up from the user flow ([@bdraco] - [#137109]) +- Fix Homekit camera profiles schema ([@shmuelzon] - [#137110]) +- Allow ignored qingping devices to be set up from the user flow ([@bdraco] - [#137111]) +- Allow ignored sensorpush devices to be set up from the user flow ([@bdraco] - [#137113]) +- Allow ignored xiaomi_ble devices to be set up from the user flow ([@bdraco] - [#137115]) +- Allow ignored Aranet devices to be set up from the user flow ([@thecode] - [#137121]) +- Allow ignored tilt_ble devices to be set up from user flow ([@apt-itude] - [#137123]) +- Remove entity state from mcp-server prompt ([@allenporter] - [#137126]) +- Bump habluetooth to 3.21.0 ([@bdraco] - [#137129]) +- Add missing brackets to ESPHome configuration URLs with IPv6 addresses ([@bdraco] - [#137132]) +- Bump deebot-client to 12.0.0b0 ([@edenhaus] - [#137137]) +- Allow manual smlight user setup to override discovery ([@tl-sl] - [#137136]) +- Bump dbus-fast to 2.30.4 ([@bdraco] - [#137151]) +- Bump bluetooth-data-tools to 1.23.3 ([@bdraco] - [#137147]) +- Bump habiticalib to v0.3.4 ([@tr4nt0r] - [#137148]) +- Bump monarchmoney to 0.4.4 ([@jeeftor] - [#137168]) +- Fix mqtt reconfigure does not use broker entry password when it is not changed ([@jbouwh] - [#137169]) +- Bump python-kasa to 0.10.1 ([@sdb9696] - [#137173]) +- Bump dbus-fast to 2.31.0 ([@bdraco] - [#137180]) +- Bump aiodhcpwatcher to 1.0.3 ([@bdraco] - [#137188]) +- Bump bleak-esphome to 2.7.0 ([@bdraco] - [#137199]) +- Switch to using IP Addresses for connecting to smlight devices ([@tl-sl] - [#137204]) +- Bump dbus-fast to 2.23.0 ([@bdraco] - [#137205]) +- Simplify config entry title for SMLIGHT ([@tl-sl] - [#137206]) +- Bump todist-api-python to 2.1.7 ([@boralyl] - [#136549]) +- Don't blow up when a backup doesn't exist on Synology DSM ([@mib1185] - [#136913]) +- Migrate OneDrive to onedrive_personal_sdk library ([@zweckj] - [#137064]) +- Humidifier turn display off for sleep mode ([@iprak] - [#137133]) +- Fixes in user-facing strings of Tado integration ([@NoRi2909] - [#137158]) +- Bump pypck to 0.8.5 ([@alengwenus] - [#137176]) +- Vesync bump pyvesync library ([@cdnninja] - [#137208]) +- Check for errors when restoring backups using supervisor ([@emontnemery] - [#137217]) +- Check for errors when creating backups using supervisor ([@emontnemery] - [#137220]) +- Fix retrieving PIN when no pin is set on mount in motionmount integration ([@RJPoelstra] - [#137230]) +- Fix minor issues in Homee ([@Taraman17] - [#137239]) +- Bump python-roborock to 2.11.1 ([@regevbr] - [#137244]) +- Bump onedrive-personal-sdk to 0.0.2 ([@zweckj] - [#137252]) +- Allow ignored idasen_desk devices to be set up from the user flow ([@abmantis] - [#137253]) +- Improve shutdown of _CipherBackupStreamer ([@emontnemery] - [#137257]) +- Remove v2 API support for HomeWizard P1 Meter ([@DCSBL] - [#137261]) +- Update frontend to 20250203.0 ([@bramkragten] - [#137263]) +- Bump pymill to 0.12.3 ([@Danielhiversen] - [#137264]) +- Bump tesla-fleet-api to 0.9.2 ([@Bre77] - [#137295]) +- Fix data update coordinator garbage collection ([@epenet] - [#137299]) +- Report progress while creating supervisor backup ([@emontnemery] - [#137301]) +- Bump onedrive-personal-sdk to 0.0.3 ([@zweckj] - [#137309]) +- Add view to download support package to Cloud component ([@abmantis] - [#135856]) +- Improve backup file naming in Synology DSM backup agent ([@mib1185] - [#137278]) +- Include extra metadata in backup WS API ([@emontnemery] - [#137296]) +- Bump tololib to 1.2.2 ([@MatthiasLohr] - [#137303]) +- Allow ignored screenlogic devices to be set up from the user flow ([@dieselrabbit] - [#137315]) +- Minor adjustments of hassio backup tests ([@emontnemery] - [#137324]) +- Bump onedrive-personal-sdk to 0.0.4 ([@zweckj] - [#137330]) +- Improve error handling when supervisor backups are deleted ([@emontnemery] - [#137331]) +- Don't show active user initiated data entry config flows ([@jbouwh] - [#137334]) +- Fix HomeWizard reconfigure flow throwing error for v2-API devices ([@DCSBL] - [#137337]) +- Copy area from remote parent device when creating Bluetooth devices ([@bdraco] - [#137340]) +- Update frontend to 20250204.0 ([@bramkragten] - [#137342]) +- Bump uiprotect to 7.5.1 ([@bdraco] - [#137343]) +- Fix incorrect UPB service entity type ([@gwww] - [#137346]) +- Polish tplink vacuum sensors ([@rytilahti] - [#137355]) +- Bump aranet4 to 2.5.1 ([@thecode] - [#137359]) +- Bump deebot-client to 12.0.0 ([@edenhaus] - [#137361]) +- Fix Tado missing await ([@thecode] - [#137364]) +- Bump pysmlight to v0.1.7 ([@tl-sl] - [#137390]) +- Report progress while restoring supervisor backup ([@emontnemery] - [#137313]) +- Fix memory leak when unloading DataUpdateCoordinator ([@bdraco] - [#137338]) +- Update led-ble to 1.1.5 ([@cdce8p] - [#137347]) +- Fix sqlalchemy deprecation warning that `declarative_base` has moved ([@jpbede] - [#137360]) +- Bump led-ble to 1.1.6 ([@bdraco] - [#137369]) +- Allow ignored Bluetooth adapters to be set up from the user flow ([@bdraco] - [#137373]) +- Bump Tesla Fleet API to v0.9.8 ([@Bre77] - [#137379]) +- Handle powerwall at zero percent in Tesla Fleet and Tessie ([@Bre77] - [#137393]) +- Simplify llm calendar tool ([@balloob] - [#137402]) +- Allow creating backup if at least one agent is available ([@emontnemery] - [#137409]) +- Adjust logic for per-backup agent encryption ([@emontnemery] - [#137420]) +- Adjust backup filename scheme ([@emontnemery] - [#137424]) +- Bump onedrive to 0.0.8 ([@zweckj] - [#137423]) +- Bump reolink_aio to 0.11.9 ([@starkillerOG] - [#137430]) +- Bump aiohasupervisor to version 0.3.0 ([@emontnemery] - [#137437]) +- Update frontend to 20250205.0 ([@bramkragten] - [#137441]) +- Update bluetooth dependencies ([@cdce8p] - [#137353]) +- Update bluetooth-data-tools to 1.23.4 ([@cdce8p] - [#137374]) +- Bump hassil and intents ([@synesthesiam] - [#137440]) +- Bump dbus-fast to 2.33.0 ([@bdraco] - [#137446]) + +[#112047]: https://github.com/home-assistant/core/pull/112047 +[#121522]: https://github.com/home-assistant/core/pull/121522 +[#121548]: https://github.com/home-assistant/core/pull/121548 +[#124743]: https://github.com/home-assistant/core/pull/124743 +[#126064]: https://github.com/home-assistant/core/pull/126064 +[#126487]: https://github.com/home-assistant/core/pull/126487 +[#126878]: https://github.com/home-assistant/core/pull/126878 +[#127280]: https://github.com/home-assistant/core/pull/127280 +[#127550]: https://github.com/home-assistant/core/pull/127550 +[#127687]: https://github.com/home-assistant/core/pull/127687 +[#127957]: https://github.com/home-assistant/core/pull/127957 +[#128366]: https://github.com/home-assistant/core/pull/128366 +[#128439]: https://github.com/home-assistant/core/pull/128439 +[#129009]: https://github.com/home-assistant/core/pull/129009 +[#129352]: https://github.com/home-assistant/core/pull/129352 +[#129636]: https://github.com/home-assistant/core/pull/129636 +[#129757]: https://github.com/home-assistant/core/pull/129757 +[#130196]: https://github.com/home-assistant/core/pull/130196 +[#130356]: https://github.com/home-assistant/core/pull/130356 +[#130408]: https://github.com/home-assistant/core/pull/130408 +[#130513]: https://github.com/home-assistant/core/pull/130513 +[#130657]: https://github.com/home-assistant/core/pull/130657 +[#130717]: https://github.com/home-assistant/core/pull/130717 +[#130731]: https://github.com/home-assistant/core/pull/130731 +[#130738]: https://github.com/home-assistant/core/pull/130738 +[#130918]: https://github.com/home-assistant/core/pull/130918 +[#131032]: https://github.com/home-assistant/core/pull/131032 +[#131133]: https://github.com/home-assistant/core/pull/131133 +[#131224]: https://github.com/home-assistant/core/pull/131224 +[#131274]: https://github.com/home-assistant/core/pull/131274 +[#131371]: https://github.com/home-assistant/core/pull/131371 +[#131416]: https://github.com/home-assistant/core/pull/131416 +[#131433]: https://github.com/home-assistant/core/pull/131433 +[#131496]: https://github.com/home-assistant/core/pull/131496 +[#131550]: https://github.com/home-assistant/core/pull/131550 +[#131586]: https://github.com/home-assistant/core/pull/131586 +[#131676]: https://github.com/home-assistant/core/pull/131676 +[#131914]: https://github.com/home-assistant/core/pull/131914 +[#131965]: https://github.com/home-assistant/core/pull/131965 +[#132017]: https://github.com/home-assistant/core/pull/132017 +[#132117]: https://github.com/home-assistant/core/pull/132117 +[#132267]: https://github.com/home-assistant/core/pull/132267 +[#132502]: https://github.com/home-assistant/core/pull/132502 +[#132551]: https://github.com/home-assistant/core/pull/132551 +[#132754]: https://github.com/home-assistant/core/pull/132754 +[#132783]: https://github.com/home-assistant/core/pull/132783 +[#132871]: https://github.com/home-assistant/core/pull/132871 +[#132879]: https://github.com/home-assistant/core/pull/132879 +[#132920]: https://github.com/home-assistant/core/pull/132920 +[#133099]: https://github.com/home-assistant/core/pull/133099 +[#133227]: https://github.com/home-assistant/core/pull/133227 +[#133269]: https://github.com/home-assistant/core/pull/133269 +[#133270]: https://github.com/home-assistant/core/pull/133270 +[#133285]: https://github.com/home-assistant/core/pull/133285 +[#133318]: https://github.com/home-assistant/core/pull/133318 +[#133328]: https://github.com/home-assistant/core/pull/133328 +[#133342]: https://github.com/home-assistant/core/pull/133342 +[#133386]: https://github.com/home-assistant/core/pull/133386 +[#133398]: https://github.com/home-assistant/core/pull/133398 +[#133452]: https://github.com/home-assistant/core/pull/133452 +[#133511]: https://github.com/home-assistant/core/pull/133511 +[#133546]: https://github.com/home-assistant/core/pull/133546 +[#133583]: https://github.com/home-assistant/core/pull/133583 +[#133612]: https://github.com/home-assistant/core/pull/133612 +[#133615]: https://github.com/home-assistant/core/pull/133615 +[#133617]: https://github.com/home-assistant/core/pull/133617 +[#133663]: https://github.com/home-assistant/core/pull/133663 +[#133678]: https://github.com/home-assistant/core/pull/133678 +[#133691]: https://github.com/home-assistant/core/pull/133691 +[#133704]: https://github.com/home-assistant/core/pull/133704 +[#133732]: https://github.com/home-assistant/core/pull/133732 +[#133738]: https://github.com/home-assistant/core/pull/133738 +[#133777]: https://github.com/home-assistant/core/pull/133777 +[#133784]: https://github.com/home-assistant/core/pull/133784 +[#133810]: https://github.com/home-assistant/core/pull/133810 +[#133827]: https://github.com/home-assistant/core/pull/133827 +[#133833]: https://github.com/home-assistant/core/pull/133833 +[#133840]: https://github.com/home-assistant/core/pull/133840 +[#133844]: https://github.com/home-assistant/core/pull/133844 +[#133852]: https://github.com/home-assistant/core/pull/133852 +[#133866]: https://github.com/home-assistant/core/pull/133866 +[#133870]: https://github.com/home-assistant/core/pull/133870 +[#133888]: https://github.com/home-assistant/core/pull/133888 +[#133893]: https://github.com/home-assistant/core/pull/133893 +[#133895]: https://github.com/home-assistant/core/pull/133895 +[#133902]: https://github.com/home-assistant/core/pull/133902 +[#133910]: https://github.com/home-assistant/core/pull/133910 +[#133920]: https://github.com/home-assistant/core/pull/133920 +[#133921]: https://github.com/home-assistant/core/pull/133921 +[#133928]: https://github.com/home-assistant/core/pull/133928 +[#133937]: https://github.com/home-assistant/core/pull/133937 +[#133939]: https://github.com/home-assistant/core/pull/133939 +[#133953]: https://github.com/home-assistant/core/pull/133953 +[#133955]: https://github.com/home-assistant/core/pull/133955 +[#133957]: https://github.com/home-assistant/core/pull/133957 +[#133958]: https://github.com/home-assistant/core/pull/133958 +[#133959]: https://github.com/home-assistant/core/pull/133959 +[#133962]: https://github.com/home-assistant/core/pull/133962 +[#133969]: https://github.com/home-assistant/core/pull/133969 +[#133970]: https://github.com/home-assistant/core/pull/133970 +[#133981]: https://github.com/home-assistant/core/pull/133981 +[#133982]: https://github.com/home-assistant/core/pull/133982 +[#133987]: https://github.com/home-assistant/core/pull/133987 +[#133988]: https://github.com/home-assistant/core/pull/133988 +[#133994]: https://github.com/home-assistant/core/pull/133994 +[#133996]: https://github.com/home-assistant/core/pull/133996 +[#133997]: https://github.com/home-assistant/core/pull/133997 +[#134001]: https://github.com/home-assistant/core/pull/134001 +[#134004]: https://github.com/home-assistant/core/pull/134004 +[#134016]: https://github.com/home-assistant/core/pull/134016 +[#134019]: https://github.com/home-assistant/core/pull/134019 +[#134020]: https://github.com/home-assistant/core/pull/134020 +[#134021]: https://github.com/home-assistant/core/pull/134021 +[#134025]: https://github.com/home-assistant/core/pull/134025 +[#134026]: https://github.com/home-assistant/core/pull/134026 +[#134027]: https://github.com/home-assistant/core/pull/134027 +[#134028]: https://github.com/home-assistant/core/pull/134028 +[#134036]: https://github.com/home-assistant/core/pull/134036 +[#134040]: https://github.com/home-assistant/core/pull/134040 +[#134041]: https://github.com/home-assistant/core/pull/134041 +[#134044]: https://github.com/home-assistant/core/pull/134044 +[#134049]: https://github.com/home-assistant/core/pull/134049 +[#134051]: https://github.com/home-assistant/core/pull/134051 +[#134053]: https://github.com/home-assistant/core/pull/134053 +[#134054]: https://github.com/home-assistant/core/pull/134054 +[#134055]: https://github.com/home-assistant/core/pull/134055 +[#134056]: https://github.com/home-assistant/core/pull/134056 +[#134059]: https://github.com/home-assistant/core/pull/134059 +[#134060]: https://github.com/home-assistant/core/pull/134060 +[#134069]: https://github.com/home-assistant/core/pull/134069 +[#134072]: https://github.com/home-assistant/core/pull/134072 +[#134079]: https://github.com/home-assistant/core/pull/134079 +[#134087]: https://github.com/home-assistant/core/pull/134087 +[#134088]: https://github.com/home-assistant/core/pull/134088 +[#134093]: https://github.com/home-assistant/core/pull/134093 +[#134097]: https://github.com/home-assistant/core/pull/134097 +[#134100]: https://github.com/home-assistant/core/pull/134100 +[#134104]: https://github.com/home-assistant/core/pull/134104 +[#134105]: https://github.com/home-assistant/core/pull/134105 +[#134106]: https://github.com/home-assistant/core/pull/134106 +[#134107]: https://github.com/home-assistant/core/pull/134107 +[#134108]: https://github.com/home-assistant/core/pull/134108 +[#134109]: https://github.com/home-assistant/core/pull/134109 +[#134110]: https://github.com/home-assistant/core/pull/134110 +[#134115]: https://github.com/home-assistant/core/pull/134115 +[#134116]: https://github.com/home-assistant/core/pull/134116 +[#134117]: https://github.com/home-assistant/core/pull/134117 +[#134118]: https://github.com/home-assistant/core/pull/134118 +[#134120]: https://github.com/home-assistant/core/pull/134120 +[#134122]: https://github.com/home-assistant/core/pull/134122 +[#134124]: https://github.com/home-assistant/core/pull/134124 +[#134130]: https://github.com/home-assistant/core/pull/134130 +[#134132]: https://github.com/home-assistant/core/pull/134132 +[#134133]: https://github.com/home-assistant/core/pull/134133 +[#134135]: https://github.com/home-assistant/core/pull/134135 +[#134137]: https://github.com/home-assistant/core/pull/134137 +[#134138]: https://github.com/home-assistant/core/pull/134138 +[#134143]: https://github.com/home-assistant/core/pull/134143 +[#134146]: https://github.com/home-assistant/core/pull/134146 +[#134147]: https://github.com/home-assistant/core/pull/134147 +[#134150]: https://github.com/home-assistant/core/pull/134150 +[#134151]: https://github.com/home-assistant/core/pull/134151 +[#134153]: https://github.com/home-assistant/core/pull/134153 +[#134156]: https://github.com/home-assistant/core/pull/134156 +[#134170]: https://github.com/home-assistant/core/pull/134170 +[#134173]: https://github.com/home-assistant/core/pull/134173 +[#134174]: https://github.com/home-assistant/core/pull/134174 +[#134175]: https://github.com/home-assistant/core/pull/134175 +[#134179]: https://github.com/home-assistant/core/pull/134179 +[#134185]: https://github.com/home-assistant/core/pull/134185 +[#134186]: https://github.com/home-assistant/core/pull/134186 +[#134187]: https://github.com/home-assistant/core/pull/134187 +[#134192]: https://github.com/home-assistant/core/pull/134192 +[#134193]: https://github.com/home-assistant/core/pull/134193 +[#134196]: https://github.com/home-assistant/core/pull/134196 +[#134197]: https://github.com/home-assistant/core/pull/134197 +[#134198]: https://github.com/home-assistant/core/pull/134198 +[#134200]: https://github.com/home-assistant/core/pull/134200 +[#134207]: https://github.com/home-assistant/core/pull/134207 +[#134210]: https://github.com/home-assistant/core/pull/134210 +[#134211]: https://github.com/home-assistant/core/pull/134211 +[#134212]: https://github.com/home-assistant/core/pull/134212 +[#134213]: https://github.com/home-assistant/core/pull/134213 +[#134221]: https://github.com/home-assistant/core/pull/134221 +[#134222]: https://github.com/home-assistant/core/pull/134222 +[#134229]: https://github.com/home-assistant/core/pull/134229 +[#134242]: https://github.com/home-assistant/core/pull/134242 +[#134244]: https://github.com/home-assistant/core/pull/134244 +[#134245]: https://github.com/home-assistant/core/pull/134245 +[#134246]: https://github.com/home-assistant/core/pull/134246 +[#134256]: https://github.com/home-assistant/core/pull/134256 +[#134261]: https://github.com/home-assistant/core/pull/134261 +[#134275]: https://github.com/home-assistant/core/pull/134275 +[#134277]: https://github.com/home-assistant/core/pull/134277 +[#134278]: https://github.com/home-assistant/core/pull/134278 +[#134279]: https://github.com/home-assistant/core/pull/134279 +[#134281]: https://github.com/home-assistant/core/pull/134281 +[#134282]: https://github.com/home-assistant/core/pull/134282 +[#134285]: https://github.com/home-assistant/core/pull/134285 +[#134290]: https://github.com/home-assistant/core/pull/134290 +[#134291]: https://github.com/home-assistant/core/pull/134291 +[#134296]: https://github.com/home-assistant/core/pull/134296 +[#134298]: https://github.com/home-assistant/core/pull/134298 +[#134299]: https://github.com/home-assistant/core/pull/134299 +[#134300]: https://github.com/home-assistant/core/pull/134300 +[#134301]: https://github.com/home-assistant/core/pull/134301 +[#134302]: https://github.com/home-assistant/core/pull/134302 +[#134303]: https://github.com/home-assistant/core/pull/134303 +[#134304]: https://github.com/home-assistant/core/pull/134304 +[#134305]: https://github.com/home-assistant/core/pull/134305 +[#134307]: https://github.com/home-assistant/core/pull/134307 +[#134308]: https://github.com/home-assistant/core/pull/134308 +[#134309]: https://github.com/home-assistant/core/pull/134309 +[#134310]: https://github.com/home-assistant/core/pull/134310 +[#134314]: https://github.com/home-assistant/core/pull/134314 +[#134320]: https://github.com/home-assistant/core/pull/134320 +[#134328]: https://github.com/home-assistant/core/pull/134328 +[#134330]: https://github.com/home-assistant/core/pull/134330 +[#134331]: https://github.com/home-assistant/core/pull/134331 +[#134333]: https://github.com/home-assistant/core/pull/134333 +[#134334]: https://github.com/home-assistant/core/pull/134334 +[#134339]: https://github.com/home-assistant/core/pull/134339 +[#134342]: https://github.com/home-assistant/core/pull/134342 +[#134347]: https://github.com/home-assistant/core/pull/134347 +[#134348]: https://github.com/home-assistant/core/pull/134348 +[#134354]: https://github.com/home-assistant/core/pull/134354 +[#134366]: https://github.com/home-assistant/core/pull/134366 +[#134368]: https://github.com/home-assistant/core/pull/134368 +[#134372]: https://github.com/home-assistant/core/pull/134372 +[#134382]: https://github.com/home-assistant/core/pull/134382 +[#134383]: https://github.com/home-assistant/core/pull/134383 +[#134385]: https://github.com/home-assistant/core/pull/134385 +[#134387]: https://github.com/home-assistant/core/pull/134387 +[#134393]: https://github.com/home-assistant/core/pull/134393 +[#134394]: https://github.com/home-assistant/core/pull/134394 +[#134399]: https://github.com/home-assistant/core/pull/134399 +[#134402]: https://github.com/home-assistant/core/pull/134402 +[#134410]: https://github.com/home-assistant/core/pull/134410 +[#134415]: https://github.com/home-assistant/core/pull/134415 +[#134416]: https://github.com/home-assistant/core/pull/134416 +[#134419]: https://github.com/home-assistant/core/pull/134419 +[#134420]: https://github.com/home-assistant/core/pull/134420 +[#134422]: https://github.com/home-assistant/core/pull/134422 +[#134426]: https://github.com/home-assistant/core/pull/134426 +[#134433]: https://github.com/home-assistant/core/pull/134433 +[#134441]: https://github.com/home-assistant/core/pull/134441 +[#134444]: https://github.com/home-assistant/core/pull/134444 +[#134446]: https://github.com/home-assistant/core/pull/134446 +[#134447]: https://github.com/home-assistant/core/pull/134447 +[#134450]: https://github.com/home-assistant/core/pull/134450 +[#134457]: https://github.com/home-assistant/core/pull/134457 +[#134459]: https://github.com/home-assistant/core/pull/134459 +[#134461]: https://github.com/home-assistant/core/pull/134461 +[#134465]: https://github.com/home-assistant/core/pull/134465 +[#134466]: https://github.com/home-assistant/core/pull/134466 +[#134468]: https://github.com/home-assistant/core/pull/134468 +[#134469]: https://github.com/home-assistant/core/pull/134469 +[#134472]: https://github.com/home-assistant/core/pull/134472 +[#134473]: https://github.com/home-assistant/core/pull/134473 +[#134475]: https://github.com/home-assistant/core/pull/134475 +[#134477]: https://github.com/home-assistant/core/pull/134477 +[#134478]: https://github.com/home-assistant/core/pull/134478 +[#134479]: https://github.com/home-assistant/core/pull/134479 +[#134480]: https://github.com/home-assistant/core/pull/134480 +[#134482]: https://github.com/home-assistant/core/pull/134482 +[#134485]: https://github.com/home-assistant/core/pull/134485 +[#134487]: https://github.com/home-assistant/core/pull/134487 +[#134488]: https://github.com/home-assistant/core/pull/134488 +[#134491]: https://github.com/home-assistant/core/pull/134491 +[#134492]: https://github.com/home-assistant/core/pull/134492 +[#134493]: https://github.com/home-assistant/core/pull/134493 +[#134494]: https://github.com/home-assistant/core/pull/134494 +[#134499]: https://github.com/home-assistant/core/pull/134499 +[#134501]: https://github.com/home-assistant/core/pull/134501 +[#134503]: https://github.com/home-assistant/core/pull/134503 +[#134522]: https://github.com/home-assistant/core/pull/134522 +[#134532]: https://github.com/home-assistant/core/pull/134532 +[#134533]: https://github.com/home-assistant/core/pull/134533 +[#134535]: https://github.com/home-assistant/core/pull/134535 +[#134536]: https://github.com/home-assistant/core/pull/134536 +[#134537]: https://github.com/home-assistant/core/pull/134537 +[#134543]: https://github.com/home-assistant/core/pull/134543 +[#134551]: https://github.com/home-assistant/core/pull/134551 +[#134553]: https://github.com/home-assistant/core/pull/134553 +[#134563]: https://github.com/home-assistant/core/pull/134563 +[#134576]: https://github.com/home-assistant/core/pull/134576 +[#134591]: https://github.com/home-assistant/core/pull/134591 +[#134596]: https://github.com/home-assistant/core/pull/134596 +[#134616]: https://github.com/home-assistant/core/pull/134616 +[#134617]: https://github.com/home-assistant/core/pull/134617 +[#134619]: https://github.com/home-assistant/core/pull/134619 +[#134621]: https://github.com/home-assistant/core/pull/134621 +[#134625]: https://github.com/home-assistant/core/pull/134625 +[#134634]: https://github.com/home-assistant/core/pull/134634 +[#134646]: https://github.com/home-assistant/core/pull/134646 +[#134654]: https://github.com/home-assistant/core/pull/134654 +[#134667]: https://github.com/home-assistant/core/pull/134667 +[#134668]: https://github.com/home-assistant/core/pull/134668 +[#134671]: https://github.com/home-assistant/core/pull/134671 +[#134680]: https://github.com/home-assistant/core/pull/134680 +[#134682]: https://github.com/home-assistant/core/pull/134682 +[#134683]: https://github.com/home-assistant/core/pull/134683 +[#134687]: https://github.com/home-assistant/core/pull/134687 +[#134692]: https://github.com/home-assistant/core/pull/134692 +[#134694]: https://github.com/home-assistant/core/pull/134694 +[#134697]: https://github.com/home-assistant/core/pull/134697 +[#134700]: https://github.com/home-assistant/core/pull/134700 +[#134705]: https://github.com/home-assistant/core/pull/134705 +[#134721]: https://github.com/home-assistant/core/pull/134721 +[#134722]: https://github.com/home-assistant/core/pull/134722 +[#134724]: https://github.com/home-assistant/core/pull/134724 +[#134733]: https://github.com/home-assistant/core/pull/134733 +[#134745]: https://github.com/home-assistant/core/pull/134745 +[#134747]: https://github.com/home-assistant/core/pull/134747 +[#134748]: https://github.com/home-assistant/core/pull/134748 +[#134752]: https://github.com/home-assistant/core/pull/134752 +[#134765]: https://github.com/home-assistant/core/pull/134765 +[#134776]: https://github.com/home-assistant/core/pull/134776 +[#134778]: https://github.com/home-assistant/core/pull/134778 +[#134779]: https://github.com/home-assistant/core/pull/134779 +[#134780]: https://github.com/home-assistant/core/pull/134780 +[#134783]: https://github.com/home-assistant/core/pull/134783 +[#134799]: https://github.com/home-assistant/core/pull/134799 +[#134807]: https://github.com/home-assistant/core/pull/134807 +[#134809]: https://github.com/home-assistant/core/pull/134809 +[#134815]: https://github.com/home-assistant/core/pull/134815 +[#134816]: https://github.com/home-assistant/core/pull/134816 +[#134817]: https://github.com/home-assistant/core/pull/134817 +[#134822]: https://github.com/home-assistant/core/pull/134822 +[#134824]: https://github.com/home-assistant/core/pull/134824 +[#134830]: https://github.com/home-assistant/core/pull/134830 +[#134831]: https://github.com/home-assistant/core/pull/134831 +[#134837]: https://github.com/home-assistant/core/pull/134837 +[#134838]: https://github.com/home-assistant/core/pull/134838 +[#134841]: https://github.com/home-assistant/core/pull/134841 +[#134843]: https://github.com/home-assistant/core/pull/134843 +[#134844]: https://github.com/home-assistant/core/pull/134844 +[#134852]: https://github.com/home-assistant/core/pull/134852 +[#134858]: https://github.com/home-assistant/core/pull/134858 +[#134888]: https://github.com/home-assistant/core/pull/134888 +[#134894]: https://github.com/home-assistant/core/pull/134894 +[#134900]: https://github.com/home-assistant/core/pull/134900 +[#134901]: https://github.com/home-assistant/core/pull/134901 +[#134906]: https://github.com/home-assistant/core/pull/134906 +[#134914]: https://github.com/home-assistant/core/pull/134914 +[#134916]: https://github.com/home-assistant/core/pull/134916 +[#134917]: https://github.com/home-assistant/core/pull/134917 +[#134920]: https://github.com/home-assistant/core/pull/134920 +[#134921]: https://github.com/home-assistant/core/pull/134921 +[#134924]: https://github.com/home-assistant/core/pull/134924 +[#134925]: https://github.com/home-assistant/core/pull/134925 +[#134926]: https://github.com/home-assistant/core/pull/134926 +[#134931]: https://github.com/home-assistant/core/pull/134931 +[#134935]: https://github.com/home-assistant/core/pull/134935 +[#134942]: https://github.com/home-assistant/core/pull/134942 +[#134947]: https://github.com/home-assistant/core/pull/134947 +[#134950]: https://github.com/home-assistant/core/pull/134950 +[#134951]: https://github.com/home-assistant/core/pull/134951 +[#134952]: https://github.com/home-assistant/core/pull/134952 +[#134953]: https://github.com/home-assistant/core/pull/134953 +[#134954]: https://github.com/home-assistant/core/pull/134954 +[#134956]: https://github.com/home-assistant/core/pull/134956 +[#134962]: https://github.com/home-assistant/core/pull/134962 +[#134966]: https://github.com/home-assistant/core/pull/134966 +[#134971]: https://github.com/home-assistant/core/pull/134971 +[#134975]: https://github.com/home-assistant/core/pull/134975 +[#134978]: https://github.com/home-assistant/core/pull/134978 +[#134982]: https://github.com/home-assistant/core/pull/134982 +[#134985]: https://github.com/home-assistant/core/pull/134985 +[#134990]: https://github.com/home-assistant/core/pull/134990 +[#134991]: https://github.com/home-assistant/core/pull/134991 +[#134993]: https://github.com/home-assistant/core/pull/134993 +[#134996]: https://github.com/home-assistant/core/pull/134996 +[#134998]: https://github.com/home-assistant/core/pull/134998 +[#135000]: https://github.com/home-assistant/core/pull/135000 +[#135004]: https://github.com/home-assistant/core/pull/135004 +[#135006]: https://github.com/home-assistant/core/pull/135006 +[#135015]: https://github.com/home-assistant/core/pull/135015 +[#135017]: https://github.com/home-assistant/core/pull/135017 +[#135018]: https://github.com/home-assistant/core/pull/135018 +[#135021]: https://github.com/home-assistant/core/pull/135021 +[#135022]: https://github.com/home-assistant/core/pull/135022 +[#135028]: https://github.com/home-assistant/core/pull/135028 +[#135029]: https://github.com/home-assistant/core/pull/135029 +[#135030]: https://github.com/home-assistant/core/pull/135030 +[#135031]: https://github.com/home-assistant/core/pull/135031 +[#135032]: https://github.com/home-assistant/core/pull/135032 +[#135042]: https://github.com/home-assistant/core/pull/135042 +[#135046]: https://github.com/home-assistant/core/pull/135046 +[#135049]: https://github.com/home-assistant/core/pull/135049 +[#135052]: https://github.com/home-assistant/core/pull/135052 +[#135057]: https://github.com/home-assistant/core/pull/135057 +[#135058]: https://github.com/home-assistant/core/pull/135058 +[#135067]: https://github.com/home-assistant/core/pull/135067 +[#135068]: https://github.com/home-assistant/core/pull/135068 +[#135070]: https://github.com/home-assistant/core/pull/135070 +[#135071]: https://github.com/home-assistant/core/pull/135071 +[#135075]: https://github.com/home-assistant/core/pull/135075 +[#135081]: https://github.com/home-assistant/core/pull/135081 +[#135083]: https://github.com/home-assistant/core/pull/135083 +[#135095]: https://github.com/home-assistant/core/pull/135095 +[#135098]: https://github.com/home-assistant/core/pull/135098 +[#135102]: https://github.com/home-assistant/core/pull/135102 +[#135105]: https://github.com/home-assistant/core/pull/135105 +[#135108]: https://github.com/home-assistant/core/pull/135108 +[#135109]: https://github.com/home-assistant/core/pull/135109 +[#135120]: https://github.com/home-assistant/core/pull/135120 +[#135121]: https://github.com/home-assistant/core/pull/135121 +[#135125]: https://github.com/home-assistant/core/pull/135125 +[#135126]: https://github.com/home-assistant/core/pull/135126 +[#135130]: https://github.com/home-assistant/core/pull/135130 +[#135133]: https://github.com/home-assistant/core/pull/135133 +[#135135]: https://github.com/home-assistant/core/pull/135135 +[#135138]: https://github.com/home-assistant/core/pull/135138 +[#135143]: https://github.com/home-assistant/core/pull/135143 +[#135148]: https://github.com/home-assistant/core/pull/135148 +[#135153]: https://github.com/home-assistant/core/pull/135153 +[#135162]: https://github.com/home-assistant/core/pull/135162 +[#135171]: https://github.com/home-assistant/core/pull/135171 +[#135172]: https://github.com/home-assistant/core/pull/135172 +[#135176]: https://github.com/home-assistant/core/pull/135176 +[#135177]: https://github.com/home-assistant/core/pull/135177 +[#135178]: https://github.com/home-assistant/core/pull/135178 +[#135181]: https://github.com/home-assistant/core/pull/135181 +[#135182]: https://github.com/home-assistant/core/pull/135182 +[#135183]: https://github.com/home-assistant/core/pull/135183 +[#135186]: https://github.com/home-assistant/core/pull/135186 +[#135187]: https://github.com/home-assistant/core/pull/135187 +[#135194]: https://github.com/home-assistant/core/pull/135194 +[#135197]: https://github.com/home-assistant/core/pull/135197 +[#135199]: https://github.com/home-assistant/core/pull/135199 +[#135202]: https://github.com/home-assistant/core/pull/135202 +[#135205]: https://github.com/home-assistant/core/pull/135205 +[#135206]: https://github.com/home-assistant/core/pull/135206 +[#135209]: https://github.com/home-assistant/core/pull/135209 +[#135213]: https://github.com/home-assistant/core/pull/135213 +[#135214]: https://github.com/home-assistant/core/pull/135214 +[#135220]: https://github.com/home-assistant/core/pull/135220 +[#135224]: https://github.com/home-assistant/core/pull/135224 +[#135225]: https://github.com/home-assistant/core/pull/135225 +[#135227]: https://github.com/home-assistant/core/pull/135227 +[#135228]: https://github.com/home-assistant/core/pull/135228 +[#135229]: https://github.com/home-assistant/core/pull/135229 +[#135232]: https://github.com/home-assistant/core/pull/135232 +[#135234]: https://github.com/home-assistant/core/pull/135234 +[#135236]: https://github.com/home-assistant/core/pull/135236 +[#135237]: https://github.com/home-assistant/core/pull/135237 +[#135244]: https://github.com/home-assistant/core/pull/135244 +[#135248]: https://github.com/home-assistant/core/pull/135248 +[#135254]: https://github.com/home-assistant/core/pull/135254 +[#135255]: https://github.com/home-assistant/core/pull/135255 +[#135256]: https://github.com/home-assistant/core/pull/135256 +[#135257]: https://github.com/home-assistant/core/pull/135257 +[#135260]: https://github.com/home-assistant/core/pull/135260 +[#135261]: https://github.com/home-assistant/core/pull/135261 +[#135263]: https://github.com/home-assistant/core/pull/135263 +[#135264]: https://github.com/home-assistant/core/pull/135264 +[#135265]: https://github.com/home-assistant/core/pull/135265 +[#135267]: https://github.com/home-assistant/core/pull/135267 +[#135268]: https://github.com/home-assistant/core/pull/135268 +[#135269]: https://github.com/home-assistant/core/pull/135269 +[#135271]: https://github.com/home-assistant/core/pull/135271 +[#135277]: https://github.com/home-assistant/core/pull/135277 +[#135279]: https://github.com/home-assistant/core/pull/135279 +[#135281]: https://github.com/home-assistant/core/pull/135281 +[#135283]: https://github.com/home-assistant/core/pull/135283 +[#135285]: https://github.com/home-assistant/core/pull/135285 +[#135292]: https://github.com/home-assistant/core/pull/135292 +[#135294]: https://github.com/home-assistant/core/pull/135294 +[#135295]: https://github.com/home-assistant/core/pull/135295 +[#135299]: https://github.com/home-assistant/core/pull/135299 +[#135301]: https://github.com/home-assistant/core/pull/135301 +[#135303]: https://github.com/home-assistant/core/pull/135303 +[#135305]: https://github.com/home-assistant/core/pull/135305 +[#135306]: https://github.com/home-assistant/core/pull/135306 +[#135309]: https://github.com/home-assistant/core/pull/135309 +[#135312]: https://github.com/home-assistant/core/pull/135312 +[#135315]: https://github.com/home-assistant/core/pull/135315 +[#135320]: https://github.com/home-assistant/core/pull/135320 +[#135322]: https://github.com/home-assistant/core/pull/135322 +[#135323]: https://github.com/home-assistant/core/pull/135323 +[#135328]: https://github.com/home-assistant/core/pull/135328 +[#135331]: https://github.com/home-assistant/core/pull/135331 +[#135336]: https://github.com/home-assistant/core/pull/135336 +[#135337]: https://github.com/home-assistant/core/pull/135337 +[#135344]: https://github.com/home-assistant/core/pull/135344 +[#135347]: https://github.com/home-assistant/core/pull/135347 +[#135348]: https://github.com/home-assistant/core/pull/135348 +[#135349]: https://github.com/home-assistant/core/pull/135349 +[#135350]: https://github.com/home-assistant/core/pull/135350 +[#135353]: https://github.com/home-assistant/core/pull/135353 +[#135357]: https://github.com/home-assistant/core/pull/135357 +[#135359]: https://github.com/home-assistant/core/pull/135359 +[#135360]: https://github.com/home-assistant/core/pull/135360 +[#135362]: https://github.com/home-assistant/core/pull/135362 +[#135368]: https://github.com/home-assistant/core/pull/135368 +[#135370]: https://github.com/home-assistant/core/pull/135370 +[#135377]: https://github.com/home-assistant/core/pull/135377 +[#135382]: https://github.com/home-assistant/core/pull/135382 +[#135383]: https://github.com/home-assistant/core/pull/135383 +[#135384]: https://github.com/home-assistant/core/pull/135384 +[#135396]: https://github.com/home-assistant/core/pull/135396 +[#135397]: https://github.com/home-assistant/core/pull/135397 +[#135398]: https://github.com/home-assistant/core/pull/135398 +[#135399]: https://github.com/home-assistant/core/pull/135399 +[#135400]: https://github.com/home-assistant/core/pull/135400 +[#135408]: https://github.com/home-assistant/core/pull/135408 +[#135415]: https://github.com/home-assistant/core/pull/135415 +[#135419]: https://github.com/home-assistant/core/pull/135419 +[#135423]: https://github.com/home-assistant/core/pull/135423 +[#135426]: https://github.com/home-assistant/core/pull/135426 +[#135431]: https://github.com/home-assistant/core/pull/135431 +[#135433]: https://github.com/home-assistant/core/pull/135433 +[#135441]: https://github.com/home-assistant/core/pull/135441 +[#135445]: https://github.com/home-assistant/core/pull/135445 +[#135447]: https://github.com/home-assistant/core/pull/135447 +[#135448]: https://github.com/home-assistant/core/pull/135448 +[#135449]: https://github.com/home-assistant/core/pull/135449 +[#135454]: https://github.com/home-assistant/core/pull/135454 +[#135455]: https://github.com/home-assistant/core/pull/135455 +[#135457]: https://github.com/home-assistant/core/pull/135457 +[#135458]: https://github.com/home-assistant/core/pull/135458 +[#135465]: https://github.com/home-assistant/core/pull/135465 +[#135470]: https://github.com/home-assistant/core/pull/135470 +[#135472]: https://github.com/home-assistant/core/pull/135472 +[#135475]: https://github.com/home-assistant/core/pull/135475 +[#135492]: https://github.com/home-assistant/core/pull/135492 +[#135497]: https://github.com/home-assistant/core/pull/135497 +[#135500]: https://github.com/home-assistant/core/pull/135500 +[#135506]: https://github.com/home-assistant/core/pull/135506 +[#135509]: https://github.com/home-assistant/core/pull/135509 +[#135510]: https://github.com/home-assistant/core/pull/135510 +[#135512]: https://github.com/home-assistant/core/pull/135512 +[#135514]: https://github.com/home-assistant/core/pull/135514 +[#135518]: https://github.com/home-assistant/core/pull/135518 +[#135520]: https://github.com/home-assistant/core/pull/135520 +[#135521]: https://github.com/home-assistant/core/pull/135521 +[#135523]: https://github.com/home-assistant/core/pull/135523 +[#135524]: https://github.com/home-assistant/core/pull/135524 +[#135525]: https://github.com/home-assistant/core/pull/135525 +[#135530]: https://github.com/home-assistant/core/pull/135530 +[#135536]: https://github.com/home-assistant/core/pull/135536 +[#135537]: https://github.com/home-assistant/core/pull/135537 +[#135538]: https://github.com/home-assistant/core/pull/135538 +[#135543]: https://github.com/home-assistant/core/pull/135543 +[#135545]: https://github.com/home-assistant/core/pull/135545 +[#135546]: https://github.com/home-assistant/core/pull/135546 +[#135547]: https://github.com/home-assistant/core/pull/135547 +[#135548]: https://github.com/home-assistant/core/pull/135548 +[#135550]: https://github.com/home-assistant/core/pull/135550 +[#135551]: https://github.com/home-assistant/core/pull/135551 +[#135562]: https://github.com/home-assistant/core/pull/135562 +[#135563]: https://github.com/home-assistant/core/pull/135563 +[#135564]: https://github.com/home-assistant/core/pull/135564 +[#135571]: https://github.com/home-assistant/core/pull/135571 +[#135574]: https://github.com/home-assistant/core/pull/135574 +[#135575]: https://github.com/home-assistant/core/pull/135575 +[#135576]: https://github.com/home-assistant/core/pull/135576 +[#135577]: https://github.com/home-assistant/core/pull/135577 +[#135578]: https://github.com/home-assistant/core/pull/135578 +[#135579]: https://github.com/home-assistant/core/pull/135579 +[#135581]: https://github.com/home-assistant/core/pull/135581 +[#135582]: https://github.com/home-assistant/core/pull/135582 +[#135583]: https://github.com/home-assistant/core/pull/135583 +[#135585]: https://github.com/home-assistant/core/pull/135585 +[#135586]: https://github.com/home-assistant/core/pull/135586 +[#135588]: https://github.com/home-assistant/core/pull/135588 +[#135589]: https://github.com/home-assistant/core/pull/135589 +[#135591]: https://github.com/home-assistant/core/pull/135591 +[#135595]: https://github.com/home-assistant/core/pull/135595 +[#135601]: https://github.com/home-assistant/core/pull/135601 +[#135603]: https://github.com/home-assistant/core/pull/135603 +[#135606]: https://github.com/home-assistant/core/pull/135606 +[#135611]: https://github.com/home-assistant/core/pull/135611 +[#135612]: https://github.com/home-assistant/core/pull/135612 +[#135614]: https://github.com/home-assistant/core/pull/135614 +[#135615]: https://github.com/home-assistant/core/pull/135615 +[#135618]: https://github.com/home-assistant/core/pull/135618 +[#135620]: https://github.com/home-assistant/core/pull/135620 +[#135622]: https://github.com/home-assistant/core/pull/135622 +[#135625]: https://github.com/home-assistant/core/pull/135625 +[#135626]: https://github.com/home-assistant/core/pull/135626 +[#135628]: https://github.com/home-assistant/core/pull/135628 +[#135631]: https://github.com/home-assistant/core/pull/135631 +[#135633]: https://github.com/home-assistant/core/pull/135633 +[#135635]: https://github.com/home-assistant/core/pull/135635 +[#135636]: https://github.com/home-assistant/core/pull/135636 +[#135638]: https://github.com/home-assistant/core/pull/135638 +[#135645]: https://github.com/home-assistant/core/pull/135645 +[#135647]: https://github.com/home-assistant/core/pull/135647 +[#135649]: https://github.com/home-assistant/core/pull/135649 +[#135650]: https://github.com/home-assistant/core/pull/135650 +[#135653]: https://github.com/home-assistant/core/pull/135653 +[#135654]: https://github.com/home-assistant/core/pull/135654 +[#135658]: https://github.com/home-assistant/core/pull/135658 +[#135659]: https://github.com/home-assistant/core/pull/135659 +[#135660]: https://github.com/home-assistant/core/pull/135660 +[#135661]: https://github.com/home-assistant/core/pull/135661 +[#135662]: https://github.com/home-assistant/core/pull/135662 +[#135663]: https://github.com/home-assistant/core/pull/135663 +[#135667]: https://github.com/home-assistant/core/pull/135667 +[#135670]: https://github.com/home-assistant/core/pull/135670 +[#135672]: https://github.com/home-assistant/core/pull/135672 +[#135674]: https://github.com/home-assistant/core/pull/135674 +[#135676]: https://github.com/home-assistant/core/pull/135676 +[#135680]: https://github.com/home-assistant/core/pull/135680 +[#135681]: https://github.com/home-assistant/core/pull/135681 +[#135682]: https://github.com/home-assistant/core/pull/135682 +[#135685]: https://github.com/home-assistant/core/pull/135685 +[#135687]: https://github.com/home-assistant/core/pull/135687 +[#135688]: https://github.com/home-assistant/core/pull/135688 +[#135689]: https://github.com/home-assistant/core/pull/135689 +[#135690]: https://github.com/home-assistant/core/pull/135690 +[#135691]: https://github.com/home-assistant/core/pull/135691 +[#135692]: https://github.com/home-assistant/core/pull/135692 +[#135693]: https://github.com/home-assistant/core/pull/135693 +[#135694]: https://github.com/home-assistant/core/pull/135694 +[#135695]: https://github.com/home-assistant/core/pull/135695 +[#135696]: https://github.com/home-assistant/core/pull/135696 +[#135697]: https://github.com/home-assistant/core/pull/135697 +[#135698]: https://github.com/home-assistant/core/pull/135698 +[#135699]: https://github.com/home-assistant/core/pull/135699 +[#135700]: https://github.com/home-assistant/core/pull/135700 +[#135702]: https://github.com/home-assistant/core/pull/135702 +[#135703]: https://github.com/home-assistant/core/pull/135703 +[#135704]: https://github.com/home-assistant/core/pull/135704 +[#135705]: https://github.com/home-assistant/core/pull/135705 +[#135707]: https://github.com/home-assistant/core/pull/135707 +[#135708]: https://github.com/home-assistant/core/pull/135708 +[#135709]: https://github.com/home-assistant/core/pull/135709 +[#135711]: https://github.com/home-assistant/core/pull/135711 +[#135712]: https://github.com/home-assistant/core/pull/135712 +[#135714]: https://github.com/home-assistant/core/pull/135714 +[#135715]: https://github.com/home-assistant/core/pull/135715 +[#135716]: https://github.com/home-assistant/core/pull/135716 +[#135718]: https://github.com/home-assistant/core/pull/135718 +[#135719]: https://github.com/home-assistant/core/pull/135719 +[#135720]: https://github.com/home-assistant/core/pull/135720 +[#135721]: https://github.com/home-assistant/core/pull/135721 +[#135722]: https://github.com/home-assistant/core/pull/135722 +[#135723]: https://github.com/home-assistant/core/pull/135723 +[#135724]: https://github.com/home-assistant/core/pull/135724 +[#135725]: https://github.com/home-assistant/core/pull/135725 +[#135726]: https://github.com/home-assistant/core/pull/135726 +[#135727]: https://github.com/home-assistant/core/pull/135727 +[#135728]: https://github.com/home-assistant/core/pull/135728 +[#135729]: https://github.com/home-assistant/core/pull/135729 +[#135733]: https://github.com/home-assistant/core/pull/135733 +[#135734]: https://github.com/home-assistant/core/pull/135734 +[#135743]: https://github.com/home-assistant/core/pull/135743 +[#135746]: https://github.com/home-assistant/core/pull/135746 +[#135747]: https://github.com/home-assistant/core/pull/135747 +[#135749]: https://github.com/home-assistant/core/pull/135749 +[#135750]: https://github.com/home-assistant/core/pull/135750 +[#135751]: https://github.com/home-assistant/core/pull/135751 +[#135752]: https://github.com/home-assistant/core/pull/135752 +[#135757]: https://github.com/home-assistant/core/pull/135757 +[#135760]: https://github.com/home-assistant/core/pull/135760 +[#135762]: https://github.com/home-assistant/core/pull/135762 +[#135765]: https://github.com/home-assistant/core/pull/135765 +[#135767]: https://github.com/home-assistant/core/pull/135767 +[#135770]: https://github.com/home-assistant/core/pull/135770 +[#135773]: https://github.com/home-assistant/core/pull/135773 +[#135777]: https://github.com/home-assistant/core/pull/135777 +[#135778]: https://github.com/home-assistant/core/pull/135778 +[#135780]: https://github.com/home-assistant/core/pull/135780 +[#135781]: https://github.com/home-assistant/core/pull/135781 +[#135784]: https://github.com/home-assistant/core/pull/135784 +[#135786]: https://github.com/home-assistant/core/pull/135786 +[#135787]: https://github.com/home-assistant/core/pull/135787 +[#135788]: https://github.com/home-assistant/core/pull/135788 +[#135792]: https://github.com/home-assistant/core/pull/135792 +[#135795]: https://github.com/home-assistant/core/pull/135795 +[#135797]: https://github.com/home-assistant/core/pull/135797 +[#135798]: https://github.com/home-assistant/core/pull/135798 +[#135799]: https://github.com/home-assistant/core/pull/135799 +[#135800]: https://github.com/home-assistant/core/pull/135800 +[#135801]: https://github.com/home-assistant/core/pull/135801 +[#135802]: https://github.com/home-assistant/core/pull/135802 +[#135804]: https://github.com/home-assistant/core/pull/135804 +[#135805]: https://github.com/home-assistant/core/pull/135805 +[#135806]: https://github.com/home-assistant/core/pull/135806 +[#135807]: https://github.com/home-assistant/core/pull/135807 +[#135808]: https://github.com/home-assistant/core/pull/135808 +[#135809]: https://github.com/home-assistant/core/pull/135809 +[#135812]: https://github.com/home-assistant/core/pull/135812 +[#135815]: https://github.com/home-assistant/core/pull/135815 +[#135817]: https://github.com/home-assistant/core/pull/135817 +[#135818]: https://github.com/home-assistant/core/pull/135818 +[#135822]: https://github.com/home-assistant/core/pull/135822 +[#135825]: https://github.com/home-assistant/core/pull/135825 +[#135830]: https://github.com/home-assistant/core/pull/135830 +[#135832]: https://github.com/home-assistant/core/pull/135832 +[#135833]: https://github.com/home-assistant/core/pull/135833 +[#135835]: https://github.com/home-assistant/core/pull/135835 +[#135836]: https://github.com/home-assistant/core/pull/135836 +[#135838]: https://github.com/home-assistant/core/pull/135838 +[#135842]: https://github.com/home-assistant/core/pull/135842 +[#135846]: https://github.com/home-assistant/core/pull/135846 +[#135847]: https://github.com/home-assistant/core/pull/135847 +[#135852]: https://github.com/home-assistant/core/pull/135852 +[#135856]: https://github.com/home-assistant/core/pull/135856 +[#135858]: https://github.com/home-assistant/core/pull/135858 +[#135861]: https://github.com/home-assistant/core/pull/135861 +[#135869]: https://github.com/home-assistant/core/pull/135869 +[#135871]: https://github.com/home-assistant/core/pull/135871 +[#135872]: https://github.com/home-assistant/core/pull/135872 +[#135874]: https://github.com/home-assistant/core/pull/135874 +[#135875]: https://github.com/home-assistant/core/pull/135875 +[#135877]: https://github.com/home-assistant/core/pull/135877 +[#135878]: https://github.com/home-assistant/core/pull/135878 +[#135879]: https://github.com/home-assistant/core/pull/135879 +[#135882]: https://github.com/home-assistant/core/pull/135882 +[#135883]: https://github.com/home-assistant/core/pull/135883 +[#135886]: https://github.com/home-assistant/core/pull/135886 +[#135887]: https://github.com/home-assistant/core/pull/135887 +[#135889]: https://github.com/home-assistant/core/pull/135889 +[#135891]: https://github.com/home-assistant/core/pull/135891 +[#135896]: https://github.com/home-assistant/core/pull/135896 +[#135899]: https://github.com/home-assistant/core/pull/135899 +[#135901]: https://github.com/home-assistant/core/pull/135901 +[#135902]: https://github.com/home-assistant/core/pull/135902 +[#135903]: https://github.com/home-assistant/core/pull/135903 +[#135904]: https://github.com/home-assistant/core/pull/135904 +[#135905]: https://github.com/home-assistant/core/pull/135905 +[#135909]: https://github.com/home-assistant/core/pull/135909 +[#135910]: https://github.com/home-assistant/core/pull/135910 +[#135911]: https://github.com/home-assistant/core/pull/135911 +[#135913]: https://github.com/home-assistant/core/pull/135913 +[#135915]: https://github.com/home-assistant/core/pull/135915 +[#135917]: https://github.com/home-assistant/core/pull/135917 +[#135918]: https://github.com/home-assistant/core/pull/135918 +[#135919]: https://github.com/home-assistant/core/pull/135919 +[#135921]: https://github.com/home-assistant/core/pull/135921 +[#135927]: https://github.com/home-assistant/core/pull/135927 +[#135928]: https://github.com/home-assistant/core/pull/135928 +[#135929]: https://github.com/home-assistant/core/pull/135929 +[#135930]: https://github.com/home-assistant/core/pull/135930 +[#135932]: https://github.com/home-assistant/core/pull/135932 +[#135939]: https://github.com/home-assistant/core/pull/135939 +[#135940]: https://github.com/home-assistant/core/pull/135940 +[#135948]: https://github.com/home-assistant/core/pull/135948 +[#135949]: https://github.com/home-assistant/core/pull/135949 +[#135950]: https://github.com/home-assistant/core/pull/135950 +[#135953]: https://github.com/home-assistant/core/pull/135953 +[#135954]: https://github.com/home-assistant/core/pull/135954 +[#135957]: https://github.com/home-assistant/core/pull/135957 +[#135961]: https://github.com/home-assistant/core/pull/135961 +[#135962]: https://github.com/home-assistant/core/pull/135962 +[#135963]: https://github.com/home-assistant/core/pull/135963 +[#135974]: https://github.com/home-assistant/core/pull/135974 +[#135975]: https://github.com/home-assistant/core/pull/135975 +[#135978]: https://github.com/home-assistant/core/pull/135978 +[#135981]: https://github.com/home-assistant/core/pull/135981 +[#135982]: https://github.com/home-assistant/core/pull/135982 +[#135985]: https://github.com/home-assistant/core/pull/135985 +[#135986]: https://github.com/home-assistant/core/pull/135986 +[#135988]: https://github.com/home-assistant/core/pull/135988 +[#135990]: https://github.com/home-assistant/core/pull/135990 +[#135991]: https://github.com/home-assistant/core/pull/135991 +[#135992]: https://github.com/home-assistant/core/pull/135992 +[#135998]: https://github.com/home-assistant/core/pull/135998 +[#136000]: https://github.com/home-assistant/core/pull/136000 +[#136004]: https://github.com/home-assistant/core/pull/136004 +[#136006]: https://github.com/home-assistant/core/pull/136006 +[#136009]: https://github.com/home-assistant/core/pull/136009 +[#136012]: https://github.com/home-assistant/core/pull/136012 +[#136016]: https://github.com/home-assistant/core/pull/136016 +[#136020]: https://github.com/home-assistant/core/pull/136020 +[#136027]: https://github.com/home-assistant/core/pull/136027 +[#136037]: https://github.com/home-assistant/core/pull/136037 +[#136038]: https://github.com/home-assistant/core/pull/136038 +[#136040]: https://github.com/home-assistant/core/pull/136040 +[#136041]: https://github.com/home-assistant/core/pull/136041 +[#136042]: https://github.com/home-assistant/core/pull/136042 +[#136045]: https://github.com/home-assistant/core/pull/136045 +[#136048]: https://github.com/home-assistant/core/pull/136048 +[#136049]: https://github.com/home-assistant/core/pull/136049 +[#136051]: https://github.com/home-assistant/core/pull/136051 +[#136053]: https://github.com/home-assistant/core/pull/136053 +[#136057]: https://github.com/home-assistant/core/pull/136057 +[#136058]: https://github.com/home-assistant/core/pull/136058 +[#136062]: https://github.com/home-assistant/core/pull/136062 +[#136063]: https://github.com/home-assistant/core/pull/136063 +[#136064]: https://github.com/home-assistant/core/pull/136064 +[#136065]: https://github.com/home-assistant/core/pull/136065 +[#136067]: https://github.com/home-assistant/core/pull/136067 +[#136071]: https://github.com/home-assistant/core/pull/136071 +[#136078]: https://github.com/home-assistant/core/pull/136078 +[#136079]: https://github.com/home-assistant/core/pull/136079 +[#136082]: https://github.com/home-assistant/core/pull/136082 +[#136084]: https://github.com/home-assistant/core/pull/136084 +[#136085]: https://github.com/home-assistant/core/pull/136085 +[#136086]: https://github.com/home-assistant/core/pull/136086 +[#136088]: https://github.com/home-assistant/core/pull/136088 +[#136089]: https://github.com/home-assistant/core/pull/136089 +[#136090]: https://github.com/home-assistant/core/pull/136090 +[#136094]: https://github.com/home-assistant/core/pull/136094 +[#136096]: https://github.com/home-assistant/core/pull/136096 +[#136097]: https://github.com/home-assistant/core/pull/136097 +[#136099]: https://github.com/home-assistant/core/pull/136099 +[#136102]: https://github.com/home-assistant/core/pull/136102 +[#136104]: https://github.com/home-assistant/core/pull/136104 +[#136105]: https://github.com/home-assistant/core/pull/136105 +[#136106]: https://github.com/home-assistant/core/pull/136106 +[#136108]: https://github.com/home-assistant/core/pull/136108 +[#136110]: https://github.com/home-assistant/core/pull/136110 +[#136113]: https://github.com/home-assistant/core/pull/136113 +[#136114]: https://github.com/home-assistant/core/pull/136114 +[#136120]: https://github.com/home-assistant/core/pull/136120 +[#136123]: https://github.com/home-assistant/core/pull/136123 +[#136133]: https://github.com/home-assistant/core/pull/136133 +[#136134]: https://github.com/home-assistant/core/pull/136134 +[#136136]: https://github.com/home-assistant/core/pull/136136 +[#136140]: https://github.com/home-assistant/core/pull/136140 +[#136141]: https://github.com/home-assistant/core/pull/136141 +[#136142]: https://github.com/home-assistant/core/pull/136142 +[#136145]: https://github.com/home-assistant/core/pull/136145 +[#136146]: https://github.com/home-assistant/core/pull/136146 +[#136147]: https://github.com/home-assistant/core/pull/136147 +[#136148]: https://github.com/home-assistant/core/pull/136148 +[#136149]: https://github.com/home-assistant/core/pull/136149 +[#136150]: https://github.com/home-assistant/core/pull/136150 +[#136152]: https://github.com/home-assistant/core/pull/136152 +[#136153]: https://github.com/home-assistant/core/pull/136153 +[#136154]: https://github.com/home-assistant/core/pull/136154 +[#136155]: https://github.com/home-assistant/core/pull/136155 +[#136157]: https://github.com/home-assistant/core/pull/136157 +[#136159]: https://github.com/home-assistant/core/pull/136159 +[#136160]: https://github.com/home-assistant/core/pull/136160 +[#136164]: https://github.com/home-assistant/core/pull/136164 +[#136166]: https://github.com/home-assistant/core/pull/136166 +[#136169]: https://github.com/home-assistant/core/pull/136169 +[#136170]: https://github.com/home-assistant/core/pull/136170 +[#136172]: https://github.com/home-assistant/core/pull/136172 +[#136174]: https://github.com/home-assistant/core/pull/136174 +[#136177]: https://github.com/home-assistant/core/pull/136177 +[#136178]: https://github.com/home-assistant/core/pull/136178 +[#136180]: https://github.com/home-assistant/core/pull/136180 +[#136188]: https://github.com/home-assistant/core/pull/136188 +[#136190]: https://github.com/home-assistant/core/pull/136190 +[#136191]: https://github.com/home-assistant/core/pull/136191 +[#136194]: https://github.com/home-assistant/core/pull/136194 +[#136195]: https://github.com/home-assistant/core/pull/136195 +[#136196]: https://github.com/home-assistant/core/pull/136196 +[#136197]: https://github.com/home-assistant/core/pull/136197 +[#136198]: https://github.com/home-assistant/core/pull/136198 +[#136199]: https://github.com/home-assistant/core/pull/136199 +[#136200]: https://github.com/home-assistant/core/pull/136200 +[#136201]: https://github.com/home-assistant/core/pull/136201 +[#136202]: https://github.com/home-assistant/core/pull/136202 +[#136203]: https://github.com/home-assistant/core/pull/136203 +[#136205]: https://github.com/home-assistant/core/pull/136205 +[#136206]: https://github.com/home-assistant/core/pull/136206 +[#136210]: https://github.com/home-assistant/core/pull/136210 +[#136211]: https://github.com/home-assistant/core/pull/136211 +[#136212]: https://github.com/home-assistant/core/pull/136212 +[#136213]: https://github.com/home-assistant/core/pull/136213 +[#136214]: https://github.com/home-assistant/core/pull/136214 +[#136215]: https://github.com/home-assistant/core/pull/136215 +[#136220]: https://github.com/home-assistant/core/pull/136220 +[#136221]: https://github.com/home-assistant/core/pull/136221 +[#136225]: https://github.com/home-assistant/core/pull/136225 +[#136228]: https://github.com/home-assistant/core/pull/136228 +[#136230]: https://github.com/home-assistant/core/pull/136230 +[#136231]: https://github.com/home-assistant/core/pull/136231 +[#136233]: https://github.com/home-assistant/core/pull/136233 +[#136235]: https://github.com/home-assistant/core/pull/136235 +[#136241]: https://github.com/home-assistant/core/pull/136241 +[#136243]: https://github.com/home-assistant/core/pull/136243 +[#136247]: https://github.com/home-assistant/core/pull/136247 +[#136248]: https://github.com/home-assistant/core/pull/136248 +[#136251]: https://github.com/home-assistant/core/pull/136251 +[#136253]: https://github.com/home-assistant/core/pull/136253 +[#136258]: https://github.com/home-assistant/core/pull/136258 +[#136259]: https://github.com/home-assistant/core/pull/136259 +[#136260]: https://github.com/home-assistant/core/pull/136260 +[#136261]: https://github.com/home-assistant/core/pull/136261 +[#136265]: https://github.com/home-assistant/core/pull/136265 +[#136267]: https://github.com/home-assistant/core/pull/136267 +[#136270]: https://github.com/home-assistant/core/pull/136270 +[#136271]: https://github.com/home-assistant/core/pull/136271 +[#136277]: https://github.com/home-assistant/core/pull/136277 +[#136279]: https://github.com/home-assistant/core/pull/136279 +[#136280]: https://github.com/home-assistant/core/pull/136280 +[#136281]: https://github.com/home-assistant/core/pull/136281 +[#136282]: https://github.com/home-assistant/core/pull/136282 +[#136283]: https://github.com/home-assistant/core/pull/136283 +[#136285]: https://github.com/home-assistant/core/pull/136285 +[#136287]: https://github.com/home-assistant/core/pull/136287 +[#136289]: https://github.com/home-assistant/core/pull/136289 +[#136290]: https://github.com/home-assistant/core/pull/136290 +[#136291]: https://github.com/home-assistant/core/pull/136291 +[#136292]: https://github.com/home-assistant/core/pull/136292 +[#136294]: https://github.com/home-assistant/core/pull/136294 +[#136299]: https://github.com/home-assistant/core/pull/136299 +[#136300]: https://github.com/home-assistant/core/pull/136300 +[#136301]: https://github.com/home-assistant/core/pull/136301 +[#136302]: https://github.com/home-assistant/core/pull/136302 +[#136303]: https://github.com/home-assistant/core/pull/136303 +[#136304]: https://github.com/home-assistant/core/pull/136304 +[#136306]: https://github.com/home-assistant/core/pull/136306 +[#136307]: https://github.com/home-assistant/core/pull/136307 +[#136308]: https://github.com/home-assistant/core/pull/136308 +[#136309]: https://github.com/home-assistant/core/pull/136309 +[#136312]: https://github.com/home-assistant/core/pull/136312 +[#136313]: https://github.com/home-assistant/core/pull/136313 +[#136314]: https://github.com/home-assistant/core/pull/136314 +[#136316]: https://github.com/home-assistant/core/pull/136316 +[#136317]: https://github.com/home-assistant/core/pull/136317 +[#136318]: https://github.com/home-assistant/core/pull/136318 +[#136322]: https://github.com/home-assistant/core/pull/136322 +[#136323]: https://github.com/home-assistant/core/pull/136323 +[#136324]: https://github.com/home-assistant/core/pull/136324 +[#136327]: https://github.com/home-assistant/core/pull/136327 +[#136335]: https://github.com/home-assistant/core/pull/136335 +[#136336]: https://github.com/home-assistant/core/pull/136336 +[#136338]: https://github.com/home-assistant/core/pull/136338 +[#136343]: https://github.com/home-assistant/core/pull/136343 +[#136349]: https://github.com/home-assistant/core/pull/136349 +[#136354]: https://github.com/home-assistant/core/pull/136354 +[#136356]: https://github.com/home-assistant/core/pull/136356 +[#136357]: https://github.com/home-assistant/core/pull/136357 +[#136358]: https://github.com/home-assistant/core/pull/136358 +[#136360]: https://github.com/home-assistant/core/pull/136360 +[#136363]: https://github.com/home-assistant/core/pull/136363 +[#136365]: https://github.com/home-assistant/core/pull/136365 +[#136374]: https://github.com/home-assistant/core/pull/136374 +[#136376]: https://github.com/home-assistant/core/pull/136376 +[#136377]: https://github.com/home-assistant/core/pull/136377 +[#136378]: https://github.com/home-assistant/core/pull/136378 +[#136379]: https://github.com/home-assistant/core/pull/136379 +[#136380]: https://github.com/home-assistant/core/pull/136380 +[#136381]: https://github.com/home-assistant/core/pull/136381 +[#136382]: https://github.com/home-assistant/core/pull/136382 +[#136384]: https://github.com/home-assistant/core/pull/136384 +[#136386]: https://github.com/home-assistant/core/pull/136386 +[#136389]: https://github.com/home-assistant/core/pull/136389 +[#136397]: https://github.com/home-assistant/core/pull/136397 +[#136398]: https://github.com/home-assistant/core/pull/136398 +[#136401]: https://github.com/home-assistant/core/pull/136401 +[#136402]: https://github.com/home-assistant/core/pull/136402 +[#136403]: https://github.com/home-assistant/core/pull/136403 +[#136405]: https://github.com/home-assistant/core/pull/136405 +[#136406]: https://github.com/home-assistant/core/pull/136406 +[#136409]: https://github.com/home-assistant/core/pull/136409 +[#136410]: https://github.com/home-assistant/core/pull/136410 +[#136411]: https://github.com/home-assistant/core/pull/136411 +[#136412]: https://github.com/home-assistant/core/pull/136412 +[#136413]: https://github.com/home-assistant/core/pull/136413 +[#136414]: https://github.com/home-assistant/core/pull/136414 +[#136416]: https://github.com/home-assistant/core/pull/136416 +[#136418]: https://github.com/home-assistant/core/pull/136418 +[#136421]: https://github.com/home-assistant/core/pull/136421 +[#136422]: https://github.com/home-assistant/core/pull/136422 +[#136424]: https://github.com/home-assistant/core/pull/136424 +[#136426]: https://github.com/home-assistant/core/pull/136426 +[#136430]: https://github.com/home-assistant/core/pull/136430 +[#136432]: https://github.com/home-assistant/core/pull/136432 +[#136433]: https://github.com/home-assistant/core/pull/136433 +[#136434]: https://github.com/home-assistant/core/pull/136434 +[#136435]: https://github.com/home-assistant/core/pull/136435 +[#136437]: https://github.com/home-assistant/core/pull/136437 +[#136438]: https://github.com/home-assistant/core/pull/136438 +[#136440]: https://github.com/home-assistant/core/pull/136440 +[#136441]: https://github.com/home-assistant/core/pull/136441 +[#136442]: https://github.com/home-assistant/core/pull/136442 +[#136443]: https://github.com/home-assistant/core/pull/136443 +[#136444]: https://github.com/home-assistant/core/pull/136444 +[#136445]: https://github.com/home-assistant/core/pull/136445 +[#136446]: https://github.com/home-assistant/core/pull/136446 +[#136448]: https://github.com/home-assistant/core/pull/136448 +[#136453]: https://github.com/home-assistant/core/pull/136453 +[#136456]: https://github.com/home-assistant/core/pull/136456 +[#136457]: https://github.com/home-assistant/core/pull/136457 +[#136461]: https://github.com/home-assistant/core/pull/136461 +[#136462]: https://github.com/home-assistant/core/pull/136462 +[#136464]: https://github.com/home-assistant/core/pull/136464 +[#136465]: https://github.com/home-assistant/core/pull/136465 +[#136467]: https://github.com/home-assistant/core/pull/136467 +[#136470]: https://github.com/home-assistant/core/pull/136470 +[#136475]: https://github.com/home-assistant/core/pull/136475 +[#136481]: https://github.com/home-assistant/core/pull/136481 +[#136483]: https://github.com/home-assistant/core/pull/136483 +[#136484]: https://github.com/home-assistant/core/pull/136484 +[#136485]: https://github.com/home-assistant/core/pull/136485 +[#136486]: https://github.com/home-assistant/core/pull/136486 +[#136487]: https://github.com/home-assistant/core/pull/136487 +[#136488]: https://github.com/home-assistant/core/pull/136488 +[#136489]: https://github.com/home-assistant/core/pull/136489 +[#136490]: https://github.com/home-assistant/core/pull/136490 +[#136491]: https://github.com/home-assistant/core/pull/136491 +[#136492]: https://github.com/home-assistant/core/pull/136492 +[#136493]: https://github.com/home-assistant/core/pull/136493 +[#136496]: https://github.com/home-assistant/core/pull/136496 +[#136497]: https://github.com/home-assistant/core/pull/136497 +[#136504]: https://github.com/home-assistant/core/pull/136504 +[#136505]: https://github.com/home-assistant/core/pull/136505 +[#136506]: https://github.com/home-assistant/core/pull/136506 +[#136510]: https://github.com/home-assistant/core/pull/136510 +[#136511]: https://github.com/home-assistant/core/pull/136511 +[#136514]: https://github.com/home-assistant/core/pull/136514 +[#136516]: https://github.com/home-assistant/core/pull/136516 +[#136521]: https://github.com/home-assistant/core/pull/136521 +[#136522]: https://github.com/home-assistant/core/pull/136522 +[#136523]: https://github.com/home-assistant/core/pull/136523 +[#136524]: https://github.com/home-assistant/core/pull/136524 +[#136528]: https://github.com/home-assistant/core/pull/136528 +[#136529]: https://github.com/home-assistant/core/pull/136529 +[#136533]: https://github.com/home-assistant/core/pull/136533 +[#136536]: https://github.com/home-assistant/core/pull/136536 +[#136538]: https://github.com/home-assistant/core/pull/136538 +[#136539]: https://github.com/home-assistant/core/pull/136539 +[#136544]: https://github.com/home-assistant/core/pull/136544 +[#136546]: https://github.com/home-assistant/core/pull/136546 +[#136547]: https://github.com/home-assistant/core/pull/136547 +[#136549]: https://github.com/home-assistant/core/pull/136549 +[#136555]: https://github.com/home-assistant/core/pull/136555 +[#136561]: https://github.com/home-assistant/core/pull/136561 +[#136562]: https://github.com/home-assistant/core/pull/136562 +[#136563]: https://github.com/home-assistant/core/pull/136563 +[#136566]: https://github.com/home-assistant/core/pull/136566 +[#136567]: https://github.com/home-assistant/core/pull/136567 +[#136569]: https://github.com/home-assistant/core/pull/136569 +[#136570]: https://github.com/home-assistant/core/pull/136570 +[#136572]: https://github.com/home-assistant/core/pull/136572 +[#136573]: https://github.com/home-assistant/core/pull/136573 +[#136576]: https://github.com/home-assistant/core/pull/136576 +[#136577]: https://github.com/home-assistant/core/pull/136577 +[#136578]: https://github.com/home-assistant/core/pull/136578 +[#136580]: https://github.com/home-assistant/core/pull/136580 +[#136581]: https://github.com/home-assistant/core/pull/136581 +[#136583]: https://github.com/home-assistant/core/pull/136583 +[#136585]: https://github.com/home-assistant/core/pull/136585 +[#136586]: https://github.com/home-assistant/core/pull/136586 +[#136587]: https://github.com/home-assistant/core/pull/136587 +[#136589]: https://github.com/home-assistant/core/pull/136589 +[#136590]: https://github.com/home-assistant/core/pull/136590 +[#136591]: https://github.com/home-assistant/core/pull/136591 +[#136593]: https://github.com/home-assistant/core/pull/136593 +[#136596]: https://github.com/home-assistant/core/pull/136596 +[#136601]: https://github.com/home-assistant/core/pull/136601 +[#136602]: https://github.com/home-assistant/core/pull/136602 +[#136604]: https://github.com/home-assistant/core/pull/136604 +[#136609]: https://github.com/home-assistant/core/pull/136609 +[#136611]: https://github.com/home-assistant/core/pull/136611 +[#136612]: https://github.com/home-assistant/core/pull/136612 +[#136613]: https://github.com/home-assistant/core/pull/136613 +[#136614]: https://github.com/home-assistant/core/pull/136614 +[#136617]: https://github.com/home-assistant/core/pull/136617 +[#136618]: https://github.com/home-assistant/core/pull/136618 +[#136619]: https://github.com/home-assistant/core/pull/136619 +[#136621]: https://github.com/home-assistant/core/pull/136621 +[#136622]: https://github.com/home-assistant/core/pull/136622 +[#136625]: https://github.com/home-assistant/core/pull/136625 +[#136626]: https://github.com/home-assistant/core/pull/136626 +[#136627]: https://github.com/home-assistant/core/pull/136627 +[#136629]: https://github.com/home-assistant/core/pull/136629 +[#136631]: https://github.com/home-assistant/core/pull/136631 +[#136632]: https://github.com/home-assistant/core/pull/136632 +[#136633]: https://github.com/home-assistant/core/pull/136633 +[#136635]: https://github.com/home-assistant/core/pull/136635 +[#136639]: https://github.com/home-assistant/core/pull/136639 +[#136642]: https://github.com/home-assistant/core/pull/136642 +[#136643]: https://github.com/home-assistant/core/pull/136643 +[#136644]: https://github.com/home-assistant/core/pull/136644 +[#136645]: https://github.com/home-assistant/core/pull/136645 +[#136648]: https://github.com/home-assistant/core/pull/136648 +[#136649]: https://github.com/home-assistant/core/pull/136649 +[#136651]: https://github.com/home-assistant/core/pull/136651 +[#136652]: https://github.com/home-assistant/core/pull/136652 +[#136657]: https://github.com/home-assistant/core/pull/136657 +[#136658]: https://github.com/home-assistant/core/pull/136658 +[#136661]: https://github.com/home-assistant/core/pull/136661 +[#136663]: https://github.com/home-assistant/core/pull/136663 +[#136666]: https://github.com/home-assistant/core/pull/136666 +[#136668]: https://github.com/home-assistant/core/pull/136668 +[#136676]: https://github.com/home-assistant/core/pull/136676 +[#136679]: https://github.com/home-assistant/core/pull/136679 +[#136680]: https://github.com/home-assistant/core/pull/136680 +[#136684]: https://github.com/home-assistant/core/pull/136684 +[#136685]: https://github.com/home-assistant/core/pull/136685 +[#136686]: https://github.com/home-assistant/core/pull/136686 +[#136688]: https://github.com/home-assistant/core/pull/136688 +[#136689]: https://github.com/home-assistant/core/pull/136689 +[#136690]: https://github.com/home-assistant/core/pull/136690 +[#136691]: https://github.com/home-assistant/core/pull/136691 +[#136693]: https://github.com/home-assistant/core/pull/136693 +[#136694]: https://github.com/home-assistant/core/pull/136694 +[#136696]: https://github.com/home-assistant/core/pull/136696 +[#136697]: https://github.com/home-assistant/core/pull/136697 +[#136699]: https://github.com/home-assistant/core/pull/136699 +[#136701]: https://github.com/home-assistant/core/pull/136701 +[#136702]: https://github.com/home-assistant/core/pull/136702 +[#136703]: https://github.com/home-assistant/core/pull/136703 +[#136704]: https://github.com/home-assistant/core/pull/136704 +[#136705]: https://github.com/home-assistant/core/pull/136705 +[#136706]: https://github.com/home-assistant/core/pull/136706 +[#136707]: https://github.com/home-assistant/core/pull/136707 +[#136708]: https://github.com/home-assistant/core/pull/136708 +[#136709]: https://github.com/home-assistant/core/pull/136709 +[#136712]: https://github.com/home-assistant/core/pull/136712 +[#136717]: https://github.com/home-assistant/core/pull/136717 +[#136718]: https://github.com/home-assistant/core/pull/136718 +[#136719]: https://github.com/home-assistant/core/pull/136719 +[#136723]: https://github.com/home-assistant/core/pull/136723 +[#136727]: https://github.com/home-assistant/core/pull/136727 +[#136730]: https://github.com/home-assistant/core/pull/136730 +[#136731]: https://github.com/home-assistant/core/pull/136731 +[#136732]: https://github.com/home-assistant/core/pull/136732 +[#136733]: https://github.com/home-assistant/core/pull/136733 +[#136734]: https://github.com/home-assistant/core/pull/136734 +[#136735]: https://github.com/home-assistant/core/pull/136735 +[#136736]: https://github.com/home-assistant/core/pull/136736 +[#136738]: https://github.com/home-assistant/core/pull/136738 +[#136739]: https://github.com/home-assistant/core/pull/136739 +[#136741]: https://github.com/home-assistant/core/pull/136741 +[#136743]: https://github.com/home-assistant/core/pull/136743 +[#136744]: https://github.com/home-assistant/core/pull/136744 +[#136745]: https://github.com/home-assistant/core/pull/136745 +[#136748]: https://github.com/home-assistant/core/pull/136748 +[#136749]: https://github.com/home-assistant/core/pull/136749 +[#136750]: https://github.com/home-assistant/core/pull/136750 +[#136751]: https://github.com/home-assistant/core/pull/136751 +[#136752]: https://github.com/home-assistant/core/pull/136752 +[#136753]: https://github.com/home-assistant/core/pull/136753 +[#136759]: https://github.com/home-assistant/core/pull/136759 +[#136762]: https://github.com/home-assistant/core/pull/136762 +[#136763]: https://github.com/home-assistant/core/pull/136763 +[#136764]: https://github.com/home-assistant/core/pull/136764 +[#136765]: https://github.com/home-assistant/core/pull/136765 +[#136766]: https://github.com/home-assistant/core/pull/136766 +[#136767]: https://github.com/home-assistant/core/pull/136767 +[#136769]: https://github.com/home-assistant/core/pull/136769 +[#136770]: https://github.com/home-assistant/core/pull/136770 +[#136772]: https://github.com/home-assistant/core/pull/136772 +[#136773]: https://github.com/home-assistant/core/pull/136773 +[#136774]: https://github.com/home-assistant/core/pull/136774 +[#136775]: https://github.com/home-assistant/core/pull/136775 +[#136777]: https://github.com/home-assistant/core/pull/136777 +[#136779]: https://github.com/home-assistant/core/pull/136779 +[#136780]: https://github.com/home-assistant/core/pull/136780 +[#136781]: https://github.com/home-assistant/core/pull/136781 +[#136782]: https://github.com/home-assistant/core/pull/136782 +[#136784]: https://github.com/home-assistant/core/pull/136784 +[#136785]: https://github.com/home-assistant/core/pull/136785 +[#136786]: https://github.com/home-assistant/core/pull/136786 +[#136787]: https://github.com/home-assistant/core/pull/136787 +[#136791]: https://github.com/home-assistant/core/pull/136791 +[#136793]: https://github.com/home-assistant/core/pull/136793 +[#136794]: https://github.com/home-assistant/core/pull/136794 +[#136795]: https://github.com/home-assistant/core/pull/136795 +[#136797]: https://github.com/home-assistant/core/pull/136797 +[#136798]: https://github.com/home-assistant/core/pull/136798 +[#136799]: https://github.com/home-assistant/core/pull/136799 +[#136801]: https://github.com/home-assistant/core/pull/136801 +[#136803]: https://github.com/home-assistant/core/pull/136803 +[#136805]: https://github.com/home-assistant/core/pull/136805 +[#136806]: https://github.com/home-assistant/core/pull/136806 +[#136807]: https://github.com/home-assistant/core/pull/136807 +[#136810]: https://github.com/home-assistant/core/pull/136810 +[#136811]: https://github.com/home-assistant/core/pull/136811 +[#136813]: https://github.com/home-assistant/core/pull/136813 +[#136814]: https://github.com/home-assistant/core/pull/136814 +[#136816]: https://github.com/home-assistant/core/pull/136816 +[#136817]: https://github.com/home-assistant/core/pull/136817 +[#136818]: https://github.com/home-assistant/core/pull/136818 +[#136819]: https://github.com/home-assistant/core/pull/136819 +[#136821]: https://github.com/home-assistant/core/pull/136821 +[#136823]: https://github.com/home-assistant/core/pull/136823 +[#136824]: https://github.com/home-assistant/core/pull/136824 +[#136825]: https://github.com/home-assistant/core/pull/136825 +[#136826]: https://github.com/home-assistant/core/pull/136826 +[#136827]: https://github.com/home-assistant/core/pull/136827 +[#136828]: https://github.com/home-assistant/core/pull/136828 +[#136829]: https://github.com/home-assistant/core/pull/136829 +[#136830]: https://github.com/home-assistant/core/pull/136830 +[#136831]: https://github.com/home-assistant/core/pull/136831 +[#136832]: https://github.com/home-assistant/core/pull/136832 +[#136833]: https://github.com/home-assistant/core/pull/136833 +[#136834]: https://github.com/home-assistant/core/pull/136834 +[#136835]: https://github.com/home-assistant/core/pull/136835 +[#136836]: https://github.com/home-assistant/core/pull/136836 +[#136838]: https://github.com/home-assistant/core/pull/136838 +[#136842]: https://github.com/home-assistant/core/pull/136842 +[#136843]: https://github.com/home-assistant/core/pull/136843 +[#136844]: https://github.com/home-assistant/core/pull/136844 +[#136845]: https://github.com/home-assistant/core/pull/136845 +[#136850]: https://github.com/home-assistant/core/pull/136850 +[#136851]: https://github.com/home-assistant/core/pull/136851 +[#136852]: https://github.com/home-assistant/core/pull/136852 +[#136854]: https://github.com/home-assistant/core/pull/136854 +[#136856]: https://github.com/home-assistant/core/pull/136856 +[#136857]: https://github.com/home-assistant/core/pull/136857 +[#136858]: https://github.com/home-assistant/core/pull/136858 +[#136861]: https://github.com/home-assistant/core/pull/136861 +[#136862]: https://github.com/home-assistant/core/pull/136862 +[#136870]: https://github.com/home-assistant/core/pull/136870 +[#136872]: https://github.com/home-assistant/core/pull/136872 +[#136883]: https://github.com/home-assistant/core/pull/136883 +[#136884]: https://github.com/home-assistant/core/pull/136884 +[#136888]: https://github.com/home-assistant/core/pull/136888 +[#136889]: https://github.com/home-assistant/core/pull/136889 +[#136891]: https://github.com/home-assistant/core/pull/136891 +[#136892]: https://github.com/home-assistant/core/pull/136892 +[#136893]: https://github.com/home-assistant/core/pull/136893 +[#136898]: https://github.com/home-assistant/core/pull/136898 +[#136906]: https://github.com/home-assistant/core/pull/136906 +[#136907]: https://github.com/home-assistant/core/pull/136907 +[#136910]: https://github.com/home-assistant/core/pull/136910 +[#136911]: https://github.com/home-assistant/core/pull/136911 +[#136912]: https://github.com/home-assistant/core/pull/136912 +[#136913]: https://github.com/home-assistant/core/pull/136913 +[#136916]: https://github.com/home-assistant/core/pull/136916 +[#136925]: https://github.com/home-assistant/core/pull/136925 +[#136926]: https://github.com/home-assistant/core/pull/136926 +[#136927]: https://github.com/home-assistant/core/pull/136927 +[#136928]: https://github.com/home-assistant/core/pull/136928 +[#136929]: https://github.com/home-assistant/core/pull/136929 +[#136930]: https://github.com/home-assistant/core/pull/136930 +[#136931]: https://github.com/home-assistant/core/pull/136931 +[#136932]: https://github.com/home-assistant/core/pull/136932 +[#136937]: https://github.com/home-assistant/core/pull/136937 +[#136940]: https://github.com/home-assistant/core/pull/136940 +[#136942]: https://github.com/home-assistant/core/pull/136942 +[#136954]: https://github.com/home-assistant/core/pull/136954 +[#136958]: https://github.com/home-assistant/core/pull/136958 +[#136973]: https://github.com/home-assistant/core/pull/136973 +[#136977]: https://github.com/home-assistant/core/pull/136977 +[#136980]: https://github.com/home-assistant/core/pull/136980 +[#136982]: https://github.com/home-assistant/core/pull/136982 +[#136990]: https://github.com/home-assistant/core/pull/136990 +[#136995]: https://github.com/home-assistant/core/pull/136995 +[#136997]: https://github.com/home-assistant/core/pull/136997 +[#136998]: https://github.com/home-assistant/core/pull/136998 +[#137001]: https://github.com/home-assistant/core/pull/137001 +[#137010]: https://github.com/home-assistant/core/pull/137010 +[#137018]: https://github.com/home-assistant/core/pull/137018 +[#137020]: https://github.com/home-assistant/core/pull/137020 +[#137022]: https://github.com/home-assistant/core/pull/137022 +[#137024]: https://github.com/home-assistant/core/pull/137024 +[#137025]: https://github.com/home-assistant/core/pull/137025 +[#137028]: https://github.com/home-assistant/core/pull/137028 +[#137030]: https://github.com/home-assistant/core/pull/137030 +[#137031]: https://github.com/home-assistant/core/pull/137031 +[#137032]: https://github.com/home-assistant/core/pull/137032 +[#137035]: https://github.com/home-assistant/core/pull/137035 +[#137036]: https://github.com/home-assistant/core/pull/137036 +[#137040]: https://github.com/home-assistant/core/pull/137040 +[#137045]: https://github.com/home-assistant/core/pull/137045 +[#137049]: https://github.com/home-assistant/core/pull/137049 +[#137051]: https://github.com/home-assistant/core/pull/137051 +[#137052]: https://github.com/home-assistant/core/pull/137052 +[#137056]: https://github.com/home-assistant/core/pull/137056 +[#137058]: https://github.com/home-assistant/core/pull/137058 +[#137061]: https://github.com/home-assistant/core/pull/137061 +[#137063]: https://github.com/home-assistant/core/pull/137063 +[#137064]: https://github.com/home-assistant/core/pull/137064 +[#137067]: https://github.com/home-assistant/core/pull/137067 +[#137075]: https://github.com/home-assistant/core/pull/137075 +[#137091]: https://github.com/home-assistant/core/pull/137091 +[#137102]: https://github.com/home-assistant/core/pull/137102 +[#137103]: https://github.com/home-assistant/core/pull/137103 +[#137104]: https://github.com/home-assistant/core/pull/137104 +[#137105]: https://github.com/home-assistant/core/pull/137105 +[#137106]: https://github.com/home-assistant/core/pull/137106 +[#137107]: https://github.com/home-assistant/core/pull/137107 +[#137109]: https://github.com/home-assistant/core/pull/137109 +[#137110]: https://github.com/home-assistant/core/pull/137110 +[#137111]: https://github.com/home-assistant/core/pull/137111 +[#137113]: https://github.com/home-assistant/core/pull/137113 +[#137115]: https://github.com/home-assistant/core/pull/137115 +[#137121]: https://github.com/home-assistant/core/pull/137121 +[#137123]: https://github.com/home-assistant/core/pull/137123 +[#137126]: https://github.com/home-assistant/core/pull/137126 +[#137129]: https://github.com/home-assistant/core/pull/137129 +[#137132]: https://github.com/home-assistant/core/pull/137132 +[#137133]: https://github.com/home-assistant/core/pull/137133 +[#137136]: https://github.com/home-assistant/core/pull/137136 +[#137137]: https://github.com/home-assistant/core/pull/137137 +[#137147]: https://github.com/home-assistant/core/pull/137147 +[#137148]: https://github.com/home-assistant/core/pull/137148 +[#137151]: https://github.com/home-assistant/core/pull/137151 +[#137158]: https://github.com/home-assistant/core/pull/137158 +[#137168]: https://github.com/home-assistant/core/pull/137168 +[#137169]: https://github.com/home-assistant/core/pull/137169 +[#137173]: https://github.com/home-assistant/core/pull/137173 +[#137176]: https://github.com/home-assistant/core/pull/137176 +[#137180]: https://github.com/home-assistant/core/pull/137180 +[#137188]: https://github.com/home-assistant/core/pull/137188 +[#137199]: https://github.com/home-assistant/core/pull/137199 +[#137204]: https://github.com/home-assistant/core/pull/137204 +[#137205]: https://github.com/home-assistant/core/pull/137205 +[#137206]: https://github.com/home-assistant/core/pull/137206 +[#137208]: https://github.com/home-assistant/core/pull/137208 +[#137217]: https://github.com/home-assistant/core/pull/137217 +[#137220]: https://github.com/home-assistant/core/pull/137220 +[#137230]: https://github.com/home-assistant/core/pull/137230 +[#137239]: https://github.com/home-assistant/core/pull/137239 +[#137244]: https://github.com/home-assistant/core/pull/137244 +[#137252]: https://github.com/home-assistant/core/pull/137252 +[#137253]: https://github.com/home-assistant/core/pull/137253 +[#137257]: https://github.com/home-assistant/core/pull/137257 +[#137261]: https://github.com/home-assistant/core/pull/137261 +[#137263]: https://github.com/home-assistant/core/pull/137263 +[#137264]: https://github.com/home-assistant/core/pull/137264 +[#137278]: https://github.com/home-assistant/core/pull/137278 +[#137295]: https://github.com/home-assistant/core/pull/137295 +[#137296]: https://github.com/home-assistant/core/pull/137296 +[#137299]: https://github.com/home-assistant/core/pull/137299 +[#137301]: https://github.com/home-assistant/core/pull/137301 +[#137303]: https://github.com/home-assistant/core/pull/137303 +[#137309]: https://github.com/home-assistant/core/pull/137309 +[#137313]: https://github.com/home-assistant/core/pull/137313 +[#137315]: https://github.com/home-assistant/core/pull/137315 +[#137324]: https://github.com/home-assistant/core/pull/137324 +[#137330]: https://github.com/home-assistant/core/pull/137330 +[#137331]: https://github.com/home-assistant/core/pull/137331 +[#137334]: https://github.com/home-assistant/core/pull/137334 +[#137337]: https://github.com/home-assistant/core/pull/137337 +[#137338]: https://github.com/home-assistant/core/pull/137338 +[#137340]: https://github.com/home-assistant/core/pull/137340 +[#137342]: https://github.com/home-assistant/core/pull/137342 +[#137343]: https://github.com/home-assistant/core/pull/137343 +[#137346]: https://github.com/home-assistant/core/pull/137346 +[#137347]: https://github.com/home-assistant/core/pull/137347 +[#137353]: https://github.com/home-assistant/core/pull/137353 +[#137355]: https://github.com/home-assistant/core/pull/137355 +[#137359]: https://github.com/home-assistant/core/pull/137359 +[#137360]: https://github.com/home-assistant/core/pull/137360 +[#137361]: https://github.com/home-assistant/core/pull/137361 +[#137364]: https://github.com/home-assistant/core/pull/137364 +[#137369]: https://github.com/home-assistant/core/pull/137369 +[#137373]: https://github.com/home-assistant/core/pull/137373 +[#137374]: https://github.com/home-assistant/core/pull/137374 +[#137379]: https://github.com/home-assistant/core/pull/137379 +[#137390]: https://github.com/home-assistant/core/pull/137390 +[#137393]: https://github.com/home-assistant/core/pull/137393 +[#137402]: https://github.com/home-assistant/core/pull/137402 +[#137409]: https://github.com/home-assistant/core/pull/137409 +[#137420]: https://github.com/home-assistant/core/pull/137420 +[#137423]: https://github.com/home-assistant/core/pull/137423 +[#137424]: https://github.com/home-assistant/core/pull/137424 +[#137430]: https://github.com/home-assistant/core/pull/137430 +[#137437]: https://github.com/home-assistant/core/pull/137437 +[#137440]: https://github.com/home-assistant/core/pull/137440 +[#137441]: https://github.com/home-assistant/core/pull/137441 +[#137446]: https://github.com/home-assistant/core/pull/137446 +[@Anonym-tsk]: https://github.com/Anonym-tsk +[@Bre77]: https://github.com/Bre77 +[@CFenner]: https://github.com/CFenner +[@CoMPaTech]: https://github.com/CoMPaTech +[@DCSBL]: https://github.com/DCSBL +[@Danielhiversen]: https://github.com/Danielhiversen +[@Diegorro98]: https://github.com/Diegorro98 +[@Djelibeybi]: https://github.com/Djelibeybi +[@DrDonoso]: https://github.com/DrDonoso +[@EliSchleifer]: https://github.com/EliSchleifer +[@Ernst79]: https://github.com/Ernst79 +[@G-Two]: https://github.com/G-Two +[@GlennReilly]: https://github.com/GlennReilly +[@IceBotYT]: https://github.com/IceBotYT +[@IgnusG]: https://github.com/IgnusG +[@Ik-12]: https://github.com/Ik-12 +[@KapJI]: https://github.com/KapJI +[@LG-ThinQ-Integration]: https://github.com/LG-ThinQ-Integration +[@LaStrada]: https://github.com/LaStrada +[@Lash-L]: https://github.com/Lash-L +[@LouisChrist]: https://github.com/LouisChrist +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@Master-Guy]: https://github.com/Master-Guy +[@MatthiasLohr]: https://github.com/MatthiasLohr +[@N3rdix]: https://github.com/N3rdix +[@NoRi2909]: https://github.com/NoRi2909 +[@Noltari]: https://github.com/Noltari +[@PaulSD]: https://github.com/PaulSD +[@PeteRager]: https://github.com/PeteRager +[@Petro31]: https://github.com/Petro31 +[@PoppyPop]: https://github.com/PoppyPop +[@Qbus-iot]: https://github.com/Qbus-iot +[@RBaragona]: https://github.com/RBaragona +[@RJPoelstra]: https://github.com/RJPoelstra +[@RaHehl]: https://github.com/RaHehl +[@RunC0deRun]: https://github.com/RunC0deRun +[@SeraphicRav]: https://github.com/SeraphicRav +[@Shulyaka]: https://github.com/Shulyaka +[@Shutgun]: https://github.com/Shutgun +[@SparkyDan555]: https://github.com/SparkyDan555 +[@Splint77]: https://github.com/Splint77 +[@StevenLooman]: https://github.com/StevenLooman +[@Taraman17]: https://github.com/Taraman17 +[@TheJulianJES]: https://github.com/TheJulianJES +[@Thomas55555]: https://github.com/Thomas55555 +[@ThyMYthOS]: https://github.com/ThyMYthOS +[@VandeurenGlenn]: https://github.com/VandeurenGlenn +[@WaterInTheLake]: https://github.com/WaterInTheLake +[@YogevBokobza]: https://github.com/YogevBokobza +[@abmantis]: https://github.com/abmantis +[@alengwenus]: https://github.com/alengwenus +[@allenporter]: https://github.com/allenporter +[@andrew-codechimp]: https://github.com/andrew-codechimp +[@andrewsayre]: https://github.com/andrewsayre +[@apt-itude]: https://github.com/apt-itude +[@arturpragacz]: https://github.com/arturpragacz +[@ashionky]: https://github.com/ashionky +[@astrandb]: https://github.com/astrandb +[@austinmroczek]: https://github.com/austinmroczek +[@autinerd]: https://github.com/autinerd +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@beginner2047]: https://github.com/beginner2047 +[@bieniu]: https://github.com/bieniu +[@boralyl]: https://github.com/boralyl +[@bors-ltd]: https://github.com/bors-ltd +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@catsmanac]: https://github.com/catsmanac +[@cdce8p]: https://github.com/cdce8p +[@cdnninja]: https://github.com/cdnninja +[@cereal2nd]: https://github.com/cereal2nd +[@chemelli74]: https://github.com/chemelli74 +[@choumarin]: https://github.com/choumarin +[@crevetor]: https://github.com/crevetor +[@dan-r]: https://github.com/dan-r +[@davet2001]: https://github.com/davet2001 +[@david1024pl]: https://github.com/david1024pl +[@davidrapan]: https://github.com/davidrapan +[@dext0r]: https://github.com/dext0r +[@dgomes]: https://github.com/dgomes +[@dieselrabbit]: https://github.com/dieselrabbit +[@dknowles2]: https://github.com/dknowles2 +[@domingues]: https://github.com/domingues +[@dontinelli]: https://github.com/dontinelli +[@dotvav]: https://github.com/dotvav +[@dustMason]: https://github.com/dustMason +[@eclair4151]: https://github.com/eclair4151 +[@edenhaus]: https://github.com/edenhaus +[@elmurato]: https://github.com/elmurato +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@erwindouna]: https://github.com/erwindouna +[@farkasdi]: https://github.com/farkasdi +[@farmio]: https://github.com/farmio +[@firstof9]: https://github.com/firstof9 +[@flabbamann]: https://github.com/flabbamann +[@frenck]: https://github.com/frenck +[@fwestenberg]: https://github.com/fwestenberg +[@gentoo-root]: https://github.com/gentoo-root +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@gjong]: https://github.com/gjong +[@gwww]: https://github.com/gwww +[@hahn-th]: https://github.com/hahn-th +[@huyuwei1996]: https://github.com/huyuwei1996 +[@iMicknl]: https://github.com/iMicknl +[@illia-piskurov]: https://github.com/illia-piskurov +[@iprak]: https://github.com/iprak +[@iskrakranj]: https://github.com/iskrakranj +[@jaminh]: https://github.com/jaminh +[@jb101010-2]: https://github.com/jb101010-2 +[@jbarreiros]: https://github.com/jbarreiros +[@jbouwh]: https://github.com/jbouwh +[@jeeftor]: https://github.com/jeeftor +[@jesperraemaekers]: https://github.com/jesperraemaekers +[@jiriappl]: https://github.com/jiriappl +[@joostlek]: https://github.com/joostlek +[@jpbede]: https://github.com/jpbede +[@jpelgrom]: https://github.com/jpelgrom +[@jsuar]: https://github.com/jsuar +[@jterrace]: https://github.com/jterrace +[@keithle888]: https://github.com/keithle888 +[@kelyaenn]: https://github.com/kelyaenn +[@kereyroper]: https://github.com/kereyroper +[@klaasnicolaas]: https://github.com/klaasnicolaas +[@klejejs]: https://github.com/klejejs +[@krakonos1602]: https://github.com/krakonos1602 +[@lanthaler]: https://github.com/lanthaler +[@lboue]: https://github.com/lboue +[@lschloetterer]: https://github.com/lschloetterer +[@luc-ass]: https://github.com/luc-ass +[@marcelveldt]: https://github.com/marcelveldt +[@maxcabrajac]: https://github.com/maxcabrajac +[@mckbrmn]: https://github.com/mckbrmn +[@miaucl]: https://github.com/miaucl +[@mib1185]: https://github.com/mib1185 +[@mj23000]: https://github.com/mj23000 +[@mkmer]: https://github.com/mkmer +[@mxr]: https://github.com/mxr +[@natekspencer]: https://github.com/natekspencer +[@noahhusby]: https://github.com/noahhusby +[@oandrew]: https://github.com/oandrew +[@pawlizio]: https://github.com/pawlizio +[@peteS-UK]: https://github.com/peteS-UK +[@piitaya]: https://github.com/piitaya +[@puddly]: https://github.com/puddly +[@rajlaud]: https://github.com/rajlaud +[@redge76]: https://github.com/redge76 +[@regevbr]: https://github.com/regevbr +[@richardpolzer]: https://github.com/richardpolzer +[@rikroe]: https://github.com/rikroe +[@rpavlik]: https://github.com/rpavlik +[@rrooggiieerr]: https://github.com/rrooggiieerr +[@rsiv]: https://github.com/rsiv +[@rwalker777]: https://github.com/rwalker777 +[@rytilahti]: https://github.com/rytilahti +[@sVnsation]: https://github.com/sVnsation +[@scop]: https://github.com/scop +[@sdb9696]: https://github.com/sdb9696 +[@shmuelzon]: https://github.com/shmuelzon +[@silamon]: https://github.com/silamon +[@sorgfresser]: https://github.com/sorgfresser +[@squishykid]: https://github.com/squishykid +[@srescio]: https://github.com/srescio +[@starkillerOG]: https://github.com/starkillerOG +[@synesthesiam]: https://github.com/synesthesiam +[@thecode]: https://github.com/thecode +[@thomasddn]: https://github.com/thomasddn +[@tkunzfeld]: https://github.com/tkunzfeld +[@tl-sl]: https://github.com/tl-sl +[@tomer-w]: https://github.com/tomer-w +[@tr4nt0r]: https://github.com/tr4nt0r +[@tronikos]: https://github.com/tronikos +[@tswsl1989]: https://github.com/tswsl1989 +[@tyron]: https://github.com/tyron +[@wlcrs]: https://github.com/wlcrs +[@zweckj]: https://github.com/zweckj diff --git a/source/images/blog/2025-06/areas-dashboard.png b/source/images/blog/2025-06/areas-dashboard.png new file mode 100644 index 00000000000..3931f784bdc Binary files /dev/null and b/source/images/blog/2025-06/areas-dashboard.png differ diff --git a/source/images/blog/2025-06/bluetooth-connection-graph.png b/source/images/blog/2025-06/bluetooth-connection-graph.png new file mode 100644 index 00000000000..b70fe32b920 Binary files /dev/null and b/source/images/blog/2025-06/bluetooth-connection-graph.png differ diff --git a/source/images/blog/2025-06/group-media-players-from-media-player-card.png b/source/images/blog/2025-06/group-media-players-from-media-player-card.png new file mode 100644 index 00000000000..542de423566 Binary files /dev/null and b/source/images/blog/2025-06/group-media-players-from-media-player-card.png differ diff --git a/source/images/blog/2025-06/new-device-picker.png b/source/images/blog/2025-06/new-device-picker.png new file mode 100644 index 00000000000..70588d96c41 Binary files /dev/null and b/source/images/blog/2025-06/new-device-picker.png differ diff --git a/source/images/blog/2025-06/reset-entity-id.png b/source/images/blog/2025-06/reset-entity-id.png new file mode 100644 index 00000000000..ef1417dcc0d Binary files /dev/null and b/source/images/blog/2025-06/reset-entity-id.png differ diff --git a/source/images/blog/2025-06/sidebar-customization.png b/source/images/blog/2025-06/sidebar-customization.png new file mode 100644 index 00000000000..a5d4f978dfc Binary files /dev/null and b/source/images/blog/2025-06/sidebar-customization.png differ diff --git a/source/images/blog/2025-06/social.png b/source/images/blog/2025-06/social.png new file mode 100644 index 00000000000..697d588a3b8 Binary files /dev/null and b/source/images/blog/2025-06/social.png differ