diff --git a/Gemfile.lock b/Gemfile.lock index 1de28611b70..fd37f38fe82 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -26,6 +26,7 @@ GEM eventmachine (>= 0.12.9) http_parser.rb (~> 0) eventmachine (1.2.7) + ffi (1.17.0-arm64-darwin) ffi (1.17.0-x86_64-linux-gnu) forwardable-extended (2.6.0) google-protobuf (4.28.0-x86_64-linux) @@ -77,6 +78,8 @@ GEM multi_json (1.15.0) mustermann (3.0.3) ruby2_keywords (~> 0.0.1) + nokogiri (1.16.7-arm64-darwin) + racc (~> 1.4) nokogiri (1.16.7-x86_64-linux) racc (~> 1.4) parallel (1.26.3) @@ -132,6 +135,8 @@ GEM google-protobuf (~> 4.27) sass-globbing (1.1.5) sass (>= 3.1) + sassc (2.1.0) + ffi (~> 1.9) sassc (2.1.0-x86_64-linux) ffi (~> 1.9) sinatra (4.0.0) @@ -153,6 +158,7 @@ GEM webrick (1.8.1) PLATFORMS + arm64-darwin-23 x86_64-linux DEPENDENCIES diff --git a/_config.yml b/_config.yml index 0a9e977d474..bcc02a7e329 100644 --- a/_config.yml +++ b/_config.yml @@ -107,9 +107,9 @@ social: # Home Assistant release details current_major_version: 2024 -current_minor_version: 8 -current_patch_version: 3 -date_released: 2024-08-25 +current_minor_version: 9 +current_patch_version: 0 +date_released: 2024-09-04 # 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/_docs/asterisk_mbox.markdown b/source/_docs/asterisk_mbox.markdown deleted file mode 100644 index e91f229f961..00000000000 --- a/source/_docs/asterisk_mbox.markdown +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: "Asterisk Voicemail server installation" -description: "Instructions on how to integrate your existing Asterisk voicemail within Home Assistant." ---- - -Asterisk Voicemail integration allows Home Assistant to view, listen to and delete voicemails from a Asterisk voicemail mailbox. - -There are two components to the integration: - -- A server that runs on the Asterisk PBX host and communicates over an open port. -- A client which can request information from the server. - -Both parts are necessary for Asterisk voicemail integration. - -The server installation is documented below. The client is [integrated inside Home Assistant](/integrations/asterisk_mbox) - -{% note %} -Currently this module can only monitor a single Asterisk PBX mailbox. -{% endnote %} - -### Prerequisites - -Before beginning make sure that you have the following: - -- A functional Asterisk PBX setup which is using the default `voicemail` application. -- Both Home Assistant and Asterisk PBX running on the same LAN (or the same server). -- The Asterisk PBX server has Python 3.5 or newer installed. -- Administrator access on the Asterisk PBX (for Python module installation). -- Account access to the `asterisk` user that runs the Asterisk PBX software. - -### Installation - -1. Apply for a Google API key to enable speech-transcription services - -2. Install the `asterisk_mbox_server` Python module: - - ```bash - pip3 install asterisk_mbox_server - ``` - -3. Create a configuration file for the server - - As the `asterisk` user create an `asterisk_mbox.ini` file. You can place this in any directory you choose, but the recommended location is `/etc/asterisk/asterisk_mbox.ini`. - - ```ini - [default] - host = IP_ADDRESS - port = PORT - password = PASSWORD - mbox_path = PATH_TO_VOICEMAIL_FILES - cache_file = PATH_TO_CACHE_FILE - google_key = GOOGLE_API_KEY - cdr = mysql+pymysql://:@localhost/asterisk/cdr - - ``` - - - `host` (*Optional*): The IP address to listen on for client requests. This defaults to all IP addresses on the server. To listen only locally, choose `127.0.0.1` - - `port` (*Optional*): The port to listen on for client requests. Defaults to 12345. - - `password` (*Required*): A password shared between client and server. Use only alphanumeric characters and spaces - - `mbox_path` (*Required*): The path to the storage location of mailbox files. This is typically `/var/spool/asterisk/voicemail/default//` - - `cache_file` (*Required*): A fully-qualified path to a file that can be written by the server containing transcriptions of voicemails. Example: `/var/spool/asterisk/transcription.cache` - - `google_key` (*Required*): Your 40 characters Google API key. - - `cdr` (*Optional*): Where to find CDR data. Supports various SQL databases as well as a file log. Configuring the CDR will enable the `asterisk_cdr` platform. - - Once complete, ensure this file is only accessible by the Asterisk user: - - ```bash - sudo chown asterisk:asterisk /etc/asterisk/asterisk_mbox.ini - sudo chmod 600 /etc/asterisk/asterisk_mbox.ini - ``` - -4. Interactively start the server to verify it is functioning - - ```bash - sudo -u asterisk asterisk_mbox_server -v --cfg /etc/asterisk/asterisk_mbox.ini - ``` - - Now complete the [Home Assistant configuration](/integrations/asterisk_mbox) and verify that Home Assistant can communicate with the server - - You can use `Ctrl-c` to terminate the server when done testing - -5. Configure the server to start automatically - - Copy the following code into `/etc/systemd/system/asterisk_mbox.service`: - ```ini - [Unit] - Description=Asterisk PBX voicemail server for Home Assistant - Wants=network.target - After=network.target - - [Service] - Type=simple - User=asterisk - Group=asterisk - ExecStart=/usr/local/bin/asterisk-mbox-server --cfg /etc/asterisk/asterisk_mbox.ini - Restart=on-failure - - [Install] - WantedBy=multi-user.target - ``` - -{% note %} -This assumes that your Asterisk PBX server is using `systemd` for init handling. If not, you will need to create the appropriate configuration files yourself. -{% endnote %} diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index f372f08d6cb..929cefe8400 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -1091,6 +1091,38 @@ While Jinja natively supports the conversion of an iterable to a `list`, it does Note that, in Home Assistant, to convert a value to a `list`, a `string`, an `int`, or a `float`, Jinja has built-in functions with names that correspond to each type. +### Iterating multiple objects + +The `zip()` function can be used to iterate over multiple collections in one operation. + +{% raw %} + +```text +{% set names = ['Living Room', 'Dining Room'] %} +{% set entities = ['sensor.living_room_temperature', 'sensor.dining_room_temperature'] %} +{% for name, entity in zip(names, entities) %} + The {{ name }} temperature is {{ states(entity) }} +{% endfor %} +``` + +{% endraw %} + +`zip()` can also unzip lists. + +{% raw %} + +```text +{% set information = [ + ('Living Room', 'sensor.living_room_temperature'), + ('Dining Room', 'sensor.dining_room_temperature') +] %} +{% set names, entities = zip(*information) %} +The names are {{ names | join(', ') }} +The entities are {{ entities | join(', ') }} +``` + +{% endraw %} + ### Functions and filters to process raw data These functions are used to process raw value's in a `bytes` format to values in a native Python type or vice-versa. @@ -1284,7 +1316,7 @@ For actions, command templates are defined to format the outgoing MQTT payload t {% note %} -Example command template: +**Example command template with JSON data:** With given value `21.9` template {% raw %}`{"temperature": {{ value }} }`{% endraw %} renders to: @@ -1298,6 +1330,14 @@ Additional the MQTT entity attributes `entity_id`, `name` and `this` can be used {% endnote %} +**Example command template with raw data:** + +When a command template renders to a valid `bytes` literal, then MQTT will publish this data as raw data. In other cases, a string representation will be published. So: + +- Template {% raw %}`{{ "16" }}`{% endraw %} renders to payload encoded string `"16"`. +- Template {% raw %}`{{ 16 }}`{% endraw %} renders to payload encoded string `"16"`. +- Template {% raw %}`{{ pack(0x10, ">B") }}`{% endraw %} renders to a raw 1 byte payload `0x10`. + ## Some more things to keep in mind ### `entity_id` that begins with a number diff --git a/source/_integrations/airgradient.markdown b/source/_integrations/airgradient.markdown index e843a783f00..cfc40711a6b 100644 --- a/source/_integrations/airgradient.markdown +++ b/source/_integrations/airgradient.markdown @@ -17,6 +17,7 @@ ha_platforms: - select - sensor - switch + - update ha_integration_type: device ha_zeroconf: true --- diff --git a/source/_integrations/alarm_control_panel.mqtt.markdown b/source/_integrations/alarm_control_panel.mqtt.markdown index 78847e993aa..34a8c53c8db 100644 --- a/source/_integrations/alarm_control_panel.mqtt.markdown +++ b/source/_integrations/alarm_control_panel.mqtt.markdown @@ -135,6 +135,10 @@ device: description: "The model of the device." required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: "The name of the device." required: false @@ -344,4 +348,4 @@ mqtt: {% caution %} When your MQTT connection is not secured, this will send your secret code over the network unprotected! {% endcaution %} - \ No newline at end of file + diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index c886a1df065..3a729edae66 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -292,7 +292,7 @@ elements: bottom: 50px tap_action: action: call-service - action: amcrest.ptz_control + service: amcrest.ptz_control service_data: entity_id: camera.lakehouse movement: up @@ -304,7 +304,7 @@ elements: bottom: 0px tap_action: action: call-service - action: amcrest.ptz_control + service: amcrest.ptz_control service_data: entity_id: camera.lakehouse movement: down @@ -316,7 +316,7 @@ elements: bottom: 25px tap_action: action: call-service - action: amcrest.ptz_control + service: amcrest.ptz_control service_data: entity_id: camera.lakehouse movement: left @@ -328,7 +328,7 @@ elements: bottom: 25px tap_action: action: call-service - action: amcrest.ptz_control + service: amcrest.ptz_control service_data: entity_id: camera.lakehouse movement: right @@ -340,7 +340,7 @@ elements: bottom: 50px tap_action: action: call-service - action: amcrest.ptz_control + service: amcrest.ptz_control service_data: entity_id: camera.lakehouse movement: left_up @@ -352,7 +352,7 @@ elements: bottom: 50px tap_action: action: call-service - action: amcrest.ptz_control + service: amcrest.ptz_control service_data: entity_id: camera.lakehouse movement: right_up @@ -364,7 +364,7 @@ elements: bottom: 0px tap_action: action: call-service - action: amcrest.ptz_control + service: amcrest.ptz_control service_data: entity_id: camera.lakehouse movement: left_down @@ -376,7 +376,7 @@ elements: bottom: 0px tap_action: action: call-service - action: amcrest.ptz_control + service: amcrest.ptz_control service_data: entity_id: camera.lakehouse movement: right_down @@ -388,13 +388,13 @@ elements: right: 25px tap_action: action: call-service - action: amcrest.ptz_control + service: amcrest.ptz_control service_data: entity_id: camera.lakehouse movement: zoom_in hold_action: action: call-service - action: amcrest.ptz_control + service: amcrest.ptz_control data: entity_id: camera.lakehouse movement: zoom_out diff --git a/source/_integrations/anthropic.markdown b/source/_integrations/anthropic.markdown new file mode 100644 index 00000000000..ec06105b0c6 --- /dev/null +++ b/source/_integrations/anthropic.markdown @@ -0,0 +1,77 @@ +--- +title: Anthropic Conversation +description: Instructions on how to integrate Anthropic Claude as a conversation agent +ha_category: + - Voice +ha_release: 2024.9 +ha_iot_class: Cloud Polling +ha_config_flow: true +ha_codeowners: + - '@Shulyaka' +ha_domain: anthropic +ha_integration_type: service +ha_platforms: + - conversation +related: + - docs: /voice_control/voice_remote_expose_devices/ + title: Exposing entities to Assist + - docs: /voice_control/assist_create_open_ai_personality/ + title: Create an AI personality + - url: https://console.anthropic.com/settings/keys + title: Anthropic API key + - url: https://www.anthropic.com + title: Anthropic + - url: https://claude.ai + title: Claude +--- + +The **Anthropic** {% term integrations %} adds a conversation agent powered by [Anthropic](https://www.anthropic.com), such as Claude 3.5 Sonnet, in Home Assistant. + +Controlling Home Assistant is done by providing the AI access to the Assist API of Home Assistant. You can control what devices and entities it can access from the {% my voice_assistants title="exposed entities page" %}. The AI can provide you information about your devices and control them. + +Legal note: Anthropic currently limits the API usage to organizations only, more info here: [Can I use the Claude API for individual use?](https://support.anthropic.com/en/articles/8987200-can-i-use-the-claude-api-for-individual-use) + +This integration does not integrate with [sentence triggers](/docs/automation/trigger/#sentence-trigger). + +## Prerequisites + +- This integration requires an API key to use, [which you can generate here.](https://console.anthropic.com/settings/keys). +- This is a paid service, we advise you to monitor your costs in the [Anthropic portal](https://console.anthropic.com/settings/cost) closely. + +### Generating an API Key + +The Anthropic API key is used to authenticate requests to the Anthropic API. To generate an API key, take the following steps: + +1. Log in to the [Anthropic portal](https://console.anthropic.com) or sign up for an account. +2. Enable billing with a valid credit card on the [plans page](https://console.anthropic.com/settings/plans). +3. Visit the [API Keys page](https://console.anthropic.com/settings/keys) to retrieve the API key you'll use to configure the integration. + +{% include integrations/config_flow.md %} + +{% include integrations/option_flow.md %} +{% configuration_basic %} +Instructions: + description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/). + +Control Home Assistant: + description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it. + +Recommended settings: + description: If enabled, the recommended model and settings are chosen. + +{% endconfiguration_basic %} + +If you choose not to use the recommended settings, you can configure the following options: + +{% configuration_basic %} + +Model: + description: The model that will complete your prompt. See [models](https://docs.anthropic.com/en/docs/about-claude/models#model-names) for additional details and options. + +Maximum Tokens to Return in Response: + description: The maximum number of tokens to generate before stopping. Note that our models may stop _before_ reaching this maximum. This parameter only specifies the absolute maximum number of tokens to generate. Different models have different maximum values for this parameter. See [models](https://docs.anthropic.com/en/docs/models-overview) for details. + +Temperature: + description: Amount of randomness injected into the response. Use `temperature` closer to `0.0` for analytical / multiple choice, and closer to `1.0` for creative and generative tasks. Note that even with `temperature` of `0.0`, the results will not be fully deterministic. + +{% endconfiguration_basic %} diff --git a/source/_integrations/apsystems.markdown b/source/_integrations/apsystems.markdown index 2d830e814a8..8c155974c8f 100644 --- a/source/_integrations/apsystems.markdown +++ b/source/_integrations/apsystems.markdown @@ -8,6 +8,7 @@ ha_category: - Energy ha_domain: apsystems ha_platforms: + - binary_sensor - number - sensor - switch @@ -17,17 +18,42 @@ ha_codeowners: - '@SonnenladenGmbH' --- -The **APsystems** {% term integration %} allows you to read the data from your [APsystems EZ1](https://emea.apsystems.com/diy/ez1/) microinverter. It also allows you to set the output limit to any number between 30 and 800 watts. -The following data is provided by the integration: +The **APsystems** {% term integration %} allows you to read the data from your [APsystems EZ1](https://emea.apsystems.com/diy/ez1/) microinverter. It also allows you to set the output limit to anything above 30 watts. + +## Sensors + +### Numerical sensors + +| Sensor ID | Unit | Description +|---|---| ---| +| total_power | W | Total current output of the inverter +| lifetime_production_p1 | kWh | Lifetime production of first input +| lifetime_production_p2 | kWh | Lifetime production of second input +| lifetime_production | kWh | Lifetime production of both inputs combined +| total_power_p1 | W | Current input on first input +| total_power_p2 | W | Current input on second input +| today_production | kWh | Today's production of both inputs combined +| today_production_p1 | kWh | Today's production of first input +| today_production_p2 | kWh | Today's production of second input + +### Binary sensors + +| Sensor ID | Description +|---|---| +| off_grid_status | On when the inverter is not connected to the power grid +| dc_1_short_circuit_error_status | Short circuit detected on first input +| dc_2_short_circuit_error_status | Short circuit detected on second input +| output_fault_status | Output because of any error deactivated + +## Settings + +| Setting ID | Type | Description +|---|---|---| +| inverter_status | switch | Enables or disables the inverter's output +| output_limit | number | Sets the max output of the inverter -- Lifetime production (Per input and in total) -- Current production (Per input and in total) -- Today's production (Per input and in total) -The following data can be set by the integration: -- Maximal output in watts -- Inverter status (on or off) ## Prerequisites diff --git a/source/_integrations/aquacell.markdown b/source/_integrations/aquacell.markdown index edd0ea9f44e..1f884148aaa 100644 --- a/source/_integrations/aquacell.markdown +++ b/source/_integrations/aquacell.markdown @@ -1,5 +1,5 @@ --- -title: Aquacell +title: AquaCell description: Instructions on how to integrate AquaCell with Home Assistant. ha_category: - Sensor @@ -17,10 +17,12 @@ ha_integration_type: device AquaCell is a water-softening device. The **AquaCell** {% term integration %} allows you to monitor your AquaCell device in Home Assistant. You will need your Aquacell account information as used in the **AquaCell** app. +This integration also supports **Harvey** softeners. + {% include integrations/config_flow.md %}
-This integration only works with AquaCell devices which have an i-Lid and are configured through the 'Mijn AquaCell' mobile app. +This integration only works with AquaCell or Harvey devices which have an i-Lid and are configured through the 'Mijn AquaCell' or 'My Harvey' mobile app.
## Sensors diff --git a/source/_integrations/aranet.markdown b/source/_integrations/aranet.markdown index 10bd5e16891..67397f2502a 100644 --- a/source/_integrations/aranet.markdown +++ b/source/_integrations/aranet.markdown @@ -28,5 +28,6 @@ The Aranet integration will automatically discover devices once the [Bluetooth]( - [Aranet2](https://aranet.com/products/aranet2/) - [Aranet4](https://aranet.com/products/aranet4/) - [Aranet Radiation](https://aranet.com/products/aranet-radiation-sensor/) +- [Aranet Radon Plus](https://aranet.com/products/aranet-radon-sensor) The Aranet integration requires that your Aranet device is updated to at least firmware version 1.2.0 and has the "Smart Home integration" feature enabled. Both of these can be done within the settings portion of the Aranet Home mobile application on both Android and iOS. diff --git a/source/_integrations/artsound.markdown b/source/_integrations/artsound.markdown new file mode 100644 index 00000000000..05311b87fac --- /dev/null +++ b/source/_integrations/artsound.markdown @@ -0,0 +1,17 @@ +--- +title: ArtSound +description: Connect and control your ArtSound media players using the LinkPlay integration +ha_release: 2024.9 +ha_category: + - Media player +ha_domain: artsound +ha_integration_type: virtual +works_with: + - linkplay +--- + +The **ArtSound** {% term integration %} allows users to control their ArtSound media players through the **LinkPlay** {% term integration %}. + +[Learn more about LinkPlay in Home Assistant.](/integrations/linkplay/) + +{% include integrations/supported_brand.md %} diff --git a/source/_integrations/august.markdown b/source/_integrations/august.markdown index fec9f55ebaf..68e33ed0f1c 100644 --- a/source/_integrations/august.markdown +++ b/source/_integrations/august.markdown @@ -29,6 +29,8 @@ ha_integration_type: integration The `august` integration allows you to integrate your [August](https://august.com/) and some Yale Access devices in Home Assistant. +For devices that use the [Yale Home](https://yalehome.com/global) app, the [Yale](/integrations/yale) integration should be used instead. + {% include integrations/config_flow.md %} ## Known working devices @@ -43,10 +45,6 @@ The `august` integration allows you to integrate your [August](https://august.co | August View | no | | Yale Assure Lock | yes | | Yale Assure Lock 2 | yes | -| Yale Conexis L1 | yes | -| Yale Conexis L2 | yes | -| Yale Doorman L3 | yes | -| Yale Linus | yes | | Yale Smart Safe | yes | Other devices not listed above have not been tested and may not function as expected. @@ -124,9 +122,7 @@ If you have an August Keypad, once you have enabled the August integration, you ## Integration with Yale Access Bluetooth -Following Assa Abloy, Yale's parent company, purchasing August in 2017, most newer devices use the Yale Access branding. - -The [Yale Access Bluetooth](/integrations/yalexs_ble) integration provides local control over Bluetooth of many Yale Access locks and some August locks that use the same system. +The [Yale Access Bluetooth](/integrations/yalexs_ble) integration provides local control over Bluetooth of many Yale Access locks and some August locks that use the same system. For locks that support the Yale Access system, the August integration can keep your offline access keys up to date to ensure you can operate your lock over Bluetooth. The following requirements must be met for the offline key updates to work: diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown index 5b64bd29f9b..4899572be9b 100644 --- a/source/_integrations/binary_sensor.mqtt.markdown +++ b/source/_integrations/binary_sensor.mqtt.markdown @@ -96,6 +96,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/button.mqtt.markdown b/source/_integrations/button.mqtt.markdown index b84e055f58e..27b13b4d25a 100644 --- a/source/_integrations/button.mqtt.markdown +++ b/source/_integrations/button.mqtt.markdown @@ -93,6 +93,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/camera.mqtt.markdown b/source/_integrations/camera.mqtt.markdown index cf9b228e6c0..2d8cb9f4938 100644 --- a/source/_integrations/camera.mqtt.markdown +++ b/source/_integrations/camera.mqtt.markdown @@ -95,6 +95,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/chacon_dio.markdown b/source/_integrations/chacon_dio.markdown index 06df560d3d9..0bbcbc645af 100644 --- a/source/_integrations/chacon_dio.markdown +++ b/source/_integrations/chacon_dio.markdown @@ -3,6 +3,7 @@ title: Chacon Dio description: Instructions on how to integrate your Chacon Dio devices within Home Assistant. ha_category: - Cover + - Switch ha_release: 2024.8 ha_iot_class: Cloud Push ha_config_flow: true @@ -11,15 +12,17 @@ ha_codeowners: ha_domain: chacon_dio ha_platforms: - cover + - switch ha_integration_type: integration --- [Chacon Dio devices](https://chacon.com/en/) are connected home devices that can be controlled via RF 433 MHz or Wi-Fi. This {% term integrations %} gives you access to the Wi-Fi connection so that Home Assistant can list your Chacon Dio devices and interact with them in real time, the same way the vendor's smartphone application does. -There is currently support for the following information within Home Assistant: +There is currently support for the following device types within Home Assistant: -- Cover devices (get statuses, move up, down, stop, and move to a given percentage) +- [Cover](#cover) +- [Switch](#switch) ## Prerequisites @@ -30,6 +33,25 @@ You will need to use the standalone app for this device to register a username a {% include integrations/config_flow.md %} +## Cover + +The cover platform integrates Chacon Dio devices to manage covers (like the REV-SHUTTER model) into Home Assistant, enabling control of the following: + +- get the **state** of the cover (connected or not, position and current movement) +- **Open/close/stop** the cover +- **Set position** of the cover (0-100%) + +## Switch + +The switch platform integrates Chacon Dio devices to manage switches (like the REV-SWITCH model) into Home Assistant, enabling control of the following: + +- get the **state** of the switch (connected or not and on/off state) +- **Turn on/off** the switch + +## Actions + +In rare cases, such as Wi-Fi interruptions, you may need to manually update the state of your devices. You can use the `homeassistant.update_entity` action to refresh the device state manually. + ## Tips You can use the [group integration](/integrations/group) to group entities as the application proposes (for example covers of the first floor). diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown index b1179141219..ec9052ef44b 100644 --- a/source/_integrations/climate.mqtt.markdown +++ b/source/_integrations/climate.mqtt.markdown @@ -115,6 +115,10 @@ device: description: 'The model of the device.' required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: 'The name of the device.' required: false @@ -474,4 +478,4 @@ mqtt: precision: 1.0 ``` -{% endraw %} \ No newline at end of file +{% endraw %} diff --git a/source/_integrations/coinbase.markdown b/source/_integrations/coinbase.markdown index 0f98291d6c1..e6fad373c00 100644 --- a/source/_integrations/coinbase.markdown +++ b/source/_integrations/coinbase.markdown @@ -18,7 +18,7 @@ ha_integration_type: integration The `coinbase` integration lets you access account balances and exchange rates from [Coinbase](https://coinbase.com). -You will need to obtain an API key from the API section in Coinbase's [User Settings](https://www.coinbase.com/settings/api) to use this integration. You need to select the account wallet or wallets (e.g. "BTC Wallet") that you wish to show in Home Assistant and give read access to `wallet:accounts` in order for the integration to access relevant data. It is worth noting that once you close the New API Key popup on Coinbase you will not be able to see the API Secret again. +You will need to obtain an API key from the API section in Coinbase's [User Settings](https://www.coinbase.com/settings/api) to use this integration. Your API key and secret should be of the form `organizations/XXXXX/apiKeys/XXXXX` and `-----BEGIN EC PRIVATE KEY-----\nXXXXXXXXXXXXXXXXX\n-----END EC PRIVATE KEY-----\n` respectively. When creating your API key, it is highly recommended to ensure that only the **View** box is ticked in the **API restrictions** section. {% include integrations/config_flow.md %} diff --git a/source/_integrations/cover.mqtt.markdown b/source/_integrations/cover.mqtt.markdown index 0b890ea932b..6c093b95415 100644 --- a/source/_integrations/cover.mqtt.markdown +++ b/source/_integrations/cover.mqtt.markdown @@ -106,6 +106,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown index 1471fe455cf..625f1c56405 100644 --- a/source/_integrations/device_tracker.mqtt.markdown +++ b/source/_integrations/device_tracker.mqtt.markdown @@ -95,6 +95,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/device_trigger.mqtt.markdown b/source/_integrations/device_trigger.mqtt.markdown index 1ad3a038e7b..bc2e1dff2a0 100644 --- a/source/_integrations/device_trigger.mqtt.markdown +++ b/source/_integrations/device_trigger.mqtt.markdown @@ -68,6 +68,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/drop_connect.markdown b/source/_integrations/drop_connect.markdown index f770e1f5704..d8abe554a9d 100644 --- a/source/_integrations/drop_connect.markdown +++ b/source/_integrations/drop_connect.markdown @@ -37,6 +37,7 @@ There is currently support for the following DROP products within Home Assistant - **Pump Controller**: smart replacement for an FSG pressure switch. - **RO Filter**: reverse osmosis drinking water filtration. - **Salt Sensor**: alerts when the salt level in the softener brine tank is low. +- **Alert**: monitors both the water level in a sump pit and electrical power to the sump pump. ### Prerequisites diff --git a/source/_integrations/event.mqtt.markdown b/source/_integrations/event.mqtt.markdown index 645264b8a03..29c73730c87 100644 --- a/source/_integrations/event.mqtt.markdown +++ b/source/_integrations/event.mqtt.markdown @@ -87,6 +87,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown index 4a56e0d507a..afe35bebd41 100644 --- a/source/_integrations/fan.mqtt.markdown +++ b/source/_integrations/fan.mqtt.markdown @@ -102,6 +102,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/fujitsu_fglair.markdown b/source/_integrations/fujitsu_fglair.markdown new file mode 100644 index 00000000000..b3a6628b751 --- /dev/null +++ b/source/_integrations/fujitsu_fglair.markdown @@ -0,0 +1,36 @@ +--- +title: Fujitsu FGLair +description: Control your Fujitsu heat pump or air conditioner that uses the FGLair app +ha_category: + - Climate +ha_release: 2024.9 +ha_domain: fujitsu_fglair +ha_integration_type: integration +ha_codeowners: + - '@crevetor' +ha_config_flow: true +ha_platforms: + - climate +ha_iot_class: "Cloud Polling" +--- + +The {{ page.title }} {% term integration %} provides support for Fujitsu heat pumps and air conditioners that use the FGLair app. +To find out which app to use for your heat pump, check [the Fujitsu FGLair FAQ](https://www.fujitsu-general.com/global/support/faq/airstage-mobile/0127.html). + +## Prerequisites + +First, set up your device in the FGLair app before using this integration. +To configure this integration, you will need the credentials (login and password) used to connect to the FGLair application. + +{% include integrations/config_flow.md %} + +## Climate + +This integration supports the following functionalities (if the devices support them): + +- [`set_hvac_mode`](/integrations/climate/#action-climateset_hvac_mode) +- [`target temperature`](/integrations/climate#action-climateset_temperature) +- [`turn on/off`](/integrations/climate#action-climateturn_on) +- [`fan mode`](/integrations/climate#action-climateset_fan_mode) +- [`swing mode`](/integrations/climate#action-climateset_swing_mode) + diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index 4dc697d794e..5b5b696539a 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -219,6 +219,7 @@ Executable by all users: - `homematicip_cloud.deactivate_eco_mode`: Deactivates the eco mode immediately. - `homematicip_cloud.deactivate_vacation`: Deactivates the vacation mode immediately. - `homematicip_cloud.set_active_climate_profile`: Set the active climate profile index. +- `homematicip_cloud.set_home_cooling_mode`: Enable or disable cooling for the home. Executable by administrators or within the context of an automation: - `homematicip_cloud.dump_hap_config`: Dump the configuration of the Homematic IP Access Point(s). @@ -318,6 +319,16 @@ action: entity_id: switch.livingroom ``` +Enable (or disable) Cooling mode for the entire home. Disabling Cooling mode will revert to Heating. + +```yaml +... +action: + action: homematicip_cloud.set_home_cooling_mode + data: + cooling: True + accesspoint_id: 3014xxxxxxxxxxxxxxxxxxxx +``` ## Additional info diff --git a/source/_integrations/humidifier.mqtt.markdown b/source/_integrations/humidifier.mqtt.markdown index 078bb6319e4..ad043a83901 100644 --- a/source/_integrations/humidifier.mqtt.markdown +++ b/source/_integrations/humidifier.mqtt.markdown @@ -120,6 +120,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/husqvarna_automower.markdown b/source/_integrations/husqvarna_automower.markdown index ed7364cb4f1..9dba15565df 100644 --- a/source/_integrations/husqvarna_automower.markdown +++ b/source/_integrations/husqvarna_automower.markdown @@ -107,7 +107,7 @@ The integration will create the following binary sensors: ### Button (if available) -The integration will create a button entity for confirming minor mower errors. This entity is disabled by default. You have to enable it manually. The API can't detect if the mower has the capability to confirm minor errors remotely. Before enabling this function, refer to the mower documentation. +The integration will create a button entity for confirming minor mower errors. ### Device tracker (if available) diff --git a/source/_integrations/image.mqtt.markdown b/source/_integrations/image.mqtt.markdown index 366cb11e17d..2278cee09aa 100644 --- a/source/_integrations/image.mqtt.markdown +++ b/source/_integrations/image.mqtt.markdown @@ -98,6 +98,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/ista_ecotrend.markdown b/source/_integrations/ista_ecotrend.markdown index 254958515c7..04de97bf231 100644 --- a/source/_integrations/ista_ecotrend.markdown +++ b/source/_integrations/ista_ecotrend.markdown @@ -34,3 +34,37 @@ The **ista EcoTrend** integration exposes the last monthly readings as sensors. - **Water costs**: estimated costs in EUR Not all values may be available in your ista EcoTrend account. Cost estimation is an optional service that has to be booked by your property manager. Therefore, the cost sensors are deactivated by default. + +## Long-term statistics + +The **ista EcoTrend** integration allows you to import all your historical consumption readings from your ista EcoTrend account into long-term statistic entities. These entities can be displayed in your Home Assistant energy dashboard, providing a comprehensive view of your consumption data over time. + +### Identifying ista EcoTrend statistic entities + +The statistic entities imported via this integration have a `ista_ecotrend:` prefix. This prefix helps you identify and distinguish these entities from other sensor statistics when setting up the long-term statistics in the energy dashboard. + +### Setting up long-term statistics in the energy dashboard + +To set up the **ista EcoTrend** long-term statistics in your Home Assistant energy dashboard, follow these steps: + +- **Access the energy configuration panel** + - Go to the [energy configuration panel](https://my.home-assistant.io/redirect/config_energy/) of your Home Assistant instance. + + [![Open your Home Assistant instance and show your energy configuration panel.](https://my.home-assistant.io/badges/config_energy.svg)](https://my.home-assistant.io/redirect/config_energy/) + +- **Add heating energy usage** + - Go to **Gas consumption**. + - Select **Add gas source**. + - Choose your **Heating energy** entity (for example, `ista_ecotrend:luxemburger_str_1_heating_energy`). + - For cost tracking, select the **Use an entity tracking the total costs** option. + - Select the corresponding **Heating costs** entity (for example, `ista_ecotrend:luxemburger_str_1_heating_cost`). +- **Add hot water energy usage** + - To track hot water energy usage and costs (for example, `ista_ecotrend:luxemburger_str_1_hot_water_energy` and `ista_ecotrend:luxemburger_str_1_hot_water_cost`), repeat the above steps for your **Hot water energy** and **Hot water costs** entities. +- **Add hot water consumption** + - Go to **Water consumption**. + - Select **Add water source**. + - Choose the **Hot water** entity (for example, `ista_ecotrend:luxemburger_str_1_hot_water`). + - For cost tracking, select the **Use an entity tracking the total costs** option. + - Select the corresponding **Hot water costs** entity (for example, `ista_ecotrend:luxemburger_str_1_hot_water_cost`). +- **Add water consumption** + - To track cold water consumption and costs (for example, `ista_ecotrend:luxemburger_str_1_water` and `ista_ecotrend:luxemburger_str_1_water_cost`), repeat the above steps for your **Water** and **Water costs** entities. diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index e742753c20e..f1304a491f4 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -74,10 +74,6 @@ There is currently support for the following device types within Home Assistant: - [Time](#time) - [Weather](#weather) -## Free KNX online training - -As a Home Assistant KNX user, you can start a FREE KNX online training and get a discounted ETS Home license on the [KNX website](https://www.knx.org/knx-en/for-your-home/home-assistant/). - {% include integrations/config_flow.md %} ## Basic configuration @@ -791,29 +787,28 @@ knx: ``` `operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` / `operation_mode_standby_address` are not necessary if `operation_mode_address` is specified. -If the actor doesn't support explicit state group objects the `*_state_address` can be configured with the same group address as the writeable `*_address`. The read flag for the `*_state_address` group object has to be set in ETS to support initial reading e.g., when starting Home Assistant. The following values are valid for the `heat_cool_address` and the `heat_cool_state_address`: - `0` (cooling) - `1` (heating) -The following values are valid for the Home Assistant [Climate](/integrations/climate/) `hvac_mode` attribute. Supported values for your KNX thermostats can be specified via `controller_modes` configuration variable: +Supported HVAC modes for your KNX thermostats are found automatically. This can be overridden by using the `controller_modes` configuration variable. The following values are valid controller modes: -- `off` (maps internally to `HVAC_MODE_OFF` within Home Assistant) -- `auto` (maps internally to `HVAC_MODE_AUTO` within Home Assistant) -- `heat` (maps internally to `HVAC_MODE_HEAT` within Home Assistant) -- `cool` (maps internally to `HVAC_MODE_COOL` within Home Assistant) -- `fan_only` (maps internally to `HVAC_MODE_FAN_ONLY` within Home Assistant) -- `dehumidification` (maps internally to `HVAC_MODE_DRY` within Home Assistant) +- `off` +- `auto` +- `heat` +- `cool` +- `fan_only` +- `dehumidification` -The following presets are valid for the Home Assistant [Climate](/integrations/climate/) `preset_mode` attribute. Supported values for your KNX thermostats can be specified via `operation_modes` configuration variable: +Supported preset modes for your KNX thermostats are found automatically. This can be overridden by using the `operation_modes` configuration variable. The following values are valid operation modes: -- `auto` (maps to `none` of the Home Assistant [Climate](/integrations/climate/) `preset_mode` attribute) -- `comfort` (maps to `comfort` of the Home Assistant [Climate](/integrations/climate/) `preset_mode` attribute) -- `standby` (maps to `away` of the Home Assistant [Climate](/integrations/climate/) `preset_mode` attribute) -- `economy` (maps to `sleep` of the Home Assistant [Climate](/integrations/climate/) `preset_mode` attribute) -- `building_protection` (maps to `eco` of the Home Assistant [Climate](/integrations/climate/) `preset_mode` attribute) +- `auto` +- `comfort` +- `standby` +- `economy` +- `building_protection` {% configuration %} name: @@ -918,11 +913,11 @@ operation_mode_standby_address: required: false type: [string, list] operation_modes: - description: Overrides the supported operation modes. Provide the supported `preset_mode` values for your device. + description: Overrides the supported operation modes. Provide the supported `preset_modes` value for your device. required: false type: list controller_modes: - description: Overrides the supported controller modes. Provide the supported `hvac_mode` values for your device. + description: Overrides the supported controller modes. Provide the supported `hvac_modes` value for your device. required: false type: list default_controller_mode: diff --git a/source/_integrations/lawn_mower.mqtt.markdown b/source/_integrations/lawn_mower.mqtt.markdown index 61766ae84fb..e006db58e6f 100644 --- a/source/_integrations/lawn_mower.mqtt.markdown +++ b/source/_integrations/lawn_mower.mqtt.markdown @@ -96,6 +96,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown index 9aee3d634ca..e9179af08c9 100644 --- a/source/_integrations/light.mqtt.markdown +++ b/source/_integrations/light.mqtt.markdown @@ -164,6 +164,10 @@ device: description: 'The model of the device.' required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: 'The name of the device.' required: false diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown index 6dece6193de..1452b1d4d3b 100644 --- a/source/_integrations/lock.mqtt.markdown +++ b/source/_integrations/lock.mqtt.markdown @@ -108,6 +108,10 @@ device: description: 'The model of the device.' required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: 'The name of the device.' required: false diff --git a/source/_integrations/manual.markdown b/source/_integrations/manual.markdown index 2d795a6fa99..e08e4c85ac3 100644 --- a/source/_integrations/manual.markdown +++ b/source/_integrations/manual.markdown @@ -34,6 +34,10 @@ name: required: false type: string default: HA Alarm +unique_id: + description: Create a unique id for the entity. + required: false + type: string code: description: > If defined, specifies a code to enable or disable the alarm in the frontend. @@ -147,6 +151,7 @@ In the configuration example below: alarm_control_panel: - platform: manual name: Home Alarm + unique_id: a_very_unique_id code: "1234" arming_time: 30 delay_time: 20 diff --git a/source/_integrations/mastodon.markdown b/source/_integrations/mastodon.markdown index e90b1e3b70a..fa7e597b420 100644 --- a/source/_integrations/mastodon.markdown +++ b/source/_integrations/mastodon.markdown @@ -10,7 +10,9 @@ ha_codeowners: ha_domain: mastodon ha_iot_class: Cloud Push ha_platforms: + - diagnostics - notify + - sensor ha_integration_type: service ha_config_flow: true --- @@ -24,6 +26,10 @@ If you want to grant only required accesses, uncheck all checkboxes then check o {% include integrations/config_flow.md %} +## Sensors + +The integration will create sensors for the Mastodon account showing total followers, following, and posts. + ## Notifications The integration will create a `notify` action matching the name of the integration entry. diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown index 3bc41561610..14dd9a1d411 100644 --- a/source/_integrations/motion_blinds.markdown +++ b/source/_integrations/motion_blinds.markdown @@ -10,6 +10,7 @@ ha_codeowners: - '@starkillerOG' ha_config_flow: true ha_platforms: + - button - cover - sensor ha_dhcp: true @@ -95,6 +96,12 @@ In the official Bloc Blinds app go to settings (three bars > gear icon), go to t Click the about page of the connector app 5 times to get the key ([iOS app](https://apps.apple.com/us/app/connector/id1344058317), [Android app](https://play.google.com/store/apps/details?id=com.smarthome.app.connector)). +## Favorite position + +A **Go to favorite position** button entity allows you to move the blind to its favorite position. For this entity to show up, you first need to set the blind's favorite position in the mobile app, using a remote or physical buttons on the blind. Refer to the manual of your specific blind for instructions. + +The **Set current position as favorite** button entity allows you to change the favorite position. For this to work, the blind first needs to be put in programming mode by shortly pressing the reset button on the blind. It will start stepping (moving a small bit up-down repeatedly). You can then use the **Set current position as favorite** entity. After you are done, shortly press the reset button again to exit the programming mode. + ## Top Down Bottom Up (TDBU) blinds TDBU blinds consist of two bars controlled by two motors designated by Top and Bottom with fabric in between. diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index c9c6e49a1f5..ccb9af6d7c7 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -119,6 +119,15 @@ MQTT (aka MQ Telemetry Transport) is a machine-to-machine or "Internet of Things Your first step to get MQTT and Home Assistant working is to choose a broker. +The easiest option is to install the official Mosquitto Broker add-on. You can choose to set up and configure this add-on automatically when you set up the MQTT integration. Home Assistant will automatically generate and assign a safe username and password, and no further attention is required. This also works if you have already set up this add-on yourself in advance. +You can set up additional logins for your MQTT devices and services using the [Mosquitto add-on configuration](https://my.home-assistant.io/create-link/?redirect=supervisor_addon&addon=core_mosquitto). + +{% important %} +When MQTT is set up with the official Mosquitto MQTT broker add-on, the broker's credentials are generated and kept secret. If the official Mosquitto MQTT broker needs to be re-installed, make sure you save a copy of the add-on user options, like the additional logins. After re-installing the add-on, the MQTT integration will automatically update the new password for the re-installed broker. It will then reconnect automatically. +{% endimportant %} + + Alternatively, you can use a different MQTT broker that you configure yourself, ensuring it is compatible with Home Assistant. + ## Setting up a broker While public MQTT brokers are available, the easiest and most private option is running your own. @@ -584,6 +593,7 @@ support_url: 'name': 'name', 'mf': 'manufacturer', 'mdl': 'model', + 'mdl_id': 'model_id', 'hw': 'hw_version', 'sw': 'sw_version', 'sa': 'suggested_area', @@ -820,7 +830,8 @@ Setting up a sensor with multiple measurement values requires multiple consecuti ], "name":"Bedroom", "manufacturer": "Example sensors Ltd.", - "model": "K9", + "model": "Example Sensor", + "model_id": "K9", "serial_number": "12AE3010545", "hw_version": "1.01a", "sw_version": "2024.1.0", @@ -955,6 +966,7 @@ Setting up a [light that takes JSON payloads](/integrations/light.mqtt/#json-sch "name": "Kitchen", "mf": "Bla electronics", "mdl": "xya", + "mdl_id": "ABC123", "sw": "1.0", "sn": "ea334450945afc", "hw": "1.0rev2", @@ -1082,10 +1094,19 @@ The MQTT integration will register the `mqtt.publish` action, which allows publi | ---------------------- | -------- | ------------------------------------------------------------ | | `topic` | no | Topic to publish payload to. | | `payload` | no | Payload to publish. | +| `evaluate_payload` | yes | If a `bytes` literal in `payload` should be evaluated to publish raw data. (default: false)| | `qos` | yes | Quality of Service to use. (default: 0) | | `retain` | yes | If message should have the retain flag set. (default: false) | -### Publish action data examples + +{% note %} +When `payload` is rendered from [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) in a YAML script or automation, and the template renders to a `bytes` literal, the outgoing MQTT payload will only be sent as `raw` data, if the `evaluate_payload` option flag is set to `true`. +{% endnote %} + +{% important %} +You must include either `topic` or `topic_template`, but not both. If providing a payload, you need to include either `payload` or `payload_template`, but not both. +{% endimportant %} + ```yaml topic: homeassistant/light/1/command @@ -1143,7 +1164,8 @@ data: "device": { "identifiers": "Acurite-986-1R-51778", "name": "Bathroom", - "model": "Acurite-986", + "model": "Acurite", + "model_id": "986", "manufacturer": "rtl_433" } } ``` diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index a7dab259747..10bfd6fb3b9 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -5,6 +5,7 @@ ha_category: - Camera - Climate - Doorbell + - Event - Hub - Media source - Sensor @@ -20,6 +21,7 @@ ha_platforms: - camera - climate - diagnostics + - event - sensor ha_integration_type: integration --- @@ -31,6 +33,7 @@ There is currently support for the following device types within Home Assistant: - [Climate](#climate) - [Sensor](#sensor) - [Camera](#camera) +- [Event](#event) Cameras and doorbells use [Automation and device triggers](#automation-and-device-triggers) for events and a [media source](#media-source) for capturing media images on supported devices. Other device types like Smoke and CO Alarms or Security systems are not currently supported by the SDM API. @@ -260,6 +263,8 @@ Home Assistant supports all SDM API features. However, every Camera or Doorbell - **RTSP**: These devices have an HLS stream served by the Home Assistant Core. These cameras support server-side `camera` actions like stream recording or image preview. See [Low Latency HLS](/integrations/stream#ll-hls) as a great option to enable to reduce stream latency. - **WebRTC**: These devices support direct browser to camera communication and a super low latency stream. A [Picture Glance Card](/dashboards/picture-glance/) can show the live stream in the grid with the *Camera View* set to `live` (not recommended for battery-powered cameras). `camera` actions like stream recording are *not supported*. +Given a camera named `Front Yard`, then the camera is created with a name such as `camera.front_yard`. + {% note %} This feature is enabled by the following permissions: @@ -269,10 +274,10 @@ This feature is enabled by the following permissions: {% endnote %} +All cameras also expose event entities for automation. Some camera models also +support capturing media (snapshots or clips) through device triggers. The table below summarizes the [supported SDM API features](https://developers.google.com/nest/device-access/supported-devices) for each device. -All cameras have motion and person triggers, however only some support capturing snapshots for events. The table below summarizes the [Supported SDM API features](https://developers.google.com/nest/device-access/supported-devices) for each device. - -| Device | Live Stream | Triggers / Events | Media Source
for Triggers / Events | +| Device | Live stream | Event entities / triggers | Media source
for triggers | | -------------------------------------------------------------------------------- | :---------------: | :--------------------------------: | :------------------------------------: | | Nest Cam (indoor, wired)
Nest Cam (outdoor, battery) | WebRTC | Motion
Person | N/A | | Nest Cam Indoor
Nest Cam IQ Indoor
Nest Cam IQ Outdoor
Nest Cam Outdoor | RTSP
Recording | Motion
Person
Sound | Snapshot (jpg) | @@ -282,13 +287,26 @@ All cameras have motion and person triggers, however only some support capturing | Nest Doorbell (wired, 2nd gen) | WebRTC | Motion
Person
Chime | Clip Preview (mp4, gif) | | Nest Hub Max | RTSP
Recording | Motion
Person
Sound
| Snapshot (jpg) | -Given a camera named `Front Yard` then the camera is created with a name such as `camera.front_yard`. +## Event -## Automation and device triggers +All doorbells and cameras support event entities. See the [Event](https://www.home-assistant.io/integrations/event/) integration documentation for more about how to use event entities in automations. + +There are two classes of event entities that are available based on the above camera features: + +- `motion` for cameras that support any of the event types `camera_motion`, `camera_person`, or `camera_sound` +- `doorbell` for all cameras that are doorbells and support `doorbell_chime` events + +Nest event entities are updated immediately when an event message is received +without waiting for any media to be fetched. See Device Triggers for media support. + +## Device Triggers The Nest integration provides [device triggers](/docs/automation/trigger/#device-triggers) to enable automation in Home Assistant. You should review the [Automating Home Assistant](/getting-started/automation/) getting started guide on automations or the [Automation](/docs/automation/) documentation for full details. +Device triggers will wait to fire after any media associated with the event is downloaded. Use an +event entity for immediate notifications without media. + {% my automations badge %} ![Screenshot Device Triggers](/images/integrations/nest/device_triggers.png) @@ -305,13 +323,18 @@ This is an example of what the `nest_event` payload looks like for a Device Trig "type": "doorbell_chime", "timestamp": "2022-01-26T04:56:54.031000+00:00", "nest_event_id": "EXAMPLE_EVENT_ID", + "attachment": { + "image": "/api/nest/event_media/DEVICE_ID/EVENT_ID/thumbnail", + "video": "/api/nest/event_media/DEVICE_ID/EVENT_ID", + } "zones": ["Zone 1"], }, } ``` - `device_id`: The Home Assistant device identifier for the camera -- `nest_event_id`: is an opaque identifier that can be used with the Media Source Attachments described below for supported cameras. +- `nest_event_id`: is an opaque identifier that identifies the event. +- `attachment`: May be present if the device supports snapshots or clips and depends on the device's capabilities. This is a URL where media can be fetched from the media source. - `zones`: Zones triggering the event if available. Zones are configured in the Google Home App, though not supported by all cameras. Events in the area outside of a named zone will be an empty zone name. {% enddetails %} @@ -327,7 +350,7 @@ This feature is enabled by the following permissions: - *Other permissions and notification settings in the Nest or Google Home apps*. {% endnote %} -### Google Home App Notification Settings +## Google Home App Notification Settings The Google Home App Notifications settings control not only which notifications are sent to your phone, but also what gets published to the Pub/Sub feed. @@ -346,7 +369,6 @@ If you are still not getting notifications, you can read this [troubleshooting g {% details "Google Home App Notification Settings" %} - | Google Home App Setting | Notes | | ------------------------ | :---------------------------------------------------------------------: | | Notifications: Push | Required for any detection event to be published | @@ -362,7 +384,7 @@ If you are still not getting notifications, you can read this [troubleshooting g The Nest [media source](/integrations/media_source) platform allows you to browse clips for recent camera events. Home Assistant is not intended to be a Network Video Recorder (NVR) platform, however, basic support for capturing recent events is supported. -The table above describes which devices support event image snapshots or 10-frame mp4 video clips for recent events. +The table above describes which devices support image snapshots or 10-frame mp4 video clips. ### Media Attachments @@ -372,7 +394,7 @@ The Media Source APIs can be used in [Companion App Attachments](https://compani - `/api/nest/event_media/DEVICE_ID/EVENT_ID/thumbnail`: A thumbnail preview of the media, which supports image snapshots (jpg) or clip previews (gif) depending on the camera type. -You can use the event payload fields `device_id` and `event_id` in an [automation](/getting-started/automation/) to send a notification from an [actions](/getting-started/automation-action/) as shown in the examples below. +You can use the Nest Device Trigger payload fields `attachment.image` or `attachment.video`in an [automation](/getting-started/automation/) to send a notification from an [actions](/getting-started/automation-action/) as shown in the examples below. {% details "Example Action: Clip Preview (mp4) attachment for iOS" %} @@ -386,10 +408,8 @@ data: message: Doorbell Pressed title: Someone pressed the doorbell data: - image: >- - /api/nest/event_media/{{ trigger.event.data.device_id }}/{{ trigger.event.data.nest_event_id }}/thumbnail - video: >- - /api/nest/event_media/{{ trigger.event.data.device_id }}/{{ trigger.event.data.nest_event_id }} + image: {{ trigger.event.data.attachment.image }} + video: {{ trigger.event.data.attachment.video }} mode: single ``` @@ -409,8 +429,7 @@ data: message: Doorbell Pressed title: Someone pressed the doorbell data: - image: >- - /api/nest/event_media/{{ trigger.event.data.device_id }}/{{ trigger.event.data.nest_event_id }}/thumbnail + image: {{ trigger.event.data.attachment.image }} ``` {% endraw %} @@ -429,8 +448,7 @@ data: message: Doorbell Pressed title: Someone pressed the doorbell data: - image: >- - /api/nest/event_media/{{ trigger.event.data.device_id }}/{{ trigger.event.data.nest_event_id }}/thumbnail + image: {{ trigger.event.data.attachment.image }} ``` {% endraw %} diff --git a/source/_integrations/nice_go.markdown b/source/_integrations/nice_go.markdown new file mode 100644 index 00000000000..b26348d53e4 --- /dev/null +++ b/source/_integrations/nice_go.markdown @@ -0,0 +1,46 @@ +--- +title: Nice G.O. +description: Control Nice G.O. garage doors +ha_release: '2024.9' +ha_category: + - Cover + - Event + - Light + - Switch +ha_iot_class: Cloud Push +ha_config_flow: true +ha_codeowners: + - '@IceBotYT' +ha_domain: nice_go +ha_platforms: + - cover + - diagnostics + - event + - light + - switch +ha_integration_type: integration +--- + +The **Nice G.O.** {% term integration %} lets you control Nice G.O. garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your Nice G.O. mobile app. + +## Prerequisites + +Make sure you have a working account with the Nice G.O. app and have your email and password ready. + +{% include integrations/config_flow.md %} + +## Cover + +Garage doors linked to your Nice G.O. account will appear as covers. + +## Event + +The barrier obstructed event entity will be triggered whenever the barrier gets obstructed. This could be triggered by anything that results in the closure being unsuccessful. This may include beam block during closure, beam block before closure, and an object in the way. + +## Light + +Lights on your garage door will appear as lights. + +## Switch + +A switch for turning vacation mode on and off will be made available for each device. Vacation mode prevents the operation of the door from physical control points such as a wall station, wireless keypad, remote control, or HomeLink. It can still be controlled from Home Assistant. diff --git a/source/_integrations/notify.mqtt.markdown b/source/_integrations/notify.mqtt.markdown index 2f02873ff8a..2d7dca5ffb6 100644 --- a/source/_integrations/notify.mqtt.markdown +++ b/source/_integrations/notify.mqtt.markdown @@ -93,6 +93,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/number.mqtt.markdown b/source/_integrations/number.mqtt.markdown index e4301d3fac7..68d44cdbbb7 100644 --- a/source/_integrations/number.mqtt.markdown +++ b/source/_integrations/number.mqtt.markdown @@ -87,6 +87,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/ollama.markdown b/source/_integrations/ollama.markdown index 5770c475bbc..ca226ba54fe 100644 --- a/source/_integrations/ollama.markdown +++ b/source/_integrations/ollama.markdown @@ -45,6 +45,8 @@ Instructions: Control Home Assistant: description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it. This feature is considered experimental and see [Controlling Home Assistant](#controlling-home-assistant) below for details on model limitations. +Context window size: + description: "The context window size is the number of tokens the model can take as input. Home Assistant defaults to 8k, which is larger than the default value in Ollama Server (2k), and you may adjust it based on the maximum context size of the specific model used. A larger value will better support larger homes with more entities, and smaller values may lower Ollama server RAM usage." Max history messages: description: Maximum number of messages to keep for each conversation (0 = no limit). Limiting this value will cause older messages in a conversation to be dropped. diff --git a/source/_integrations/opower.markdown b/source/_integrations/opower.markdown index 6979a117aee..9d4f620ac7c 100644 --- a/source/_integrations/opower.markdown +++ b/source/_integrations/opower.markdown @@ -41,6 +41,7 @@ More than 175 utilities use Opower. Currently only the following utilities are s - PECO Energy Company (PECO) - Potomac Electric Power Company (Pepco) - Mercury NZ Limited +- National Grid NY Upstate - Pacific Gas & Electric (PG&E) - Portland General Electric (PGE) - Puget Sound Energy (PSE) diff --git a/source/_integrations/prometheus.markdown b/source/_integrations/prometheus.markdown index d4c88d88655..8fa1bb1287f 100644 --- a/source/_integrations/prometheus.markdown +++ b/source/_integrations/prometheus.markdown @@ -209,4 +209,4 @@ For example: Metrics are exported only for the following domains: -`automation`, `binary_sensor`, `climate`, `cover`, `counter`, `device_tracker`, `fan`, `humidifier`, `input_boolean`, `input_number`, `light`, `lock`, `number`, `person`, `sensor`, `update`, `switch` +`alarm_control_panel`, `automation`, `binary_sensor`, `climate`, `cover`, `counter`, `device_tracker`, `fan`, `humidifier`, `input_boolean`, `input_number`, `light`, `lock`, `number`, `person`, `sensor`, `switch`, `update` diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index ead874547cc..a2cf9a8eab7 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -178,6 +178,15 @@ Depending on the supported features of the camera, select entities are added for **Play quick reply messages**/**Auto quick reply messages** can be recorded in the Reolink phone app where a name is also supplied. New or updated quick reply messages will be loaded into Home Assistant at the start of the integration. When adding new quick reply messages, please restart the Reolink integration. +### Action reolink.play_chime + +To play a ringtone on a Reolink chime, the `reolink.play_chime` action can be used. + +| Data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `device_id` | no | List of device ids of the Reolink Chimes to control. For example, `- 12a34b56c7d8ef9ghijklm0n1op2345q`. | +| `ringtone` | no | The ringtone to play. For example `operetta`. | + ## Siren entities If the camera supports a siren, a siren entity will be created. diff --git a/source/_integrations/russound_rio.markdown b/source/_integrations/russound_rio.markdown index 4b1b81636c9..3ce410b3bde 100644 --- a/source/_integrations/russound_rio.markdown +++ b/source/_integrations/russound_rio.markdown @@ -6,6 +6,7 @@ ha_category: ha_release: 0.49 ha_iot_class: Local Push ha_domain: russound_rio +ha_quality_scale: silver ha_platforms: - media_player ha_codeowners: diff --git a/source/_integrations/scene.mqtt.markdown b/source/_integrations/scene.mqtt.markdown index f7ec95cbeac..7ddd58d84c5 100644 --- a/source/_integrations/scene.mqtt.markdown +++ b/source/_integrations/scene.mqtt.markdown @@ -91,6 +91,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/select.mqtt.markdown b/source/_integrations/select.mqtt.markdown index dcd782ccb38..03c03470fa3 100644 --- a/source/_integrations/select.mqtt.markdown +++ b/source/_integrations/select.mqtt.markdown @@ -99,6 +99,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown index ca7cddf0164..8f8bc9927b4 100644 --- a/source/_integrations/sensor.mqtt.markdown +++ b/source/_integrations/sensor.mqtt.markdown @@ -88,6 +88,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false @@ -161,6 +165,10 @@ object_id: description: Used instead of `name` for automatic generation of `entity_id` required: false type: string +options: + description: List of allowed sensor state value. An empty list is not allowed. The sensor's `device_class` should be set to `enum`. Cannot be used together with `state_class` or `unit_of_measurement`. + required: false + type: list payload_available: description: The payload that represents the available state. required: false diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index d29db29ce0d..1447b9e0b0b 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -73,7 +73,7 @@ The list below will help you diagnose and fix the problem: ## Shelly device configuration (generation 2 and 3) -Generation 2 and 3 devices use the `RPC` protocol to communicate with the integration. **Battery operated devices** (even if USB connected) need manual outbound WebSocket configuration, Navigate to the local IP address of your Shelly device, **Settings** >> **Connectivity** >> **Outbound WebSocket** and check the box **Enable Outbound WebSocket**, under server enter the following address: +Generation 2 and 3 devices use the `RPC` protocol to communicate with the integration. **Battery-operated devices** (even if USB connected) may need manual outbound WebSocket configuration if Home Assistant cannot correctly determine your instance's internal URL or the outbound WebSocket was previously configured for a different Home Assistant instance. In this case, navigate to the local IP address of your Shelly device, **Settings** >> **Connectivity** >> **Outbound WebSocket** and check the box **Enable Outbound WebSocket**, under server enter the following address: `ws://` + `Home_Assistant_local_ip_address:Port` + `/api/shelly/ws` (for example: `ws://192.168.1.100:8123/api/shelly/ws`), click **Apply** to save the settings. In case your installation is set up to use SSL encryption (HTTP**S** with certificate), an additional `s` needs to be added to the WebSocket protocol, too, so that it reads `wss://` (for example: `wss://192.168.1.100:8123/api/shelly/ws`). diff --git a/source/_integrations/simplefin.markdown b/source/_integrations/simplefin.markdown index a90adf53fa8..db630b7674c 100644 --- a/source/_integrations/simplefin.markdown +++ b/source/_integrations/simplefin.markdown @@ -32,5 +32,6 @@ Each `account` will be set up as a device in Home Assistant, and it will contain |Sensor|Description| |-------|---------------| -|Balance|Account balance| |Age| This sensor shows when the data was retrieved by the SimpleFin API | +|Balance|Account balance| +|Problem| Binary sensor that indicates whether the account sync may have a problem | diff --git a/source/_integrations/siren.mqtt.markdown b/source/_integrations/siren.mqtt.markdown index efc26dc6f75..c3dcfc57d42 100644 --- a/source/_integrations/siren.mqtt.markdown +++ b/source/_integrations/siren.mqtt.markdown @@ -110,6 +110,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/smlight.markdown b/source/_integrations/smlight.markdown new file mode 100644 index 00000000000..2301075153d --- /dev/null +++ b/source/_integrations/smlight.markdown @@ -0,0 +1,47 @@ +--- +title: SMLIGHT SLZB +description: The SMLIGHT SLZB integration allows users to monitor and manage their SMLIGHT SLZB-06x devices from directly within Home Assistant. +ha_category: + - Sensor +ha_release: 2024.9 +ha_iot_class: Local Polling +ha_config_flow: true +ha_domain: smlight +ha_zeroconf: true +ha_platforms: + - sensor +ha_codeowners: + - '@tl-sl' +ha_integration_type: device +--- + +The [SMLIGHT](https://smlight.tech) SLZB-06x Ethernet Zigbee coordinators +provide a convenient way to add Zigbee to your smart home setup. + +The **SMLIGHT SLZB** {% term integration %} allows users to monitor and manage their SLZB-06x devices +directly from within Home Assistant and to directly access many of the +features found in the SMLIGHT web UI. You can also use these in your automations. + +## Prerequisites + +You need a supported SLZB-06 adapter. + + This integration has been tested with the following devices: + +- [SLZB-06](https://smlight.tech/product/slzb-06) +- [SLZB-06M](https://smlight.tech/product/slzb-06m) +- [SLZB-06p7](https://smlight.tech/product/slzb-06p7) +- [SLZB-06p10](https://smlight.tech/product/slzb-06p10/) + +{% include integrations/config_flow.md %} + +## Integration entities + +The following sensors will be created: + +- **Core Temperature** - Temperature of core ESP32 +- **Zigbee Temperature** - Temperature of Zigbee CC2652 or EFR32 chip +- **Core Uptime** - Uptime of Core device +- **Zigbee Uptime** - Uptime of Zigbee connection to ZHA/Z2M +- **RAM Usage** - Monitor RAM Usage +- **FS Usage** - Monitor filesystem usage diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown index b86a2ff9801..5a5e439eea0 100644 --- a/source/_integrations/sonos.markdown +++ b/source/_integrations/sonos.markdown @@ -342,6 +342,47 @@ Force start playing the queue, allows switching from another stream (such as rad | `entity_id` | yes | String or list of `entity_id`s that will start playing. It must be the coordinator if targeting a group. | `queue_position` | yes | Position of the song in the queue to start playing from, starts at 0. +### Action `sonos.get_queue` + +Returns the media_players queue. + +| Data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | media_player entity id. | + +This example script does the following: get the queue, loop through in reverse order, and remove media containing the words "holiday". + +{% raw %} + +```yaml + - action: sonos.get_queue + target: + entity_id: media_player.living_room + response_variable: queue + - variables: + queue_len: '{{ queue["media_player.living_room"] | length }}' + - repeat: + sequence: + - variables: + title: '{{ queue["media_player.living_room"][queue_len - repeat.index]["media_title"].lower() }}' + album: '{{ queue["media_player.living_room"][queue_len - repeat.index]["media_album_name"].lower() }}' + position: '{{ queue_len - repeat.index }}' + - if: + - '{{ "holiday" in title or "holiday" in album }}' + then: + - action: sonos.remove_from_queue + target: + entity_id: media_player.living_room + data: + queue_position: '{{position}}' + until: + - condition: template + value_template: '{{queue_len == repeat.index}}' + +``` + +{% endraw %} + ### Action `sonos.remove_from_queue` Removes an item from the queue. diff --git a/source/_integrations/swiss_public_transport.markdown b/source/_integrations/swiss_public_transport.markdown index dd666ccf961..50ec1f6787b 100644 --- a/source/_integrations/swiss_public_transport.markdown +++ b/source/_integrations/swiss_public_transport.markdown @@ -25,6 +25,21 @@ The [Stationboard](https://transport.opendata.ch/examples/stationboard.html) web The public timetables are coming from [Swiss public transport](https://transport.opendata.ch/). -### Defining a custom polling interval +## Actions + +The Swiss public transport integration has the following action: + +- `swiss_public_transport.fetch_connections` + +### Action `swiss_public_transport.fetch_connections` + +Fetch the connections for a specific instance. + +| Data attribute | Optional | Description | +|------------------------|----------|----------------------------------------------------------| +| `config_entry_id` | No | The ID of the Swiss public transport config entry to get data from. For example, in YAML: `config_entry_id: zurich_geneva` or in UI `Instance: zurich_geneva`)| +| `limit` | Yes | The number of connections to fetch. (default: 3, range: [1,15])| + +## Defining a custom polling interval {% include common-tasks/define_custom_polling.md %} diff --git a/source/_integrations/switch.mqtt.markdown b/source/_integrations/switch.mqtt.markdown index 1aade14aeff..c3619c78b2d 100644 --- a/source/_integrations/switch.mqtt.markdown +++ b/source/_integrations/switch.mqtt.markdown @@ -101,6 +101,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/tag.mqtt.markdown b/source/_integrations/tag.mqtt.markdown index 93e6b0a442a..352ad0d3fed 100644 --- a/source/_integrations/tag.mqtt.markdown +++ b/source/_integrations/tag.mqtt.markdown @@ -53,6 +53,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/technove.markdown b/source/_integrations/technove.markdown index 140bdc3cbfd..f524bae9633 100644 --- a/source/_integrations/technove.markdown +++ b/source/_integrations/technove.markdown @@ -64,3 +64,4 @@ The {% term integration %} adds the following switch: | Name | Description | | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Auto-charge mode | When enabled, vehicles will start charging automatically when plugged in. When turned off, charging will need to be manually started each time a vehicle is plugged in. Note: Disabling auto-charge mode does not interrupt an ongoing charging session. | +| Charging enabled | When enabled, vehicles will be able to charge. Disable it to stop a vehicle from charging. Note: This switch can only be used when auto-charge mode is disabled. | diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index c51f0797b49..d055e8733a4 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -41,7 +41,9 @@ 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 and selects are covered on this page. For other types, please see the specific pages: +Sensors, binary (on/off) sensors, buttons, images, numbers, and selects 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/) - [Cover](/integrations/cover.template/) @@ -52,16 +54,6 @@ Sensors, binary (on/off) sensors, buttons, images, numbers and selects are cover - [Vacuum](/integrations/vacuum.template/) - [Weather](/integrations/weather.template/) -Sensor, binary sensor, button, image and select can be configured using [UI](#ui-configuration) or [YAML](#yaml-configuration) file. - -Number template entities are defined in your YAML configuration files under the `template:` key and cannot be configured via the UI. You can define multiple configuration blocks as a list. Each block defines sensor/binary sensor/number/select entities and can contain an optional update trigger. - -_For old sensor/binary sensor configuration format, [see below](#legacy-binary-sensor-configuration-format)._ - -## UI configuration - -Sensor template, binary sensor template, button template, image template and select template can be configured using the user interface at **{% my helpers title="Settings > Devices & services > Helpers" %}**. Select the **+ Add helper** button and then select the **{% my config_flow_start domain=page.ha_domain title=page.title %}** helper. - {% include integrations/config_flow.md %} {% important %} @@ -76,6 +68,10 @@ If you need more specific features for your use case, the manual [YAML-configura ## YAML configuration +Entities (sensors, binary sensors, buttons, images, numbers, and selections) 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 an optional update trigger. + +_For old sensor/binary sensor configuration format, [see below](#legacy-binary-sensor-configuration-format)._ + ### State-based template binary sensors, buttons, images, numbers, selects and sensors Template entities will by default update as soon as any of the referenced data in the template updates. diff --git a/source/_integrations/tesla_fleet.markdown b/source/_integrations/tesla_fleet.markdown index c78d6080fa0..6986c29560e 100644 --- a/source/_integrations/tesla_fleet.markdown +++ b/source/_integrations/tesla_fleet.markdown @@ -17,6 +17,7 @@ ha_platforms: - device_tracker - diagnostics - sensor +ha_quality_scale: gold ha_integration_type: integration --- @@ -26,6 +27,14 @@ The Tesla Fleet API {% term integration %} exposes various sensors from Tesla ve You must have a [Tesla](https://tesla.com) account and a Tesla vehicle, PowerWall, Solar, or Wall Connector, and must not have disabled the [My Home Assistant](/integrations/my/) integration. +{% details "Use a custom OAuth application" %} + +The integration has a built-in OAuth application that will be suitable for most users. However, you can [create your own application](https://developer.tesla.com/dashboard) for the Tesla Fleet API and configure it as an [application credential](https://my.home-assistant.io/redirect/application_credentials). When creating the application, you must set `https://my.home-assistant.io/redirect/oauth` as the redirect URL. + +You will be prompted to pick your custom application credential when creating a Tesla Fleet config entry. + +{% enddetails %} + {% include integrations/config_flow.md %} ## Scopes diff --git a/source/_integrations/text.mqtt.markdown b/source/_integrations/text.mqtt.markdown index c8b36f76dff..c94f87da8cc 100644 --- a/source/_integrations/text.mqtt.markdown +++ b/source/_integrations/text.mqtt.markdown @@ -95,6 +95,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown index 1bcda711422..6aadec01444 100644 --- a/source/_integrations/todoist.markdown +++ b/source/_integrations/todoist.markdown @@ -190,6 +190,8 @@ Here are two example JSON payloads resulting in the same task: - **project** (*Optional*): The project to put the task in. +- **section** (*Optional*): The section within the project to add the task to. + - **labels** (*Optional*): Any labels you want to add to the task, separated by commas. - **assignee** (*Optional*): A member's username of a shared project to assign this task to. You find the username formatted as bold text in the collaborator menu of a shared project. diff --git a/source/_integrations/touchline_sl.markdown b/source/_integrations/touchline_sl.markdown new file mode 100644 index 00000000000..58b611cb627 --- /dev/null +++ b/source/_integrations/touchline_sl.markdown @@ -0,0 +1,29 @@ +--- +title: Roth Touchline SL +description: Instructions on how to integrate Roth Touchline SL within Home Assistant. +ha_category: + - Climate +ha_release: 2024.9 +ha_iot_class: Cloud Polling +ha_domain: touchline_sl +ha_platforms: + - climate +ha_integration_type: integration +--- + +The **Roth Touchline SL** climate integration enables you to control [Roth Touchline SL](https://www.roth-uk.com/products/control-systems/roth-touchliner-sl-wireless-system) underfloor heating systems. + +## Prerequisites + +You must have an account registered with the [Roth Touchline SL dashboard](https://roth-touchlinesl.com/login). + +{% include integrations/config_flow.md %} + +## Entities + +The integration will present each Roth Touchline SL zone as a climate entity, which can: + +- Display the current temperature +- Display the current humidity +- Set a target temperature +- Assign to a configured "Global Schedule" using Home Assistant climate entity presets. diff --git a/source/_integrations/update.mqtt.markdown b/source/_integrations/update.mqtt.markdown index 63167874b2a..522f5c9ed7b 100644 --- a/source/_integrations/update.mqtt.markdown +++ b/source/_integrations/update.mqtt.markdown @@ -92,6 +92,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/vacuum.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown index 6bf2044f6bf..8351b02b4f4 100644 --- a/source/_integrations/vacuum.mqtt.markdown +++ b/source/_integrations/vacuum.mqtt.markdown @@ -84,6 +84,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/valve.mqtt.markdown b/source/_integrations/valve.mqtt.markdown index 379c0d3e88e..909f7ff7b5b 100644 --- a/source/_integrations/valve.mqtt.markdown +++ b/source/_integrations/valve.mqtt.markdown @@ -130,6 +130,10 @@ device: description: The model of the device. required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: The name of the device. required: false diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown index 2b9649b6501..dda689e0de3 100644 --- a/source/_integrations/vesync.markdown +++ b/source/_integrations/vesync.markdown @@ -62,6 +62,7 @@ This {% term integration %} supports devices controllable by the VeSync App. Th - Core 300S: Smart True HEPA Air Purifier - Core 400S: Smart True HEPA Air Purifier - Core 600S: Smart True HEPA Air Purifier +- EverestAir: Smart Air Purifier - Vital 100S Smart True HEPA Air Purifier (LAP-V102S-WUS) - Vital 200S Smart True HEPA Air Purifier (LAP-V201S-WUS) - LEVOIT Smart Wifi Air Purifier (LV-PUR131S) @@ -97,11 +98,11 @@ itself. Note that prior versions of the {% term integration %} exposed these as ## Fan & air quality sensors All VeSync air purifiers expose the remaining filter lifetime, and some also expose air quality measurements. -| Sensor | Description | Example | -| --------------------------------------- | ------------------------------------------------------------------ | ------- | -| `filter_life` | Remaining percentage of the filter. (LV-PUR131S, Core200S/300s/400s/600s) | 142 | +| Sensor | Description | Example | +| ----------------------- | -------------------------------------------------------------------------------------- | --------- | +| `filter_life` | Remaining percentage of the filter. (LV-PUR131S, Core200S/300s/400s/600s/EverestAir) | 142 | | `air_quality` | The current air quality reading. (LV-PUR131S, Core300s/400s/600s) | excellent | -| `pm2_5` | The current air quality reading. (Core300s/400s/600s) | 8 | +| `pm2_5` | The current air quality reading. (Core300s/400s/600s/EverestAir) | 8 | ## Fan exposed attributes diff --git a/source/_integrations/water_heater.mqtt.markdown b/source/_integrations/water_heater.mqtt.markdown index 2ca78692316..c0d7ef41646 100644 --- a/source/_integrations/water_heater.mqtt.markdown +++ b/source/_integrations/water_heater.mqtt.markdown @@ -96,6 +96,10 @@ device: description: 'The model of the device.' required: false type: string + model_id: + description: The model identifier of the device. + required: false + type: string name: description: 'The name of the device.' required: false diff --git a/source/_integrations/yale.markdown b/source/_integrations/yale.markdown new file mode 100644 index 00000000000..61a946f7ef4 --- /dev/null +++ b/source/_integrations/yale.markdown @@ -0,0 +1,156 @@ +--- +title: Yale +description: Instructions on how to integrate your Yale devices into Home Assistant. +ha_category: + - Binary sensor + - Button + - Camera + - Doorbell + - Event + - Lock + - Sensor +ha_release: 2024.9 +ha_iot_class: Cloud Push +ha_config_flow: true +ha_codeowners: + - '@bdraco' +ha_domain: yale +ha_dhcp: true +ha_platforms: + - binary_sensor + - button + - camera + - diagnostics + - event + - lock + - sensor +ha_integration_type: integration +--- + +The **Yale** integration allows you to integrate your [Yale](https://www.assaabloy.com/vn/en/solutions/products/yale) devices in Home Assistant. + +The login credentials used to authenticate the integration are the same as the ones used in the Yale Home app. + +{% include integrations/config_flow.md %} + +## Known working devices + +| Device | Requires [Connect Bridge](https://www.yalehome.com/vn/en/products/yale-smart-door-lock/smart-accessories/yale-connect-wi-fi-bridge) or Doorbell | +| --------------------------------- | ------------------------------------| +| Yale Assure Lock | yes | +| Yale Conexis L1 | yes | +| Yale Conexis L2 | yes | +| Yale Doorman L3 | yes | +| Yale Linus | yes | +| Yale Smart Safe | yes | + +Other devices not listed above have not been tested and may not function as expected. + +There is currently support for the following device types within Home Assistant: + +- Doorbell +- Binary sensor +- Button +- Sensor +- Camera +- Lock + +{% note %} +Most devices will need either a Yale Connect Bridge or a Doorbell to connect to Home Assistant. +{% endnote %} + +## Push updates not available for some entities + +While most entities can be updated via the push API, Yale/Yale does not offer a push API for some data, which means these entities will update slower: + +- Doorbell ding sensor (Doorman models only) +- Lock Battery sensor +- Lock Operation sensor + +## Binary sensor + +If you have a Yale Doorbell, once you have enabled the Yale integration, you should see the following sensors: + +- Doorbell ding sensor +- Doorbell motion sensor +- Doorbell online sensor + +If you have a Yale Smart Lock with DoorSense, once you have enabled the Yale integration, you should see the following sensors: + +- Door sensor + +## Button + +Buttons are created to wake locks from a deep sleep. If your lock is not reporting a status, it may be in a deep sleep, and the button can be used to wake it. Locks are not automatically woken from deep sleep to preserve battery life. + +## Event + +If you have a Yale doorbell or lock that has a built-in doorbell, once you have enabled the Yale integration, you should see the following event entities: + +- Doorbell +- Motion + +Not all models include motion sensors and support for locks with built-in doorbells is limited to Yale Doorman models type 7 and 10. + +## Camera + +The `yale` camera platform allows you to view the latest camera image (triggered by motion) by your [Yale](https://yale.com/) device in Home Assistant. + +## Sensor + +If you have a Yale Doorbell with a battery, once you have enabled the Yale integration, you should see the following sensors: + +- Doorbell Battery + +If you have a Yale Smart Lock, once you have enabled the Yale integration, you should see the following sensors: + +- Lock Battery +- Lock Operation + +If you have a Yale Keypad, once you have enabled the Yale integration, you should see the following sensors: + +- Keypad Battery + +## Integration with Yale Access Bluetooth + +Following Assa Abloy, Yale's parent company, purchasing Yale in 2017, most newer devices use the Yale Home branding. + +The [Yale Access Bluetooth](/integrations/yalexs_ble) integration provides local control over Bluetooth of many Yale Home locks that use the same system. + +For locks that support the Yale Access system, the Yale integration can keep your offline access keys up to date to ensure you can operate your lock over Bluetooth. The following requirements must be met for the offline key updates to work: + +- The Yale integration must support the lock. +- The [Yale Access Bluetooth integration](/integrations/yalexs_ble) must support the lock. +- The Bluetooth integration must be active and functional. +- The lock must be discoverable by the [Yale Access Bluetooth integration](/integrations/yalexs_ble). +- The account logged in with the Yale integration must have the offline keys. + +### Troubleshooting offline key updates + +- If you do not know which account has the offline keys, configure Yale integration with each different Owner account until you find the one that holds the keys. You may need to make a new owner account and grant the account access to your lock to force the keys to synchronize with the cloud service. +- Ensure the lock is in range and discoverable by the [Yale Access Bluetooth integration](/integrations/yalexs_ble). + +## Presence detection with lock operation + +Using the lock operation sensors, you can detect when a user operates a lock and is physically present (not remote). The below automation example (added to `automations.yaml`) will trigger when the user named “John Doe” in Yale locks or unlocks the door either from the keypad (if present), via Bluetooth from their phone, or by auto-unlock. The state of the sensor will be the name of the party operating the lock as returned by Yale. + +{% raw %} + +```yaml +- id: "1583706446906" + alias: "joe_doe_front_door_operate" + description: John Doe locks or unlocks the Front Door + trigger: + - entity_id: sensor.front_door_operator + platform: state + to: John Doe + condition: + - condition: template + value_template: "{{ not state_attr('sensor.front_door_operator', 'remote') }}" + action: + - data: {} + entity_id: camera.inside + service: camera.turn_off +``` + +{% endraw %} diff --git a/source/_integrations/yale_home.markdown b/source/_integrations/yale_home.markdown index 9981d222a44..b874c85a401 100644 --- a/source/_integrations/yale_home.markdown +++ b/source/_integrations/yale_home.markdown @@ -1,6 +1,6 @@ --- title: Yale Home -description: Connect and control your Yale Home devices using the August integration +description: Connect and control your Yale Home devices using the Yale integration ha_category: - Binary sensor - Button @@ -12,8 +12,8 @@ ha_category: ha_release: 0.64 ha_domain: yale_home ha_integration_type: virtual -ha_supporting_domain: august -ha_supporting_integration: August +ha_supporting_domain: yale +ha_supporting_integration: Yale ha_codeowners: - '@bdraco' ha_config_flow: true diff --git a/source/_posts/2024-09-04-release-20249.markdown b/source/_posts/2024-09-04-release-20249.markdown new file mode 100644 index 00000000000..bb0d2a86cc0 --- /dev/null +++ b/source/_posts/2024-09-04-release-20249.markdown @@ -0,0 +1,531 @@ +--- +layout: post +title: "2024.9: Sections go BIG" +description: "Bigger wider sections for big cards, smarter energy monitoring, a new LLM option, Works with Home Assistant Matter devices, and more open source." +date: 2024-09-04 00:00:00 +date_formatted: "September 4, 2024" +author: Gordon Cameron +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2024-09/social.jpg +--- + + + +Home Assistant 2024.9! 🎉 + +Many community members based in the northern hemisphere have taken advantage of the nicer weather to take a little time off. Home Assistant releases have continued to grow for some time, and this one might not be as gargantuan in size as previous releases, but it still packs some really cool features and announcements. + +This release includes bigger sections, smarter energy monitoring, and a new LLM option. We've added [five](#new-integrations) new integrations, along with [one](#now-available-to-set-up-from-the-ui) existing integration being added to the UI. On top of all that, we've announced a new Works with Home Assistant partner, and the culmination of a project to ensure our project is truly open source. + +We hope you've been able to enjoy some time in, and away, from your smart home this month as well. + +Enjoy the release! + +{% tip %} + +Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=dSbCzRhbOVA) +4 September 2024, at 20:00 GMT / 12:00 PST / 21:00 CEST! + +{% endtip %} + + +- [Sections go BIG](#sections-go-big) + - [Wider sections](#wider-sections) + - [Full span cards](#full-span-cards) + - [Badges](#badges) +- [Tracking your untracked energy](#tracking-your-untracked-energy) +- [LLM agent options grow](#llm-agent-options-grow) +- [Aqara joins Works with Home Assistant](#aqara-joins-works-with-home-assistant) +- [Open source compliance](#open-source-compliance) +- [Integrations](#integrations) + - [New integrations](#new-integrations) + - [Noteworthy improvements to existing integrations](#noteworthy-improvements-to-existing-integrations) + - [Now available to set up from the UI](#now-available-to-set-up-from-the-ui) + - [Farewell to the following](#farewell-to-the-following) +- [Other noteworthy changes](#other-noteworthy-changes) +- [Need help? Join the community!](#need-help-join-the-community) +- [Backward-incompatible changes](#backward-incompatible-changes) +- [All changes](#all-changes) + +## Sections go BIG + +In the drive to give our users more customization and organization options for their dashboards, we've added some new options to our Sections view that really lets us take big advantage of [resizable cards](/blog/2024/07/03/release-20247/#resize-the-cards-on-your-dashboard). These powerful customization features can affect the [predictability of where cards or sections will go](/blog/2024/03/04/dashboard-chapter-1/#drag-and-drop-rearrangement-of-cards-and-sections), especially when switching between desktop and mobile views, and we have found it works best with large cards. As always, the choice of how to use it is up to you. + +
+ Screenshot showing sections that are all 1 section wide, on the right showing a section that is 2 sections wide. + Screenshots showing a section that is 2 sections wide. +
+ +### Wider sections + +Sections can be expanded to span multiple sections. Now you can, for example, have your security camera feed span two sections or have a massive three-section wide map. + +Cards and sections will continue to follow the [Z-Grid rules](/blog/2024/03/04/dashboard-chapter-1/#drag-and-drop-rearrangement-of-cards-and-sections), which can lead to blank spaces if the new wider sections don't fit on a specific part of the screen. If you don't like those blank spaces between sections, you can choose a _dense_ layout. A dense section layout option will attempt to follow the Z-Grid rules, but will fill blank spaces whenever possible. This can affect the order and predictability of your sections, but will maximize screen real estate. + +When switching to smaller screens, these larger sections will revert to one section wide (if this causes issues for certain big cards, we would recommend using our device [visibility settings](/blog/2024/06/05/release-20246/#control-visibility-of-cards)). + +Screenshot of the section settings + +### Full span cards + +Larger sections mean larger cards. Instead of just stretching out the layout of a card, there is also a new option on cards to have them always use the full width of the section. + +### Badges + +Talking about dashboards, the newly styled badges we [introduced](/blog/2024/08/07/release-20248/#new-badges-for-your-dashboard) in last release, are now more configurable. + +Instead of using display mode, you can decide for yourself what element you want to show. This allows you, for example, to hide the icon of an badge and only show the state of the device you want to show in your badge. + +## Tracking your untracked energy + +In April, we introduced a [new energy graph for individual devices](/blog/2024/03/06/release-20243/#new-energy-graph-for-individual-devices) in our energy dashboard. This allows you to aggregate all your energy monitoring into one graph, giving you a quick way to see your house's biggest energy-using devices. Big thanks to [@karwosts](https://github.com/karwosts), the original creator of this graph, who has now updated it. + +Screenshot of the individual device energy graph + +We can't all have energy tracking for every device, and if you have whole-home energy tracking (like a smart meter or [something more DIY](/home-energy-management)) the updated graph will calculate the difference and show your home's untracked usage. So hop onto your [energy dashboard](https://my.home-assistant.io/redirect/energy/) and start to tackle your phantom energy load. + +## LLM agent options grow + +When we added the ability to use [Large Language Models (LLMs)](/blog/2024/06/05/release-20246/#dipping-our-toes-in-the-world-of-ai-using-llms) in our Voice Assistant, it began with a limited number of conversation agents. These included the cloud-based [OpenAI](/components/openai_conversation/) and [Google AI](/components/google_generative_ai_conversation/) integrations, along with the locally-run [Ollama](/integrations/ollama/) integration. All three can now control the devices in your home. + +[@Shulyaka](https://github.com/Shulyaka) has now added another cloud option with [Anthropic](/integrations/anthropic) - thanks again for giving us another option for experimenting with AI in Home Assistant. Setting it up can be a little different than other conversation agents, so take a look at the [documentation](/integrations/anthropic). + +We have updated our [LLM leaderboard](https://github.com/allenporter/home-assistant-datasets/tree/main/reports) to include Anthropic. Both Claude 3 Haiku and Claude 3 Sonnet score very high on our benchmarks and now rank among the top. Based on the results of the benchmark, we have set the cheaper Claude 3 Haiku as the default model for the Anthropic integration. + +[@allenporter] added the ability to configure the context window size of the [Ollama](/integrations/ollama) integration. The default size was increased, making it perform 20% better! + +## Aqara joins Works with Home Assistant + +Aqara join Works via Matter with Home Assistant + +We [recently announced](/blog/2024/09/03/aqara-joins-works-with-home-assistant/) that four Aqara devices are joining our [Works with Home Assistant](https://partner.home-assistant.io/) program. What's really exciting is that these are all Matter devices, and Aqara will be the first partner to use our "Works via Matter with Home Assistant" badge, giving some great options to use with Home Assistant's amazing Matter integration. + +What's more, this will be the first partner to join since [our recent update to the program](/blog/2024/08/08/works-with-home-assistant-becomes-part-ohf/), meaning device-by-device certification that we tested ourselves. This makes it really easy to see what will give you the best experience in Home Assistant. + +## Open source compliance + +We have put a lot of work into making sure that Home Assistant is truly open source, from top to bottom. This means ensuring that every library our integrations rely on uses the compliant license. We're now at more than 2,800 integrations, so as you can imagine, this was not a small task. Working with code owners and library developers, we have painstakingly checked that every library is now using an [OSI-approved license](https://opensource.org/license). + +This might seem like a small procedural thing, but it is critical to keep integrations and Home Assistant functional far into the future. If you're not aware, libraries are what many device and service integrations rely on to function, by calling in additional protocol specific code that [purposely](https://developers.home-assistant.io/docs/api_lib_index/) sits outside of the Home Assistant project. If an individual or corporation can no longer maintain libraries, a proper open source license allows it to be picked up and continued by others. + +## 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: + +- **[Anthropic Conversation]**, added by [@Shulyaka]
+ Use AI by [Anthropic], like the [Claude 3.5 Sonnet] as a conversation agent in Home Assistant. +- **[Nice G.O.]**, added by [@IceBotYT]
+ Integrate with compatible garage door and gate openers from the Nice. +- **[Fujitsu FGLair]**, added by [@crevetor]
+ Fujitsu HVAC devices that use the Ayla IoT platform (controlled with the FGLair app). +- **[SMLIGHT]**, added by [@tl-sl]
+ Manage SMLIGHT SLZB-06 adaptors from Home Assistant. +- **[Roth Touchline SL]**, added by [@jnsgruk]
+ A new integration for the Roth Touchline SL underfloor heating system. +- **[Yale]**, added by [@bdraco]
+ The Yale Home brand now has its own integration and will no longer be using the [August] integration. If you use a Yale Home device with the August integration, you should migrate to the new Yale integration. + +[Anthropic Conversation]: /integrations/anthropic +[Anthropic]: https://anthropic.com/ +[Claude 3.5 Sonnet]: https://www.anthropic.com/claude + +[Nice G.O.]: /integrations/nice_go +[Fujitsu FGLair]: /integrations/fujitsu_fglair +[SMLIGHT]: /integrations/smlight +[Roth Touchline SL]: /integrations/touchline_sl +[Yale]: /integrations/yale +[August]: /integrations/august + +[@Shulyaka]: https://github.com/Shulyaka +[@IceBotYT]: https://github.com/IceBotYT +[@crevetor]: https://github.com/crevetor +[@tl-sl]: https://github.com/tl-sl +[@jnsgruk]: https://github.com/jnsgruk +[@bdraco]: https://github.com/bdraco + +This release also has a new virtual integration. Virtual integrations +are stubs that are handled by other (existing) integrations to help with +discoverability. These ones are new: + +- **[ArtSound]**, provided by [LinkPlay], added by [@dukeofphilberg] + +[@dukeofphilberg]: https://github.com/dukeofphilberg +[ArtSound]: /integrations/artsound +[LinkPlay]: /integrations/linkplay + +### Noteworthy improvements to existing integrations + +It is not just new {% term integrations %} that have been added; existing +integrations are also being constantly improved. Here are some of the noteworthy +changes to existing integrations: + +- The Mosquitto MQTT broker add-on can now be installed and started automatically when you setup [MQTT](/integrations/mqtt). Great work [@jbouwh]! +- In the [UI for KNX that was introduced last release](/blog/2024/08/07/release-20248/#knx-can-now-be-managed-via-the-ui), you can now also add switch and light entities! Thanks [@farmio]! +- [@allenporter] added event entities to the [Nest](integrations/nest) integration. +- [@bdraco] made it easier to add battery operated [Shelly](/integrations/shelly) devices, you no longer have to manually set an outbound WebSocket configuration. +- [MotionBlinds](/integrations/motion_blinds) now has a button for your favorite position. Thanks [@starkillerOG]. +- [@joostlek] added the abilitiy to update your [AirGradient](/integrations/airgradient) devices from Home Assistant. +- [@CM000n] added diagnostic binary sensors to the [APsystems](/integrations/apsystems) integration. +- The [Mastodon](/integrations/mastodon) integration now shows information about your account, like how many followers you have. Thanks [@andrew-codechimp]! + + +[@CM000n]: https://github.com/CM000n +[@andrew-codechimp]: https://github.com/andrew-codechimp +[@joostlek]: https://github.com/joostlek +[@starkillerOG]: https://github.com/starkillerOG +[@cnico]: https://github.com/cnico +[@allenporter]: https://github.com/allenporter +[@jeeftor]: https://github.com/jeeftor + +[#123045]: https://github.com/home-assistant/core/pull/123045 +[#123434]: https://github.com/home-assistant/core/pull/123434 +[#123534]: https://github.com/home-assistant/core/pull/123534 +[#123489]: https://github.com/home-assistant/core/pull/123489 +[#122514]: https://github.com/home-assistant/core/pull/122514 +[#123042]: https://github.com/home-assistant/core/pull/123042 +[#122554]: https://github.com/home-assistant/core/pull/122554 + +[apsystems docs]: /integrations/apsystems/ +[mastodon docs]: /integrations/mastodon/ +[airgradient docs]: /integrations/airgradient/ +[motion_blinds docs]: /integrations/motion_blinds/ +[chacon_dio docs]: /integrations/chacon_dio/ +[nest docs]: /integrations/nest/ +[simplefin docs]: /integrations/simplefin/ + +### Now available to set up from the UI + +While most {% term integrations %} can be set up directly from the Home Assistant +user interface, some were only available using YAML configuration. We keep moving +more integrations to the UI, making them more accessible for everyone +to set up and use. + +You can now add a number [template helper] from the UI Thanks [@dougiteixeira]! + +[@dougiteixeira]: https://github.com/dougiteixeira +[template helper]: /integrations/template + +### Farewell to the following + +The following {% term integrations %} are also no longer available as +of this release: + +- **Asterisk Call Detail Records** and **Asterisk Voicemail**. Previously + deprecated and now removed. They have been using a deprecated mailbox feature + that is no longer available. + + +## 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 "Recorder database upgrade notice" %} + +This notice applies only if you use the recorder integration with a MySQL or +PostgreSQL database. If you are using the default SQLite database, +you can ignore it. + +Last release included a database upgrade/migration that increases the size of +the number we can store for the identifier fields. + +Not all migrations were successful despite being marked as successful. This +release will do the migration again, but will catch unsuccessful migrations. + +This can cause the database upgrade to take longer than usual, depending on +the size of your database. + +Please be patient and let the upgrade process finish. Do not interrupt the +upgrade process, as this can lead to a corrupted database. + +([@emontnemery] - [#123973]) ([documentation](/integrations/recorder)) + +[@emontnemery]: https://github.com/emontnemery +[#123973]: https://github.com/home-assistant/core/pull/123973 + +{% enddetails %} + +{% details "Asterisk Call Detail Records" %} + +Asterisk Call Detail Records has been deprecated in 2024.3.0 and has now been removed. + +It was using a deprecated mailbox feature that is no longer available. + +([@joostlek] - [#123180]) + +[#123180]: https://github.com/home-assistant/core/pull/123180 + +{% enddetails %} + +{% details "Asterisk Voicemail" %} + +Asterisk Voicemail has been deprecated in 2024.3.0 and has now been removed. + +It was using a deprecated mailbox feature that is no longer available. + +([@joostlek] - [#123180]) + +[#123180]: https://github.com/home-assistant/core/pull/123180 + +{% enddetails %} + +{% details "August" %} + +If you are using a Yale Home device with the [August] integration, you should migrate to the new [Yale] integration. + +Yale Home devices will soon stop working with the August integration. + +([@bdraco] - [#124895]) ([august documentation](/integrations/august) - [yale documentation](/integrations/yale)) + +[#124895]: https://github.com/home-assistant/core/pull/124895 + +{% enddetails %} + +{% details "Ecovacs" %} + +The YAML configuration for the Ecovacs integration was removed. The configuration has been moved to the UI in Home Assistant 2024.2. + +The YAML configuration was automatically imported and should be removed from your YAML configuration. + +[@gjohansson-ST] - [#123605] ([documentation](/integrations/ecovacs)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#123605]: https://github.com/home-assistant/core/pull/123605 + +{% enddetails %} + +{% details "GPSD" %} + +The YAML configuration for the GPSD integration was removed. The configuration has been moved to the UI in Home Assistant 2024.2. + +The YAML configuration was automatically imported and should be removed from your YAML configuration. + +([@gjohansson-ST] - [#123725]) ([documentation](/integrations/gpsd)) + +[#123725]: https://github.com/home-assistant/core/pull/123725 + +{% enddetails %} + +{% details "KNX" %} + +The KNX Climate preset modes are renamed to match the KNX specifications. + +| KNX specifications | Previous | Now | +|---------------------|----------|----------------| +| Auto | none | auto | +| Comfort | comfort | comfort | +| Standby | away | standby | +| Economy | sleep | economy | +| Building protection | eco | building_protection | + +[@farmio] - [#123964] ([documentation](/integrations/knx)) + +[@farmio]: http://gtihub.com/farmio +[#123964]: https://github.com/home-assistant/core/pull/123964 + +{% enddetails %} + +{% details "Logi circle" %} + +Logitech stopped accepting applications for access to the Logi Circle API in May 2022, and the Logi Circle integration has now been removed. + +[@gjohansson-ST] - [#123727] + +[#123727]: https://github.com/home-assistant/core/pull/123727 + +{% enddetails %} + +{% details "Lupusec" %} + +The YAML configuration for the Lupusec integration was removed. The configuration has been moved to the UI in Home Assistant 2024.2. + +The YAML configuration was automatically imported and should be removed from your YAML configuration. + +[@gjohansson-ST] - [#123606] ([documentation](/integrations/lupusec)) + +[#123606]: https://github.com/home-assistant/core/pull/123606 + +{% enddetails %} + +{% details "Lutron" %} + +In Home Assistant 2024.2, fans where converted from a light entity to a fan entity. +The old light entities will no longer work in this release and can be removed. + +[@gjohansson-ST] - [#123607] ([documentation](/integrations/lutron)) + +[#123607]: https://github.com/home-assistant/core/pull/123607 + +{% enddetails %} + +{% details "Mailbox" %} + +The Mailbox platform that was previously deprecated has been removed. + + [@gjohansson-ST] - [#123741] + +[#123741]: https://github.com/home-assistant/core/pull/123741 + +{% enddetails %} + +{% details "MQTT" %} + +The schema option was removed from the MQTT vacuum schema in Home Assistant 2024.2. You should remove this from your YAML configuration if set. + +Manual configured MQTT vacuum entities will break if the schema option is still configured. +When using MQTT discovery the option will be silently ignored. + +[@jbouwh] - [#124722] ([documentation](/integrations/mqtt)) + +[@jbouwh]: https://github.com/jbouwh +[#124722]: https://github.com/home-assistant/core/pull/124722 + +{% enddetails %} + +{% details "Overkiz" %} + + Atlantic CozyTouch Water Heaters will now show the Manual operation mode as Electric. + + A binary sensor was added to indicate if the manual mode is activated. + + Users that have automations or scripts using these entities together with the Manual mode should update the automations or scripts accordingly. + +[@ALERTua] - [#124619] ([documentation](/integrations/overkiz)) + +[@ALERTua]: https://github.com/ALERTua +[#124619]: https://github.com/home-assistant/core/pull/124619 + +{% enddetails %} + +{% details "Proximity" %} + +In 2024.2, [we introduced new sensor entities](/blog/2024/02/07/release-20242/#revamped-proximity-integration) +to the [Proximity](/integrations/proximity) {% term integration %} and therefore deprecated the `proximity` entity. + +Now this deprecated `proximity` entity has been removed. + +([@mib1185] - [#123158]) ([documentation](/integrations/proximity)) + +[@mib1185]: https://github.com/mib1185 +[#123158]: https://github.com/home-assistant/core/pull/123158 + +{% enddetails %} + +{% details "Sensibo" %} + +The previous PM2.5 sensor for Pure devices was incorrectly reporting a PM2.5 value, but it's actually a number representing an AQI level. The sensor will now provide the new states of 'good', 'moderate', and 'bad'. + +[@gjohansson-ST] - [#124151] ([documentation](/integrations/sensibo)) + +[#124151]: https://github.com/home-assistant/core/pull/124151 + +{% enddetails %} + +{% details "Starline" %} + +The horn switch has been deprecated since 2024.1 and is now removed. + +Instead of a switch a horn button entity was added. Please update your automations accordingly. + +([@gjohansson-ST] - [#123608]) ([documentation](/integrations/starline)) + +[#123608]: https://github.com/home-assistant/core/pull/123608 + +{% enddetails %} + +{% details "System monitor" %} + +Removes the deprecated process sensor from the System Monitor integration. +This sensor has been provided as a binary sensor for 6 months, raising a repair issue. + +[@gjohansson-ST] - [#123616] ([documentation](/integrations/systemmonitor)) + +[#123616]: https://github.com/home-assistant/core/pull/123616 + +{% enddetails %} + +{% details "TP-Link Smart Home" %} + +The binary sensor for "Update available" will no longer be provided by the TP-Link Smart Home integration. + +It will be replaced in a subsequent release with the Update entity but is disabled for now due to stability issues when calling the TP-Link cloud API to check the latest firmware version. This may cause devices to go offline. They need to be power-cycled to function again. The sensor was also unreliable and may have returned incorrect data because of rate limiting from the TP-Link cloud. + +[@sdb9696] - [#124930] ([documentation](/integrations/tplink)) + +[@sdb9696]: https://github.com/sdb9696 +[#124930]: https://github.com/home-assistant/core/pull/124930 + +{% enddetails %} + +{% details "Velux" %} + +The YAML configuration for the Velux integration was removed. The configuration has been moved to the UI in Home Assistant 2024.2. + +The YAML configuration was automatically imported and should be removed from your YAML configuration. + +[@gjohansson-ST] - [#123724] ([documentation](/integrations/velux)) + +[#123724]: https://github.com/home-assistant/core/pull/123724 + +{% enddetails %} + +{% details "Zigbee Home Automation" %} + +- The IKEA Starkvind fan modes have been updated. Automations that used to set the fan to 10% speed to switch it to "auto mode", should now be updated to set the preset to "auto." +In auto mode, the actual fan speed is now properly displayed. + + For more information, see the [PR in the ZHA repo](https://github.com/zigpy/zha/pull/87). + +- The firmware update entity logic has changed. A device will only be considered "up-to-date" if there is a known firmware update for it and the current firmware version is greater than the firmware update version. If there is no known firmware update, the device firmware state will be considered "unknown", as we can't tell if it's up to date or not. +Previously, we showed "up-to-date" if there was no known firmware which misrepresented the state for many devices. + +[@puddly] - [#124804] ([documentation](/integrations/zha)) + +[@puddly]: https://github.com/puddly +[#124804]: https://github.com/home-assistant/core/pull/124804 + +{% enddetails %} + +If you are a custom integration developer and want to learn about changes and +new features available for your integration: Be sure to follow our +[developer blog][devblog]. The following are the most notable for this release: + +- [New returning type in LawnMowerActivity](https://developers.home-assistant.io/blog/2024/08/23/lawn-mower-activity-returning) +- [Validation of entity action schemas](https://developers.home-assistant.io/blog/2024/08/27/entity-service-schema-validation) +- [Changes to the icon translations schema](https://developers.home-assistant.io/blog/2024/08/27/changed-icon-translations-schema) +- [Template.hass is no longer automatically set when rendering templates](https://developers.home-assistant.io/blog/2024/09/02/template-hass-required) + +[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 2024.9](/changelogs/core-2024.9) diff --git a/source/_redirects b/source/_redirects index d0a994ebf33..698ca6579dc 100644 --- a/source/_redirects +++ b/source/_redirects @@ -499,6 +499,7 @@ layout: null /integrations/arduino /more-info/removed-integration 301 /integrations/asterisk_cdr /more-info/removed-integration 301 /integrations/asterisk_mbox /more-info/removed-integration 301 +/_docs/asterisk_mbox.markdown /more-info/removed-integration 301 /integrations/bbb_gpio /more-info/removed-integration 301 /integrations/bh1750 /more-info/removed-integration 301 /integrations/binary_sensor.mychevy /more-info/removed-integration 301 diff --git a/source/changelogs/core-2024.9.markdown b/source/changelogs/core-2024.9.markdown new file mode 100644 index 00000000000..770a5cbf6f2 --- /dev/null +++ b/source/changelogs/core-2024.9.markdown @@ -0,0 +1,1936 @@ +--- +title: Full changelog for Home Assistant Core 2024.9 +description: Detailed changelog for the Home Assistant Core 2024.9 release +replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$ +--- + +These are all the changes included in the Home Assistant Core 2024.9 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2024/09/04/release-20249/). + +- Bump version to 2024.9.0dev0 ([@frenck] - [#122975]) +- Skip binary wheels for pymicro-vad ([@frenck] - [#122982]) +- Fix implicit-return in squeezebox ([@epenet] - [#122928]) ([squeezebox docs]) +- Rename variable in async tests ([@epenet] - [#122996]) +- Update audit licenses run conditions [ci] ([@cdce8p] - [#123009]) +- Fix implicit-return in python_script ([@epenet] - [#123004]) ([python_script docs]) +- Rename variable in landisgyr_heat_meter tests ([@epenet] - [#122995]) ([landisgyr_heat_meter docs]) +- Rename variable in knx tests ([@epenet] - [#122994]) ([knx docs]) +- Enable pytest-fixture-param-without-value (PT019) rule in ruff ([@epenet] - [#122953]) +- Anthropic Claude conversation integration ([@Shulyaka] - [#122526]) ([anthropic docs]) (new-integration) +- Update generator typing ([@cdce8p] - [#123052]) +- Replace pylint broad-exception-raised rule with ruff ([@epenet] - [#123021]) +- Ensure claude supported feature reflect latest config entry options ([@balloob] - [#123050]) ([anthropic docs]) +- Enable collections-named-tuple (PYI024) rule in ruff ([@epenet] - [#123019]) +- Fix implicit-return in macos script ([@epenet] - [#122945]) +- Fix implicit-return in google_assistant ([@epenet] - [#123002]) ([google_assistant docs]) +- Improve Bang olufsen media_player dispatcher formatting ([@mj23000] - [#123065]) ([bang_olufsen docs]) +- Improve type hints in google_assistant ([@epenet] - [#122895]) ([google_assistant docs]) +- Bump ruff to 0.5.6 ([@epenet] - [#123073]) +- Add support for Todoist sections ([@cmbuckley] - [#115671]) ([todoist docs]) +- Test storage save and load for evohome ([@zxdavb] - [#122510]) ([evohome docs]) +- Remove unneeded cast in logbook rest api ([@bdraco] - [#123098]) ([logbook docs]) +- Remove unused variables in logbook LazyEventPartialState ([@bdraco] - [#123097]) ([logbook docs]) +- Remove unreachable suppress in logbook ([@bdraco] - [#123096]) ([logbook docs]) +- Unpack non-performant any expressions in config flow discovery path ([@bdraco] - [#123124]) +- Recorder system info: fix capitalization ([@c0ffeeca7] - [#123141]) ([recorder docs]) +- Handle command_line missing discovery_info ([@yarikoptic] - [#116873]) ([command_line docs]) +- Fix implicit-return in overkiz ([@epenet] - [#123000]) ([overkiz docs]) +- Support `DeviceInfo.model_id` in MQTT integration ([@bieniu] - [#123152]) ([mqtt docs]) +- Use coordinator setup method in filesize ([@gjohansson-ST] - [#123139]) ([filesize docs]) +- Remove unneeded formatter argument from logbook websocket_api ([@bdraco] - [#123095]) ([logbook docs]) +- Improve alignment of live logbook and historical logbook models ([@bdraco] - [#123070]) ([logbook docs]) +- Speed up logbook timestamp processing ([@bdraco] - [#123126]) ([logbook docs]) +- Optimize logbook row matching ([@bdraco] - [#123127]) ([logbook docs]) +- Bump actions/upload-artifact from 4.3.4 to 4.3.5 (@dependabot - [#123170]) +- Add apsystems diagnostic binary sensors ([@CM000n] - [#123045]) ([apsystems docs]) (new-platform) +- Add spaces for readability in licenses.py ([@barryvdh] - [#123173]) +- Clean up useless logging handler setting ([@arturpragacz] - [#120974]) +- Todoist service validation error consistency ([@cmbuckley] - [#123122]) ([todoist docs]) +- Improve performance of logbook processor humanify ([@bdraco] - [#123157]) ([logbook docs]) +- Bump uvcclient to 0.11.1 ([@joostlek] - [#123185]) ([uvc docs]) +- Remove deprecated asterisk_cdr integration ([@joostlek] - [#123180]) ([asterisk_cdr docs]) (breaking-change) +- Remove deprecated asterisk_mbox integration ([@joostlek] - [#123174]) ([asterisk_mbox docs]) (breaking-change) +- Remove deprecated proximity entity ([@mib1185] - [#123158]) ([proximity docs]) (breaking-change) +- Remove unnecessary config schema definitions ([@mib1185] - [#123197]) +- Change zha diagnostic to snapshot ([@elupus] - [#123198]) ([zha docs]) +- Bump PyJWT to 2.9.0 ([@bdraco] - [#123209]) +- Remove unused async_setup method in insteon ([@mib1185] - [#123201]) ([insteon docs]) +- Bump solarlog_cli to v0.1.6 ([@dontinelli] - [#123218]) ([solarlog docs]) +- Add unit tests for SNMP integer Switches ([@gunkaaa] - [#123094]) ([snmp docs]) +- Bump uvcclient to 0.12.1 ([@joostlek] - [#123237]) ([uvc docs]) +- Remove myself from DSMR codeowners ([@frenck] - [#123243]) ([dsmr docs]) +- Detect blocking ssl context creation in the event loop ([@bdraco] - [#123240]) +- Bump github/codeql-action from 3.25.15 to 3.26.0 (@dependabot - [#123273]) +- Bump actions/upload-artifact from 4.3.5 to 4.3.6 (@dependabot - [#123272]) +- remove unneeded type attributes on WebsocketNotification ([@terencehonles] - [#123238]) ([bang_olufsen docs]) +- Reload config entry for anthropic on update ([@balloob] - [#123280]) ([anthropic docs]) +- Refactor spc tests ([@joostlek] - [#123287]) ([spc docs]) +- Fix implicit-return in konnected ([@epenet] - [#122915]) ([konnected docs]) +- Bump sigstore/cosign-installer from 3.5.0 to 3.6.0 (@dependabot - [#123335]) +- Remove unneeded logs from Yamaha ([@frenck] - [#123349]) +- Fix implicit-return in yeelight ([@epenet] - [#122943]) ([yeelight docs]) +- Enable Ruff RET501 ([@autinerd] - [#115031]) +- Fix implicit-return in homematic ([@epenet] - [#122922]) ([homematic docs]) +- Fix raise-within-try in config validation helper ([@epenet] - [#123353]) +- Fix raise-within-try in language util ([@epenet] - [#123354]) +- Improve Airzone Cloud sensors availability ([@Noltari] - [#123383]) ([airzone_cloud docs]) +- Reolink Chime online status and ability to remove ([@starkillerOG] - [#123301]) ([reolink docs]) +- Reduce number of aiohttp.TCPConnector cleanup_closed checks to one per minute ([@bdraco] - [#123268]) +- Rework OAuth in Tesla Fleet ([@Bre77] - [#123324]) ([tesla_fleet docs]) +- Remove ESPHome legacy entity naming ([@jesserockz] - [#123436]) ([esphome docs]) +- Add sensor platform for Mastodon ([@andrew-codechimp] - [#123434]) ([mastodon docs]) (new-platform) +- Remove type checking of config entry in Mastodon ([@andrew-codechimp] - [#123467]) ([mastodon docs]) +- Bump pydrawise to 2024.8.0 ([@dknowles2] - [#123461]) ([hydrawise docs]) +- Bump uiprotect to 6.0.0 ([@bdraco] - [#123402]) ([unifiprotect docs]) +- Bump PyYAML to 6.0.2 ([@bdraco] - [#123466]) +- Bump orjson to 3.10.7 ([@bdraco] - [#123465]) +- Bump chacha20poly1305-reuseable to 0.13.2 ([@yangqian] - [#123471]) ([homekit docs]) +- Bump uiprotect to 6.0.1 ([@bdraco] - [#123481]) ([unifiprotect docs]) +- Bump aioswitcher to 4.0.0 ([@YogevBokobza] - [#123260]) ([switcher_kis docs]) +- Bump motionblinds to 0.6.24 ([@starkillerOG] - [#123395]) ([motion_blinds docs]) +- Improve test coverage for AVM Fritz!Smarthome ([@mib1185] - [#122974]) ([fritzbox docs]) +- Remove august IPv6 workaround ([@bdraco] - [#123408]) ([august docs]) +- Post merge review for Proximity ([@mib1185] - [#123500]) ([proximity docs]) +- Bump bsblan to 0.5.19 ([@liudger] - [#123515]) ([bsblan docs]) +- Improve test coverage for Proximity ([@mib1185] - [#123523]) ([proximity docs]) +- Bump ruff to 0.5.7 ([@autinerd] - [#123531]) +- Clean up codespell words ([@joostlek] - [#123541]) ([mysensors docs]) ([acer_projector docs]) ([keba docs]) +- Revert "Bump chacha20poly1305-reuseable to 0.13.2" ([@bdraco] - [#123505]) ([homekit docs]) +- Revert "Remove ESPHome legacy entity naming" ([@frenck] - [#123453]) ([esphome docs]) +- Extend ZHA attribute diagnostic information ([@elupus] - [#123199]) ([zha docs]) +- 2024.8.1 ([@frenck] - [#123544]) +- Make sure diagnostic data is output in deterministic order ZHA ([@elupus] - [#123551]) ([zha docs]) +- Add state_class to starline sensors to generate long-term statistics ([@Chupaka] - [#123540]) ([starline docs]) +- Use setup method in coordinator for Trafikverket Train ([@gjohansson-ST] - [#123138]) ([trafikverket_train docs]) +- Add diagnostics platform to Mastodon ([@andrew-codechimp] - [#123592]) ([mastodon docs]) +- Update MPD Player to use HOST and PORT to detect duplicate configs ([@carlos-sarmiento] - [#123410]) ([mpd docs]) +- Remove deprecated fan as light in lutron ([@gjohansson-ST] - [#123607]) ([lutron docs]) (breaking-change) +- Remove deprecated yaml import from lupusec ([@gjohansson-ST] - [#123606]) ([lupusec docs]) (breaking-change) +- Remove deprecated horn switch in starline ([@gjohansson-ST] - [#123608]) ([starline docs]) (breaking-change) +- Remove Spotify scope check ([@joostlek] - [#123545]) ([spotify docs]) +- Remove deprecated process sensor from System monitor ([@gjohansson-ST] - [#123616]) ([systemmonitor docs]) (breaking-change) +- Remove deprecated yaml import from Ecovacs ([@gjohansson-ST] - [#123605]) ([ecovacs docs]) (breaking-change) +- Add unique id to Manual alarm ([@gjohansson-ST] - [#123588]) ([manual docs]) +- Bump pycoolmasternet-async to 0.2.2 ([@amitfin] - [#123634]) ([coolmaster docs]) +- Define Manual alarm as a helper ([@gjohansson-ST] - [#123587]) ([manual docs]) +- Relocate code to get scheduled TimerHandles ([@bdraco] - [#123546]) +- Enable raise-within-try (TRY301) rule in ruff ([@epenet] - [#123351]) +- Enable implicit-return (RET503) rule in ruff ([@epenet] - [#122771]) +- Bump BSBLan to 0.6.2 ([@liudger] - [#123594]) ([bsblan docs]) +- Add Swiss public transport fetch connections service ([@miaucl] - [#114671]) ([swiss_public_transport docs]) +- Remove regex constraint ([@edenhaus] - [#123650]) +- Delete unused snapshots ([@joostlek] - [#123656]) +- Improve type hints in logbook tests ([@epenet] - [#123652]) ([logbook docs]) +- Add homematicip_cloud service set cooling home ([@barryvdh] - [#121943]) ([homematicip_cloud docs]) +- Remove unnecessary assignment of Template.hass from arest ([@emontnemery] - [#123662]) ([arest docs]) +- Remove unnecessary assignment of Template.hass from command_line ([@emontnemery] - [#123664]) ([command_line docs]) +- Remove unnecessary assignment of Template.hass from doods ([@emontnemery] - [#123666]) ([doods docs]) +- Remove libcst constraint ([@edenhaus] - [#123661]) +- Remove unnecessary assignment of Template.hass from history_stats ([@emontnemery] - [#123671]) ([history_stats docs]) +- Remove unnecessary assignment of Template.hass from emoncms ([@emontnemery] - [#123668]) ([emoncms docs]) +- Remove unnecessary assignment of Template.hass from emulated_kasa ([@emontnemery] - [#123670]) ([emulated_kasa docs]) +- Remove unnecessary assignment of Template.hass from triggers ([@emontnemery] - [#123672]) ([hp_ilo docs]) ([homeassistant docs]) +- Remove unnecessary assignment of Template.hass from dweet ([@emontnemery] - [#123667]) ([dweet docs]) +- Remove unnecessary assignment of Template.hass from camera ([@emontnemery] - [#123663]) ([camera docs]) +- Remove unnecessary assignment of Template.hass from influxdb ([@emontnemery] - [#123673]) ([influxdb docs]) +- Remove unnecessary assignment of Template.hass from logbook ([@emontnemery] - [#123677]) ([logbook docs]) +- Remove unnecessary assignment of Template.hass from logi_circle ([@emontnemery] - [#123678]) ([logi_circle docs]) +- Remove unnecessary assignment of Template.hass from tcp ([@emontnemery] - [#123691]) ([tcp docs]) +- Remove unnecessary assignment of Template.hass from sql ([@emontnemery] - [#123690]) ([sql docs]) +- Remove unnecessary assignment of Template.hass from slack ([@emontnemery] - [#123688]) ([slack docs]) +- Remove unnecessary assignment of Template.hass from scrape ([@emontnemery] - [#123685]) ([scrape docs]) +- Remove unnecessary assignment of Template.hass from rest ([@emontnemery] - [#123682]) ([rest_command docs]) ([rest docs]) +- Remove unnecessary assignment of Template.hass from serial ([@emontnemery] - [#123686]) ([serial docs]) +- Remove unnecessary assignment of Template.hass from notify ([@emontnemery] - [#123680]) ([notify docs]) +- Remove unnecessary assignment of Template.hass from rss_feed_template ([@emontnemery] - [#123683]) ([rss_feed_template docs]) +- Remove unnecessary assignment of Template.hass from snmp ([@emontnemery] - [#123689]) ([snmp docs]) +- Remove unnecessary assignment of Template.hass from intent_script ([@emontnemery] - [#123676]) ([intent_script docs]) +- Remove unnecessary assignment of Template.hass from minio ([@emontnemery] - [#123679]) ([minio docs]) +- Remove unnecessary assignment of Template.hass from telegram_bot ([@emontnemery] - [#123693]) ([telegram_bot docs]) +- Cleaner unit tests for Swiss public transport ([@miaucl] - [#123660]) ([swiss_public_transport docs]) +- Bump aioswitcher to 4.0.1 ([@thecode] - [#123697]) ([switcher_kis docs]) +- Remove unnecessary assignment of Template.hass from alexa ([@emontnemery] - [#123699]) ([alexa docs]) +- Cleanup unneeded assignment of hass property on MQTT Template objects ([@jbouwh] - [#123706]) ([mqtt docs]) +- Reduce logging in command_line ([@gjohansson-ST] - [#123723]) ([command_line docs]) +- Bump aioswitcher to 4.0.2 ([@thecode] - [#123734]) ([switcher_kis docs]) +- Remove deprecated logi_circle integration ([@gjohansson-ST] - [#123727]) ([logi_circle docs]) (breaking-change) +- Remove deprecated yaml import for gpsd ([@gjohansson-ST] - [#123725]) ([gpsd docs]) (breaking-change) +- Remove deprecated yaml import for velux ([@gjohansson-ST] - [#123724]) ([velux docs]) (breaking-change) +- Update aioairzone to v0.8.2 ([@Noltari] - [#123718]) ([airzone docs]) +- Guard for no discovery info in command_line ([@gjohansson-ST] - [#123717]) ([command_line docs]) +- Replace not needed guard in command_line with type check ([@gjohansson-ST] - [#123722]) ([command_line docs]) +- Combine requirements files in CI ([@epenet] - [#123687]) +- Remove unnecessary assignment of Template.hass from telnet ([@emontnemery] - [#123694]) ([telnet docs]) +- Remove unnecessary assignment of Template.hass from tensorflow ([@emontnemery] - [#123695]) ([tensorflow docs]) +- Remove unnecessary assignment of Template.hass from velbus ([@emontnemery] - [#123696]) ([velbus docs]) +- Remove unnecessary assignment of Template.hass from esphome ([@emontnemery] - [#123701]) ([esphome docs]) +- Remove unnecessary assignment of Template.hass from mobile_app ([@emontnemery] - [#123702]) ([mobile_app docs]) +- Remove unnecessary assignment of Template.hass from trigger entity helper ([@emontnemery] - [#123709]) +- Remove unnecessary assignment of Template.hass from service helper ([@emontnemery] - [#123710]) +- Remove unnecessary assignment of Template.hass from script variables helper ([@emontnemery] - [#123712]) +- Bump protobuf to 4.25.4 ([@bdraco] - [#123675]) +- Improve type hints in lcn tests ([@epenet] - [#123648]) ([lcn docs]) +- Improve type hints in locative tests ([@epenet] - [#123643]) ([locative docs]) +- Remove demo mailbox ([@gjohansson-ST] - [#123741]) ([demo docs]) (breaking-change) +- Bump pyatv to 0.15.0 ([@bdraco] - [#123674]) ([apple_tv docs]) +- Migrate GPSD extra state attributes to separate states ([@jrieger] - [#122193]) ([gpsd docs]) +- Remove unnecessary assignment of Template.hass from generic camera ([@emontnemery] - [#123767]) ([automation docs]) +- Remove unnecessary assignment of Template.hass from condition helper ([@emontnemery] - [#123775]) +- Remove unnecessary assignment of Template.hass from manual ([@emontnemery] - [#123770]) ([manual docs]) +- Remove unnecessary assignment of Template.hass from manual_mqtt ([@emontnemery] - [#123771]) ([manual_mqtt docs]) +- Remove unnecessary assignment of Template.hass from rest ([@emontnemery] - [#123772]) ([rest docs]) +- Remove unnecessary assignment of Template.hass from influxdb ([@emontnemery] - [#123768]) ([influxdb docs]) +- Remove unnecessary assignment of Template.hass from template ([@emontnemery] - [#123773]) ([template docs]) +- Remove unnecessary assignment of Template.hass from xiaomi ([@emontnemery] - [#123774]) ([xiaomi docs]) +- Remove unnecessary assignment of Template.hass from script helper ([@emontnemery] - [#123780]) +- Improve type hints in mochad tests ([@epenet] - [#123794]) ([mochad docs]) +- Improve type hints in mfi tests ([@epenet] - [#123792]) ([mfi docs]) +- Improve type hints in mailgun tests ([@epenet] - [#123789]) ([mailgun docs]) +- Improve type hints in anthropic tests ([@epenet] - [#123784]) ([anthropic docs]) +- Remove unnecessary assignment of Template.hass from event helper ([@emontnemery] - [#123777]) +- Improve type hints in elevenlabs tests ([@epenet] - [#123786]) ([elevenlabs docs]) +- Improve type hints in dsmr tests ([@epenet] - [#123785]) ([dsmr docs]) +- Improve type hints in modbus tests ([@epenet] - [#123795]) ([modbus docs]) +- Improve type hints in knx tests ([@epenet] - [#123787]) ([knx docs]) +- Remove unifiprotect deprecate_package_sensor repair ([@bdraco] - [#123807]) ([unifiprotect docs]) +- Remove unnecessary assignment of Template.hass from alert ([@emontnemery] - [#123766]) ([alert docs]) +- Improve type hints in nzbget tests ([@epenet] - [#123798]) ([nzbget docs]) +- Improve type hints in mobile_app tests ([@epenet] - [#123793]) ([mobile_app docs]) +- Improve type hints in openai_conversation tests ([@epenet] - [#123811]) ([openai_conversation docs]) +- Improve type hints in openuv tests ([@epenet] - [#123813]) ([openuv docs]) +- Improve type hints in otbr tests ([@epenet] - [#123814]) ([otbr docs]) +- Improve type hints in openalpr_cloud tests ([@epenet] - [#123812]) ([openalpr_cloud docs]) +- Add error handling for Russound RIO async calls ([@noahhusby] - [#123756]) ([russound_rio docs]) +- Simplify mock_tts_cache_dir_autouse fixture ([@epenet] - [#123783]) +- Add update platform to AirGradient ([@joostlek] - [#123534]) ([airgradient docs]) (new-platform) +- Bump `matrix-nio` to 0.25.0 ([@PaarthShah] - [#123832]) ([matrix docs]) +- Bump uiprotect to 6.0.2 ([@bdraco] - [#123808]) ([unifiprotect docs]) +- Add base entity to Russound RIO integration ([@noahhusby] - [#123842]) ([russound_rio docs]) +- Correct case of config strings in Mastodon ([@andrew-codechimp] - [#123859]) ([mastodon docs]) +- Support None schema in EntityPlatform.async_register_entity_service ([@emontnemery] - [#123064]) +- Support None schema in EntityComponent.async_register_entity_service ([@emontnemery] - [#123867]) +- Improve type hints in reolink tests ([@epenet] - [#123883]) ([reolink docs]) +- Improve type hints in rfxtrx tests ([@epenet] - [#123885]) ([rfxtrx docs]) +- Improve type hints in stream tests ([@epenet] - [#123894]) ([stream docs]) +- Improve type hints in ssdp tests ([@epenet] - [#123892]) ([ssdp docs]) +- Improve type hints in sonos tests ([@epenet] - [#123891]) ([sonos docs]) +- Improve type hints in smart_meter_texas tests ([@epenet] - [#123890]) ([smart_meter_texas docs]) +- Improve type hints in sma tests ([@epenet] - [#123889]) ([sma docs]) +- Improve type hints in sharkiq tests ([@epenet] - [#123888]) ([sharkiq docs]) +- Improve type hints in risco tests ([@epenet] - [#123887]) ([risco docs]) +- Improve type hints in ridwell tests ([@epenet] - [#123886]) ([ridwell docs]) +- Improve type hints in recollect_waste tests ([@epenet] - [#123882]) ([recollect_waste docs]) +- Improve type hints in rainmachine tests ([@epenet] - [#123881]) ([rainmachine docs]) +- Migrate Mastodon unique id ([@andrew-codechimp] - [#123877]) ([mastodon docs]) +- Improve type hints in rainforest_eagle tests ([@epenet] - [#123880]) ([rainforest_eagle docs]) +- Improve type hints in person tests ([@epenet] - [#123871]) ([person docs]) +- Improve type hints in prusalink tests ([@epenet] - [#123873]) ([prusalink docs]) +- Improve type hints in purpleair tests ([@epenet] - [#123874]) ([purpleair docs]) +- Improve type hints in owntracks tests ([@epenet] - [#123866]) ([owntracks docs]) +- Improve type hints in powerwall tests ([@epenet] - [#123872]) ([powerwall docs]) +- Use coordinator setup method in yale_smart_alarm ([@gjohansson-ST] - [#123819]) ([yale_smart_alarm docs]) +- Bump aioautomower to 2024.8.0 ([@Thomas55555] - [#123826]) ([husqvarna_automower docs]) +- Bump pyflic to 2.0.4 ([@joostlek] - [#123895]) ([flic docs]) +- Raise on database error in recorder.migration._add_constraint ([@emontnemery] - [#123646]) ([recorder docs]) +- Pass None instead of empty dict when registering entity services ([@emontnemery] - [#123878]) +- Clarify SQLite can't drop foreign key constraints ([@emontnemery] - [#123898]) ([recorder docs]) +- Bump aioesphomeapi to 25.1.0 ([@bdraco] - [#123851]) ([esphome docs]) +- Improve type hints in tasmota tests ([@epenet] - [#123913]) ([tasmota docs]) +- Improve type hints in telegram_bot tests ([@epenet] - [#123914]) ([telegram_bot docs]) +- Improve type hints in template tests ([@epenet] - [#123915]) ([template docs]) +- Improve type hints in universal tests ([@epenet] - [#123920]) ([universal docs]) +- Improve type hints in tod tests ([@epenet] - [#123917]) ([tod docs]) +- Improve type hints in tile tests ([@epenet] - [#123916]) ([tile docs]) +- Improve type hints in traccar tests ([@epenet] - [#123919]) ([traccar docs]) +- Improve type hints in subaru tests ([@epenet] - [#123911]) ([subaru docs]) +- Improve type hints in smartthings tests ([@epenet] - [#123912]) ([smartthings docs]) +- Improve type hints in owntracks tests ([@epenet] - [#123905]) ([owntracks docs]) +- Improve type hints in sia tests ([@epenet] - [#123909]) ([sia docs]) +- Map pre-heating and defrosting hvac actions in homekit ([@bdraco] - [#123907]) ([homekit docs]) +- Improve type hints in zha tests ([@epenet] - [#123926]) ([zha docs]) +- Improve type hints in wemo tests ([@epenet] - [#123923]) ([wemo docs]) +- Improve type hints in zerproc tests ([@epenet] - [#123925]) ([zerproc docs]) +- Improve type hints in watttime tests ([@epenet] - [#123921]) ([watttime docs]) +- Use more snapshot in UniFi sensor tests ([@Kane610] - [#122875]) ([unifi docs]) +- Improve type hints in websocket_api tests ([@epenet] - [#123922]) ([websocket_api docs]) +- Improve type hints in smarttub tests ([@epenet] - [#123910]) ([smarttub docs]) +- Add favorite position buttons to Motion Blinds ([@starkillerOG] - [#123489]) ([motion_blinds docs]) (new-platform) +- Bump aiorussound to 2.3.1 ([@noahhusby] - [#123929]) ([russound_rio docs]) +- Set available property in russound base entity ([@noahhusby] - [#123933]) ([russound_rio docs]) +- Add missing return type in test __init__ methods ([@epenet] - [#123932]) +- Set quality scale to silver for Russound RIO ([@noahhusby] - [#123937]) ([russound_rio docs]) +- Add missing return type in test __init__ method (part 3) ([@epenet] - [#123940]) ([media_player docs]) ([nest docs]) ([alexa docs]) ([universal docs]) ([application_credentials docs]) +- Add missing return type in test __init__ method (part 2) ([@epenet] - [#123939]) +- Fix paste error in homekit climate update ([@bdraco] - [#123943]) ([homekit docs]) +- Add comment clarifying recorder migration to schema version 16 ([@emontnemery] - [#123902]) ([recorder docs]) +- Use `elif` in alexa handlers code to avoid additional checks ([@jbouwh] - [#123853]) ([alexa docs]) +- Raise on database error in recorder.migration function ([@emontnemery] - [#123644]) ([recorder docs]) +- Remove unnecessary check in fritz light ([@flabbamann] - [#123829]) ([fritzbox docs]) +- Raise on database error in recorder.migration._drop_foreign_key_constraints ([@emontnemery] - [#123645]) ([recorder docs]) +- Enable confirm error button in Husqvarna Automower by default ([@Thomas55555] - [#123927]) ([husqvarna_automower docs]) +- Rename KNX Climate preset modes according to specification ([@farmio] - [#123964]) ([knx docs]) (breaking-change) +- Bump github/codeql-action from 3.26.0 to 3.26.2 (@dependabot - [#123966]) +- Bump home-assistant/builder from 2024.03.5 to 2024.08.1 (@dependabot - [#123967]) +- Improve code quality of Tesla Fleet tests ([@Bre77] - [#123959]) ([tesla_fleet docs]) +- Pass None instead of empty dict when registering entity services ([@emontnemery] - [#123879]) +- Fix flaky recorder migration tests ([@emontnemery] - [#123971]) ([recorder docs]) +- Remove unnecessary assignment of Template.hass from knx ([@emontnemery] - [#123977]) ([knx docs]) +- Improve some comments in recorder migration code ([@emontnemery] - [#123969]) ([recorder docs]) +- Handle InvalidRegion in Tesla Fleet ([@Bre77] - [#123958]) ([tesla_fleet docs]) +- Adjust VAD seconds better for microVAD ([@synesthesiam] - [#123942]) ([assist_pipeline docs]) +- Deduplicate some recorder migration tests ([@emontnemery] - [#123972]) ([recorder docs]) +- Gold quality for Tesla Fleet ([@Bre77] - [#122235]) ([tesla_fleet docs]) +- Raise on database error in recorder.migration._modify_columns ([@emontnemery] - [#123642]) ([recorder docs]) +- Add Motionblinds Bluetooth full test coverage ([@LennP] - [#121878]) ([motionblinds_ble docs]) +- Add switch platform to chacon_dio integration ([@cnico] - [#122514]) ([chacon_dio docs]) (new-platform) +- Add ArtSound as a virtual integration ([@dukeofphilberg] - [#122636]) ([artsound docs]) (new-integration) +- Fix motionblinds ble test ([@joostlek] - [#123990]) ([motionblinds_ble docs]) +- Allow shared Synology DSM Photo albums shown in media browser ([@mib1185] - [#123613]) ([synology_dsm docs]) +- Add options flow to File ([@gjohansson-ST] - [#120269]) ([file docs]) +- Add Nice G.O. integration ([@IceBotYT] - [#122748]) ([linear_garage_door docs]) (new-integration) +- Simplify recorder.migration._drop_foreign_key_constraints ([@emontnemery] - [#123968]) ([recorder docs]) +- Revert "Rename sensor to finished downloads in pyLoad integration" ([@tr4nt0r] - [#121483]) ([pyload docs]) +- Bump aiorussound to 2.3.2 ([@noahhusby] - [#123997]) ([russound_rio docs]) +- Add config flow for platform number in Template ([@dougiteixeira] - [#121849]) ([template docs]) +- Add configuration url to russound device ([@noahhusby] - [#124001]) ([russound_rio docs]) +- Use `clearCompletedTodos` API endpoint for deleting Habitica todos ([@tr4nt0r] - [#121877]) ([habitica docs]) +- TotalConnect state attribute deprecation warning ([@austinmroczek] - [#122320]) ([totalconnect docs]) +- Use snapshot in UniFi switch tests ([@Kane610] - [#122871]) ([unifi docs]) +- Bump pypck to 0.7.21 ([@alengwenus] - [#124023]) ([lcn docs]) +- Do sanity check EntityPlatform.async_register_entity_service schema ([@emontnemery] - [#123058]) +- Add missing return type in test __init__ method (part 4) ([@epenet] - [#123947]) ([ffmpeg docs]) ([recorder docs]) ([broadlink docs]) ([siren docs]) +- Improve rate limit handling in Habitica integration ([@tr4nt0r] - [#121763]) ([habitica docs]) +- Add Sonos tests for media_player shuffle and repeat ([@PeteRager] - [#122816]) ([sonos docs]) +- Add Python-2.0.1 license to list of approved licenses ([@bdraco] - [#124020]) +- Bump meteoalert to 0.3.1 ([@WebSpider] - [#123848]) ([meteoalarm docs]) +- Reolink add 100% coverage of binary_sensor platfrom ([@starkillerOG] - [#123862]) ([reolink docs]) +- Correct water heater service schemas ([@emontnemery] - [#124038]) ([water_heater docs]) +- Add missing hass type in tests/scripts ([@epenet] - [#124042]) +- Allow raw mqtt payload to be in mqtt publish action ([@jbouwh] - [#123900]) ([mqtt docs]) +- Do sanity check in EntityComponent.async_register_entity_service schema ([@emontnemery] - [#124029]) +- Add missing hass type in tests/test_util ([@epenet] - [#124043]) +- Deduplicate async_register_entity_service ([@emontnemery] - [#124045]) +- Simplify cv._make_entity_service_schema ([@emontnemery] - [#124046]) +- Improve entity platform tests ([@emontnemery] - [#124051]) +- Add additional blocking operations to loop protection ([@bdraco] - [#124017]) +- Add statistics import to Ista EcoTrend integration ([@tr4nt0r] - [#118788]) ([ista_ecotrend docs]) +- Bump ruff to 0.6.0 ([@joostlek] - [#123985]) +- Fix threading in get_test_home_assistant test helper ([@emontnemery] - [#124056]) +- Add missing hass type hint in component tests (a) ([@epenet] - [#124059]) ([alarm_control_panel docs]) ([auth docs]) ([apache_kafka docs]) ([advantage_air docs]) ([airthings_ble docs]) +- Add missing hass type in tests/helpers ([@epenet] - [#124039]) +- Update ffmpeg tests to async ([@emontnemery] - [#124058]) ([ffmpeg docs]) +- Bump fyta_cli to 0.6.0 ([@dontinelli] - [#123816]) ([fyta docs]) +- 2024.8.2 ([@frenck] - [#124069]) +- Add missing hass type hint in alexa tests ([@epenet] - [#124064]) ([alexa docs]) +- Add temperature sensors for unifi device ([@kimdv] - [#122518]) ([unifi docs]) +- Add missing hass type hint in component tests (f) ([@epenet] - [#124076]) ([ffmpeg docs]) ([fronius docs]) ([flick_electric docs]) ([fully_kiosk docs]) +- Speed up initializing config flows ([@bdraco] - [#124015]) +- Migrate back from `pysnmp-lextudio` to `pysnmp` ([@bieniu] - [#123579]) ([snmp docs]) ([brother docs]) +- Use constants in Sonos media player tests ([@joostlek] - [#124037]) ([sonos docs]) +- Do not override hass.loop_thread_id in tests ([@emontnemery] - [#124053]) +- Use BaseEventLoop._thread_id instead of a custom attribute ([@emontnemery] - [#124054]) +- Use BIGINT SQL type for ID columns ([@emontnemery] - [#123973]) ([recorder docs]) +- Add async friendly helper for validating config schemas ([@emontnemery] - [#123800]) +- Add Sonos test for media_player play, pause, stop, previous, next ([@PeteRager] - [#122978]) ([sonos docs]) +- Add Sonos Test for plex media player enqueue options ([@PeteRager] - [#124120]) ([sonos docs]) +- Simplify water_heater.set_temperature service schema ([@emontnemery] - [#124101]) ([water_heater docs]) +- Add brand selection to support additional brands who use the same API for AquaCell integration ([@Jordi1990] - [#121817]) ([aquacell docs]) +- Update homeassistant integration tests to async ([@emontnemery] - [#124117]) ([homeassistant docs]) +- Fix blocking I/O while validating core config schema ([@bdraco] - [#124125]) +- Use better config validation for integrations with legacy setup method, but only config entry setup ([@mib1185] - [#123203]) ([tado docs]) ([lametric docs]) ([doorbird docs]) ([tibber docs]) ([webostv docs]) ([nfandroidtv docs]) +- Add missing sensors for Shelly Plus RGBW PM ([@bieniu] - [#123589]) ([shelly docs]) +- Add missing hass type hint in flux tests ([@epenet] - [#124078]) ([flux docs]) +- Cleanup the Fritz!Smarthome light entity ([@mib1185] - [#123488]) ([fritzbox docs]) +- Bumb python-homewizard-energy to 6.3.0 ([@DCSBL] - [#124150]) ([homewizard docs]) +- Add missing hass type hint in component tests (e) ([@epenet] - [#124075]) ([eafm docs]) ([energy docs]) +- Add missing hass type hint in component tests (c) ([@epenet] - [#124067]) +- Add Fujitsu FGLair integration ([@crevetor] - [#109335]) ([fujitsu_hvac docs]) (new-integration) +- Add missing hass type hint in component tests (b) ([@epenet] - [#124065]) ([broadlink docs]) ([buienradar docs]) ([blebox docs]) ([bluetooth docs]) +- Add support for Levoit EverestAir air purifiers ([@erictrudeau] - [#123428]) ([vesync docs]) +- Add missing hass type in tests/*.py ([@epenet] - [#124048]) +- Improve type hints in scripts/auth ([@epenet] - [#124049]) +- Add light platform to Nice G.O. ([@IceBotYT] - [#124019]) ([nice_go docs]) (new-platform) +- Disable entities for Motiontionblinds Bluetooth ([@LennP] - [#124159]) ([motionblinds_ble docs]) +- Rework Onkyo discovery and interview ([@arturpragacz] - [#120668]) ([onkyo docs]) +- Add Venstar air filter sensors ([@jhollowe] - [#115832]) ([venstar docs]) +- Add missing hass type hint in component tests (d) ([@epenet] - [#124074]) ([duckdns docs]) ([denonavr docs]) ([derivative docs]) ([dynalite docs]) +- Update aiolyric to 2.0.1 ([@dalinicus] - [#123424]) ([lyric docs]) +- Update sensor recorder tests to async ([@emontnemery] - [#124061]) ([recorder docs]) ([sensor docs]) +- Add missing hass type hint in august tests ([@epenet] - [#124062]) ([august docs]) +- Update recorder tests to async ([@emontnemery] - [#124161]) ([recorder docs]) +- Fix schema for input_datetime.set_datetime action ([@emontnemery] - [#124108]) ([input_datetime docs]) +- Add reconfigure flow to Madvr ([@iloveicedgreentea] - [#122477]) ([madvr docs]) +- Refactor websocket handler to reduce complexity ([@bdraco] - [#124174]) ([websocket_api docs]) +- Improve code quality in Manual alarm ([@gjohansson-ST] - [#123142]) ([manual docs]) +- Add state for alarm_control_panel in Prometheus ([@DeathCamel58] - [#123753]) ([prometheus docs]) +- Fix Pure AQI value sensor in Sensibo ([@gjohansson-ST] - [#124151]) ([sensibo docs]) (breaking-change) +- Bump yalesmartalarmclient to 0.4.0 ([@gjohansson-ST] - [#124165]) ([yale_smart_alarm docs]) +- Fix comment typo for _serial_from_status() in NUT ([@tdfountain] - [#124175]) ([nut docs]) +- Add missing hass type hint in component tests (g) ([@epenet] - [#124203]) +- Simplify bring todo service schema ([@emontnemery] - [#124206]) ([bring docs]) +- Add diagnostics to Nice G.O. ([@IceBotYT] - [#124194]) ([nice_go docs]) +- Remove test helper get_test_home_assistant ([@emontnemery] - [#124177]) +- Fix flapping ista_ecotrend tests ([@emontnemery] - [#124205]) ([ista_ecotrend docs]) +- Add sonos snapshot test ([@joostlek] - [#124036]) ([sonos docs]) +- Add reauth to fujitsu_fglair ([@crevetor] - [#124166]) ([fujitsu_fglair docs]) +- Improve type hints in homematicip_cloud tests ([@epenet] - [#124207]) ([homematicip_cloud docs]) +- Bump pyseventeentrack to 1.0.1 ([@shaiu] - [#124211]) ([seventeentrack docs]) +- Add missing hass type hint in component tests (i) ([@epenet] - [#124216]) +- Add missing hass type hint in component tests (h) ([@epenet] - [#124209]) +- Improve suggested values in homeworks config flow ([@emontnemery] - [#124200]) ([homeworks docs]) +- Bump python-linkplay to 0.0.8 ([@dukeofphilberg] - [#123875]) ([linkplay docs]) +- Bump dio-chacon-wifi-api to 1.2.1 ([@cnico] - [#124215]) ([chacon_dio docs]) +- Remove unused function otbr.async_get_active_dataset_tlvs ([@emontnemery] - [#124210]) ([otbr docs]) +- Allow manually updating entity state in chacon dio ([@cnico] - [#124187]) ([chacon_dio docs]) +- Add missing hass type hint in component tests (l) ([@epenet] - [#124220]) +- Add missing hass type hint in component tests (m) ([@epenet] - [#124222]) +- Add missing hass type hint in history and recorder tests ([@epenet] - [#124204]) ([recorder docs]) ([history docs]) +- Strip trailing / from OTBR url ([@emontnemery] - [#124223]) ([otbr docs]) +- Bump apsystems-ez1 to 2.1.0 ([@mawoka-myblock] - [#123225]) ([apsystems docs]) +- Add missing hass type hint in component tests (o) ([@epenet] - [#124226]) ([owntracks docs]) ([onvif docs]) ([otbr docs]) +- Minor improvements of otbr tests ([@emontnemery] - [#124224]) ([otbr docs]) +- Add support for whole apsystems ez1 series ([@mawoka-myblock] - [#123356]) ([apsystems docs]) +- Prepare `otbr.silabs_multiprotocol` for multiple config entries ([@emontnemery] - [#124219]) ([hassio docs]) ([zwave_js docs]) ([matter docs]) ([otbr docs]) +- Bump apsystems-ez1 to 2.2.1 ([@mawoka-myblock] - [#124243]) ([apsystems docs]) +- Use library fork for ViCare integration ([@CFenner] - [#124107]) ([vicare docs]) +- Bump aiowithings to 3.0.3 ([@joostlek] - [#124154]) ([withings docs]) +- Bump ruff to 0.6.1 ([@autinerd] - [#124250]) +- Bump nice-go to 0.2.1 ([@IceBotYT] - [#124238]) ([nice_go docs]) +- Use PEP 695 for decorator typing with type aliases in esphome ([@emontnemery] - [#124234]) ([esphome docs]) +- Add switch platform to Nice G.O. ([@IceBotYT] - [#124237]) ([nice_go docs]) (new-platform) +- Add missing hass type hint in component tests (r) ([@epenet] - [#124231]) ([rfxtrx docs]) ([ring docs]) ([rpi_power docs]) ([risco docs]) ([repairs docs]) +- Add entity deduplication by assist device ID in conversation agent ([@formatBCE] - [#123957]) ([conversation docs]) +- Add entity matching to intent_script ([@arturpragacz] - [#120973]) ([intent_script docs]) +- Skip interfaces without mac in enigma2 device_info ([@autinerd] - [#124249]) ([enigma2 docs]) +- Add event platform to Nice G.O. ([@IceBotYT] - [#124253]) ([nice_go docs]) (new-platform) +- Handle WebSocket client disconnect during prepare ([@bdraco] - [#124173]) ([websocket_api docs]) +- Add handling for `RoborockTooFrequentCodeRequests` for roborock integration ([@yuxincs] - [#123759]) ([roborock docs]) +- Bump nice-go to 0.3.0 ([@IceBotYT] - [#124262]) ([nice_go docs]) +- Add Uplink info to UniFi Device tracker attributes ([@ViViDboarder] - [#123032]) ([unifi docs]) +- Use HassKey in otbr ([@emontnemery] - [#124240]) ([otbr docs]) +- Update opentherm_gw.binary_sensor to use entity_description ([@mvn23] - [#121969]) ([opentherm_gw docs]) +- Improve otbr error handling ([@emontnemery] - [#124277]) ([otbr docs]) +- Deduplicate otbr tests ([@emontnemery] - [#124270]) ([otbr docs]) +- New Integration: SMLIGHT SLZB-06 Adapters Integration ([@tl-sl] - [#118675]) ([smlight docs]) (new-integration) +- Add additional tests for Matter update entity ([@agners] - [#122575]) ([matter docs]) +- Improve type hints in homekit and homekit_controller tests ([@epenet] - [#124213]) ([homekit docs]) ([homekit_controller docs]) +- Add missing hass type hint in component tests (n) ([@epenet] - [#124225]) ([nest docs]) ([notify docs]) ([nx584 docs]) +- Add missing hass type hint in component tests (p) ([@epenet] - [#124227]) ([pilight docs]) ([point docs]) ([ps4 docs]) ([plex docs]) ([panasonic_viera docs]) ([powerwall docs]) +- Add missing hass type hint in component tests (s) ([@epenet] - [#124272]) +- Add missing hass type hint in component tests (u) ([@epenet] - [#124275]) ([upnp docs]) ([upb docs]) +- Add missing hass type hint in component tests (v) ([@epenet] - [#124281]) ([vacuum docs]) ([venstar docs]) ([valve docs]) +- Add missing hass type hint in component tests (w) ([@epenet] - [#124284]) +- Add missing hass type hint in component tests (x) ([@epenet] - [#124285]) ([xiaomi_miio docs]) +- Add missing hass type hint in component tests (y) ([@epenet] - [#124286]) ([yandex_transport docs]) +- Add missing hass type hint in component tests (t) ([@epenet] - [#124274]) +- Update opentherm_gw.sensor to use entity_description ([@mvn23] - [#124283]) ([opentherm_gw docs]) +- Disable expensive pskc computation in all otbr tests ([@emontnemery] - [#124292]) ([otbr docs]) +- Deduplicate OTBR test fixtures ([@emontnemery] - [#124293]) ([otbr docs]) +- Subscribe per component for MQTT discovery ([@jbouwh] - [#119974]) ([mqtt docs]) +- Add Sonos tests for media_player play Sonos Playlist and improve error handling ([@PeteRager] - [#124126]) ([sonos docs]) +- Bump habluetooth to 3.3.2 ([@bdraco] - [#124321]) ([bluetooth docs]) +- Improve Bang & Olufsen notification type comparison ([@mj23000] - [#123067]) ([bang_olufsen docs]) +- Add custom panel for LCN configuration ([@alengwenus] - [#108664]) ([lcn docs]) +- blebox: use blebox_uniapi.cover.BleboxCoverState enum members instead of plain integers ([@swistakm] - [#124302]) ([blebox docs]) +- Extend blebox shutterbox tilt support ([@swistakm] - [#110547]) ([blebox docs]) +- Fix state name for binary_sensor Power from clear/detected to on/off ([@JoramQ] - [#116994]) ([binary_sensor docs]) +- Add tests for IronOS integration ([@tr4nt0r] - [#123078]) ([iron_os docs]) +- Add test cases for ViCare entities ([@CFenner] - [#122983]) ([vicare docs]) +- Disable Habitica deprecated entities by default ([@tr4nt0r] - [#123522]) ([habitica docs]) +- Change POWER_VOLT_AMPERE_REACTIVE to UnitOfReactivePower ([@NECH2004] - [#117153]) +- Fix Weatherflow Cloud lightning ([@jeeftor] - [#124082]) ([weatherflow_cloud docs]) +- Rename OpenThermGatewayDevice to OpenThermGatewayHub ([@mvn23] - [#124361]) ([opentherm_gw docs]) +- Bump async-interrupt to 1.2.0 ([@bdraco] - [#124360]) +- Remove unneeded check for Bang & Olufsen events and device update ([@mj23000] - [#124363]) ([bang_olufsen docs]) +- Convert Bang & Olufsen testing logging patches to caplog ([@mj23000] - [#124366]) ([bang_olufsen docs]) +- Add Aranet Radon Plus support ([@Anrijs] - [#124197]) ([aranet docs]) +- Add DROP Alert product support ([@pfrazer] - [#117867]) ([drop_connect docs]) +- Add tests for Bring integration ([@tr4nt0r] - [#123087]) ([bring docs]) +- Improve config flow type hints (part 1) ([@epenet] - [#124343]) +- Improve config flow type hints (part 4) ([@epenet] - [#124348]) +- Bump dbus-fast to 2.23.0 ([@bdraco] - [#124384]) ([bluetooth docs]) +- Bump github/codeql-action from 3.26.2 to 3.26.4 (@dependabot - [#124390]) +- Bump home-assistant/builder from 2024.08.1 to 2024.08.2 (@dependabot - [#124341]) +- Fix typo in Alexa resources docstring ([@spongebobberts] - [#124388]) ([alexa docs]) +- Install and start Mosquitto MQTT broker add on from MQTT config flow ([@jbouwh] - [#124106]) ([mqtt docs]) +- Use setup_test_component_platform in Climate tests ([@gjohansson-ST] - [#123941]) ([climate docs]) +- Fix lingering mqtt unload entry test ([@jbouwh] - [#124392]) ([mqtt docs]) +- Bump pysmlight to 0.0.13 ([@tl-sl] - [#124398]) ([smlight docs]) +- Handle !include without arguments in configuration.yaml ([@emontnemery] - [#124399]) +- Revert UnitOfReactivePower change from iotawatt ([@epenet] - [#124393]) ([iotawatt docs]) +- Improve type hints in lcn tests ([@epenet] - [#124415]) ([lcn docs]) +- Drop ignore-missing-annotations from pylint tests ([@epenet] - [#120302]) +- Automatically generate Amazon Polly list of voices and regions ([@jschlyter] - [#119198]) ([amazon_polly docs]) +- Improve Bang olufsen test typing and parameter order ([@mj23000] - [#124419]) ([bang_olufsen docs]) +- Wrap OSError in loader.load_yaml ([@emontnemery] - [#124406]) +- Add Bang & Olufsen websocket testing ([@mj23000] - [#123075]) ([bang_olufsen docs]) +- Shutdown database engine before waiting for executor shutdown ([@bdraco] - [#117339]) ([recorder docs]) +- Add zip to template engine ([@Petro31] - [#122460]) +- Add LawnMowerActivity.RETURNING to Lawn Mower ([@mikey0000] - [#124261]) ([lawn_mower docs]) +- Allow to set options for an MQTT enum sensor ([@jbouwh] - [#123248]) ([mqtt docs]) +- Fix Import ReceivePayloadType ([@jbouwh] - [#124431]) ([mqtt docs]) ([mysensors docs]) +- Bump ruff to 0.6.2 ([@autinerd] - [#124433]) +- Cleanup redundant fixtures and move all other hassio addon fixtures to be shared ([@jbouwh] - [#124437]) ([hassio docs]) +- Reduce ESPHome entity state write overhead ([@bdraco] - [#124329]) ([esphome docs]) +- Check minimum amount of integrations for a brand ([@joostlek] - [#124310]) +- Refactor targets for zwave_js services ([@raman325] - [#115734]) ([zwave_js docs]) +- Use identity checks for ESPHome Enums ([@bdraco] - [#124334]) ([esphome docs]) +- Replace statistics _get_unit_class function with a dict lookup ([@bdraco] - [#124452]) ([recorder docs]) +- Fix `zwave_js` `services.yaml` schema ([@raman325] - [#124455]) ([zwave_js docs]) +- Refactor bsblan coordinator ([@liudger] - [#124308]) ([bsblan docs]) +- Reolink add 100% coverage of number platform ([@starkillerOG] - [#124465]) ([reolink docs]) +- Bump opower to 0.7.0 ([@tronikos] - [#124475]) ([opower docs]) +- Reolink add 100% coverage of siren platform ([@starkillerOG] - [#124474]) ([reolink docs]) +- Refactor and cleanup zwave_js fixtures to share them ([@jbouwh] - [#124485]) ([hassio docs]) ([zwave_js docs]) +- Cleanup redundant fixtures on matter integration for addon tests ([@jbouwh] - [#124445]) ([matter docs]) +- Do not report tplink discovery failures as legacy connection failures ([@sdb9696] - [#124432]) ([tplink docs]) +- Cleanup hassio fixtures in home assistant hardware integration tests ([@jbouwh] - [#124500]) ([hassio docs]) ([homeassistant_yellow docs]) ([homeassistant_sky_connect docs]) ([homeassistant_hardware docs]) +- Add `charging enabled` switch to TechnoVE ([@Moustachauve] - [#121484]) ([technove docs]) +- Always assign unique_id in Onkyo ([@arturpragacz] - [#120543]) ([onkyo docs]) +- Resolve versions of ZHA dependencies earlier to prevent blocking call in event loop ([@dmulcahey] - [#124496]) ([zha docs]) +- Bump lcn-frontend to 0.1.6 ([@alengwenus] - [#124490]) ([lcn docs]) +- Bump fnv-hash-fast to 1.0.2 ([@bdraco] - [#124489]) ([recorder docs]) ([homekit docs]) +- Bump plexapi to 4.15.16 ([@jjlawren] - [#124512]) ([plex docs]) +- Bump motionblindsble to 0.1.1 ([@LennP] - [#124322]) ([motionblinds_ble docs]) +- Convert ring integration to the async ring-doorbell api ([@sdb9696] - [#124365]) ([ring docs]) +- Add deCONZ Air Purifier Fan Mode select entity support ([@Kane610] - [#124513]) ([deconz docs]) +- Add returning activity to ecovacs lawn mower ([@mikey0000] - [#124519]) ([ecovacs docs]) +- Add type hinting to Bang & Olufsen test ([@mj23000] - [#124423]) ([bang_olufsen docs]) +- Bump flipr-api to 1.6.0 ([@cnico] - [#124522]) ([flipr docs]) +- Fix tilt calculation for HomeKit cover devices ([@red-island] - [#123532]) ([homekit_controller docs]) +- Add nest event platform ([@allenporter] - [#123042]) ([nest docs]) (new-platform) +- Fix ZHA device lookup when ZHA devices are shared with additional integrations ([@dmulcahey] - [#124429]) ([zha docs]) +- Bump to python-nest-sdm to 5.0.0 ([@allenporter] - [#124536]) ([nest docs]) +- Fix nest event entities to only register a single event per session ([@allenporter] - [#124535]) ([nest docs]) +- Add minimum command seconds to VAD ([@synesthesiam] - [#124447]) ([assist_pipeline docs]) +- Remove sync API use in Nice G.O. ([@IceBotYT] - [#124546]) ([nice_go docs]) +- Bump bluetooth-data-tools to 1.20.0 ([@bdraco] - [#124542]) ([bluetooth docs]) ([led_ble docs]) ([ld2410_ble docs]) ([private_ble_device docs]) +- Change logger level on config migration for Mastodon ([@andrew-codechimp] - [#124558]) ([mastodon docs]) +- Bump pyEmby to 1.10 ([@jbergler] - [#124549]) ([emby docs]) +- Remove platform from unique ID in Nice G.O. ([@IceBotYT] - [#124548]) ([nice_go docs]) +- 2024.8.3 ([@balloob] - [#124569]) +- Bump ulid-transform to 1.0.2 ([@bdraco] - [#124544]) +- Bump aiolifx to 1.0.8 to support LIFX B10 and T10 Candles ([@Djelibeybi] - [#124263]) ([lifx docs]) +- Bump fyta_cli to 0.6.3 ([@dontinelli] - [#124574]) ([fyta docs]) +- Ensure write access to hassrelease data folder ([@balloob] - [#124573]) +- Update a roborock blocking call to be fully async ([@allenporter] - [#124266]) ([roborock docs]) +- Add icons for conductivity ([@dontinelli] - [#124576]) ([sensor docs]) ([number docs]) +- Small cleanups to list_statistic_ids ([@bdraco] - [#124451]) ([sensor docs]) +- Improve performance of fetching stats metadata ([@bdraco] - [#124428]) ([recorder docs]) +- Improve config flow type hints (part 5) ([@epenet] - [#124349]) ([xiaomi_aqara docs]) ([yeelight docs]) ([totalconnect docs]) ([wilight docs]) ([ukraine_alarm docs]) +- Improve config flow type hints (part 3) ([@epenet] - [#124346]) +- Improve config flow type hints (part 2) ([@epenet] - [#124344]) +- Split esphome state property decorators ([@bdraco] - [#124332]) ([esphome docs]) +- Ensure all chars are polling when requesting manual update in homekit_controller ([@bdraco] - [#124582]) ([homekit_controller docs]) +- Add ollama context window size configuration ([@allenporter] - [#124555]) ([ollama docs]) +- Update nest events to include attachment image and video urls ([@allenporter] - [#124554]) ([nest docs]) +- Add Sonos tests for announce and update error handling ([@PeteRager] - [#124539]) ([sonos docs]) +- Bump aioesphomeapi to 25.2.0 ([@jesserockz] - [#124607]) ([esphome docs]) +- Add SimpleFin binary sensor for errors ([@jeeftor] - [#122554]) ([simplefin docs]) (new-platform) +- Remove unused constant in dhcp ([@bdraco] - [#124605]) ([dhcp docs]) +- Dont turn HVAC off with preset in Teslemetry ([@Bre77] - [#124604]) ([teslemetry docs]) +- Use speex for noise suppression and auto gain ([@synesthesiam] - [#124591]) ([voip docs]) ([assist_pipeline docs]) +- Set native value to be None instead of STATE_UNKNOWN for APCUPSD integration ([@yuxincs] - [#124609]) ([apcupsd docs]) +- Improve code quality for ViCare integration ([@CFenner] - [#124613]) ([vicare docs]) +- Improve performance of generate diffs of state change events ([@bdraco] - [#124601]) ([websocket_api docs]) +- Auto recover mqtt config entry secret if Mosquitto add-on was re-installed ([@jbouwh] - [#124514]) ([mqtt docs]) +- Revert "Use speex for noise suppression and auto gain" ([@balloob] - [#124620]) ([voip docs]) ([assist_pipeline docs]) +- Handle LCN entity instances only in corresponding platform ([@alengwenus] - [#124589]) ([lcn docs]) +- Add test showing we prefer tts entity over legacy tts provider ([@emontnemery] - [#124624]) ([tts docs]) +- Bump github/codeql-action from 3.26.4 to 3.26.5 (@dependabot - [#124615]) +- Add conductivity sensor to bthome ([@darkfader] - [#124312]) ([bthome docs]) +- Prefer stt entity over legacy stt provider ([@emontnemery] - [#124625]) ([stt docs]) +- Bump cached-ipaddress to 0.5.0 ([@bdraco] - [#124602]) ([dhcp docs]) +- Reduce multiple calls to calculate sensor unit in tplink ([@bdraco] - [#124606]) ([tplink docs]) +- Revert "Revert "Use speex for noise suppression and auto gain"" ([@balloob] - [#124637]) ([voip docs]) ([assist_pipeline docs]) +- Fix overriding name in MockTTSEntity ([@emontnemery] - [#124639]) ([tts docs]) +- Cleanup not used data field for mqtt hassio config flow confirm step ([@jbouwh] - [#124486]) ([mqtt docs]) +- Fix device class for motion_light blueprint ([@WebSpider] - [#124495]) ([automation docs]) +- Add Airzone main zone mode select ([@Noltari] - [#124566]) ([airzone docs]) +- Bump nextdns to version 3.2.0 ([@bieniu] - [#124646]) ([nextdns docs]) +- Move data entry section translations ([@emontnemery] - [#124648]) ([kitchen_sink docs]) +- Use runtime data instead of hass.data in jvc projector ([@iloveicedgreentea] - [#124608]) ([jvc_projector docs]) +- Fix defaults for cloud STT/TTS ([@balloob] - [#121229]) ([tts docs]) ([stt docs]) +- Prevent duplicating constraints during schema migration ([@emontnemery] - [#124616]) ([recorder docs]) +- Auto configure outbound websocket for sleepy shelly RPC devices ([@bdraco] - [#124545]) ([shelly docs]) +- Add missing units for `xpercent`, `xfreq` and `xcounts` Shelly sensors ([@bieniu] - [#124288]) ([shelly docs]) +- Add Reolink chime play action ([@starkillerOG] - [#123245]) ([reolink docs]) +- Add WS outbound config to Shelly diagnostics ([@bieniu] - [#124654]) ([shelly docs]) +- Update overkiz Atlantic Water Heater operation mode switching ([@ALERTua] - [#124619]) ([overkiz docs]) (breaking-change) +- Bump aioesphomeapi to 25.2.1 ([@jesserockz] - [#124659]) ([esphome docs]) +- Bump bimmer_connected to 0.16.2 ([@rikroe] - [#124651]) ([bmw_connected_drive docs]) +- Bump airthings-ble to 0.9.1 ([@LaStrada] - [#124658]) ([airthings_ble docs]) +- Replace LASTSTEST with LAST_S_TEST ([@yuxincs] - [#124668]) ([apcupsd docs]) +- Set deprecated flag on TTS engines replaced by entities in WS list ([@emontnemery] - [#124676]) ([tts docs]) +- Standardize import step variable name (part 1) ([@epenet] - [#124674]) +- Standardize import step variable name (part 3) ([@epenet] - [#124680]) ([toon docs]) ([media_extractor docs]) ([hive docs]) ([canary docs]) ([jewish_calendar docs]) ([file docs]) ([thread docs]) +- Cleanup unused import in proximity config flow ([@epenet] - [#124681]) ([proximity docs]) +- Include engine name in STT WS responses ([@emontnemery] - [#124684]) ([stt docs]) +- Include engine name in TTS WS responses ([@emontnemery] - [#124683]) ([tts docs]) +- Bump zeroconf to 0.133.0 ([@bdraco] - [#124673]) ([zeroconf docs]) +- Add support for using an entityfilter to subscribe_entities ([@bdraco] - [#124641]) ([websocket_api docs]) +- Small cleanup to normalize states ([@bdraco] - [#124614]) ([sensor docs]) +- Small speed up to creating stats database rows ([@bdraco] - [#124587]) ([recorder docs]) +- Reduce complexity of _sorted_statistics_to_dict ([@bdraco] - [#123936]) ([recorder docs]) +- Standardize import step variable name (part 2) ([@epenet] - [#124679]) +- Add power entity for yolink plug ([@matrixd2] - [#124678]) ([yolink docs]) +- Add touchlinesl integration ([@jnsgruk] - [#124557]) ([touchlinesl docs]) (new-integration) +- Update YoLink FlexFob Automation ([@matrixd2] - [#123631]) ([yolink docs]) +- Update pyTibber to 0.30.1 ([@functionpointer] - [#124407]) ([tibber docs]) +- Add ConfigEntries.async_get_loaded ([@emontnemery] - [#124705]) +- Adjust name of legacy Home Assistant Cloud TTS provider ([@emontnemery] - [#124685]) ([cloud docs]) +- Cleanup unused import in somfy_mylink config flow ([@epenet] - [#124709]) ([somfy_mylink docs]) +- Standardize import step variable name (part 4) ([@epenet] - [#124692]) +- Fix review comments in fglair ([@crevetor] - [#124710]) ([fujitsu_fglair docs]) +- Cleanup unused import in google config flow ([@epenet] - [#124711]) ([google docs]) +- Adjust docstring in airvisual_pro config flow ([@epenet] - [#124712]) ([airvisual_pro docs]) +- Add a test for async_converse ([@balloob] - [#124697]) ([conversation docs]) +- Cleanup unused import in zwave_js config flow ([@epenet] - [#124716]) ([zwave_js docs]) +- Improve validation of entity service schemas ([@emontnemery] - [#124102]) +- Adjust name of Google Translate TTS provider ([@emontnemery] - [#124688]) ([google_translate docs]) +- Add support for multiple otbr config entries ([@emontnemery] - [#124289]) ([otbr docs]) +- Improve test coverage for nextcloud ([@mib1185] - [#123148]) ([nextcloud docs]) +- Bump Nice G.O. to 0.3.5 ([@IceBotYT] - [#124667]) ([nice_go docs]) +- Fix nice_go integration tests ([@jbouwh] - [#124736]) ([nice_go docs]) +- Fix Shelly sleepy RPC setup if device is already awake ([@thecode] - [#124734]) ([shelly docs]) +- Yellow firmware selection options flow ([@puddly] - [#122868]) ([homeassistant_yellow docs]) +- Remove socketio constraints ([@bdraco] - [#124730]) ([sisyphus docs]) +- Bump dbus-fast to 2.24.0 ([@bdraco] - [#124737]) ([bluetooth docs]) +- Handle single state requests from ESPHome ([@jesserockz] - [#124660]) ([esphome docs]) +- Bump aioambient to 2024.08.0 ([@bdraco] - [#124729]) ([ambient_station docs]) ([ambient_network docs]) +- Bump aioshelly to 11.3.0 ([@bdraco] - [#124741]) ([shelly docs]) +- Disable sisyphus integration ([@bdraco] - [#124742]) ([sisyphus docs]) +- Remove unnecessary assertion for the Yellow firmware type ([@puddly] - [#124747]) ([homeassistant_yellow docs]) +- Bump pyspeex-noise to 1.0.2 ([@synesthesiam] - [#124721]) ([assist_pipeline docs]) +- Use ssl util in Tibber ([@functionpointer] - [#123369]) ([tibber docs]) +- Disable control4 integration ([@bdraco] - [#124746]) ([control4 docs]) +- Bump yalexs to 8.5.4 ([@bdraco] - [#124672]) ([august docs]) +- Cleanup removed `schema` option from mqtt vacuum platform ([@jbouwh] - [#124722]) ([mqtt docs]) (breaking-change) +- Restore control4 integration ([@bdraco] - [#124750]) ([control4 docs]) +- Remove unused normalized units from unit converters ([@dudanov] - [#122797]) +- Cache shelly coordinator properties that never change ([@bdraco] - [#124756]) ([shelly docs]) +- Small cleanups to shelly ([@bdraco] - [#124758]) ([shelly docs]) +- Deduplicate STT mocks ([@emontnemery] - [#124754]) ([stt docs]) ([assist_pipeline docs]) +- Standardize import step variable name in geonetnz_volcano ([@epenet] - [#124699]) ([geonetnz_volcano docs]) +- Standardize import step variable name in cert_expiry ([@epenet] - [#124696]) ([cert_expiry docs]) +- Standardize import step variable name (part 5) ([@epenet] - [#124698]) ([enocean docs]) ([point docs]) ([smartthings docs]) ([yeelight docs]) ([songpal docs]) ([heos docs]) ([soma docs]) +- Bump reolink_aio to 0.9.8 ([@starkillerOG] - [#124763]) ([reolink docs]) +- Allow specifying icons for service sections ([@emontnemery] - [#124656]) ([kitchen_sink docs]) +- Use Position instead of Angle for TiltOnlyDevice in motion blinds ([@starkillerOG] - [#123521]) ([motion_blinds docs]) +- Set default name for KNX outgoing telegram source ([@farmio] - [#124439]) ([knx docs]) +- Use KNX group address format from project ([@farmio] - [#124084]) ([knx docs]) +- Improve mediabrowser names for DUO lens Reolink cameras ([@starkillerOG] - [#124766]) ([reolink docs]) +- Improve config flow type hints in vesync ([@epenet] - [#124351]) ([vesync docs]) +- Improve config flow type hints in sense ([@epenet] - [#124350]) ([sense docs]) +- Cleanup unused import in solarlog config flow ([@epenet] - [#124713]) ([solarlog docs]) +- Cleanup unused import in upb config flow ([@epenet] - [#124694]) ([upb docs]) +- Improve config flow type hints in sms ([@epenet] - [#124352]) ([sms docs]) +- Standardize reauth step variable name in config flows ([@epenet] - [#124760]) +- Standardize reauth step variable name in permobil ([@epenet] - [#124764]) ([permobil docs]) +- Add start_reauth helper method to MockConfigEntry ([@epenet] - [#124767]) ([axis docs]) ([abode docs]) ([august docs]) ([airvisual docs]) ([awair docs]) +- Use reauth_confirm in sharkiq ([@epenet] - [#124762]) ([sharkiq docs]) +- Use reauth_confirm in weatherflow_cloud ([@epenet] - [#124761]) ([weatherflow_cloud docs]) +- Handle KNX expose conversion exceptions and unavailable states ([@farmio] - [#124776]) ([knx docs]) +- Simplify aussie_broadband reauth flow ([@epenet] - [#124774]) ([aussie_broadband docs]) +- Standardize reauth step variable name in aseko_pool_live ([@epenet] - [#124765]) ([aseko_pool_live docs]) +- Update icons.json to new service schema part 1 ([@emontnemery] - [#124768]) +- Update icons.json to new service schema part 2 ([@emontnemery] - [#124769]) +- Update icons.json to new service schema part 3 ([@emontnemery] - [#124770]) +- Update icons.json to new service schema part 4 ([@emontnemery] - [#124771]) +- Deduplicate TTS mocks ([@emontnemery] - [#124773]) ([tts docs]) ([assist_pipeline docs]) +- Enforce new service icon schema for core integrations ([@emontnemery] - [#124772]) +- Add YoLink lock V2 support ([@matrixd2] - [#124202]) ([yolink docs]) +- Trigger full CI run on Blueprint integration changes ([@emontnemery] - [#124778]) +- Fix translation for AVM Fritz!Box Tools ([@mib1185] - [#124784]) ([fritz docs]) +- Fix OAuth reauth in Tesla Fleet ([@Bre77] - [#124744]) ([tesla_fleet docs]) +- Prevent nesting sections in data entry flows ([@emontnemery] - [#124645]) +- Use start_reauth helper method in integration tests (h-l) ([@epenet] - [#124787]) +- Use start_reauth helper method in integration tests (e-g) ([@epenet] - [#124785]) +- Use start_reauth helper method in config flow tests (a-d) ([@epenet] - [#124780]) +- Update aioazuredevops to 2.2.1 ([@timmo001] - [#124788]) ([azure_devops docs]) +- Use start_reauth helper method in integration tests (m-o) ([@epenet] - [#124790]) +- Add get_queue action for Sonos ([@PeteRager] - [#124707]) ([sonos docs]) +- Use start_reauth helper method in integration tests (p-r) ([@epenet] - [#124792]) +- Use start_reauth helper method in broadlink and bthome ([@epenet] - [#124783]) ([broadlink docs]) +- Update frontend to 20240828.0 ([@piitaya] - [#124791]) ([frontend docs]) +- Build hassfest docker image and pushlish it on beta/stable releases ([@edenhaus] - [#124706]) +- Remove deprecated mailbox platform ([@gjohansson-ST] - [#123740]) ([mailbox docs]) (breaking-change) +- Use start_reauth helper method in integration tests (t) ([@epenet] - [#124794]) +- Use start_reauth helper method in integration tests (s) ([@epenet] - [#124793]) +- Use start_reauth helper method in integration tests (u-z) ([@epenet] - [#124796]) +- Split august and yale integrations ([@bdraco] - [#124677]) ([august docs]) ([yale docs]) (new-integration) +- Enable Ruff TCH rules ([@autinerd] - [#124396]) +- Add current intraday price ranking to Tibber price sensor ([@haugene] - [#124595]) ([tibber docs]) +- Check KNX integration is loaded on websocket calls ([@farmio] - [#123178]) ([knx docs]) +- 2024.9.0b0: It's beta time ([@edenhaus] - [#124807]) (new-platform) +- Bump pyatmo to 8.1.0 ([@cgtobi] - [#124340]) ([netatmo docs]) (beta fix) +- Bump pydaikin to 2.13.5 ([@fredrike] - [#124802]) ([daikin docs]) (beta fix) +- Address yale review comments ([@bdraco] - [#124810]) ([yale docs]) (beta fix) +- Fix sonos get_queue service call to restrict to sonos media_player entities ([@PeteRager] - [#124815]) ([sonos docs]) (beta fix) +- Redirect virtual integration yale_home to point to yale ([@bdraco] - [#124817]) ([yale_home docs]) (beta fix) +- Add missing dependencies to yale ([@bdraco] - [#124821]) ([yale docs]) (beta fix) +- Update utility_account_id in Opower to be lowercase in statistic id ([@AutonomousOwl] - [#124837]) ([opower docs]) (beta fix) +- Fix Mastodon migrate config entry log warning ([@andrew-codechimp] - [#124848]) ([mastodon docs]) (beta fix) +- Bump pydaikin to 2.13.6 ([@fredrike] - [#124852]) ([daikin docs]) (beta fix) +- Add missing translation key in Knocki ([@joostlek] - [#124862]) ([knocki docs]) (beta fix) +- Update frontend to 20240829.0 ([@bramkragten] - [#124864]) ([frontend docs]) (beta fix) +- Bump aioruckus to v0.41 removing blocking call to load_default_certs from ruckus_unleashed integration ([@ms264556] - [#123974]) ([ruckus_unleashed docs]) (beta fix) +- Bump weatherflow4py to 0.2.23 ([@jeeftor] - [#124072]) ([weatherflow_cloud docs]) (beta fix) +- Attempt to fix IndexError in Opower ([@tronikos] - [#124478]) ([opower docs]) (beta fix) +- Bump ZHA to 0.0.32 ([@puddly] - [#124804]) ([zha docs]) (breaking-change) (beta fix) +- Address august review comments ([@bdraco] - [#124819]) ([august docs]) (beta fix) +- Optimize hassfest image ([@edenhaus] - [#124855]) (beta fix) +- Bump PyTurboJPEG to 1.7.5 ([@edenhaus] - [#124865]) ([camera docs]) ([stream docs]) (beta fix) +- Bump `nice-go` to 0.3.8 ([@IceBotYT] - [#124872]) ([nice_go docs]) (beta fix) +- Handle CancelledError in bluesound integration ([@LouisChrist] - [#124873]) ([bluesound docs]) (beta fix) +- Bump intents to 2024.8.29 ([@synesthesiam] - [#124874]) ([conversation docs]) (beta fix) +- Address yale review comments part 2 ([@bdraco] - [#124887]) ([yale docs]) (beta fix) +- Fix ZHA group removal entity registry cleanup ([@TheJulianJES] - [#124889]) ([zha docs]) (beta fix) +- Bump aioesphomeapi to 25.3.1 ([@bdraco] - [#124890]) ([esphome docs]) (beta fix) +- Bump yalexs to 8.5.5 ([@bdraco] - [#124891]) ([august docs]) ([yale docs]) (beta fix) +- Add a repair issue for Yale Home users using the August integration ([@bdraco] - [#124895]) ([august docs]) (breaking-change) (beta fix) +- Bump lmcloud to 1.2.1 ([@zweckj] - [#124908]) ([lamarzocco docs]) (beta fix) +- Bump lmcloud 1.2.2 ([@zweckj] - [#124911]) ([lamarzocco docs]) (beta fix) +- Bump aiomealie to 0.9.0 ([@joostlek] - [#124924]) ([mealie docs]) (beta fix) +- Bump Intellifire to 4.1.9 ([@jeeftor] - [#121091]) ([intellifire docs]) (beta fix) +- Fix Tado fan speed for AC ([@EtienneSOU] - [#122415]) ([tado docs]) (beta fix) +- Restore sisyphus integration ([@bdraco] - [#124749]) ([sisyphus docs]) (beta fix) +- Bump renault-api to v0.2.7 ([@vhkristof] - [#124858]) ([renault docs]) (beta fix) +- Bump aioshelly to 11.4.1 to accomodate shelly GetStatus calls that take a few seconds to respond ([@bdraco] - [#124893]) ([shelly docs]) (beta fix) +- Make set_value required in number template ([@joostlek] - [#124917]) ([template docs]) (beta fix) +- Bump python-kasa to 0.7.2 ([@sdb9696] - [#124930]) ([tplink docs]) (breaking-change) (beta fix) +- Exclude tplink firmware entities ([@sdb9696] - [#124935]) ([tplink docs]) (beta fix) +- Define household support in Mealie ([@joostlek] - [#124950]) ([mealie docs]) (beta fix) +- Bump yarl to 1.9.6 ([@bdraco] - [#124955]) (beta fix) +- Bump aiopulse to 0.4.6 ([@atmurray] - [#124964]) ([acmeda docs]) (beta fix) +- Fix ollama blocking on load_default_certs ([@rikroe] - [#125012]) ([ollama docs]) (beta fix) +- Fix telegram_bot blocking on load_default_certs ([@rikroe] - [#125014]) ([telegram_bot docs]) (beta fix) +- Fix BMW client blocking on load_default_certs ([@rikroe] - [#125015]) ([bmw_connected_drive docs]) (beta fix) +- Bump aiomealie to 0.9.1 ([@joostlek] - [#125017]) ([mealie docs]) (beta fix) +- Bump python-telegram-bot to 21.5 ([@MartinHjelmare] - [#125025]) ([telegram_bot docs]) (beta fix) +- Add ConductivityConverter in websocket_api.py ([@dontinelli] - [#125029]) ([recorder docs]) (beta fix) +- Add diagnostics platform to modern forms ([@mib1185] - [#125032]) ([modern_forms docs]) (beta fix) +- Bump yarl to 1.9.7 ([@bdraco] - [#125035]) (beta fix) +- Bump aioshelly to 11.4.2 ([@thecode] - [#125036]) ([shelly docs]) (beta fix) +- Don't raise when registering entity service with invalid schema ([@emontnemery] - [#125057]) (beta fix) +- Bump habluetooth to 3.4.0 ([@bdraco] - [#125058]) ([bluetooth docs]) (beta fix) +- Fix motionblinds_ble tests ([@emontnemery] - [#125060]) ([motionblinds_ble docs]) (beta fix) +- Bump androidtvremote2 to 0.1.2 to fix blocking event loop when loading ssl certificate chain ([@tronikos] - [#125061]) ([androidtv_remote docs]) (beta fix) +- Bump fyta_cli to 0.6.6 ([@dontinelli] - [#125065]) ([fyta docs]) (beta fix) +- Update frontend to 20240902.0 ([@piitaya] - [#125093]) ([frontend docs]) (beta fix) +- Call async_write_ha_state after ring update ([@sdb9696] - [#125096]) ([ring docs]) (beta fix) +- Fix updating insteon modem configuration while disconnected ([@UltimateGG] - [#121918]) ([insteon docs]) (beta fix) +- Add Linkplay mTLS/HTTPS and improve logging ([@dukeofphilberg] - [#124307]) ([linkplay docs]) (beta fix) +- Handle telegram polling errors ([@MartinHjelmare] - [#124327]) ([telegram_bot docs]) (beta fix) +- Update nest to only include the image attachment payload for cameras that support fetching media ([@allenporter] - [#124590]) ([nest docs]) (beta fix) +- Increase timeout for fetching buienradar weather data ([@mjj4791] - [#124597]) ([buienradar docs]) (beta fix) +- Fix blocking calls for OpenAI conversation ([@rikroe] - [#125010]) ([openai_conversation docs]) (beta fix) +- Bump py-madvr2 to 1.6.32 ([@iloveicedgreentea] - [#125049]) ([madvr docs]) (beta fix) +- Fix area registry indexing when there is a name collision ([@arturpragacz] - [#125050]) (beta fix) +- Bump aiolifx to 1.0.9 and remove unused HomeKit model prefixes ([@Djelibeybi] - [#125055]) ([lifx docs]) (beta fix) +- Bump yalexs to 8.6.0 ([@bdraco] - [#125102]) ([august docs]) ([yale docs]) (beta fix) +- Bump PySwitchbot to 0.48.2 ([@Michal4K] - [#125113]) ([switchbot docs]) (beta fix) +- Fix unhandled exception with missing IQVIA data ([@bachya] - [#125114]) ([iqvia docs]) (beta fix) +- Fix Onkyo action select_hdmi_output ([@arturpragacz] - [#125115]) ([onkyo docs]) (beta fix) +- Pass hass clientsession to ring config flow ([@sdb9696] - [#125119]) ([ring docs]) (beta fix) +- Correct device serial for ViCare integration ([@CFenner] - [#125125]) ([vicare docs]) (beta fix) +- Fix energy sensor for ThirdReality Matter powerplug ([@marcelveldt] - [#125140]) ([matter docs]) (beta fix) +- Log deprecation warning when `cv.template` is called from wrong thread ([@emontnemery] - [#125141]) (beta fix) +- Log deprecation warning when `template.Template` is created without `hass` ([@emontnemery] - [#125142]) (beta fix) +- Restore unnecessary assignment of Template.hass in event helper ([@emontnemery] - [#125143]) (beta fix) +- Bump aiomealie to 0.9.2 ([@andrew-codechimp] - [#125153]) ([mealie docs]) (beta fix) +- Update frontend to 20240903.1 ([@piitaya] - [#125160]) ([frontend docs]) (beta fix) +- Bump yalexs to 8.6.2 ([@bdraco] - [#125162]) ([august docs]) ([yale docs]) (beta fix) + +[#108664]: https://github.com/home-assistant/core/pull/108664 +[#109335]: https://github.com/home-assistant/core/pull/109335 +[#110547]: https://github.com/home-assistant/core/pull/110547 +[#114671]: https://github.com/home-assistant/core/pull/114671 +[#115031]: https://github.com/home-assistant/core/pull/115031 +[#115671]: https://github.com/home-assistant/core/pull/115671 +[#115734]: https://github.com/home-assistant/core/pull/115734 +[#115832]: https://github.com/home-assistant/core/pull/115832 +[#116873]: https://github.com/home-assistant/core/pull/116873 +[#116994]: https://github.com/home-assistant/core/pull/116994 +[#117153]: https://github.com/home-assistant/core/pull/117153 +[#117339]: https://github.com/home-assistant/core/pull/117339 +[#117867]: https://github.com/home-assistant/core/pull/117867 +[#118675]: https://github.com/home-assistant/core/pull/118675 +[#118788]: https://github.com/home-assistant/core/pull/118788 +[#119198]: https://github.com/home-assistant/core/pull/119198 +[#119974]: https://github.com/home-assistant/core/pull/119974 +[#120269]: https://github.com/home-assistant/core/pull/120269 +[#120302]: https://github.com/home-assistant/core/pull/120302 +[#120543]: https://github.com/home-assistant/core/pull/120543 +[#120668]: https://github.com/home-assistant/core/pull/120668 +[#120973]: https://github.com/home-assistant/core/pull/120973 +[#120974]: https://github.com/home-assistant/core/pull/120974 +[#121091]: https://github.com/home-assistant/core/pull/121091 +[#121229]: https://github.com/home-assistant/core/pull/121229 +[#121483]: https://github.com/home-assistant/core/pull/121483 +[#121484]: https://github.com/home-assistant/core/pull/121484 +[#121763]: https://github.com/home-assistant/core/pull/121763 +[#121817]: https://github.com/home-assistant/core/pull/121817 +[#121849]: https://github.com/home-assistant/core/pull/121849 +[#121877]: https://github.com/home-assistant/core/pull/121877 +[#121878]: https://github.com/home-assistant/core/pull/121878 +[#121918]: https://github.com/home-assistant/core/pull/121918 +[#121943]: https://github.com/home-assistant/core/pull/121943 +[#121969]: https://github.com/home-assistant/core/pull/121969 +[#122193]: https://github.com/home-assistant/core/pull/122193 +[#122235]: https://github.com/home-assistant/core/pull/122235 +[#122320]: https://github.com/home-assistant/core/pull/122320 +[#122415]: https://github.com/home-assistant/core/pull/122415 +[#122460]: https://github.com/home-assistant/core/pull/122460 +[#122477]: https://github.com/home-assistant/core/pull/122477 +[#122510]: https://github.com/home-assistant/core/pull/122510 +[#122514]: https://github.com/home-assistant/core/pull/122514 +[#122518]: https://github.com/home-assistant/core/pull/122518 +[#122526]: https://github.com/home-assistant/core/pull/122526 +[#122554]: https://github.com/home-assistant/core/pull/122554 +[#122575]: https://github.com/home-assistant/core/pull/122575 +[#122636]: https://github.com/home-assistant/core/pull/122636 +[#122748]: https://github.com/home-assistant/core/pull/122748 +[#122771]: https://github.com/home-assistant/core/pull/122771 +[#122797]: https://github.com/home-assistant/core/pull/122797 +[#122816]: https://github.com/home-assistant/core/pull/122816 +[#122868]: https://github.com/home-assistant/core/pull/122868 +[#122871]: https://github.com/home-assistant/core/pull/122871 +[#122875]: https://github.com/home-assistant/core/pull/122875 +[#122895]: https://github.com/home-assistant/core/pull/122895 +[#122915]: https://github.com/home-assistant/core/pull/122915 +[#122922]: https://github.com/home-assistant/core/pull/122922 +[#122928]: https://github.com/home-assistant/core/pull/122928 +[#122943]: https://github.com/home-assistant/core/pull/122943 +[#122945]: https://github.com/home-assistant/core/pull/122945 +[#122953]: https://github.com/home-assistant/core/pull/122953 +[#122974]: https://github.com/home-assistant/core/pull/122974 +[#122975]: https://github.com/home-assistant/core/pull/122975 +[#122978]: https://github.com/home-assistant/core/pull/122978 +[#122982]: https://github.com/home-assistant/core/pull/122982 +[#122983]: https://github.com/home-assistant/core/pull/122983 +[#122994]: https://github.com/home-assistant/core/pull/122994 +[#122995]: https://github.com/home-assistant/core/pull/122995 +[#122996]: https://github.com/home-assistant/core/pull/122996 +[#123000]: https://github.com/home-assistant/core/pull/123000 +[#123002]: https://github.com/home-assistant/core/pull/123002 +[#123004]: https://github.com/home-assistant/core/pull/123004 +[#123009]: https://github.com/home-assistant/core/pull/123009 +[#123019]: https://github.com/home-assistant/core/pull/123019 +[#123021]: https://github.com/home-assistant/core/pull/123021 +[#123032]: https://github.com/home-assistant/core/pull/123032 +[#123042]: https://github.com/home-assistant/core/pull/123042 +[#123045]: https://github.com/home-assistant/core/pull/123045 +[#123050]: https://github.com/home-assistant/core/pull/123050 +[#123052]: https://github.com/home-assistant/core/pull/123052 +[#123058]: https://github.com/home-assistant/core/pull/123058 +[#123064]: https://github.com/home-assistant/core/pull/123064 +[#123065]: https://github.com/home-assistant/core/pull/123065 +[#123067]: https://github.com/home-assistant/core/pull/123067 +[#123070]: https://github.com/home-assistant/core/pull/123070 +[#123073]: https://github.com/home-assistant/core/pull/123073 +[#123075]: https://github.com/home-assistant/core/pull/123075 +[#123078]: https://github.com/home-assistant/core/pull/123078 +[#123087]: https://github.com/home-assistant/core/pull/123087 +[#123094]: https://github.com/home-assistant/core/pull/123094 +[#123095]: https://github.com/home-assistant/core/pull/123095 +[#123096]: https://github.com/home-assistant/core/pull/123096 +[#123097]: https://github.com/home-assistant/core/pull/123097 +[#123098]: https://github.com/home-assistant/core/pull/123098 +[#123122]: https://github.com/home-assistant/core/pull/123122 +[#123124]: https://github.com/home-assistant/core/pull/123124 +[#123126]: https://github.com/home-assistant/core/pull/123126 +[#123127]: https://github.com/home-assistant/core/pull/123127 +[#123138]: https://github.com/home-assistant/core/pull/123138 +[#123139]: https://github.com/home-assistant/core/pull/123139 +[#123141]: https://github.com/home-assistant/core/pull/123141 +[#123142]: https://github.com/home-assistant/core/pull/123142 +[#123148]: https://github.com/home-assistant/core/pull/123148 +[#123152]: https://github.com/home-assistant/core/pull/123152 +[#123157]: https://github.com/home-assistant/core/pull/123157 +[#123158]: https://github.com/home-assistant/core/pull/123158 +[#123170]: https://github.com/home-assistant/core/pull/123170 +[#123173]: https://github.com/home-assistant/core/pull/123173 +[#123174]: https://github.com/home-assistant/core/pull/123174 +[#123178]: https://github.com/home-assistant/core/pull/123178 +[#123180]: https://github.com/home-assistant/core/pull/123180 +[#123185]: https://github.com/home-assistant/core/pull/123185 +[#123197]: https://github.com/home-assistant/core/pull/123197 +[#123198]: https://github.com/home-assistant/core/pull/123198 +[#123199]: https://github.com/home-assistant/core/pull/123199 +[#123201]: https://github.com/home-assistant/core/pull/123201 +[#123203]: https://github.com/home-assistant/core/pull/123203 +[#123209]: https://github.com/home-assistant/core/pull/123209 +[#123218]: https://github.com/home-assistant/core/pull/123218 +[#123225]: https://github.com/home-assistant/core/pull/123225 +[#123237]: https://github.com/home-assistant/core/pull/123237 +[#123238]: https://github.com/home-assistant/core/pull/123238 +[#123240]: https://github.com/home-assistant/core/pull/123240 +[#123243]: https://github.com/home-assistant/core/pull/123243 +[#123245]: https://github.com/home-assistant/core/pull/123245 +[#123248]: https://github.com/home-assistant/core/pull/123248 +[#123260]: https://github.com/home-assistant/core/pull/123260 +[#123268]: https://github.com/home-assistant/core/pull/123268 +[#123272]: https://github.com/home-assistant/core/pull/123272 +[#123273]: https://github.com/home-assistant/core/pull/123273 +[#123280]: https://github.com/home-assistant/core/pull/123280 +[#123287]: https://github.com/home-assistant/core/pull/123287 +[#123301]: https://github.com/home-assistant/core/pull/123301 +[#123324]: https://github.com/home-assistant/core/pull/123324 +[#123335]: https://github.com/home-assistant/core/pull/123335 +[#123349]: https://github.com/home-assistant/core/pull/123349 +[#123351]: https://github.com/home-assistant/core/pull/123351 +[#123353]: https://github.com/home-assistant/core/pull/123353 +[#123354]: https://github.com/home-assistant/core/pull/123354 +[#123356]: https://github.com/home-assistant/core/pull/123356 +[#123369]: https://github.com/home-assistant/core/pull/123369 +[#123383]: https://github.com/home-assistant/core/pull/123383 +[#123395]: https://github.com/home-assistant/core/pull/123395 +[#123402]: https://github.com/home-assistant/core/pull/123402 +[#123408]: https://github.com/home-assistant/core/pull/123408 +[#123410]: https://github.com/home-assistant/core/pull/123410 +[#123424]: https://github.com/home-assistant/core/pull/123424 +[#123428]: https://github.com/home-assistant/core/pull/123428 +[#123434]: https://github.com/home-assistant/core/pull/123434 +[#123436]: https://github.com/home-assistant/core/pull/123436 +[#123453]: https://github.com/home-assistant/core/pull/123453 +[#123461]: https://github.com/home-assistant/core/pull/123461 +[#123465]: https://github.com/home-assistant/core/pull/123465 +[#123466]: https://github.com/home-assistant/core/pull/123466 +[#123467]: https://github.com/home-assistant/core/pull/123467 +[#123471]: https://github.com/home-assistant/core/pull/123471 +[#123481]: https://github.com/home-assistant/core/pull/123481 +[#123488]: https://github.com/home-assistant/core/pull/123488 +[#123489]: https://github.com/home-assistant/core/pull/123489 +[#123500]: https://github.com/home-assistant/core/pull/123500 +[#123505]: https://github.com/home-assistant/core/pull/123505 +[#123515]: https://github.com/home-assistant/core/pull/123515 +[#123521]: https://github.com/home-assistant/core/pull/123521 +[#123522]: https://github.com/home-assistant/core/pull/123522 +[#123523]: https://github.com/home-assistant/core/pull/123523 +[#123531]: https://github.com/home-assistant/core/pull/123531 +[#123532]: https://github.com/home-assistant/core/pull/123532 +[#123534]: https://github.com/home-assistant/core/pull/123534 +[#123540]: https://github.com/home-assistant/core/pull/123540 +[#123541]: https://github.com/home-assistant/core/pull/123541 +[#123544]: https://github.com/home-assistant/core/pull/123544 +[#123545]: https://github.com/home-assistant/core/pull/123545 +[#123546]: https://github.com/home-assistant/core/pull/123546 +[#123551]: https://github.com/home-assistant/core/pull/123551 +[#123579]: https://github.com/home-assistant/core/pull/123579 +[#123587]: https://github.com/home-assistant/core/pull/123587 +[#123588]: https://github.com/home-assistant/core/pull/123588 +[#123589]: https://github.com/home-assistant/core/pull/123589 +[#123592]: https://github.com/home-assistant/core/pull/123592 +[#123594]: https://github.com/home-assistant/core/pull/123594 +[#123605]: https://github.com/home-assistant/core/pull/123605 +[#123606]: https://github.com/home-assistant/core/pull/123606 +[#123607]: https://github.com/home-assistant/core/pull/123607 +[#123608]: https://github.com/home-assistant/core/pull/123608 +[#123613]: https://github.com/home-assistant/core/pull/123613 +[#123616]: https://github.com/home-assistant/core/pull/123616 +[#123631]: https://github.com/home-assistant/core/pull/123631 +[#123634]: https://github.com/home-assistant/core/pull/123634 +[#123642]: https://github.com/home-assistant/core/pull/123642 +[#123643]: https://github.com/home-assistant/core/pull/123643 +[#123644]: https://github.com/home-assistant/core/pull/123644 +[#123645]: https://github.com/home-assistant/core/pull/123645 +[#123646]: https://github.com/home-assistant/core/pull/123646 +[#123648]: https://github.com/home-assistant/core/pull/123648 +[#123650]: https://github.com/home-assistant/core/pull/123650 +[#123652]: https://github.com/home-assistant/core/pull/123652 +[#123656]: https://github.com/home-assistant/core/pull/123656 +[#123660]: https://github.com/home-assistant/core/pull/123660 +[#123661]: https://github.com/home-assistant/core/pull/123661 +[#123662]: https://github.com/home-assistant/core/pull/123662 +[#123663]: https://github.com/home-assistant/core/pull/123663 +[#123664]: https://github.com/home-assistant/core/pull/123664 +[#123666]: https://github.com/home-assistant/core/pull/123666 +[#123667]: https://github.com/home-assistant/core/pull/123667 +[#123668]: https://github.com/home-assistant/core/pull/123668 +[#123670]: https://github.com/home-assistant/core/pull/123670 +[#123671]: https://github.com/home-assistant/core/pull/123671 +[#123672]: https://github.com/home-assistant/core/pull/123672 +[#123673]: https://github.com/home-assistant/core/pull/123673 +[#123674]: https://github.com/home-assistant/core/pull/123674 +[#123675]: https://github.com/home-assistant/core/pull/123675 +[#123676]: https://github.com/home-assistant/core/pull/123676 +[#123677]: https://github.com/home-assistant/core/pull/123677 +[#123678]: https://github.com/home-assistant/core/pull/123678 +[#123679]: https://github.com/home-assistant/core/pull/123679 +[#123680]: https://github.com/home-assistant/core/pull/123680 +[#123682]: https://github.com/home-assistant/core/pull/123682 +[#123683]: https://github.com/home-assistant/core/pull/123683 +[#123685]: https://github.com/home-assistant/core/pull/123685 +[#123686]: https://github.com/home-assistant/core/pull/123686 +[#123687]: https://github.com/home-assistant/core/pull/123687 +[#123688]: https://github.com/home-assistant/core/pull/123688 +[#123689]: https://github.com/home-assistant/core/pull/123689 +[#123690]: https://github.com/home-assistant/core/pull/123690 +[#123691]: https://github.com/home-assistant/core/pull/123691 +[#123693]: https://github.com/home-assistant/core/pull/123693 +[#123694]: https://github.com/home-assistant/core/pull/123694 +[#123695]: https://github.com/home-assistant/core/pull/123695 +[#123696]: https://github.com/home-assistant/core/pull/123696 +[#123697]: https://github.com/home-assistant/core/pull/123697 +[#123699]: https://github.com/home-assistant/core/pull/123699 +[#123701]: https://github.com/home-assistant/core/pull/123701 +[#123702]: https://github.com/home-assistant/core/pull/123702 +[#123706]: https://github.com/home-assistant/core/pull/123706 +[#123709]: https://github.com/home-assistant/core/pull/123709 +[#123710]: https://github.com/home-assistant/core/pull/123710 +[#123712]: https://github.com/home-assistant/core/pull/123712 +[#123717]: https://github.com/home-assistant/core/pull/123717 +[#123718]: https://github.com/home-assistant/core/pull/123718 +[#123722]: https://github.com/home-assistant/core/pull/123722 +[#123723]: https://github.com/home-assistant/core/pull/123723 +[#123724]: https://github.com/home-assistant/core/pull/123724 +[#123725]: https://github.com/home-assistant/core/pull/123725 +[#123727]: https://github.com/home-assistant/core/pull/123727 +[#123734]: https://github.com/home-assistant/core/pull/123734 +[#123740]: https://github.com/home-assistant/core/pull/123740 +[#123741]: https://github.com/home-assistant/core/pull/123741 +[#123753]: https://github.com/home-assistant/core/pull/123753 +[#123756]: https://github.com/home-assistant/core/pull/123756 +[#123759]: https://github.com/home-assistant/core/pull/123759 +[#123766]: https://github.com/home-assistant/core/pull/123766 +[#123767]: https://github.com/home-assistant/core/pull/123767 +[#123768]: https://github.com/home-assistant/core/pull/123768 +[#123770]: https://github.com/home-assistant/core/pull/123770 +[#123771]: https://github.com/home-assistant/core/pull/123771 +[#123772]: https://github.com/home-assistant/core/pull/123772 +[#123773]: https://github.com/home-assistant/core/pull/123773 +[#123774]: https://github.com/home-assistant/core/pull/123774 +[#123775]: https://github.com/home-assistant/core/pull/123775 +[#123777]: https://github.com/home-assistant/core/pull/123777 +[#123780]: https://github.com/home-assistant/core/pull/123780 +[#123783]: https://github.com/home-assistant/core/pull/123783 +[#123784]: https://github.com/home-assistant/core/pull/123784 +[#123785]: https://github.com/home-assistant/core/pull/123785 +[#123786]: https://github.com/home-assistant/core/pull/123786 +[#123787]: https://github.com/home-assistant/core/pull/123787 +[#123789]: https://github.com/home-assistant/core/pull/123789 +[#123792]: https://github.com/home-assistant/core/pull/123792 +[#123793]: https://github.com/home-assistant/core/pull/123793 +[#123794]: https://github.com/home-assistant/core/pull/123794 +[#123795]: https://github.com/home-assistant/core/pull/123795 +[#123798]: https://github.com/home-assistant/core/pull/123798 +[#123800]: https://github.com/home-assistant/core/pull/123800 +[#123807]: https://github.com/home-assistant/core/pull/123807 +[#123808]: https://github.com/home-assistant/core/pull/123808 +[#123811]: https://github.com/home-assistant/core/pull/123811 +[#123812]: https://github.com/home-assistant/core/pull/123812 +[#123813]: https://github.com/home-assistant/core/pull/123813 +[#123814]: https://github.com/home-assistant/core/pull/123814 +[#123816]: https://github.com/home-assistant/core/pull/123816 +[#123819]: https://github.com/home-assistant/core/pull/123819 +[#123826]: https://github.com/home-assistant/core/pull/123826 +[#123829]: https://github.com/home-assistant/core/pull/123829 +[#123832]: https://github.com/home-assistant/core/pull/123832 +[#123842]: https://github.com/home-assistant/core/pull/123842 +[#123848]: https://github.com/home-assistant/core/pull/123848 +[#123851]: https://github.com/home-assistant/core/pull/123851 +[#123853]: https://github.com/home-assistant/core/pull/123853 +[#123859]: https://github.com/home-assistant/core/pull/123859 +[#123862]: https://github.com/home-assistant/core/pull/123862 +[#123866]: https://github.com/home-assistant/core/pull/123866 +[#123867]: https://github.com/home-assistant/core/pull/123867 +[#123871]: https://github.com/home-assistant/core/pull/123871 +[#123872]: https://github.com/home-assistant/core/pull/123872 +[#123873]: https://github.com/home-assistant/core/pull/123873 +[#123874]: https://github.com/home-assistant/core/pull/123874 +[#123875]: https://github.com/home-assistant/core/pull/123875 +[#123877]: https://github.com/home-assistant/core/pull/123877 +[#123878]: https://github.com/home-assistant/core/pull/123878 +[#123879]: https://github.com/home-assistant/core/pull/123879 +[#123880]: https://github.com/home-assistant/core/pull/123880 +[#123881]: https://github.com/home-assistant/core/pull/123881 +[#123882]: https://github.com/home-assistant/core/pull/123882 +[#123883]: https://github.com/home-assistant/core/pull/123883 +[#123885]: https://github.com/home-assistant/core/pull/123885 +[#123886]: https://github.com/home-assistant/core/pull/123886 +[#123887]: https://github.com/home-assistant/core/pull/123887 +[#123888]: https://github.com/home-assistant/core/pull/123888 +[#123889]: https://github.com/home-assistant/core/pull/123889 +[#123890]: https://github.com/home-assistant/core/pull/123890 +[#123891]: https://github.com/home-assistant/core/pull/123891 +[#123892]: https://github.com/home-assistant/core/pull/123892 +[#123894]: https://github.com/home-assistant/core/pull/123894 +[#123895]: https://github.com/home-assistant/core/pull/123895 +[#123898]: https://github.com/home-assistant/core/pull/123898 +[#123900]: https://github.com/home-assistant/core/pull/123900 +[#123902]: https://github.com/home-assistant/core/pull/123902 +[#123905]: https://github.com/home-assistant/core/pull/123905 +[#123907]: https://github.com/home-assistant/core/pull/123907 +[#123909]: https://github.com/home-assistant/core/pull/123909 +[#123910]: https://github.com/home-assistant/core/pull/123910 +[#123911]: https://github.com/home-assistant/core/pull/123911 +[#123912]: https://github.com/home-assistant/core/pull/123912 +[#123913]: https://github.com/home-assistant/core/pull/123913 +[#123914]: https://github.com/home-assistant/core/pull/123914 +[#123915]: https://github.com/home-assistant/core/pull/123915 +[#123916]: https://github.com/home-assistant/core/pull/123916 +[#123917]: https://github.com/home-assistant/core/pull/123917 +[#123919]: https://github.com/home-assistant/core/pull/123919 +[#123920]: https://github.com/home-assistant/core/pull/123920 +[#123921]: https://github.com/home-assistant/core/pull/123921 +[#123922]: https://github.com/home-assistant/core/pull/123922 +[#123923]: https://github.com/home-assistant/core/pull/123923 +[#123925]: https://github.com/home-assistant/core/pull/123925 +[#123926]: https://github.com/home-assistant/core/pull/123926 +[#123927]: https://github.com/home-assistant/core/pull/123927 +[#123929]: https://github.com/home-assistant/core/pull/123929 +[#123932]: https://github.com/home-assistant/core/pull/123932 +[#123933]: https://github.com/home-assistant/core/pull/123933 +[#123936]: https://github.com/home-assistant/core/pull/123936 +[#123937]: https://github.com/home-assistant/core/pull/123937 +[#123939]: https://github.com/home-assistant/core/pull/123939 +[#123940]: https://github.com/home-assistant/core/pull/123940 +[#123941]: https://github.com/home-assistant/core/pull/123941 +[#123942]: https://github.com/home-assistant/core/pull/123942 +[#123943]: https://github.com/home-assistant/core/pull/123943 +[#123947]: https://github.com/home-assistant/core/pull/123947 +[#123957]: https://github.com/home-assistant/core/pull/123957 +[#123958]: https://github.com/home-assistant/core/pull/123958 +[#123959]: https://github.com/home-assistant/core/pull/123959 +[#123964]: https://github.com/home-assistant/core/pull/123964 +[#123966]: https://github.com/home-assistant/core/pull/123966 +[#123967]: https://github.com/home-assistant/core/pull/123967 +[#123968]: https://github.com/home-assistant/core/pull/123968 +[#123969]: https://github.com/home-assistant/core/pull/123969 +[#123971]: https://github.com/home-assistant/core/pull/123971 +[#123972]: https://github.com/home-assistant/core/pull/123972 +[#123973]: https://github.com/home-assistant/core/pull/123973 +[#123974]: https://github.com/home-assistant/core/pull/123974 +[#123977]: https://github.com/home-assistant/core/pull/123977 +[#123985]: https://github.com/home-assistant/core/pull/123985 +[#123990]: https://github.com/home-assistant/core/pull/123990 +[#123997]: https://github.com/home-assistant/core/pull/123997 +[#124001]: https://github.com/home-assistant/core/pull/124001 +[#124015]: https://github.com/home-assistant/core/pull/124015 +[#124017]: https://github.com/home-assistant/core/pull/124017 +[#124019]: https://github.com/home-assistant/core/pull/124019 +[#124020]: https://github.com/home-assistant/core/pull/124020 +[#124023]: https://github.com/home-assistant/core/pull/124023 +[#124029]: https://github.com/home-assistant/core/pull/124029 +[#124036]: https://github.com/home-assistant/core/pull/124036 +[#124037]: https://github.com/home-assistant/core/pull/124037 +[#124038]: https://github.com/home-assistant/core/pull/124038 +[#124039]: https://github.com/home-assistant/core/pull/124039 +[#124042]: https://github.com/home-assistant/core/pull/124042 +[#124043]: https://github.com/home-assistant/core/pull/124043 +[#124045]: https://github.com/home-assistant/core/pull/124045 +[#124046]: https://github.com/home-assistant/core/pull/124046 +[#124048]: https://github.com/home-assistant/core/pull/124048 +[#124049]: https://github.com/home-assistant/core/pull/124049 +[#124051]: https://github.com/home-assistant/core/pull/124051 +[#124053]: https://github.com/home-assistant/core/pull/124053 +[#124054]: https://github.com/home-assistant/core/pull/124054 +[#124056]: https://github.com/home-assistant/core/pull/124056 +[#124058]: https://github.com/home-assistant/core/pull/124058 +[#124059]: https://github.com/home-assistant/core/pull/124059 +[#124061]: https://github.com/home-assistant/core/pull/124061 +[#124062]: https://github.com/home-assistant/core/pull/124062 +[#124064]: https://github.com/home-assistant/core/pull/124064 +[#124065]: https://github.com/home-assistant/core/pull/124065 +[#124067]: https://github.com/home-assistant/core/pull/124067 +[#124069]: https://github.com/home-assistant/core/pull/124069 +[#124072]: https://github.com/home-assistant/core/pull/124072 +[#124074]: https://github.com/home-assistant/core/pull/124074 +[#124075]: https://github.com/home-assistant/core/pull/124075 +[#124076]: https://github.com/home-assistant/core/pull/124076 +[#124078]: https://github.com/home-assistant/core/pull/124078 +[#124082]: https://github.com/home-assistant/core/pull/124082 +[#124084]: https://github.com/home-assistant/core/pull/124084 +[#124101]: https://github.com/home-assistant/core/pull/124101 +[#124102]: https://github.com/home-assistant/core/pull/124102 +[#124106]: https://github.com/home-assistant/core/pull/124106 +[#124107]: https://github.com/home-assistant/core/pull/124107 +[#124108]: https://github.com/home-assistant/core/pull/124108 +[#124117]: https://github.com/home-assistant/core/pull/124117 +[#124120]: https://github.com/home-assistant/core/pull/124120 +[#124125]: https://github.com/home-assistant/core/pull/124125 +[#124126]: https://github.com/home-assistant/core/pull/124126 +[#124150]: https://github.com/home-assistant/core/pull/124150 +[#124151]: https://github.com/home-assistant/core/pull/124151 +[#124154]: https://github.com/home-assistant/core/pull/124154 +[#124159]: https://github.com/home-assistant/core/pull/124159 +[#124161]: https://github.com/home-assistant/core/pull/124161 +[#124165]: https://github.com/home-assistant/core/pull/124165 +[#124166]: https://github.com/home-assistant/core/pull/124166 +[#124173]: https://github.com/home-assistant/core/pull/124173 +[#124174]: https://github.com/home-assistant/core/pull/124174 +[#124175]: https://github.com/home-assistant/core/pull/124175 +[#124177]: https://github.com/home-assistant/core/pull/124177 +[#124187]: https://github.com/home-assistant/core/pull/124187 +[#124194]: https://github.com/home-assistant/core/pull/124194 +[#124197]: https://github.com/home-assistant/core/pull/124197 +[#124200]: https://github.com/home-assistant/core/pull/124200 +[#124202]: https://github.com/home-assistant/core/pull/124202 +[#124203]: https://github.com/home-assistant/core/pull/124203 +[#124204]: https://github.com/home-assistant/core/pull/124204 +[#124205]: https://github.com/home-assistant/core/pull/124205 +[#124206]: https://github.com/home-assistant/core/pull/124206 +[#124207]: https://github.com/home-assistant/core/pull/124207 +[#124209]: https://github.com/home-assistant/core/pull/124209 +[#124210]: https://github.com/home-assistant/core/pull/124210 +[#124211]: https://github.com/home-assistant/core/pull/124211 +[#124213]: https://github.com/home-assistant/core/pull/124213 +[#124215]: https://github.com/home-assistant/core/pull/124215 +[#124216]: https://github.com/home-assistant/core/pull/124216 +[#124219]: https://github.com/home-assistant/core/pull/124219 +[#124220]: https://github.com/home-assistant/core/pull/124220 +[#124222]: https://github.com/home-assistant/core/pull/124222 +[#124223]: https://github.com/home-assistant/core/pull/124223 +[#124224]: https://github.com/home-assistant/core/pull/124224 +[#124225]: https://github.com/home-assistant/core/pull/124225 +[#124226]: https://github.com/home-assistant/core/pull/124226 +[#124227]: https://github.com/home-assistant/core/pull/124227 +[#124231]: https://github.com/home-assistant/core/pull/124231 +[#124234]: https://github.com/home-assistant/core/pull/124234 +[#124237]: https://github.com/home-assistant/core/pull/124237 +[#124238]: https://github.com/home-assistant/core/pull/124238 +[#124240]: https://github.com/home-assistant/core/pull/124240 +[#124243]: https://github.com/home-assistant/core/pull/124243 +[#124249]: https://github.com/home-assistant/core/pull/124249 +[#124250]: https://github.com/home-assistant/core/pull/124250 +[#124253]: https://github.com/home-assistant/core/pull/124253 +[#124261]: https://github.com/home-assistant/core/pull/124261 +[#124262]: https://github.com/home-assistant/core/pull/124262 +[#124263]: https://github.com/home-assistant/core/pull/124263 +[#124266]: https://github.com/home-assistant/core/pull/124266 +[#124270]: https://github.com/home-assistant/core/pull/124270 +[#124272]: https://github.com/home-assistant/core/pull/124272 +[#124274]: https://github.com/home-assistant/core/pull/124274 +[#124275]: https://github.com/home-assistant/core/pull/124275 +[#124277]: https://github.com/home-assistant/core/pull/124277 +[#124281]: https://github.com/home-assistant/core/pull/124281 +[#124283]: https://github.com/home-assistant/core/pull/124283 +[#124284]: https://github.com/home-assistant/core/pull/124284 +[#124285]: https://github.com/home-assistant/core/pull/124285 +[#124286]: https://github.com/home-assistant/core/pull/124286 +[#124288]: https://github.com/home-assistant/core/pull/124288 +[#124289]: https://github.com/home-assistant/core/pull/124289 +[#124292]: https://github.com/home-assistant/core/pull/124292 +[#124293]: https://github.com/home-assistant/core/pull/124293 +[#124302]: https://github.com/home-assistant/core/pull/124302 +[#124307]: https://github.com/home-assistant/core/pull/124307 +[#124308]: https://github.com/home-assistant/core/pull/124308 +[#124310]: https://github.com/home-assistant/core/pull/124310 +[#124312]: https://github.com/home-assistant/core/pull/124312 +[#124321]: https://github.com/home-assistant/core/pull/124321 +[#124322]: https://github.com/home-assistant/core/pull/124322 +[#124327]: https://github.com/home-assistant/core/pull/124327 +[#124329]: https://github.com/home-assistant/core/pull/124329 +[#124332]: https://github.com/home-assistant/core/pull/124332 +[#124334]: https://github.com/home-assistant/core/pull/124334 +[#124340]: https://github.com/home-assistant/core/pull/124340 +[#124341]: https://github.com/home-assistant/core/pull/124341 +[#124343]: https://github.com/home-assistant/core/pull/124343 +[#124344]: https://github.com/home-assistant/core/pull/124344 +[#124346]: https://github.com/home-assistant/core/pull/124346 +[#124348]: https://github.com/home-assistant/core/pull/124348 +[#124349]: https://github.com/home-assistant/core/pull/124349 +[#124350]: https://github.com/home-assistant/core/pull/124350 +[#124351]: https://github.com/home-assistant/core/pull/124351 +[#124352]: https://github.com/home-assistant/core/pull/124352 +[#124360]: https://github.com/home-assistant/core/pull/124360 +[#124361]: https://github.com/home-assistant/core/pull/124361 +[#124363]: https://github.com/home-assistant/core/pull/124363 +[#124365]: https://github.com/home-assistant/core/pull/124365 +[#124366]: https://github.com/home-assistant/core/pull/124366 +[#124384]: https://github.com/home-assistant/core/pull/124384 +[#124388]: https://github.com/home-assistant/core/pull/124388 +[#124390]: https://github.com/home-assistant/core/pull/124390 +[#124392]: https://github.com/home-assistant/core/pull/124392 +[#124393]: https://github.com/home-assistant/core/pull/124393 +[#124396]: https://github.com/home-assistant/core/pull/124396 +[#124398]: https://github.com/home-assistant/core/pull/124398 +[#124399]: https://github.com/home-assistant/core/pull/124399 +[#124406]: https://github.com/home-assistant/core/pull/124406 +[#124407]: https://github.com/home-assistant/core/pull/124407 +[#124415]: https://github.com/home-assistant/core/pull/124415 +[#124419]: https://github.com/home-assistant/core/pull/124419 +[#124423]: https://github.com/home-assistant/core/pull/124423 +[#124428]: https://github.com/home-assistant/core/pull/124428 +[#124429]: https://github.com/home-assistant/core/pull/124429 +[#124431]: https://github.com/home-assistant/core/pull/124431 +[#124432]: https://github.com/home-assistant/core/pull/124432 +[#124433]: https://github.com/home-assistant/core/pull/124433 +[#124437]: https://github.com/home-assistant/core/pull/124437 +[#124439]: https://github.com/home-assistant/core/pull/124439 +[#124445]: https://github.com/home-assistant/core/pull/124445 +[#124447]: https://github.com/home-assistant/core/pull/124447 +[#124451]: https://github.com/home-assistant/core/pull/124451 +[#124452]: https://github.com/home-assistant/core/pull/124452 +[#124455]: https://github.com/home-assistant/core/pull/124455 +[#124465]: https://github.com/home-assistant/core/pull/124465 +[#124474]: https://github.com/home-assistant/core/pull/124474 +[#124475]: https://github.com/home-assistant/core/pull/124475 +[#124478]: https://github.com/home-assistant/core/pull/124478 +[#124485]: https://github.com/home-assistant/core/pull/124485 +[#124486]: https://github.com/home-assistant/core/pull/124486 +[#124489]: https://github.com/home-assistant/core/pull/124489 +[#124490]: https://github.com/home-assistant/core/pull/124490 +[#124495]: https://github.com/home-assistant/core/pull/124495 +[#124496]: https://github.com/home-assistant/core/pull/124496 +[#124500]: https://github.com/home-assistant/core/pull/124500 +[#124512]: https://github.com/home-assistant/core/pull/124512 +[#124513]: https://github.com/home-assistant/core/pull/124513 +[#124514]: https://github.com/home-assistant/core/pull/124514 +[#124519]: https://github.com/home-assistant/core/pull/124519 +[#124522]: https://github.com/home-assistant/core/pull/124522 +[#124535]: https://github.com/home-assistant/core/pull/124535 +[#124536]: https://github.com/home-assistant/core/pull/124536 +[#124539]: https://github.com/home-assistant/core/pull/124539 +[#124542]: https://github.com/home-assistant/core/pull/124542 +[#124544]: https://github.com/home-assistant/core/pull/124544 +[#124545]: https://github.com/home-assistant/core/pull/124545 +[#124546]: https://github.com/home-assistant/core/pull/124546 +[#124548]: https://github.com/home-assistant/core/pull/124548 +[#124549]: https://github.com/home-assistant/core/pull/124549 +[#124554]: https://github.com/home-assistant/core/pull/124554 +[#124555]: https://github.com/home-assistant/core/pull/124555 +[#124557]: https://github.com/home-assistant/core/pull/124557 +[#124558]: https://github.com/home-assistant/core/pull/124558 +[#124566]: https://github.com/home-assistant/core/pull/124566 +[#124569]: https://github.com/home-assistant/core/pull/124569 +[#124573]: https://github.com/home-assistant/core/pull/124573 +[#124574]: https://github.com/home-assistant/core/pull/124574 +[#124576]: https://github.com/home-assistant/core/pull/124576 +[#124582]: https://github.com/home-assistant/core/pull/124582 +[#124587]: https://github.com/home-assistant/core/pull/124587 +[#124589]: https://github.com/home-assistant/core/pull/124589 +[#124590]: https://github.com/home-assistant/core/pull/124590 +[#124591]: https://github.com/home-assistant/core/pull/124591 +[#124595]: https://github.com/home-assistant/core/pull/124595 +[#124597]: https://github.com/home-assistant/core/pull/124597 +[#124601]: https://github.com/home-assistant/core/pull/124601 +[#124602]: https://github.com/home-assistant/core/pull/124602 +[#124604]: https://github.com/home-assistant/core/pull/124604 +[#124605]: https://github.com/home-assistant/core/pull/124605 +[#124606]: https://github.com/home-assistant/core/pull/124606 +[#124607]: https://github.com/home-assistant/core/pull/124607 +[#124608]: https://github.com/home-assistant/core/pull/124608 +[#124609]: https://github.com/home-assistant/core/pull/124609 +[#124613]: https://github.com/home-assistant/core/pull/124613 +[#124614]: https://github.com/home-assistant/core/pull/124614 +[#124615]: https://github.com/home-assistant/core/pull/124615 +[#124616]: https://github.com/home-assistant/core/pull/124616 +[#124619]: https://github.com/home-assistant/core/pull/124619 +[#124620]: https://github.com/home-assistant/core/pull/124620 +[#124624]: https://github.com/home-assistant/core/pull/124624 +[#124625]: https://github.com/home-assistant/core/pull/124625 +[#124637]: https://github.com/home-assistant/core/pull/124637 +[#124639]: https://github.com/home-assistant/core/pull/124639 +[#124641]: https://github.com/home-assistant/core/pull/124641 +[#124645]: https://github.com/home-assistant/core/pull/124645 +[#124646]: https://github.com/home-assistant/core/pull/124646 +[#124648]: https://github.com/home-assistant/core/pull/124648 +[#124651]: https://github.com/home-assistant/core/pull/124651 +[#124654]: https://github.com/home-assistant/core/pull/124654 +[#124656]: https://github.com/home-assistant/core/pull/124656 +[#124658]: https://github.com/home-assistant/core/pull/124658 +[#124659]: https://github.com/home-assistant/core/pull/124659 +[#124660]: https://github.com/home-assistant/core/pull/124660 +[#124667]: https://github.com/home-assistant/core/pull/124667 +[#124668]: https://github.com/home-assistant/core/pull/124668 +[#124672]: https://github.com/home-assistant/core/pull/124672 +[#124673]: https://github.com/home-assistant/core/pull/124673 +[#124674]: https://github.com/home-assistant/core/pull/124674 +[#124676]: https://github.com/home-assistant/core/pull/124676 +[#124677]: https://github.com/home-assistant/core/pull/124677 +[#124678]: https://github.com/home-assistant/core/pull/124678 +[#124679]: https://github.com/home-assistant/core/pull/124679 +[#124680]: https://github.com/home-assistant/core/pull/124680 +[#124681]: https://github.com/home-assistant/core/pull/124681 +[#124683]: https://github.com/home-assistant/core/pull/124683 +[#124684]: https://github.com/home-assistant/core/pull/124684 +[#124685]: https://github.com/home-assistant/core/pull/124685 +[#124688]: https://github.com/home-assistant/core/pull/124688 +[#124692]: https://github.com/home-assistant/core/pull/124692 +[#124694]: https://github.com/home-assistant/core/pull/124694 +[#124696]: https://github.com/home-assistant/core/pull/124696 +[#124697]: https://github.com/home-assistant/core/pull/124697 +[#124698]: https://github.com/home-assistant/core/pull/124698 +[#124699]: https://github.com/home-assistant/core/pull/124699 +[#124705]: https://github.com/home-assistant/core/pull/124705 +[#124706]: https://github.com/home-assistant/core/pull/124706 +[#124707]: https://github.com/home-assistant/core/pull/124707 +[#124709]: https://github.com/home-assistant/core/pull/124709 +[#124710]: https://github.com/home-assistant/core/pull/124710 +[#124711]: https://github.com/home-assistant/core/pull/124711 +[#124712]: https://github.com/home-assistant/core/pull/124712 +[#124713]: https://github.com/home-assistant/core/pull/124713 +[#124716]: https://github.com/home-assistant/core/pull/124716 +[#124721]: https://github.com/home-assistant/core/pull/124721 +[#124722]: https://github.com/home-assistant/core/pull/124722 +[#124729]: https://github.com/home-assistant/core/pull/124729 +[#124730]: https://github.com/home-assistant/core/pull/124730 +[#124734]: https://github.com/home-assistant/core/pull/124734 +[#124736]: https://github.com/home-assistant/core/pull/124736 +[#124737]: https://github.com/home-assistant/core/pull/124737 +[#124741]: https://github.com/home-assistant/core/pull/124741 +[#124742]: https://github.com/home-assistant/core/pull/124742 +[#124744]: https://github.com/home-assistant/core/pull/124744 +[#124746]: https://github.com/home-assistant/core/pull/124746 +[#124747]: https://github.com/home-assistant/core/pull/124747 +[#124749]: https://github.com/home-assistant/core/pull/124749 +[#124750]: https://github.com/home-assistant/core/pull/124750 +[#124754]: https://github.com/home-assistant/core/pull/124754 +[#124756]: https://github.com/home-assistant/core/pull/124756 +[#124758]: https://github.com/home-assistant/core/pull/124758 +[#124760]: https://github.com/home-assistant/core/pull/124760 +[#124761]: https://github.com/home-assistant/core/pull/124761 +[#124762]: https://github.com/home-assistant/core/pull/124762 +[#124763]: https://github.com/home-assistant/core/pull/124763 +[#124764]: https://github.com/home-assistant/core/pull/124764 +[#124765]: https://github.com/home-assistant/core/pull/124765 +[#124766]: https://github.com/home-assistant/core/pull/124766 +[#124767]: https://github.com/home-assistant/core/pull/124767 +[#124768]: https://github.com/home-assistant/core/pull/124768 +[#124769]: https://github.com/home-assistant/core/pull/124769 +[#124770]: https://github.com/home-assistant/core/pull/124770 +[#124771]: https://github.com/home-assistant/core/pull/124771 +[#124772]: https://github.com/home-assistant/core/pull/124772 +[#124773]: https://github.com/home-assistant/core/pull/124773 +[#124774]: https://github.com/home-assistant/core/pull/124774 +[#124776]: https://github.com/home-assistant/core/pull/124776 +[#124778]: https://github.com/home-assistant/core/pull/124778 +[#124780]: https://github.com/home-assistant/core/pull/124780 +[#124783]: https://github.com/home-assistant/core/pull/124783 +[#124784]: https://github.com/home-assistant/core/pull/124784 +[#124785]: https://github.com/home-assistant/core/pull/124785 +[#124787]: https://github.com/home-assistant/core/pull/124787 +[#124788]: https://github.com/home-assistant/core/pull/124788 +[#124790]: https://github.com/home-assistant/core/pull/124790 +[#124791]: https://github.com/home-assistant/core/pull/124791 +[#124792]: https://github.com/home-assistant/core/pull/124792 +[#124793]: https://github.com/home-assistant/core/pull/124793 +[#124794]: https://github.com/home-assistant/core/pull/124794 +[#124796]: https://github.com/home-assistant/core/pull/124796 +[#124802]: https://github.com/home-assistant/core/pull/124802 +[#124804]: https://github.com/home-assistant/core/pull/124804 +[#124807]: https://github.com/home-assistant/core/pull/124807 +[#124810]: https://github.com/home-assistant/core/pull/124810 +[#124815]: https://github.com/home-assistant/core/pull/124815 +[#124817]: https://github.com/home-assistant/core/pull/124817 +[#124819]: https://github.com/home-assistant/core/pull/124819 +[#124821]: https://github.com/home-assistant/core/pull/124821 +[#124837]: https://github.com/home-assistant/core/pull/124837 +[#124848]: https://github.com/home-assistant/core/pull/124848 +[#124852]: https://github.com/home-assistant/core/pull/124852 +[#124855]: https://github.com/home-assistant/core/pull/124855 +[#124858]: https://github.com/home-assistant/core/pull/124858 +[#124862]: https://github.com/home-assistant/core/pull/124862 +[#124864]: https://github.com/home-assistant/core/pull/124864 +[#124865]: https://github.com/home-assistant/core/pull/124865 +[#124872]: https://github.com/home-assistant/core/pull/124872 +[#124873]: https://github.com/home-assistant/core/pull/124873 +[#124874]: https://github.com/home-assistant/core/pull/124874 +[#124887]: https://github.com/home-assistant/core/pull/124887 +[#124889]: https://github.com/home-assistant/core/pull/124889 +[#124890]: https://github.com/home-assistant/core/pull/124890 +[#124891]: https://github.com/home-assistant/core/pull/124891 +[#124893]: https://github.com/home-assistant/core/pull/124893 +[#124895]: https://github.com/home-assistant/core/pull/124895 +[#124908]: https://github.com/home-assistant/core/pull/124908 +[#124911]: https://github.com/home-assistant/core/pull/124911 +[#124917]: https://github.com/home-assistant/core/pull/124917 +[#124924]: https://github.com/home-assistant/core/pull/124924 +[#124930]: https://github.com/home-assistant/core/pull/124930 +[#124935]: https://github.com/home-assistant/core/pull/124935 +[#124950]: https://github.com/home-assistant/core/pull/124950 +[#124955]: https://github.com/home-assistant/core/pull/124955 +[#124964]: https://github.com/home-assistant/core/pull/124964 +[#125010]: https://github.com/home-assistant/core/pull/125010 +[#125012]: https://github.com/home-assistant/core/pull/125012 +[#125014]: https://github.com/home-assistant/core/pull/125014 +[#125015]: https://github.com/home-assistant/core/pull/125015 +[#125017]: https://github.com/home-assistant/core/pull/125017 +[#125025]: https://github.com/home-assistant/core/pull/125025 +[#125029]: https://github.com/home-assistant/core/pull/125029 +[#125032]: https://github.com/home-assistant/core/pull/125032 +[#125035]: https://github.com/home-assistant/core/pull/125035 +[#125036]: https://github.com/home-assistant/core/pull/125036 +[#125049]: https://github.com/home-assistant/core/pull/125049 +[#125050]: https://github.com/home-assistant/core/pull/125050 +[#125055]: https://github.com/home-assistant/core/pull/125055 +[#125057]: https://github.com/home-assistant/core/pull/125057 +[#125058]: https://github.com/home-assistant/core/pull/125058 +[#125060]: https://github.com/home-assistant/core/pull/125060 +[#125061]: https://github.com/home-assistant/core/pull/125061 +[#125065]: https://github.com/home-assistant/core/pull/125065 +[#125093]: https://github.com/home-assistant/core/pull/125093 +[#125096]: https://github.com/home-assistant/core/pull/125096 +[#125102]: https://github.com/home-assistant/core/pull/125102 +[#125113]: https://github.com/home-assistant/core/pull/125113 +[#125114]: https://github.com/home-assistant/core/pull/125114 +[#125115]: https://github.com/home-assistant/core/pull/125115 +[#125119]: https://github.com/home-assistant/core/pull/125119 +[#125125]: https://github.com/home-assistant/core/pull/125125 +[#125140]: https://github.com/home-assistant/core/pull/125140 +[#125141]: https://github.com/home-assistant/core/pull/125141 +[#125142]: https://github.com/home-assistant/core/pull/125142 +[#125143]: https://github.com/home-assistant/core/pull/125143 +[#125153]: https://github.com/home-assistant/core/pull/125153 +[#125160]: https://github.com/home-assistant/core/pull/125160 +[#125162]: https://github.com/home-assistant/core/pull/125162 +[@ALERTua]: https://github.com/ALERTua +[@Anrijs]: https://github.com/Anrijs +[@AutonomousOwl]: https://github.com/AutonomousOwl +[@Bre77]: https://github.com/Bre77 +[@CFenner]: https://github.com/CFenner +[@CM000n]: https://github.com/CM000n +[@Chupaka]: https://github.com/Chupaka +[@DCSBL]: https://github.com/DCSBL +[@DeathCamel58]: https://github.com/DeathCamel58 +[@Djelibeybi]: https://github.com/Djelibeybi +[@EtienneSOU]: https://github.com/EtienneSOU +[@IceBotYT]: https://github.com/IceBotYT +[@JoramQ]: https://github.com/JoramQ +[@Jordi1990]: https://github.com/Jordi1990 +[@Kane610]: https://github.com/Kane610 +[@LaStrada]: https://github.com/LaStrada +[@LennP]: https://github.com/LennP +[@LouisChrist]: https://github.com/LouisChrist +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@Michal4K]: https://github.com/Michal4K +[@Moustachauve]: https://github.com/Moustachauve +[@NECH2004]: https://github.com/NECH2004 +[@Noltari]: https://github.com/Noltari +[@PaarthShah]: https://github.com/PaarthShah +[@PeteRager]: https://github.com/PeteRager +[@Petro31]: https://github.com/Petro31 +[@Shulyaka]: https://github.com/Shulyaka +[@TheJulianJES]: https://github.com/TheJulianJES +[@Thomas55555]: https://github.com/Thomas55555 +[@UltimateGG]: https://github.com/UltimateGG +[@ViViDboarder]: https://github.com/ViViDboarder +[@WebSpider]: https://github.com/WebSpider +[@YogevBokobza]: https://github.com/YogevBokobza +[@agners]: https://github.com/agners +[@alengwenus]: https://github.com/alengwenus +[@allenporter]: https://github.com/allenporter +[@amitfin]: https://github.com/amitfin +[@andrew-codechimp]: https://github.com/andrew-codechimp +[@arturpragacz]: https://github.com/arturpragacz +[@atmurray]: https://github.com/atmurray +[@austinmroczek]: https://github.com/austinmroczek +[@autinerd]: https://github.com/autinerd +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@barryvdh]: https://github.com/barryvdh +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@bramkragten]: https://github.com/bramkragten +[@c0ffeeca7]: https://github.com/c0ffeeca7 +[@carlos-sarmiento]: https://github.com/carlos-sarmiento +[@cdce8p]: https://github.com/cdce8p +[@cgtobi]: https://github.com/cgtobi +[@cmbuckley]: https://github.com/cmbuckley +[@cnico]: https://github.com/cnico +[@crevetor]: https://github.com/crevetor +[@dalinicus]: https://github.com/dalinicus +[@darkfader]: https://github.com/darkfader +[@dknowles2]: https://github.com/dknowles2 +[@dmulcahey]: https://github.com/dmulcahey +[@dontinelli]: https://github.com/dontinelli +[@dougiteixeira]: https://github.com/dougiteixeira +[@dudanov]: https://github.com/dudanov +[@dukeofphilberg]: https://github.com/dukeofphilberg +[@edenhaus]: https://github.com/edenhaus +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@erictrudeau]: https://github.com/erictrudeau +[@farmio]: https://github.com/farmio +[@flabbamann]: https://github.com/flabbamann +[@formatBCE]: https://github.com/formatBCE +[@fredrike]: https://github.com/fredrike +[@frenck]: https://github.com/frenck +[@functionpointer]: https://github.com/functionpointer +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@gunkaaa]: https://github.com/gunkaaa +[@haugene]: https://github.com/haugene +[@iloveicedgreentea]: https://github.com/iloveicedgreentea +[@jbergler]: https://github.com/jbergler +[@jbouwh]: https://github.com/jbouwh +[@jeeftor]: https://github.com/jeeftor +[@jesserockz]: https://github.com/jesserockz +[@jhollowe]: https://github.com/jhollowe +[@jjlawren]: https://github.com/jjlawren +[@jnsgruk]: https://github.com/jnsgruk +[@joostlek]: https://github.com/joostlek +[@jrieger]: https://github.com/jrieger +[@jschlyter]: https://github.com/jschlyter +[@kimdv]: https://github.com/kimdv +[@liudger]: https://github.com/liudger +[@marcelveldt]: https://github.com/marcelveldt +[@matrixd2]: https://github.com/matrixd2 +[@mawoka-myblock]: https://github.com/mawoka-myblock +[@miaucl]: https://github.com/miaucl +[@mib1185]: https://github.com/mib1185 +[@mikey0000]: https://github.com/mikey0000 +[@mj23000]: https://github.com/mj23000 +[@mjj4791]: https://github.com/mjj4791 +[@ms264556]: https://github.com/ms264556 +[@mvn23]: https://github.com/mvn23 +[@noahhusby]: https://github.com/noahhusby +[@pfrazer]: https://github.com/pfrazer +[@piitaya]: https://github.com/piitaya +[@puddly]: https://github.com/puddly +[@raman325]: https://github.com/raman325 +[@red-island]: https://github.com/red-island +[@rikroe]: https://github.com/rikroe +[@sdb9696]: https://github.com/sdb9696 +[@shaiu]: https://github.com/shaiu +[@spongebobberts]: https://github.com/spongebobberts +[@starkillerOG]: https://github.com/starkillerOG +[@swistakm]: https://github.com/swistakm +[@synesthesiam]: https://github.com/synesthesiam +[@tdfountain]: https://github.com/tdfountain +[@terencehonles]: https://github.com/terencehonles +[@thecode]: https://github.com/thecode +[@timmo001]: https://github.com/timmo001 +[@tl-sl]: https://github.com/tl-sl +[@tr4nt0r]: https://github.com/tr4nt0r +[@tronikos]: https://github.com/tronikos +[@vhkristof]: https://github.com/vhkristof +[@yangqian]: https://github.com/yangqian +[@yarikoptic]: https://github.com/yarikoptic +[@yuxincs]: https://github.com/yuxincs +[@zweckj]: https://github.com/zweckj +[@zxdavb]: https://github.com/zxdavb +[abode docs]: /integrations/abode/ +[acer_projector docs]: /integrations/acer_projector/ +[acmeda docs]: /integrations/acmeda/ +[advantage_air docs]: /integrations/advantage_air/ +[airgradient docs]: /integrations/airgradient/ +[airthings_ble docs]: /integrations/airthings_ble/ +[airvisual docs]: /integrations/airvisual/ +[airvisual_pro docs]: /integrations/airvisual_pro/ +[airzone docs]: /integrations/airzone/ +[airzone_cloud docs]: /integrations/airzone_cloud/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alert docs]: /integrations/alert/ +[alexa docs]: /integrations/alexa/ +[amazon_polly docs]: /integrations/amazon_polly/ +[ambient_network docs]: /integrations/ambient_network/ +[ambient_station docs]: /integrations/ambient_station/ +[androidtv_remote docs]: /integrations/androidtv_remote/ +[anthropic docs]: /integrations/anthropic/ +[apache_kafka docs]: /integrations/apache_kafka/ +[apcupsd docs]: /integrations/apcupsd/ +[apple_tv docs]: /integrations/apple_tv/ +[application_credentials docs]: /integrations/application_credentials/ +[apsystems docs]: /integrations/apsystems/ +[aquacell docs]: /integrations/aquacell/ +[aranet docs]: /integrations/aranet/ +[arest docs]: /integrations/arest/ +[artsound docs]: /integrations/artsound/ +[aseko_pool_live docs]: /integrations/aseko_pool_live/ +[assist_pipeline docs]: /integrations/assist_pipeline/ +[asterisk_cdr docs]: /integrations/asterisk_cdr/ +[asterisk_mbox docs]: /integrations/asterisk_mbox/ +[august docs]: /integrations/august/ +[aussie_broadband docs]: /integrations/aussie_broadband/ +[auth docs]: /integrations/auth/ +[automation docs]: /integrations/automation/ +[awair docs]: /integrations/awair/ +[axis docs]: /integrations/axis/ +[azure_devops docs]: /integrations/azure_devops/ +[bang_olufsen docs]: /integrations/bang_olufsen/ +[binary_sensor docs]: /integrations/binary_sensor/ +[blebox docs]: /integrations/blebox/ +[bluesound docs]: /integrations/bluesound/ +[bluetooth docs]: /integrations/bluetooth/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bring docs]: /integrations/bring/ +[broadlink docs]: /integrations/broadlink/ +[brother docs]: /integrations/brother/ +[bsblan docs]: /integrations/bsblan/ +[bthome docs]: /integrations/bthome/ +[buienradar docs]: /integrations/buienradar/ +[camera docs]: /integrations/camera/ +[canary docs]: /integrations/canary/ +[cert_expiry docs]: /integrations/cert_expiry/ +[chacon_dio docs]: /integrations/chacon_dio/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[command_line docs]: /integrations/command_line/ +[control4 docs]: /integrations/control4/ +[conversation docs]: /integrations/conversation/ +[coolmaster docs]: /integrations/coolmaster/ +[daikin docs]: /integrations/daikin/ +[deconz docs]: /integrations/deconz/ +[demo docs]: /integrations/demo/ +[denonavr docs]: /integrations/denonavr/ +[derivative docs]: /integrations/derivative/ +[dhcp docs]: /integrations/dhcp/ +[doods docs]: /integrations/doods/ +[doorbird docs]: /integrations/doorbird/ +[drop_connect docs]: /integrations/drop_connect/ +[dsmr docs]: /integrations/dsmr/ +[duckdns docs]: /integrations/duckdns/ +[dweet docs]: /integrations/dweet/ +[dynalite docs]: /integrations/dynalite/ +[eafm docs]: /integrations/eafm/ +[ecovacs docs]: /integrations/ecovacs/ +[elevenlabs docs]: /integrations/elevenlabs/ +[emby docs]: /integrations/emby/ +[emoncms docs]: /integrations/emoncms/ +[emulated_kasa docs]: /integrations/emulated_kasa/ +[energy docs]: /integrations/energy/ +[enigma2 docs]: /integrations/enigma2/ +[enocean docs]: /integrations/enocean/ +[esphome docs]: /integrations/esphome/ +[evohome docs]: /integrations/evohome/ +[ffmpeg docs]: /integrations/ffmpeg/ +[file docs]: /integrations/file/ +[filesize docs]: /integrations/filesize/ +[flic docs]: /integrations/flic/ +[flick_electric docs]: /integrations/flick_electric/ +[flipr docs]: /integrations/flipr/ +[flux docs]: /integrations/flux/ +[fritz docs]: /integrations/fritz/ +[fritzbox docs]: /integrations/fritzbox/ +[fronius docs]: /integrations/fronius/ +[frontend docs]: /integrations/frontend/ +[fujitsu_fglair docs]: /integrations/fujitsu_fglair/ +[fujitsu_hvac docs]: /integrations/fujitsu_hvac/ +[fully_kiosk docs]: /integrations/fully_kiosk/ +[fyta docs]: /integrations/fyta/ +[geonetnz_volcano docs]: /integrations/geonetnz_volcano/ +[google docs]: /integrations/google/ +[google_assistant docs]: /integrations/google_assistant/ +[google_translate docs]: /integrations/google_translate/ +[gpsd docs]: /integrations/gpsd/ +[habitica docs]: /integrations/habitica/ +[hassio docs]: /integrations/hassio/ +[heos docs]: /integrations/heos/ +[history docs]: /integrations/history/ +[history_stats docs]: /integrations/history_stats/ +[hive docs]: /integrations/hive/ +[homeassistant docs]: /integrations/homeassistant/ +[homeassistant_hardware docs]: /integrations/homeassistant_hardware/ +[homeassistant_sky_connect docs]: /integrations/homeassistant_sky_connect/ +[homeassistant_yellow docs]: /integrations/homeassistant_yellow/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[homewizard docs]: /integrations/homewizard/ +[homeworks docs]: /integrations/homeworks/ +[hp_ilo docs]: /integrations/hp_ilo/ +[husqvarna_automower docs]: /integrations/husqvarna_automower/ +[hydrawise docs]: /integrations/hydrawise/ +[influxdb docs]: /integrations/influxdb/ +[input_datetime docs]: /integrations/input_datetime/ +[insteon docs]: /integrations/insteon/ +[intellifire docs]: /integrations/intellifire/ +[intent_script docs]: /integrations/intent_script/ +[iotawatt docs]: /integrations/iotawatt/ +[iqvia docs]: /integrations/iqvia/ +[iron_os docs]: /integrations/iron_os/ +[ista_ecotrend docs]: /integrations/ista_ecotrend/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[jvc_projector docs]: /integrations/jvc_projector/ +[keba docs]: /integrations/keba/ +[kitchen_sink docs]: /integrations/kitchen_sink/ +[knocki docs]: /integrations/knocki/ +[knx docs]: /integrations/knx/ +[konnected docs]: /integrations/konnected/ +[lamarzocco docs]: /integrations/lamarzocco/ +[lametric docs]: /integrations/lametric/ +[landisgyr_heat_meter docs]: /integrations/landisgyr_heat_meter/ +[lawn_mower docs]: /integrations/lawn_mower/ +[lcn docs]: /integrations/lcn/ +[ld2410_ble docs]: /integrations/ld2410_ble/ +[led_ble docs]: /integrations/led_ble/ +[lifx docs]: /integrations/lifx/ +[linear_garage_door docs]: /integrations/linear_garage_door/ +[linkplay docs]: /integrations/linkplay/ +[locative docs]: /integrations/locative/ +[logbook docs]: /integrations/logbook/ +[logi_circle docs]: /integrations/logi_circle/ +[lupusec docs]: /integrations/lupusec/ +[lutron docs]: /integrations/lutron/ +[lyric docs]: /integrations/lyric/ +[madvr docs]: /integrations/madvr/ +[mailbox docs]: /integrations/mailbox/ +[mailgun docs]: /integrations/mailgun/ +[manual docs]: /integrations/manual/ +[manual_mqtt docs]: /integrations/manual_mqtt/ +[mastodon docs]: /integrations/mastodon/ +[matrix docs]: /integrations/matrix/ +[matter docs]: /integrations/matter/ +[mealie docs]: /integrations/mealie/ +[media_extractor docs]: /integrations/media_extractor/ +[media_player docs]: /integrations/media_player/ +[meteoalarm docs]: /integrations/meteoalarm/ +[mfi docs]: /integrations/mfi/ +[minio docs]: /integrations/minio/ +[mobile_app docs]: /integrations/mobile_app/ +[mochad docs]: /integrations/mochad/ +[modbus docs]: /integrations/modbus/ +[modern_forms docs]: /integrations/modern_forms/ +[motion_blinds docs]: /integrations/motion_blinds/ +[motionblinds_ble docs]: /integrations/motionblinds_ble/ +[mpd docs]: /integrations/mpd/ +[mqtt docs]: /integrations/mqtt/ +[mysensors docs]: /integrations/mysensors/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[nextcloud docs]: /integrations/nextcloud/ +[nextdns docs]: /integrations/nextdns/ +[nfandroidtv docs]: /integrations/nfandroidtv/ +[nice_go docs]: /integrations/nice_go/ +[notify docs]: /integrations/notify/ +[number docs]: /integrations/number/ +[nut docs]: /integrations/nut/ +[nx584 docs]: /integrations/nx584/ +[nzbget docs]: /integrations/nzbget/ +[ollama docs]: /integrations/ollama/ +[onkyo docs]: /integrations/onkyo/ +[onvif docs]: /integrations/onvif/ +[openai_conversation docs]: /integrations/openai_conversation/ +[openalpr_cloud docs]: /integrations/openalpr_cloud/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[openuv docs]: /integrations/openuv/ +[opower docs]: /integrations/opower/ +[otbr docs]: /integrations/otbr/ +[overkiz docs]: /integrations/overkiz/ +[owntracks docs]: /integrations/owntracks/ +[panasonic_viera docs]: /integrations/panasonic_viera/ +[permobil docs]: /integrations/permobil/ +[person docs]: /integrations/person/ +[pilight docs]: /integrations/pilight/ +[plex docs]: /integrations/plex/ +[point docs]: /integrations/point/ +[powerwall docs]: /integrations/powerwall/ +[private_ble_device docs]: /integrations/private_ble_device/ +[prometheus docs]: /integrations/prometheus/ +[proximity docs]: /integrations/proximity/ +[prusalink docs]: /integrations/prusalink/ +[ps4 docs]: /integrations/ps4/ +[purpleair docs]: /integrations/purpleair/ +[pyload docs]: /integrations/pyload/ +[python_script docs]: /integrations/python_script/ +[rainforest_eagle docs]: /integrations/rainforest_eagle/ +[rainmachine docs]: /integrations/rainmachine/ +[recollect_waste docs]: /integrations/recollect_waste/ +[recorder docs]: /integrations/recorder/ +[renault docs]: /integrations/renault/ +[reolink docs]: /integrations/reolink/ +[repairs docs]: /integrations/repairs/ +[rest docs]: /integrations/rest/ +[rest_command docs]: /integrations/rest_command/ +[rfxtrx docs]: /integrations/rfxtrx/ +[ridwell docs]: /integrations/ridwell/ +[ring docs]: /integrations/ring/ +[risco docs]: /integrations/risco/ +[roborock docs]: /integrations/roborock/ +[rpi_power docs]: /integrations/rpi_power/ +[rss_feed_template docs]: /integrations/rss_feed_template/ +[ruckus_unleashed docs]: /integrations/ruckus_unleashed/ +[russound_rio docs]: /integrations/russound_rio/ +[scrape docs]: /integrations/scrape/ +[sense docs]: /integrations/sense/ +[sensibo docs]: /integrations/sensibo/ +[sensor docs]: /integrations/sensor/ +[serial docs]: /integrations/serial/ +[seventeentrack docs]: /integrations/seventeentrack/ +[sharkiq docs]: /integrations/sharkiq/ +[shelly docs]: /integrations/shelly/ +[sia docs]: /integrations/sia/ +[simplefin docs]: /integrations/simplefin/ +[siren docs]: /integrations/siren/ +[sisyphus docs]: /integrations/sisyphus/ +[slack docs]: /integrations/slack/ +[sma docs]: /integrations/sma/ +[smart_meter_texas docs]: /integrations/smart_meter_texas/ +[smartthings docs]: /integrations/smartthings/ +[smarttub docs]: /integrations/smarttub/ +[smlight docs]: /integrations/smlight/ +[sms docs]: /integrations/sms/ +[snmp docs]: /integrations/snmp/ +[solarlog docs]: /integrations/solarlog/ +[soma docs]: /integrations/soma/ +[somfy_mylink docs]: /integrations/somfy_mylink/ +[songpal docs]: /integrations/songpal/ +[sonos docs]: /integrations/sonos/ +[spc docs]: /integrations/spc/ +[spotify docs]: /integrations/spotify/ +[sql docs]: /integrations/sql/ +[squeezebox docs]: /integrations/squeezebox/ +[ssdp docs]: /integrations/ssdp/ +[starline docs]: /integrations/starline/ +[stream docs]: /integrations/stream/ +[stt docs]: /integrations/stt/ +[subaru docs]: /integrations/subaru/ +[swiss_public_transport docs]: /integrations/swiss_public_transport/ +[switchbot docs]: /integrations/switchbot/ +[switcher_kis docs]: /integrations/switcher_kis/ +[synology_dsm docs]: /integrations/synology_dsm/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tado docs]: /integrations/tado/ +[tasmota docs]: /integrations/tasmota/ +[tcp docs]: /integrations/tcp/ +[technove docs]: /integrations/technove/ +[telegram_bot docs]: /integrations/telegram_bot/ +[telnet docs]: /integrations/telnet/ +[template docs]: /integrations/template/ +[tensorflow docs]: /integrations/tensorflow/ +[tesla_fleet docs]: /integrations/tesla_fleet/ +[teslemetry docs]: /integrations/teslemetry/ +[thread docs]: /integrations/thread/ +[tibber docs]: /integrations/tibber/ +[tile docs]: /integrations/tile/ +[tod docs]: /integrations/tod/ +[todoist docs]: /integrations/todoist/ +[toon docs]: /integrations/toon/ +[totalconnect docs]: /integrations/totalconnect/ +[touchlinesl docs]: /integrations/touchlinesl/ +[tplink docs]: /integrations/tplink/ +[traccar docs]: /integrations/traccar/ +[trafikverket_train docs]: /integrations/trafikverket_train/ +[tts docs]: /integrations/tts/ +[ukraine_alarm docs]: /integrations/ukraine_alarm/ +[unifi docs]: /integrations/unifi/ +[unifiprotect docs]: /integrations/unifiprotect/ +[universal docs]: /integrations/universal/ +[upb docs]: /integrations/upb/ +[upnp docs]: /integrations/upnp/ +[uvc docs]: /integrations/uvc/ +[vacuum docs]: /integrations/vacuum/ +[valve docs]: /integrations/valve/ +[velbus docs]: /integrations/velbus/ +[velux docs]: /integrations/velux/ +[venstar docs]: /integrations/venstar/ +[vesync docs]: /integrations/vesync/ +[vicare docs]: /integrations/vicare/ +[voip docs]: /integrations/voip/ +[water_heater docs]: /integrations/water_heater/ +[watttime docs]: /integrations/watttime/ +[weatherflow_cloud docs]: /integrations/weatherflow_cloud/ +[webostv docs]: /integrations/webostv/ +[websocket_api docs]: /integrations/websocket_api/ +[wemo docs]: /integrations/wemo/ +[wilight docs]: /integrations/wilight/ +[withings docs]: /integrations/withings/ +[xiaomi docs]: /integrations/xiaomi/ +[xiaomi_aqara docs]: /integrations/xiaomi_aqara/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yale docs]: /integrations/yale/ +[yale_home docs]: /integrations/yale_home/ +[yale_smart_alarm docs]: /integrations/yale_smart_alarm/ +[yandex_transport docs]: /integrations/yandex_transport/ +[yeelight docs]: /integrations/yeelight/ +[yolink docs]: /integrations/yolink/ +[zeroconf docs]: /integrations/zeroconf/ +[zerproc docs]: /integrations/zerproc/ +[zha docs]: /integrations/zha/ +[zwave_js docs]: /integrations/zwave_js/ \ No newline at end of file diff --git a/source/dashboards/badges.markdown b/source/dashboards/badges.markdown index 163819cbeae..4ee0e273412 100644 --- a/source/dashboards/badges.markdown +++ b/source/dashboards/badges.markdown @@ -71,11 +71,21 @@ show_entity_picture: description: If your entity has a picture, it will replace the icon. type: boolean default: false -display_type: +show_name: required: false - description: Type of display for the badge. It can be either `minimal` (icon only), `standard` (icon and state), or `complete` (icon, state, and name). - type: string - default: standard + description: Show the name + type: boolean + default: "true" +show_icon: + required: false + description: Show the icon + type: boolean + default: "true" +show_state: + required: false + description: Show the state. + type: boolean + default: "false" state_content: required: false description: > diff --git a/source/images/blog/2024-09/section-settings.png b/source/images/blog/2024-09/section-settings.png new file mode 100644 index 00000000000..9ce98d5036f Binary files /dev/null and b/source/images/blog/2024-09/section-settings.png differ diff --git a/source/images/blog/2024-09/sections-after.png b/source/images/blog/2024-09/sections-after.png new file mode 100644 index 00000000000..ae9d307201b Binary files /dev/null and b/source/images/blog/2024-09/sections-after.png differ diff --git a/source/images/blog/2024-09/sections-before.png b/source/images/blog/2024-09/sections-before.png new file mode 100644 index 00000000000..efe124dc378 Binary files /dev/null and b/source/images/blog/2024-09/sections-before.png differ diff --git a/source/images/blog/2024-09/social.jpg b/source/images/blog/2024-09/social.jpg new file mode 100644 index 00000000000..7c1df8a5e09 Binary files /dev/null and b/source/images/blog/2024-09/social.jpg differ diff --git a/source/images/blog/2024-09/untracked-energy.png b/source/images/blog/2024-09/untracked-energy.png new file mode 100644 index 00000000000..f170a2e8d1f Binary files /dev/null and b/source/images/blog/2024-09/untracked-energy.png differ diff --git a/source/images/dashboards/badge_configure.png b/source/images/dashboards/badge_configure.png index c0d9942e103..bef9122b908 100644 Binary files a/source/images/dashboards/badge_configure.png and b/source/images/dashboards/badge_configure.png differ