diff --git a/CODEOWNERS b/CODEOWNERS index 1cd47e58d2f..fa637d18601 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -354,7 +354,7 @@ source/_integrations/hive.markdown @Rendili @KJonline source/_integrations/hko.markdown @MisterCommand source/_integrations/hlk_sw16.markdown @jameshilliard source/_integrations/holiday.markdown @jrieger @gjohansson-ST -source/_integrations/home_connect.markdown @DavidMStraub +source/_integrations/home_connect.markdown @DavidMStraub @Diegorro98 source/_integrations/home_plus_control.markdown @cgtobi source/_integrations/homeassistant.markdown @home-assistant/core source/_integrations/homeassistant_alerts.markdown @home-assistant/core @@ -618,6 +618,7 @@ source/_integrations/ourgroceries.markdown @OnFreund source/_integrations/overkiz.markdown @imicknl @vlebourl @tetienne @nyroDev @tronix117 @alexfp14 source/_integrations/ovo_energy.markdown @timmo001 source/_integrations/p1_monitor.markdown @klaasnicolaas +source/_integrations/palazzetti.markdown @dotvav source/_integrations/panel_custom.markdown @home-assistant/frontend source/_integrations/pcs_lighting.markdown @gwww source/_integrations/peco.markdown @IceBotYT @@ -706,7 +707,7 @@ source/_integrations/rmvtransport.markdown @cgtobi source/_integrations/roborock.markdown @Lash-L source/_integrations/roku.markdown @ctalkington source/_integrations/romy.markdown @xeniter -source/_integrations/roomba.markdown @pschmitt @cyr-ius @shenxn @Xitee1 @Orhideous +source/_integrations/roomba.markdown @pschmitt @cyr-ius @shenxn @Orhideous source/_integrations/roon.markdown @pavoni source/_integrations/rpi_power.markdown @shenxn @swetoast source/_integrations/rss_feed_template.markdown @home-assistant/core @@ -795,11 +796,10 @@ source/_integrations/sonos.markdown @jjlawren @peterager source/_integrations/soundtouch.markdown @kroimon source/_integrations/spaceapi.markdown @fabaff source/_integrations/speedtestdotnet.markdown @rohankapoorcom @engrbm87 -source/_integrations/spider.markdown @peternijssen source/_integrations/splunk.markdown @Bre77 source/_integrations/spotify.markdown @frenck @joostlek source/_integrations/sql.markdown @gjohansson-ST @dougiteixeira -source/_integrations/squeezebox.markdown @rajlaud +source/_integrations/squeezebox.markdown @rajlaud @pssc @peteS-UK source/_integrations/srp_energy.markdown @briglx source/_integrations/starline.markdown @anonym-tsk source/_integrations/starlink.markdown @boswelja @@ -812,7 +812,7 @@ source/_integrations/stookwijzer.markdown @fwestenberg source/_integrations/stream.markdown @hunterjm @uvjustin @allenporter source/_integrations/stt.markdown @home-assistant/core source/_integrations/subaru.markdown @G-Two -source/_integrations/suez_water.markdown @ooii +source/_integrations/suez_water.markdown @ooii @jb101010-2 source/_integrations/sun.markdown @Swamp-Ig source/_integrations/sunweg.markdown @rokam source/_integrations/supla.markdown @mwegrzynek diff --git a/Gemfile b/Gemfile index 14098399bc0..71db3069a7a 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,6 @@ group :development do gem 'stringex', '2.8.6' # > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189 gem 'sassc', '2.1.0' - # 1.80.5 breaks the build gem 'sass-embedded', '1.80.6' gem 'rubocop', '1.68.0' gem 'ruby-lsp', '0.21.3' diff --git a/_config.yml b/_config.yml index baadd3287cc..67d3ee2ec79 100644 --- a/_config.yml +++ b/_config.yml @@ -107,9 +107,9 @@ social: # Home Assistant release details current_major_version: 2024 -current_minor_version: 10 -current_patch_version: 4 -date_released: 2024-10-25 +current_minor_version: 11 +current_patch_version: 0 +date_released: 2024-11-06 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_dashboards/entities.markdown b/source/_dashboards/entities.markdown index 6185487a423..3b95e8e033c 100644 --- a/source/_dashboards/entities.markdown +++ b/source/_dashboards/entities.markdown @@ -115,6 +115,10 @@ double_tap_action: required: false description: Action taken on row double tap. See [action documentation](/dashboards/actions/#double-tap-action). type: map +confirmation: + required: false + description: For entities that display a button element in the row (for example, button, lock, script), this option adds a confirmation dialog to the press of the button. See [options for confirmation](/dashboards/actions/#options-for-confirmation) for configuration options. + type: map {% endconfiguration %} ## Special row elements diff --git a/source/_dashboards/map.markdown b/source/_dashboards/map.markdown index e955f788317..eadd522b5a6 100644 --- a/source/_dashboards/map.markdown +++ b/source/_dashboards/map.markdown @@ -58,11 +58,11 @@ type: type: string entities: required: true - description: List of entity IDs or `entity` objects (see below). Either this or the `geo_location_sources` configuration option is required. + description: List of entity IDs or `entity` objects (see [below](#options-for-entities)). Either this or the `geo_location_sources` configuration option is required. type: list geo_location_sources: required: true - description: List of geolocation sources. All current entities with that source will be displayed on the map. See [Geolocation](/integrations/geo_location/) platform for valid sources. Set to `all` to use all available sources. Either this or the `entities` configuration option is required. + description: List of geolocation sources or `source` objects (see [below](#options-for-geolocation-sources)). All current entities with that source will be displayed on the map. See [Geolocation](/integrations/geo_location/) platform for valid sources. Set to `all` to use all available sources. Either this or the `entities` configuration option is required. type: list auto_fit: required: false @@ -134,6 +134,22 @@ focus: type: boolean {% endconfiguration %} +## Options for geolocation sources: + +If you define geolocation sources as objects instead of strings (by adding `source:` before the ID), you can add more customization and configuration. + +{% configuration %} +source: + required: true + description: Name of a geolocation source, or `all`. + type: string +focus: + required: false + default: true + description: When set to `false`, the entities of this source will not be considered for determining the default zoom or fit of the map. + type: boolean +{% endconfiguration %} + ## Examples ```yaml @@ -150,6 +166,8 @@ entities: type: map geo_location_sources: - nsw_rural_fire_service_feed + - source: gdacs + focus: false entities: - zone.home ``` diff --git a/source/_dashboards/masonry.markdown b/source/_dashboards/masonry.markdown index 6bbf31ccef2..efd7a12bea5 100644 --- a/source/_dashboards/masonry.markdown +++ b/source/_dashboards/masonry.markdown @@ -1,7 +1,7 @@ --- type: view title: Masonry view -sidebar_label: Masonry (default) +sidebar_label: Masonry description: "The default panel layout uses a masonry algorithm." related: - docs: /dashboards/panel/ @@ -10,14 +10,14 @@ related: title: Sidebar view --- -The masonry view is the default view type. +The masonry view sorts cards in columns based on their card size.

Screenshot of the masonry view Screenshot of the masonry view.

-Masonry sorts cards in columns based on their card size. The next card is placed below the smallest card on the dashboard. +Masonry sorts cards in columns based on size and places the next card below the smallest card on the dashboard.

Image showing how masonry arranges cards based on size. diff --git a/source/_dashboards/sections.markdown b/source/_dashboards/sections.markdown index 0cd8f945d62..7ef99bfe1b6 100644 --- a/source/_dashboards/sections.markdown +++ b/source/_dashboards/sections.markdown @@ -1,7 +1,7 @@ --- type: view -title: Sections (experimental) -sidebar_label: Sections (experimental) +title: Sections +sidebar_label: Sections (default) description: "Lets you organize your cards in sections on a grid." description: "The panel view shows a single card in the full width of the screen." related: @@ -27,16 +27,11 @@ You can group cards without using horizontal or vertical stack cards. A fully populated dashboard in Sections view layout

-{% note %} -The sections view was released beginning of March 2024 and is experimental! Do not build your daily dashboard on top of it yet! We are still collecting feedback.
-It is not possible to migrate dashboards into sections view. -{% endnote %} - ## Creating a sections view 1. If you have multiple dashboards, in the left sidebar, select the dashboard to which you want to add the sections view. 2. Follow the steps on [adding a new view](/dashboards/views/#adding-a-view-to-a-dashboard). - - Under **View type**, select **Sections (experimental)**. + - Under **View type**, select **Sections**. 3. Under **Max number of sections wide**, select the maximum number of columns you want to see in the new sections view. 4. Under **Dense section placement**, select if you want to allow the cards to be arranged automatically in order to fill gaps between cards. - This will remove some gaps, but it also means you have less control over the order of the cards. @@ -77,17 +72,17 @@ In the sections view, you can rearrange sections and cards by dragging them to a 1. To edit your dashboard, in the top right corner, select the edit {% icon "mdi:edit" %} button. 2. To rearrange sections, hold the move {% icon "mdi:cursor-move" %} button and move the card. -

- Rearranging sections by dragging - Rearranging sections by dragging -

+

+ Rearranging sections by dragging + Rearranging sections by dragging +

3. To rearrange cards, tap and hold the card and move it to your desired location. -

- Rearranging cards by dragging - Rearranging cards by dragging -

+

+ Rearranging cards by dragging + Rearranging cards by dragging +

## Show or hide section conditionally diff --git a/source/_dashboards/sidebar.markdown b/source/_dashboards/sidebar.markdown index 6fdcf0dad6b..208dc50e208 100644 --- a/source/_dashboards/sidebar.markdown +++ b/source/_dashboards/sidebar.markdown @@ -9,7 +9,7 @@ related: - docs: /dashboards/panel/ title: Panel view - docs: /dashboards/sections/ - title: Sections view (experimental) + title: Sections view (default) - docs: /dashboards/views/ title: About views --- diff --git a/source/_dashboards/todo-list.markdown b/source/_dashboards/todo-list.markdown index 195e86b9424..fc8fe961237 100644 --- a/source/_dashboards/todo-list.markdown +++ b/source/_dashboards/todo-list.markdown @@ -61,6 +61,11 @@ theme: required: false description: Override the used theme for this card with any loaded theme. For more information about themes, see the [frontend documentation](/integrations/frontend/). type: string +hide_completed: + required: false + description: Hide the completed items section in the card. + type: boolean + default: "false" {% endconfiguration %} ### Examples diff --git a/source/_dashboards/vertical-stack.markdown b/source/_dashboards/vertical-stack.markdown index 56212aec535..42fff9c454e 100644 --- a/source/_dashboards/vertical-stack.markdown +++ b/source/_dashboards/vertical-stack.markdown @@ -10,6 +10,11 @@ related: The vertical stack card allows you to group multiple cards so they always sit in the same column. +

+Screencast showing how to edit a dashboard customize a vertical stack card +Screencast showing how to edit a dashboard and customize a vertical stack card. +

+ {% include dashboard/edit_dashboard.md %} ## YAML configuration diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 5f7cde3e4ec..f61cc7ced25 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -92,18 +92,18 @@ - binary_sensors - term: Blueprint definition: >- - A blueprint is a script or automation configuration with certain parts - marked as configurable. This allows users to create multiple scripts or - automations based on the same blueprint, with each having its own + A blueprint is a script, automation or template entity configuration with certain parts + marked as configurable. This allows users to create multiple scripts, + automations or template entities based on the same blueprint, with each having its own configuration-specific settings. Blueprints are shared by the community on the [blueprints exchange](https://community.home-assistant.io/c/blueprints-exchange/53) in the forum. link: /docs/blueprint/ excerpt: >- - A blueprint is a script or automation configuration with certain parts - marked as configurable. This allows users to create multiple scripts or - automations based on the same blueprint, with each having its own + A blueprint is a script, automation or template entity configuration with certain parts + marked as configurable. This allows users to create multiple scripts, + automations or template entities based on the same blueprint, with each having its own configuration-specific settings. aliases: - blueprints diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 12b9e0871aa..58efcf35f8e 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -793,6 +793,34 @@ automation: offset: "-00:10:00" ``` +### Limited templates + +It's also possible to use [limited templates](/docs/configuration/templating/#limited-templates) for times. + +```yaml +blueprint: + input: + alarm: + name: Alarm + selector: + text: + hour: + name: Hour + selector: + number: + min: 0 + max: 24 + + trigger_variables: + my_alarm: !input alarm + my_hour: !input hour + trigger: + - platform: time + at: + - "sensor.{{ my_alarm | slugify }}_time" + - "{{ my_hour }}:30:00" +``` + ## Time pattern trigger With the time pattern trigger, you can match if the hour, minute or second of the current time matches a specific value. You can prefix the value with a `/` to match whenever the value is divisible by that number. You can specify `*` to match any value (when using the web interface this is required, the fields cannot be left empty). diff --git a/source/_docs/blueprint.markdown b/source/_docs/blueprint.markdown index eb07e05191c..1f46b3776ed 100644 --- a/source/_docs/blueprint.markdown +++ b/source/_docs/blueprint.markdown @@ -18,7 +18,7 @@ This section gives a high-level introduction to blueprints. To view a descriptio ## What is a blueprint? -A blueprint is a {% term script %} or {% term automation %} configuration with certain parts marked as configurable. This allows you to create different scripts or automations based on the same blueprint. +A blueprint is a {% term script %}, {% term automation %} or [template entity](/docs/integrations/template/) configuration with certain parts marked as configurable. This allows you to create different scripts, automations or template entities based on the same blueprint. Imagine you want to control lights based on motion. A blueprint provides the generic {% term automation %} framework, while letting you select one specific motion sensor as a {% term trigger %}, and the exact light to control. This blueprint makes it possible to create two automations. Each automation has their own configuration and act completely independently. Yet, they share some basic automation configuration so that you do not have to set this up every time. diff --git a/source/_docs/blueprint/schema.markdown b/source/_docs/blueprint/schema.markdown index 8c781932163..48c2769de64 100644 --- a/source/_docs/blueprint/schema.markdown +++ b/source/_docs/blueprint/schema.markdown @@ -57,7 +57,7 @@ description: domain: description: > The domain in which this blueprint is used. Currently, only - [`automation`](/docs/automation/yaml/) and `script` are supported. + [`automation`](/docs/automation/yaml/), `script` and [`template`](/docs/integrations/template/#using-blueprints) are supported. type: string required: true author: diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index abbb96ba990..8d4b5d22223 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -281,9 +281,9 @@ After each time a wait completes, either because the condition was met, the even | Variable | Description | | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `wait.completed` | Exists only after `wait_template`. `true` if the condition was met, `false` otherwise | -| `wait.trigger` | Exists only after `wait_for_trigger`. Contains information about which trigger fired. (See [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data).) Will be `none` if no trigger happened before timeout expired | +| `wait.completed` | `true` if the condition was met, `false` otherwise | | `wait.remaining` | Timeout remaining, or `none` if a timeout was not specified | +| `wait.trigger` | Exists only after `wait_for_trigger`. Contains information about which trigger fired. (See [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data).) Will be `none` if no trigger happened before timeout expired | This can be used to take different actions based on whether or not the condition was met, or to use more than one wait sequentially while implementing a single timeout overall. diff --git a/source/_integrations/airgradient.markdown b/source/_integrations/airgradient.markdown index 34539dbfc51..a760e9b67e8 100644 --- a/source/_integrations/airgradient.markdown +++ b/source/_integrations/airgradient.markdown @@ -14,6 +14,7 @@ ha_codeowners: ha_domain: airgradient ha_platforms: - button + - diagnostics - number - select - sensor diff --git a/source/_integrations/airzone.markdown b/source/_integrations/airzone.markdown index de16ab9bfb3..240410e1978 100644 --- a/source/_integrations/airzone.markdown +++ b/source/_integrations/airzone.markdown @@ -7,6 +7,7 @@ ha_category: - Climate - Select - Sensor + - Switch - Water heater ha_iot_class: Local Polling ha_config_flow: true @@ -17,6 +18,7 @@ ha_platforms: - diagnostics - select - sensor + - switch - water_heater ha_codeowners: - '@Noltari' @@ -97,6 +99,10 @@ For each Airzone zone (thermostat), the following *sensors* are created: | humidity | Current zone relative humidity. | | temperature | Current zone temperature. | +## Switch + +For each Airzone zone (thermostat), a *switch entity* is created. + ## Water heater For each Airzone device a *water heater entity* is created if supported. diff --git a/source/_integrations/airzone_cloud.markdown b/source/_integrations/airzone_cloud.markdown index 382fe8c5379..b51db8aa3fd 100644 --- a/source/_integrations/airzone_cloud.markdown +++ b/source/_integrations/airzone_cloud.markdown @@ -7,6 +7,7 @@ ha_category: - Climate - Select - Sensor + - Switch - Water heater ha_iot_class: Cloud Push ha_config_flow: true @@ -17,6 +18,7 @@ ha_platforms: - diagnostics - select - sensor + - switch - water_heater ha_codeowners: - '@Noltari' @@ -108,6 +110,10 @@ For each Airzone WebServer (HVAC Wi-Fi controller), the following *sensors* are | :------------------ | :------------------------------------------------- | | rssi | Wi-Fi RSSI. | +## Switch + +For each Airzone zone (thermostat), a switch entity is created to turn the thermostat on or off (without changing the HVAC mode). + ## Water heater For each Airzone device, a *water heater entity* is created if supported. diff --git a/source/_integrations/alarm_control_panel.mqtt.markdown b/source/_integrations/alarm_control_panel.mqtt.markdown index 05445561fd2..ca3da05d9d2 100644 --- a/source/_integrations/alarm_control_panel.mqtt.markdown +++ b/source/_integrations/alarm_control_panel.mqtt.markdown @@ -173,6 +173,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -239,6 +243,10 @@ payload_trigger: required: false type: string default: TRIGGER +platform: + description: Must be `alarm_control_panel`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -259,7 +267,7 @@ supported_features: type: list default: ["arm_home", "arm_away", "arm_night", "arm_vacation", "arm_custom_bypass", "trigger"] unique_id: - description: An ID that uniquely identifies this alarm panel. If two alarm panels have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this alarm panel. If two alarm panels have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/aosmith.markdown b/source/_integrations/aosmith.markdown index bc5466086af..fbde7c99b06 100644 --- a/source/_integrations/aosmith.markdown +++ b/source/_integrations/aosmith.markdown @@ -72,7 +72,7 @@ This table shows the supported operation modes. The available modes will depend ### Sensor The following sensor entities are available: -- Hot water availability (low, medium, or high) +- Hot water availability (percentage) - Energy usage ## Disclaimer diff --git a/source/_integrations/apache_kafka.markdown b/source/_integrations/apache_kafka.markdown index e8bfe7eb58e..414750ec58e 100644 --- a/source/_integrations/apache_kafka.markdown +++ b/source/_integrations/apache_kafka.markdown @@ -37,15 +37,15 @@ port: required: true type: integer username: - description: The username of Apache Kafka cluster for authentication. + description: The username of Apache Kafka cluster for SASL authentication. Required with `SASL_SSL` security protocol only. required: false type: string password: - description: The password of Apache Kafka cluster for authentication. + description: The password of Apache Kafka cluster for SASL authentication. Required with `SASL_SSL` security protocol only. required: false type: string security_protocol: - description: The protocol used to communicate with brokers. Use `SASL_SSL` for authentication. + description: The security protocol used to communicate with brokers. Use `SSL` for secure or `SASL_SSL` for secure with SASL authentication. (only `SASL_PLAINTEXT` SASL mechanism is supported) required: false default: PLAINTEXT type: string diff --git a/source/_integrations/awair.markdown b/source/_integrations/awair.markdown index e8f0bb6d188..1d34999af95 100644 --- a/source/_integrations/awair.markdown +++ b/source/_integrations/awair.markdown @@ -14,7 +14,6 @@ ha_platforms: - sensor ha_integration_type: integration ha_zeroconf: true -ha_dhcp: true --- The Awair integration will fetch data from your [Awair devices](https://getawair.com). diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown index b791220e774..67870e33c85 100644 --- a/source/_integrations/binary_sensor.mqtt.markdown +++ b/source/_integrations/binary_sensor.mqtt.markdown @@ -138,6 +138,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity/#generic-properties) of the entity. When set, the entity category must be `diagnostic` for sensors. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string expire_after: description: If set, it defines the number of seconds after the sensor's state expires, if it's not updated. After expiry, the sensor's state becomes `unavailable`. Default the sensors state never expires. required: false @@ -192,6 +196,10 @@ payload_on: required: false type: string default: "ON" +platform: + description: Must be `binary_sensor`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -202,7 +210,7 @@ state_topic: required: true type: string unique_id: - description: An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/bloomsky.markdown b/source/_integrations/bloomsky.markdown deleted file mode 100644 index 307b493fb0a..00000000000 --- a/source/_integrations/bloomsky.markdown +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: BloomSky -description: Instructions on how to integrate the BloomSky within Home Assistant. -ha_category: - - Binary sensor - - Camera - - Environment - - Sensor - - Weather -ha_release: 0.14 -ha_iot_class: Cloud Polling -ha_domain: bloomsky -ha_platforms: - - binary_sensor - - camera - - sensor -ha_integration_type: integration -related: - - docs: /docs/configuration/ - title: Configuration file ---- - -The **BloomSky** {% term integration %} allows you to access your [BloomSky](https://www.bloomsky.com/) weather stations. - -There is currently support for the following device types within Home Assistant: - -- [Binary sensor](#binary-sensor) -- [Camera](#camera) -- [Sensor](#sensor) - -## Setup - -Obtain your API key from your [BloomSky dashboard](https://dashboard.bloomsky.com). Click `developers` in the bottom left of the screen. - -## Configuration - -To integrate your BloomSky hub with Home Assistant, add the following section to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -bloomsky: - api_key: YOUR_API_KEY -``` - -{% configuration %} -api_key: - description: Your BloomSky API key. - required: true - type: string -{% endconfiguration %} - -## Binary sensor - -The `bloomsky` binary sensor platform allows you to get data from your BloomSky device. - -To get your BloomSky binary sensors working with Home Assistant, follow the instructions above first. - -### Configuration - -To use your BloomSky binary sensor in your installation, add the following to your {% term "`configuration.yaml`" %} file. - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: bloomsky - monitored_conditions: - - Night - - Rain -``` - -{% configuration %} -monitored_conditions: - description: "The sensors that you wish to monitor on all of your devices. Select from these options:" - required: true - type: list - keys: - night: - description: Night - rain: - description: Rain -{% endconfiguration %} - -## Camera - -The `bloomsky` camera integration allows you to view the current photo created by the camera in the [BloomSky](https://www.bloomsky.com) weather station. This can work in concert with [BloomSky sensors](#sensor). - -### Configuration - -To enable this camera in your installation, set up the BloomSky integration with your API key and add the following to your {% term "`configuration.yaml`" %} file. - -```yaml -# Example configuration.yaml entry -camera: - - platform: bloomsky -``` - -## Sensor - -The `bloomsky` sensor integration allows you to view the measurements made by sensors in the [BloomSky](https://www.bloomsky.com) weather station. This can work in concert with the [BloomSky camera](#camera). - -### Configuration - -To enable these sensors in your installation, set up the BloomSky integration with your API key add the following to your {% term "`configuration.yaml`" %} file. - -```yaml -# Example configuration.yaml entry -sensor: - platform: bloomsky - monitored_conditions: - - Temperature - - Humidity - - Pressure - - UVIndex - - Luminance - - Voltage -``` - -{% configuration %} -monitored_conditions: - description: "The sensors that you wish to monitor on all of your devices. Select from these options:" - required: true - type: list - keys: - humidity: - description: Humidity - luminance: - description: Luminance - pressure: - description: Pressure - temperature: - description: Temperature - uvindex: - description: UVIndex - voltage: - description: Voltage -{% endconfiguration %} - -More conditions are available using the [BloomSky binary sensor](#binary-sensor) integration. diff --git a/source/_integrations/bring.markdown b/source/_integrations/bring.markdown index 860b9ee60e6..5fb91fe3422 100644 --- a/source/_integrations/bring.markdown +++ b/source/_integrations/bring.markdown @@ -38,6 +38,7 @@ For authentication, the integration requires the `email` and `password` you used - **On occasion:** Displays the count of items marked with the **If convenient** badge. - **Discount only:** Indicates the number of items tagged with the **Offer** badge. - **Region & Language:** The sensor can be used for diagnostics. If everything is set correctly, it will display the selected region for the shopping list. If it shows **Unknown**, the region has not been set properly in the **Bring!** app. +- **List access**: Indicates whether the shopping list is **personal** (private) or **shared** (accessible to others). ## Actions diff --git a/source/_integrations/button.mqtt.markdown b/source/_integrations/button.mqtt.markdown index 27b13b4d25a..98eeb6fa466 100644 --- a/source/_integrations/button.mqtt.markdown +++ b/source/_integrations/button.mqtt.markdown @@ -135,6 +135,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -171,6 +175,10 @@ payload_press: required: false type: string default: "PRESS" +platform: + description: Must be `button`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -182,7 +190,7 @@ retain: type: boolean default: false unique_id: - description: An ID that uniquely identifies this button entity. If two buttons have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this button entity. If two buttons have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/cambridge_audio.markdown b/source/_integrations/cambridge_audio.markdown index b217670e7f4..c40391323e0 100644 --- a/source/_integrations/cambridge_audio.markdown +++ b/source/_integrations/cambridge_audio.markdown @@ -3,12 +3,15 @@ title: Cambridge Audio description: Instructions on how to integrate Cambridge Audio Receivers into Home Assistant. ha_category: - Media player + - Select ha_release: '2024.10' ha_iot_class: Local Push ha_domain: cambridge_audio ha_platforms: - diagnostics - media_player + - select + - switch ha_codeowners: - '@noahhusby' ha_config_flow: true @@ -48,6 +51,51 @@ Host: type: string {% endconfiguration_basic %} +## Available configuration entities + +The integration provides a few entities to configure the device settings. The following entities are supported: + +- Display brightness +- Pre-Amp +- Early update +- Audio output (Speaker select) + +## Playing media + +Cambridge Audio supports playing a variety of formats using the `media_player.play_media` action. + +### Examples: + +Cambridge Audio can recall any stored presets saved on the device. An example action using a preset: +```yaml +action: media_player.play_media +target: + entity_id: media_player.cambridge_audio +data: + media_content_type: "preset" + media_content_id: "1" +``` + +An example action using an Airable radio ID: + +```yaml +action: media_player.play_media +target: + entity_id: media_player.cambridge_audio +data: + media_content_type: "airable" + media_content_id: "12345678" +``` + +An example action using an internet radio url: +```yaml +action: media_player.play_media +target: + entity_id: media_player.cambridge_audio +data: + media_content_type: "internet_radio" + media_content_id: "https://example.com/internet-radio/station_abcd.mp3" +``` ## Troubleshooting ### The buttons to skip, shuffle, and repeat the track are missing diff --git a/source/_integrations/camera.markdown b/source/_integrations/camera.markdown index 7467a440339..85caa1c4dc2 100644 --- a/source/_integrations/camera.markdown +++ b/source/_integrations/camera.markdown @@ -91,7 +91,7 @@ Both `duration` and `lookback` options are suggestions, but should be consistent | Data attribute | Optional | Description | | -------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. | -| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/{{ entity_id.name }}.mp4`{% endraw %}. | +| `filename` | no | Recording file name. | | `duration` | yes | Target recording length (in seconds). Default: 30 | | `lookback` | yes | Target lookback period (in seconds) to include in addition to duration. Only available if there is currently an active HLS stream. Default: 0 | @@ -103,11 +103,13 @@ For example, the following action in an automation would take a recording from " ```yaml actions: + - variables: + entity_id: camera.yourcamera # Store the camera entity_id in a variable for reuse - action: camera.record target: - entity_id: camera.yourcamera + entity_id: '{{ entity_id }}' data: - filename: '/tmp/{{ entity_id.name }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4' + filename: '/tmp/{{ entity_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4' ``` {% endraw %} @@ -119,7 +121,7 @@ Take a snapshot from a camera. | Data attribute | Optional | Description | | -------------- | -------- | ------------------------------------------------------------------------------------------------------------------ | | `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. | -| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id.name }}`{% endraw %}. | +| `filename` | no | Snapshot file name. | The path part of `filename` must be an entry in the `allowlist_external_dirs` in your [`homeassistant:`](/integrations/homeassistant/) section of your {% term "`configuration.yaml`" %} file. @@ -129,11 +131,13 @@ For example, the following action in an automation would take a snapshot from "y ```yaml actions: + - variables: + entity_id: camera.yourcamera # Store the camera entity_id in a variable for reuse - action: camera.snapshot target: - entity_id: camera.yourcamera + entity_id: '{{ entity_id }}' data: - filename: '/tmp/yourcamera_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg' + filename: '/tmp/{{ entity_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg' ``` {% endraw %} diff --git a/source/_integrations/camera.mqtt.markdown b/source/_integrations/camera.mqtt.markdown index 2d8cb9f4938..ff672f202b9 100644 --- a/source/_integrations/camera.mqtt.markdown +++ b/source/_integrations/camera.mqtt.markdown @@ -133,6 +133,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -162,7 +166,7 @@ topic: required: true type: string unique_id: - description: An ID that uniquely identifies this camera. If two cameras have the same unique ID Home Assistant will raise an exception. + description: An ID that uniquely identifies this camera. If two cameras have the same unique ID Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown index ec9052ef44b..f0149f75f5a 100644 --- a/source/_integrations/climate.mqtt.markdown +++ b/source/_integrations/climate.mqtt.markdown @@ -153,6 +153,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string fan_mode_command_template: description: A template to render the value sent to the `fan_mode_command_topic` with. required: false @@ -402,7 +406,7 @@ temp_step: required: false default: 1 unique_id: - description: An ID that uniquely identifies this HVAC device. If two HVAC devices have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this HVAC device. If two HVAC devices have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/comelit.markdown b/source/_integrations/comelit.markdown index c0cc86022a7..947bb6dc8b8 100644 --- a/source/_integrations/comelit.markdown +++ b/source/_integrations/comelit.markdown @@ -20,6 +20,7 @@ ha_platforms: - binary_sensor - climate - cover + - diagnostics - humidifier - light - sensor diff --git a/source/_integrations/cover.mqtt.markdown b/source/_integrations/cover.mqtt.markdown index 84d55e03931..f847fd28ad5 100644 --- a/source/_integrations/cover.mqtt.markdown +++ b/source/_integrations/cover.mqtt.markdown @@ -148,6 +148,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -199,6 +203,10 @@ payload_stop: required: false type: string default: STOP +platform: + description: Must be `cover`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string position_closed: description: Number which represents closed position. required: false @@ -306,7 +314,7 @@ tilt_status_topic: required: false type: string unique_id: - description: An ID that uniquely identifies this cover. If two covers have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this cover. If two covers have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown index 6158eee9346..7e07591bc9d 100644 --- a/source/_integrations/default_config.markdown +++ b/source/_integrations/default_config.markdown @@ -20,6 +20,7 @@ This {% term integration %} is a meta-component and configures a default set of - [Conversation](/integrations/conversation/) (`conversation`) - [DHCP discovery](/integrations/dhcp/) (`dhcp`) - [Energy](/integrations/energy/) (`energy`) +- [Go2rtc](/integrations/go2rtc/) (`go2rtc`) - [History](/integrations/history/) (`history`) - [Home Assistant Alerts](/integrations/homeassistant_alerts) (`homeassistant_alerts`) - [Home Assistant Cloud](/integrations/cloud/) (`cloud`) diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown index e36c0db84ba..47346c4564f 100644 --- a/source/_integrations/device_tracker.mqtt.markdown +++ b/source/_integrations/device_tracker.mqtt.markdown @@ -167,6 +167,10 @@ payload_reset: required: false type: string default: '"None"' +platform: + description: Must be `device_tracker`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -181,7 +185,7 @@ state_topic: required: false type: string unique_id: - description: "An ID that uniquely identifies this device_tracker. If two device_trackers have the same unique ID, Home Assistant will raise an exception." + description: "An ID that uniquely identifies this device_tracker. If two device_trackers have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery." required: false type: string value_template: diff --git a/source/_integrations/device_trigger.mqtt.markdown b/source/_integrations/device_trigger.mqtt.markdown index bc2e1dff2a0..82fad046f0e 100644 --- a/source/_integrations/device_trigger.mqtt.markdown +++ b/source/_integrations/device_trigger.mqtt.markdown @@ -26,6 +26,10 @@ payload: description: Optional payload to match the payload being sent over the topic. required: false type: string +platform: + description: Must be `device_automation`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/dsmr_reader.markdown b/source/_integrations/dsmr_reader.markdown index e91215d9fd2..e3d1be83de9 100644 --- a/source/_integrations/dsmr_reader.markdown +++ b/source/_integrations/dsmr_reader.markdown @@ -17,6 +17,7 @@ ha_platforms: - diagnostics - sensor ha_integration_type: integration +ha_quality_scale: gold --- The `dsmr_reader` sensor integration allows you to easily add all sensors that [DSMR Reader](https://dsmr-reader.readthedocs.io/en/latest/) (Dutch Smart Meter Requirements Reader) exposes to MQTT. It adds a separate sensor for every field in the MQTT topics which is named `sensor_dsmr_`. diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index 3a3fb759f03..e86aec8ccb7 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -169,6 +169,7 @@ Besides the standard actions provided by the Home Assistant [Climate](/integrati - `ecobee.set_dst_mode` - `ecobee.set_mic_mode` - `ecobee.set_occupancy_modes` +- `ecobee.set_sensors_in_climate` ### Action `ecobee.create_vacation` @@ -241,3 +242,14 @@ Enable/disable Smart Home/Away and Follow Me modes. | `entity_id` | yes | ecobee thermostat on which to set occupancy modes. Omit to target all ecobee thermostats. | | `auto_away` | yes | true or false | | `follow_me` | yes | true or false | + +### Service `ecobee.set_sensors_in_climate` + +Set which sensors are active on a termostat for a specific climate program. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | ecobee thermostat on which to set the active sensors. | +| `preset_mode` | yes | Name of the climate program to set the sensors active on (defaults to currently active program). | +| `sensors` | no | Sensors to set as participating for climate. This is the device ID of the sensor/thermostat. These can be found in the available_sensors attribute. | + diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown index d1240d33ea4..42ce8b4b916 100644 --- a/source/_integrations/enphase_envoy.markdown +++ b/source/_integrations/enphase_envoy.markdown @@ -140,6 +140,8 @@ This integration provides several values suitable for the energy dashboard: The integration provides a `configure` menu to configure the following options: - Collect test fixture data in [diagnostics report](#diagnostics) - No/Yes +- Always use a new connection when requesting data from the Envoy - No/Yes + - Some older Envoy firmware may exhibit connection issues when using the, by default enabled, keep-alive connection and report failures. When set, this option disables the use of keep-alive and builds a new connection at each data request. This makes the communication more reliable for these firmware versions. Reported for the Envoy-R but may apply to other older firmware versions as well. ## Debug logs and diagnostics diff --git a/source/_integrations/event.mqtt.markdown b/source/_integrations/event.mqtt.markdown index 29c73730c87..7393e23030c 100644 --- a/source/_integrations/event.mqtt.markdown +++ b/source/_integrations/event.mqtt.markdown @@ -129,6 +129,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string event_types: description: A list of valid `event_type` strings. required: true @@ -164,6 +168,10 @@ payload_not_available: required: false type: string default: offline +platform: + description: Must be `event`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -174,7 +182,7 @@ state_topic: required: true type: string unique_id: - description: An ID that uniquely identifies this event entity. If two events have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this event entity. If two events have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown index e55468f9bd0..8832c7c3461 100644 --- a/source/_integrations/fan.mqtt.markdown +++ b/source/_integrations/fan.mqtt.markdown @@ -140,6 +140,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -254,6 +258,10 @@ percentage_value_template: description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the `percentage` value from the payload received on `percentage_state_topic`. required: false type: template +platform: + description: Must be `fan`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string preset_mode_command_template: description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to generate the payload to send to `preset_mode_command_topic`. required: false @@ -304,7 +312,7 @@ state_value_template: required: false type: template unique_id: - description: An ID that uniquely identifies this fan. If two fans have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this fan. If two fans have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/go2rtc.markdown b/source/_integrations/go2rtc.markdown new file mode 100644 index 00000000000..780d7970c58 --- /dev/null +++ b/source/_integrations/go2rtc.markdown @@ -0,0 +1,62 @@ +--- +title: go2rtc +description: Instructions on how to setup go2rtc in Home Assistant. +ha_category: + - Camera +ha_release: 2024.11 +ha_iot_class: Local Polling +ha_codeowners: + - '@home-assistant/core' +ha_domain: go2rtc +ha_integration_type: system +related: + - docs: /installation/ +--- + +go2rtc is an open source project providing a camera streaming application that supports formats such as RTSP, WebRTC, HomeKit, FFmpeg, RTMP. The **go2rtc** {% term integration %} connects to a go2rtc instance and provides a WebRTC proxy for all your cameras. To learn more about go2rtc, refer to the [project's GitHub page](https://github.com/AlexxIT/go2rtc/). + + +If you are using the [`default_config`](/integrations/default_config/) and run Home Assistant using one of the following installation methods, the go2rtc integration will be set up automatically and you don't need to do anything: + +- {% term "Home Assistant Operating System" %} +- {% term "Home Assistant Supervised" %} +- {% term "Home Assistant Container" %} + +## Configuration + +This integration is part of the [`default_config`](/integrations/default_config/). + +The following YAML options are available: + +{% configuration %} +debug_ui: + required: false + description: Enables the UI of the go2rtc, which helps debugging WebRTC issues. The `debug_ui` should only be enabled during debugging as it will expose port 11984 without any authentication! + default: false + type: boolean +url: + required: false + description: The URL to the self-hosted [go2rtc](https://github.com/AlexxIT/go2rtc/) server + type: string +{% endconfiguration %} + +If you using the go2rtc server managed by Home Assistant, please be aware that all ports are prefixed by `1` compared to the default port settings to avoid port conflicts: +- Api port `1984` becomes `11984` +- WebRTC port `8555` becomes `18555` + +{% warning %} + +The `debug_ui` should only be enabled during debugging as it will expose port 11984 without any authentication! +Please disable the `debug_ui` immediately after debugging. + +{% endwarning %} + +### Examples + +Use a self-hosted instance: + +```yaml +go2rtc: + url: http://my-go2rtc-instance:1984 +``` + diff --git a/source/_integrations/google_domains.markdown b/source/_integrations/google_domains.markdown deleted file mode 100644 index 0aaa8b7cb83..00000000000 --- a/source/_integrations/google_domains.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Google Domains -description: Keep your computer registered with the Google Domains dynamic DNS. -ha_category: - - Network -ha_release: 0.57 -ha_domain: google_domains -ha_iot_class: Cloud Polling -ha_integration_type: integration -related: - - docs: /docs/configuration/ - title: Configuration file ---- - -With the Google Domains {% term integration %} you can keep your Google Domains **dynamic** DNS record up to date. To setup a dynamic domain name using Goole Domains, refer to the [_Use Dynamic DNS_ section in the Google support documentation](https://support.google.com/domains/answer/6147083). - -## Configuration - -To use the {% term integration %} in your installation, add the following to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -google_domains: - domain: subdomain.domain.com - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} - domain: - description: Your fully qualified domain name (FQDN) that you have chosen for your Home Assistant server. - required: true - type: string - username: - description: The generated username for this Dynamic DNS record. See your [Google Domains record](https://support.google.com/domains/answer/6147083) for details. - required: true - type: string - password: - description: The generated password for this Dynamic DNS record. See your [Google Domains record](https://support.google.com/domains/answer/6147083) for details. - required: true - type: string - timeout: - description: Timeout (in seconds) for the API calls. - required: false - type: integer - default: 10 -{% endconfiguration %} diff --git a/source/_integrations/govee_light_local.markdown b/source/_integrations/govee_light_local.markdown index 720b032f990..543e3305e3f 100644 --- a/source/_integrations/govee_light_local.markdown +++ b/source/_integrations/govee_light_local.markdown @@ -44,6 +44,8 @@ H6087, H6088, H608A, H608B, +H608D, +H60A1, H610A, H610B, H6110, @@ -79,6 +81,7 @@ H61A8, H61B2, H61B5, H61BA, +H61BC, H61BE, H61C3, H61C5, @@ -86,6 +89,7 @@ H61D3, H61D5, H61E0, H61E1, +H61F5, H7012, H7013, H7020, @@ -104,14 +108,19 @@ H7055, H705A, H705B, H705C, +H705E, H7060, H7061, H7062, H7063, H7065, H7066, +H706A, +H706B, +H706C, H7075, H70A1, H70B1, H70C1, -H70C2 \ No newline at end of file +H70C2 +H70C2 diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown index 46fcca29d21..ec4a7f91937 100644 --- a/source/_integrations/habitica.markdown +++ b/source/_integrations/habitica.markdown @@ -4,6 +4,7 @@ description: Instructions on enabling Habitica support for your Home Assistant ha_category: - To-do list - Sensor + - Calendar ha_release: 0.78 ha_iot_class: Cloud Polling ha_domain: habitica @@ -12,6 +13,7 @@ ha_platforms: - sensor - switch - todo + - calendar ha_codeowners: - '@ASMfreaK' - '@leikoilja' @@ -54,6 +56,8 @@ The Habitca {% term integration %} enables you to monitor your adventurer's prog - **Next level:** Indicates the remaining experience points needed to reach the next level (for example, "440 XP"). - **Habits:** Shows the number of habits being tracked (for example, "4 tasks"). - **Rewards:** Displays the rewards that can be redeemed (for example, "1 task") +- **Gems:** Shows the total number of gems currently owned by your Habitica character, used for purchasing items and customizations. +- **Mystic hourglasses:** Displays the number of mystic hourglasses earned as a subscriber, which can be redeemed for exclusive items from past events. ## To-do lists @@ -62,6 +66,11 @@ The following Habitica tasks are available as to-do lists in Home Assistant. You - **To-Do's:** Displays a comprehensive list of active and completed to-dos. Each to-do includes its due date if applicable, allowing you to check them off, edit them, delete them, and create new to-dos seamlessly. - **Dailies:** Shows the daily tasks that need to be completed today or in the future. Tasks completed yesterday can still be marked off as "yesterdailies" until a new day starts. +## Calendars + +- **To-Do calendar:** Lists the due dates for all active to-do tasks. Each event on this calendar represents a to-do item that has a set due date, making it easy to track upcoming deadlines and plan accordingly. +- **Dailies calendar:** Displays all daily tasks that are scheduled for today and are still active. It also shows all tasks scheduled for future dates, helping you stay organized and track upcoming routines. The calendar sensor will be active if there are unfinished tasks for today and display the next due daily (based on sort order if there are multiple tasks due for that day). + ## Button controls - **Start my day:** Initiates daily routine actions in Habitica, including resetting your dailies, deal damage from unfinished dailies and quest bosses, habits adjustment, buff expiration, and mana regeneration based on completed dailies. @@ -69,9 +78,57 @@ The following Habitica tasks are available as to-do lists in Home Assistant. You - **Buy a health potion:** Allows your character to purchase a health potion in Habitica. Instantly applies the potion upon purchase, healing 15 HP at a cost of 25 GP. - **Allocate all stat points**: Assigns all unallocated stat points based on the previously set automatic allocation method. If no method is set, all points are assigned to strength (STR). +## Button controls for class skills + +If you've unlocked the class system, button controls for casting player and party skills will become available, depending on the class you've selected. For task skills see [action `habitica.cast_skill`](#action-habiticacast_skill) + +### Mage + +- **Ethereal surge**: You sacrifice Mana so the rest of your party, except for other mages, gains MP. (based on: INT) +- **Earthquake**: Your mental power shakes the earth and buffs your party's intelligence. (based on: unbuffed INT) +- **Chilling frost:** With one cast, ice freezes all your streaks so they won't reset to zero tomorrow. + +### Warrior + +- **Defensive stance**: You crouch low and gain a buff to constitution. (based on: unbuffed CON) +- **Valorous presence**: Your boldness buffs your whole party's strength. (based on: unbuffed STR) +- **Intimidating gaze:** Your fierce stare buffs your whole Party's constitution. (based on: unbuffed CON) + +### Rogue + +- **Tools of the trade**: Your tricky talents buff your whole party's perception. (based on: unbuffed PER) +- **Stealth**: With each cast, a few of your undone dailies won't cause damage tonight. Their streaks and colors won't change. (based on: PER) + +### Healer + +- **Healing light**: Shining light restores your health. (based on: CON and INT) +- **Searing brightness**: A burst of light makes your tasks more blue/less red. (based on: INT) +- **Protective aura**: You shield your party by buffing their constitution. (based on: unbuffed CON) +- **Blessing**: Your soothing spell restores your whole party's health. (based on: CON and INT) + ## Switch controls -- **Rest in the Inn:** When enabled, allows your character to rest in the inn in Habitica, pausing damage dealt from dailies and quest bosses. +- **Rest in the Inn**: When enabled, allows your character to rest in the inn in Habitica, pausing damage dealt from dailies and quest bosses. + +## Actions + +### Action `habitica.cast_skill` + +Use a skill or spell from your Habitica character on a specific task to affect its progress or status. + +| Data attribute | Optional | Description | +| -------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | +| `config_entry` | no | Config entry of the character to cast the skill. | +| `skill` | no | Skill or spell you want to cast on the task. Only skills available to your character's class can be used. | +| `task` | no | The name of the task to target. Alternatively, you can use the `task ID` or **alias**. Supported task types are **to-do**, **habit**, and **daily**. | + +#### Available skills + +- **Rogue:** `pickpocket`, `backstab` +- **Warrior:** `smash` +- **Mage:** `fireball` + +To use task aliases, make sure **Developer Mode** is enabled under [**Settings -> Site Data**](https://habitica.com/user/settings/siteData). Task aliases can only be edited via the **Habitica** web client. ## Automations diff --git a/source/_integrations/home_connect.markdown b/source/_integrations/home_connect.markdown index ea837f95b99..0d4775f43c8 100644 --- a/source/_integrations/home_connect.markdown +++ b/source/_integrations/home_connect.markdown @@ -5,19 +5,24 @@ ha_category: - Binary sensor - Hub - Light + - Number - Sensor - Switch + - Time ha_iot_class: Cloud Push ha_release: '0.110' ha_domain: home_connect ha_codeowners: - '@DavidMStraub' + - '@Diegorro98' ha_config_flow: true ha_platforms: - binary_sensor - light + - number - sensor - switch + - time ha_integration_type: integration --- @@ -28,10 +33,24 @@ The integration will add one Home Assistant device for each connected home appli - A power switch - If the device has programs, switches for each of the individual programs will be added. Note that program options cannot be configured currently. - If the device has programs, a timestamp sensor for remaining time and a numeric sensor for the progress percentage. -- For hood's functional light a light switch including brightness control will be added. -- For hood's and dishwasher's ambient light a light switch including brightness and color control will be added. +- Light: + - Hoods: + - Functional light: on/off and brightness + - Ambient light: on/off, brightness, HSV and RGB + - Dishwasher: on/off, brightness, HS and RGB + - Cooling appliances: Both, external and internal lights, on/off and brightness +- Numbers that set the temperature of cooling appliances. +- Time for alarm clock for cooktops and ovens. +- Multiple sensors that report the different states and events reported by the appliance. +- Binary sensors that show binary states of the appliance. +{% note %} Note that it depends on the appliance and on API permissions which of the features are supported. +{% endnote %} + +{% note %} +Some devices only have the state `on` and turn off is not supported by the appliance, check [power state availability at Home Connect API documentation](https://api-docs.home-connect.com/settings/#power-state) for more information. +{% endnote %} ## Prerequisites @@ -47,12 +66,15 @@ Note that it depends on the appliance and on API permissions which of the featur 4. On success, you will be redirected to the **Applications** page. Select **Details** for your app. Make note of the client ID and secret - you will need it for the next step. Log out of the Home Connect developer portal. 5. In Home Assistant, find the Home Connect integration and launch it. You will be prompted to create an [Application Credential](https://www.home-assistant.io/integrations/application_credentials). You will need to provide a name (it's arbitrary) in addition to the Client ID and Secret from the previous step. Then, follow the steps in the UI to complete setup. -*Important*: - - **Power on** all your appliances during the integration configuration process; otherwise appliance programs list will be empty. - - To update the appliance programs list, you can reload the Home Connect integration when an appliance is turned on. If the re-initialization process is not triggered by reload, restart the Home Assistant when an appliance is turned on. - - After performing the steps above, [log out](https://developer.home-connect.com/user/logout) of your Home Connect Developer account. If you don't do this, the configuration steps below will fail during OAuth authentication with the message `“error”: “unauthorized_client”`. - - The provided Home Connect User Account email address **must** be all lowercase otherwise it will result in authentication failures. - - All changes in the developer portal take 15 minutes before the change is implemented. +{% important %} + +- **Power on** all your appliances during the integration configuration process; otherwise, appliance programs list will be empty. +- To update the appliance programs list, you can reload the Home Connect integration when an appliance is turned on. If the re-initialization process is not triggered by reload, restart the Home Assistant when an appliance is turned on. +- After performing the steps above, [log out](https://developer.home-connect.com/user/logout) of your Home Connect Developer account. If you don't do this, the configuration steps below will fail during OAuth authentication with the message `“error”: “unauthorized_client”`. +- The provided Home Connect User Account email address **must** be all lowercase; otherwise, it will result in authentication failures. +- All changes in the developer portal take 15 minutes before the change is implemented. + +{% endimportant %} {% details "I have manually disabled My Home Assistant" %} @@ -63,7 +85,7 @@ instead. The `` must be the same as used during the configuration/ authentication process. -Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://homeassistant.local:8123/auth/external/callback`." +Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://homeassistant.local:8123/auth/external/callback`." {% enddetails %} diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index 96260028206..da9b70919ff 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -141,6 +141,10 @@ debug: required: false type: boolean default: false +webrtc: + description: A [custom list of STUN and TURN servers for WebRTC video streaming](#custom-stun-and-turn-servers). + required: false + type: map {% endconfiguration %} ## Editing entity settings in YAML @@ -251,6 +255,54 @@ homeassistant: icon: mdi:other ``` +## Custom STUN and TURN servers + +It's possible to override the default list of STUN and TURN servers which are used to initiate WebRTC streaming. +Each STUN or TURN server can be configured as described in the table below. + +{% configuration webrtc %} +ice_servers: + description: List of STUN and TURN server configurations + required: true + type: list + keys: + url: + description: STUN or TURN server URLs. This can either be a single URL or a list of URLs. + required: true + type: string + username: + description: Username for TURN server authentication + required: false + type: string + credential: + description: Credential for TURN server authentication + required: false + type: string +{% endconfiguration %} + +### WebRTC configuration example + +{% important %} +If you implement `webrtc` in your {% term "`configuration.yaml`" %} file, you must make sure it is done inside of `homeassistant:` or it will fail. +{% endimportant %} + +```yaml +homeassistant: + name: Home + unit_system: metric + # etc + + webrtc: + ice_servers: + # Add an entry for each STUN or TURN server + - url: + - "stun:stun.l.google.com:19302" + - "stun:stun1.l.google.com:3478" + - url: "turn:turn.domain.com" + username: "username" + credential: "abc123" +``` + ## Actions The `homeassistant` integration provides actions for controlling Home Assistant itself, as well as generic controls for any entity. diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index 69251181372..78312b5084a 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -176,6 +176,7 @@ Within this delay the device registration should be completed in the App, otherw - Passage Sensor with Direction Recognition (*HmIP-SPDR*) (delta counter) - Alpha IP Wall Thermostat Display (*ALPHA-IP-RBG*) - Alpha IP Wall Thermostat Display analog (*ALPHA-IP-RBGa*) + - Floor Heating Actuator – 12x channels, motorized - Valve positions (*HmIP-FALMOT-C12*) - homematicip_cloud.switch - Pluggable Switch (*HmIP-PS*) diff --git a/source/_integrations/humidifier.mqtt.markdown b/source/_integrations/humidifier.mqtt.markdown index 7e228d764e9..26039efe1c0 100644 --- a/source/_integrations/humidifier.mqtt.markdown +++ b/source/_integrations/humidifier.mqtt.markdown @@ -163,6 +163,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -266,6 +270,10 @@ modes: required: false type: [list] default: [] +platform: + description: Must be `humidifier`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -285,7 +293,7 @@ state_value_template: required: false type: template unique_id: - description: An ID that uniquely identifies this humidifier. If two humidifiers have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this humidifier. If two humidifiers have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/husqvarna_automower.markdown b/source/_integrations/husqvarna_automower.markdown index b842f1e616b..81d9f9236fb 100644 --- a/source/_integrations/husqvarna_automower.markdown +++ b/source/_integrations/husqvarna_automower.markdown @@ -178,6 +178,11 @@ The integration will create the following sensors: - Total searching time - Work area (if available). For example: *My lawn*, *Front lawn*, *Back lawn* +For each work area with activated systematic mowing these sensors are created: + +- Progress (in percent) +- Last time completed + ### Switch #### Avoid (if available) diff --git a/source/_integrations/husqvarna_automower_ble.markdown b/source/_integrations/husqvarna_automower_ble.markdown new file mode 100644 index 00000000000..f2e47f3209e --- /dev/null +++ b/source/_integrations/husqvarna_automower_ble.markdown @@ -0,0 +1,33 @@ +--- +title: Husqvarna Automower BLE +description: Instructions on how to integrate Husqvarna Automower BLE lawn mowers into Home Assistant. +ha_category: + - Lawn Mower +ha_release: 2024.11 +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@alistair23' +ha_platforms: + - lawn_mower +ha_integration_type: integration +ha_domain: husqvarna_automower_ble +--- + +The Husqvarna Automower BLE integration provides connectivity with Husqvarna Automowers lawn mowers via a local Bluetooth connection. This allows connecting and controlling an Automower without any accounts, cloud, or network connection. + +The integration is based on [AutoMower-BLE](https://github.com/alistair23/AutoMower-BLE), an unofficial reverse engineered Husqvarna Automower Connect BLE library. + +There is currently support for the following device types within Home Assistant: + +- Lawn Mower + +### Prerequisites + +1. Setup a [Bluetooth controller](https://www.home-assistant.io/integrations/bluetooth/). An ESPHome Bluetooth proxy works well and allows locating a device close to the mower. +2. Enter the pairing mode on the mower. Different models will do this in different ways. For the 305, for example, the mower will enter pairing mode for the first 3 minutes after powering on. Ensure the mower is in pairing mode when adding the integration. This only needs to be done once per BLE controller (so changing the ESPHome device will require a repair). +3. When adding the integration to Home Assistant, you will need to enter the mower BLE Mac address. You can find this in the ESPHome logs, on an Android phone, or by some other means. + +Pairing can take a few goes. Even when using the official Android application, it can be tricky to get the first pair to succeed. If you are having issues, reboot the mower and try again. + +{% include integrations/config_flow.md %} diff --git a/source/_integrations/image.markdown b/source/_integrations/image.markdown index 3d509ff51e6..2ecd2923044 100644 --- a/source/_integrations/image.markdown +++ b/source/_integrations/image.markdown @@ -23,3 +23,37 @@ In addition, the entity can have the following states: - **Unavailable**: The entity is currently unavailable. - **Unknown**: The state is not yet known. + +### Actions + +Once loaded, the `image` platform will expose services that can be called to perform various actions. + +Available services: `snapshot`. + +#### Action `snapshot` + +Take a snapshot from an image. + +| Data attribute | Optional | Description | +| -------------- | -------- | ------------------------------------------------------------------------------ | +| `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `image.my_image`. | +| `filename` | no | Snapshot file name | + +The path part of `filename` must be an entry in the `allowlist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file. + +For example, the following action in an automation would take a snapshot from "yourimage" and save it to /tmp with a timestamped filename. + +{% raw %} + +```yaml +actions: + - variables: + entity_id: image.yourimage # Store the camera entity_id in a variable for reuse + - action: image.snapshot + target: + entity_id: '{{ entity_id }}' + data: + filename: '/tmp/{{ entity_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg' +``` + +{% endraw %} diff --git a/source/_integrations/image.mqtt.markdown b/source/_integrations/image.mqtt.markdown index 2278cee09aa..9186abdae55 100644 --- a/source/_integrations/image.mqtt.markdown +++ b/source/_integrations/image.mqtt.markdown @@ -136,6 +136,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -165,7 +169,7 @@ object_id: required: false type: string unique_id: - description: An ID that uniquely identifies this image. If two images have the same unique ID Home Assistant will raise an exception. + description: An ID that uniquely identifies this image. If two images have the same unique ID Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string url_template: diff --git a/source/_integrations/iron_os.markdown b/source/_integrations/iron_os.markdown index bdd7fa27a55..86d3c097335 100644 --- a/source/_integrations/iron_os.markdown +++ b/source/_integrations/iron_os.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate IronOS-based Pinecil V2 devices wi ha_category: - Number - Sensor + - Update ha_iot_class: Local Polling ha_release: 2024.8 ha_config_flow: true @@ -14,6 +15,7 @@ ha_integration_type: integration ha_platforms: - number - sensor + - update --- The **IronOS** {% term integration %} seamlessly connects Home Assistant with PINE64's Pinecil V2 soldering irons, allowing for remote monitoring and control. This integration provides real-time updates on temperature, power, and various other settings and diagnostic information. @@ -43,3 +45,8 @@ The **IronOS** {% term integration %} seamlessly connects Home Assistant with PI - **Tip resistance:** Indicates the resistance of the currently inserted soldering iron tip (for example, "6.2 Ω" for short tips, "8 Ω" for normal tips) - **Uptime:** Tracks the total operating time of the soldering iron since its last power-on. - **Hall effect strength:** (Optional) This feature requires the device to be [modified with a hall effect sensor](https://wiki.pine64.org/wiki/Pinecil_Hall_Effect_Sensor). If a neodymium magnet is attached to the stand, it enables proximity detection and can be utilized to calibrate when the iron enters sleep mode based on its proximity to the stand. + + +## Update + +- **Firmware:** The update entity indicates if the firmware is up-to-date or if there is a newer IronOS version available for your device. For more information on how to update your device, please refer to the [IronOS documentation](https://ralim.github.io/IronOS/). \ No newline at end of file diff --git a/source/_integrations/jellyfin.markdown b/source/_integrations/jellyfin.markdown index cc5a982c0c2..0804c2b9cce 100644 --- a/source/_integrations/jellyfin.markdown +++ b/source/_integrations/jellyfin.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate the Jellyfin integration into Home ha_category: - Media player - Media source + - Remote - Sensor ha_release: '2021.12' ha_iot_class: Local Polling @@ -15,6 +16,7 @@ ha_domain: jellyfin ha_platforms: - diagnostics - media_player + - remote - sensor ha_integration_type: service --- @@ -28,6 +30,24 @@ server as a media player in Home Assistant to provide media controls for each se Browsing media inside Home Assistant in a player's context provides all libraries of type Movie and Series. +This integration also creates a `Remote` entity for sending [remote commands](https://github.com/jellyfin/jellyfin/blob/master/MediaBrowser.Model/Session/GeneralCommandType.cs) to the client, if supported. For example, this can be used to tell the client to navigate right twice, down once, and select the focused item: + +```yaml +jellyfin_remote_script: + alias: "Jellyfin Remote Script" + sequence: + - action: remote.send_command + target: + entity_id: remote.jellyfin_client + data: + delay_secs: 1.5 + command: + - MoveRight + - MoveRight + - MoveDown + - Select +``` + {% include integrations/config_flow.md %} {% configuration_basic %} diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index c65ab302bdb..c9c1c5fe687 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -892,6 +892,10 @@ command_value_state_address: description: KNX address for reading current command value in percent. `0` sets the climate entity to idle if `active_state_address` is not set. *DPT 5.001* required: false type: [string, list] +humidity_state_address: + description: KNX address for reading current humidity. *DPT 9.007* + required: false + type: [string, list] operation_mode_address: description: KNX address for setting operation mode (auto / building protection / economy / standby / comfort). *DPT 20.102* required: false diff --git a/source/_integrations/lamarzocco.markdown b/source/_integrations/lamarzocco.markdown index dbd69c6456a..b742fdfe15b 100644 --- a/source/_integrations/lamarzocco.markdown +++ b/source/_integrations/lamarzocco.markdown @@ -76,6 +76,7 @@ Host: | Prebrew on time | Time prebrew wets the puck | Linea Micra, Linea Mini, GS3 AV | GS3 has this multiple times, one for each physical key (1-4), and the entities are disabled by default | | Prebrew off time | Time prebrew waits before turning on the pump | Linea Micra, Linea Mini, GS3 AV | GS3 has this multiple times, one for each physical key (1-4), and the entities are disabled by default | | Preinfusion time | Duration of preinfusion | Linea Micra, Linea Mini, GS3 AV | GS3 has this multiple times, one for each physical key (1-4), and the entities are disabled by default | +| Smart standby time | Time until the machine will automatically stand by (if enabled) | all | - | ## Switches @@ -84,6 +85,7 @@ Host: |-------------|-------------| ---------------------- | | Main | Allows to turn machines on-/off | all | | Steam boiler | Allows to enable/disable the steam boiler | all | +| Smart standby enabled | Whether smart standby is on (machine will automatically stand by after given time) | all | ## Binary sensors @@ -116,6 +118,7 @@ Host: |-------------|-------------| ------------------------| ---------------------- | | Prebrew/-infusion mode | Whether to use prebrew, preinfusion, or neither | Disabled, Prebrew, Preinfusion | Linea Micra, Linea Mini, GS3 AV | | Steam level | The level your steam boiler should run at | 1,2,3 | Linea Micra | +| Smart standby mode | The smart standby mode, that decides from which events the timer to standby will run. | Last brewing, Power on | all | ## Supported devices diff --git a/source/_integrations/lawn_mower.mqtt.markdown b/source/_integrations/lawn_mower.mqtt.markdown index e006db58e6f..af41a8f0fb2 100644 --- a/source/_integrations/lawn_mower.mqtt.markdown +++ b/source/_integrations/lawn_mower.mqtt.markdown @@ -142,6 +142,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -175,6 +179,10 @@ pause_command_topic: description: The MQTT topic that publishes commands when the `lawn_mower.pause` action is performed. The value `pause` is published when the action is used. Use a `pause_command_template` to publish a custom format. required: false type: string +platform: + description: Must be `lawn_mower`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -194,7 +202,7 @@ retain: type: boolean default: false unique_id: - description: An ID that uniquely identifies this lawn mower. If two lawn mowers have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this lawn mower. If two lawn mowers have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/lcn.markdown b/source/_integrations/lcn.markdown index aae0d7d856b..9f288022cc2 100644 --- a/source/_integrations/lcn.markdown +++ b/source/_integrations/lcn.markdown @@ -31,7 +31,7 @@ The **LCN** {% term integration %} for Home Assistant allows you to connect to [ ## Prerequisites -- The integration requires one unused license of the coupling software LCN-PCHK (version >2.8) and an LCN hardware coupler. +- The integration requires one unused license of the coupling software LCN-PCHK (version >2.8) and an LCN hardware coupler. - Alternatively, an LCN-VISU or LCN-PKE coupler can be used which offers at least two PCHK licenses. With this setup, sending and receiving commands to and from LCN modules is possible. @@ -66,7 +66,78 @@ The configuration of the `lcn` devices and entities is completely done using a w Once the integration is added to Home Assistant, you can access the `lcn` configuration panel by selecting the **Configure** button next to the respective integration entry on the [LCN integration page](https://my.home-assistant.io/redirect/integration/?domain=lcn). -The detailed documentation for the LCN frontend panel can be found [here](https://github.com/alengwenus/lcn-frontend/blob/main/docs/lcn-frontend.md). +![Integration configuration](/images/integrations/lcn/lcn_integration_configuration.png) + +## Configuration panel + +From the LCN Configuration Panel, you can configure your LCN modules, groups, and entities within Home Assistant. + +![LCN Configuration Panel](/images/integrations/lcn/lcn_device_page.png) + +### Configuring devices + +You can add and remove modules and groups directly from the configuration panel. Once added, they will appear in Home Assistant as devices, which can be used to trigger [specific actions](#actions) within scripts or automations. For examples, refer to the [Performing actions](/docs/scripts/perform-actions/) page. + +The **Modules / Groups** tab provides an overview of your configured LCN modules and groups, showing their name, ID, and segment ID. The LCN Configuration Panel attempts to derive names from the LCN modules; if a module has no name or is part of a group, a standard name is assigned. + +#### Scanning modules + +To initiate a scan for LCN modules on the bus, in the top-right corner, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Scan Modules**. +- **Result**: This process polls each module for its name and serial number. +- When all module responses have been received, they will be listed in the device list. +- Scanning modules may take several seconds. The pop-up dialog will close automatically once the process is complete. + +#### Adding devices + +If module scanning fails or a module is unavailable on the bus, you can manually add it. Groups can also be created manually. + +1. To add a module or group manually, select the **Create Module/Group** button. +2. Select whether you want to add a module or group and enter the desired `segment id` and module/group `id`. + + ![Create module/group dialog](/images/integrations/lcn/lcn_create_device.png) +3. To add the new device, select **Create**. + +#### Deleting devices + +To delete a single device, select the trash can icon next to it. +- **Result**: This will remove the device from the device list and from Home Assistant, including any associated entities. + +To delete multiple devices at once, enable selection mode. Select the desired entries, then, in the top-right corner, select **Delete Selected**. + +### Configuring entities + +Entities configured for all devices are listed on the **Entities** tab. + +To view entities for a specific device (module or group), in the **Modules / Groups** tab, select the device entry. + - **Result**: The **Entities** tab opens, showing entities of the selected device. + - To apply custom filters, enable the filter option. + + ![Create module/group dialog](/images/integrations/lcn/lcn_entities_page.png) + +#### Adding entities + +1. To create a new entity, select **Create Entity**. +2. From the dropdown menu, select the module or group for which to create the entity. + - If a single module or group filter is applied, it will be pre-selected. + + ![Create entity dialog](/images/integrations/lcn/lcn_create_entity.png) +3. Choose the domain (platform) for the entity and enter a name. + - You can change this name later within the Home Assistant entity settings. +4. Depending on the selected domain, additional options will be shown. To add the entity to the list and to Home Assistant, enter the required information and select **Create** . + +#### Deleting entities + +To delete a single entity, select the trash can icon next to it. +- **Result**: This removes the entity from the list and from Home Assistant. + +To delete multiple entities, enable selection mode, select the desired entries, and select **Delete Selected** in the upper right. + +#### Displaying entity properties + +Once an entity is created, you can view and configure its properties. + +Select the entity in the entity list. + - This opens the Home Assistant dialog for entity properties, allowing you to configure the entity as you would from the general Home Assistant entity configuration panel. ## Platforms @@ -75,8 +146,6 @@ The detailed documentation for the LCN frontend panel can be found [here](https: The `lcn` binary sensor platform allows the monitoring of the following [LCN](https://www.lcn.eu/) binary data sources: - Binary hardware sensors -- Lock state of regulator setpoints -- Lock state of keys The binary sensor can be used in automation scripts or in conjunction with `template` platforms. @@ -141,6 +210,8 @@ The `lcn` switch platform allows the control of the following [LCN](https://www. - Output ports - Relays +- Lock state of regulators +- Lock state of keys ## Additional features diff --git a/source/_integrations/lektrico.markdown b/source/_integrations/lektrico.markdown index d3424f048d2..aeebca94d43 100644 --- a/source/_integrations/lektrico.markdown +++ b/source/_integrations/lektrico.markdown @@ -15,6 +15,7 @@ ha_platforms: - number - select - sensor + - switch ha_integration_type: device --- @@ -120,3 +121,22 @@ Selects available in the library: | Select | Description | | :------------------ | :-------------------------------------- | | lb_mode | Select the load balancing mode of the energy meter. The options are **Disabled**, **Power**, **Hybrid**, and **Green**. | + +## Switches + +Switches available in the library: + +### Single-phase charger + +| Switch | Description | +| :------------------ | :-------------------------------------- | +| authentication | Allows to select if the charger will automatically start to charge or if it needs authentication. | +| lock | Allows to select if the charger is locked or not. When the charger is locked, no charging is possible.| + +### Three-phase charger + +| Switch | Description | +| :------------------ | :-------------------------------------- | +| authentication | Allows to select if the charger will automatically start to charge or if it needs authentication. | +| lock | Allows to select if the charger is locked or not. When the charger is locked, no charging is possible.| +| force_single_phase | Allows to put the three-phase charger in single-phase mode or three-phase mode. | diff --git a/source/_integrations/lg_thinq.markdown b/source/_integrations/lg_thinq.markdown new file mode 100644 index 00000000000..1fac8705476 --- /dev/null +++ b/source/_integrations/lg_thinq.markdown @@ -0,0 +1,285 @@ +--- +title: LG ThinQ +description: Setup for LG ThinQ Integration. +ha_category: + - Hub +ha_release: "2024.11" +ha_iot_class: Cloud Push +ha_code_owners: + - '@LG-ThinQ-Integration' +ha_config_flow: true +ha_domain: lg_thinq +ha_platforms: + - switch + - binary_sensor + - climate + - event + - fan + - number + - sensor + - select + - vacuum +ha_integration_type: integration +--- + +The **LG ThinQ** integration allows you to connect LG ThinQ devices to Home Assistant. The features of this integration include: + +- Control LG appliances as Home Assistant entities through the [LG ThinQ Connect API](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/overview/). + +## Prerequisites + +- This feature works via LG ThinQ cloud. Therefore, an internet connection is required. +- A [personal access token](https://connect-pat.lgthinq.com) to use the [LG ThinQ Connect API](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/overview/). + +### Personal Access Token (PAT) + +1. Access the **[personal access token](https://connect-pat.lgthinq.com)** page (requires an LG ThinQ account). +2. Select **ADD NEW TOKEN**. +3. Enter a new token name and select the following authorized scopes: + - **Permission to view all devices** + - **Permission to view all device statuses** + - **All device control rights** + - **All device event subscription rights** + - **All device push notification permissions** +4. Select **CREATE TOKEN**. +5. Once all the steps are completed, you will see that a **PAT** has been generated. + +{% include integrations/config_flow.md %} + +1. Enter the information to use LG ThinQ Connect API: + - The **Token Value** obtained through the PAT issuance process. (Required) + - The entry name. +2. Choose the region (country). + +## Supported Devices + +### Appliance + +Support LG Appliances as follows: + +- [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) +- [Air Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-purifier/) +- [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) +- [Ceiling Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/ceiling-fan/) +- [Cooktop](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/cooktop/) +- [Dehumidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dehumidifier/) +- [Dishwasher](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dish-washer/) +- [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dryer/) +- [Home Brew](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/home-brew/) +- [Hood](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/hood/) +- [Humidifier](https://thinq.developer.lge.com/ko/cloud/docs/thinq-connect/device-profile/humidifier/) +- [Kimchi Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/kimchi-refrigerator/) +- [Microwave Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/microwave-oven/) +- [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/oven/) +- [Plant Cultivator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/plant-cultivator/) +- [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) +- [Robot Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/robot-cleaner/) +- [Stick Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Stick-Cleaner/) +- [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) +- [System Boiler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/system-boiler/) +- [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) +- [Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) +- [Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) +- [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/) +- [Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/) +- [Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) +- [Water Heater](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/water-heater/) +- [Water Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/water-purifier/) +- [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/wine-cellar/) + +## Platforms + +LG ThinQ represents devices as a set of [profiles](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/). And these are mapped to entities in Home Assistant. + +A list of all Entity Platforms provided by LG ThinQ Integration: + +- [Binary sensor](#binary-sensor) +- [Climate](#climate) +- [Event](#event) +- [Fan](#fan) +- [Number](#number) +- [Select](#select) +- [Sensor](#sensor) +- [Switch](#switch) +- [Vacuum](#vacuum) + +### Binary sensor + +A read-only property which has only two states that can be toggled is represented as a binary sensor platform. + +| Device | Property | +| ------ | -------- | +| [Cooktop](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Cooktop/)
| Remote start | +| [Dish Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dish-washer/) | Chime sound
Clean indicator light
Door
Machine clean reminder
Remote start
Rinse refill needed | +| [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Dryer/)
| Remote start | +| [Hood](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Hood/) | Power | +| [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Oven/) | Remote start | +| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Door
Eco friendly
Power saving mode
Sabbath | +| [Kimchi Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Kimchi-Refrigerator/) | Fresh air filter | +| [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) | Remote start | +| [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
[Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
[Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) | Remote start | +| [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/)
[Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/)
[Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) | Remote start | +| [Water Heater](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Water-Heater/) | Power | +| [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Wine-Cellar/) | Sabbath | + +### Climate + +The properties for controlling both the temperature and wind strength of the appliance are represented as a climate platform. + +| Device | Property | +| ------ | -------- | +| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Current temperature
Fan mode
HVAC mode
Preset mode
Temperature
Temperature cool
Temperature heat
Unit | +| [System Boiler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/System-Boiler/) | Current temperature
HVAC mode
Temperature
Temperature cool
Temperature heat
Unit | + +### Event + +A notification message pushed from the server is represented as an event platform. + +| Device | Property | +| ------ | -------- | +| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Notification | +| [Air Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-purifier/) | Notification | +| [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) | Notification | +| [Dehumidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dehumidifier/) | Notification | +| [Dish Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dish-washer/) | Error
Notification | +| [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Dryer/) | Error
Notification | +| [Humidifier](https://thinq.developer.lge.com/ko/cloud/docs/thinq-connect/device-profile/humidifier/) | Notification | +| [Kimchi Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Kimchi-Refrigerator/) | Notification | +| [Microwave Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Microwave-Oven/) | Notification | +| [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Oven/) | Notification | +| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Notification | +| [Robot Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/robot-cleaner/) | Error
Notification | +| [Stick Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Stick-Cleaner/) | Notification | +| [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) | Error
Notification | +| [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
[Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
[Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) | Error
Notification | +| [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/)
[Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/)
[Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) | Error
Notification | +| [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Wine-Cellar/) | Notification | + +### Fan + +The properties for controlling the wind strength of the appliance are represented as a fan platform. + +| Device | Property | +| ------ | -------- | +| [Ceiling Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/ceiling-fan/) | Power
Speed | + +### Number + +A read-write property which has numeric value is represented as a number platform. + +| Device | Property | +| ------ | -------- | +| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Schedule turn-off
Schedule turn-on
Sleep timer | +| [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) | Sleep timer
Wind temperature | +| [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Dryer/) | Delay ends in
Delay starts in | +| [Hood](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Hood/) | Fan
Light | +| [Humidifier](https://thinq.developer.lge.com/ko/cloud/docs/thinq-connect/device-profile/humidifier/) | Sleep timer
Target humidity | +| [Microwave Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Microwave-Oven/) | Fan
Light | +| [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Oven/) | Temperature | +| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Temperature | +| [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) | Delay ends in | +| [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
[Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
[Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) | Delay ends in
Delay starts in | +| [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/)
[Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/)
[Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) | Delay ends in
Delay starts in | +| [Water Heater](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Water-Heater/) | Temperature | +| [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Wine-Cellar/) | Light
Temperature | + +### Select + +A writable property which has a list of selectable values is represented as a select platform. + +| Device |Property | +| ------ |-------- | +| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Air purify
Air quality sensor | +| [Air Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-purifier/) | Operating mode
Speed | +| [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) | Display brightness
Operating mode
Rotation
Speed | +| [Dehumidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dehumidifier/) | Speed | +| [Dish Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dish-washer/) | Operation | +| [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Dryer/) | Operation | +| [Humidifier](https://thinq.developer.lge.com/ko/cloud/docs/thinq-connect/device-profile/humidifier/) | Display brightness
Drying mode
Operating mode
Speed | +| [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Oven/) | Cook mode
Operation
| +| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Fresh air filter | +| [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) | Operation | +| [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
[Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
[Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) | Operation | +| [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/)
[Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/)
[Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) | Operation | +| [Water Heater](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Water-Heater/) | Operating mode | +| [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Wine-Cellar/) | Light
Operating mode | + +### Sensor + +A read-only property which has states is represented as a sensor platform. + +| Device | Property | +| ------ | -------- | +| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Filter remaining
Humidity
Odor
Overall air quality
PM1
PM10
PM2.5
Schedule turn-off
Schedule turn-on
Sleep timer | +| [Air Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-purifier/) | Air quality sensor
Humidity
Odor
Operating mode
Overall air quality
Personal mode
PM1
PM10
PM2.5 | +| [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) | Air quality sensor
Humidity
Odor
Overall air quality
PM1
PM10
PM2.5
Sleep timer
Temperature | +| [Cooktop](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Cooktop/) | Current status
Power level
Remaining time | +| [Dehumidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dehumidifier/) | Humidity
Operating mode | +| [Dish Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dish-washer/) | Current cycle
Current status
Delay starts in
Remaining time
Rinse aid dispenser level
Softening level
Total time | +| [Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Dryer/) | Current status
Delay ends in
Delay starts in
Remaining time
Total time | +| [Home Brew](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Home-Brew/)| Brewing duration
Brewing period
Current status
Flavor
Homebrew recipe
Hops
Recipe progress
Wort
Yeast | +| [Humidifier](https://thinq.developer.lge.com/ko/cloud/docs/thinq-connect/device-profile/humidifier/) | Air quality sensor
Humidity
Overall air quality
PM1
PM10
PM2.5
Schedule turn-off
Schedule turn-on
Sleep timer
Temperature | +| [Kimchi Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Kimchi-Refrigerator/) | Fresh air filter
Temperature | +| [Microwave Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Microwave-Oven/) | Current status
Remaining time | +| [Oven](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Oven/) | Cook time
Current status
Remaining time
Temperature | +| [Plant Cultivator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Plant-Cultivator/) | Current status
Day growth temperature
Lighting duration
Lighting intensity
Lights on time
Mode
Night growth temperature
Temperature
Wind speed | +| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Fresh air filter
Water filter used | +| [Robot Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/robot-cleaner/) | Current status
Operating mode
Running time | +| [Stick Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Stick-Cleaner/) | Battery
Current status
Operating mode | +| [Styler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/styler/) | Current status
Delay ends in
Delay starts in
Remaining time
Total time | +| [Washcombo Main](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
[Washcombo Mini](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/)
[Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/washer/) | Current status
Delay ends in
Delay starts in
Remaining time
Total time | +| [Washtower](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Single-Unit/)
[Washtower Dryer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Dryer/)
[Washtower Washer](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/WashTower-Washer/) | Current status
Delay ends in
Delay starts in
Remaining time
Total time | +| [Water Heater](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Water-Heater/) | Temperature | +| [Water Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/water-purifier/) | High-temp sterilization
Type
UVnano| + +### Switch + +A read-write property which has only two states that can be toggled is represented as a switch platform. + +| Device | Property | +| ------ | -------- | +| [Air Conditioner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-conditioner/) | Energy saving | +| [Air Purifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/air-purifier/) | Power | +| [Air Purifier Fan](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Air-Purifier-Fan/) | Heating
Power
UVnano | +| [Dehumidifier](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/dehumidifier/) | Power | +| [Humidifier](https://thinq.developer.lge.com/ko/cloud/docs/thinq-connect/device-profile/humidifier/) | Auto mode
Heating
Mood light
Power
Sleep mode | +| [Refrigerator](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/refrigerator/) | Ice plus
Quick freeze | +| [System Boiler](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/System-Boiler/) | Hot water | +| [Wine Cellar](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/Wine-Cellar/) | Ventilation | + +### Vacuum + +The properties for controlling the clean operations of the appliance are represented as a vacuum platform. + +| Device | Property | +| ------ | -------- | +| [Robot Cleaner](https://thinq.developer.lge.com/en/cloud/docs/thinq-connect/device-profile/robot-cleaner/) | Battery
Current status
Operation | + +## Troubleshooting + +### Setup + +#### Aborted: The token is not valid + +This error occurs when the Personal Access Token (PAT) is invalid or entered incorrectly. Please visit the [Personal Access Token Page](https://connect-pat.lgthinq.com) page to check if your token is valid. + +#### Aborted: The country is not supported + +Check your PAT's valid country in the **Choose the region / Country** section. + +#### Error: The number of API calls has been exceeded + +This error occurs when there's an abnormal number of API calls made using the PAT. +The LG ThinQ integration will work properly after some time. + +## Debugging + +The LG ThinQ integration will show additional information by enabling log configuration. Add the line to your {% term "`configuration.yaml`" %}: +Don't forget to remove the line again once you are done debugging. + +```yaml +logger: + default: info + logs: + homeassistant.components.lg_thinq: debug +``` diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown index fdc64843bd4..245ba223fe4 100644 --- a/source/_integrations/light.mqtt.markdown +++ b/source/_integrations/light.mqtt.markdown @@ -202,6 +202,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string effect_command_topic: description: "The MQTT topic to publish commands to change the light's effect state." required: false @@ -299,6 +303,10 @@ payload_on: required: false type: string default: "ON" +platform: + description: Must be `light`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -371,7 +379,7 @@ state_value_template: required: false type: template unique_id: - description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string white_command_topic: @@ -692,6 +700,10 @@ payload_not_available: required: false type: string default: offline +platform: + description: Must be `light`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -716,7 +728,7 @@ supported_color_modes: required: false type: list unique_id: - description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string white_scale: @@ -1074,6 +1086,10 @@ payload_not_available: required: false type: string default: offline +platform: + description: Must be `light`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -1097,7 +1113,7 @@ state_topic: required: false type: string unique_id: - description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/local_file.markdown b/source/_integrations/local_file.markdown index 16cd8394fd2..15592416fb9 100644 --- a/source/_integrations/local_file.markdown +++ b/source/_integrations/local_file.markdown @@ -18,28 +18,11 @@ The **Local file** camera {% term integration %} allows you to integrate an imag The `local_file` camera can for example be used with various camera platforms that save a temporary images locally. It can also be used to display a graph that you render periodically and will then be displayed in Home Assistant. -## Configuration +{% note %} +The file path must be added to [allowlist_external_dirs](/integrations/homeassistant/#allowlist_external_dirs) for the integration to be able to read it. +{% endnote %} -To enable this camera in your installation, add the following to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} - -```yaml -# Example configuration.yaml entry -camera: - - platform: local_file - file_path: /tmp/image.jpg -``` - -{% configuration %} -file_path: - description: "File to serve as the camera. Use a full path, e.g., `/config/www/images/image.jpg `." - required: true - type: string -name: - description: Name of the camera. - required: false - type: string -{% endconfiguration %} +{% include integrations/config_flow.md %} ### Action `local_file.update_file_path` diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown index 1452b1d4d3b..69fa475d9f0 100644 --- a/source/_integrations/lock.mqtt.markdown +++ b/source/_integrations/lock.mqtt.markdown @@ -146,6 +146,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -201,6 +205,10 @@ payload_reset: required: false type: string default: '"None"' +platform: + description: Must be `lock`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -241,7 +249,7 @@ state_unlocking: type: string default: UNLOCKING unique_id: - description: An ID that uniquely identifies this lock. If two locks have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this lock. If two locks have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/matter.markdown b/source/_integrations/matter.markdown index ac314f11801..5daa68ebd99 100644 --- a/source/_integrations/matter.markdown +++ b/source/_integrations/matter.markdown @@ -14,6 +14,7 @@ ha_category: - Sensor - Switch - Update + - Vacuum - Valve ha_release: '2022.12' ha_iot_class: Local Push @@ -36,6 +37,7 @@ ha_platforms: - sensor - switch - update + - vacuum - valve ha_integration_type: integration related: diff --git a/source/_integrations/meteo_france.markdown b/source/_integrations/meteo_france.markdown index 86f225cfc8c..2849cfdc55e 100644 --- a/source/_integrations/meteo_france.markdown +++ b/source/_integrations/meteo_france.markdown @@ -25,7 +25,7 @@ The integration support the following platforms within Home Assistant: - [Weather](#weather-platform) - [Sensor](#sensor-platforms) -It displays the current weather along with a 5 days forecast and create sensors, including weather alerts and 1 hour rain forecast when available. +It displays the current weather along with a 5 days forecast and create sensors, including weather alerts and 1 hour rain forecast. {% include integrations/config_flow.md %} @@ -43,7 +43,7 @@ All the following sensors will be created : |`cloud`|The current cloud cover in %|Yes| |`daily_original_condition`|The daily original weather condition|No| |`freeze_chance`|Probability of temperature below 0°C in the following hours|Yes| -|`next_rain`|Datetime of the next rain if expected within the next hour ([see note below](#about-next_rain-condition-sensor))|Yes| +|`next_rain`|Datetime of the next rain if expected within the next hour|Yes| |`original_condition`|The current original weather condition|No| |`precipitation`|Precipitation cumulation for next 24 hours in mm|Yes| |`pressure`|The current pressure in hPa|No| @@ -61,14 +61,6 @@ To enable an entity disabled by default, go in **Settings** -> **Devices & servi ### About `next_rain` condition sensor -{% note %} - -The 1 hour rain forecast is supported for more than 75 % of metropolitan France.
- -![Rain coverage map](/images/integrations/meteo_france/carte-couverture-du-service.png) - -{% endnote %} - The attributes allow to have a forecast of the rain type by 5 to 10 minutes intervals: - `forecast_time_ref` give a timestamp in ISO format UTC, corresponding to the start of the diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index 7e6cc4d9416..40634e5eb33 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -1516,15 +1516,15 @@ switches: input: description: "Input register." state_on: - description: "Value when switch is on." + description: "Value(s) when switch is on. The value must be an `integer` or a list of integers." required: false default: "Same as `command_on`" - type: integer + type: [integer, list] state_off: - description: "Value when switch is off." + description: "Value(s) when switch is off. The value must be an `integer` or a list of integers." required: false default: "Same as `command_off`" - type: integer + type: [integer, list] {% endconfiguration %} diff --git a/source/_integrations/mold_indicator.markdown b/source/_integrations/mold_indicator.markdown index 6c89ff6f0c4..093f224d200 100644 --- a/source/_integrations/mold_indicator.markdown +++ b/source/_integrations/mold_indicator.markdown @@ -51,6 +51,7 @@ sensor: indoor_humidity_sensor: sensor.humidity outdoor_temp_sensor: sensor.weather_temperature calibration_factor: 2.0 + unique_id: very_unique_id_123 ``` {% configuration %} @@ -74,6 +75,10 @@ calibration_factor: description: Needs to be calibrated to the critical point in the room. required: true type: float +unique_id: + description: Provide a unique id for the sensor. + required: false + type: string {% endconfiguration %} In this case, the weather forecast temperature sensor is used for the outside temperature. diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 3538aabbbb1..16f50d22da9 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -296,15 +296,333 @@ The discovery topic needs to follow a specific format: //[/]/config ``` -- ``: The Discovery Prefix defaults to `homeassistant`. This prefix can be [changed](#discovery-options). -- ``: One of the supported MQTT integrations, eg. `binary_sensor`. -- `` (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). +- ``: The Discovery Prefix defaults to `homeassistant` and this prefix can be [changed](#discovery-options). +- ``: One of the supported MQTT integrations, e.g., `binary_sensor`, or `device` in case of a device discovery. +- ``: (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). - ``: The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`. The ID of the device must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). The `` level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like `/+//+/set`. Best practice for entities with a `unique_id` is to set `` to `unique_id` and omit the ``. +#### Device discovery payload + +A device can send a discovery payload to expose all components for a device. +The `` part in the discovery topic must be set to `device`. + +As an alternative, it is also possible a device [can send a discovery payload for each component](/integrations/mqtt/#single-component-discovery-payload) it wants to set up. + +The shared options at the root level of the JSON message must include: + +- `device` mapping (abbreviated as `dev`) +- `origin` mapping (abbreviated as `o`) + +These mappings are mandatory and cannot be overridden at the entity/component level. + +Supported shared options are: + +- The `availability` [options](/integrations/mqtt/#using-availability-topics). +- The `origin` (required) [options](/integrations/mqtt/#adding-information-about-the-origin-of-a-discovery-message) +- `command_topic` +- `state_topic` +- `qos` +- `encoding` + +The component specific options are placed as mappings under the `components` key (abbreviated as `cmp`) like: + +```json +{ + "dev": { + "ids": "ea334450945afc", + "name": "Kitchen", + "mf": "Bla electronics", + "mdl": "xya", + "sw": "1.0", + "sn": "ea334450945afc", + "hw": "1.0rev2", + }, + "o": { + "name":"bla2mqtt", + "sw": "2.1", + "url": "https://bla2mqtt.example.com/support", + }, + "cmps": { + "some_unique_component_id1": { + "p": "sensor", + "device_class":"temperature", + "unit_of_measurement":"°C", + "value_template":"{% raw %}{{ value_json.temperature}}{% endraw %}", + "unique_id":"temp01ae_t", + }, + "some_unique_id2": { + "p": "sensor", + "device_class":"humidity", + "unit_of_measurement":"%", + "value_template":"{% raw %}{{ value_json.humidity}}{% endraw %}", + "unique_id":"temp01ae_h", + } + }, + "state_topic":"sensorBedroom/state", + "qos": 2, +} +``` + +The components id's under the `components` (`cmp`) key, are used as part of the discovery identification. A `platform` (`p`) config option is required for each component config that is added to identify the component platform. Also required is a `unique_id` for entity-based components. + +To remove the components, publish an empty (retained) string payload to the discovery topic. This will remove the component and clear the published discovery payload. It will also remove the device entry if there are no further references to it. + +An empty config can be published as an update to remove a single component from the device discovery. Note that adding the `platform` (`p`) option is still required. + +```json +{ + "dev": { + "ids": "ea334450945afc", + "name": "Kitchen", + "mf": "Bla electronics", + "mdl": "xya", + "sw": "1.0", + "sn": "ea334450945afc", + "hw": "1.0rev2", + }, + "o": { + "name":"bla2mqtt", + "sw": "2.1", + "url": "https://bla2mqtt.example.com/support", + }, + "cmps": { + "some_unique_component_id1": { + "p": "sensor", + "device_class":"temperature", + "unit_of_measurement":"°C", + "value_template":"{% raw %}{{ value_json.temperature}}{% endraw %}", + "unique_id":"temp01ae_t", + }, + "some_unique_id2": { + "p": "sensor", + } + }, + "state_topic":"sensorBedroom/state", + "qos": 2, +} +``` + +This will explicitly remove the humidity sensor and its entry. + +After removing a component, you should send another update with the removed component omitted from the configuration. This ensures that Home Assistant has the most up-to-date device configuration. For example: + +```json +{ + "dev": { + "ids": "ea334450945afc", + "name": "Kitchen", + "mf": "Bla electronics", + "mdl": "xya", + "sw": "1.0", + "sn": "ea334450945afc", + "hw": "1.0rev2", + }, + "o": { + "name":"bla2mqtt", + "sw": "2.1", + "url": "https://bla2mqtt.example.com/support", + }, + "cmps": { + "some_unique_component_id1": { + "p": "sensor", + "device_class":"temperature", + "unit_of_measurement":"°C", + "value_template":"{% raw %}{{ value_json.temperature}}{% endraw %}", + "unique_id":"temp01ae_t", + } + }, + "state_topic":"sensorBedroom/state", + "qos": 2, +} +``` + +
+ +A component config part in a device discovery payload must have the `platform` (`p`) option set with the name of the `component` and also must have at least one component specific config option. Entity components must have set the `unique_id` option and have a `device` context. + +
+ +##### Migration from single component to device-based discovery + +To allow a smooth migration from single component discovery to device-based discovery: + +1. Ensure all entities have a `unique_id` and a `device` context. +2. Move the `object_id` inside the discovery payload, if that is available, or use a unique ID or the component. +3. Consider using the previous `node_id` as the new `object_id` of the device discovery topic. +4. Ensure the `unique_id` matches and the `device` context has the correct identifiers. +5. Send the following payload to all existing single component discovery topics: + +```json +{"migrate_discovery": true } +``` + +This will unload the discovered item, but its settings will be retained. +6. Switch the discovery topic to the device-based discovery topic and include all the component configurations. +7. Clean up the single component discovery messages with an empty payload. + +During the migration steps, INFO messages will be logged to inform you about the progress of the migration. + +{% important %} +Consider testing the migration process in a non-production environment before applying it to a live system. +{% endimportant %} + +#### Discovery migration example with a device automation and a sensor + +**Step 1: Original single component discovery configurations:** + +Discovery topic single: `homeassistant/device_automation/0AFFD2/bla1/config` +Discovery id: `0AFFD2 bla1` *(both `0AFFD2` and `bla1` from the discovery topic)* +Discovery payload single: + +```json +{ + "device": { + "identifiers": ["0AFFD2"], + "name": "Test device" + }, + "o": { + "name": "foobar" + }, + "automation_type": "trigger", + "payload": "short_press", + "topic": "foobar/triggers/button1", + "type": "button_short_press", + "subtype": "button_1" +} +``` + +Discovery topic single: `homeassistant/sensor/0AFFD2/bla2/config` +Discovery id: `0AFFD2 bla2` *(both `0AFFD2` and `bla2` from the discovery topic)* +Discovery payload single: + +```json +{ + "device": { + "identifiers": ["0AFFD2"], + "name": "Test device" + }, + "o": { + "name": "foobar" + }, + "state_topic": "foobar/sensor/sensor1", + "unique_id": "bla_sensor001" +} +``` + +**Step 2: Initiate migration by publishing to both discovery topics:** + +When these single component discovery payloads are processed, and we want to initiate migration to a device-based discovery, we need to publish ... + +```json +{"migrate_discovery": true } +``` + +... to both discovery topics ... + +- `homeassistant/device_automation/0AFFD2/bla1/config` +- `homeassistant/sensor/0AFFD2/bla2/config` + +{% important %} +Check the logs to ensure this step is executed correctly. +{% endimportant %} + +**Step 3: Publish the new device-based discovery configuration:** + +Discovery topic device: `homeassistant/device/0AFFD2/config` +Discovery id: `0AFFD2 bla` *(`0AFFD2`from discovery topic, `bla`: The key under `cmp` in the discovery payload)* +Discovery payload device: + +```json +{ + "device": { + "identifiers": [ + "0AFFD2" + ] + }, + "o": { + "name": "foobar" + }, + "cmps": { + "bla1": { + "p": "device_automation", + "automation_type": "trigger", + "payload": "short_press", + "topic": "foobar/triggers/button1", + "type": "button_short_press", + "subtype": "button_1" + }, + "bla2": { + "p": "sensor", + "state_topic": "foobar/sensor/sensor1", + "unique_id": "bla_sensor001" + } + }, +} +``` + +{% important %} +Check the logs to ensure the migration was successful. +{% endimportant %} + +**Step 4: Clean up after successful migration:** + +After the logs show a successful migration, the single component discovery topics can be cleaned up safely by publishing an empty payload to them. +The logs should indicate if the discovery migration was successful. + +**Optional: Rolling back the migration:** + +To rollback publish ... + +```json +{"migrate_discovery": true } +``` + +To the device-based discovery topic(s). +After that, re-publish the single component discovery payloads. +At last, clean up the device-based discovery payloads by publishing an empty payload. + +Check the logs for every step. + +#### Single component discovery payload + +The `` part in the discovery topic must be one of the supported MQTT-platforms. +The options in the payload are only used to set up one specific component. If there are more components, more discovery payloads need to be sent for the other components, and it is then recommended to use [device-based discovery](/integrations/mqtt/#device-discovery-payload) instead. + +Example discovery payload: + +```json +{ + "dev": { + "ids": "ea334450945afc", + "name": "Kitchen", + "mf": "Bla electronics", + "mdl": "xya", + "sw": "1.0", + "sn": "ea334450945afc", + "hw": "1.0rev2", + }, + "o": { + "name":"bla2mqtt", + "sw": "2.1", + "url": "https://bla2mqtt.example.com/support", + }, + "device_class":"temperature", + "unit_of_measurement":"°C", + "value_template":"{% raw %}{{ value_json.temperature}}{% endraw %}", + "unique_id":"temp01ae_t", + "state_topic":"sensorBedroom/state", + "qos": 2, +} +``` + +To remove the component, publish an empty string to the discovery topic. This will remove the component and clear the published discovery payload. It will also remove the device entry if there are no further references to it. + +For more examples [see](/integrations/mqtt/#discovery-examples-with-component-discovery). + #### Discovery payload The payload must be a serialized JSON dictionary and will be checked like an entry in your {% term "`configuration.yaml`" %} file if a new device is added, with the exception that unknown configuration keys are allowed but ignored. This means that missing variables will be filled with the integration's default values. All configuration variables which are *required* must be present in the payload. The reason for allowing unknown documentation keys is allow some backwards compatibility, software generating MQTT discovery messages can then be used with older Home Assistant versions which will simply ignore new features. @@ -316,17 +634,21 @@ In the value of configuration variables ending with `_topic`, `~` will be replac Configuration variable names in the discovery payload may be abbreviated to conserve memory when sending a discovery message from memory constrained devices. -It is encouraged to add additional information about the origin that supplies MQTT entities via MQTT discovery by adding the `origin` option (can be abbreviated to `o`) to the discovery payload. Note that these options also support abbreviations. Information of the origin will be logged to the core event log when an item is discovered or updated. +It is recommended to add information about the origin of MQTT entities by including the `origin` option (abbreviated as `o`) in the discovery payload. For device-based discovery, this information is required. The origin details will be logged in the core event log when an item is discovered or updated. Adding origin information helps with troubleshooting and provides valuable context about the source of MQTT messages in your Home Assistant setup. + +Note: These options also support abbreviations, as shown in the table below. {% configuration_basic %} name: - description: The name of the application that is the origin the discovered MQTT item. This option is required. + description: The name of the application that is the origin of the discovered MQTT item. (Required) sw_version: description: Software version of the application that supplies the discovered MQTT item. support_url: description: Support URL of the application that supplies the discovered MQTT item. {% endconfiguration_basic %} +#### Supported abbreviations in MQTT discovery messages + {% details "Supported abbreviations" %} ```txt @@ -363,6 +685,7 @@ support_url: 'cmd_on_tpl': 'command_on_template', 'cmd_t': 'command_topic', 'cmd_tpl': 'command_template', + 'cmps': 'components', 'cod_arm_req': 'code_arm_required', 'cod_dis_req': 'code_disarm_required', 'cod_trig_req': 'code_trigger_required', @@ -375,6 +698,7 @@ support_url: 'dir_cmd_tpl': 'direction_command_template', 'dir_stat_t': 'direction_state_topic', 'dir_val_tpl': 'direction_value_template', + 'dsp_prc': 'display_precision', 'e': 'encoding', 'en': 'enabled_by_default', 'ent_cat': 'entity_category', @@ -419,6 +743,7 @@ support_url: 'max_hum': 'max_humidity', 'max_mirs': 'max_mireds', 'max_temp': 'max_temp', + 'migr_discvry': 'migrate_discovery', 'min': 'min', 'min_hum': 'min_humidity', 'min_mirs': 'min_mireds', @@ -440,6 +765,7 @@ support_url: 'osc_cmd_tpl': 'oscillation_command_template', 'osc_stat_t': 'oscillation_state_topic', 'osc_val_tpl': 'oscillation_value_template', + 'platform': 'p', 'pct_cmd_t': 'percentage_command_topic', 'pct_cmd_tpl': 'percentage_command_template', 'pct_stat_t': 'percentage_state_topic', @@ -612,7 +938,7 @@ support_url: {% enddetails %} -### How to use discovery messages +### Discovery messages en availability When MQTT discovery is set up, and a device or service sends a discovery message, an MQTT entity, tag, or device automation will be set up directly after receiving the message. @@ -702,47 +1028,21 @@ availability_template: description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`." required: false type: template +payload_available: + description: The payload that represents the available state. + required: false + type: string + default: online +payload_not_available: + description: The payload that represents the unavailable state. + required: false + type: string + default: offline {% endconfiguration %} {% enddetails %} -### Support by third-party tools - -The following software has built-in support for MQTT discovery: - -- [ArduinoHA](https://github.com/dawidchyrzynski/arduino-home-assistant) -- [Arilux AL-LC0X LED controllers](https://github.com/smrtnt/Arilux_AL-LC0X) -- [ble2mqtt](https://github.com/devbis/ble2mqtt) -- [digitalstrom-mqtt](https://github.com/gaetancollaud/digitalstrom-mqtt) -- [ebusd](https://github.com/john30/ebusd) -- [ecowitt2mqtt](https://github.com/bachya/ecowitt2mqtt) -- [EMS-ESP32 (and EMS-ESP)](https://github.com/emsesp/EMS-ESP32) -- [ESPHome](https://esphome.io) -- [ESPurna](https://github.com/xoseperez/espurna) -- [go-iotdevice](https://github.com/koestler/go-iotdevice) -- [HASS.Agent](https://github.com/LAB02-Research/HASS.Agent) -- [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0) -- [MiFlora MQTT Daemon](https://github.com/ThomDietrich/miflora-mqtt-daemon) -- [MyElectricalData](https://github.com/MyElectricalData/myelectricaldata_import#english) -- [Nuki Hub](https://github.com/technyon/nuki_hub) -- [Nuki Smart Lock 3.0 Pro](https://support.nuki.io/hc/articles/12947926779409-MQTT-support), [more info](https://developer.nuki.io/t/mqtt-api-specification-v1-3/17626) -- [OpenMQTTGateway](https://github.com/1technophile/OpenMQTTGateway) -- [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0) -- [SmartHome](https://github.com/roncoa/SmartHome) -- [SpeedTest-CLI MQTT](https://github.com/adorobis/speedtest-CLI2mqtt) -- [SwitchBot-MQTT-BLE-ESP32](https://github.com/devWaves/SwitchBot-MQTT-BLE-ESP32) -- [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e, development halted) -- [TeddyCloud](https://github.com/toniebox-reverse-engineering/teddycloud) -- [Teleinfo MQTT](https://fmartinou.github.io/teleinfo2mqtt) (starting with 3.0.0) -- [Tydom2MQTT](https://fmartinou.github.io/tydom2mqtt/) -- [What's up Docker?](https://fmartinou.github.io/whats-up-docker/) (starting with 3.5.0) -- [WyzeSense2MQTT](https://github.com/raetha/wyzesense2mqtt) -- [Xiaomi DaFang Hacks](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks) -- [Zehnder Comfoair RS232 MQTT](https://github.com/adorobis/hacomfoairmqtt) -- [Zigbee2MQTT](https://github.com/koenkk/zigbee2mqtt) -- [OTGateway](https://github.com/Laxilef/OTGateway) - -### Discovery examples +### Discovery examples with component discovery #### Motion detection (binary sensor) @@ -996,6 +1296,42 @@ The entity id is automatically generated from the entity's name. All MQTT integr In the example above, the entity_id will be `sensor.my_super_device` instead of `sensor.device1`. +### Support by third-party tools + +The following software has built-in support for MQTT discovery: + +- [ArduinoHA](https://github.com/dawidchyrzynski/arduino-home-assistant) +- [Arilux AL-LC0X LED controllers](https://github.com/smrtnt/Arilux_AL-LC0X) +- [ble2mqtt](https://github.com/devbis/ble2mqtt) +- [digitalstrom-mqtt](https://github.com/gaetancollaud/digitalstrom-mqtt) +- [ebusd](https://github.com/john30/ebusd) +- [ecowitt2mqtt](https://github.com/bachya/ecowitt2mqtt) +- [EMS-ESP32 (and EMS-ESP)](https://github.com/emsesp/EMS-ESP32) +- [ESPHome](https://esphome.io) +- [ESPurna](https://github.com/xoseperez/espurna) +- [go-iotdevice](https://github.com/koestler/go-iotdevice) +- [HASS.Agent](https://github.com/LAB02-Research/HASS.Agent) +- [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0) +- [MiFlora MQTT Daemon](https://github.com/ThomDietrich/miflora-mqtt-daemon) +- [MyElectricalData](https://github.com/MyElectricalData/myelectricaldata_import#english) +- [Nuki Hub](https://github.com/technyon/nuki_hub) +- [Nuki Smart Lock 3.0 Pro](https://support.nuki.io/hc/articles/12947926779409-MQTT-support), [more info](https://developer.nuki.io/t/mqtt-api-specification-v1-3/17626) +- [OpenMQTTGateway](https://github.com/1technophile/OpenMQTTGateway) +- [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0) +- [SmartHome](https://github.com/roncoa/SmartHome) +- [SpeedTest-CLI MQTT](https://github.com/adorobis/speedtest-CLI2mqtt) +- [SwitchBot-MQTT-BLE-ESP32](https://github.com/devWaves/SwitchBot-MQTT-BLE-ESP32) +- [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e, development halted) +- [TeddyCloud](https://github.com/toniebox-reverse-engineering/teddycloud) +- [Teleinfo MQTT](https://fmartinou.github.io/teleinfo2mqtt) (starting with 3.0.0) +- [Tydom2MQTT](https://fmartinou.github.io/tydom2mqtt/) +- [What's up Docker?](https://fmartinou.github.io/whats-up-docker/) (starting with 3.5.0) +- [WyzeSense2MQTT](https://github.com/raetha/wyzesense2mqtt) +- [Xiaomi DaFang Hacks](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks) +- [Zehnder Comfoair RS232 MQTT](https://github.com/adorobis/hacomfoairmqtt) +- [Zigbee2MQTT](https://github.com/koenkk/zigbee2mqtt) +- [OTGateway](https://github.com/Laxilef/OTGateway) + ## Manual configured MQTT items For most integrations, it is also possible to manually set up MQTT items in {% term "`configuration.yaml`" %}. Read more [about configuration in YAML](/docs/configuration/yaml). @@ -1098,7 +1434,6 @@ The MQTT integration will register the `mqtt.publish` action, which allows publi | `qos` | yes | Quality of Service to use. (default: 0) | | `retain` | yes | If message should have the retain flag set. (default: false) | - {% 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 %} @@ -1107,7 +1442,6 @@ When `payload` is rendered from [template](/docs/configuration/templating/#using 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 payload: on diff --git a/source/_integrations/notify.mqtt.markdown b/source/_integrations/notify.mqtt.markdown index 2d7dca5ffb6..1f3de5342a0 100644 --- a/source/_integrations/notify.mqtt.markdown +++ b/source/_integrations/notify.mqtt.markdown @@ -131,6 +131,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -173,7 +177,7 @@ retain: type: boolean default: false unique_id: - description: An ID that uniquely identifies this notify entity. If two notify entities have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this notify entity. If two notify entities have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/number.mqtt.markdown b/source/_integrations/number.mqtt.markdown index 68d44cdbbb7..990fbef9639 100644 --- a/source/_integrations/number.mqtt.markdown +++ b/source/_integrations/number.mqtt.markdown @@ -129,6 +129,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -174,6 +178,10 @@ payload_reset: required: false type: string default: '"None"' +platform: + description: Must be `number`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -194,7 +202,7 @@ step: type: float default: 1 unique_id: - description: An ID that uniquely identifies this Number. If two Numbers have the same unique ID Home Assistant will raise an exception. + description: An ID that uniquely identifies this Number. If two Numbers have the same unique ID Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string unit_of_measurement: diff --git a/source/_integrations/onkyo.markdown b/source/_integrations/onkyo.markdown index 0898ebbcc54..d56f1c86a8f 100644 --- a/source/_integrations/onkyo.markdown +++ b/source/_integrations/onkyo.markdown @@ -3,93 +3,51 @@ title: Onkyo description: Instructions on how to integrate Onkyo and some Pioneer receivers into Home Assistant. ha_category: - Media player -ha_release: 0.17 -ha_iot_class: Local Push +ha_codeowners: + - '@arturpragacz' +ha_config_flow: true ha_domain: onkyo +ha_integration_type: integration +ha_iot_class: Local Push ha_platforms: - media_player -ha_integration_type: integration +ha_release: 0.17 related: - docs: /docs/configuration/ title: Configuration file -ha_codeowners: - - '@arturpragacz' --- The `onkyo` {% term integration %} allows you to control a [Onkyo](https://www.onkyo.com), [Integra](http://www.integrahometheater.com) and some recent [Pioneer](https://www.pioneerelectronics.com) receivers from Home Assistant. Please be aware that you need to enable "Network Standby" for this integration to work in your Hardware. -## Configuration +{% include integrations/config_flow.md %} -To add an Onkyo or Pioneer receiver to your installation, add the following to your {% term "`configuration.yaml`" %} file. -{% include integrations/restart_ha_after_config_inclusion.md %} +If your receiver has second or third zone available, they are displayed as additional media players with the same functionality as the main zone. -```yaml -# Example configuration.yaml entry -media_player: - - platform: onkyo - host: 192.168.1.2 - name: receiver - sources: - pc: "HTPC" -``` - - If your receiver has second or third zone’s available, they are displayed as additional media players with the same functionality as the main zone. - -{% configuration %} -host: - description: IP address of the device. Example:`192.168.1.2`. If not specified, the platform will load any discovered receivers. - required: false +{% configuration_basic %} +Host: + description: Hostname or IP address of the device, for example:`192.168.1.2`. type: string -name: - description: Name of the device. (*Required if host is specified*) - required: false - type: string -max_volume: - description: Maximum volume as a percentage. Often the maximum volume of the receiver is far too loud. Setting this will set Home Assistant's 100% volume to be this setting on the amp. i.e., if you set this to 50% when you set Home Assistant to be 100% then your receiver will be set to 50% of its maximum volume. - required: false +Volume Resolution: + description: Number of steps it takes for the receiver to go from the lowest to the highest possible volume. Possible values are 50, 80, 100, 200. For older Onkyo receivers, this typically is 80; newer Onkyo receivers use 200. + type: integer +Input sources: + description: List of input sources supported by the receiver. + type: list +{% endconfiguration_basic %} + +{% include integrations/option_flow.md %} + +{% configuration_basic %} +Max Volume: + description: Maximum volume limit as a percentage. Often the maximum volume of the receiver is far too loud. Setting this will set Home Assistant's 100% volume to be this setting on the amp, i.e., if you set this to 50%, when you set Home Assistant to be 100%, then your receiver will be set to 50% of its maximum volume. default: 100 type: integer -receiver_max_volume: - description: The number of steps it takes for the receiver to go from the lowest to the highest possible volume. Possible values are 50, 80, 100, 200. For older Onkyo receivers, this typically is 80; newer Onkyo receivers use 200. - required: false - default: 80 - type: integer -sources: - description: A list of mappings from source to source name. Valid sources can be found below. A default list will be used if no source mapping is specified. - required: false +Input sources: + description: Mappings of input sources to their names. type: list -{% endconfiguration %} - -List of source names: - -- `video1` -- `video2` -- `video3` -- `video4` -- `video5` -- `video6` -- `video7` -- `dvd` -- `bd-dvd` -- `tape1` -- `tv-tape` -- `tape2` -- `phono` -- `cd` -- `tv-cd` -- `fm` -- `am` -- `tuner` -- `dlna` -- `internet-radio` -- `usb` -- `network` -- `universal-port` -- `multi-ch` -- `xm` -- `sirius` +{% endconfiguration_basic %} ### Action `onkyo_select_hdmi_output` @@ -105,6 +63,21 @@ Accepted values are: which one to use seems to vary depending on model so you will have to try them out. ( For model TX-NR676E it seems to be 'out' for main, 'out-sub' for sub, and 'sub' for both ) +### Example `onkyo_select_hdmi_output` script + +```yaml +# Example onkyo_select_hdmi_output script +# +script: + hdmi_sub: + alias: "Hdmi out projector" + sequence: + - action: media_player.onkyo_select_hdmi_output + data: + entity_id: media_player.onkyo + hdmi_output: out-sub +``` + ### Example `play_media` script The `play_media` function can be used in script to play radio station by preset number. @@ -114,7 +87,7 @@ Not working for NET radio. # Example play_media script # script: - radio1: + radio1: alias: "Radio 1" sequence: - action: media_player.turn_on @@ -127,18 +100,3 @@ script: media_content_type: "radio" media_content_id: "1" ``` - -### Example `onkyo_select_hdmi_output` script - -```yaml -# Example onkyo_select_hdmi_output script -# -script: - hdmi_sub: - alias: "Hdmi out projector" - sequence: - - action: media_player.onkyo_select_hdmi_output - data: - entity_id: media_player.onkyo - hdmi_output: out-sub -``` diff --git a/source/_integrations/osoenergy.markdown b/source/_integrations/osoenergy.markdown index 3ea3a379ce6..027cc68e3d1 100644 --- a/source/_integrations/osoenergy.markdown +++ b/source/_integrations/osoenergy.markdown @@ -24,6 +24,196 @@ This OSO Energy integration uses a subscription key, which a user can create for {% include integrations/config_flow.md %} +## Services + +### Service `osoenergy.get_profile` + +You can use the service `osoenergy.get_profile` to get the temperature profile for a water heater. Each temperature corresponds to a given local hour during the current day. For example, a temperature at index 1 corresponds to 01:00 local time. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------- | +| `entity_id` | no | String, name of entity. For example: `water_heater.heater` | + +Example: + +```yaml +# Example script to get the temperature profile of a water heater. +script: + get_profile: + sequence: + - service: osoenergy.get_profile + target: + entity_id: water_heater.heater +``` + +```yaml +# Example response for the temperature profile of the heater. +water_heater.heater: + profile: + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 + - 70 +``` + +### Service `osoenergy.set_profile` + +You can use the service `osoenergy.set_profile` to set the temperature profile for a water heater. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------- | +| `entity_id` | no | String, Name of entity e.g., `water_heater.heater` | +| `hour_00` | yes | The temperature at hour 00:00 (Local) for a heater | +| `hour_01` | yes | The temperature at hour 01:00 (Local) for a heater | +| `hour_02` | yes | The temperature at hour 02:00 (Local) for a heater | +| `hour_03` | yes | The temperature at hour 03:00 (Local) for a heater | +| `hour_04` | yes | The temperature at hour 04:00 (Local) for a heater | +| `hour_05` | yes | The temperature at hour 05:00 (Local) for a heater | +| `hour_06` | yes | The temperature at hour 06:00 (Local) for a heater | +| `hour_07` | yes | The temperature at hour 07:00 (Local) for a heater | +| `hour_08` | yes | The temperature at hour 08:00 (Local) for a heater | +| `hour_09` | yes | The temperature at hour 09:00 (Local) for a heater | +| `hour_10` | yes | The temperature at hour 10:00 (Local) for a heater | +| `hour_11` | yes | The temperature at hour 11:00 (Local) for a heater | +| `hour_12` | yes | The temperature at hour 12:00 (Local) for a heater | +| `hour_13` | yes | The temperature at hour 13:00 (Local) for a heater | +| `hour_14` | yes | The temperature at hour 14:00 (Local) for a heater | +| `hour_15` | yes | The temperature at hour 15:00 (Local) for a heater | +| `hour_16` | yes | The temperature at hour 16:00 (Local) for a heater | +| `hour_17` | yes | The temperature at hour 17:00 (Local) for a heater | +| `hour_18` | yes | The temperature at hour 18:00 (Local) for a heater | +| `hour_19` | yes | The temperature at hour 19:00 (Local) for a heater | +| `hour_20` | yes | The temperature at hour 20:00 (Local) for a heater | +| `hour_21` | yes | The temperature at hour 21:00 (Local) for a heater | +| `hour_22` | yes | The temperature at hour 22:00 (Local) for a heater | +| `hour_23` | yes | The temperature at hour 23:00 (Local) for a heater | + +Example: + +```yaml +# Example script to set temperature profile for a water heater. +script: + set_profile: + sequence: + - service: osoenergy.set_profile + target: + entity_id: water_heater.heater + data: + hour_00: 70 + hour_01: 70 + hour_02: 70 + hour_03: 70 + hour_04: 70 + hour_05: 70 + hour_06: 70 + hour_07: 70 + hour_08: 70 + hour_09: 70 + hour_10: 70 + hour_11: 70 + hour_12: 70 + hour_13: 70 + hour_14: 70 + hour_15: 70 + hour_16: 70 + hour_17: 70 + hour_18: 70 + hour_19: 70 + hour_20: 70 + hour_21: 70 + hour_22: 70 + hour_23: 70 +``` + +### Service `osoenergy.set_v40_min` + +You can use the service `osoenergy.set_v40_min` to set the minimum quantity of water at 40°C for a water heater. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------------------------------------------- | +| `entity_id` | no | String, name of entity. For example: `water_heater.heater` f entity e.g., `water_heater.heater` | +| `v40_min` | no | Specify the minimum quantity of water at 40°C for a water heater. For example, `240` | + +Examples: + +```yaml +# Example script to set minimum water level on a water heater, v40 min specified. +script: + set_v40: + sequence: + - service: osoenergy.set_v40_min + target: + entity_id: water_heater.heater + data: + v40_min: 240 +``` + +### Service `osoenergy.turn_off` + +You can use the service `osoenergy.turn_off` to turn off the heating on your device for one hour or until the minimum temperature is reached. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | String, name of entity. For example: `water_heater.heater` | +| `until_temp_limit` | no | Choose, if the heating should be off until the minimum temperature (`True`) is reached, or for one hour (`False`). For example, `True` | + +Examples: + +```yaml +# Example script to turn off heating, until temp limit specified. +script: + turn_off: + sequence: + - service: osoenergy.turn_off + target: + entity_id: water_heater.heater + data: + until_temp_limit: true +``` + +### Service `osoenergy.turn_on` + +You can use the service `osoenergy.turn_on` to turn on the heating on your device for one hour or until the maximum temperature is reached. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | String, name of entity. For example: `water_heater.heater` | +| `until_temp_limit` | no | Choose, if the heating should be on until the maximum temperature (`True`) is reached, or for one hour (`False`). For example, `True` | + +Examples: + +```yaml +# Example script to turn on the heating until the specified temperature limit has been reached. +script: + turn_on: + sequence: + - service: osoenergy.turn_on + target: + entity_id: water_heater.heater + data: + until_temp_limit: true +``` + ## Binary sensors The **OSO Energy** integration exposes OSO Energy data as a binary sensor. It provides the following binary sensors: diff --git a/source/_integrations/palazzetti.markdown b/source/_integrations/palazzetti.markdown new file mode 100644 index 00000000000..f43f7127e99 --- /dev/null +++ b/source/_integrations/palazzetti.markdown @@ -0,0 +1,41 @@ +--- +title: Palazzetti +description: Instructions on how to integrate Palazzetti within Home Assistant. +ha_category: + - Climate +ha_release: 2024.11 +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@dotvav' +ha_domain: palazzetti +ha_platforms: + - climate +ha_integration_type: device +--- + +The **Palazzetti** {% term integration %} integrates the [Palazzetti](https://palazzettigroup.com/) +stoves equipped with a [Connection Box](https://palazzettigroup.com/research-and-development/app/). +It is accessing the device's local API. + +{% include integrations/config_flow.md %} + +## Climate + +The Palazetti integration offers a climate entity that allows you to read the +room temperature, start and stop the stove, set the target temperature, and set +the fan speed. + +### Integration actions + +This integration supports the following actions (see [Climate](/integrations/climate/)). + +- [`set_temperature`](/integrations/climate/#action-climateset_temperature) +- [`set_hvac_mode`](/integrations/climate/#action-climateset_hvac_mode) + - `heat` for heating mode + - `off` to turn the stove off +- [`set_fan_mode`](/integrations/climate/#action-climateset_fan_mode) + - `Silent` let the stove run in silent mode + - `1`, `2`, `3`, `4`, `5` increasing fan speeds + - `High` the highest available fan speed + - `Auto` let the stove set the optimal fan speed diff --git a/source/_integrations/pegel_online.markdown b/source/_integrations/pegel_online.markdown index dfcfa9e3065..f8eaec981d0 100644 --- a/source/_integrations/pegel_online.markdown +++ b/source/_integrations/pegel_online.markdown @@ -9,6 +9,7 @@ ha_config_flow: true ha_iot_class: Cloud Polling ha_domain: pegel_online ha_platforms: + - diagnostics - sensor ha_codeowners: - '@mib1185' diff --git a/source/_integrations/pinecil.markdown b/source/_integrations/pinecil.markdown index f8a7e293fdb..abea23d09a1 100644 --- a/source/_integrations/pinecil.markdown +++ b/source/_integrations/pinecil.markdown @@ -4,6 +4,7 @@ description: Connect and control your Pinecil devices using the IronOS integrati ha_category: - Number - Sensor + - Update ha_release: 2024.8 ha_domain: pinecil ha_integration_type: virtual @@ -15,6 +16,7 @@ ha_config_flow: true ha_platforms: - number - sensor + - update ha_iot_class: Local Polling --- diff --git a/source/_integrations/prometheus.markdown b/source/_integrations/prometheus.markdown index 8fa1bb1287f..9558608a81a 100644 --- a/source/_integrations/prometheus.markdown +++ b/source/_integrations/prometheus.markdown @@ -189,22 +189,27 @@ When looking into the metrics on the Prometheus side, there will be: - All Home Assistant domains, which can be easily found through the common **namespace** prefix, if defined. - The [client library](https://github.com/prometheus/client_python) provided metrics, which are a bunch of **process_\*** and also a single pseudo-metric **python_info** which contains (not as value but as labels) information about the Python version of the client, i.e., the Home Assistant Python interpreter. - + Typically, you will only be interested in the first set of metrics. ## Metrics in unavailable or unknown states -When the Prometheus exporter starts (typically when Home Assistant starts), all non-excluded entities in an unavailable or unknown state are not be exported until they are available again. If the entity goes into state unavailable or unknown again, the value exported will always be the latest known one. +When the Prometheus exporter starts (typically when Home Assistant starts), all non-excluded entities in an unavailable or unknown state are not exported until they are available and known. -While an entity is in those states, the `entity_available` corresponding metric is set to 0. This metric can be used to filter out values while the entity is unavailable or in an unknown state thanks to a [recording rule](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/). +If an available entity goes into state unavailable or unknown, then it will automatically be unexported and return again automatically when available and known. -For example: +{% note %} + +To filter out these stale values, `entity_available` could be used in a query or recording rule. For example: ```yaml - record: "known_temperature_c" expr: "temperature_c unless entity_available == 0" ``` +This use of `unless` (which can be slow to compute) is no longer necessary, but will continue to work. +{% endnote %} + ## Supported metrics Metrics are exported only for the following domains: diff --git a/source/_integrations/refoss.markdown b/source/_integrations/refoss.markdown index 8027b414864..822401849ff 100644 --- a/source/_integrations/refoss.markdown +++ b/source/_integrations/refoss.markdown @@ -30,11 +30,12 @@ Integrate Refoss devices into Home Assistant. ### Supported device models -| Model | Version | -| ----------- |--------------------| +| Model | Version | +|-------------------------------------|--------------------| | `Refoss Smart Wi-Fi Switch, R10` | `all` | | `Refoss Smart Wi-Fi Switch, R20` | `all` | | `Refoss Smart Energy Monitor, EM06` | `v2.3.8 and above` | +| `Refoss Smart Energy Monitor, EM16` | `v3.1.7 and above` | ### Discover device diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index b50776bd7e0..ed52d463615 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -76,11 +76,9 @@ Depending on the supported features of the camera, binary sensors are added for: - AI package detection+ - Sleep status -\+ These sensors receive events using 3 methods in order: ONVIF push, ONVIF long polling or fast polling (every 5 seconds). -The latency for receiving the events is the best for ONVIF push and the worst for fast polling, the fastest available method that is detected to work will be used, and slower methods will not be used. +\+ These sensors receive events using the following 4 methods (in order): TCP push, ONVIF push, ONVIF long polling or fast polling (every 5 seconds). +The latency for receiving the events is the best for TCP push and the worst for fast polling, the fastest available method that is detected to work will be used, and slower methods will not be used. For redundancy, these sensors are polled every 60 seconds together with the update of all other entities. -Not all camera models generate ONVIF push events for all event types, some binary sensors might, therefore, only be polled. -For list of Reolink products that support ONVIF see the [Reolink Support Site](https://support.reolink.com/hc/en-us/articles/900000617826). To ensure you have the best latency possible, refer to the [Reducing latency of motion events](#reducing-latency-of-motion-events) section. ## Number entities @@ -378,11 +376,7 @@ Normally, the digits are printed directly under the QR code. Alternatively, you Then power up the camera while pointing it at the QR code. It takes about a minute to initialize, read the QR code, and connect to your Wi-Fi. -### 2. Enabling HTTP/HTTPS ports - -Test if you can access the camera by its IP address in your browser `https://`. If you cannot, in the [Reolink mobile app, Windows, or Mac client](https://reolink.com/software-and-manual/) ensure at least one of the HTTP/HTTPS ports are enabled under **Settings** > **top camera model box** > **Network Information** > **Advanced** (mobile) or **Settings** > **Network** > **Advanced** > **Port Settings** (PC). See [additional instructions](https://support.reolink.com/hc/en-us/articles/900000621783-How-to-Set-up-Reolink-Ports-Settings/) on the Reolink site. - -### 3. Add integration in Home Assistant +### 2. Add integration in Home Assistant Set up the Reolink integration in Home Assistant using the credentials you set in step 1. @@ -394,7 +388,7 @@ Set up the Reolink integration in Home Assistant using the credentials you set i ## Troubleshooting - Older firmware versions do not expose the necessary information the integration needs to function. Ensure the camera is updated to the [latest firmware](https://reolink.com/download-center/) prior to setting up the integration. Note that Reolink auto update and check for update functions in the app/windows/web client often do not show the latest available firmware version. Therefore check the version in the [Reolink download center](https://reolink.com/download-center/) online. -- Ensure at least one of the HTTP/HTTPS ports is enabled in the [Reolink mobile app, Windows, or Mac client](https://reolink.com/software-and-manual/) under **Settings** > **top camera model box** > **Network Information** > **Advanced** (mobile) or **Settings** > **Network** > **Advanced** > **Port Settings** (PC), see [additional instructions](https://support.reolink.com/hc/en-us/articles/900000621783-How-to-Set-up-Reolink-Ports-Settings/) on the Reolink site. +- Test if you can access the camera by its IP address in your browser `https://`. If you cannot, in the [Reolink mobile app, Windows, or Mac client](https://reolink.com/software-and-manual/) ensure at least one of the HTTP/HTTPS ports are enabled under **Settings** > **top camera model box** > **Network Information** > **Advanced** (mobile) or **Settings** > **Network** > **Advanced** > **Port Settings** (PC). See [additional instructions](https://support.reolink.com/hc/en-us/articles/900000621783-How-to-Set-up-Reolink-Ports-Settings/) on the Reolink site. - On some camera models, the RTMP port needs to be enabled in order for the HTTP(S) port to function properly. Make sure this port is also enabled if you get a `Cannot connect to host` error while one of the HTTP/HTTPS ports is already enabled. - Setting a static IP address for Reolink cameras/NVRs in your router is advisable to prevent (temporal) connectivity issues when the IP address changes. - Do not set a static IP in the Reolink device itself, but leave the **Connection Type** on **DHCP** under **Settings** > **Network** > **Network Information** > **Set Up**. If you set it to **static** on the Reolink device itself, this is known to cause incorrect DHCP requests on the network. The incorrect DHCP request causes Home Assistant to use the wrong IP address for the camera, resulting in connection issues. The issue originates from the Reolink firmware, which keeps sending DCHP requests even when you set a static IP address in the Reolink device. @@ -404,11 +398,11 @@ Set up the Reolink integration in Home Assistant using the credentials you set i ### Reducing latency of motion events -ONVIF push will result in slightly faster state changes of the binary motion/AI event sensors than ONVIF long polling. -Moreover, ONVIF push is less demanding for the camera than ONVIF long polling or fast polling, resulting in potentially less connection issues. -However, ONVIF push has some additional network configuration requirements: +TCP push and ONVIF push will result in slightly faster state changes of the binary motion/AI event sensors than ONVIF long polling. +Moreover, TCP push and ONVIF push are less demanding for the camera than ONVIF long polling or fast polling, resulting in potentially less connection issues. +TCP push does not have any particular requirements. However, ONVIF push has some additional network configuration requirements: -- Reolink products can not push motion events to an HTTPS address (SSL). +- Reolink products can not push ONVIF motion events to an HTTPS address (SSL). Therefore, make sure a (local) HTTP address at which HA is reachable is configured under **Home Assistant URL** in the {% my network title="network settings" %}. A valid address could, for example, be `http://192.168.1.10:8123` where `192.168.1.10` is the IP of the Home Assistant device. @@ -416,4 +410,4 @@ A valid address could, for example, be `http://192.168.1.10:8123` where `192.168 Therefore, ensure no Global SSL certificate is configured in the [`configuration.yaml` under HTTP](/integrations/http/#ssl_certificate). An SSL certificate can still be enforced for external connections, by, for instance, using the [NGINX add-on](https://github.com/home-assistant/addons/tree/master/nginx_proxy) or [NGINX Proxy Manager add-on](https://github.com/hassio-addons/addon-nginx-proxy-manager) instead of a globally enforced SSL certificate. -To see if a Reolink integration is currently using `ONVIF push`, `ONVIF long polling` or `Fast polling`, [download the diagnostics text file](/docs/configuration/troubleshooting/#download-diagnostics) and find the `"event connection": "ONVIF push"\"ONVIF long polling"\"Fast polling"` in the txt file. +To see if a Reolink integration is currently using `TCP push`, `ONVIF push`, `ONVIF long polling` or `Fast polling`, [download the diagnostics text file](/docs/configuration/troubleshooting/#download-diagnostics) and find the `"event connection": "TCP push"\"ONVIF push"\"ONVIF long polling"\"Fast polling"` in the txt file. diff --git a/source/_integrations/roomba.markdown b/source/_integrations/roomba.markdown index f44c0919c25..6c5f4db1601 100644 --- a/source/_integrations/roomba.markdown +++ b/source/_integrations/roomba.markdown @@ -10,7 +10,6 @@ ha_codeowners: - '@pschmitt' - '@cyr-ius' - '@shenxn' - - '@Xitee1' - '@Orhideous' ha_domain: roomba ha_config_flow: true diff --git a/source/_integrations/scene.mqtt.markdown b/source/_integrations/scene.mqtt.markdown index 7ddd58d84c5..c581f777c31 100644 --- a/source/_integrations/scene.mqtt.markdown +++ b/source/_integrations/scene.mqtt.markdown @@ -124,6 +124,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string encoding: description: The encoding of the published messages. required: false @@ -165,6 +169,10 @@ payload_on: required: false type: string default: "ON" +platform: + description: Must be `scene`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -176,7 +184,7 @@ retain: type: boolean default: false unique_id: - description: An ID that uniquely identifies this scene entity. If two scenes have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this scene entity. If two scenes have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/schlage.markdown b/source/_integrations/schlage.markdown index ff28e393d3f..5a738c02fd0 100644 --- a/source/_integrations/schlage.markdown +++ b/source/_integrations/schlage.markdown @@ -14,6 +14,7 @@ ha_platforms: - binary_sensor - diagnostics - lock + - select - sensor - switch ha_integration_type: integration @@ -37,6 +38,12 @@ Once you have enabled the Schlage integration, you should see the following bina - **Keypad disabled** - Indicates that the keypad has been disabled, typically due to too many incorrect lock codes being attempted. +## Select + +Once you have enabled the Schlage integration, you should see the following selects: + +- **Auto Lock Time** - Configure the time until the deadbolt automatically locks, or disable the auto-lock feature entirely. For example, `0`: auto-lock is disabled, `15`: auto-lock after 15 seconds, `300`: auto-lock after 5 minutes. + ## Sensor Once you have enabled the Schlage integration, you should see the following sensors: diff --git a/source/_integrations/select.mqtt.markdown b/source/_integrations/select.mqtt.markdown index 03c03470fa3..f37de8c0236 100644 --- a/source/_integrations/select.mqtt.markdown +++ b/source/_integrations/select.mqtt.markdown @@ -137,6 +137,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -166,6 +170,10 @@ options: description: List of options that can be selected. An empty list or a list with a single item is allowed. required: true type: list +platform: + description: Must be `select`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -181,7 +189,7 @@ state_topic: required: false type: string unique_id: - description: An ID that uniquely identifies this Select. If two Selects have the same unique ID Home Assistant will raise an exception. + description: An ID that uniquely identifies this Select. If two Selects have the same unique ID Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index 622b9a9cd44..2fb2ec6cf49 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -58,7 +58,7 @@ The following device classes are supported for sensors: - **data_rate**: Data rate in bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s or GiB/s - **data_size**: Data size in bit, kbit, Mbit, Gbit, B, kB, MB, GB, TB, PB, EB, ZB, YB, KiB, MiB, GiB, TiB, PiB, EiB, ZiB or YiB - **date**: Date string (ISO 8601) -- **distance**: Generic distance in km, m, cm, mm, mi, yd, or in +- **distance**: Generic distance in km, m, cm, mm, mi, nmi, yd, or in - **duration**: Duration in d, h, min, or s - **energy**: Energy in J, kJ, MJ, GJ, Wh, kWh, MWh, cal, kcal, Mcal, or Gcal - **energy_storage**: Stored energy in J, kJ, MJ, GJ, Wh, kWh, MWh, cal, kcal, Mcal, or Gcal diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown index e3982b60e9c..06fc7dee130 100644 --- a/source/_integrations/sensor.mqtt.markdown +++ b/source/_integrations/sensor.mqtt.markdown @@ -130,6 +130,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. When set, the entity category must be `diagnostic` for sensors. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string expire_after: description: If set, it defines the number of seconds after the sensor's state expires, if it's not updated. After expiry, the sensor's state becomes `unavailable`. Default the sensors state never expires. required: false @@ -179,6 +183,10 @@ payload_not_available: required: false type: string default: offline +platform: + description: Must be `sensor`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string suggested_display_precision: description: The number of decimals which should be used in the sensor's state after rounding. required: false @@ -197,7 +205,7 @@ state_topic: required: true type: string unique_id: - description: "An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception." + description: "An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery." required: false type: string unit_of_measurement: diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index 83dd6ae8a09..7edc5df9009 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -330,6 +330,10 @@ The integration supports the following virtual components: - `text` in `field` mode, for which a `text` platform entity is created - `text` in `label` mode, for which a `sensor` platform entity is created +## Scripts (generation 2 and 3) + +For each device script, the integration creates a `switch` entity that allows you to control the script. These entities are disabled by default. + ## Additional info Shelly devices rely on [SNTP](https://en.wikipedia.org/wiki/Network_Time_Protocol#SNTP) for features like power measurement. diff --git a/source/_integrations/siren.mqtt.markdown b/source/_integrations/siren.mqtt.markdown index c3dcfc57d42..342ee7782f5 100644 --- a/source/_integrations/siren.mqtt.markdown +++ b/source/_integrations/siren.mqtt.markdown @@ -148,6 +148,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -194,6 +198,10 @@ payload_on: required: false type: string default: "ON" +platform: + description: Must be `siren`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -233,7 +241,7 @@ support_volume_set: type: boolean default: true unique_id: - description: An ID that uniquely identifies this siren device. If two sirens have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this siren device. If two sirens have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/smarty.markdown b/source/_integrations/smarty.markdown index 0ac2ca4c9f2..a4e8823ca78 100644 --- a/source/_integrations/smarty.markdown +++ b/source/_integrations/smarty.markdown @@ -5,6 +5,7 @@ ha_category: - Fan - Hub - Sensor +ha_config_flow: true ha_iot_class: Local Polling ha_release: 0.95 ha_codeowners: @@ -35,23 +36,4 @@ The integration has a fan platform to view and control the ventilation speed, an - Warning - Filter Change Timer -## Configuration - -To set it up, add the following information to your {% term "`configuration.yaml`" %} file: - -```yaml -smarty: - host: 192.168.0.10 -``` - -{% configuration %} -host: - description: The IP Address of the unit. - required: true - type: string -name: - description: The name of this device as you want to see it in Home Assistant. - required: false - default: Smarty - type: string -{% endconfiguration %} +{% include integrations/config_flow.md %} diff --git a/source/_integrations/spider.markdown b/source/_integrations/spider.markdown deleted file mode 100644 index 975b2535d5f..00000000000 --- a/source/_integrations/spider.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Itho Daalderop Spider -description: Instructions on how to setup the Spider hub within Home Assistant. -ha_category: - - Climate - - Hub - - Switch -ha_iot_class: Cloud Polling -ha_release: 0.75 -ha_codeowners: - - '@peternijssen' -ha_domain: spider -ha_config_flow: true -ha_platforms: - - climate - - sensor - - switch -ha_integration_type: integration ---- - -The `spider` integration is the main integration to integrate all [Itho Daalderop Spider](https://www.ithodaalderop.nl/spider-thermostaat) related platforms. You will need your Spider account information (username, password) to discover and control devices which are related to your account. - -There is currently support for the following device types within Home Assistant: - -- Climate -- Switch - -{% include integrations/config_flow.md %} - -{% note %} -This integration is not affiliated with Itho Daalderop Spider and retrieves data from the endpoints of the mobile application. Use at your own risk. -{% endnote %} - -### Climate - -{% note %} -Although this integration lets you change the operation mode to heating or cooling, it doesn't necessarily mean your boiler can. Spider is not aware of your current situation. -{% endnote %} diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index fe3f53722e7..af686b8ea09 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -13,7 +13,9 @@ ha_codeowners: ha_domain: spotify ha_zeroconf: true ha_platforms: + - diagnostics - media_player + - sensor ha_integration_type: service --- @@ -152,3 +154,19 @@ The `media_content_id` value can be obtained from the Spotify desktop app by cli ## Unsupported devices - **Sonos**: Although Sonos is a Spotify Connect device, it is not supported by the official Spotify API. + +## Sensors + +Spotify provides sensors that display information about the song that is currently being played. The following sensors are available: + +- **Song acousticness**: Indicates how much the sound is free from electronic modification. 100% indicates it not electronically modified. +- **Song danceability**. In percent. Describes how suitable a track is for dancing based on a combination of musical elements including tempo, rhythm stability, beat strength, and overall regularity. The higher the value, the more danceable. +- **Song energy**. In percent. A measure of intensity and activity. Typically, energetic tracks feel fast, loud, and noisy. For example, death metal has high energy, while a Bach prelude scores low on the scale. Perceptual features contributing to this attribute include dynamic range, perceived loudness, timbre, onset rate, and general entropy. A higher number means more energetic. +- **Song instrumentalness**: In percent. Describes whether a track contains no vocals. “Ooh” and “aah” sounds are treated as instrumental in this context. Rap or spoken word tracks are clearly “vocal”. The higher the value the more instrumental the song is. +- **Song key**: The estimated overall key of the track. If no key was detected, the value is unknown. For example, C sharp or E flat. +- **Song liveness**: In percent. Describes the presence of an audience in the recording. Higher liveness values represent an increased probability that the track was performed live. +- **Song mode**: The modality (major or minor) of a song. +- **Song speechiness**: In percent. Describes the presence of spoken words in a song. The more exclusively speech-like the recording (for example, talk show, audio book, poetry), the higher the value. +- **Song tempo**: The speed of the piece of music that is currently playing, in beats per minute (bpm). +- **Song time signature**: The time signature (meter) is a notational convention to specify how many beats are in each bar (or measure). For example: 4/4, 6/8. +- **Song valence**. In percent. Tracks with high valence sound more positive (happy, cheerful, euphoric), while tracks with low valence sound more negative (sad, depressed, angry). \ No newline at end of file diff --git a/source/_integrations/squeezebox.markdown b/source/_integrations/squeezebox.markdown index 44fc26ce4da..d9cc0b10305 100644 --- a/source/_integrations/squeezebox.markdown +++ b/source/_integrations/squeezebox.markdown @@ -8,6 +8,8 @@ ha_iot_class: Local Polling ha_domain: squeezebox ha_codeowners: - '@rajlaud' + - '@pssc' + - '@peteS-UK' ha_config_flow: true ha_dhcp: true ha_platforms: diff --git a/source/_integrations/suez_water.markdown b/source/_integrations/suez_water.markdown index 3d45195c6e7..ffb57c2ca21 100644 --- a/source/_integrations/suez_water.markdown +++ b/source/_integrations/suez_water.markdown @@ -8,6 +8,7 @@ ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - '@ooii' + - '@jb101010-2' ha_domain: suez_water ha_platforms: - sensor diff --git a/source/_integrations/switch.mqtt.markdown b/source/_integrations/switch.mqtt.markdown index b413675da0b..dd71faec44c 100644 --- a/source/_integrations/switch.mqtt.markdown +++ b/source/_integrations/switch.mqtt.markdown @@ -143,6 +143,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -189,6 +193,10 @@ payload_on: required: false type: string default: "ON" +platform: + description: Must be `switch`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -214,7 +222,7 @@ state_topic: required: false type: string unique_id: - description: An ID that uniquely identifies this switch device. If two switches have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this switch device. If two switches have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 19fe9fdcbc5..60921459d41 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -58,7 +58,7 @@ Some SwitchBot devices need to be configured within the app before being control - [Curtain 3 (WoCtn3)](https://switch-bot.com/pages/switchbot-curtain-3) - Humidifier (WoHumi) - Light Strip (WoStrip) -- [Meter](https://switch-bot.com/pages/switchbot-meter) / [Meter Plus](https://switch-bot.com/pages/switchbot-meter-plus) (WoSensorTH) +- [Meter](https://switch-bot.com/pages/switchbot-meter) / [Meter Plus](https://switch-bot.com/pages/switchbot-meter-plus) (WoSensorTH) / [Meter Pro](https://www.switch-bot.com/products/switchbot-meter-pro) - [Indoor/Outdoor Meter](https://switch-bot.com/pages/switchbot-indoor-outdoor-thermo-hygrometer) (WoIOSensorTH) - [Motion Sensor (WoPresence)](https://switch-bot.com/pages/switchbot-motion-sensor) - Plug Mini (WoPlug), both the original (model W1901400) and HomeKit-enabled (model W1901401) diff --git a/source/_integrations/switchbot_cloud.markdown b/source/_integrations/switchbot_cloud.markdown index 6b1d3330220..bd5015944e5 100644 --- a/source/_integrations/switchbot_cloud.markdown +++ b/source/_integrations/switchbot_cloud.markdown @@ -6,6 +6,7 @@ ha_category: - Plug - Remote - Sensor + - Lock - Switch - Vacuum ha_release: '2023.10' @@ -17,6 +18,7 @@ ha_codeowners: ha_domain: switchbot_cloud ha_platforms: - climate + - lock - sensor - switch - vacuum @@ -41,6 +43,7 @@ Please note, device names configured in the SwitchBot app are transferred into H - IR appliances exposed through the different hubs: - ON/OFF for all appliance types excepted "Others" - Air Conditioner +- Lock - Meter - MeterPlus - Outdoor Meter diff --git a/source/_integrations/switcher_kis.markdown b/source/_integrations/switcher_kis.markdown index 3e031793698..dd1e21b2add 100644 --- a/source/_integrations/switcher_kis.markdown +++ b/source/_integrations/switcher_kis.markdown @@ -17,6 +17,7 @@ ha_platforms: - climate - cover - diagnostics + - light - sensor - switch ha_config_flow: true @@ -37,10 +38,12 @@ Supported devices: - Switcher Breeze - Switcher Runner - Switcher Runner S11 +- Switcher Runner S12 Devices that require a token: - Switcher Runner S11 +- Switcher Runner S12 If you completed the integration setup but are still unable to control the device, please make sure your device's firmware is up-to-date. @@ -67,6 +70,14 @@ For Switcher Breeze the integration provides the following buttons: - For devices which do not support swing status for the vertical swing, the integration provides separate `Vertical swing on` & `Vertical swing off` buttons. +## Covers + +For Switcher cover control devices (Switcher Runner, Switcher Runner S11, Switcher Runner S12) the integration allows you to control its covers open/close state, set specific covers position and get information about the cover direction (UP/DOWN/STOP). + +## Lights + +For Switcher light control devices (Switcher Runner S11, Switcher Runner S12) the integration allows you to control its lights on/off state. + ## Sensors For Switcher power control devices (Switcher Power Plug, Switcher Touch, Switcher V2/V4) the integration provides the following sensors: diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index ec1fff885f8..4a3fdf24c5c 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -37,6 +37,8 @@ ha_config_flow: true related: - docs: /docs/configuration/ title: Configuration file + - docs: /docs/blueprint/ + title: About blueprints --- 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. @@ -141,6 +143,15 @@ action: description: Define actions to be executed when the trigger fires. Optional. Variables set by the action script are available when evaluating entity templates. This can be used to interact with anything using actions, in particular actions with [response data](/docs/scripts/perform-actions#use-templates-to-handle-response-data). [See action documentation](/docs/automation/action). required: false type: list +variables: + description: Key-value pairs of variable definitions which can be referenced and used in the templates below. Mostly used by blueprints. + required: false + type: map + keys: + "variable_name: value": + description: The variable name and corresponding value. + required: true + type: string sensor: description: List of sensors required: true @@ -489,6 +500,46 @@ The same would apply to the `is_state()` function. You should replace {% raw %}` {% endraw %} +## Using blueprints + +If you're just starting out and are not really familiar with templates, we recommend that you start with {% term blueprint %} template entities. These are template entities which are ready-made by the community and that you only need to configure. + +Each blueprint contains the "recipe" for creating a single template entity, but you can create multiple template entities based on the same blueprint. + +To create your first template entity based on a blueprint, open up your `configuration.yaml` file and add: + +```yaml +# Example configuration.yaml template entity based on a blueprint located in config/blueprints/homeassistant/inverted_binary_sensor.yaml +template: + - use_blueprint: + path: homeassistant/inverted_binary_sensor.yaml # relative to config/blueprints/template/ + input: + reference_entity: binary_sensor.foo + name: Inverted foo + unique_id: inverted_foo +``` + +If you look at the blueprint definition, you will notice it has one input defined (`reference_entity`), which expects a `binary_sensor` entity ID. When you create a template entity based on that blueprint, you will have to tell it which of your `binary_sensor` entities it should use to fill that spot. + +### Importing blueprints + +Home Assistant can import blueprints from the Home Assistant forums, GitHub, and GitHub gists. + +1. To import a blueprint, first [find a blueprint you want to import][blueprint-forums]. + - If you just want to practice importing, you can use this URL: + + ```text + https://github.com/home-assistant/core/blob/dev/homeassistant/components/template/blueprints/inverted_binary_sensor.yaml + ``` + +2. Download the file and place it under `config/blueprints/template//.yaml` +3. Use a config similar to the one above to create a new template entity based on the blueprint you just imported. +4. Make sure to fill in all required inputs. + +The blueprint can now be used for creating template entities. + +[blueprint-forums]: /get-blueprints + ## Examples In this section, you find some real-life examples of how to use template sensors. diff --git a/source/_integrations/tesla_fleet.markdown b/source/_integrations/tesla_fleet.markdown index 3fea2ef8a75..7b783372ebe 100644 --- a/source/_integrations/tesla_fleet.markdown +++ b/source/_integrations/tesla_fleet.markdown @@ -179,6 +179,7 @@ These are the entities available in the Tesla Fleet integration. Not all entitie |Sensor|Generator power|No| |Sensor|Grid power|Yes| |Sensor|Grid services power|Yes| +|Sensor|Grid status|Yes| |Sensor|Island status|Yes| |Sensor|Load power|Yes| |Sensor|Percentage charged|Yes| diff --git a/source/_integrations/text.mqtt.markdown b/source/_integrations/text.mqtt.markdown index c94f87da8cc..c4506cbcffa 100644 --- a/source/_integrations/text.mqtt.markdown +++ b/source/_integrations/text.mqtt.markdown @@ -133,6 +133,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string json_attributes_template: description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the JSON dictionary from messages received on the `json_attributes_topic`." required: false @@ -169,6 +173,10 @@ pattern: description: A valid regular expression the text being set or received must match with. required: false type: string +platform: + description: Must be `text`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -184,7 +192,7 @@ state_topic: required: false type: string unique_id: - description: An ID that uniquely identifies this Select. If two Selects have the same unique ID Home Assistant will raise an exception. + description: An ID that uniquely identifies this Select. If two Selects have the same unique ID Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/tplink_omada.markdown b/source/_integrations/tplink_omada.markdown index 37dacac97dc..2a338ce9a0d 100644 --- a/source/_integrations/tplink_omada.markdown +++ b/source/_integrations/tplink_omada.markdown @@ -13,6 +13,7 @@ ha_domain: tplink_omada ha_platforms: - binary_sensor - device_tracker + - sensor - switch - update ha_integration_type: hub @@ -28,6 +29,10 @@ The integration provides basic configuration and status of Omada devices control - Verify SSL Certificates: Enable to check the validity of the certificate presented by the Omada controller. - Username/Password: A user account with permissions to view & configure the site is required. +{% note %} +A local account must be used for login. Do not turn on two-factor authentication for local accounts, or the integration will not be able to log in. +{% endnote %} + ### Multiple Sites If you have multiple sites managed by your controller, you will be prompted to choose which site to manage. @@ -44,24 +49,24 @@ Controller versions 5.1.0 and later are supported. ## Supported Omada devices -### Network Switches +All adopted Omada devices expose: + +- Device status sensors +- CPU and Memory percentage sensors +- Firmware updates + +### Network switches - Support for enabling/disabling Power over Ethernet on a per-port basis -- Firmware Update -### Access Points - -- Firmware Update - -### Internet Gateways +### Internet gateways - WAN/LAN Port connectivity sensors - WAN Port Online detection sensors - WAN Port Connect/Disconnect switches - LAN Port PoE activity sensor -- Firmware Update -### Device trackers +## Device trackers The integration can track Wi-Fi devices connected to access points managed by the TP-Link Omada controller. All known Wi-Fi clients will be initially created in a disabled state. You then need to enable the entities that you want to track. diff --git a/source/_integrations/update.mqtt.markdown b/source/_integrations/update.mqtt.markdown index 522f5c9ed7b..326b16765c7 100644 --- a/source/_integrations/update.mqtt.markdown +++ b/source/_integrations/update.mqtt.markdown @@ -120,6 +120,11 @@ device_class: description: The [type/class](/integrations/update/#device-classes) of the update to set the icon in the frontend. The `device_class` can be `null`. required: false type: device_class +display_precision: + description: Number of decimal digits for display of update progress. + required: false + type: integer + default: 0 enabled_by_default: description: Flag which defines if the entity should be enabled when first added. required: false @@ -170,6 +175,10 @@ payload_install: description: The MQTT payload to start installing process. required: false type: string +platform: + description: Must be `update`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -235,7 +244,7 @@ mqtt: {% endraw %} -JSON can also be used as `state_topic` payload. +JSON can also be used as `state_topic` payload. Note that this feature also allows to process and show live progress information. {% raw %} @@ -252,7 +261,99 @@ JSON can also be used as `state_topic` payload. {% endraw %} -For the above JSON payload, the `update` entity configuration should look like this: +Simple progress state update example: + +{% raw %} + +```json +{ + "installed_version": "1.21.0", + "latest_version": "1.22.0", + "title": "Device Firmware", + "release_url": "https://example.com/release", + "release_summary": "A new version of our amazing firmware", + "entity_picture": "https://example.com/icon.png", + "in_progress": true +} +``` + +{% endraw %} + +Update percentage state update example: + +{% raw %} + +```json +{ + "installed_version": "1.21.0", + "latest_version": "1.22.0", + "title": "Device Firmware", + "release_url": "https://example.com/release", + "release_summary": "A new version of our amazing firmware", + "entity_picture": "https://example.com/icon.png", + "update_percentage": 78 +} +``` + +{% endraw %} + +Publish `null` to reset the update percentage state update's: + +{% raw %} + +```json +{ + "installed_version": "1.22.0", + "latest_version": "1.22.0", + "title": "Device Firmware", + "release_url": "https://example.com/release", + "release_summary": "A new version of our amazing firmware", + "entity_picture": "https://example.com/icon.png", + "update_percentage": null +} +``` + +{% endraw %} + +The values in the JSON are optional but must be valid within the following schema: + +{% configuration %} +installed_version: + description: The software or firmware version installed. + required: false + type: string +latest_version: + description: The latest software or firmware version available. + required: false + type: string +title: + description: Title of the software or firmware update available. + required: false + type: string +release_summary: + description: Summary of the software or firmware update available. + required: false + type: string +release_url: + description: URL pointing to the software release notes. + required: false + type: string +entity_picture: + description: URL pointing to an image of the update to be applied as entity picture. + required: false + type: string +in_progress: + description: Boolean to report an update is in progress or not. + required: false + default: false + type: boolean +update_percentage: + description: Number between 0 and 100 to report the update process. A `null` value resets the in-progress state. + required: false + type: ["integer", "float"] +{% endconfiguration %} + +For the above JSON payload examples, the `update` entity configuration should look like this: {% raw %} diff --git a/source/_integrations/vacuum.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown index dd09750f59d..4260dc9bd0d 100644 --- a/source/_integrations/vacuum.mqtt.markdown +++ b/source/_integrations/vacuum.mqtt.markdown @@ -174,6 +174,10 @@ payload_stop: required: false type: string default: stop +platform: + description: Must be `vacuum`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -202,7 +206,7 @@ supported_features: type: [string, list] default: "`start`, `stop`, `return_home`, `status`, `battery`, `clean_spot`" unique_id: - description: An ID that uniquely identifies this vacuum. If two vacuums have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this vacuum. If two vacuums have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/valve.mqtt.markdown b/source/_integrations/valve.mqtt.markdown index 909f7ff7b5b..77b609bd5ba 100644 --- a/source/_integrations/valve.mqtt.markdown +++ b/source/_integrations/valve.mqtt.markdown @@ -172,6 +172,10 @@ entity_category: description: "The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity." required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string icon: description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." required: false @@ -222,6 +226,10 @@ payload_stop: description: The command payload that stops the valve. When not configured, the valve will not support the `valve.stop` action. required: false type: string +platform: + description: Must be `valve`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string position_closed: description: Number which represents closed position. The valve's position will be scaled to the(`position_closed`...`position_open`) range when an action is performed and scaled back when a value is received. required: false @@ -272,7 +280,7 @@ state_topic: required: false type: string unique_id: - description: An ID that uniquely identifies this valve. If two valves have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this valve. If two valves have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/vodafone_station.markdown b/source/_integrations/vodafone_station.markdown index 09c4df3df52..3d01b3f5fe8 100644 --- a/source/_integrations/vodafone_station.markdown +++ b/source/_integrations/vodafone_station.markdown @@ -15,6 +15,7 @@ ha_iot_class: Local Polling ha_platforms: - button - device_tracker + - diagnostics - sensor ha_integration_type: hub ha_quality_scale: silver diff --git a/source/_integrations/water_heater.mqtt.markdown b/source/_integrations/water_heater.mqtt.markdown index c0d7ef41646..14c80540055 100644 --- a/source/_integrations/water_heater.mqtt.markdown +++ b/source/_integrations/water_heater.mqtt.markdown @@ -134,6 +134,10 @@ entity_category: description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. required: false type: string +entity_picture: + description: "Picture URL for the entity." + required: false + type: string initial: description: Set the initial target temperature. The default value depends on the temperature unit, and will be 43.3°C or 110°F. required: false @@ -213,6 +217,10 @@ payload_on: required: false type: string default: "ON" +platform: + description: Must be `water_heater`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). + required: true + type: string power_command_template: description: A template to render the value sent to the `power_command_topic` with. The `value` parameter is the payload set for `payload_on` or `payload_off`. required: false @@ -257,7 +265,7 @@ temperature_unit: required: false type: string unique_id: - description: An ID that uniquely identifies this water heater device. If two water heater devices have the same unique ID, Home Assistant will raise an exception. + description: An ID that uniquely identifies this water heater device. If two water heater devices have the same unique ID, Home Assistant will raise an exception. Required when used with device-based discovery. required: false type: string value_template: diff --git a/source/_integrations/weheat.markdown b/source/_integrations/weheat.markdown index bbbf2e897ed..4c572b97362 100644 --- a/source/_integrations/weheat.markdown +++ b/source/_integrations/weheat.markdown @@ -39,8 +39,11 @@ The Weheat integration provides the following sensors: - **COP**: The Coefficient of performance between the above two power measurements - **Water inlet temperature**: The heat pump water inlet temperature in °C - **Water outlet temperature**: The heat pump water outlet temperature in °C +- **Water target temperature**: Target for the water temperature in °C - **Central heating inlet temperature**: The central heating inlet temperature in °C - **Outside temperature**: Outside temperature in °C +- **Current room temperature**: Current room temperature in °C +- **Room temperature setpoint**: Setpoint for the room temperature in °C - **Electricity used**: Total electricity used in kWh - **State**: The current heat pump state - **DHW top temperature**: The domestic hot water temperature in the top of the vessel in °C (optional) diff --git a/source/_integrations/wmspro.markdown b/source/_integrations/wmspro.markdown index 8ee79c81191..e3d9b596997 100644 --- a/source/_integrations/wmspro.markdown +++ b/source/_integrations/wmspro.markdown @@ -4,6 +4,8 @@ description: Instructions on how to integrate WAREMA devices via WMS WebControl ha_category: - Cover - Hub + - Light + - Scene ha_release: '2024.10' ha_iot_class: Local Polling ha_codeowners: @@ -13,6 +15,8 @@ ha_config_flow: true ha_platforms: - cover - diagnostics + - light + - scene ha_integration_type: hub related: - url: https://www.warema.com/en/smart-home/wms-webcontrol-pro/ @@ -26,7 +30,7 @@ The **WMS WebControl pro** {% term integration %} allows you to integrate WAREMA This integration uses a local API which is available with firmware container version 11H. -See device section for support information: [covers](#covers). +See device section for support information: [covers](#covers), [lights](#lights) and [scenes](#scenes). {% include integrations/config_flow.md %} @@ -36,3 +40,12 @@ The WMS WebControl pro *may* also be discovered on your local network via DHCP. - *Patio awnings* can be opened, closed, set to a certain position and their movement stopped. - The integration and library *may* already support other types of awnings with a single motor. + +## Lights + +- Dimmers (with brightness control) and switches are fully supported. + +## Scenes + +- Scenes can be activated, but not changed or monitored. +- Scenes are accessible via a virtual device per room. diff --git a/source/_integrations/wyoming.markdown b/source/_integrations/wyoming.markdown index 46f32a88321..7550079d424 100644 --- a/source/_integrations/wyoming.markdown +++ b/source/_integrations/wyoming.markdown @@ -12,6 +12,7 @@ ha_domain: wyoming ha_integration_type: service ha_platforms: - binary_sensor + - conversation - number - select - stt diff --git a/source/_integrations/xiaomi_ble.markdown b/source/_integrations/xiaomi_ble.markdown index 43a3c6fe7b8..79dc82e2309 100644 --- a/source/_integrations/xiaomi_ble.markdown +++ b/source/_integrations/xiaomi_ble.markdown @@ -37,6 +37,7 @@ This key is called the bindkey or beaconkey. There are a few ways to obtain a bindkey for your device: +- For v4 and v5 devices, you can provide your Xiaomi Cloud account login credentials for the account to which the device is bound. Home Assistant will import the appropriate bind key from your account. - Extract the keys from Xiaomi Cloud using a [token extractor](https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor) tool. - Set your own. The [Telink Flasher](https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html) by pvvx allows you to generate new bindkeys for devices it supports (LYWSD03MMC, MJWSD05MMC, MHO-C401, CGG1, and CGDK2). This online flashing tool also allows you to upload alternative firmware, with some improvements compared to the stock firmware, like faster sensor updates. Note that the new bind key works with Home Assistant, but the Mi Home app does not recognize the sensor anymore once the device has been activated by the TeLink flasher application. To use the sensor again with the Xiaomi Mi Home app, the device needs to be removed and then re-added inside the Mi Home app. - An alternative [Telink Flasher](https://atc1441.github.io/Temp_universal_mi_activate.html) by atc1441 also allows you to generate new bind keys, and supports even more Xiaomi devices compared to the Telink Flasher by pvvx. diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index c35ff5c3768..740023293eb 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -318,6 +318,7 @@ The list includes device name, model number (if available), and model. - **Tower Fan**: `dmaker.fan.p9` - **Standing Fan 2**: `dmaker.fan.p10` - **Standing Fan Pro**: `dmaker.fan.p11` +- **Standing Fan 2**: `dmaker.fan.p18` - **Standing Fan 3**: `zhimi.fan.za5` - Power (on, off) @@ -1143,7 +1144,7 @@ Clean mode and Motor speed can only be set when the device is turned on. | Child Lock | Turn on/off the Child Lock | | LED | Turn on/off the LED | -### Tower Fan/Standing Fan 2/Standing Fan Pro (dmaker.fan.p9, dmaker.fan.p10, dmaker.fan.p11) +### Tower Fan/Standing Fan 2/Standing Fan Pro (dmaker.fan.p9, dmaker.fan.p10, dmaker.fan.p11, dmaker.fan.p18) - Power (on, off) - Operation modes (Normal, Nature) diff --git a/source/_integrations/yale_smart_alarm.markdown b/source/_integrations/yale_smart_alarm.markdown index 21297782e3d..d545c3e8bb1 100644 --- a/source/_integrations/yale_smart_alarm.markdown +++ b/source/_integrations/yale_smart_alarm.markdown @@ -6,6 +6,7 @@ ha_category: - Binary sensor - Button - Lock + - Select - Sensor - Switch ha_release: 0.78 @@ -20,6 +21,7 @@ ha_platforms: - button - diagnostics - lock + - select - sensor - switch ha_integration_type: integration @@ -33,6 +35,7 @@ There is currently support for the following device types within Home Assistant: - Binary sensor - Button - Lock +- Select - Sensor - Switch @@ -46,7 +49,10 @@ No code is required to operate the alarm. ## Binary sensors -Provides support for contact sensors for doors showing if door is open or closed. +Provides support for contact sensors for doors/windows + +- Door/window is open or closed. +- Battery is low on contact sensor ## Button @@ -56,6 +62,10 @@ Provides support for pressing the panic button to trigger the alarm. Be careful The lock platform requires a code for unlocking but no code for locking. +## Select + +Provides support for setting the volume on locks, available options are "High", "Low" and "Off". The entity is only available for supported door locks. + ## Sensor Provides support for smoke detector temperature sensors. diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index a39e2eadeae..e1d6bddbb3e 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -254,23 +254,9 @@ custom_quirks_path: ### Advanced OTA configuration -The default configuration for OTA firmware updates is chosen by ZHA developers, so normal users should not need to change any configuration. Most of the config options listed in the zigpy section are just meant for development or advanced users. +OTA for a few manufacturers is enabled by default, currently Ledvance, Sonoff, Inovelli, and ThirdReality. Other manufacturers are supported but disabled by default because their updates may change or remove device functionality, may require you to reconfigure devices, or are contributed by the community and may be minimally tested. -Further advanced configuration options are only provided in the [zigpy project's developers documentation](https://github.com/zigpy/zigpy). - -However, if you want to disable OTA updates for a specific manufacturer, you can add the following lines to your `configuration.yaml` and restart Home Assistant. - -```yaml -zha: - zigpy_config: - ota: - ikea_provider: false # Disable OTA update downloads for Trådfri devices - inovelli_provider: false # Disable OTA update downloads for INOVELLI devices - ledvance_provider: false # Disable OTA update downloads for LEDVANCE/OSRAM devices - salus_provider: false # Disable OTA update downloads for SALUS/Computime devices - sonoff_provider: false # Disable OTA update downloads for Sonoff (ITead) devices - thirdreality_provider: false # Disable OTA update downloads for 3REALITY devices -``` +Refer to the [zigpy documentation for OTA configuration](https://github.com/zigpy/zigpy/wiki/OTA-Configuration) for more information on additional OTA providers. ### Defining Zigbee channel to use diff --git a/source/_posts/2024-11-06-release-202411.markdown b/source/_posts/2024-11-06-release-202411.markdown new file mode 100644 index 00000000000..3ab5dd8c92d --- /dev/null +++ b/source/_posts/2024-11-06-release-202411.markdown @@ -0,0 +1,559 @@ +--- +layout: post +title: "2024.11: Slick dashboards and speedy cameras" +description: "Our new sections dashboards are now out of experimental and have become the default, low-latency camera streams using WebRTC, live streaming logs, Home Assistant Voice updates, and much more!" +date: 2024-11-06 00:00:00 +date_formatted: "November 6, 2024" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2024-11/social.jpg +--- + + + +Home Assistant 2024.11! 🎉 + +It is November already, and we are closing in on the end of the year, but we are +not slowing down! + +Before we dive into what this release has to offer, I want to take a moment to +thank everyone who has contributed to the Home Assistant project. You might +have heard this already, but going to share it again: + +_**We are number one!** 🥇_ + +GitHub published its annual [Octoverse report], highlighting the platform's +biggest trends and projects. It named Home Assistant 2024's largest open-source +project, with over 21,000 contributors over the year. **That includes you! ❤️** + +Continuing the festivities, this release is a big one! The new dashboarding +system we have been working on all year is now out of its experimental phase +and generally available! 🥳 Exciting, **everyone** can now create beautiful +dashboards with ease! + +To top it off, this release also supports faster and lower-latency camera +streams using WebRTC, supported by the [Open Home Foundation]. +This is a huge improvement! 🎉 + +Enjoy the release! + +../Frenck + +[Open Home Foundation]: https://www.openhomefoundation.org/ +[Octoverse report]: https://github.blog/news-insights/octoverse/octoverse-2024/ + + + +- [Sections dashboard no longer experimental!](#sections-dashboard-no-longer-experimental) + - [Convert your old dashboards to sections view layout](#convert-your-old-dashboards-to-sections-view-layout) + - [Precise mode for card sizes](#precise-mode-for-card-sizes) +- [Low latency cameras using WebRTC](#low-latency-cameras-using-webrtc) +- [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) + - [Live logs](#live-logs) +- [Voice](#voice) + - [Home Assistant intents improvements](#home-assistant-intents-improvements) + - [Join the Wake Word Collective](#join-the-wake-word-collective) +- [Need help? Join the community!](#need-help-join-the-community) +- [Backward-incompatible changes](#backward-incompatible-changes) +- [All changes](#all-changes) + +## Sections dashboard no longer experimental! + +This release marks a big milestone in our pursuit of making dashboards easier to +customize and use for everyone, aka [Project Grace]! The sections view layout, +together with its drag-and-drop 🐲 capabilities and responsive design, +is now **out of its experimental phase**, and ready for primetime! This means +that, as of this release, you will get our awesome feature-rich and easy-to-use +dashboard editing experience when you create a new dashboard. 🎉 + +Over the past few months, we have worked hard to iterate and listen to your +feedback to ensure that our new dashboard is easy to customize for both +beginners and advanced users alike. We have added new capabilities such as +[resizing cards], [visibility options], [wider sections], [new badges], +and, most recently, adding [the new heading card]. + +To finish this journey, we are adding two more features to this release. + +[new badges]: /blog/2024/08/07/release-20248/ +[Project Grace]: /blog/2024/03/04/dashboard-chapter-1/ +[resizing cards]: /blog/2024/07/03/release-20247/ +[the new heading card]: /blog/2024/10/02/release-202410/ +[visibility options]: /blog/2024/06/05/release-20246/ +[wider sections]: /blog/2024/09/04/release-20249/ + +### Convert your old dashboards to sections view layout + +

Screenshots showing the conversion of a view in masonry into sectionsScreenshots showing the conversion of a view in masonry into sections

+ +This release includes a way to convert individual dashboard views from the old +masonry view layout to the new sections view layout. When you change the view +type to sections, you get a button to convert the view. All the cards of the +old view are then copied and placed in an imported cards section in the new +view, and you can then easily drag-and-drop them into the right sections. + +Please note that cards placed within the imported cards section are only visible +to users once moved to a section above the fold. This ensures that +cards do not get accidentally shown in the wrong sections while you are still +working on the dashboard. + +

Screenshot of the imported cards sectionScreenshot of the imported cards section

+ +If you are not ready for the new layout yet, no worries! Your old dashboard view +is kept when a new dashboard is created, giving an excellent way for masonry +view veterans to try out sections while keeping all the hard work they have put +into customizing their cards. + +Alternatively, you can move each card one-by-one from another view. All moved +cards will also be temporarily placed in the imported cards section. + +### Precise mode for card sizes + +

Examples of cards using precise modeExamples of cards using precise mode

+ +If you love tinkering with your dashboards and fine-tuning card sizes with more +precision, you now have even more control over the size of cards. In the layout +options of a card you can now enable “Precise mode”, which will give you three +times more options for the card widths! + +Precise mode is applied on a card-by-card level. While a normal section is +divided into 4 columns, precise modes gives you 12 columns, which allows you +to align 2, 3, 4, or 6 buttons side-by-side. + +## Low latency cameras using WebRTC + +Lots of effort has gone into this new and amazing feature for this release: +**WebRTC**! 🎉 + +

Logo of WebRTC

+ +Not sure [what WebRTC is]? No worries! Let us try to explain. If you are +watching a camera in Home Assistant, you might have noticed it is sometimes +a bit slow and delayed. WebRTC support is going to change that! + +Camera streams will now try to use WebRTC whenever possible. +[WebRTC is a standard] that makes a peer-to-peer connection for lower-latency +audio and video streaming. You are probably using this technology a lot already, +for example, when having an online video call. When you’re away from home, +it will try to find the fastest and most direct path between your Home Assistant +instance and the camera you are trying to view. + +[The Open Home Foundation] will host the negotiating network infrastructure +([STUN servers]) **for free for all Home Assistant users** and enable the +capability to use WebRTC for peer-to-peer connections whenever possible. If you are using Home Assistant OS or our containers, after you update this will automatically work out of the box. + +

Logo of the Open Home Foundation

+ +Sometimes, a direct connection between the client (like your browser +or mobile app) and the camera is not possible; in those situations, the camera +stream needs to be relayed by an external server. [Home Assistant Cloud] now +provides this relay server ([TURN server]), and it's **included as one of the many benefits** +available to all subscribers! + +So, no matter where you are, you should always be able to watch your cameras +via this low-latency technology. If, for whatever reason, WebRTC is not +available, it will fall back to using the old method of streaming to ensure +you can always see your camera feeds. + +So, after reading all of this, what changed? Well, camera feeds will do everything they did before, but will be faster, more responsive, and less delayed! 🎉 + +[Home Assistant Cloud]: /cloud/ +[STUN servers]: https://en.wikipedia.org/wiki/STUN +[TURN server]: https://en.wikipedia.org/wiki/Traversal_Using_Relays_around_NAT +[The Open Home Foundation]: https://www.openhomefoundation.org/ +[WebRTC is a standard]: https://webrtc.org/ +[what WebRTC is]: https://en.wikipedia.org/wiki/WebRTC + +## 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: + +- **[LG ThinQ]**, added by [@LG-ThinQ-Integration] + Integrate your LG ThinQ devices, such as air conditioners, refrigerators, + and washing machines. LG built and provided this integration! It's super nice + to see a manufacturer providing an integration for Home Assistant. +- **[Husqvarna Automower BLE]**, added by [@alistair23] + Integrate your Husqvarna lawnmower using Bluetooth. +- **[Palazzetti]**, added by [@dotvav] + Integrate your [Palazzetti pellet stove]; control the stove, fan speeds and get the current temperature. + +[@alistair23]: https://github.com/alistair23 +[@dotvav]: https://github.com/dotvav +[@LG-ThinQ-Integration]: https://github.com/LG-ThinQ-Integration +[Husqvarna Automower BLE]: /integrations/husqvarna_automower_ble +[LG ThinQ]: /integrations/lg_thinq +[Palazzetti pellet stove]: https://palazzettigroup.com/ +[Palazzetti]: /integrations/palazzetti + +### 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: + +- [@joostlek] has extended the [Spotify integration] with a whole bunch of new + sensors for the current song playing. You can now, for example, automate + putting your house into party mode 🎉 when the song playing is danceable + enough 😎 Awesome job! +- The [LinkPlay integration] now has multiroom support! Group and ungroup your + devices to play music in sync or individually straight from Home Assistant. + Thanks [@silamon]! +- Staying in the audio department, [@mj23000] added shuffle and repeat controls + to the [Bang & Olufsen integration]. Nice! +- The [ViCare integration] now supports room sensors and hot water storage + sensors. Thanks for that [@CFenner]! +- [@starkillerOG] added sensors to track the total number of installations and + integrations to the [Analytics Insights integration]. Nice! +- The [Habitica integration] now supports sensors for gems, mystic hourglasses, + and calendars for to-dos and daily tasks. Thanks [@tr4nt0r]! +- [@YoavGivati] added support for the [Switcher Runner S12] to the + [Switcher integration]. Thanks for that! +- The [Husqvarna Automower integration] keeps receiving love from [@Thomas55555]. + This release adds work area and progress sensors. Nice! +- [@bdraco] added support for the [SwitchBot Meter Pro] to the + [SwitchBot integration]. Thanks! +- The [SwitchBot Cloud integration] now supports locks! Thanks [@miterion]! +- A little more technical, but [@jbouwh] added support for + [MQTT device-based auto discovery]. This allows MQTT devices to be set up + and discovered once instead of separately for each entity; which is much + more efficient. Nice improvement! + +[@bdraco]: https://github.com/bdraco +[@CFenner]: https://github.com/CFenner +[@jbouwh]: https://github.com/jbouwh +[@joostlek]: https://github.com/joostlek +[@miterion]: https://github.com/miterion +[@mj23000]: https://github.com/mj23000 +[@silamon]: https://github.com/silamon +[@starkillerOG]: https://github.com/starkillerOG +[@Thomas55555]: https://github.com/Thomas55555 +[@tr4nt0r]: https://github.com/tr4nt0r +[@YoavGivati]: https://github.com/YoavGivati +[Analytics Insights integration]: /integrations/analytics_insights +[Bang & Olufsen integration]: /integrations/bang_olufsen +[Habitica integration]: /integrations/habitica +[Husqvarna Automower integration]: /integrations/husqvarna_automower +[LinkPlay integration]: /integrations/linkplay +[MQTT device-based auto discovery]: /integrations/mqtt/#device-discovery-payload +[Spotify integration]: /integrations/spotify +[SwitchBot Cloud integration]: /integrations/switchbot_cloud +[SwitchBot integration]: /integrations/switchbot +[SwitchBot Meter Pro]: https://www.switch-bot.com/products/switchbot-meter-pro +[Switcher integration]: /integrations/switcher_kis +[Switcher Runner S12]: https://switcher.co.il/%D7%9E%D7%95%D7%A6%D7%A8/runner-lights-s12/ +[ViCare integration]: /integrations/vicare + +### Now available to set up from the UI + +While most {% term integrations %} can be set up directly from the Home Assistant +user interface, some were only available using YAML configuration. We keep moving +more integrations to the UI, making them more accessible for everyone +to set up and use. + +The following integrations are now available via the Home Assistant UI: + +- **[Local file]**, done by [@gjohansson-ST] +- **[Onkyo]**, done by [@Nebula83] +- **[Smarty]**, done by [@joostlek] + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@joostlek]: https://github.com/joostlek +[@Nebula83]: https://github.com/Nebula83 +[Local file]: /integrations/local_file +[Onkyo]: /integrations/onkyo +[Smarty]: /integrations/smarty + +### Farewell to the following + +The following {% term integrations %} are also no longer available as +of this release: + +- **Bloomsky**. Their service shut down. +- **Google Domains**. The domain registration service by Google has been + shut down. +- **Spider**. The service is no longer available. + +## Other noteworthy changes + +There are many more improvements in this release; here are some of the other +noteworthy changes: + +- [Image entities] now have a snapshot action, allowing you to save the current + image in the entity to a file. Nice [@NickM-27]! +- [@Petro31] added [(limited) template] support to the "at" field of [time triggers]. + This allows you to template the time of that trigger in, for example, + a blueprint automation. +- [Nautical miles] (`nmi`) is now a valid distance unit. This means you can now + use this as a unit for your distance sensors. Thanks [@mib1185]! +- [@tetele] added [blueprints for template entities]! This allows for easier + re-use and sharing of common blueprints for sets of templated entities. + This is an advanced feature and is only available using manual YAML + configuration. +- [@MindFreeze] and [@matthiasdebaat] have improved the network settings user + interface. It is now easier to manage and configure your network settings, + including nicer handling of IP addresses, improved Wi-Fi configuration, + and better visibility on the URLs Home Assistant is using for your instance. +- We now indicate if a custom integration is overriding a built-in integration. + This makes it easier to spot if a custom integration is taking over a + built-in integration while you are wondering why you didn't get the latest + features Home Assistant releases bring. Thanks, [@MindFreeze]! + +[(limited) template]: /docs/configuration/templating/#limited-templates +[@matthiasdebaat]: https://github.com/matthiasdebaat +[@mib1185]: https://github.com/mib1185 +[@MindFreeze]: https://github.com/MindFreeze +[@NickM-27]: https://github.com/NickM-27 +[@Petro31]: https://github.com/Petro31 +[@tetele]: https://github.com/tetele +[blueprints for template entities]: /integrations/template/#using-blueprints +[Image entities]: /integrations/image +[Nautical miles]: https://en.wikipedia.org/wiki/Nautical_mile +[time triggers]: /docs/automation/trigger/#time-trigger + +### Live logs + +Sometimes, if something does not work as expected, you might resort to a more technical +tool for finding out what is going on: The logs. + +Previously, if you looked at the logs of, for example, an add-on or the Home +Assistant Supervisor, you would only see the last 100 log lines. You would +have had to refresh the page to see new log entries. + +Well, no more! As of this release, the logs are now **streaming live**! 🎉 + +

Screenshot of the imported cards sectionScreen recording demonstrating logs showing up as they happen.

+ +And not just that, you can scroll back in time to see previous log items. +That's a pretty cool improvement. 😎 + +## Voice + +Last year, 2023, was the [Year of the Voice] for Home Assistant. And while this +year isn't specifically dedicated to voice, everyone is still working hard +towards the goal of letting users control their homes with their voice in +their own language. + +As you might have heard through many community channels 🕵️‍♀️, we are working to +make this a reality for everyone. We are hard at work getting our Home Assistant +voice satellite hardware ready and available for selling and shipping! 🤗 + +Stay tuned for more information on that soon! + +[Year of the Voice]: /blog/2022/12/20/year-of-voice/ + +### Home Assistant intents improvements + +One of the things we are working on is the Home Assistant intents. This is a +way for a voice assistant to understand the intention behind your spoken +sentences. This is a very crucial part of a local voice assistant. + +In this release, we decided to align and combine Canadian French and French languages for the time being. Though we understand it is a unique dialect, this is about giving Canadian French users a lot more voice features. + +![Screenshot showing a few commands in Canadian French before and after this release](/images/blog/2024-11/canadian-french-on-assist.png) + +These intents are built and maintained by the community, and we are very +grateful for their work. For example, [@piitaya] and [@jlpouffier] have made a +great effort to lead the French language intents mentioned above. + +Nevertheless, we want to ensure everyone can use Home Assistant in their +own language, **so we need your help**! Help the community by contributing to +the intents for your language. You can find more information on how to do that +in our [developer documentation]. + +[@jlpouffier]: https://github.com/jlpouffier +[@piitaya]: https://github.com/piitaya +[developer documentation]: https://developers.home-assistant.io/docs/voice/intent-recognition/contributing + +### Join the Wake Word Collective + +Another essential part of voice is the Wake Word! And this is where **everyone**, +no matter your skill level, can help out with just a minute of your time! + +Wake words are the words you say to wake up your voice assistant. For example, +_"Hey Google"_ or _"Alexa"_. As we are building our own voice assistant with +our own wake words, we need to train our models to recognize these words, +regardless of your accent, language, gender, or age. + +So, get your whole home involved 🏠! Take a minute to help us out by recording your voice +saying the wake word. It is super easy, and you can do it right from your +browser or mobile, no need to install anything! + +[**Help us improve our wake words today! ❤️**](https://ohf-voice.github.io/wake-word-collective/) + +You can read more about the Wake Word Collective in our +[dedicated blog post](/blog/2024/10/24/wake-word-collective/). + +## 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 "A. O. Smith" %} + +A. O. Smith now provides the hot water status as a percentage rather than low, +medium, or high. The hot water status entity has been updated accordingly. + +([@bdr99] - [#127678]) ([documentation](/integrations/aosmith)) + +[@bdr99]: https://github.com/bdr99 +[#127678]: https://github.com/home-assistant/core/pull/127678 + +{% enddetails %} + +{% details "Google Calendar" %} + +Google Calendar events that are declined are now omitted from the calendar. + +([@joelhawksley] - [#128900]) ([documentation](/integrations/google)) + +[@joelhawksley]: https://github.com/joelhawksley +[#128900]: https://github.com/home-assistant/core/pull/128900 + +{% enddetails %} + +{% details "HomeKit" %} + +Historically, many integrations implemented doorbells as binary sensors with a +device class of occupancy. This design was replaced with the new event entities, +which use a purpose-built device class of doorbell. + +HomeKit will no longer automatically link binary sensors with device class +occupancy as linked doorbell sensors. However, linked doorbell sensors can +still be configured manually via YAML. + +([@bdraco] - [#127668]) ([documentation](/integrations/homekit)) + +[@bdraco]: https://github.com/bdraco +[#127668]: https://github.com/home-assistant/core/pull/127668 + +{% enddetails %} + +{% details "Litter-Robot" %} + +Previously, Litter-Robot could have an off state. This has now changed to +`docked`, as `off` isn’t a valid state for vacuum entities. + +([@gjohansson-ST] - [#128297]) ([documentation](/integrations/litterrobot)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#128297]: https://github.com/home-assistant/core/pull/128297 + +{% enddetails %} + +{% details "Netatmo" %} + +The preset modes of the thermostat have been renamed in order to support +translations `Schedule`, `Frost guard`, and `Manual` have been renamed to +`schedule`, `frost_guard`, and `manual`. + +([@piitaya] - [#128890]) ([documentation](/integrations/netatmo)) + +[@piitaya]: https://github.com/piitaya +[#128890]: https://github.com/home-assistant/core/pull/128890 + +{% enddetails %} + +{% details "Tibber" %} + +The `tibber.get_prices` action has been adjusted to return datetimes as strings +instead of raw datetime objects. + +Automations or template sensors using this may need to be modified with an +`as_datetime` filter. See our [templating documentation](/docs/configuration/templating/#time) +for more information on using these filters. + +([@functionpointer] - [#123901]) ([documentation](/integrations/tibber)) + +[@functionpointer]: https://github.com/functionpointer +[#123901]: https://github.com/home-assistant/core/pull/123901 + +{% enddetails %} + +{% details "Updates" %} + +State attributes of update entities have been changed: + +- The `in_progress` state attribute is now always a `bool`, never an integer. +- A new state attribute `update_percentage` has been added. The + `update_percentage` is a number between 0-100 if an update is in progress + and the entity supports reporting progress, or `None` if an update is not + in progress or an update is in progress but the entity does not support + reporting progress. + +Scripts, automations, custom frontend components, etc., which consume the +`in_progress` state attribute of update entities, need to be updated accordingly. + +([@emontnemery] - [#128877]) ([documentation](/integrations/update)) + +[@emontnemery]: https://github.com/emontnemery +[#128877]: https://github.com/home-assistant/core/pull/128877 + +{% enddetails %} + +{% details "WMS WebControl pro" %} + +The open/closed state of awnings will be inverted so that the UI visualization +and positioning match reality. This means open (100%) now refers to the awning +being completely retracted, and closed (0%) now means the awning is fully +expanded. This is not in line with industry terminology, but Home Assistant +does not yet natively support awnings of type patio. + +([@mback2k] - [#128079]) ([documentation](/integrations/wmspro)) + +[@mback2k]: https://github.com/mback2k +[#128079]: https://github.com/home-assistant/core/pull/128079 + +{% 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: + +- [Changes to the UnitOfConductivity enum](https://developers.home-assistant.io/blog/2024/10/08/unit-of-conductivity-changes) +- [Changes to the update entity](https://developers.home-assistant.io/blog/2024/10/31/update-entity-changes) +- [Deprecating state constants for cover](https://developers.home-assistant.io/blog/2024/10/08/state-constants-cover-deprecation) +- [Extend deprecation period of hass.helpers](https://developers.home-assistant.io/blog/2024/10/09/extend-deprecation-hass-helpers) +- [New alarm control panel state property and state enum](https://developers.home-assistant.io/blog/2024/10/22/new-alarm-state-property) +- [New helpers and best practises for reauth and reconfigure flows](https://developers.home-assistant.io/blog/2024/10/21/reauth-reconfigure-helpers) +- [Reauth and reconfigure flows need to be linked to a config entry](https://developers.home-assistant.io/blog/2024/11/04/reauth-reconfigure-entry-id/) +- [The core config class has been moved](https://developers.home-assistant.io/blog/2024/10/31/core-config-moved) + +[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.11](/changelogs/core-2024.11) diff --git a/source/_redirects b/source/_redirects index 4c0cd5e3b16..9ff9022d618 100644 --- a/source/_redirects +++ b/source/_redirects @@ -517,6 +517,7 @@ layout: null /integrations/bh1750 /more-info/removed-integration 301 /integrations/binary_sensor.mychevy /more-info/removed-integration 301 /integrations/blinkt /more-info/removed-integration 301 +/integrations/bloomsky /more-info/removed-integration 301 /integrations/bme280 /more-info/removed-integration 301 /integrations/bme680 /more-info/removed-integration 301 /integrations/bmp280 /more-info/removed-integration 301 @@ -551,6 +552,7 @@ layout: null /integrations/geizhals /more-info/removed-integration 301 /integrations/gntp /more-info/removed-integration 301 /integrations/goalfeed /more-info/removed-integration 301 +/integrations/google_domains /more-info/removed-integration 301 /integrations/gpmdp /more-info/removed-integration 301 /integrations/griddy /more-info/removed-integration 301 /integrations/hangouts /more-info/removed-integration 301 @@ -613,6 +615,7 @@ layout: null /integrations/sochain /more-info/removed-integration 301 /integrations/socialblade /more-info/removed-integration 301 /integrations/somfy /more-info/removed-integration 301 +/integrations/spider /more-info/removed-integration 301 /integrations/spotcrime /more-info/removed-integration 301 /integrations/srp_energy /more-info/removed-integration 301 /integrations/synology /more-info/removed-integration 301 diff --git a/source/changelogs/core-2024.11.markdown b/source/changelogs/core-2024.11.markdown new file mode 100644 index 00000000000..aa3ef6747c3 --- /dev/null +++ b/source/changelogs/core-2024.11.markdown @@ -0,0 +1,2826 @@ +--- +title: Full changelog for Home Assistant Core 2024.11 +description: Detailed changelog for the Home Assistant Core 2024.11 release +replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$ +--- + +These are all the changes included in the Home Assistant Core 2024.11 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2024/11/06/release-202411/). + +- Bump version to 2024.11.0dev0 ([@frenck] - [#126776]) +- Use shorthand attributes in geofency device tracker ([@epenet] - [#126741]) +- Remove unnecessary patch from evohome tests ([@zxdavb] - [#126760]) +- Switch coordinator setup to `_async_setup` ([@zweckj] - [#126810]) +- Bump actions/checkout from 4.1.7 to 4.2.0 (@dependabot - [#126801]) +- Small typing improvements ([@cdce8p] - [#126818]) +- Use pytest.mark.usefixtures for start_ha in template tests ([@epenet] - [#126805]) +- Update pydantic to 1.10.18 ([@cdce8p] - [#126821]) +- Improve type hints in template ([@epenet] - [#126802]) +- Bump ruff to 0.6.8 ([@autinerd] - [#126842]) +- Improve type hints in template config_flow tests ([@epenet] - [#126803]) +- Use Parametrizing in Matter tests ([@joostlek] - [#126759]) +- Bump aiowithings to 3.1.0 ([@joostlek] - [#126854]) +- Fix small typo in mobile_app docstring ([@joostlek] - [#126863]) +- Update pytest warnings filter ([@cdce8p] - [#126858]) +- Refactor evohome test fixtures for improved testing ([@zxdavb] - [#126781]) +- Add `nmi` (nautical miles) as valid distance unit ([@mib1185] - [#124723]) +- Add FlowManager.async_has_matching_flow ([@emontnemery] - [#126804]) +- Use ConfigFlow.has_matching_flow to deduplicate fritzbox flows ([@emontnemery] - [#126891]) +- Use ConfigFlow.has_matching_flow to deduplicate gogogate2 flows ([@emontnemery] - [#126892]) +- Use ConfigFlow.has_matching_flow to deduplicate fritz flows ([@emontnemery] - [#126890]) +- Use ConfigFlow.has_matching_flow to deduplicate elkm1 flows ([@emontnemery] - [#126887]) +- Introduce base entity in Switcher ([@joostlek] - [#126822]) +- Use ConfigFlow.has_matching_flow to deduplicate steamist flows ([@emontnemery] - [#126897]) +- Use shorthand attributes in tile device tracker ([@epenet] - [#126735]) +- Use two words for Nautical miles unit ([@mib1185] - [#126905]) +- Use ConfigFlow.has_matching_flow to deduplicate hunterdouglas flows ([@emontnemery] - [#126895]) +- Update grpcio constraints to 1.62.3 ([@cdce8p] - [#126908]) +- Use ConfigFlow.has_matching_flow to deduplicate homekit_controller flows ([@emontnemery] - [#126894]) +- Cleanup sensor tests ([@epenet] - [#126881]) +- Set the default time zone for evohome tests ([@zxdavb] - [#126679]) +- Add RSS description to Feedreader event ([@rubenbe] - [#126681]) +- Use ConfigFlow.has_matching_flow to deduplicate plugwise flows ([@emontnemery] - [#126896]) +- Remove unused properties in tado device tracker ([@epenet] - [#126737]) +- Use shorthand attributes in gpslogger device tracker ([@epenet] - [#126739]) +- Use shorthand attributes in traccar device tracker ([@epenet] - [#126733]) +- Use shorthand attributes in vodafone_station device tracker ([@epenet] - [#126747]) +- Refactor Trace to avoid self import ([@epenet] - [#125822]) +- Add unique id migration to Geniushub ([@joostlek] - [#122330]) +- Fix Evohome snapshots ([@joostlek] - [#126915]) +- Add EntityIDPostMigration data migrator class ([@emontnemery] - [#125307]) +- Code quality improvements for Teslemetry ([@Bre77] - [#123444]) +- Change Turkey to Türkiye per 2022 UN resolution on official name ([@tr4nt0r] - [#126779]) +- Fix ruff import validation ([@jbouwh] - [#126917]) +- Modify pytest workflow to support testing multiple Python versions [ci] ([@cdce8p] - [#126936]) +- Extend dhcp discovery flow for ring integration ([@sdb9696] - [#126661]) +- Use ConfigFlow.has_matching_flow to deduplicate yalexs_ble flows ([@emontnemery] - [#126899]) +- Adjust BaseEditConfigView.__init__ ([@emontnemery] - [#126729]) +- Use `_async_setup` in tedee coordinator ([@zweckj] - [#126812]) +- Add support for stop command in LinkPlay ([@silamon] - [#126941]) +- Use ConfigFlow.has_matching_flow to deduplicate flux_led flows ([@emontnemery] - [#126888]) +- Translate exception from fjäråskupan ([@elupus] - [#126673]) +- Set DSMR Reader quality scale to Gold ([@erwindouna] - [#121466]) +- Bump protobuf to 5.28.2 ([@bdraco] - [#124936]) +- Update debugpy to 1.8.6 ([@frenck] - [#126945]) +- Update grpcio constraints to 1.66.1 ([@cdce8p] - [#126947]) +- Update ollama to 0.3.3 ([@frenck] - [#126953]) +- Allow passing filename to licenses script [ci] ([@cdce8p] - [#126951]) +- Add preview to mold_indicator ([@gjohansson-ST] - [#125530]) +- Add proper exception handling to lamarzocco ([@zweckj] - [#125913]) +- Add preview to statistics ([@gjohansson-ST] - [#122590]) +- Update vsure to 2.6.7 ([@frenck] - [#126950]) +- Update pyvera to 0.3.15 ([@frenck] - [#126956]) +- Update apprise to 1.9.0 ([@frenck] - [#126952]) +- Add `translation_domain` to lamarzocco exceptions ([@zweckj] - [#126959]) +- Add translation for tedee exceptions ([@zweckj] - [#126963]) +- Use ConfigFlow.has_matching_flow to deduplicate webostv flows ([@emontnemery] - [#126898]) +- Updated languages.py to add Irish lang code (manually) ([@aindriu80] - [#126689]) +- Include requirements_test_pre_commit.txt in pre-commit hassfest ([@autinerd] - [#125388]) +- Add reconfigure flow for Jewish Calendar ([@tsvi] - [#126773]) +- Bump smhi-pkg to 1.0.18 ([@gjohansson-ST] - [#126999]) +- Bump pypck to 0.7.24 ([@alengwenus] - [#126995]) +- Add Local Calendar ics events import on calendar creation ([@raulcodes] - [#117955]) +- Add Light support for Switcher Runner S11 ([@YogevBokobza] - [#126402]) +- Update grpcio constraints to 1.66.2 ([@cdce8p] - [#127026]) +- Switch oamda to use a strongly typed config entry ([@MarkGodwin] - [#127044]) +- Add unique id to mold_indicator setup from yaml ([@gjohansson-ST] - [#126992]) +- Use HassKey in application_credentials ([@epenet] - [#127069]) +- Bump docker/build-push-action from 6.7.0 to 6.8.0 (@dependabot - [#127070]) +- Use config entry runtime_data in arve ([@epenet] - [#127078]) +- Use config entry runtime_data in android ip webcam ([@epenet] - [#127080]) +- Use config entry runtime_data in aprilaire ([@epenet] - [#127079]) +- Use config entry runtime_data in aseko_pool_live ([@epenet] - [#127077]) +- Use config entry runtime_data in awair ([@epenet] - [#127073]) +- Move aussie broadband coordinator to separate class ([@epenet] - [#127081]) +- Use config entry runtime_data in aurora_abb_powerone ([@epenet] - [#127075]) +- Move atag coordinator to separate class ([@epenet] - [#127071]) +- Use config entry runtime_data in azure event hub ([@epenet] - [#127082]) +- Use config entry runtime_data in aussie broadband ([@epenet] - [#127083]) +- Use config entry runtime_data in atag ([@epenet] - [#127084]) +- Use HassKey in analytics ([@epenet] - [#127089]) +- Use HassKey in azure_event_hub ([@epenet] - [#127086]) +- Add is_opening and is_closing properties to VeluxCover ([@j-a-n] - [#127038]) +- Do not store apache kafka in hass.data ([@epenet] - [#127090]) +- Add power sensor detection in fibaro integration ([@rappenze] - [#126964]) +- Fix stale docstring in loader.USBMatcher ([@emontnemery] - [#127094]) +- Start mqtt integration discovery config flow only once if config has not changed ([@jbouwh] - [#126966]) +- Add select volume to yale_smart_alarm ([@gjohansson-ST] - [#127005]) +- Add test for start_reauth_flow test helper ([@epenet] - [#127093]) +- Use start_reauth_flow helper in switcher_kis tests ([@epenet] - [#127098]) +- Add support for room sensors in ViCare integration ([@CFenner] - [#125243]) +- Move monzo test ([@epenet] - [#127101]) +- Use HassKey in azure_data_explorer ([@epenet] - [#127087]) +- Adjust type hints in zha config flow ([@epenet] - [#127105]) +- Adjust type hints in enphase_envoy config_flow ([@epenet] - [#127106]) +- Adjust type hints in wilight config_flow ([@epenet] - [#127107]) +- Adjust type hints in insteon config_flow ([@epenet] - [#127108]) +- Add default description placeholder in workday config_flow ([@epenet] - [#127110]) +- Raise HomeAssistantError in entity action calls in Nice G.O. ([@IceBotYT] - [#126439]) +- Use a generic string as default description placeholder in workday config_flow ([@epenet] - [#127112]) +- Use scheduled current preset (if set), when setting HVAC mode in AVM Fritz!Smarthome ([@naruxde] - [#126044]) +- Add hotwater storage sensors to ViCare integration ([@CFenner] - [#126570]) +- Use start_reauth_flow helper in ezviz and netatmo tests ([@epenet] - [#127100]) +- Add Open Home Foundation logo to README ([@mrdarrengriffin] - [#127111]) +- Add devices to Withings ([@joostlek] - [#126853]) +- Fix naming and docstring in yale_smart_alarm select ([@gjohansson-ST] - [#127141]) +- Use async_update_reload_and_abort in Trafikverket Camera ([@gjohansson-ST] - [#127137]) +- Adjust type hints in zwave_js config flow ([@epenet] - [#127104]) +- Bump docker/build-push-action from 6.8.0 to 6.9.0 (@dependabot - [#127156]) +- Bump github/codeql-action from 3.26.9 to 3.26.10 (@dependabot - [#127157]) +- Fix incorrect type hint in zwave_js config flow ([@epenet] - [#127158]) +- Store arcam_fmj flow data in flow handler attributes ([@emontnemery] - [#127166]) +- Store esphome flow data in flow handler attributes ([@emontnemery] - [#127170]) +- Store ezviz flow data in flow handler attributes ([@emontnemery] - [#127171]) +- Store fully_kiosk flow data in flow handler attributes ([@emontnemery] - [#127172]) +- Store devolo_home_network flow data in flow handler attributes ([@emontnemery] - [#127169]) +- Store toon flow data in flow handler attributes ([@emontnemery] - [#127180]) +- Store keenetic_ndms2 flow data in flow handler attributes ([@emontnemery] - [#127174]) +- Store smappee flow data in flow handler attributes ([@emontnemery] - [#127178]) +- Store huawei_lte flow data in flow handler attributes ([@emontnemery] - [#127173]) +- Use ConfigFlow.has_matching_flow to deduplicate lifx flows ([@emontnemery] - [#127163]) +- Adjust type hints in alarmdecoder config_flow ([@epenet] - [#127161]) +- Adjust type hints in aosmith config_flow ([@epenet] - [#127160]) +- Change ViCare dependency back to original one ([@CFenner] - [#127168]) +- Add a working location google calendar entity ([@allenporter] - [#127016]) +- Add test helper for starting reconfiguration flow ([@epenet] - [#127154]) +- Remove unused custom flow context key 'name' from wyoming ([@emontnemery] - [#127182]) +- Adjust type hints in ezviz config_flow ([@epenet] - [#127186]) +- Avoid mutating title_placeholders in devolo_home_network ([@emontnemery] - [#127188]) +- Ensure dlna_dmr config flow title_placeholders items are [str, str] ([@emontnemery] - [#127189]) +- Adjust type hints in devialet config_flow ([@epenet] - [#127185]) +- Avoid mutating title_placeholders in synology_dsm ([@emontnemery] - [#127210]) +- Add missing None-check in roomba config flow ([@emontnemery] - [#127212]) +- Remove unused title_placeholders from plugwise ([@emontnemery] - [#127211]) +- Avoid mutating title_placeholders in reolink ([@emontnemery] - [#127209]) +- Ensure tesla_wall_connector config flow title_placeholders items are [str, str] ([@emontnemery] - [#127208]) +- Ensure soundtouch config flow title_placeholders items are [str, str] ([@emontnemery] - [#127207]) +- Ensure radiotherm config flow title_placeholders items are [str, str] ([@emontnemery] - [#127206]) +- Ensure powerwall config flow title_placeholders items are [str, str] ([@emontnemery] - [#127205]) +- Ensure ovo_energy config flow title_placeholders items are [str, str] ([@emontnemery] - [#127204]) +- Ensure ezviz config flow title_placeholders items are [str, str] ([@emontnemery] - [#127194]) +- Ensure octoprint config flow title_placeholders items are [str, str] ([@emontnemery] - [#127202]) +- Bump uv to 0.4.17 ([@edenhaus] - [#127223]) +- Simplify reconfigure step in axis config flow ([@epenet] - [#127225]) +- Remove custom flow deduplication logic from guardian ([@emontnemery] - [#127159]) +- Ensure overkiz config flow title_placeholders items are [str, str] ([@emontnemery] - [#127203]) +- Use ConfigFlow.has_matching_flow to deduplicate samsungtv flows ([@emontnemery] - [#127235]) +- Improve code of normalized name registry ([@arturpragacz] - [#125282]) +- Skip unnecessary checks for entities with unique_id ([@arturpragacz] - [#125051]) +- Improve / clean up Plugwise config_flow code ([@bouwew] - [#127238]) +- Store openhome flow data in flow handler attributes ([@emontnemery] - [#127176]) +- Ensure enphase_envoy config flow title_placeholders items are [str, str] ([@emontnemery] - [#127193]) +- Ensure flux_led config flow title_placeholders items are [str, str] ([@emontnemery] - [#127196]) +- Improve type hints in config_flow reconfigure step ([@epenet] - [#127224]) +- Use ConfigFlow.has_matching_flow to deduplicate yeelight flows ([@emontnemery] - [#127165]) +- Ensure frontier_silicon config flow title_placeholders items are [str, str] ([@emontnemery] - [#127197]) +- Bump codecov/codecov-action from 4.5.0 to 4.6.0 (@dependabot - [#127259]) +- Use start_reconfigure_flow in config flow tests ([@epenet] - [#127191]) +- Ensure dlna_dms config flow title_placeholders items are [str, str] ([@emontnemery] - [#127192]) +- Bump python-homeassistant-analytics to 0.8.0 ([@starkillerOG] - [#127271]) +- Add config_flow helper to get reauth/reconfigure config entry ([@epenet] - [#127115]) +- Update mypy-dev to 1.12.0a5 ([@cdce8p] - [#127181]) +- Ensure motionblinds_ble config flow title_placeholders items are [str, str] ([@emontnemery] - [#127201]) +- Ensure lookin config flow title_placeholders items are [str, str] ([@emontnemery] - [#127200]) +- Use _get_reauth/reconfigure_entry in fritz ([@epenet] - [#127283]) +- Remove the Google Domains integration ([@emontnemery] - [#127278]) +- Fix telegram_bot tests for Python 3.13 ([@cdce8p] - [#127293]) +- Ensure directv config flow title_placeholders items are [str, str] ([@emontnemery] - [#127288]) +- Ensure songpal config flow title_placeholders items are [str, str] ([@emontnemery] - [#127290]) +- Ensure keenetic_ndms2 config flow title_placeholders items are [str, str] ([@emontnemery] - [#127289]) +- Ensure braviatv config flow title_placeholders items are [str, str] ([@emontnemery] - [#127287]) +- Use _get_reauth/reconfigure_entry in enphase_envoy ([@epenet] - [#127281]) +- Use _get_reconfigure_entry in google_travel_time ([@epenet] - [#127285]) +- Use _get_reauth/reconfigure_entry in fritzbox ([@epenet] - [#127284]) +- Use _get_reconfigure_entry in feedreader ([@epenet] - [#127282]) +- Add electrolyzer data to Aseko Pool Live ([@hopkins-tk] - [#127249]) +- Adjust type hints in konnected config_flow ([@epenet] - [#127276]) +- Adjust type hints in goalzero config_flow ([@epenet] - [#127270]) +- Use _get_reconfigure_entry in homeworks ([@epenet] - [#127296]) +- Use _get_reconfigure_entry in jewish_calendar ([@epenet] - [#127297]) +- Use _get_reconfigure_entry in holiday ([@epenet] - [#127295]) +- Use _get_reconfigure_entry in here_travel_time ([@epenet] - [#127294]) +- Use _get_reauth/reconfigure_entry in lamarzocco ([@epenet] - [#127298]) +- Use _get_reauth/reconfigure_entry in mealie ([@epenet] - [#127301]) +- Use _get_reconfigure_entry in madvr ([@epenet] - [#127300]) +- Use _get_reconfigure_entry in lcn ([@epenet] - [#127299]) +- Use _get_reconfigure_entry in smhi ([@epenet] - [#127309]) +- Use _get_reconfigure_entry in tado ([@epenet] - [#127311]) +- Use _get_reconfigure_entry in vallox ([@epenet] - [#127313]) +- Use _get_reauth_entry in trafikverket_weatherstation ([@epenet] - [#127316]) +- Bump swiss-public-transport requirement python-opendata-transport to 0.5.0 ([@miaucl] - [#127306]) +- Use _get_reauth_entry in azure_devops config flow ([@epenet] - [#127321]) +- Use _get_reauth_entry in aseko_pool_live ([@epenet] - [#127319]) +- Use _get_reauth_entry in airvisual_pro ([@epenet] - [#127318]) +- Use _get_reauth/reconfigure_entry in tedee ([@epenet] - [#127312]) +- Use _get_reauth/reconfigure_entry in shelly ([@epenet] - [#127308]) +- Adjust reauth checks in august ([@epenet] - [#127320]) +- Use _get_reauth/reconfigure_entry in nam ([@epenet] - [#127303]) +- Add sensor for total installations and integrations to Analytics Insights ([@starkillerOG] - [#127248]) +- Add protocol upload / download sensors to Deluge ([@mgrandi] - [#119203]) +- Use _get_reauth_entry in bring config flow ([@epenet] - [#127325]) +- Use _get_reauth_entry in brunt config flow ([@epenet] - [#127324]) +- Use _get_reauth_entry in bthome config flow ([@epenet] - [#127323]) +- Use _get_reauth_entry in blue_current config flow ([@epenet] - [#127328]) +- Use _get_reauth/reconfigure_entry in solarlog ([@epenet] - [#127310]) +- Use _get_reconfigure_entry in waze_travel_time ([@epenet] - [#127314]) +- Use _get_reauth/reconfigure_entry in melcloud ([@epenet] - [#127302]) +- Ensure homekit_controller config flow title_placeholders items are [str, str] ([@emontnemery] - [#127198]) +- Use ConfigFlow.has_matching_flow to deduplicate tplink flows ([@emontnemery] - [#127164]) +- Store modern_forms flow data in flow handler attributes ([@emontnemery] - [#127175]) +- Handle the correct exception type when subscribing to the router service returns an error in the upnp component ([@StevenLooman] - [#127006]) +- Add reconfigure step to trafikverket weather ([@gjohansson-ST] - [#127140]) +- Add turn on and off function to lg_soundbar ([@skynet01] - [#127022]) +- Store instance name in Thread router discovery ([@agners] - [#127253]) +- Use _get_reconfigure_entry in brother ([@epenet] - [#127279]) +- Make numeric device classes a constant ([@bdraco] - [#127354]) +- Add line numbers to swiss-public-transport ([@polgarc] - [#127332]) +- Add reconfigure flow to trafikverket_camera ([@gjohansson-ST] - [#127355]) +- Store awair flow data in flow handler attributes ([@emontnemery] - [#127381]) +- Improve generic camera preview tests ([@emontnemery] - [#127382]) +- Add go2rtc and extend camera integration for better WebRTC support ([@edenhaus] - [#124410]) +- Use _get_reauth_entry in comelit config flow ([@epenet] - [#127386]) +- Remove unused translation keys from Tami4 ([@joostlek] - [#127342]) +- Correct reconfigure flows to get data from config entry ([@epenet] - [#127393]) +- Use _get_reauth_entry in braviatv config flow ([@epenet] - [#127326]) +- Use _get_reauth/reconfigure_entry in pyload ([@epenet] - [#127304]) +- Use _get_reauth_entry in bmw_connected_drive config flow ([@epenet] - [#127327]) +- Align config flow reconfigure step test helper with frontend ([@epenet] - [#127329]) +- Adjust type hints in androidtv_remote config_flow ([@epenet] - [#127162]) +- Add MOES Matter Light 1.0 to the blocklist for Matter transitions ([@raphaeleduardo42] - [#127345]) +- Use _get_reauth_entry in dormakaba_dkey config flow ([@epenet] - [#127392]) +- Use _get_reauth_entry in doorbird config flow ([@epenet] - [#127391]) +- Use _get_reauth_entry in discovergy config flow ([@epenet] - [#127390]) +- Use _get_reauth_entry in devolo_home_control config flow ([@epenet] - [#127387]) +- Store generic camera flow data in flow handler attributes ([@emontnemery] - [#127405]) +- Use _get_reauth_entry in caldav config flow ([@epenet] - [#127384]) +- Bump elkm1_lib to 2.2.10 ([@gwww] - [#127344]) +- Use async_update_reload_and_abort in Trafikverket Weather reauth flow ([@gjohansson-ST] - [#127341]) +- Set default Matter fabric label ([@agners] - [#127252]) +- Bump python-ecobee-api to 0.2.20 ([@myztillx] - [#127351]) +- Block Alexa Media Player v4.13.3 ([@joostlek] - [#127412]) +- Use _get_reauth_entry in devolo_home_network config flow ([@epenet] - [#127389]) +- Use async_update_reload_and_abort in abode ([@epenet] - [#127426]) +- Use async_update_reload_and_abort in airvisual_pro ([@epenet] - [#127430]) +- Use async_update_reload_and_abort in airvisual ([@epenet] - [#127429]) +- Fix AMP block ([@joostlek] - [#127424]) +- Use reauth helpers in aosmith config flow ([@epenet] - [#127432]) +- Use reauth helpers in esphome config flow ([@epenet] - [#127419]) +- Use async_update_reload_and_abort in aseko_pool_live config flow ([@epenet] - [#127433]) +- Use reauth helpers in blue_current config flow ([@epenet] - [#127434]) +- Use async_update_reload_and_abort in bosch_shc config flow ([@epenet] - [#127436]) +- Make go2rtc supported streams a frozenset ([@bdraco] - [#127439]) +- Use reauth helpers in ezviz config flow ([@epenet] - [#127448]) +- Use reauth helpers in efergy config flow ([@epenet] - [#127447]) +- Cancel listen task when setting the Matter fabric label fails ([@agners] - [#127423]) +- Reolink auto add new cameras/chimes ([@starkillerOG] - [#126268]) +- Fix config entry unique_id collision in proximity ([@emontnemery] - [#127456]) +- Don't add the same config entry id twice in google tests ([@allenporter] - [#127457]) +- Fix bluetooth tests to not create the same config entry twice ([@bdraco] - [#127461]) +- Align async_step_reconfigure type hints ([@epenet] - [#127450]) +- Use reauth helpers in comelit config flow ([@epenet] - [#127443]) +- Use reauth helpers in electric_kiwi config flow ([@epenet] - [#127414]) +- Remove test workaround from snooz ([@emontnemery] - [#127465]) +- Bump p1monitor to 3.1.0 ([@klaasnicolaas] - [#127459]) +- Use reauth helpers in dormakaba_dkey config flow ([@epenet] - [#127446]) +- Use reauth helpers in deluge config flow ([@epenet] - [#127445]) +- Use reauth helpers in caldav config flow ([@epenet] - [#127440]) +- Use reauth helpers in brunt config flow ([@epenet] - [#127438]) +- Use reauth helpers in braviatv config flow ([@epenet] - [#127437]) +- Cache serialization of config entry storage ([@bdraco] - [#127435]) +- Use _get_reauth_entry in cloudflare config flow ([@epenet] - [#127385]) +- Switch to using fast cached_property implementation in propcache ([@bdraco] - [#127339]) +- Bump cached-ipaddress to 0.7.0 ([@bdraco] - [#127475]) +- Bump yalexs to 8.9.0 ([@bdraco] - [#127474]) +- Bump uiprotect to 6.2.0 ([@bdraco] - [#127477]) +- Use reauth helpers in elmax config flow ([@epenet] - [#127417]) +- Fix config entry unique_id collision in lamarzocco tests ([@emontnemery] - [#127484]) +- Remove Spider integration ([@joostlek] - [#127346]) +- Adjust type hints in hyperion config_flow ([@epenet] - [#127273]) +- Restore __slots__ to core objects ([@bdraco] - [#127441]) +- Fix preview available in statistics ([@gjohansson-ST] - [#127349]) +- Migrate config_entries to use propcache cached_property ([@bdraco] - [#127495]) +- Prepare websocket writer for aiohttp 3.11 ([@bdraco] - [#127043]) +- Add re-authemtication flow to AVM FRITZ!Box Call Monitor ([@mib1185] - [#127497]) +- Add pylint rule for cached_property ([@bdraco] - [#127482]) +- Fix lingering tasks in snooz tests ([@epenet] - [#127523]) +- Fix config entry unique_id collision in tplink tests ([@emontnemery] - [#127522]) +- Convert evohome's test factory into an async generator ([@zxdavb] - [#126925]) +- Add support for Shelly CCT light ([@bieniu] - [#126989]) +- Bump github/codeql-action from 3.26.10 to 3.26.11 (@dependabot - [#127524]) +- Fix reolink tests ([@epenet] - [#127525]) +- Add more fixtures to the matter fixture ([@joostlek] - [#126761]) +- Add entity icons for Autarco integration ([@klaasnicolaas] - [#127505]) +- Use reauth helpers in spotify config flow ([@epenet] - [#127532]) +- Revert Alexa Media Player block ([@frenck] - [#127553]) +- Simplify Jellyfin ([@joostlek] - [#127353]) +- Use HassKey in backup ([@epenet] - [#127546]) +- Add codeowners for Squeezebox ([@rajlaud] - [#127564]) +- Use HassKey in auth ([@epenet] - [#127573]) +- Blueprints for template entities ([@tetele] - [#126971]) +- Bump ruff to 0.6.9 ([@autinerd] - [#127596]) +- Disable by default smlight auto zigbee update switch ([@tl-sl] - [#126707]) +- Bump aiohttp to 3.10.9 ([@bdraco] - [#127594]) +- Remove enigma2 yaml import ([@autinerd] - [#127597]) +- Fix blocking stat call in local media_source ([@bdraco] - [#127587]) +- Bump sigstore/cosign-installer from 3.6.0 to 3.7.0 (@dependabot - [#127628]) +- Bump actions/cache from 4.0.2 to 4.1.0 (@dependabot - [#127627]) +- Introduce Jellyfin client/server base entities ([@joostlek] - [#127572]) +- Fix Husqvarna Automower reauth title ([@Thomas55555] - [#127583]) +- Use common reconfigure string in bryant_evolution ([@epenet] - [#127561]) +- Fix grpcio wheel build ([@cdce8p] - [#127533]) +- Fix snooz tests ([@emontnemery] - [#127468]) +- Restore __slots__ to registry entries ([@bdraco] - [#127481]) +- Improve mqtt sensor options validion logging ([@jbouwh] - [#127631]) +- Bump async-upnp-client to 0.41.0 ([@StevenLooman] - [#127642]) +- Return an error if no error key is provided in Husqvarna Automower ([@Thomas55555] - [#127584]) +- Improve handling of call deflection switches in AVM Fritz!Tools ([@mib1185] - [#127592]) +- Remove automatic linkage of doorbells to HomeKit accessories via device class occupancy ([@bdraco] - [#127668]) +- Add sensors for gems and mystic hourglasses to Habitica integration ([@tr4nt0r] - [#127651]) +- Replace Rachio warning with debug logging ([@brg468] - [#127673]) +- Add tests for evohome climate entities ([@zxdavb] - [#127612]) +- Add tests for evohome water_heater entities ([@zxdavb] - [#127611]) +- Update dbus-fast to 2.24.3 ([@cdce8p] - [#127683]) +- Update bluetooth-adapters to 0.20.0 ([@cdce8p] - [#127684]) +- Update bleak-retry-connector to 3.6.0 ([@cdce8p] - [#127686]) +- Update bleak to 0.22.3 ([@cdce8p] - [#127688]) +- Update habluetooth to 3.5.0 ([@cdce8p] - [#127690]) +- Update bleak-esphome to 1.1.0 ([@cdce8p] - [#127692]) +- Update yalexs-ble to 2.5.0 ([@cdce8p] - [#127696]) +- Bump yalexs to 8.10.0 ([@bdraco] - [#127704]) +- Bump cached-ipaddress to 0.8.0 ([@bdraco] - [#127703]) +- Bump syrupy to 4.7.2 ([@joostlek] - [#127710]) +- Bump uiprotect to 6.3.1 ([@bdraco] - [#127702]) +- Add cast skill action to Habitica integration ([@tr4nt0r] - [#127000]) +- Use BSH keys as unique ID's suffix at Home Connect ([@Diegorro98] - [#126143]) +- Remove obsolete entity count safeguards when using `snapshot_platform` test helper ([@mib1185] - [#127736]) +- Remove expected lingering test fixture from Matter ([@joostlek] - [#127713]) +- Use reconfigure helpers in config tests ([@epenet] - [#127534]) +- Add work area sensors to Husqvarna Automower ([@Thomas55555] - [#126931]) +- Update A. O. Smith integration to reflect upstream API changes ([@bdr99] - [#127678]) +- Fix typo ([@strugee] - [#127775]) +- Correct typing in rediscovery tests ([@emontnemery] - [#127777]) +- Add default reconfigure reason in update_reload_and_abort ([@epenet] - [#127756]) +- Update ephem to 4.1.6 ([@cdce8p] - [#127761]) +- Disable SELinux enforcement on dev containers ([@strugee] - [#127774]) +- Update types packages ([@cdce8p] - [#127783]) +- Update pre-commit to 4.0.0 ([@cdce8p] - [#127782]) +- Add option to disable keep-alive for Enphase Envoy connections ([@catsmanac] - [#127603]) +- Extend update_entry_and_reload tests ([@epenet] - [#127776]) +- Bump pychromecast to 14.0.4 ([@emontnemery] - [#127791]) +- Use reauth helpers in permobil config flow ([@epenet] - [#127530]) +- Add strict typing to radio_browser ([@cdce8p] - [#127799]) +- Enable strict typing for workday ([@cdce8p] - [#127797]) +- Add missing patch in dnsip test ([@epenet] - [#127802]) +- Fix incorrect translation string in august ([@epenet] - [#127817]) +- Fix incorrect translation string in blink ([@epenet] - [#127828]) +- Add missing translation string in electric_kiwi ([@epenet] - [#127835]) +- Fix incorrect translation string in airvisual ([@epenet] - [#127813]) +- Add missing translation string in axis ([@epenet] - [#127822]) +- Improve Spotify mock ([@joostlek] - [#127825]) +- Replace Spotify fixtures ([@joostlek] - [#127850]) +- Update fritzconnection to 1.14.0 ([@cdce8p] - [#127793]) +- Add missing translation string in AVM Fritz!Tools ([@mib1185] - [#127863]) +- Add missing translation string in dnsip ([@epenet] - [#127833]) +- Add Tesla Fleet grid status ([@JEMcats] - [#126438]) +- Bump aioshelly to 12.0.0 ([@thecode] - [#127884]) +- Enable strict typing for shell_command ([@cdce8p] - [#127856]) +- BMW: Add reconfiguration flow ([@rikroe] - [#127726]) +- Clean up Tibber service tests ([@functionpointer] - [#127334]) +- Enable strict typing for openai_conversation ([@cdce8p] - [#127854]) +- Use separate constants in template cover ([@gjohansson-ST] - [#127853]) +- Add missing translation string in awair ([@epenet] - [#127819]) +- Add missing translation string in broadlink ([@epenet] - [#127829]) +- Add missing translation string in kitchen_sink ([@epenet] - [#127838]) +- Use SensorDeviceClass.CONDUCTIVITY for xiaomi_ble conductivity sensors ([@emontnemery] - [#127880]) +- Add missing translation string in deluge ([@epenet] - [#127831]) +- Bump propcache to 0.2.0 ([@bdraco] - [#127816]) +- Enable strict typing for panel_custom ([@cdce8p] - [#127855]) +- Don't cache reauth entry in androidtv_remote config flow ([@epenet] - [#127900]) +- Fix translation strings in geonetnz_volcano ([@mib1185] - [#127872]) +- Fix incorrect translation string in fivem ([@epenet] - [#127907]) +- Fix incorrect translation key in crownstone ([@epenet] - [#127913]) +- Add missing translation string in tile ([@epenet] - [#127911]) +- Add missing and fix incorrect translation string in permobil ([@epenet] - [#127910]) +- Don't cache reauth entry in aseko_pool_live config flow ([@epenet] - [#127902]) +- Add missing translation string in cloudflare ([@epenet] - [#127906]) +- Bump actions/checkout from 4.2.0 to 4.2.1 (@dependabot - [#127903]) +- Bump github/codeql-action from 3.26.11 to 3.26.12 (@dependabot - [#127904]) +- Use separate constants in slide cover ([@gjohansson-ST] - [#127852]) +- Bump actions/upload-artifact from 4.4.0 to 4.4.1 (@dependabot - [#127905]) +- Don't abort on unknown error in nina config flow ([@epenet] - [#127908]) +- Fix devContainer startup ([@srescio] - [#127042]) +- Add missing translation string in tesla_fleet ([@epenet] - [#127915]) +- Add new helper for matching reauth/reconfigure config flows ([@epenet] - [#127565]) +- Make FlowHandler.context a typed dict ([@emontnemery] - [#126291]) +- Use homeassistant STUN server ([@edenhaus] - [#127922]) +- Remove dead reconfigure code ([@epenet] - [#127398]) +- Bump yarl to 1.14.0 ([@bdraco] - [#127924]) +- Reinitialize hassio discovery flow on config entry removal ([@emontnemery] - [#127088]) +- Deprecate hassio service to update addon ([@joostlek] - [#127927]) +- Add device_class for LCN sensors ([@alengwenus] - [#127921]) +- Warn when async_update_entry creates a unique_id collision ([@emontnemery] - [#127929]) +- Rename `UnitOfConductivity` enum members ([@emontnemery] - [#127919]) +- Cleanup unused variable in tests ([@epenet] - [#127930]) +- Prevent `async_create_entry` from reauth/reconfigure flows ([@epenet] - [#127527]) +- Update integrations to use new UnitOfConductivity enums ([@emontnemery] - [#127932]) +- Avoid unknown error translation strings in anthropic ([@epenet] - [#127823]) +- Snapshot more platforms for Matter ([@joostlek] - [#127541]) +- Cover state is enum ([@gjohansson-ST] - [#127144]) +- Bump actions/cache from 4.1.0 to 4.1.1 (@dependabot - [#127961]) +- Bump actions/upload-artifact from 4.4.1 to 4.4.2 (@dependabot - [#127962]) +- Add updates argument to update_reload_and_abort helper ([@epenet] - [#127781]) +- Bump auroranoaa to 0.0.5 ([@johangus65] - [#127965]) +- Improve IssueRegistryItemSnapshot ([@emontnemery] - [#127949]) +- Use reconfigure helpers in brother config flow ([@epenet] - [#127975]) +- Remove deprecated yaml import from Habitica ([@tr4nt0r] - [#127946]) +- Add Spotify media player tests ([@joostlek] - [#127839]) +- Add tests for the Spotify media browser ([@joostlek] - [#127857]) +- Do not cache the reconfigure entry in google travel time config flow ([@epenet] - [#128002]) +- Simplify jewish_calendar reconfigure flow ([@epenet] - [#128008]) +- Use reconfigure helpers in nam config flow ([@epenet] - [#128016]) +- Do not cache reconfigure entry in tado config flow ([@epenet] - [#128024]) +- Enable strict typing for switch_as_x ([@cdce8p] - [#127998]) +- Do not cache reauth/reconfigure entry in pyload config flow ([@epenet] - [#128017]) +- Use reconfigure helpers in madvr config flow ([@epenet] - [#128012]) +- Do not cache reconfigure entry in smhi config flow ([@epenet] - [#128021]) +- Do not cache the reconfigure entry in homeworks config flow ([@epenet] - [#128006]) +- Use reauth/reconfigure helpers in trafikverket_camera config flow ([@epenet] - [#128026]) +- Use reauth/reconfigure helpers in trafikverket_weatherstation config flow ([@epenet] - [#128028]) +- Use reconfigure helpers in lcn config flow ([@epenet] - [#128011]) +- Do not cache reconfigure entry in waze_travel_time config flow ([@epenet] - [#128030]) +- Do not cache reconfigure entry in vallox config flow ([@epenet] - [#128029]) +- Use reauth/reconfigure helpers in fritz config flow ([@epenet] - [#127990]) +- Do not cache the reconfigure entry in holiday config flow ([@epenet] - [#128005]) +- Do not cache the reconfigure entry in here travel time config flow ([@epenet] - [#128003]) +- Do not cache the entry in lamarzocco config flow ([@epenet] - [#128010]) +- Do not cache reauth/reconfigure entry in solarlog config flow ([@epenet] - [#128023]) +- Use reconfigure helpers in melcloud config flow ([@epenet] - [#128014]) +- Use reauth/reconfigure helpers in reolink config flow ([@epenet] - [#128018]) +- Use reconfigure helpers in mealie config flow ([@epenet] - [#128013]) +- Use reauth/reconfigure helpers in fritzbox config flow ([@epenet] - [#127993]) +- Do not cache the reconfigure entry in feedreader config flow ([@epenet] - [#127989]) +- Use reconfigure helpers in enphase envoy config flow ([@epenet] - [#127977]) +- Use reconfigure helpers in fronius config flow ([@epenet] - [#128001]) +- Allow single use of device class translations in tplink snapshot tests ([@sdb9696] - [#128022]) +- Add strict typing for govee_ble ([@cdce8p] - [#128044]) +- Fix StateType imports ([@cdce8p] - [#128042]) +- Extend deprecation period for hass.helpers by 6 months ([@jpbede] - [#128038]) +- Update RestrictedPython to 7.4 ([@cdce8p] - [#128039]) +- Add state class to qBittorrent UL / DL speed ([@owenvoke] - [#127988]) +- Add missing translations strings in trafikverket_camera ([@gjohansson-ST] - [#128037]) +- Use reauth/reconfigure helpers in shelly config flow ([@epenet] - [#128019]) +- Add missing translation string in enphase envoy ([@mib1185] - [#128053]) +- End deprecation for config entry import for folder watcher ([@gjohansson-ST] - [#128056]) +- Drop reconfigure_confirm step in trafikverket_camera ([@epenet] - [#128031]) +- Use snapshot platform test helper in IPP ([@mib1185] - [#127734]) +- Add Jellyfin remote entity ([@ianhattendorf] - [#126461]) +- Bump actions/upload-artifact from 4.4.2 to 4.4.3 (@dependabot - [#128074]) +- Add ability to pass the config entry explicitly in data update coordinators ([@epenet] - [#127980]) +- Use aiohasupervisor for store APIs ([@mdegat01] - [#126780]) +- Support non-dimmable color lights in Z-Wave JS ([@AlCalzone] - [#127808]) +- Add scene support to WMS WebControl pro ([@mback2k] - [#126081]) +- Use custom function instead mashumaro in WebRTC dataclasses ([@edenhaus] - [#128099]) +- Minor improvement of device registry tests ([@emontnemery] - [#128095]) +- Remove deprecated restart service in modbus ([@gjohansson-ST] - [#128059]) +- Add squeezebox API failure test ([@pssc] - [#128066]) +- Remove deprecated speed limit lock entity from tessie ([@jpbede] - [#128043]) +- Add missing already_configured strings ([@mib1185] - [#128058]) +- Add deconz IKEA SOMRIG device trigger ([@bluemoehre] - [#127464]) +- Bump tesla-fleet-api to 0.8.4 ([@Bre77] - [#127995]) +- Improve entity registry test coverage ([@emontnemery] - [#128073]) +- Add deCONZ IKEA RODRET device trigger ([@bluemoehre] - [#128121]) +- Support open next and close next actions for shades ([@kevdliu] - [#125097]) +- Minor improvement of device_registry ([@emontnemery] - [#128075]) +- Bump aiohttp to 3.10.10 ([@bdraco] - [#128128]) +- Log exceptions in the config flow of Opower ([@tronikos] - [#128146]) +- Add reboot button for tplink ([@rytilahti] - [#127935]) +- Do not use async_config_entry_first_refresh in fronius ([@epenet] - [#128153]) +- Improve docstring of EntityComponent and EntityPlatform ([@emontnemery] - [#128135]) +- Add snapshot testing to Spotify ([@joostlek] - [#128032]) +- Remove parameter add_config_entry from DeviceRegistry.async_update_device ([@emontnemery] - [#128139]) +- Add more Spotify tests for the media player ([@joostlek] - [#127999]) +- Minor improvement of entity platform tests ([@emontnemery] - [#128158]) +- Add test for Spotify select source ([@joostlek] - [#128160]) +- Cleanup unnecessary reconfigure_confirm in fritz config flow ([@epenet] - [#128089]) +- Replace ValueError with deprecation in data update coordinator ([@epenet] - [#128082]) +- Add x-client headers to Habitica API calls ([@tr4nt0r] - [#127952]) +- Fix grammar in Template Helper creation dialog ([@marcjay] - [#128174]) +- Migrate device models to entity descriptions and add localization & icons at Home Connect ([@Diegorro98] - [#127870]) +- Remove config entry import from lg_netcast ([@gjohansson-ST] - [#128179]) +- Remove deprecated notify service in ecobee ([@gjohansson-ST] - [#128177]) +- Bump aiohasupervisor to 0.2.0b0 ([@mdegat01] - [#128173]) +- Use exposed error messages in Assist ([@synesthesiam] - [#127503]) +- Add tests for Habitica integration ([@tr4nt0r] - [#126445]) +- Remove legacy knx notify service ([@gjohansson-ST] - [#128185]) +- Remove legacy notify service from ecobee ([@jpbede] - [#128115]) +- Remove deprecated yaml support from lg_netcast ([@jpbede] - [#128114]) +- Remove not used issue strings in tessie ([@gjohansson-ST] - [#128178]) +- Use device area/floor in HassGetState intent ([@synesthesiam] - [#128197]) +- Use single_instance_allowed in hassio ([@mib1185] - [#128060]) +- Mark integrations as single_config_entry in manifest [system integrations] ([@mib1185] - [#128201]) +- Add to-do list response target for ListAddItemIntent ([@JosephAbbey] - [#121970]) +- Fix ci (dhcp tests) ([@mib1185] - [#128207]) +- Cleanup unnecessary reconfigure_confirm in fritzbox config flow ([@epenet] - [#128087]) +- Bump yarl to 1.15.0 ([@bdraco] - [#128215]) +- Mark integrations as single_config_entry in manifest [a-i] ([@mib1185] - [#128189]) +- Mark integrations as single_config_entry in manifest [k-r] ([@mib1185] - [#128191]) +- Fix binary sensor at Home Connect ([@Diegorro98] - [#128234]) +- Fix hassio data fetching over list[Repository] ([@jbouwh] - [#128206]) +- Mark mqtt as integration with single config entry ([@jbouwh] - [#128202]) +- Use reconfigure helpers in axis config flow ([@epenet] - [#127976]) +- Bump gios to version 5.0.0 ([@bieniu] - [#128257]) +- Fix translation string in google ([@j4n-e4t] - [#128237]) +- Bump yarl to 1.15.1 ([@bdraco] - [#128268]) +- Use entry.runtime_data for caldav ([@autinerd] - [#128278]) +- Do not link nextbus coordinator to config entry ([@epenet] - [#128151]) +- Do not use async_config_entry_first_refresh in fastdotcom ([@epenet] - [#128152]) +- Add translatable title to history_stats ([@gjohansson-ST] - [#128287]) +- Add translatable title to statistics ([@gjohansson-ST] - [#128286]) +- Add switch entity for Shelly scripts ([@chemelli74] - [#108171]) +- Fix state for litterrobot ([@gjohansson-ST] - [#128297]) +- Refactor todo tests ([@Lesekater] - [#128251]) +- Bump pydeconz to v118 ([@hanskroner] - [#128289]) +- Fix translation string in knocki ([@j4n-e4t] - [#128318]) +- Bump yarl to 1.15.2 ([@bdraco] - [#128309]) +- Add model_id to lamarzocco ([@zweckj] - [#128344]) +- Remove single-use variable in aussie-broadband ([@epenet] - [#128340]) +- Bump opower to 0.8.4 ([@tronikos] - [#128338]) +- Use reauth helpers in airvisual ([@epenet] - [#128335]) +- Refactor abode config flow tests ([@epenet] - [#128334]) +- Fix translation string in tankerkoenig ([@j4n-e4t] - [#128320]) +- Cleanup unnecessary reconfigure_confirm from config flows ([@epenet] - [#128086]) +- Strip path from Mastodon base url ([@andrew-codechimp] - [#127994]) +- Use reauth_confirm in azure_devops ([@epenet] - [#128349]) +- Use async_update_reload_and_abort in awair ([@epenet] - [#128345]) +- Fix translation string in tplink ([@j4n-e4t] - [#128352]) +- Fix translation string in yolink ([@j4n-e4t] - [#128353]) +- Add model_id to tedee ([@zweckj] - [#128356]) +- Rewrite go2rtc binary handling to be async ([@edenhaus] - [#128078]) +- Fix translation string in melcloud ([@j4n-e4t] - [#128363]) +- Ensure config_flow abort reasons have translations ([@epenet] - [#128140]) +- Use long option for pytest numprocesses ([@epenet] - [#128354]) +- Use reauth/reconfigure helpers in tedee config flow ([@epenet] - [#128025]) +- Fix translation string in weatherflow ([@j4n-e4t] - [#128321]) +- Fix translation string in lifx ([@j4n-e4t] - [#128362]) +- Fix translation string in eq3btsmart ([@j4n-e4t] - [#128319]) +- Fix translation string in gardena_bluetooth ([@j4n-e4t] - [#128387]) +- Improve internal naming ([@Thomas55555] - [#128390]) +- Fix initialization of some `denonavr` receivers when telnet API is enabled ([@ol-iver] - [#127882]) +- Fix go2rtc test RuntimeWarnings ([@cdce8p] - [#128411]) +- Response type should not contain datetime for Swiss Public Transport ([@miaucl] - [#128391]) +- Add tests/components/conftest.py to core files ([@epenet] - [#128425]) +- Fix reauth strings in Teslemetry ([@Bre77] - [#128426]) +- Fix translation string in rova ([@j4n-e4t] - [#128402]) +- Fix translation string in iotty ([@j4n-e4t] - [#128385]) +- Add missing translation for youtube ([@epenet] - [#128431]) +- Adjust homewizard translation strings ([@epenet] - [#128423]) +- Fix translation string in matter ([@j4n-e4t] - [#128364]) +- Fix pytest workflow for testing multiple Python versions [ci] ([@cdce8p] - [#128412]) +- Add BaseBackupManager as a common interface for backup managers ([@ludeeus] - [#126611]) +- Fail on unused ignore_translations fixture ([@epenet] - [#128422]) +- Add WS endpoint to fetch the details of a backup ([@ludeeus] - [#128430]) +- Bump github/codeql-action from 3.26.12 to 3.26.13 (@dependabot - [#128420]) +- Fix translation string in spotify ([@j4n-e4t] - [#128440]) +- Improve check for user-visible flows when checking translations in tests ([@epenet] - [#128434]) +- Refactor prometheus integration tests ([@jzucker2] - [#113849]) +- Add support HmIP-BSL after firmware update to 2.0 to homematicip_cloud ([@hahn-th] - [#117657]) +- Improve intent recognition in default conversation agent ([@arturpragacz] - [#124282]) +- Trim the text of todo and shopping list items in intents ([@synesthesiam] - [#128456]) +- Replace webexteamssdk with webexpythonsdk ([@DJF3] - [#127928]) +- Move backup plaform loading to the base class ([@ludeeus] - [#128449]) +- Add missing translation string in unifi ([@MichScha] - [#128062]) +- Fix translation string in lyric ([@j4n-e4t] - [#128386]) +- Fix default conversation agent tests ([@arturpragacz] - [#128490]) +- Bump yarl to 1.15.3 ([@bdraco] - [#128499]) +- Mark custom components that overwrite core ([@MindFreeze] - [#127937]) +- Add SOURCE_SYSTEM to DISCOVERY_SOURCES ([@epenet] - [#128457]) +- Remove duplicate oauth2 token validity check ([@CFenner] - [#128419]) +- Add missing Weheat temperature sensors ([@barryvdh] - [#128452]) +- Add even more tests to Spotify ([@joostlek] - [#128298]) +- Rename host to url in go2rtc config flow ([@edenhaus] - [#128508]) +- Add SOURCE_HASSIO to DISCOVERY_SOURCES ([@epenet] - [#128454]) +- Fix incorrect error strings in triggercmd ([@epenet] - [#128450]) +- Fix incorrect error strings in webmin ([@epenet] - [#128448]) +- Fix incorrect error strings in weatherflow ([@epenet] - [#128447]) +- Add check for valid abort reason translation in option flows ([@epenet] - [#128444]) +- Use unique_id_mismatch in aseko_pool_live reauth ([@epenet] - [#128339]) +- Correct type hints on MQTT tests ([@jbouwh] - [#128299]) +- Update build-system ([@cdce8p] - [#128256]) +- Add checks for config entry state in async_config_entry_first_refresh ([@epenet] - [#128148]) +- Reorder Google Assistant Traits ([@joostlek] - [#127646]) +- Bump aiostreammagic to 2.6.0 ([@noahhusby] - [#128498]) +- Migrate Wyoming satellite to Assist satellite entity ([@synesthesiam] - [#128488]) +- Add conversation agent to Wyoming ([@synesthesiam] - [#124373]) +- Migrate spotify to aiospotify ([@joostlek] - [#127728]) +- Prevent leak of current_entry context variable ([@epenet] - [#128145]) +- Update aioairzone-cloud to v0.6.7 ([@Noltari] - [#128231]) +- Bump uv to 0.4.22 ([@edenhaus] - [#128518]) +- Use runtime_data in rainforest_raven ([@epenet] - [#128517]) +- Bump aiostreammagic to 2.7.0 ([@noahhusby] - [#128525]) +- Add check for valid error code in translation checks in flows ([@epenet] - [#128445]) +- Update terminology for built-in blueprints ([@olafz] - [#128383]) +- Add diagnostics to Spotify ([@joostlek] - [#128521]) +- Add port to config flow of P1 Monitor integration ([@klaasnicolaas] - [#128324]) +- Always use uv from virtual environment at runtime ([@sdb9696] - [#128371]) +- Add select entity to Cambridge Audio ([@noahhusby] - [#128527]) +- Remove deprecated map integration ([@jpbede] - [#128529]) +- Fix translation string in hyperion ([@j4n-e4t] - [#128384]) +- Remove deprecated panel_iframe integration ([@jpbede] - [#128532]) +- Add missing description placeholder in Tessie ([@Bre77] - [#128481]) +- Add a missing translation for energy error ([@karwosts] - [#128413]) +- Fix translation string in guardian ([@j4n-e4t] - [#128535]) +- Bump ZHA dependencies ([@puddly] - [#128539]) +- Bump yarl to 1.15.4 ([@bdraco] - [#128536]) +- Update mypy-dev to 1.13.0a1 ([@cdce8p] - [#128548]) +- Cleanup unused snapshots ([@epenet] - [#128549]) +- Fix schema violations in manifest.json files ([@autinerd] - [#128561]) +- Keep ZHA entity enabled setting in sync with lib ([@dmulcahey] - [#125472]) +- Improve camera tests ([@emontnemery] - [#128545]) +- Use reauth helpers in google_assistant_sdk ([@epenet] - [#128582]) +- Use reauth helpers in google_generative_ai_conversation ([@epenet] - [#128583]) +- Refactor unittest tests to use pytest ([@Honza-m] - [#127770]) +- Use reauth helpers in fujitsu_fglair ([@epenet] - [#128570]) +- Rename the SkyConnect integration to Connect ZBT-1 ([@puddly] - [#128599]) +- Use reauth helpers in fyta ([@epenet] - [#128571]) +- Use reauth helpers in fitbit ([@epenet] - [#128568]) +- Remove metadata and cover art using ffmpeg proxy conversion ([@synesthesiam] - [#128603]) +- Bump mozart-api to 4.1.1.116.0 ([@mj23000] - [#128573]) +- Use reauth helpers in co2signal ([@epenet] - [#128566]) +- Use shorthand attribute in threshold binary sensor ([@gjohansson-ST] - [#128612]) +- Bump aiostreammagic to 2.8.1 ([@noahhusby] - [#128542]) +- Bump ruff to 0.7.0 ([@autinerd] - [#128626]) +- Use reauth helpers in hydrawise ([@epenet] - [#128632]) +- Use reauth helpers in husqvarna_automower ([@epenet] - [#128631]) +- Use reauth helpers in huawei_lte ([@epenet] - [#128630]) +- Use reauth helpers in honeywell ([@epenet] - [#128629]) +- Refactor duplicate host check in homeworks config flow ([@epenet] - [#128627]) +- Use reauth helpers in google_photos ([@epenet] - [#128585]) +- Use reauth helpers in google_tasks ([@epenet] - [#128586]) +- Use reauth helpers in google_mail ([@epenet] - [#128584]) +- Use shorthand attribute in trend binary sensor ([@gjohansson-ST] - [#128614]) +- Use reauth helpers in homewizard ([@epenet] - [#128628]) +- Bump reolink_aio to 0.10.0 ([@starkillerOG] - [#128578]) +- Use shorthand attribute in derivative sensor ([@gjohansson-ST] - [#128610]) +- Remove ExternalDevice 'invalid ID' migration in HomeWizard ([@DCSBL] - [#128634]) +- Add asdf tools dot file to gitignore ([@jzucker2] - [#128608]) +- Use reauth helpers in frontier_silicon ([@epenet] - [#128569]) +- Use reauth helpers in fibaro ([@epenet] - [#128567]) +- Add sensors to Omada ([@MarkGodwin] - [#127767]) +- Use snapshot assertion in rainforest_raven sensor tests ([@epenet] - [#128604]) +- Use snapshot assertion in rainforest_raven diagnostic tests ([@epenet] - [#128602]) +- Update Reolink config entry port info if needed ([@starkillerOG] - [#128589]) +- Use reauth helpers in glances ([@epenet] - [#128579]) +- Use reauth helpers in google_sheets ([@epenet] - [#128587]) +- Add list as possible values for State On/Off ModBus Switch ([@crug80] - [#127444]) +- Use reauth helpers in jvc_projector ([@epenet] - [#128650]) +- Use reauth helpers in justnimbus ([@epenet] - [#128649]) +- Use reauth helpers in imap ([@epenet] - [#128645]) +- Fix reload not triggered on DisabledError in HomeWizard ([@DCSBL] - [#128636]) +- Use reauth_confirm in osoenergy ([@epenet] - [#128665]) +- Use reauth helpers in ring ([@epenet] - [#128663]) +- Add model_id to rainforest_raven device info ([@epenet] - [#128652]) +- Refactor rainforest_raven coordinator tests ([@epenet] - [#128591]) +- Use new reauth helpers in overkiz ([@epenet] - [#128666]) +- Use reauth helpers in lacrosse_view ([@epenet] - [#128655]) +- Use reauth helpers in linear_garage_door ([@epenet] - [#128658]) +- Use reauth helpers in litterrobot ([@epenet] - [#128659]) +- Use reauth helpers in lidarr ([@epenet] - [#128657]) +- Use reauth helpers in lametric ([@epenet] - [#128656]) +- Use reauth helpers in intellifire ([@epenet] - [#128646]) +- Use reauth helpers in jellyfin ([@epenet] - [#128648]) +- Use reauth helpers in ista_ecotrend ([@epenet] - [#128647]) +- Improve logic for detecting unused ignore translations ([@epenet] - [#128441]) +- Block until config is retrieved when adding satellite entity to HA ([@synesthesiam] - [#128685]) +- Bump yarl to 1.15.5 ([@bdraco] - [#128681]) +- Use reauth_confirm in nanoleaf ([@epenet] - [#128698]) +- Add lighting effects to Hue lights managed by deCONZ ([@hanskroner] - [#128292]) +- Use reauth_confirm in myuplink ([@epenet] - [#128697]) +- Use reauth_confirm in opower ([@epenet] - [#128707]) +- Use reauth_confirm in mqtt ([@epenet] - [#128696]) +- Remove dead code and increase test coverage for google config flow ([@allenporter] - [#128690]) +- Use new reauth_helpers in onvif ([@epenet] - [#128705]) +- Use new reauth_helpers in oncue ([@epenet] - [#128704]) +- Use new reauth_helpers in notion ([@epenet] - [#128703]) +- Use new reauth_helpers in microbees ([@epenet] - [#128692]) +- Use reauth helpers in google ([@epenet] - [#128580]) +- Use new reauth_helpers in nice_go ([@epenet] - [#128702]) +- Use new reauth_helpers in mikrotik ([@epenet] - [#128693]) +- Use new reauth_helpers in nextdns ([@epenet] - [#128701]) +- Use new reauth_helpers in openexchangerates ([@epenet] - [#128706]) +- Use new reauth helpers in pvoutput ([@epenet] - [#128720]) +- Use new reauth_helpers in monzo ([@epenet] - [#128694]) +- Use new reauth_helpers in motioneye ([@epenet] - [#128695]) +- Use new reauth_helpers in nextcloud ([@epenet] - [#128700]) +- Use new reauth helpers in philips_js ([@epenet] - [#128714]) +- Use new reauth helpers in pi_hole ([@epenet] - [#128715]) +- Use new reauth helpers in point ([@epenet] - [#128716]) +- Use new reauth helpers in powerwall ([@epenet] - [#128717]) +- Use new reauth helpers in prosegur ([@epenet] - [#128718]) +- Use new reauth helpers in purpleair ([@epenet] - [#128719]) +- Use new reauth helpers in radarr ([@epenet] - [#128725]) +- Add coordinator to Twitch ([@joostlek] - [#127724]) +- Use new reauth helpers in ruckus_unleashed ([@epenet] - [#128727]) +- Use new reauth helpers in roborock ([@epenet] - [#128726]) +- Use new reauth helpers in samsungtv ([@epenet] - [#128729]) +- Use new reauth helpers in pvpc_hourly_pricing ([@epenet] - [#128721]) +- Use new reauth helpers in rympro ([@epenet] - [#128728]) +- Allow SSL security_protocol configuration property in apache_kafka component ([@jkaflik] - [#128651]) +- Catch Reolink LoginFirmwareError ([@starkillerOG] - [#128590]) +- Bump huawei-lte-api to 1.9.3 ([@scop] - [#128731]) +- Use new reauth helpers in surepetcare ([@epenet] - [#128748]) +- Use new reauth helpers in tplink ([@epenet] - [#128768]) +- Use new reauth helpers in twitch ([@epenet] - [#128767]) +- Use new reauth helpers in tuya ([@epenet] - [#128766]) +- Fix Airzone climate temperature range ([@Noltari] - [#128737]) +- Use new reauth helpers in transmission ([@epenet] - [#128765]) +- Use new reauth helpers in trafikverket_train ([@epenet] - [#128764]) +- Use new reauth helpers in trafikverket_ferry ([@epenet] - [#128763]) +- Bump spotifyaio to 0.7.0 ([@joostlek] - [#128751]) +- Use new reauth helpers in schlage ([@epenet] - [#128736]) +- Bump upcloud-api to 2.6.0 ([@scop] - [#128734]) +- Use new reauth helpers in sfr_box ([@epenet] - [#128739]) +- Fix Airzone Cloud climate temperature range ([@Noltari] - [#128740]) +- Update ha-ffmpeg to 3.2.1 ([@cdce8p] - [#128769]) +- Use new reauth helpers in tplink_omada ([@epenet] - [#128762]) +- Use new reauth helpers in thethingsnetwork ([@epenet] - [#128761]) +- Use new reauth helpers in tailscale ([@epenet] - [#128752]) +- Use new reauth helpers in sensibo ([@epenet] - [#128738]) +- Use new reauth helpers in tailwind ([@epenet] - [#128755]) +- Use new reauth helpers in skybell ([@epenet] - [#128741]) +- Use new reauth helpers in sleepiq ([@epenet] - [#128742]) +- Use new reauth helpers in smlight ([@epenet] - [#128744]) +- Use new reauth helpers in sonarr ([@epenet] - [#128745]) +- Use new reauth helpers in steam_online ([@epenet] - [#128746]) +- Use new reauth helpers in sunweg ([@epenet] - [#128747]) +- Use new reauth helpers in tautulli ([@epenet] - [#128758]) +- Use new reauth helpers in switcher_kis ([@epenet] - [#128750]) +- Use new reauth helpers in tankerkoenig ([@epenet] - [#128756]) +- Use new reauth helpers in vlc_telnet ([@epenet] - [#128780]) +- Use new reauth helpers in vodafone_station ([@epenet] - [#128781]) +- Use new reauth helpers in smarttub ([@epenet] - [#128743]) +- Use new reauth_helpers in nest ([@epenet] - [#128699]) +- Fix device data roborock ([@Lash-L] - [#128792]) +- Bump pysqueezebox to v0.10.0 ([@rajlaud] - [#128774]) +- Use new reauth helpers in unifiprotect ([@epenet] - [#128775]) +- Use new reauth helpers in verisure ([@epenet] - [#128778]) +- Use new reauth helpers in volvooncall ([@epenet] - [#128782]) +- Remove erroneous switch entity description at Home Connect ([@Diegorro98] - [#128576]) +- Use new reauth helpers in tessie ([@epenet] - [#128760]) +- Use new reauth helpers in teslemetry ([@epenet] - [#128759]) +- Update eq3btsmart to 1.2.0 ([@cdce8p] - [#128808]) +- Bump google-nest-sdm to 6.1.0 ([@allenporter] - [#128812]) +- Use new reauth helpers in weatherflow_cloud ([@epenet] - [#128821]) +- Use new reauth helpers in wallbox ([@epenet] - [#128820]) +- Simplify custom component loading ([@balloob] - [#128813]) +- Bump spotifyaio to 0.7.1 ([@joostlek] - [#128807]) +- Use new reauth helpers in webostv ([@epenet] - [#128823]) +- Use new reauth helpers in whirlpool ([@epenet] - [#128825]) +- Handle invalid zeroconf messages in Android TV Remote ([@tronikos] - [#128819]) +- Use new reauth helpers in xiaomi_ble ([@epenet] - [#128827]) +- Use new reauth helpers in yale ([@epenet] - [#128828]) +- Update zhong-hong-hvac to 1.0.13 ([@cdce8p] - [#128822]) +- Use new reauth helpers in vicare ([@epenet] - [#128779]) +- Auto lower case username for Schlage auth flows ([@frenck] - [#128730]) +- Bump plugwise to v1.4.3 ([@bouwew] - [#128773]) +- Use new reauth helpers in weheat ([@epenet] - [#128824]) +- Use new reauth helpers in youtube ([@epenet] - [#128835]) +- Use new reauth helpers in yolink ([@epenet] - [#128834]) +- Update attrs to 24.2.0 ([@cdce8p] - [#126656]) +- Add Spotify to strict typing ([@joostlek] - [#128846]) +- Use new reauth helpers in yalexs_ble ([@epenet] - [#128831]) +- Use new reauth helpers in withings ([@epenet] - [#128826]) +- Add New Music Category for Media Browser ([@peteS-UK] - [#128147]) +- Add Twitch stream viewer as readable data for integration ([@LunaBytesBack] - [#128787]) +- Align consumption sensor names in ViCare integration ([@CFenner] - [#127888]) +- Reduce the size of the Nest event media storage cache ([@oliverwoodings] - [#128855]) +- Add humidity to KNX climate ([@alexkn] - [#128844]) +- Use new reauth helpers in yale_smart_alarm ([@epenet] - [#128836]) +- Bump google-nest-sdm to 6.1.3 ([@allenporter] - [#128871]) +- Remove myself from roomba codeowners ([@Xitee1] - [#128858]) +- Bump habluetooth to 3.6.0 ([@bdraco] - [#128815]) +- Add audio feature sensors to Spotify ([@joostlek] - [#128785]) +- Improve entity cached attributes ([@emontnemery] - [#128876]) +- Use runtime_data for Swiss Public Transport ([@miaucl] - [#128369]) +- Add translations for Netatmo thermostat preset modes ([@piitaya] - [#128890]) +- Simplify Swiss public transport coordinator ([@miaucl] - [#128891]) +- Include Z-Wave JS lowSecurityReason in node added websocket message ([@MindFreeze] - [#128896]) +- Remove dead code from concord232 ([@emontnemery] - [#128907]) +- Add reconfigure flow to ring integration ([@sdb9696] - [#128357]) +- Add update_percentage state attribute to update entity ([@emontnemery] - [#128877]) +- Push real binary sensor states to state machine in tests ([@epenet] - [#128894]) +- Use STATE_ON/STATE_OFF constants in template test ([@epenet] - [#128883]) +- Bump pyopenweathermap to v0.2.1 ([@10100011] - [#128892]) +- Add ecobee set_sensors_used_in_climate service ([@myztillx] - [#102871]) +- Add Airzone switch entities to zones ([@Noltari] - [#124562]) +- Add new QNAP QSW uptime timestamp sensor ([@Noltari] - [#122589]) +- Remove explicit templating of persistent_notification service data ([@emontnemery] - [#128903]) +- Remaining addon management to aiohasupervisor ([@mdegat01] - [#128484]) +- Add Airzone Cloud main zone mode select ([@Noltari] - [#125918]) +- Add Airzone Cloud switch entities to zones ([@Noltari] - [#125917]) +- Add SIA alarm code ([@DurandAN] - [#127467]) +- Add floor heating device valve positions in Homematic IP Cloud ([@barryvdh] - [#122759]) +- Add fan `set_speed` support for Xiaomi Mi Air Purifier 3C ([@tr4nt0r] - [#126870]) +- Add config flow to local_file ([@gjohansson-ST] - [#125835]) +- Add firmware update entity to IronOS integration ([@tr4nt0r] - [#123031]) +- Deprecate entity_id template variable in camera services ([@emontnemery] - [#128592]) +- Add update_percentage property to update entity ([@emontnemery] - [#128908]) +- Allow Trend title to be translated ([@gjohansson-ST] - [#128926]) +- Fix description placeholder in fibaro reauth ([@gjohansson-ST] - [#128925]) +- Allow Random title to be translated ([@gjohansson-ST] - [#128928]) +- Bump holidays to 0.59 ([@gjohansson-ST] - [#128924]) +- Remove explicit templating of telegram_bot service data ([@emontnemery] - [#128906]) +- Remove explicit templating of minio service data ([@emontnemery] - [#128905]) +- Remove explicit templating of velbus service data ([@emontnemery] - [#128904]) +- Remove explicit templating of logbook service data ([@emontnemery] - [#128902]) +- Allow Timer title to be translated ([@gjohansson-ST] - [#128927]) +- Fix description placeholder in brunt reauth ([@rappenze] - [#128933]) +- Add subscription tier attribute to Twitch integration. ([@qwell] - [#128870]) +- Add missing strings for mold indicator ([@rahulsamant37] - [#128205]) +- Drop not needed reauth strings in tplink ([@gjohansson-ST] - [#128937]) +- Use new reauth helpers in unifi ([@epenet] - [#128837]) +- Fix description placeholder in imap reauth ([@rappenze] - [#128940]) +- Implement new state property for alarm_control_panel which is using an enum ([@gjohansson-ST] - [#126283]) +- Fix description placeholder in transmission reauth ([@rappenze] - [#128938]) +- Add motion detected binary_sensor for tplink ([@rytilahti] - [#127883]) +- Expose tplink temperature sensor as measurement ([@rytilahti] - [#128640]) +- Fix flaky update coordinator test ([@gjohansson-ST] - [#128943]) +- Bump PySwitchbot to 0.49.0 ([@bdraco] - [#128945]) +- Bump xiaomi-ble to 0.33.0 ([@bdraco] - [#128946]) +- Update astroid to 3.3.5 ([@cdce8p] - [#128948]) +- Bump yarl to 1.16.0 ([@bdraco] - [#128941]) +- Bump gcal_sync to 6.2.0 ([@allenporter] - [#128949]) +- Bump orjson to 3.10.9 ([@bdraco] - [#128952]) +- Bump pySwitchbot to 0.50.1 ([@bdraco] - [#128953]) +- Add snapshot service to image entity ([@NickM-27] - [#110057]) +- Add OSO Energy services ([@osohotwateriot] - [#118770]) +- Change Stun server port to 80 ([@klejejs] - [#128879]) +- Fix google tasks todo docstrings ([@allenporter] - [#128978]) +- Add support for fetching bindkey from Mi cloud ([@bdraco] - [#128394]) +- Fix zha test RuntimeWarnings ([@cdce8p] - [#128975]) +- Bump aiocomelit to 0.9.1 ([@chemelli74] - [#128977]) +- Bump aiovodafone to 0.6.1 ([@chemelli74] - [#128976]) +- Bump PySwitchBot to 0.51.0 ([@bdraco] - [#128990]) +- Add limited template to at field for time triggers ([@Petro31] - [#126584]) +- Update aioairzone-cloud to v0.6.8 ([@Noltari] - [#128992]) +- Bump axis to v63 ([@swoga] - [#129005]) +- Bump python-roborock to 2.6.1 ([@Lash-L] - [#128804]) +- Bump lektricowifi to 0.0.43 ([@Lektrico] - [#128979]) +- Use ConfigEntry.runtime_data in gardena_bluetooth ([@jpbede] - [#129000]) +- Improve template docstring ([@epenet] - [#128967]) +- Fix step in presets for generic thermostat ([@gjohansson-ST] - [#128922]) +- Expose scripts with no fields as entities ([@Shulyaka] - [#123061]) +- Fix FUNDING.yml to OHF ([@pvizeli] - [#129013]) +- Add Hassio HTTP logs/follow to allowed paths ([@wendevlin] - [#126606]) +- Bump orjson to 3.10.10 ([@bdraco] - [#129015]) +- Adjust logging level in ModBus ([@crug80] - [#128980]) +- Remove battery device class from bmw secondary sensor ([@zweckj] - [#128970]) +- Refactor camera.webrtc.register_ice_server ([@emontnemery] - [#129024]) +- Add go2rtc binary config to expose api only on localhost ([@edenhaus] - [#129025]) +- Bump github/codeql-action from 3.26.13 to 3.27.0 (@dependabot - [#129019]) +- Powerview migrate scene to string unique_id ([@kingy444] - [#128131]) +- Bump python bsblan version 0.6.4 ([@liudger] - [#128999]) +- Allow configuring WebRTC stun and turn servers ([@emontnemery] - [#128984]) +- Have statistics functions return a meaningful, non-none result even if only one value is available ([@unfug-at-github] - [#127305]) +- Add switch platform to the Lektrico integration ([@Lektrico] - [#126721]) +- Bump actions/cache from 4.1.1 to 4.1.2 (@dependabot - [#129018]) +- Remove deprecated channel views attribute from Twitch ([@qwell] - [#129008]) +- Use runtime_data in balboa ([@epenet] - [#129035]) +- Add `completed` to the wait variable when using triggers (`wait_for_trigger`) ([@jbergler] - [#123427]) +- Use runtime_data in bang_olufsen ([@epenet] - [#129037]) +- Create tests for sense integration ([@kbickar] - [#128418]) +- Bump sensorpush-ble to 1.7.0 ([@bdraco] - [#128951]) +- Fix calculation of attributes in group sensor ([@gjohansson-ST] - [#128601]) +- Fix get_time_zone annotations in dt_util ([@Thomas55555] - [#129050]) +- Add 'select' to configure Schlage locks "Auto Lock Time" ([@mxr] - [#123758]) +- Bump actions/checkout from 4.2.1 to 4.2.2 (@dependabot - [#129063]) +- Use fan mode when heat/cool is idle in homekit_controller ([@Xeio] - [#128618]) +- Remove bloomsky integration ([@epenet] - [#129073]) +- Switch from pysuez to pysuezV2 in Suez Water ([@jb101010-2] - [#127113]) +- Add config flow to Onkyo ([@Nebula83] - [#117319]) +- Add config flow to Smarty ([@joostlek] - [#127540]) +- Move core config functionality to its own module ([@emontnemery] - [#129065]) +- Use runtime_data in blebox ([@epenet] - [#129070]) +- Use runtime_data in blink ([@epenet] - [#129072]) +- Add unique id and tests for Smarty ([@joostlek] - [#129078]) +- Add tests for media_player to bluesound integration ([@LouisChrist] - [#125864]) +- Use runtime_data in bluemaestro ([@epenet] - [#129085]) +- Use runtime_data in blue_current ([@epenet] - [#129084]) +- Use runtime_data in buienradar ([@epenet] - [#129087]) +- Update pytest warnings filter ([@cdce8p] - [#129075]) +- Switch to using a fixture for evohome WaterHeater tests ([@zxdavb] - [#127701]) +- Use shorthand attribute in template binary sensor ([@epenet] - [#128966]) +- Fix update callback in Cambridge Audio test ([@noahhusby] - [#129092]) +- Add Meter Pro support to SwitchBot ([@bdraco] - [#128991]) +- Use runtime_data in bsblan ([@epenet] - [#129089]) +- Reduce the number of API calls in Twitch integration ([@qwell] - [#128996]) +- Add buttons to cast skills in Habitica integration ([@tr4nt0r] - [#126350]) +- Simplify webmin tests to use snapshot_platform ([@autinerd] - [#127754]) +- Add play media capability to Cambridge Audio ([@noahhusby] - [#129002]) +- Bump ruff to 0.7.1 ([@autinerd] - [#129102]) +- Allow update entities to report progress as a float ([@emontnemery] - [#128930]) +- Bump aioautomower to 2024.10.3 ([@Thomas55555] - [#128788]) +- Add coordinator to Smarty ([@joostlek] - [#129083]) +- Fix null hass error in supervisor update entities ([@mdegat01] - [#129030]) +- Add entity descriptions to Smarty Binary sensor ([@joostlek] - [#129110]) +- Add missing state_class to sensors in solarlog ([@dontinelli] - [#128296]) +- Use webrtc-models package ([@edenhaus] - [#129032]) +- Add typing for sense component ([@kbickar] - [#129119]) +- Bump actions/setup-python from 5.2.0 to 5.3.0 (@dependabot - [#129121]) +- Set up single coordinator for all config entries in IronOS ([@tr4nt0r] - [#129108]) +- Switch to using a fixture for evohome Climate tests (of zones) ([@zxdavb] - [#129100]) +- Add entity picture for healing potion in Habitica ([@tr4nt0r] - [#129107]) +- Refactor services setup in Habitica integration ([@tr4nt0r] - [#128186]) +- Prevent duplicate WMS WebControl pro config entry creation ([@mback2k] - [#128315]) +- Resume adding Z-Wave device if the page is refreshed ([@MindFreeze] - [#129081]) +- Add additional tests to Cambridge Audio ([@noahhusby] - [#128213]) +- Remove go2rtc config flow ([@emontnemery] - [#129020]) +- Add comment to Rflink battery sensor definition ([@epenet] - [#129131]) +- Add support for Faucet services in HomeKit Controller ([@feisley] - [#129094]) +- Add switch entity to Cambridge Audio ([@noahhusby] - [#128530]) +- Move bluesound service registration to separate module ([@epenet] - [#129086]) +- Use ConfigEntry.runtime_data in govee_light_local ([@jpbede] - [#128998]) +- Use NumberSelector in p1_monitor config flow ([@jpbede] - [#128939]) +- Add energy consumption sensors for cooling in ViCare integration ([@CFenner] - [#127274]) +- Add data streaming to Teslemetry ([@Bre77] - [#127559]) +- Remove string literals from modbus component tests ([@crug80] - [#128899]) +- Remove deprecated `retries` and `lazy_error_count` yaml option ([@jpbede] - [#128932]) +- Migrate config entry in anova to remove devices from entry data ([@gjohansson-ST] - [#128934]) +- Fix go2rtc config schema ([@emontnemery] - [#129141]) +- Add option to extract licenses [ci] ([@cdce8p] - [#129095]) +- Add entity descriptions to Smarty sensor ([@joostlek] - [#129111]) +- Add base class to Smarty ([@joostlek] - [#129112]) +- Vodafone Station typing ([@chemelli74] - [#129143]) +- Avoid creating Prometheus metrics for non-numeric states ([@knyar] - [#127262]) +- Bump aioswitcher to 4.2.0 ([@YogevBokobza] - [#129118]) +- Bump pymoncms library to version 0.1.1 ([@alexandrecuer] - [#129135]) +- Home connect light generalization and RGB support ([@Diegorro98] - [#126144]) +- Add opening closing state to fibaro cover ([@rappenze] - [#126958]) +- Add refoss em16 device model ([@ashionky] - [#126798]) +- Cleanup hass.data default in airtouch5 ([@epenet] - [#129156]) +- Include go2rtc in default_config ([@emontnemery] - [#129144]) +- Bump aiostreammagic to 2.8.3 ([@noahhusby] - [#129113]) +- Fix transition config storage in LCN light and scene platform ([@alengwenus] - [#127847]) +- Add husqvarna automower ble integration ([@alistair23] - [#108326]) +- Update sense-energy to 0.13.2 ([@kbickar] - [#128670]) +- Add `List access` sensor to Bring integration ([@tr4nt0r] - [#126844]) +- Add Intellifire cloud/local connectivity sensors ([@jeeftor] - [#127122]) +- Update aioopenexchangerates to 0.6.8 ([@cdce8p] - [#129162]) +- Add support for Mighty Mule MMS100 to Nice G.O. ([@IceBotYT] - [#127765]) +- Update pyxeoma to 1.4.2 ([@cdce8p] - [#129164]) +- Dynamic add/remove devices for solarlog ([@dontinelli] - [#128668]) +- Add Diegorro98 as Home Connect code owner ([@Diegorro98] - [#129169]) +- Bump aiostreammagic to 2.8.4 ([@noahhusby] - [#129166]) +- Add "Albums" sensor to Lidarr ([@iz4c] - [#125631]) +- Update zeversolar to 0.3.2 ([@cdce8p] - [#129167]) +- Door entity as enum sensor at Home Connect ([@Diegorro98] - [#126158]) +- Add light support to WMS WebControl pro ([@mback2k] - [#128308]) +- Add all models to diagnostics for Cambridge Audio ([@noahhusby] - [#129157]) +- Use TAP to activate Lutron scenes ([@cdheiser] - [#127899]) +- Improve prometheus metric name sanitization ([@rcloran] - [#126967]) +- Update goslide-api to 0.7.0 ([@cdce8p] - [#129168]) +- Enforce strict typing for Cambridge Audio ([@noahhusby] - [#129004]) +- Remove category from Assist satellite entities ([@synesthesiam] - [#129172]) +- Remove check for obsolete "rain_product_available" in meteo_france ([@Passific] - [#128533]) +- Add more Vesync IDs for the Vital200S ([@bru73f0rc3] - [#127616]) +- Update heatmiserV3 to 2.0.3 ([@cdce8p] - [#129175]) +- Fix coffee maker device type name at applicances with programs list at Home Connect ([@Diegorro98] - [#128538]) +- Fix program switches unique ID at Home Connect ([@Diegorro98] - [#128397]) +- Add lock to switchbot_cloud ([@miterion] - [#115128]) +- Add repeat media controls to Bang & Olufsen ([@mj23000] - [#128170]) +- LinkPlay multiroom support ([@silamon] - [#127862]) +- Allow to set `entity picture` on mqtt entity platforms ([@jbouwh] - [#128404]) +- Use translated exceptions for Cambridge Audio ([@noahhusby] - [#129177]) +- Add coordinators to Sense ([@kbickar] - [#129171]) +- Update aiooui to 0.1.7 ([@cdce8p] - [#129179]) +- Fix service target devices by label ([@arturpragacz] - [#127229]) +- Update krakenex to 2.2.2 ([@cdce8p] - [#129185]) +- Add media seek for sources other than Deezer for Bang & Olufsen ([@mj23000] - [#128661]) +- Fix powerview entity unique id migration when the config entry unique id is missing ([@bdraco] - [#129188]) +- Bump plugwise to v1.4.4 ([@bouwew] - [#129170]) +- Fix cambridge_audio RuntimeWarning during tests ([@cdce8p] - [#129191]) +- Create a script service schema based on fields ([@balloob] - [#128622]) +- Fix AsyncMock imports ([@cdce8p] - [#129192]) +- Update radios to 0.3.2 and pycountry to 24.6.1 ([@cdce8p] - [#129186]) +- Update apple_weatherkit to 1.1.3 ([@cdce8p] - [#129193]) +- Add support for Xiaomi Miio Standing Fan 2 (dmaker.fan.p18) ([@bieniu] - [#129160]) +- Bump lcn-frontend to 0.2.0 ([@alengwenus] - [#129061]) +- Add JSON schema for manifest.json ([@autinerd] - [#128560]) +- Migrate Smarty to has entity name ([@joostlek] - [#129145]) +- Move airthings coordinator to separate module ([@epenet] - [#129158]) +- Use runtime_data in aranet ([@epenet] - [#129155]) +- Move brunt coordinator to separate module ([@epenet] - [#129090]) +- Fix rainmachine update entities missing display_precision ([@bdraco] - [#129195]) +- Ensure go2rtc server starts using posix_spawn/vfork ([@bdraco] - [#129196]) +- Move core config class to core_config.py ([@emontnemery] - [#129163]) +- Bump anyio to 4.6.2.post1 ([@bdraco] - [#129199]) +- Add base entity to Spotify ([@joostlek] - [#128847]) +- Fix unused snapshots not triggering failure in CI ([@epenet] - [#128162]) +- Remove support for live recorder data migration of context ids ([@emontnemery] - [#125309]) +- Allow re-discovery of mqtt integration config payloads ([@jbouwh] - [#127362]) +- Bump lacrosse_view to 1.0.3 ([@IceBotYT] - [#129174]) +- Fix race condition in statistics that created spikes ([@unfug-at-github] - [#129066]) +- Refactor licenses check ([@cdce8p] - [#129194]) +- Make minor fixes / doc tweaks to evohome's WaterHeater tests ([@zxdavb] - [#129138]) +- Update gardena-bluetooth to 1.4.4 ([@cdce8p] - [#129202]) +- Update zeroconf to 0.136.0 ([@cdce8p] - [#129204]) +- Add Time platform with alarm clock to Home Connect ([@Diegorro98] - [#126155]) +- Bump pysuezV2 to 0.2.2 ([@jb101010-2] - [#129205]) +- Home connect number platform with temperature set points entities ([@Diegorro98] - [#126145]) +- Bump fyta_cli to 0.6.10 ([@dontinelli] - [#129220]) +- Add logger for fyta library in manifest.json ([@dontinelli] - [#129218]) +- Remove remnants of removed list_events action ([@joostlek] - [#129210]) +- Update aioairzone-cloud to v0.6.9 ([@Noltari] - [#129217]) +- Add more spotify sensors ([@joostlek] - [#129215]) +- Add tests of evohome integration-specific services ([@zxdavb] - [#129206]) +- Fix evohome failing to start with `'NoneType' object has no attribute 'get'` ([@zxdavb] - [#129222]) +- Fix setting brightness to 0 in HomeKit when the On characteristic is not sent ([@bdraco] - [#129201]) +- Add and remove plants (i.e. devices) dynamically in fyta ([@dontinelli] - [#129221]) +- Add dishwasher salt and rinse aid nearly empty sensors ([@boergegrunicke] - [#127762]) +- Revert "Fix unused snapshots not triggering failure in CI" ([@frenck] - [#129223]) +- Fix flaky gardena_ble test ([@gjohansson-ST] - [#129225]) +- Update govee-local-api to 1.5.3 ([@Galorhallen] - [#129226]) +- Add tests for todo platform of Habitica integration ([@tr4nt0r] - [#128199]) +- Fix zha tests for Python 3.13 ([@cdce8p] - [#129241]) +- Update aioairzone-cloud to v0.6.10 ([@Noltari] - [#129227]) +- Add new ZHA Inovelli blue switch strings ([@tleydxdy] - [#127124]) +- Properly validate License-Expression data for licenses check ([@cdce8p] - [#129216]) +- Fix `conntected_to` attribute of device tracker entities in a AVM Fritz mesh setup ([@mib1185] - [#129259]) +- Update uptime deviation interval for Vodafone Station ([@chemelli74] - [#129257]) +- Fix ESPHome media proxy exit criteria ([@emontnemery] - [#129267]) +- Mark PEGELONLINE entries as service ([@mib1185] - [#129278]) +- Add diagnostics platform to PEGELONLINE ([@mib1185] - [#129279]) +- Add battery binary sensor to Yale Smart Alarm ([@gjohansson-ST] - [#129277]) +- Lazy discover for dmaker.fan.1c ([@nicoalonsop] - [#129297]) +- Omit declined Google Calendar events ([@joelhawksley] - [#128900]) +- Use async_start_reauth in blink ([@gjohansson-ST] - [#129281]) +- Use async_start_reauth in xiaomi_miio ([@gjohansson-ST] - [#129282]) +- Use async_start_reauth helper in broadlink ([@epenet] - [#129308]) +- Use start_reauth_flow in apple_tv test ([@gjohansson-ST] - [#129313]) +- Ensure config entry is added to hass in reauth/reconfigure tests ([@epenet] - [#129315]) +- Use start_reauth_flow in permobil tests ([@epenet] - [#129314]) +- Use start_reauth_flow in system_bridge tests ([@epenet] - [#129318]) +- Use reauth_confirm in ovo_energy ([@epenet] - [#129306]) +- Bump velbusaio to 2024.10.0 ([@cereal2nd] - [#129305]) +- Convert WebSocket messages to bytes before passing them to `send_message` ([@bdraco] - [#129300]) +- Assert keys exist in Jewish calendar tests ([@tsvi] - [#129295]) +- Add reconfigure flow to Sensibo ([@gjohansson-ST] - [#129280]) +- Add shuffle media controls to Bang & Olufsen ([@mj23000] - [#129325]) +- React to state report events to increase sample size of statistics ([@unfug-at-github] - [#129211]) +- Add async webrtc offer support ([@edenhaus] - [#127981]) +- Convert async_get_webrtc_client_configuration to a callback ([@edenhaus] - [#129329]) +- Bump ZHA to 0.0.36 ([@TheJulianJES] - [#129247]) +- Bump pychromecast to 14.0.5 ([@emontnemery] - [#129251]) +- Fix CI by running gen_requirements_all.py ([@edenhaus] - [#129339]) +- Hassio logs boots ([@wendevlin] - [#129151]) +- Add ServiceValidationError to Home Connect ([@Diegorro98] - [#129309]) +- Remove media player shuffle check from Cambridge Audio ([@noahhusby] - [#129235]) +- Add switcher s12 support ([@YogevBokobza] - [#127277]) +- Fix go2rtc tests ([@edenhaus] - [#129342]) +- Palazzetti integration ([@dotvav] - [#128259]) +- Add LG ThinQ integration ([@LG-ThinQ-Integration] - [#129299]) +- Add LG ThinQ to LG brand ([@joostlek] - [#129346]) +- Fix spelling mistake in notify ([@dontinelli] - [#129349]) +- Fix calculation of attributes in statistics ([@gjohansson-ST] - [#128475]) +- Use shorthand attribute for available in statistics ([@gjohansson-ST] - [#129354]) +- Allow a fixed number of ffmpeg proxy conversions per device ([@synesthesiam] - [#129246]) +- Use shorthand attribute for native value in statistics ([@gjohansson-ST] - [#129355]) +- Clarify event tracking in docstrings for track_state_change/report ([@gjohansson-ST] - [#129338]) +- Bump yarl to 1.17.0 ([@bdraco] - [#129358]) +- Use URL validation schema for mqtt update `entity_picture` and remove custom implementation ([@jbouwh] - [#129360]) +- Fix flaky DHCP tests in CI ([@epenet] - [#129327]) +- Update nest to use the async WebRTC APIs ([@allenporter] - [#129369]) +- Bump go2rtc binary to 1.9.5 ([@edenhaus] - [#129371]) +- Bump uv to 0.4.28 ([@edenhaus] - [#129372]) +- Enable strict typing for go2rtc ([@edenhaus] - [#129374]) +- Bump webrtc-models to 0.1.0 ([@edenhaus] - [#129373]) +- Run postgres job on ubuntu 24.04 [ci] ([@cdce8p] - [#129381]) +- Fix mariadb recorder tests for Python 3.13 ([@cdce8p] - [#129303]) +- Bump go2rtc-client to 0.0.1b2 ([@edenhaus] - [#129395]) +- Use device name for matter entities ([@piitaya] - [#127798]) +- Report update_percentage in matter update entity ([@emontnemery] - [#129380]) +- Bump thinqconnect to 0.9.9 ([@LG-ThinQ-Integration] - [#129394]) +- Bump protobuf to 5.28.3 ([@bdraco] - [#129370]) +- Go2rtc server start is waiting until we got the api listen stdout line ([@edenhaus] - [#129391]) +- Clean up SensorRestore in Tesla Fleet ([@Bre77] - [#129116]) +- Fix hassfest docker image by pinning Python 3.12 ([@edenhaus] - [#129403]) +- Fix typo in cv.url_no_path ([@emontnemery] - [#129402]) +- Add and remove entities during runtime in Husqvarna Automower ([@Thomas55555] - [#127878]) +- Added deprecation to binary door sensor at Home Connect ([@Diegorro98] - [#129245]) +- Bump habitipy to 0.3.3 ([@tr4nt0r] - [#129322]) +- Update Nest configuration flow to handle upcoming changes to Pub/Sub provisioning ([@allenporter] - [#128909]) +- Use new generic notation in devolo_home_network ([@Shutgun] - [#129080]) +- Add test for extended data in setup for solarlog ([@dontinelli] - [#129345]) +- Bump aiohasupervisor to 0.2.0 ([@mdegat01] - [#129348]) +- Create repair asking user to remove duplicate config entries ([@emontnemery] - [#127948]) +- Change Tibber request spread ([@Danielhiversen] - [#129276]) +- Add smart standby functionality to lamarzocco ([@zweckj] - [#129333]) +- Add own coordinator to devolo_home_network ([@Shutgun] - [#128159]) +- Add support for Lutron HWQS Proc discovery ([@eclair4151] - [#129274]) +- Add number entities to set target temp for cooling programs in ViCare ([@CFenner] - [#127267]) +- Refactor evohome tests as per best practice ([@zxdavb] - [#129229]) +- Cleanup select mappings in lamarzocco ([@zweckj] - [#129407]) +- Fix evohome HVAC modes for VisionPro Wifi systems ([@zxdavb] - [#129161]) +- Fetch power off state for Home Connect appliances' power switch ([@Diegorro98] - [#129289]) +- Add tests for switch platform of Habitica integration ([@tr4nt0r] - [#128204]) +- Fix visualization by inverting open/closed state of patio awnings ([@mback2k] - [#128079]) +- Fix bosch shc multi controller support ([@Vendetta01] - [#127844]) +- Refactor squeezebox integration media_player to use coordinator ([@rajlaud] - [#127695]) +- Fix available conditions for chilling frost and stealth in Habitica ([@tr4nt0r] - [#129234]) +- Continue migration of methods from handler to aiohasupervisor ([@mdegat01] - [#129183]) +- Add timer sensor entity which has rw hour and read-only minute ([@LG-ThinQ-Integration] - [#129413]) +- Add min, max for WATER_HEATER device ([@LG-ThinQ-Integration] - [#129414]) +- Set config_entry explicitely in scrape coordinator ([@epenet] - [#129416]) +- Set config_entry explicitly in switcher kis coordinator ([@epenet] - [#129419]) +- Allow fetching HA url to display it in the network settings ([@MindFreeze] - [#128432]) +- Set config_entry explicitly in history stats coordinator ([@epenet] - [#129417]) +- Fix typo in nest string ([@Betacart] - [#129423]) +- Remove Mobile App config entries, when the related user gets removed ([@mib1185] - [#129268]) +- Fix go2rtc no audio issue ([@edenhaus] - [#129428]) +- Add Smarty versions to device ([@marcodutto] - [#129418]) +- Fix bad falsy-check in homeassistant.set_location service ([@emontnemery] - [#129389]) +- Add support for vacuum cleaners to the Matter integration ([@marcelveldt] - [#129420]) +- Initialise coordinator with config_entry in components (part 1) ([@epenet] - [#128080]) +- Refactor esphome ffmpeg proxy ([@emontnemery] - [#129330]) +- Bump hass-nabucasa to 0.83.0 ([@klejejs] - [#129422]) +- Disable pylint for DevoloScannerEntity ([@Shutgun] - [#129429]) +- Bump go2rtc to 1.9.6 ([@edenhaus] - [#129430]) +- Sort some code in core_config ([@emontnemery] - [#129388]) +- Add Sense Devices for entities ([@kbickar] - [#129182]) +- Report update_percentage in teslemetry update entity ([@emontnemery] - [#129384]) +- Report update_percentage in tessie update entity ([@emontnemery] - [#129385]) +- Report update_percentage in smlight update entity ([@emontnemery] - [#129383]) +- Report update_percentage in esphome update entity ([@emontnemery] - [#129376]) +- Suppress update entity's update_percentage when update not in progress ([@emontnemery] - [#129397]) +- Unexport unavailable metrics in Prometheus ([@agoode] - [#125492]) +- Fix devolo_home_network DataCoordinator arguments ([@cdce8p] - [#129441]) +- Move validation routine out of wallbox coordinator ([@epenet] - [#129415]) +- Remove duplicated entity_picture config from MQTT update entity ([@emontnemery] - [#129390]) +- Report update_percentage in zwave_js update entity ([@emontnemery] - [#129386]) +- Add tests for buttons in Habitica integration ([@tr4nt0r] - [#128194]) +- Improve mapping of myuplink entities ([@astrandb] - [#129137]) +- Bump tplink python-kasa dependency to 0.7.6 ([@sdb9696] - [#129444]) +- Add sensors for energy trends for devices ([@kbickar] - [#129439]) +- Use coordinator async_setup in iotty ([@gjohansson-ST] - [#129449]) +- Use coordinator async_setup in dwd weather ([@gjohansson-ST] - [#129448]) +- Add switch entities for LCN key-locks and regulator-locks ([@alengwenus] - [#127731]) +- Add addon support to Home Assistant Analytics Insights ([@mib1185] - [#128806]) +- Change Tibber get_prices action to return datetimes as str ([@functionpointer] - [#123901]) +- Allow set ScreenCap interval as option for AndroidTV ([@ollo69] - [#124470]) +- Remove LCN translation placeholder key ([@alengwenus] - [#129452]) +- Add cloud ICE server registration ([@klejejs] - [#128942]) +- Bump aioshelly to 12.0.1 ([@thecode] - [#129453]) +- Bump DoorBirdPy to 3.0.7 ([@bdraco] - [#129114]) +- Use new try_connect_all discover command in tplink config flow ([@sdb9696] - [#128994]) +- Add CameraCapabilities ([@edenhaus] - [#128455]) +- Correct condition signalling non-live DB migration is in progress ([@emontnemery] - [#129464]) +- Add calendar platform to Habitica integration ([@tr4nt0r] - [#128248]) +- Bump opower to 0.8.6 ([@kaydenvanrijn] - [#129454]) +- Allow smlight device to reboot before updating firmware data coordinator ([@tl-sl] - [#127442]) +- Improve demo integration's update entity ([@emontnemery] - [#129401]) +- Remove useless code from esphome ffmpeg_proxy tests ([@emontnemery] - [#129481]) +- Add entity_category to avoid header_toggle for switch ([@LG-ThinQ-Integration] - [#129477]) +- Deduplicate wav creation in esphome ffmpeg_proxy tests ([@emontnemery] - [#129484]) +- Bump pydeako to 0.5.4 ([@Balake] - [#129475]) +- Add translation_key in LG ThinQ ([@LG-ThinQ-Integration] - [#129476]) +- Bump go2rtc-client to 0.0.1b3 ([@edenhaus] - [#129486]) +- Fix nexia emergency heat migration ([@bdraco] - [#129365]) +- Update PyViCare dependency to 2.35.0 ([@CFenner] - [#129038]) +- Bump automower-ble to 0.2.0 ([@alistair23] - [#129473]) +- Remove hassio from ALLOWED_USED_COMPONENTS and move some functions to helper ([@edenhaus] - [#127228]) +- Bump aioswitcher to 4.4.0 ([@YogevBokobza] - [#129489]) +- Bump reolink_aio to 0.10.1 ([@starkillerOG] - [#129493]) +- Fix webrtc provider interface and tests ([@MartinHjelmare] - [#129488]) +- Add config entry to go2rtc ([@emontnemery] - [#129436]) +- Improve shutdown of esphome ffmpeg proxy ([@emontnemery] - [#129326]) +- Create repair issue for legacy webrtc provider ([@MartinHjelmare] - [#129334]) +- Refresh Nest WebRTC streams before expiration ([@allenporter] - [#129478]) +- Add audio output select to Cambridge Audio ([@noahhusby] - [#129366]) +- Add reconfigure step to Onkyo config flow ([@arturpragacz] - [#129088]) +- Reolink add TCP push event connection as primary method ([@starkillerOG] - [#129490]) +- Test discovery subscriptions not done when discovery is disabled ([@jbouwh] - [#129458]) +- Pass config_entry explicitly to coordinator in tedee ([@zweckj] - [#129432]) +- Explicitly pass config_entry to coordinator in lamarzocco ([@zweckj] - [#129434]) +- Change type of the config_entry in coordinator in tedee ([@zweckj] - [#129502]) +- Use common translation strings for Habitica ([@tr4nt0r] - [#129498]) +- Add musicassistant integration ([@jozefKruszynski] - [#128919]) +- Add Stun server with port 3478 ([@klejejs] - [#129501]) +- Remove unused snapshots from Habitica ([@tr4nt0r] - [#129499]) +- Bump intents to 2024.10.30 ([@synesthesiam] - [#129505]) +- Allow MQTT device based auto discovery ([@jbouwh] - [#118757]) +- Add progress support to MQTT update platform ([@jbouwh] - [#129468]) +- Update frontend to 20241030.0 ([@piitaya] - [#129508]) +- Bump ZHA dependencies ([@puddly] - [#129510]) +- Add name to description placeholders automatically for reauth flows ([@gjohansson-ST] - [#129232]) +- Raise on non-string unique id for config entry ([@gjohansson-ST] - [#125950]) +- Revert "Add musicassistant integration (#128919)" ([@marcelveldt] - [#129565]) +- Fix timeout issue on Roomba integration when adding a new device ([@AuroreVgn] - [#129230]) +- Fix current temperature calculation for incomfort boiler ([@jbouwh] - [#129496]) +- Bump uiprotect to 6.3.2 ([@cryptk] - [#129513]) +- Fix async_config_entry_first_refresh used after config entry is loaded in speedtestdotcom ([@gjohansson-ST] - [#129527]) +- Bump reolink_aio to 0.10.2 ([@starkillerOG] - [#129528]) +- Missing config_flow in manifest for local_file ([@gjohansson-ST] - [#129529]) +- Fix bthome UnitOfConductivity ([@luca-angemi] - [#129535]) +- Allow importing homeassistant.core.Config until 2025.11 ([@emontnemery] - [#129537]) +- Bump yarl to 1.17.1 ([@bdraco] - [#129539]) +- Fix "home" route in Tesla Fleet & Teslemetry ([@Bre77] - [#129546]) +- Log Reolink select value KeyError only once ([@starkillerOG] - [#129559]) +- Stringify discovered hassio uuid ([@emontnemery] - [#129572]) +- Log type as well as value for unique_id checks ([@epenet] - [#129575]) +- Update frontend to 20241031.0 ([@piitaya] - [#129583]) +- Check for async web offer overrides in camera capabilities ([@sdb9696] - [#129519]) +- Fix Geniushub setup ([@joostlek] - [#129569]) +- Bump spotifyaio to 0.8.1 ([@joostlek] - [#129573]) +- Bump aiohasupervisor to version 0.2.1 ([@emontnemery] - [#129574]) +- Fix flaky camera test ([@epenet] - [#129576]) +- Bump aiowithings to 3.1.1 ([@joostlek] - [#129586]) +- Add go2rtc debug_ui yaml key to enable go2rtc ui ([@edenhaus] - [#129587]) +- Revert "Create a script service schema based on fields" ([@emontnemery] - [#129591]) +- Pin async-timeout to 4.0.3 ([@bdraco] - [#129592]) +- Bump webrtc-models to 0.2.0 ([@edenhaus] - [#129627]) +- Bump spotifyaio to 0.8.2 ([@joostlek] - [#129639]) +- Bump aiohomekit to 3.2.6 ([@bdraco] - [#129640]) +- Bump aioesphomeapi to 27.0.1 ([@bdraco] - [#129643]) +- Bump sensorpush-ble to 1.7.1 ([@bdraco] - [#129657]) +- Bump autarco lib to v3.1.0 ([@klaasnicolaas] - [#129684]) +- Only set ESPHome configuration url to addon if there is an existing configuration for the device ([@jesserockz] - [#129356]) +- Bump Airthings BLE to 0.9.2 ([@LaStrada] - [#129659]) +- Bump python-linkplay to 0.0.17 ([@silamon] - [#129683]) +- Change alexa arm handler to allow switching arm states unless in armed_away mode ([@natekspencer] - [#129701]) +- Bump bring-api to 0.9.1 ([@tr4nt0r] - [#129702]) +- Bump DoorBirdPy to 3.0.8 ([@bdraco] - [#129709]) +- Fix nest streams broken due to CameraCapabilities change ([@allenporter] - [#129711]) +- Add missing translation string to lamarzocco ([@zweckj] - [#129713]) +- Bump HAP-python to 4.9.2 ([@bdraco] - [#129715]) +- Bump spotifyaio to 0.8.3 ([@joostlek] - [#129729]) +- Bump thinqconnect to 1.0.0 ([@LG-ThinQ-Integration] - [#129769]) +- Bump lcn-frontend to 0.2.1 ([@alengwenus] - [#129457]) +- Add watchdog to monitor and respawn go2rtc server ([@emontnemery] - [#129497]) +- Update Spotify state after mutation ([@joostlek] - [#129607]) +- Add state class to precipitation_intensity in Aemet ([@luca-angemi] - [#129670]) +- Bump ayla-iot-unofficial to 1.4.3 ([@crevetor] - [#129743]) +- Use RTCIceCandidate instead of str for candidate ([@edenhaus] - [#129793]) +- Bump yt-dlp to 2024.11.04 ([@joostlek] - [#129794]) +- Fix stringification of discovered hassio uuid ([@emontnemery] - [#129797]) +- Improve error handling in Spotify ([@joostlek] - [#129799]) +- Fix incorrect description placeholders in azure event hub ([@epenet] - [#129803]) +- Update go2rtc stream if stream_source is not matching ([@edenhaus] - [#129804]) +- Fix aborting flows for single config entry integrations ([@emontnemery] - [#129805]) +- Fix create flow logic for single config entry integrations ([@emontnemery] - [#129807]) +- Fix ESPHome dashboard check ([@balloob] - [#129812]) +- Bump python-kasa to 0.7.7 ([@sdb9696] - [#129817]) +- Remove all ice_servers on native sync WebRTC cameras ([@edenhaus] - [#129819]) +- Fix translations in homeworks ([@gjohansson-ST] - [#129824]) +- Update frontend to 20241104.0 ([@bramkragten] - [#129829]) +- Fix translations in landisgyr ([@gjohansson-ST] - [#129831]) +- Fix source mapping in Onkyo ([@arturpragacz] - [#129716]) +- Add HassRespond intent ([@synesthesiam] - [#129755]) +- Fix translation in ovo energy ([@gjohansson-ST] - [#129833]) +- Fix translations in hydrawise ([@gjohansson-ST] - [#129834]) +- Bump reolink-aio to 0.10.3 ([@starkillerOG] - [#129841]) +- Fix unifiprotect supported features being set too late ([@bdraco] - [#129850]) +- Bump uiprotect to 6.4.0 ([@bdraco] - [#129851]) +- Disable SRTP for unifiprotect RTSPS stream ([@bdraco] - [#129852]) +- Add basic testing framework to LG ThinQ ([@joostlek] - [#127785]) +- Adding new on values for Tuya Presence Detection Sensor ([@KunalAggarwal] - [#129801]) +- Skip adding providers if the camera has native WebRTC ([@edenhaus] - [#129808]) +- Validate go2rtc server version ([@emontnemery] - [#129810]) +- Bump pypalazzetti to 0.1.10 ([@dotvav] - [#129832]) +- Bump bimmer_connected to 0.16.4 ([@rikroe] - [#129838]) +- Bump pyfibaro to 0.8.0 ([@KC3BZU] - [#129846]) +- Add repair for add-on boot fail ([@mdegat01] - [#129847]) +- Update snapshot for lg thinq ([@mikey0000] - [#129856]) +- Removed stale translation and improved `set_setting` translation at Home Connect ([@Diegorro98] - [#129878]) +- Append a 1 to all go2rtc ports to avoid port conflicts ([@edenhaus] - [#129881]) +- Log go2rtc output with warning level on error ([@emontnemery] - [#129882]) +- Use default package for yt-dlp ([@joostlek] - [#129886]) +- Map go2rtc log levels to Python log levels ([@emontnemery] - [#129894]) +- Remove timers from LG ThinQ ([@joostlek] - [#129898]) +- Set friendly name of utility meter select entity when configured through YAML ([@dgomes] - [#128267]) +- Prevent update entity becoming unavailable on device disconnect in IronOS ([@tr4nt0r] - [#129840]) +- Change Ollama default to llama3.2 ([@balloob] - [#129901]) +- Improve improv BLE error handling ([@emontnemery] - [#129902]) +- Update frontend to 20241105.0 ([@piitaya] - [#129906]) +- Bump holidays to 0.60 ([@gjohansson-ST] - [#129909]) +- Update pylutron to 0.2.16 ([@kingal123] - [#129653]) +- Bump intents and add HassRespond test ([@synesthesiam] - [#129830]) +- Bump pyTibber to 0.30.4 ([@Danielhiversen] - [#129844]) +- Bump spotifyaio to 0.8.4 ([@joostlek] - [#129899]) +- Map "stop" to MediaPlayerState.IDLE in bluesound integration ([@LouisChrist] - [#129904]) +- Update Bang & Olufsen source list as availability changes ([@mj23000] - [#129910]) +- Disable uv cache ([@edenhaus] - [#129912]) +- Bump reolink_aio to 0.10.4 ([@starkillerOG] - [#129914]) +- Ensure all template names are strings ([@balloob] - [#129921]) +- Adding "peaceful" status as on value to Tuya Presence Sensor ([@KunalAggarwal] - [#129925]) +- Fix native sync WebRTC offer ([@edenhaus] - [#129931]) +- Bump spotifyaio to 0.8.5 ([@joostlek] - [#129938]) +- Write squeezebox player state after query ([@joostlek] - [#129939]) +- Bump go2rtc-client to 0.0.1b4 ([@edenhaus] - [#129942]) +- Delete binary door deprecation issue on unload at Home Connect ([@Diegorro98] - [#129947]) +- Improve error messages in Habitica ([@tr4nt0r] - [#129948]) +- Bump go2rtc-client to 0.0.1b5 ([@edenhaus] - [#129952]) +- Update frontend to 20241106.0 ([@bramkragten] - [#129953]) +- Call async_refresh_providers when camera entity feature changes ([@emontnemery] - [#129941]) +- Remove deprecation issues for LCN once entities removed ([@joostlek] - [#129955]) +- Bump go2rtc-client to 0.1.0 ([@edenhaus] - [#129965]) +- Add state invitation to list access sensor in Bring integration ([@tr4nt0r] - [#129960]) + +[#102871]: https://github.com/home-assistant/core/pull/102871 +[#108171]: https://github.com/home-assistant/core/pull/108171 +[#108326]: https://github.com/home-assistant/core/pull/108326 +[#110057]: https://github.com/home-assistant/core/pull/110057 +[#113849]: https://github.com/home-assistant/core/pull/113849 +[#115128]: https://github.com/home-assistant/core/pull/115128 +[#117319]: https://github.com/home-assistant/core/pull/117319 +[#117657]: https://github.com/home-assistant/core/pull/117657 +[#117955]: https://github.com/home-assistant/core/pull/117955 +[#118757]: https://github.com/home-assistant/core/pull/118757 +[#118770]: https://github.com/home-assistant/core/pull/118770 +[#119203]: https://github.com/home-assistant/core/pull/119203 +[#121466]: https://github.com/home-assistant/core/pull/121466 +[#121970]: https://github.com/home-assistant/core/pull/121970 +[#122330]: https://github.com/home-assistant/core/pull/122330 +[#122589]: https://github.com/home-assistant/core/pull/122589 +[#122590]: https://github.com/home-assistant/core/pull/122590 +[#122759]: https://github.com/home-assistant/core/pull/122759 +[#123031]: https://github.com/home-assistant/core/pull/123031 +[#123061]: https://github.com/home-assistant/core/pull/123061 +[#123427]: https://github.com/home-assistant/core/pull/123427 +[#123444]: https://github.com/home-assistant/core/pull/123444 +[#123758]: https://github.com/home-assistant/core/pull/123758 +[#123901]: https://github.com/home-assistant/core/pull/123901 +[#124282]: https://github.com/home-assistant/core/pull/124282 +[#124373]: https://github.com/home-assistant/core/pull/124373 +[#124410]: https://github.com/home-assistant/core/pull/124410 +[#124470]: https://github.com/home-assistant/core/pull/124470 +[#124562]: https://github.com/home-assistant/core/pull/124562 +[#124723]: https://github.com/home-assistant/core/pull/124723 +[#124936]: https://github.com/home-assistant/core/pull/124936 +[#125051]: https://github.com/home-assistant/core/pull/125051 +[#125097]: https://github.com/home-assistant/core/pull/125097 +[#125243]: https://github.com/home-assistant/core/pull/125243 +[#125282]: https://github.com/home-assistant/core/pull/125282 +[#125307]: https://github.com/home-assistant/core/pull/125307 +[#125309]: https://github.com/home-assistant/core/pull/125309 +[#125388]: https://github.com/home-assistant/core/pull/125388 +[#125472]: https://github.com/home-assistant/core/pull/125472 +[#125492]: https://github.com/home-assistant/core/pull/125492 +[#125530]: https://github.com/home-assistant/core/pull/125530 +[#125631]: https://github.com/home-assistant/core/pull/125631 +[#125822]: https://github.com/home-assistant/core/pull/125822 +[#125835]: https://github.com/home-assistant/core/pull/125835 +[#125864]: https://github.com/home-assistant/core/pull/125864 +[#125913]: https://github.com/home-assistant/core/pull/125913 +[#125917]: https://github.com/home-assistant/core/pull/125917 +[#125918]: https://github.com/home-assistant/core/pull/125918 +[#125950]: https://github.com/home-assistant/core/pull/125950 +[#126044]: https://github.com/home-assistant/core/pull/126044 +[#126081]: https://github.com/home-assistant/core/pull/126081 +[#126143]: https://github.com/home-assistant/core/pull/126143 +[#126144]: https://github.com/home-assistant/core/pull/126144 +[#126145]: https://github.com/home-assistant/core/pull/126145 +[#126155]: https://github.com/home-assistant/core/pull/126155 +[#126158]: https://github.com/home-assistant/core/pull/126158 +[#126268]: https://github.com/home-assistant/core/pull/126268 +[#126283]: https://github.com/home-assistant/core/pull/126283 +[#126291]: https://github.com/home-assistant/core/pull/126291 +[#126350]: https://github.com/home-assistant/core/pull/126350 +[#126402]: https://github.com/home-assistant/core/pull/126402 +[#126438]: https://github.com/home-assistant/core/pull/126438 +[#126439]: https://github.com/home-assistant/core/pull/126439 +[#126445]: https://github.com/home-assistant/core/pull/126445 +[#126461]: https://github.com/home-assistant/core/pull/126461 +[#126570]: https://github.com/home-assistant/core/pull/126570 +[#126584]: https://github.com/home-assistant/core/pull/126584 +[#126606]: https://github.com/home-assistant/core/pull/126606 +[#126611]: https://github.com/home-assistant/core/pull/126611 +[#126656]: https://github.com/home-assistant/core/pull/126656 +[#126661]: https://github.com/home-assistant/core/pull/126661 +[#126673]: https://github.com/home-assistant/core/pull/126673 +[#126679]: https://github.com/home-assistant/core/pull/126679 +[#126681]: https://github.com/home-assistant/core/pull/126681 +[#126689]: https://github.com/home-assistant/core/pull/126689 +[#126707]: https://github.com/home-assistant/core/pull/126707 +[#126721]: https://github.com/home-assistant/core/pull/126721 +[#126729]: https://github.com/home-assistant/core/pull/126729 +[#126733]: https://github.com/home-assistant/core/pull/126733 +[#126735]: https://github.com/home-assistant/core/pull/126735 +[#126737]: https://github.com/home-assistant/core/pull/126737 +[#126739]: https://github.com/home-assistant/core/pull/126739 +[#126741]: https://github.com/home-assistant/core/pull/126741 +[#126747]: https://github.com/home-assistant/core/pull/126747 +[#126759]: https://github.com/home-assistant/core/pull/126759 +[#126760]: https://github.com/home-assistant/core/pull/126760 +[#126761]: https://github.com/home-assistant/core/pull/126761 +[#126773]: https://github.com/home-assistant/core/pull/126773 +[#126776]: https://github.com/home-assistant/core/pull/126776 +[#126779]: https://github.com/home-assistant/core/pull/126779 +[#126780]: https://github.com/home-assistant/core/pull/126780 +[#126781]: https://github.com/home-assistant/core/pull/126781 +[#126798]: https://github.com/home-assistant/core/pull/126798 +[#126801]: https://github.com/home-assistant/core/pull/126801 +[#126802]: https://github.com/home-assistant/core/pull/126802 +[#126803]: https://github.com/home-assistant/core/pull/126803 +[#126804]: https://github.com/home-assistant/core/pull/126804 +[#126805]: https://github.com/home-assistant/core/pull/126805 +[#126810]: https://github.com/home-assistant/core/pull/126810 +[#126812]: https://github.com/home-assistant/core/pull/126812 +[#126818]: https://github.com/home-assistant/core/pull/126818 +[#126821]: https://github.com/home-assistant/core/pull/126821 +[#126822]: https://github.com/home-assistant/core/pull/126822 +[#126842]: https://github.com/home-assistant/core/pull/126842 +[#126844]: https://github.com/home-assistant/core/pull/126844 +[#126853]: https://github.com/home-assistant/core/pull/126853 +[#126854]: https://github.com/home-assistant/core/pull/126854 +[#126858]: https://github.com/home-assistant/core/pull/126858 +[#126863]: https://github.com/home-assistant/core/pull/126863 +[#126870]: https://github.com/home-assistant/core/pull/126870 +[#126881]: https://github.com/home-assistant/core/pull/126881 +[#126887]: https://github.com/home-assistant/core/pull/126887 +[#126888]: https://github.com/home-assistant/core/pull/126888 +[#126890]: https://github.com/home-assistant/core/pull/126890 +[#126891]: https://github.com/home-assistant/core/pull/126891 +[#126892]: https://github.com/home-assistant/core/pull/126892 +[#126894]: https://github.com/home-assistant/core/pull/126894 +[#126895]: https://github.com/home-assistant/core/pull/126895 +[#126896]: https://github.com/home-assistant/core/pull/126896 +[#126897]: https://github.com/home-assistant/core/pull/126897 +[#126898]: https://github.com/home-assistant/core/pull/126898 +[#126899]: https://github.com/home-assistant/core/pull/126899 +[#126905]: https://github.com/home-assistant/core/pull/126905 +[#126908]: https://github.com/home-assistant/core/pull/126908 +[#126915]: https://github.com/home-assistant/core/pull/126915 +[#126917]: https://github.com/home-assistant/core/pull/126917 +[#126925]: https://github.com/home-assistant/core/pull/126925 +[#126931]: https://github.com/home-assistant/core/pull/126931 +[#126936]: https://github.com/home-assistant/core/pull/126936 +[#126941]: https://github.com/home-assistant/core/pull/126941 +[#126945]: https://github.com/home-assistant/core/pull/126945 +[#126947]: https://github.com/home-assistant/core/pull/126947 +[#126950]: https://github.com/home-assistant/core/pull/126950 +[#126951]: https://github.com/home-assistant/core/pull/126951 +[#126952]: https://github.com/home-assistant/core/pull/126952 +[#126953]: https://github.com/home-assistant/core/pull/126953 +[#126956]: https://github.com/home-assistant/core/pull/126956 +[#126958]: https://github.com/home-assistant/core/pull/126958 +[#126959]: https://github.com/home-assistant/core/pull/126959 +[#126963]: https://github.com/home-assistant/core/pull/126963 +[#126964]: https://github.com/home-assistant/core/pull/126964 +[#126966]: https://github.com/home-assistant/core/pull/126966 +[#126967]: https://github.com/home-assistant/core/pull/126967 +[#126971]: https://github.com/home-assistant/core/pull/126971 +[#126989]: https://github.com/home-assistant/core/pull/126989 +[#126992]: https://github.com/home-assistant/core/pull/126992 +[#126995]: https://github.com/home-assistant/core/pull/126995 +[#126999]: https://github.com/home-assistant/core/pull/126999 +[#127000]: https://github.com/home-assistant/core/pull/127000 +[#127005]: https://github.com/home-assistant/core/pull/127005 +[#127006]: https://github.com/home-assistant/core/pull/127006 +[#127016]: https://github.com/home-assistant/core/pull/127016 +[#127022]: https://github.com/home-assistant/core/pull/127022 +[#127026]: https://github.com/home-assistant/core/pull/127026 +[#127038]: https://github.com/home-assistant/core/pull/127038 +[#127042]: https://github.com/home-assistant/core/pull/127042 +[#127043]: https://github.com/home-assistant/core/pull/127043 +[#127044]: https://github.com/home-assistant/core/pull/127044 +[#127069]: https://github.com/home-assistant/core/pull/127069 +[#127070]: https://github.com/home-assistant/core/pull/127070 +[#127071]: https://github.com/home-assistant/core/pull/127071 +[#127073]: https://github.com/home-assistant/core/pull/127073 +[#127075]: https://github.com/home-assistant/core/pull/127075 +[#127077]: https://github.com/home-assistant/core/pull/127077 +[#127078]: https://github.com/home-assistant/core/pull/127078 +[#127079]: https://github.com/home-assistant/core/pull/127079 +[#127080]: https://github.com/home-assistant/core/pull/127080 +[#127081]: https://github.com/home-assistant/core/pull/127081 +[#127082]: https://github.com/home-assistant/core/pull/127082 +[#127083]: https://github.com/home-assistant/core/pull/127083 +[#127084]: https://github.com/home-assistant/core/pull/127084 +[#127086]: https://github.com/home-assistant/core/pull/127086 +[#127087]: https://github.com/home-assistant/core/pull/127087 +[#127088]: https://github.com/home-assistant/core/pull/127088 +[#127089]: https://github.com/home-assistant/core/pull/127089 +[#127090]: https://github.com/home-assistant/core/pull/127090 +[#127093]: https://github.com/home-assistant/core/pull/127093 +[#127094]: https://github.com/home-assistant/core/pull/127094 +[#127098]: https://github.com/home-assistant/core/pull/127098 +[#127100]: https://github.com/home-assistant/core/pull/127100 +[#127101]: https://github.com/home-assistant/core/pull/127101 +[#127104]: https://github.com/home-assistant/core/pull/127104 +[#127105]: https://github.com/home-assistant/core/pull/127105 +[#127106]: https://github.com/home-assistant/core/pull/127106 +[#127107]: https://github.com/home-assistant/core/pull/127107 +[#127108]: https://github.com/home-assistant/core/pull/127108 +[#127110]: https://github.com/home-assistant/core/pull/127110 +[#127111]: https://github.com/home-assistant/core/pull/127111 +[#127112]: https://github.com/home-assistant/core/pull/127112 +[#127113]: https://github.com/home-assistant/core/pull/127113 +[#127115]: https://github.com/home-assistant/core/pull/127115 +[#127122]: https://github.com/home-assistant/core/pull/127122 +[#127124]: https://github.com/home-assistant/core/pull/127124 +[#127137]: https://github.com/home-assistant/core/pull/127137 +[#127140]: https://github.com/home-assistant/core/pull/127140 +[#127141]: https://github.com/home-assistant/core/pull/127141 +[#127144]: https://github.com/home-assistant/core/pull/127144 +[#127154]: https://github.com/home-assistant/core/pull/127154 +[#127156]: https://github.com/home-assistant/core/pull/127156 +[#127157]: https://github.com/home-assistant/core/pull/127157 +[#127158]: https://github.com/home-assistant/core/pull/127158 +[#127159]: https://github.com/home-assistant/core/pull/127159 +[#127160]: https://github.com/home-assistant/core/pull/127160 +[#127161]: https://github.com/home-assistant/core/pull/127161 +[#127162]: https://github.com/home-assistant/core/pull/127162 +[#127163]: https://github.com/home-assistant/core/pull/127163 +[#127164]: https://github.com/home-assistant/core/pull/127164 +[#127165]: https://github.com/home-assistant/core/pull/127165 +[#127166]: https://github.com/home-assistant/core/pull/127166 +[#127168]: https://github.com/home-assistant/core/pull/127168 +[#127169]: https://github.com/home-assistant/core/pull/127169 +[#127170]: https://github.com/home-assistant/core/pull/127170 +[#127171]: https://github.com/home-assistant/core/pull/127171 +[#127172]: https://github.com/home-assistant/core/pull/127172 +[#127173]: https://github.com/home-assistant/core/pull/127173 +[#127174]: https://github.com/home-assistant/core/pull/127174 +[#127175]: https://github.com/home-assistant/core/pull/127175 +[#127176]: https://github.com/home-assistant/core/pull/127176 +[#127178]: https://github.com/home-assistant/core/pull/127178 +[#127180]: https://github.com/home-assistant/core/pull/127180 +[#127181]: https://github.com/home-assistant/core/pull/127181 +[#127182]: https://github.com/home-assistant/core/pull/127182 +[#127185]: https://github.com/home-assistant/core/pull/127185 +[#127186]: https://github.com/home-assistant/core/pull/127186 +[#127188]: https://github.com/home-assistant/core/pull/127188 +[#127189]: https://github.com/home-assistant/core/pull/127189 +[#127191]: https://github.com/home-assistant/core/pull/127191 +[#127192]: https://github.com/home-assistant/core/pull/127192 +[#127193]: https://github.com/home-assistant/core/pull/127193 +[#127194]: https://github.com/home-assistant/core/pull/127194 +[#127196]: https://github.com/home-assistant/core/pull/127196 +[#127197]: https://github.com/home-assistant/core/pull/127197 +[#127198]: https://github.com/home-assistant/core/pull/127198 +[#127200]: https://github.com/home-assistant/core/pull/127200 +[#127201]: https://github.com/home-assistant/core/pull/127201 +[#127202]: https://github.com/home-assistant/core/pull/127202 +[#127203]: https://github.com/home-assistant/core/pull/127203 +[#127204]: https://github.com/home-assistant/core/pull/127204 +[#127205]: https://github.com/home-assistant/core/pull/127205 +[#127206]: https://github.com/home-assistant/core/pull/127206 +[#127207]: https://github.com/home-assistant/core/pull/127207 +[#127208]: https://github.com/home-assistant/core/pull/127208 +[#127209]: https://github.com/home-assistant/core/pull/127209 +[#127210]: https://github.com/home-assistant/core/pull/127210 +[#127211]: https://github.com/home-assistant/core/pull/127211 +[#127212]: https://github.com/home-assistant/core/pull/127212 +[#127223]: https://github.com/home-assistant/core/pull/127223 +[#127224]: https://github.com/home-assistant/core/pull/127224 +[#127225]: https://github.com/home-assistant/core/pull/127225 +[#127228]: https://github.com/home-assistant/core/pull/127228 +[#127229]: https://github.com/home-assistant/core/pull/127229 +[#127235]: https://github.com/home-assistant/core/pull/127235 +[#127238]: https://github.com/home-assistant/core/pull/127238 +[#127248]: https://github.com/home-assistant/core/pull/127248 +[#127249]: https://github.com/home-assistant/core/pull/127249 +[#127252]: https://github.com/home-assistant/core/pull/127252 +[#127253]: https://github.com/home-assistant/core/pull/127253 +[#127259]: https://github.com/home-assistant/core/pull/127259 +[#127262]: https://github.com/home-assistant/core/pull/127262 +[#127267]: https://github.com/home-assistant/core/pull/127267 +[#127270]: https://github.com/home-assistant/core/pull/127270 +[#127271]: https://github.com/home-assistant/core/pull/127271 +[#127273]: https://github.com/home-assistant/core/pull/127273 +[#127274]: https://github.com/home-assistant/core/pull/127274 +[#127276]: https://github.com/home-assistant/core/pull/127276 +[#127277]: https://github.com/home-assistant/core/pull/127277 +[#127278]: https://github.com/home-assistant/core/pull/127278 +[#127279]: https://github.com/home-assistant/core/pull/127279 +[#127281]: https://github.com/home-assistant/core/pull/127281 +[#127282]: https://github.com/home-assistant/core/pull/127282 +[#127283]: https://github.com/home-assistant/core/pull/127283 +[#127284]: https://github.com/home-assistant/core/pull/127284 +[#127285]: https://github.com/home-assistant/core/pull/127285 +[#127287]: https://github.com/home-assistant/core/pull/127287 +[#127288]: https://github.com/home-assistant/core/pull/127288 +[#127289]: https://github.com/home-assistant/core/pull/127289 +[#127290]: https://github.com/home-assistant/core/pull/127290 +[#127293]: https://github.com/home-assistant/core/pull/127293 +[#127294]: https://github.com/home-assistant/core/pull/127294 +[#127295]: https://github.com/home-assistant/core/pull/127295 +[#127296]: https://github.com/home-assistant/core/pull/127296 +[#127297]: https://github.com/home-assistant/core/pull/127297 +[#127298]: https://github.com/home-assistant/core/pull/127298 +[#127299]: https://github.com/home-assistant/core/pull/127299 +[#127300]: https://github.com/home-assistant/core/pull/127300 +[#127301]: https://github.com/home-assistant/core/pull/127301 +[#127302]: https://github.com/home-assistant/core/pull/127302 +[#127303]: https://github.com/home-assistant/core/pull/127303 +[#127304]: https://github.com/home-assistant/core/pull/127304 +[#127305]: https://github.com/home-assistant/core/pull/127305 +[#127306]: https://github.com/home-assistant/core/pull/127306 +[#127308]: https://github.com/home-assistant/core/pull/127308 +[#127309]: https://github.com/home-assistant/core/pull/127309 +[#127310]: https://github.com/home-assistant/core/pull/127310 +[#127311]: https://github.com/home-assistant/core/pull/127311 +[#127312]: https://github.com/home-assistant/core/pull/127312 +[#127313]: https://github.com/home-assistant/core/pull/127313 +[#127314]: https://github.com/home-assistant/core/pull/127314 +[#127316]: https://github.com/home-assistant/core/pull/127316 +[#127318]: https://github.com/home-assistant/core/pull/127318 +[#127319]: https://github.com/home-assistant/core/pull/127319 +[#127320]: https://github.com/home-assistant/core/pull/127320 +[#127321]: https://github.com/home-assistant/core/pull/127321 +[#127323]: https://github.com/home-assistant/core/pull/127323 +[#127324]: https://github.com/home-assistant/core/pull/127324 +[#127325]: https://github.com/home-assistant/core/pull/127325 +[#127326]: https://github.com/home-assistant/core/pull/127326 +[#127327]: https://github.com/home-assistant/core/pull/127327 +[#127328]: https://github.com/home-assistant/core/pull/127328 +[#127329]: https://github.com/home-assistant/core/pull/127329 +[#127332]: https://github.com/home-assistant/core/pull/127332 +[#127334]: https://github.com/home-assistant/core/pull/127334 +[#127339]: https://github.com/home-assistant/core/pull/127339 +[#127341]: https://github.com/home-assistant/core/pull/127341 +[#127342]: https://github.com/home-assistant/core/pull/127342 +[#127344]: https://github.com/home-assistant/core/pull/127344 +[#127345]: https://github.com/home-assistant/core/pull/127345 +[#127346]: https://github.com/home-assistant/core/pull/127346 +[#127349]: https://github.com/home-assistant/core/pull/127349 +[#127351]: https://github.com/home-assistant/core/pull/127351 +[#127353]: https://github.com/home-assistant/core/pull/127353 +[#127354]: https://github.com/home-assistant/core/pull/127354 +[#127355]: https://github.com/home-assistant/core/pull/127355 +[#127362]: https://github.com/home-assistant/core/pull/127362 +[#127381]: https://github.com/home-assistant/core/pull/127381 +[#127382]: https://github.com/home-assistant/core/pull/127382 +[#127384]: https://github.com/home-assistant/core/pull/127384 +[#127385]: https://github.com/home-assistant/core/pull/127385 +[#127386]: https://github.com/home-assistant/core/pull/127386 +[#127387]: https://github.com/home-assistant/core/pull/127387 +[#127389]: https://github.com/home-assistant/core/pull/127389 +[#127390]: https://github.com/home-assistant/core/pull/127390 +[#127391]: https://github.com/home-assistant/core/pull/127391 +[#127392]: https://github.com/home-assistant/core/pull/127392 +[#127393]: https://github.com/home-assistant/core/pull/127393 +[#127398]: https://github.com/home-assistant/core/pull/127398 +[#127405]: https://github.com/home-assistant/core/pull/127405 +[#127412]: https://github.com/home-assistant/core/pull/127412 +[#127414]: https://github.com/home-assistant/core/pull/127414 +[#127417]: https://github.com/home-assistant/core/pull/127417 +[#127419]: https://github.com/home-assistant/core/pull/127419 +[#127423]: https://github.com/home-assistant/core/pull/127423 +[#127424]: https://github.com/home-assistant/core/pull/127424 +[#127426]: https://github.com/home-assistant/core/pull/127426 +[#127429]: https://github.com/home-assistant/core/pull/127429 +[#127430]: https://github.com/home-assistant/core/pull/127430 +[#127432]: https://github.com/home-assistant/core/pull/127432 +[#127433]: https://github.com/home-assistant/core/pull/127433 +[#127434]: https://github.com/home-assistant/core/pull/127434 +[#127435]: https://github.com/home-assistant/core/pull/127435 +[#127436]: https://github.com/home-assistant/core/pull/127436 +[#127437]: https://github.com/home-assistant/core/pull/127437 +[#127438]: https://github.com/home-assistant/core/pull/127438 +[#127439]: https://github.com/home-assistant/core/pull/127439 +[#127440]: https://github.com/home-assistant/core/pull/127440 +[#127441]: https://github.com/home-assistant/core/pull/127441 +[#127442]: https://github.com/home-assistant/core/pull/127442 +[#127443]: https://github.com/home-assistant/core/pull/127443 +[#127444]: https://github.com/home-assistant/core/pull/127444 +[#127445]: https://github.com/home-assistant/core/pull/127445 +[#127446]: https://github.com/home-assistant/core/pull/127446 +[#127447]: https://github.com/home-assistant/core/pull/127447 +[#127448]: https://github.com/home-assistant/core/pull/127448 +[#127450]: https://github.com/home-assistant/core/pull/127450 +[#127456]: https://github.com/home-assistant/core/pull/127456 +[#127457]: https://github.com/home-assistant/core/pull/127457 +[#127459]: https://github.com/home-assistant/core/pull/127459 +[#127461]: https://github.com/home-assistant/core/pull/127461 +[#127464]: https://github.com/home-assistant/core/pull/127464 +[#127465]: https://github.com/home-assistant/core/pull/127465 +[#127467]: https://github.com/home-assistant/core/pull/127467 +[#127468]: https://github.com/home-assistant/core/pull/127468 +[#127474]: https://github.com/home-assistant/core/pull/127474 +[#127475]: https://github.com/home-assistant/core/pull/127475 +[#127477]: https://github.com/home-assistant/core/pull/127477 +[#127481]: https://github.com/home-assistant/core/pull/127481 +[#127482]: https://github.com/home-assistant/core/pull/127482 +[#127484]: https://github.com/home-assistant/core/pull/127484 +[#127495]: https://github.com/home-assistant/core/pull/127495 +[#127497]: https://github.com/home-assistant/core/pull/127497 +[#127503]: https://github.com/home-assistant/core/pull/127503 +[#127505]: https://github.com/home-assistant/core/pull/127505 +[#127522]: https://github.com/home-assistant/core/pull/127522 +[#127523]: https://github.com/home-assistant/core/pull/127523 +[#127524]: https://github.com/home-assistant/core/pull/127524 +[#127525]: https://github.com/home-assistant/core/pull/127525 +[#127527]: https://github.com/home-assistant/core/pull/127527 +[#127530]: https://github.com/home-assistant/core/pull/127530 +[#127532]: https://github.com/home-assistant/core/pull/127532 +[#127533]: https://github.com/home-assistant/core/pull/127533 +[#127534]: https://github.com/home-assistant/core/pull/127534 +[#127540]: https://github.com/home-assistant/core/pull/127540 +[#127541]: https://github.com/home-assistant/core/pull/127541 +[#127546]: https://github.com/home-assistant/core/pull/127546 +[#127553]: https://github.com/home-assistant/core/pull/127553 +[#127559]: https://github.com/home-assistant/core/pull/127559 +[#127561]: https://github.com/home-assistant/core/pull/127561 +[#127564]: https://github.com/home-assistant/core/pull/127564 +[#127565]: https://github.com/home-assistant/core/pull/127565 +[#127572]: https://github.com/home-assistant/core/pull/127572 +[#127573]: https://github.com/home-assistant/core/pull/127573 +[#127583]: https://github.com/home-assistant/core/pull/127583 +[#127584]: https://github.com/home-assistant/core/pull/127584 +[#127587]: https://github.com/home-assistant/core/pull/127587 +[#127592]: https://github.com/home-assistant/core/pull/127592 +[#127594]: https://github.com/home-assistant/core/pull/127594 +[#127596]: https://github.com/home-assistant/core/pull/127596 +[#127597]: https://github.com/home-assistant/core/pull/127597 +[#127603]: https://github.com/home-assistant/core/pull/127603 +[#127611]: https://github.com/home-assistant/core/pull/127611 +[#127612]: https://github.com/home-assistant/core/pull/127612 +[#127616]: https://github.com/home-assistant/core/pull/127616 +[#127627]: https://github.com/home-assistant/core/pull/127627 +[#127628]: https://github.com/home-assistant/core/pull/127628 +[#127631]: https://github.com/home-assistant/core/pull/127631 +[#127642]: https://github.com/home-assistant/core/pull/127642 +[#127646]: https://github.com/home-assistant/core/pull/127646 +[#127651]: https://github.com/home-assistant/core/pull/127651 +[#127668]: https://github.com/home-assistant/core/pull/127668 +[#127673]: https://github.com/home-assistant/core/pull/127673 +[#127678]: https://github.com/home-assistant/core/pull/127678 +[#127683]: https://github.com/home-assistant/core/pull/127683 +[#127684]: https://github.com/home-assistant/core/pull/127684 +[#127686]: https://github.com/home-assistant/core/pull/127686 +[#127688]: https://github.com/home-assistant/core/pull/127688 +[#127690]: https://github.com/home-assistant/core/pull/127690 +[#127692]: https://github.com/home-assistant/core/pull/127692 +[#127695]: https://github.com/home-assistant/core/pull/127695 +[#127696]: https://github.com/home-assistant/core/pull/127696 +[#127701]: https://github.com/home-assistant/core/pull/127701 +[#127702]: https://github.com/home-assistant/core/pull/127702 +[#127703]: https://github.com/home-assistant/core/pull/127703 +[#127704]: https://github.com/home-assistant/core/pull/127704 +[#127710]: https://github.com/home-assistant/core/pull/127710 +[#127713]: https://github.com/home-assistant/core/pull/127713 +[#127724]: https://github.com/home-assistant/core/pull/127724 +[#127726]: https://github.com/home-assistant/core/pull/127726 +[#127728]: https://github.com/home-assistant/core/pull/127728 +[#127731]: https://github.com/home-assistant/core/pull/127731 +[#127734]: https://github.com/home-assistant/core/pull/127734 +[#127736]: https://github.com/home-assistant/core/pull/127736 +[#127754]: https://github.com/home-assistant/core/pull/127754 +[#127756]: https://github.com/home-assistant/core/pull/127756 +[#127761]: https://github.com/home-assistant/core/pull/127761 +[#127762]: https://github.com/home-assistant/core/pull/127762 +[#127765]: https://github.com/home-assistant/core/pull/127765 +[#127767]: https://github.com/home-assistant/core/pull/127767 +[#127770]: https://github.com/home-assistant/core/pull/127770 +[#127774]: https://github.com/home-assistant/core/pull/127774 +[#127775]: https://github.com/home-assistant/core/pull/127775 +[#127776]: https://github.com/home-assistant/core/pull/127776 +[#127777]: https://github.com/home-assistant/core/pull/127777 +[#127781]: https://github.com/home-assistant/core/pull/127781 +[#127782]: https://github.com/home-assistant/core/pull/127782 +[#127783]: https://github.com/home-assistant/core/pull/127783 +[#127785]: https://github.com/home-assistant/core/pull/127785 +[#127791]: https://github.com/home-assistant/core/pull/127791 +[#127793]: https://github.com/home-assistant/core/pull/127793 +[#127797]: https://github.com/home-assistant/core/pull/127797 +[#127798]: https://github.com/home-assistant/core/pull/127798 +[#127799]: https://github.com/home-assistant/core/pull/127799 +[#127802]: https://github.com/home-assistant/core/pull/127802 +[#127808]: https://github.com/home-assistant/core/pull/127808 +[#127813]: https://github.com/home-assistant/core/pull/127813 +[#127816]: https://github.com/home-assistant/core/pull/127816 +[#127817]: https://github.com/home-assistant/core/pull/127817 +[#127819]: https://github.com/home-assistant/core/pull/127819 +[#127822]: https://github.com/home-assistant/core/pull/127822 +[#127823]: https://github.com/home-assistant/core/pull/127823 +[#127825]: https://github.com/home-assistant/core/pull/127825 +[#127828]: https://github.com/home-assistant/core/pull/127828 +[#127829]: https://github.com/home-assistant/core/pull/127829 +[#127831]: https://github.com/home-assistant/core/pull/127831 +[#127833]: https://github.com/home-assistant/core/pull/127833 +[#127835]: https://github.com/home-assistant/core/pull/127835 +[#127838]: https://github.com/home-assistant/core/pull/127838 +[#127839]: https://github.com/home-assistant/core/pull/127839 +[#127844]: https://github.com/home-assistant/core/pull/127844 +[#127847]: https://github.com/home-assistant/core/pull/127847 +[#127850]: https://github.com/home-assistant/core/pull/127850 +[#127852]: https://github.com/home-assistant/core/pull/127852 +[#127853]: https://github.com/home-assistant/core/pull/127853 +[#127854]: https://github.com/home-assistant/core/pull/127854 +[#127855]: https://github.com/home-assistant/core/pull/127855 +[#127856]: https://github.com/home-assistant/core/pull/127856 +[#127857]: https://github.com/home-assistant/core/pull/127857 +[#127862]: https://github.com/home-assistant/core/pull/127862 +[#127863]: https://github.com/home-assistant/core/pull/127863 +[#127870]: https://github.com/home-assistant/core/pull/127870 +[#127872]: https://github.com/home-assistant/core/pull/127872 +[#127878]: https://github.com/home-assistant/core/pull/127878 +[#127880]: https://github.com/home-assistant/core/pull/127880 +[#127882]: https://github.com/home-assistant/core/pull/127882 +[#127883]: https://github.com/home-assistant/core/pull/127883 +[#127884]: https://github.com/home-assistant/core/pull/127884 +[#127888]: https://github.com/home-assistant/core/pull/127888 +[#127899]: https://github.com/home-assistant/core/pull/127899 +[#127900]: https://github.com/home-assistant/core/pull/127900 +[#127902]: https://github.com/home-assistant/core/pull/127902 +[#127903]: https://github.com/home-assistant/core/pull/127903 +[#127904]: https://github.com/home-assistant/core/pull/127904 +[#127905]: https://github.com/home-assistant/core/pull/127905 +[#127906]: https://github.com/home-assistant/core/pull/127906 +[#127907]: https://github.com/home-assistant/core/pull/127907 +[#127908]: https://github.com/home-assistant/core/pull/127908 +[#127910]: https://github.com/home-assistant/core/pull/127910 +[#127911]: https://github.com/home-assistant/core/pull/127911 +[#127913]: https://github.com/home-assistant/core/pull/127913 +[#127915]: https://github.com/home-assistant/core/pull/127915 +[#127919]: https://github.com/home-assistant/core/pull/127919 +[#127921]: https://github.com/home-assistant/core/pull/127921 +[#127922]: https://github.com/home-assistant/core/pull/127922 +[#127924]: https://github.com/home-assistant/core/pull/127924 +[#127927]: https://github.com/home-assistant/core/pull/127927 +[#127928]: https://github.com/home-assistant/core/pull/127928 +[#127929]: https://github.com/home-assistant/core/pull/127929 +[#127930]: https://github.com/home-assistant/core/pull/127930 +[#127932]: https://github.com/home-assistant/core/pull/127932 +[#127935]: https://github.com/home-assistant/core/pull/127935 +[#127937]: https://github.com/home-assistant/core/pull/127937 +[#127946]: https://github.com/home-assistant/core/pull/127946 +[#127948]: https://github.com/home-assistant/core/pull/127948 +[#127949]: https://github.com/home-assistant/core/pull/127949 +[#127952]: https://github.com/home-assistant/core/pull/127952 +[#127961]: https://github.com/home-assistant/core/pull/127961 +[#127962]: https://github.com/home-assistant/core/pull/127962 +[#127965]: https://github.com/home-assistant/core/pull/127965 +[#127975]: https://github.com/home-assistant/core/pull/127975 +[#127976]: https://github.com/home-assistant/core/pull/127976 +[#127977]: https://github.com/home-assistant/core/pull/127977 +[#127980]: https://github.com/home-assistant/core/pull/127980 +[#127981]: https://github.com/home-assistant/core/pull/127981 +[#127988]: https://github.com/home-assistant/core/pull/127988 +[#127989]: https://github.com/home-assistant/core/pull/127989 +[#127990]: https://github.com/home-assistant/core/pull/127990 +[#127993]: https://github.com/home-assistant/core/pull/127993 +[#127994]: https://github.com/home-assistant/core/pull/127994 +[#127995]: https://github.com/home-assistant/core/pull/127995 +[#127998]: https://github.com/home-assistant/core/pull/127998 +[#127999]: https://github.com/home-assistant/core/pull/127999 +[#128001]: https://github.com/home-assistant/core/pull/128001 +[#128002]: https://github.com/home-assistant/core/pull/128002 +[#128003]: https://github.com/home-assistant/core/pull/128003 +[#128005]: https://github.com/home-assistant/core/pull/128005 +[#128006]: https://github.com/home-assistant/core/pull/128006 +[#128008]: https://github.com/home-assistant/core/pull/128008 +[#128010]: https://github.com/home-assistant/core/pull/128010 +[#128011]: https://github.com/home-assistant/core/pull/128011 +[#128012]: https://github.com/home-assistant/core/pull/128012 +[#128013]: https://github.com/home-assistant/core/pull/128013 +[#128014]: https://github.com/home-assistant/core/pull/128014 +[#128016]: https://github.com/home-assistant/core/pull/128016 +[#128017]: https://github.com/home-assistant/core/pull/128017 +[#128018]: https://github.com/home-assistant/core/pull/128018 +[#128019]: https://github.com/home-assistant/core/pull/128019 +[#128021]: https://github.com/home-assistant/core/pull/128021 +[#128022]: https://github.com/home-assistant/core/pull/128022 +[#128023]: https://github.com/home-assistant/core/pull/128023 +[#128024]: https://github.com/home-assistant/core/pull/128024 +[#128025]: https://github.com/home-assistant/core/pull/128025 +[#128026]: https://github.com/home-assistant/core/pull/128026 +[#128028]: https://github.com/home-assistant/core/pull/128028 +[#128029]: https://github.com/home-assistant/core/pull/128029 +[#128030]: https://github.com/home-assistant/core/pull/128030 +[#128031]: https://github.com/home-assistant/core/pull/128031 +[#128032]: https://github.com/home-assistant/core/pull/128032 +[#128037]: https://github.com/home-assistant/core/pull/128037 +[#128038]: https://github.com/home-assistant/core/pull/128038 +[#128039]: https://github.com/home-assistant/core/pull/128039 +[#128042]: https://github.com/home-assistant/core/pull/128042 +[#128043]: https://github.com/home-assistant/core/pull/128043 +[#128044]: https://github.com/home-assistant/core/pull/128044 +[#128053]: https://github.com/home-assistant/core/pull/128053 +[#128056]: https://github.com/home-assistant/core/pull/128056 +[#128058]: https://github.com/home-assistant/core/pull/128058 +[#128059]: https://github.com/home-assistant/core/pull/128059 +[#128060]: https://github.com/home-assistant/core/pull/128060 +[#128062]: https://github.com/home-assistant/core/pull/128062 +[#128066]: https://github.com/home-assistant/core/pull/128066 +[#128073]: https://github.com/home-assistant/core/pull/128073 +[#128074]: https://github.com/home-assistant/core/pull/128074 +[#128075]: https://github.com/home-assistant/core/pull/128075 +[#128078]: https://github.com/home-assistant/core/pull/128078 +[#128079]: https://github.com/home-assistant/core/pull/128079 +[#128080]: https://github.com/home-assistant/core/pull/128080 +[#128082]: https://github.com/home-assistant/core/pull/128082 +[#128086]: https://github.com/home-assistant/core/pull/128086 +[#128087]: https://github.com/home-assistant/core/pull/128087 +[#128089]: https://github.com/home-assistant/core/pull/128089 +[#128095]: https://github.com/home-assistant/core/pull/128095 +[#128099]: https://github.com/home-assistant/core/pull/128099 +[#128114]: https://github.com/home-assistant/core/pull/128114 +[#128115]: https://github.com/home-assistant/core/pull/128115 +[#128121]: https://github.com/home-assistant/core/pull/128121 +[#128128]: https://github.com/home-assistant/core/pull/128128 +[#128131]: https://github.com/home-assistant/core/pull/128131 +[#128135]: https://github.com/home-assistant/core/pull/128135 +[#128139]: https://github.com/home-assistant/core/pull/128139 +[#128140]: https://github.com/home-assistant/core/pull/128140 +[#128145]: https://github.com/home-assistant/core/pull/128145 +[#128146]: https://github.com/home-assistant/core/pull/128146 +[#128147]: https://github.com/home-assistant/core/pull/128147 +[#128148]: https://github.com/home-assistant/core/pull/128148 +[#128151]: https://github.com/home-assistant/core/pull/128151 +[#128152]: https://github.com/home-assistant/core/pull/128152 +[#128153]: https://github.com/home-assistant/core/pull/128153 +[#128158]: https://github.com/home-assistant/core/pull/128158 +[#128159]: https://github.com/home-assistant/core/pull/128159 +[#128160]: https://github.com/home-assistant/core/pull/128160 +[#128162]: https://github.com/home-assistant/core/pull/128162 +[#128170]: https://github.com/home-assistant/core/pull/128170 +[#128173]: https://github.com/home-assistant/core/pull/128173 +[#128174]: https://github.com/home-assistant/core/pull/128174 +[#128177]: https://github.com/home-assistant/core/pull/128177 +[#128178]: https://github.com/home-assistant/core/pull/128178 +[#128179]: https://github.com/home-assistant/core/pull/128179 +[#128185]: https://github.com/home-assistant/core/pull/128185 +[#128186]: https://github.com/home-assistant/core/pull/128186 +[#128189]: https://github.com/home-assistant/core/pull/128189 +[#128191]: https://github.com/home-assistant/core/pull/128191 +[#128194]: https://github.com/home-assistant/core/pull/128194 +[#128197]: https://github.com/home-assistant/core/pull/128197 +[#128199]: https://github.com/home-assistant/core/pull/128199 +[#128201]: https://github.com/home-assistant/core/pull/128201 +[#128202]: https://github.com/home-assistant/core/pull/128202 +[#128204]: https://github.com/home-assistant/core/pull/128204 +[#128205]: https://github.com/home-assistant/core/pull/128205 +[#128206]: https://github.com/home-assistant/core/pull/128206 +[#128207]: https://github.com/home-assistant/core/pull/128207 +[#128213]: https://github.com/home-assistant/core/pull/128213 +[#128215]: https://github.com/home-assistant/core/pull/128215 +[#128231]: https://github.com/home-assistant/core/pull/128231 +[#128234]: https://github.com/home-assistant/core/pull/128234 +[#128237]: https://github.com/home-assistant/core/pull/128237 +[#128248]: https://github.com/home-assistant/core/pull/128248 +[#128251]: https://github.com/home-assistant/core/pull/128251 +[#128256]: https://github.com/home-assistant/core/pull/128256 +[#128257]: https://github.com/home-assistant/core/pull/128257 +[#128259]: https://github.com/home-assistant/core/pull/128259 +[#128267]: https://github.com/home-assistant/core/pull/128267 +[#128268]: https://github.com/home-assistant/core/pull/128268 +[#128278]: https://github.com/home-assistant/core/pull/128278 +[#128286]: https://github.com/home-assistant/core/pull/128286 +[#128287]: https://github.com/home-assistant/core/pull/128287 +[#128289]: https://github.com/home-assistant/core/pull/128289 +[#128292]: https://github.com/home-assistant/core/pull/128292 +[#128296]: https://github.com/home-assistant/core/pull/128296 +[#128297]: https://github.com/home-assistant/core/pull/128297 +[#128298]: https://github.com/home-assistant/core/pull/128298 +[#128299]: https://github.com/home-assistant/core/pull/128299 +[#128308]: https://github.com/home-assistant/core/pull/128308 +[#128309]: https://github.com/home-assistant/core/pull/128309 +[#128315]: https://github.com/home-assistant/core/pull/128315 +[#128318]: https://github.com/home-assistant/core/pull/128318 +[#128319]: https://github.com/home-assistant/core/pull/128319 +[#128320]: https://github.com/home-assistant/core/pull/128320 +[#128321]: https://github.com/home-assistant/core/pull/128321 +[#128324]: https://github.com/home-assistant/core/pull/128324 +[#128334]: https://github.com/home-assistant/core/pull/128334 +[#128335]: https://github.com/home-assistant/core/pull/128335 +[#128338]: https://github.com/home-assistant/core/pull/128338 +[#128339]: https://github.com/home-assistant/core/pull/128339 +[#128340]: https://github.com/home-assistant/core/pull/128340 +[#128344]: https://github.com/home-assistant/core/pull/128344 +[#128345]: https://github.com/home-assistant/core/pull/128345 +[#128349]: https://github.com/home-assistant/core/pull/128349 +[#128352]: https://github.com/home-assistant/core/pull/128352 +[#128353]: https://github.com/home-assistant/core/pull/128353 +[#128354]: https://github.com/home-assistant/core/pull/128354 +[#128356]: https://github.com/home-assistant/core/pull/128356 +[#128357]: https://github.com/home-assistant/core/pull/128357 +[#128362]: https://github.com/home-assistant/core/pull/128362 +[#128363]: https://github.com/home-assistant/core/pull/128363 +[#128364]: https://github.com/home-assistant/core/pull/128364 +[#128369]: https://github.com/home-assistant/core/pull/128369 +[#128371]: https://github.com/home-assistant/core/pull/128371 +[#128383]: https://github.com/home-assistant/core/pull/128383 +[#128384]: https://github.com/home-assistant/core/pull/128384 +[#128385]: https://github.com/home-assistant/core/pull/128385 +[#128386]: https://github.com/home-assistant/core/pull/128386 +[#128387]: https://github.com/home-assistant/core/pull/128387 +[#128390]: https://github.com/home-assistant/core/pull/128390 +[#128391]: https://github.com/home-assistant/core/pull/128391 +[#128394]: https://github.com/home-assistant/core/pull/128394 +[#128397]: https://github.com/home-assistant/core/pull/128397 +[#128402]: https://github.com/home-assistant/core/pull/128402 +[#128404]: https://github.com/home-assistant/core/pull/128404 +[#128411]: https://github.com/home-assistant/core/pull/128411 +[#128412]: https://github.com/home-assistant/core/pull/128412 +[#128413]: https://github.com/home-assistant/core/pull/128413 +[#128418]: https://github.com/home-assistant/core/pull/128418 +[#128419]: https://github.com/home-assistant/core/pull/128419 +[#128420]: https://github.com/home-assistant/core/pull/128420 +[#128422]: https://github.com/home-assistant/core/pull/128422 +[#128423]: https://github.com/home-assistant/core/pull/128423 +[#128425]: https://github.com/home-assistant/core/pull/128425 +[#128426]: https://github.com/home-assistant/core/pull/128426 +[#128430]: https://github.com/home-assistant/core/pull/128430 +[#128431]: https://github.com/home-assistant/core/pull/128431 +[#128432]: https://github.com/home-assistant/core/pull/128432 +[#128434]: https://github.com/home-assistant/core/pull/128434 +[#128440]: https://github.com/home-assistant/core/pull/128440 +[#128441]: https://github.com/home-assistant/core/pull/128441 +[#128444]: https://github.com/home-assistant/core/pull/128444 +[#128445]: https://github.com/home-assistant/core/pull/128445 +[#128447]: https://github.com/home-assistant/core/pull/128447 +[#128448]: https://github.com/home-assistant/core/pull/128448 +[#128449]: https://github.com/home-assistant/core/pull/128449 +[#128450]: https://github.com/home-assistant/core/pull/128450 +[#128452]: https://github.com/home-assistant/core/pull/128452 +[#128454]: https://github.com/home-assistant/core/pull/128454 +[#128455]: https://github.com/home-assistant/core/pull/128455 +[#128456]: https://github.com/home-assistant/core/pull/128456 +[#128457]: https://github.com/home-assistant/core/pull/128457 +[#128475]: https://github.com/home-assistant/core/pull/128475 +[#128481]: https://github.com/home-assistant/core/pull/128481 +[#128484]: https://github.com/home-assistant/core/pull/128484 +[#128488]: https://github.com/home-assistant/core/pull/128488 +[#128490]: https://github.com/home-assistant/core/pull/128490 +[#128498]: https://github.com/home-assistant/core/pull/128498 +[#128499]: https://github.com/home-assistant/core/pull/128499 +[#128508]: https://github.com/home-assistant/core/pull/128508 +[#128517]: https://github.com/home-assistant/core/pull/128517 +[#128518]: https://github.com/home-assistant/core/pull/128518 +[#128521]: https://github.com/home-assistant/core/pull/128521 +[#128525]: https://github.com/home-assistant/core/pull/128525 +[#128527]: https://github.com/home-assistant/core/pull/128527 +[#128529]: https://github.com/home-assistant/core/pull/128529 +[#128530]: https://github.com/home-assistant/core/pull/128530 +[#128532]: https://github.com/home-assistant/core/pull/128532 +[#128533]: https://github.com/home-assistant/core/pull/128533 +[#128535]: https://github.com/home-assistant/core/pull/128535 +[#128536]: https://github.com/home-assistant/core/pull/128536 +[#128538]: https://github.com/home-assistant/core/pull/128538 +[#128539]: https://github.com/home-assistant/core/pull/128539 +[#128542]: https://github.com/home-assistant/core/pull/128542 +[#128545]: https://github.com/home-assistant/core/pull/128545 +[#128548]: https://github.com/home-assistant/core/pull/128548 +[#128549]: https://github.com/home-assistant/core/pull/128549 +[#128560]: https://github.com/home-assistant/core/pull/128560 +[#128561]: https://github.com/home-assistant/core/pull/128561 +[#128566]: https://github.com/home-assistant/core/pull/128566 +[#128567]: https://github.com/home-assistant/core/pull/128567 +[#128568]: https://github.com/home-assistant/core/pull/128568 +[#128569]: https://github.com/home-assistant/core/pull/128569 +[#128570]: https://github.com/home-assistant/core/pull/128570 +[#128571]: https://github.com/home-assistant/core/pull/128571 +[#128573]: https://github.com/home-assistant/core/pull/128573 +[#128576]: https://github.com/home-assistant/core/pull/128576 +[#128578]: https://github.com/home-assistant/core/pull/128578 +[#128579]: https://github.com/home-assistant/core/pull/128579 +[#128580]: https://github.com/home-assistant/core/pull/128580 +[#128582]: https://github.com/home-assistant/core/pull/128582 +[#128583]: https://github.com/home-assistant/core/pull/128583 +[#128584]: https://github.com/home-assistant/core/pull/128584 +[#128585]: https://github.com/home-assistant/core/pull/128585 +[#128586]: https://github.com/home-assistant/core/pull/128586 +[#128587]: https://github.com/home-assistant/core/pull/128587 +[#128589]: https://github.com/home-assistant/core/pull/128589 +[#128590]: https://github.com/home-assistant/core/pull/128590 +[#128591]: https://github.com/home-assistant/core/pull/128591 +[#128592]: https://github.com/home-assistant/core/pull/128592 +[#128599]: https://github.com/home-assistant/core/pull/128599 +[#128601]: https://github.com/home-assistant/core/pull/128601 +[#128602]: https://github.com/home-assistant/core/pull/128602 +[#128603]: https://github.com/home-assistant/core/pull/128603 +[#128604]: https://github.com/home-assistant/core/pull/128604 +[#128608]: https://github.com/home-assistant/core/pull/128608 +[#128610]: https://github.com/home-assistant/core/pull/128610 +[#128612]: https://github.com/home-assistant/core/pull/128612 +[#128614]: https://github.com/home-assistant/core/pull/128614 +[#128618]: https://github.com/home-assistant/core/pull/128618 +[#128622]: https://github.com/home-assistant/core/pull/128622 +[#128626]: https://github.com/home-assistant/core/pull/128626 +[#128627]: https://github.com/home-assistant/core/pull/128627 +[#128628]: https://github.com/home-assistant/core/pull/128628 +[#128629]: https://github.com/home-assistant/core/pull/128629 +[#128630]: https://github.com/home-assistant/core/pull/128630 +[#128631]: https://github.com/home-assistant/core/pull/128631 +[#128632]: https://github.com/home-assistant/core/pull/128632 +[#128634]: https://github.com/home-assistant/core/pull/128634 +[#128636]: https://github.com/home-assistant/core/pull/128636 +[#128640]: https://github.com/home-assistant/core/pull/128640 +[#128645]: https://github.com/home-assistant/core/pull/128645 +[#128646]: https://github.com/home-assistant/core/pull/128646 +[#128647]: https://github.com/home-assistant/core/pull/128647 +[#128648]: https://github.com/home-assistant/core/pull/128648 +[#128649]: https://github.com/home-assistant/core/pull/128649 +[#128650]: https://github.com/home-assistant/core/pull/128650 +[#128651]: https://github.com/home-assistant/core/pull/128651 +[#128652]: https://github.com/home-assistant/core/pull/128652 +[#128655]: https://github.com/home-assistant/core/pull/128655 +[#128656]: https://github.com/home-assistant/core/pull/128656 +[#128657]: https://github.com/home-assistant/core/pull/128657 +[#128658]: https://github.com/home-assistant/core/pull/128658 +[#128659]: https://github.com/home-assistant/core/pull/128659 +[#128661]: https://github.com/home-assistant/core/pull/128661 +[#128663]: https://github.com/home-assistant/core/pull/128663 +[#128665]: https://github.com/home-assistant/core/pull/128665 +[#128666]: https://github.com/home-assistant/core/pull/128666 +[#128668]: https://github.com/home-assistant/core/pull/128668 +[#128670]: https://github.com/home-assistant/core/pull/128670 +[#128681]: https://github.com/home-assistant/core/pull/128681 +[#128685]: https://github.com/home-assistant/core/pull/128685 +[#128690]: https://github.com/home-assistant/core/pull/128690 +[#128692]: https://github.com/home-assistant/core/pull/128692 +[#128693]: https://github.com/home-assistant/core/pull/128693 +[#128694]: https://github.com/home-assistant/core/pull/128694 +[#128695]: https://github.com/home-assistant/core/pull/128695 +[#128696]: https://github.com/home-assistant/core/pull/128696 +[#128697]: https://github.com/home-assistant/core/pull/128697 +[#128698]: https://github.com/home-assistant/core/pull/128698 +[#128699]: https://github.com/home-assistant/core/pull/128699 +[#128700]: https://github.com/home-assistant/core/pull/128700 +[#128701]: https://github.com/home-assistant/core/pull/128701 +[#128702]: https://github.com/home-assistant/core/pull/128702 +[#128703]: https://github.com/home-assistant/core/pull/128703 +[#128704]: https://github.com/home-assistant/core/pull/128704 +[#128705]: https://github.com/home-assistant/core/pull/128705 +[#128706]: https://github.com/home-assistant/core/pull/128706 +[#128707]: https://github.com/home-assistant/core/pull/128707 +[#128714]: https://github.com/home-assistant/core/pull/128714 +[#128715]: https://github.com/home-assistant/core/pull/128715 +[#128716]: https://github.com/home-assistant/core/pull/128716 +[#128717]: https://github.com/home-assistant/core/pull/128717 +[#128718]: https://github.com/home-assistant/core/pull/128718 +[#128719]: https://github.com/home-assistant/core/pull/128719 +[#128720]: https://github.com/home-assistant/core/pull/128720 +[#128721]: https://github.com/home-assistant/core/pull/128721 +[#128725]: https://github.com/home-assistant/core/pull/128725 +[#128726]: https://github.com/home-assistant/core/pull/128726 +[#128727]: https://github.com/home-assistant/core/pull/128727 +[#128728]: https://github.com/home-assistant/core/pull/128728 +[#128729]: https://github.com/home-assistant/core/pull/128729 +[#128730]: https://github.com/home-assistant/core/pull/128730 +[#128731]: https://github.com/home-assistant/core/pull/128731 +[#128734]: https://github.com/home-assistant/core/pull/128734 +[#128736]: https://github.com/home-assistant/core/pull/128736 +[#128737]: https://github.com/home-assistant/core/pull/128737 +[#128738]: https://github.com/home-assistant/core/pull/128738 +[#128739]: https://github.com/home-assistant/core/pull/128739 +[#128740]: https://github.com/home-assistant/core/pull/128740 +[#128741]: https://github.com/home-assistant/core/pull/128741 +[#128742]: https://github.com/home-assistant/core/pull/128742 +[#128743]: https://github.com/home-assistant/core/pull/128743 +[#128744]: https://github.com/home-assistant/core/pull/128744 +[#128745]: https://github.com/home-assistant/core/pull/128745 +[#128746]: https://github.com/home-assistant/core/pull/128746 +[#128747]: https://github.com/home-assistant/core/pull/128747 +[#128748]: https://github.com/home-assistant/core/pull/128748 +[#128750]: https://github.com/home-assistant/core/pull/128750 +[#128751]: https://github.com/home-assistant/core/pull/128751 +[#128752]: https://github.com/home-assistant/core/pull/128752 +[#128755]: https://github.com/home-assistant/core/pull/128755 +[#128756]: https://github.com/home-assistant/core/pull/128756 +[#128758]: https://github.com/home-assistant/core/pull/128758 +[#128759]: https://github.com/home-assistant/core/pull/128759 +[#128760]: https://github.com/home-assistant/core/pull/128760 +[#128761]: https://github.com/home-assistant/core/pull/128761 +[#128762]: https://github.com/home-assistant/core/pull/128762 +[#128763]: https://github.com/home-assistant/core/pull/128763 +[#128764]: https://github.com/home-assistant/core/pull/128764 +[#128765]: https://github.com/home-assistant/core/pull/128765 +[#128766]: https://github.com/home-assistant/core/pull/128766 +[#128767]: https://github.com/home-assistant/core/pull/128767 +[#128768]: https://github.com/home-assistant/core/pull/128768 +[#128769]: https://github.com/home-assistant/core/pull/128769 +[#128773]: https://github.com/home-assistant/core/pull/128773 +[#128774]: https://github.com/home-assistant/core/pull/128774 +[#128775]: https://github.com/home-assistant/core/pull/128775 +[#128778]: https://github.com/home-assistant/core/pull/128778 +[#128779]: https://github.com/home-assistant/core/pull/128779 +[#128780]: https://github.com/home-assistant/core/pull/128780 +[#128781]: https://github.com/home-assistant/core/pull/128781 +[#128782]: https://github.com/home-assistant/core/pull/128782 +[#128785]: https://github.com/home-assistant/core/pull/128785 +[#128787]: https://github.com/home-assistant/core/pull/128787 +[#128788]: https://github.com/home-assistant/core/pull/128788 +[#128792]: https://github.com/home-assistant/core/pull/128792 +[#128804]: https://github.com/home-assistant/core/pull/128804 +[#128806]: https://github.com/home-assistant/core/pull/128806 +[#128807]: https://github.com/home-assistant/core/pull/128807 +[#128808]: https://github.com/home-assistant/core/pull/128808 +[#128812]: https://github.com/home-assistant/core/pull/128812 +[#128813]: https://github.com/home-assistant/core/pull/128813 +[#128815]: https://github.com/home-assistant/core/pull/128815 +[#128819]: https://github.com/home-assistant/core/pull/128819 +[#128820]: https://github.com/home-assistant/core/pull/128820 +[#128821]: https://github.com/home-assistant/core/pull/128821 +[#128822]: https://github.com/home-assistant/core/pull/128822 +[#128823]: https://github.com/home-assistant/core/pull/128823 +[#128824]: https://github.com/home-assistant/core/pull/128824 +[#128825]: https://github.com/home-assistant/core/pull/128825 +[#128826]: https://github.com/home-assistant/core/pull/128826 +[#128827]: https://github.com/home-assistant/core/pull/128827 +[#128828]: https://github.com/home-assistant/core/pull/128828 +[#128831]: https://github.com/home-assistant/core/pull/128831 +[#128834]: https://github.com/home-assistant/core/pull/128834 +[#128835]: https://github.com/home-assistant/core/pull/128835 +[#128836]: https://github.com/home-assistant/core/pull/128836 +[#128837]: https://github.com/home-assistant/core/pull/128837 +[#128844]: https://github.com/home-assistant/core/pull/128844 +[#128846]: https://github.com/home-assistant/core/pull/128846 +[#128847]: https://github.com/home-assistant/core/pull/128847 +[#128855]: https://github.com/home-assistant/core/pull/128855 +[#128858]: https://github.com/home-assistant/core/pull/128858 +[#128870]: https://github.com/home-assistant/core/pull/128870 +[#128871]: https://github.com/home-assistant/core/pull/128871 +[#128876]: https://github.com/home-assistant/core/pull/128876 +[#128877]: https://github.com/home-assistant/core/pull/128877 +[#128879]: https://github.com/home-assistant/core/pull/128879 +[#128883]: https://github.com/home-assistant/core/pull/128883 +[#128890]: https://github.com/home-assistant/core/pull/128890 +[#128891]: https://github.com/home-assistant/core/pull/128891 +[#128892]: https://github.com/home-assistant/core/pull/128892 +[#128894]: https://github.com/home-assistant/core/pull/128894 +[#128896]: https://github.com/home-assistant/core/pull/128896 +[#128899]: https://github.com/home-assistant/core/pull/128899 +[#128900]: https://github.com/home-assistant/core/pull/128900 +[#128902]: https://github.com/home-assistant/core/pull/128902 +[#128903]: https://github.com/home-assistant/core/pull/128903 +[#128904]: https://github.com/home-assistant/core/pull/128904 +[#128905]: https://github.com/home-assistant/core/pull/128905 +[#128906]: https://github.com/home-assistant/core/pull/128906 +[#128907]: https://github.com/home-assistant/core/pull/128907 +[#128908]: https://github.com/home-assistant/core/pull/128908 +[#128909]: https://github.com/home-assistant/core/pull/128909 +[#128919]: https://github.com/home-assistant/core/pull/128919 +[#128922]: https://github.com/home-assistant/core/pull/128922 +[#128924]: https://github.com/home-assistant/core/pull/128924 +[#128925]: https://github.com/home-assistant/core/pull/128925 +[#128926]: https://github.com/home-assistant/core/pull/128926 +[#128927]: https://github.com/home-assistant/core/pull/128927 +[#128928]: https://github.com/home-assistant/core/pull/128928 +[#128930]: https://github.com/home-assistant/core/pull/128930 +[#128932]: https://github.com/home-assistant/core/pull/128932 +[#128933]: https://github.com/home-assistant/core/pull/128933 +[#128934]: https://github.com/home-assistant/core/pull/128934 +[#128937]: https://github.com/home-assistant/core/pull/128937 +[#128938]: https://github.com/home-assistant/core/pull/128938 +[#128939]: https://github.com/home-assistant/core/pull/128939 +[#128940]: https://github.com/home-assistant/core/pull/128940 +[#128941]: https://github.com/home-assistant/core/pull/128941 +[#128942]: https://github.com/home-assistant/core/pull/128942 +[#128943]: https://github.com/home-assistant/core/pull/128943 +[#128945]: https://github.com/home-assistant/core/pull/128945 +[#128946]: https://github.com/home-assistant/core/pull/128946 +[#128948]: https://github.com/home-assistant/core/pull/128948 +[#128949]: https://github.com/home-assistant/core/pull/128949 +[#128951]: https://github.com/home-assistant/core/pull/128951 +[#128952]: https://github.com/home-assistant/core/pull/128952 +[#128953]: https://github.com/home-assistant/core/pull/128953 +[#128966]: https://github.com/home-assistant/core/pull/128966 +[#128967]: https://github.com/home-assistant/core/pull/128967 +[#128970]: https://github.com/home-assistant/core/pull/128970 +[#128975]: https://github.com/home-assistant/core/pull/128975 +[#128976]: https://github.com/home-assistant/core/pull/128976 +[#128977]: https://github.com/home-assistant/core/pull/128977 +[#128978]: https://github.com/home-assistant/core/pull/128978 +[#128979]: https://github.com/home-assistant/core/pull/128979 +[#128980]: https://github.com/home-assistant/core/pull/128980 +[#128984]: https://github.com/home-assistant/core/pull/128984 +[#128990]: https://github.com/home-assistant/core/pull/128990 +[#128991]: https://github.com/home-assistant/core/pull/128991 +[#128992]: https://github.com/home-assistant/core/pull/128992 +[#128994]: https://github.com/home-assistant/core/pull/128994 +[#128996]: https://github.com/home-assistant/core/pull/128996 +[#128998]: https://github.com/home-assistant/core/pull/128998 +[#128999]: https://github.com/home-assistant/core/pull/128999 +[#129000]: https://github.com/home-assistant/core/pull/129000 +[#129002]: https://github.com/home-assistant/core/pull/129002 +[#129004]: https://github.com/home-assistant/core/pull/129004 +[#129005]: https://github.com/home-assistant/core/pull/129005 +[#129008]: https://github.com/home-assistant/core/pull/129008 +[#129013]: https://github.com/home-assistant/core/pull/129013 +[#129015]: https://github.com/home-assistant/core/pull/129015 +[#129018]: https://github.com/home-assistant/core/pull/129018 +[#129019]: https://github.com/home-assistant/core/pull/129019 +[#129020]: https://github.com/home-assistant/core/pull/129020 +[#129024]: https://github.com/home-assistant/core/pull/129024 +[#129025]: https://github.com/home-assistant/core/pull/129025 +[#129030]: https://github.com/home-assistant/core/pull/129030 +[#129032]: https://github.com/home-assistant/core/pull/129032 +[#129035]: https://github.com/home-assistant/core/pull/129035 +[#129037]: https://github.com/home-assistant/core/pull/129037 +[#129038]: https://github.com/home-assistant/core/pull/129038 +[#129050]: https://github.com/home-assistant/core/pull/129050 +[#129061]: https://github.com/home-assistant/core/pull/129061 +[#129063]: https://github.com/home-assistant/core/pull/129063 +[#129065]: https://github.com/home-assistant/core/pull/129065 +[#129066]: https://github.com/home-assistant/core/pull/129066 +[#129070]: https://github.com/home-assistant/core/pull/129070 +[#129072]: https://github.com/home-assistant/core/pull/129072 +[#129073]: https://github.com/home-assistant/core/pull/129073 +[#129075]: https://github.com/home-assistant/core/pull/129075 +[#129078]: https://github.com/home-assistant/core/pull/129078 +[#129080]: https://github.com/home-assistant/core/pull/129080 +[#129081]: https://github.com/home-assistant/core/pull/129081 +[#129083]: https://github.com/home-assistant/core/pull/129083 +[#129084]: https://github.com/home-assistant/core/pull/129084 +[#129085]: https://github.com/home-assistant/core/pull/129085 +[#129086]: https://github.com/home-assistant/core/pull/129086 +[#129087]: https://github.com/home-assistant/core/pull/129087 +[#129088]: https://github.com/home-assistant/core/pull/129088 +[#129089]: https://github.com/home-assistant/core/pull/129089 +[#129090]: https://github.com/home-assistant/core/pull/129090 +[#129092]: https://github.com/home-assistant/core/pull/129092 +[#129094]: https://github.com/home-assistant/core/pull/129094 +[#129095]: https://github.com/home-assistant/core/pull/129095 +[#129100]: https://github.com/home-assistant/core/pull/129100 +[#129102]: https://github.com/home-assistant/core/pull/129102 +[#129107]: https://github.com/home-assistant/core/pull/129107 +[#129108]: https://github.com/home-assistant/core/pull/129108 +[#129110]: https://github.com/home-assistant/core/pull/129110 +[#129111]: https://github.com/home-assistant/core/pull/129111 +[#129112]: https://github.com/home-assistant/core/pull/129112 +[#129113]: https://github.com/home-assistant/core/pull/129113 +[#129114]: https://github.com/home-assistant/core/pull/129114 +[#129116]: https://github.com/home-assistant/core/pull/129116 +[#129118]: https://github.com/home-assistant/core/pull/129118 +[#129119]: https://github.com/home-assistant/core/pull/129119 +[#129121]: https://github.com/home-assistant/core/pull/129121 +[#129131]: https://github.com/home-assistant/core/pull/129131 +[#129135]: https://github.com/home-assistant/core/pull/129135 +[#129137]: https://github.com/home-assistant/core/pull/129137 +[#129138]: https://github.com/home-assistant/core/pull/129138 +[#129141]: https://github.com/home-assistant/core/pull/129141 +[#129143]: https://github.com/home-assistant/core/pull/129143 +[#129144]: https://github.com/home-assistant/core/pull/129144 +[#129145]: https://github.com/home-assistant/core/pull/129145 +[#129151]: https://github.com/home-assistant/core/pull/129151 +[#129155]: https://github.com/home-assistant/core/pull/129155 +[#129156]: https://github.com/home-assistant/core/pull/129156 +[#129157]: https://github.com/home-assistant/core/pull/129157 +[#129158]: https://github.com/home-assistant/core/pull/129158 +[#129160]: https://github.com/home-assistant/core/pull/129160 +[#129161]: https://github.com/home-assistant/core/pull/129161 +[#129162]: https://github.com/home-assistant/core/pull/129162 +[#129163]: https://github.com/home-assistant/core/pull/129163 +[#129164]: https://github.com/home-assistant/core/pull/129164 +[#129166]: https://github.com/home-assistant/core/pull/129166 +[#129167]: https://github.com/home-assistant/core/pull/129167 +[#129168]: https://github.com/home-assistant/core/pull/129168 +[#129169]: https://github.com/home-assistant/core/pull/129169 +[#129170]: https://github.com/home-assistant/core/pull/129170 +[#129171]: https://github.com/home-assistant/core/pull/129171 +[#129172]: https://github.com/home-assistant/core/pull/129172 +[#129174]: https://github.com/home-assistant/core/pull/129174 +[#129175]: https://github.com/home-assistant/core/pull/129175 +[#129177]: https://github.com/home-assistant/core/pull/129177 +[#129179]: https://github.com/home-assistant/core/pull/129179 +[#129182]: https://github.com/home-assistant/core/pull/129182 +[#129183]: https://github.com/home-assistant/core/pull/129183 +[#129185]: https://github.com/home-assistant/core/pull/129185 +[#129186]: https://github.com/home-assistant/core/pull/129186 +[#129188]: https://github.com/home-assistant/core/pull/129188 +[#129191]: https://github.com/home-assistant/core/pull/129191 +[#129192]: https://github.com/home-assistant/core/pull/129192 +[#129193]: https://github.com/home-assistant/core/pull/129193 +[#129194]: https://github.com/home-assistant/core/pull/129194 +[#129195]: https://github.com/home-assistant/core/pull/129195 +[#129196]: https://github.com/home-assistant/core/pull/129196 +[#129199]: https://github.com/home-assistant/core/pull/129199 +[#129201]: https://github.com/home-assistant/core/pull/129201 +[#129202]: https://github.com/home-assistant/core/pull/129202 +[#129204]: https://github.com/home-assistant/core/pull/129204 +[#129205]: https://github.com/home-assistant/core/pull/129205 +[#129206]: https://github.com/home-assistant/core/pull/129206 +[#129210]: https://github.com/home-assistant/core/pull/129210 +[#129211]: https://github.com/home-assistant/core/pull/129211 +[#129215]: https://github.com/home-assistant/core/pull/129215 +[#129216]: https://github.com/home-assistant/core/pull/129216 +[#129217]: https://github.com/home-assistant/core/pull/129217 +[#129218]: https://github.com/home-assistant/core/pull/129218 +[#129220]: https://github.com/home-assistant/core/pull/129220 +[#129221]: https://github.com/home-assistant/core/pull/129221 +[#129222]: https://github.com/home-assistant/core/pull/129222 +[#129223]: https://github.com/home-assistant/core/pull/129223 +[#129225]: https://github.com/home-assistant/core/pull/129225 +[#129226]: https://github.com/home-assistant/core/pull/129226 +[#129227]: https://github.com/home-assistant/core/pull/129227 +[#129229]: https://github.com/home-assistant/core/pull/129229 +[#129230]: https://github.com/home-assistant/core/pull/129230 +[#129232]: https://github.com/home-assistant/core/pull/129232 +[#129234]: https://github.com/home-assistant/core/pull/129234 +[#129235]: https://github.com/home-assistant/core/pull/129235 +[#129241]: https://github.com/home-assistant/core/pull/129241 +[#129245]: https://github.com/home-assistant/core/pull/129245 +[#129246]: https://github.com/home-assistant/core/pull/129246 +[#129247]: https://github.com/home-assistant/core/pull/129247 +[#129251]: https://github.com/home-assistant/core/pull/129251 +[#129257]: https://github.com/home-assistant/core/pull/129257 +[#129259]: https://github.com/home-assistant/core/pull/129259 +[#129267]: https://github.com/home-assistant/core/pull/129267 +[#129268]: https://github.com/home-assistant/core/pull/129268 +[#129274]: https://github.com/home-assistant/core/pull/129274 +[#129276]: https://github.com/home-assistant/core/pull/129276 +[#129277]: https://github.com/home-assistant/core/pull/129277 +[#129278]: https://github.com/home-assistant/core/pull/129278 +[#129279]: https://github.com/home-assistant/core/pull/129279 +[#129280]: https://github.com/home-assistant/core/pull/129280 +[#129281]: https://github.com/home-assistant/core/pull/129281 +[#129282]: https://github.com/home-assistant/core/pull/129282 +[#129289]: https://github.com/home-assistant/core/pull/129289 +[#129295]: https://github.com/home-assistant/core/pull/129295 +[#129297]: https://github.com/home-assistant/core/pull/129297 +[#129299]: https://github.com/home-assistant/core/pull/129299 +[#129300]: https://github.com/home-assistant/core/pull/129300 +[#129303]: https://github.com/home-assistant/core/pull/129303 +[#129305]: https://github.com/home-assistant/core/pull/129305 +[#129306]: https://github.com/home-assistant/core/pull/129306 +[#129308]: https://github.com/home-assistant/core/pull/129308 +[#129309]: https://github.com/home-assistant/core/pull/129309 +[#129313]: https://github.com/home-assistant/core/pull/129313 +[#129314]: https://github.com/home-assistant/core/pull/129314 +[#129315]: https://github.com/home-assistant/core/pull/129315 +[#129318]: https://github.com/home-assistant/core/pull/129318 +[#129322]: https://github.com/home-assistant/core/pull/129322 +[#129325]: https://github.com/home-assistant/core/pull/129325 +[#129326]: https://github.com/home-assistant/core/pull/129326 +[#129327]: https://github.com/home-assistant/core/pull/129327 +[#129329]: https://github.com/home-assistant/core/pull/129329 +[#129330]: https://github.com/home-assistant/core/pull/129330 +[#129333]: https://github.com/home-assistant/core/pull/129333 +[#129334]: https://github.com/home-assistant/core/pull/129334 +[#129338]: https://github.com/home-assistant/core/pull/129338 +[#129339]: https://github.com/home-assistant/core/pull/129339 +[#129342]: https://github.com/home-assistant/core/pull/129342 +[#129345]: https://github.com/home-assistant/core/pull/129345 +[#129346]: https://github.com/home-assistant/core/pull/129346 +[#129348]: https://github.com/home-assistant/core/pull/129348 +[#129349]: https://github.com/home-assistant/core/pull/129349 +[#129354]: https://github.com/home-assistant/core/pull/129354 +[#129355]: https://github.com/home-assistant/core/pull/129355 +[#129356]: https://github.com/home-assistant/core/pull/129356 +[#129358]: https://github.com/home-assistant/core/pull/129358 +[#129360]: https://github.com/home-assistant/core/pull/129360 +[#129365]: https://github.com/home-assistant/core/pull/129365 +[#129366]: https://github.com/home-assistant/core/pull/129366 +[#129369]: https://github.com/home-assistant/core/pull/129369 +[#129370]: https://github.com/home-assistant/core/pull/129370 +[#129371]: https://github.com/home-assistant/core/pull/129371 +[#129372]: https://github.com/home-assistant/core/pull/129372 +[#129373]: https://github.com/home-assistant/core/pull/129373 +[#129374]: https://github.com/home-assistant/core/pull/129374 +[#129376]: https://github.com/home-assistant/core/pull/129376 +[#129380]: https://github.com/home-assistant/core/pull/129380 +[#129381]: https://github.com/home-assistant/core/pull/129381 +[#129383]: https://github.com/home-assistant/core/pull/129383 +[#129384]: https://github.com/home-assistant/core/pull/129384 +[#129385]: https://github.com/home-assistant/core/pull/129385 +[#129386]: https://github.com/home-assistant/core/pull/129386 +[#129388]: https://github.com/home-assistant/core/pull/129388 +[#129389]: https://github.com/home-assistant/core/pull/129389 +[#129390]: https://github.com/home-assistant/core/pull/129390 +[#129391]: https://github.com/home-assistant/core/pull/129391 +[#129394]: https://github.com/home-assistant/core/pull/129394 +[#129395]: https://github.com/home-assistant/core/pull/129395 +[#129397]: https://github.com/home-assistant/core/pull/129397 +[#129401]: https://github.com/home-assistant/core/pull/129401 +[#129402]: https://github.com/home-assistant/core/pull/129402 +[#129403]: https://github.com/home-assistant/core/pull/129403 +[#129407]: https://github.com/home-assistant/core/pull/129407 +[#129413]: https://github.com/home-assistant/core/pull/129413 +[#129414]: https://github.com/home-assistant/core/pull/129414 +[#129415]: https://github.com/home-assistant/core/pull/129415 +[#129416]: https://github.com/home-assistant/core/pull/129416 +[#129417]: https://github.com/home-assistant/core/pull/129417 +[#129418]: https://github.com/home-assistant/core/pull/129418 +[#129419]: https://github.com/home-assistant/core/pull/129419 +[#129420]: https://github.com/home-assistant/core/pull/129420 +[#129422]: https://github.com/home-assistant/core/pull/129422 +[#129423]: https://github.com/home-assistant/core/pull/129423 +[#129428]: https://github.com/home-assistant/core/pull/129428 +[#129429]: https://github.com/home-assistant/core/pull/129429 +[#129430]: https://github.com/home-assistant/core/pull/129430 +[#129432]: https://github.com/home-assistant/core/pull/129432 +[#129434]: https://github.com/home-assistant/core/pull/129434 +[#129436]: https://github.com/home-assistant/core/pull/129436 +[#129439]: https://github.com/home-assistant/core/pull/129439 +[#129441]: https://github.com/home-assistant/core/pull/129441 +[#129444]: https://github.com/home-assistant/core/pull/129444 +[#129448]: https://github.com/home-assistant/core/pull/129448 +[#129449]: https://github.com/home-assistant/core/pull/129449 +[#129452]: https://github.com/home-assistant/core/pull/129452 +[#129453]: https://github.com/home-assistant/core/pull/129453 +[#129454]: https://github.com/home-assistant/core/pull/129454 +[#129457]: https://github.com/home-assistant/core/pull/129457 +[#129458]: https://github.com/home-assistant/core/pull/129458 +[#129464]: https://github.com/home-assistant/core/pull/129464 +[#129468]: https://github.com/home-assistant/core/pull/129468 +[#129473]: https://github.com/home-assistant/core/pull/129473 +[#129475]: https://github.com/home-assistant/core/pull/129475 +[#129476]: https://github.com/home-assistant/core/pull/129476 +[#129477]: https://github.com/home-assistant/core/pull/129477 +[#129478]: https://github.com/home-assistant/core/pull/129478 +[#129481]: https://github.com/home-assistant/core/pull/129481 +[#129484]: https://github.com/home-assistant/core/pull/129484 +[#129486]: https://github.com/home-assistant/core/pull/129486 +[#129488]: https://github.com/home-assistant/core/pull/129488 +[#129489]: https://github.com/home-assistant/core/pull/129489 +[#129490]: https://github.com/home-assistant/core/pull/129490 +[#129493]: https://github.com/home-assistant/core/pull/129493 +[#129496]: https://github.com/home-assistant/core/pull/129496 +[#129497]: https://github.com/home-assistant/core/pull/129497 +[#129498]: https://github.com/home-assistant/core/pull/129498 +[#129499]: https://github.com/home-assistant/core/pull/129499 +[#129501]: https://github.com/home-assistant/core/pull/129501 +[#129502]: https://github.com/home-assistant/core/pull/129502 +[#129505]: https://github.com/home-assistant/core/pull/129505 +[#129508]: https://github.com/home-assistant/core/pull/129508 +[#129510]: https://github.com/home-assistant/core/pull/129510 +[#129513]: https://github.com/home-assistant/core/pull/129513 +[#129519]: https://github.com/home-assistant/core/pull/129519 +[#129527]: https://github.com/home-assistant/core/pull/129527 +[#129528]: https://github.com/home-assistant/core/pull/129528 +[#129529]: https://github.com/home-assistant/core/pull/129529 +[#129535]: https://github.com/home-assistant/core/pull/129535 +[#129537]: https://github.com/home-assistant/core/pull/129537 +[#129539]: https://github.com/home-assistant/core/pull/129539 +[#129546]: https://github.com/home-assistant/core/pull/129546 +[#129559]: https://github.com/home-assistant/core/pull/129559 +[#129565]: https://github.com/home-assistant/core/pull/129565 +[#129569]: https://github.com/home-assistant/core/pull/129569 +[#129572]: https://github.com/home-assistant/core/pull/129572 +[#129573]: https://github.com/home-assistant/core/pull/129573 +[#129574]: https://github.com/home-assistant/core/pull/129574 +[#129575]: https://github.com/home-assistant/core/pull/129575 +[#129576]: https://github.com/home-assistant/core/pull/129576 +[#129583]: https://github.com/home-assistant/core/pull/129583 +[#129586]: https://github.com/home-assistant/core/pull/129586 +[#129587]: https://github.com/home-assistant/core/pull/129587 +[#129591]: https://github.com/home-assistant/core/pull/129591 +[#129592]: https://github.com/home-assistant/core/pull/129592 +[#129607]: https://github.com/home-assistant/core/pull/129607 +[#129627]: https://github.com/home-assistant/core/pull/129627 +[#129639]: https://github.com/home-assistant/core/pull/129639 +[#129640]: https://github.com/home-assistant/core/pull/129640 +[#129643]: https://github.com/home-assistant/core/pull/129643 +[#129653]: https://github.com/home-assistant/core/pull/129653 +[#129657]: https://github.com/home-assistant/core/pull/129657 +[#129659]: https://github.com/home-assistant/core/pull/129659 +[#129670]: https://github.com/home-assistant/core/pull/129670 +[#129683]: https://github.com/home-assistant/core/pull/129683 +[#129684]: https://github.com/home-assistant/core/pull/129684 +[#129701]: https://github.com/home-assistant/core/pull/129701 +[#129702]: https://github.com/home-assistant/core/pull/129702 +[#129709]: https://github.com/home-assistant/core/pull/129709 +[#129711]: https://github.com/home-assistant/core/pull/129711 +[#129713]: https://github.com/home-assistant/core/pull/129713 +[#129715]: https://github.com/home-assistant/core/pull/129715 +[#129716]: https://github.com/home-assistant/core/pull/129716 +[#129729]: https://github.com/home-assistant/core/pull/129729 +[#129743]: https://github.com/home-assistant/core/pull/129743 +[#129755]: https://github.com/home-assistant/core/pull/129755 +[#129769]: https://github.com/home-assistant/core/pull/129769 +[#129793]: https://github.com/home-assistant/core/pull/129793 +[#129794]: https://github.com/home-assistant/core/pull/129794 +[#129797]: https://github.com/home-assistant/core/pull/129797 +[#129799]: https://github.com/home-assistant/core/pull/129799 +[#129801]: https://github.com/home-assistant/core/pull/129801 +[#129803]: https://github.com/home-assistant/core/pull/129803 +[#129804]: https://github.com/home-assistant/core/pull/129804 +[#129805]: https://github.com/home-assistant/core/pull/129805 +[#129807]: https://github.com/home-assistant/core/pull/129807 +[#129808]: https://github.com/home-assistant/core/pull/129808 +[#129810]: https://github.com/home-assistant/core/pull/129810 +[#129812]: https://github.com/home-assistant/core/pull/129812 +[#129817]: https://github.com/home-assistant/core/pull/129817 +[#129819]: https://github.com/home-assistant/core/pull/129819 +[#129824]: https://github.com/home-assistant/core/pull/129824 +[#129829]: https://github.com/home-assistant/core/pull/129829 +[#129830]: https://github.com/home-assistant/core/pull/129830 +[#129831]: https://github.com/home-assistant/core/pull/129831 +[#129832]: https://github.com/home-assistant/core/pull/129832 +[#129833]: https://github.com/home-assistant/core/pull/129833 +[#129834]: https://github.com/home-assistant/core/pull/129834 +[#129838]: https://github.com/home-assistant/core/pull/129838 +[#129840]: https://github.com/home-assistant/core/pull/129840 +[#129841]: https://github.com/home-assistant/core/pull/129841 +[#129844]: https://github.com/home-assistant/core/pull/129844 +[#129846]: https://github.com/home-assistant/core/pull/129846 +[#129847]: https://github.com/home-assistant/core/pull/129847 +[#129850]: https://github.com/home-assistant/core/pull/129850 +[#129851]: https://github.com/home-assistant/core/pull/129851 +[#129852]: https://github.com/home-assistant/core/pull/129852 +[#129856]: https://github.com/home-assistant/core/pull/129856 +[#129878]: https://github.com/home-assistant/core/pull/129878 +[#129881]: https://github.com/home-assistant/core/pull/129881 +[#129882]: https://github.com/home-assistant/core/pull/129882 +[#129886]: https://github.com/home-assistant/core/pull/129886 +[#129894]: https://github.com/home-assistant/core/pull/129894 +[#129898]: https://github.com/home-assistant/core/pull/129898 +[#129899]: https://github.com/home-assistant/core/pull/129899 +[#129901]: https://github.com/home-assistant/core/pull/129901 +[#129902]: https://github.com/home-assistant/core/pull/129902 +[#129904]: https://github.com/home-assistant/core/pull/129904 +[#129906]: https://github.com/home-assistant/core/pull/129906 +[#129909]: https://github.com/home-assistant/core/pull/129909 +[#129910]: https://github.com/home-assistant/core/pull/129910 +[#129912]: https://github.com/home-assistant/core/pull/129912 +[#129914]: https://github.com/home-assistant/core/pull/129914 +[#129921]: https://github.com/home-assistant/core/pull/129921 +[#129925]: https://github.com/home-assistant/core/pull/129925 +[#129931]: https://github.com/home-assistant/core/pull/129931 +[#129938]: https://github.com/home-assistant/core/pull/129938 +[#129939]: https://github.com/home-assistant/core/pull/129939 +[#129941]: https://github.com/home-assistant/core/pull/129941 +[#129942]: https://github.com/home-assistant/core/pull/129942 +[#129947]: https://github.com/home-assistant/core/pull/129947 +[#129948]: https://github.com/home-assistant/core/pull/129948 +[#129952]: https://github.com/home-assistant/core/pull/129952 +[#129953]: https://github.com/home-assistant/core/pull/129953 +[#129955]: https://github.com/home-assistant/core/pull/129955 +[#129960]: https://github.com/home-assistant/core/pull/129960 +[#129965]: https://github.com/home-assistant/core/pull/129965 +[@10100011]: https://github.com/10100011 +[@AlCalzone]: https://github.com/AlCalzone +[@AuroreVgn]: https://github.com/AuroreVgn +[@Balake]: https://github.com/Balake +[@Betacart]: https://github.com/Betacart +[@Bre77]: https://github.com/Bre77 +[@CFenner]: https://github.com/CFenner +[@DCSBL]: https://github.com/DCSBL +[@DJF3]: https://github.com/DJF3 +[@Danielhiversen]: https://github.com/Danielhiversen +[@Diegorro98]: https://github.com/Diegorro98 +[@DurandAN]: https://github.com/DurandAN +[@Galorhallen]: https://github.com/Galorhallen +[@Honza-m]: https://github.com/Honza-m +[@IceBotYT]: https://github.com/IceBotYT +[@JEMcats]: https://github.com/JEMcats +[@JosephAbbey]: https://github.com/JosephAbbey +[@KC3BZU]: https://github.com/KC3BZU +[@KunalAggarwal]: https://github.com/KunalAggarwal +[@LG-ThinQ-Integration]: https://github.com/LG-ThinQ-Integration +[@LaStrada]: https://github.com/LaStrada +[@Lash-L]: https://github.com/Lash-L +[@Lektrico]: https://github.com/Lektrico +[@Lesekater]: https://github.com/Lesekater +[@LouisChrist]: https://github.com/LouisChrist +[@LunaBytesBack]: https://github.com/LunaBytesBack +[@MarkGodwin]: https://github.com/MarkGodwin +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MichScha]: https://github.com/MichScha +[@MindFreeze]: https://github.com/MindFreeze +[@Nebula83]: https://github.com/Nebula83 +[@NickM-27]: https://github.com/NickM-27 +[@Noltari]: https://github.com/Noltari +[@Passific]: https://github.com/Passific +[@Petro31]: https://github.com/Petro31 +[@Shulyaka]: https://github.com/Shulyaka +[@Shutgun]: https://github.com/Shutgun +[@StevenLooman]: https://github.com/StevenLooman +[@TheJulianJES]: https://github.com/TheJulianJES +[@Thomas55555]: https://github.com/Thomas55555 +[@Vendetta01]: https://github.com/Vendetta01 +[@Xeio]: https://github.com/Xeio +[@Xitee1]: https://github.com/Xitee1 +[@YogevBokobza]: https://github.com/YogevBokobza +[@agners]: https://github.com/agners +[@agoode]: https://github.com/agoode +[@aindriu80]: https://github.com/aindriu80 +[@alengwenus]: https://github.com/alengwenus +[@alexandrecuer]: https://github.com/alexandrecuer +[@alexkn]: https://github.com/alexkn +[@alistair23]: https://github.com/alistair23 +[@allenporter]: https://github.com/allenporter +[@andrew-codechimp]: https://github.com/andrew-codechimp +[@arturpragacz]: https://github.com/arturpragacz +[@ashionky]: https://github.com/ashionky +[@astrandb]: https://github.com/astrandb +[@autinerd]: https://github.com/autinerd +[@balloob]: https://github.com/balloob +[@barryvdh]: https://github.com/barryvdh +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@bluemoehre]: https://github.com/bluemoehre +[@boergegrunicke]: https://github.com/boergegrunicke +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@brg468]: https://github.com/brg468 +[@bru73f0rc3]: https://github.com/bru73f0rc3 +[@catsmanac]: https://github.com/catsmanac +[@cdce8p]: https://github.com/cdce8p +[@cdheiser]: https://github.com/cdheiser +[@cereal2nd]: https://github.com/cereal2nd +[@chemelli74]: https://github.com/chemelli74 +[@crevetor]: https://github.com/crevetor +[@crug80]: https://github.com/crug80 +[@cryptk]: https://github.com/cryptk +[@dgomes]: https://github.com/dgomes +[@dmulcahey]: https://github.com/dmulcahey +[@dontinelli]: https://github.com/dontinelli +[@dotvav]: https://github.com/dotvav +[@eclair4151]: https://github.com/eclair4151 +[@edenhaus]: https://github.com/edenhaus +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@erwindouna]: https://github.com/erwindouna +[@feisley]: https://github.com/feisley +[@frenck]: https://github.com/frenck +[@functionpointer]: https://github.com/functionpointer +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@gwww]: https://github.com/gwww +[@hahn-th]: https://github.com/hahn-th +[@hanskroner]: https://github.com/hanskroner +[@hopkins-tk]: https://github.com/hopkins-tk +[@ianhattendorf]: https://github.com/ianhattendorf +[@iz4c]: https://github.com/iz4c +[@j-a-n]: https://github.com/j-a-n +[@j4n-e4t]: https://github.com/j4n-e4t +[@jb101010-2]: https://github.com/jb101010-2 +[@jbergler]: https://github.com/jbergler +[@jbouwh]: https://github.com/jbouwh +[@jeeftor]: https://github.com/jeeftor +[@jesserockz]: https://github.com/jesserockz +[@jkaflik]: https://github.com/jkaflik +[@joelhawksley]: https://github.com/joelhawksley +[@johangus65]: https://github.com/johangus65 +[@joostlek]: https://github.com/joostlek +[@jozefKruszynski]: https://github.com/jozefKruszynski +[@jpbede]: https://github.com/jpbede +[@jzucker2]: https://github.com/jzucker2 +[@karwosts]: https://github.com/karwosts +[@kaydenvanrijn]: https://github.com/kaydenvanrijn +[@kbickar]: https://github.com/kbickar +[@kevdliu]: https://github.com/kevdliu +[@kingal123]: https://github.com/kingal123 +[@kingy444]: https://github.com/kingy444 +[@klaasnicolaas]: https://github.com/klaasnicolaas +[@klejejs]: https://github.com/klejejs +[@knyar]: https://github.com/knyar +[@liudger]: https://github.com/liudger +[@luca-angemi]: https://github.com/luca-angemi +[@ludeeus]: https://github.com/ludeeus +[@marcelveldt]: https://github.com/marcelveldt +[@marcjay]: https://github.com/marcjay +[@marcodutto]: https://github.com/marcodutto +[@mback2k]: https://github.com/mback2k +[@mdegat01]: https://github.com/mdegat01 +[@mgrandi]: https://github.com/mgrandi +[@miaucl]: https://github.com/miaucl +[@mib1185]: https://github.com/mib1185 +[@mikey0000]: https://github.com/mikey0000 +[@miterion]: https://github.com/miterion +[@mj23000]: https://github.com/mj23000 +[@mrdarrengriffin]: https://github.com/mrdarrengriffin +[@mxr]: https://github.com/mxr +[@myztillx]: https://github.com/myztillx +[@naruxde]: https://github.com/naruxde +[@natekspencer]: https://github.com/natekspencer +[@nicoalonsop]: https://github.com/nicoalonsop +[@noahhusby]: https://github.com/noahhusby +[@ol-iver]: https://github.com/ol-iver +[@olafz]: https://github.com/olafz +[@oliverwoodings]: https://github.com/oliverwoodings +[@ollo69]: https://github.com/ollo69 +[@osohotwateriot]: https://github.com/osohotwateriot +[@owenvoke]: https://github.com/owenvoke +[@peteS-UK]: https://github.com/peteS-UK +[@piitaya]: https://github.com/piitaya +[@polgarc]: https://github.com/polgarc +[@pssc]: https://github.com/pssc +[@puddly]: https://github.com/puddly +[@pvizeli]: https://github.com/pvizeli +[@qwell]: https://github.com/qwell +[@rahulsamant37]: https://github.com/rahulsamant37 +[@rajlaud]: https://github.com/rajlaud +[@raphaeleduardo42]: https://github.com/raphaeleduardo42 +[@rappenze]: https://github.com/rappenze +[@raulcodes]: https://github.com/raulcodes +[@rcloran]: https://github.com/rcloran +[@rikroe]: https://github.com/rikroe +[@rubenbe]: https://github.com/rubenbe +[@rytilahti]: https://github.com/rytilahti +[@scop]: https://github.com/scop +[@sdb9696]: https://github.com/sdb9696 +[@silamon]: https://github.com/silamon +[@skynet01]: https://github.com/skynet01 +[@srescio]: https://github.com/srescio +[@starkillerOG]: https://github.com/starkillerOG +[@strugee]: https://github.com/strugee +[@swoga]: https://github.com/swoga +[@synesthesiam]: https://github.com/synesthesiam +[@tetele]: https://github.com/tetele +[@thecode]: https://github.com/thecode +[@tl-sl]: https://github.com/tl-sl +[@tleydxdy]: https://github.com/tleydxdy +[@tr4nt0r]: https://github.com/tr4nt0r +[@tronikos]: https://github.com/tronikos +[@tsvi]: https://github.com/tsvi +[@unfug-at-github]: https://github.com/unfug-at-github +[@wendevlin]: https://github.com/wendevlin +[@zweckj]: https://github.com/zweckj +[@zxdavb]: https://github.com/zxdavb diff --git a/source/dashboards/actions.markdown b/source/dashboards/actions.markdown index 9fbcac53d77..6b828e408dc 100644 --- a/source/dashboards/actions.markdown +++ b/source/dashboards/actions.markdown @@ -101,6 +101,11 @@ tap_action: description: "If supported, listen for voice commands when opening the assist dialog and the `action` is defined as `assist`" type: boolean default: none + entity: + required: false + description: "Overrides the default entity to show when the `action` is defined as `more-info`" + type: string + default: none {% endconfiguration %} ## Hold action @@ -168,6 +173,11 @@ hold_action: description: "If supported, listen for voice commands when opening the assist dialog and the `action` is defined as `assist`" type: boolean default: none + entity: + required: false + description: "Overrides the default entity to show when the `action` is defined as `more-info`" + type: string + default: none {% endconfiguration %} ## Double tap action @@ -235,6 +245,11 @@ double_tap_action: description: "If supported, listen for voice commands when opening the assist dialog and the `action` is defined as `assist`" type: boolean default: none + entity: + required: false + description: "Overrides the default entity to show when the `action` is defined as `more-info`" + type: string + default: none {% endconfiguration %} ## Options for confirmation diff --git a/source/dashboards/cards.markdown b/source/dashboards/cards.markdown index f4b13e092ae..77ff05d27eb 100644 --- a/source/dashboards/cards.markdown +++ b/source/dashboards/cards.markdown @@ -101,12 +101,13 @@ You can choose to show or hide certain cards or [badges](/dashboards/badges/) ba In [sections view](/dashboards/sections/), you can resize cards. Follow these steps: 1. On the **Layout** tab, move the sliders to adjust the card size. - - Don't see a **Layout** tab? + ![Screenshot of the Layout tab in the card dialog](/images/dashboards/card_resize.png) + - **Troubleshooting**: Don't see a **Layout** tab? - It is not available inside nested cards: vertical stack, horizontal stack, and grid card - It is not available on the picture elements card. - ![Screenshot of the Layout tab in the card dialog](/images/dashboards/card_resize.png) - -2. Select **Save**. +2. **Precise mode** gives you a finer grid to size your card. The last row was done using precise mode. + ![Screenshot of a section using precise mode for some cards](/images/dashboards/precise-mode-example.png) +3. Select **Save**. ## Revert resizing of a card diff --git a/source/dashboards/index.markdown b/source/dashboards/index.markdown index b0248d37ab8..01c9bb3cf30 100644 --- a/source/dashboards/index.markdown +++ b/source/dashboards/index.markdown @@ -26,8 +26,8 @@ You can customize your dashboard using various options: - Use custom cards from our amazing community.

-Screencast showing how to edit a dashboard customize a vertical stack card -Screencast showing how to edit a dashboard and customize a vertical stack card. + Screencast showing how to edit a dashboard in section view and how to rearrange cards + Screencast showing how to edit a dashboard in section view and how to rearrange cards

## Explore the interactive demo dashboard diff --git a/source/dashboards/views.markdown b/source/dashboards/views.markdown index ed976b66cf7..27362646c87 100644 --- a/source/dashboards/views.markdown +++ b/source/dashboards/views.markdown @@ -34,12 +34,10 @@ Views control the layout. There are four different view types: +- **Sections (default)**: Arranges cards in a grid system and lets you group them in sections. +- **Masonry**: Arranges cards in columns based on their card size. - **Panel**: Displays one card in full width. For example a map or an image. - **Sidebar**: Arranges cards in 2 columns, a wide one and a smaller one on the right. -- **Masonry (default)**: Arranges cards in columns based on their card size. -- **Sections (experimental)**: Arranges cards in a grid system and lets you group them in sections. - -It is currently not possible to migrate your dashboard from one view type into another. For example, if you have a dashboard in masonry view, and want it in sections view, you need to create a new view. ## Adding a view to a dashboard @@ -57,8 +55,9 @@ It is currently not possible to migrate your dashboard from one view type into a - If you want to use a previously defined theme, select the [theme](/integrations/frontend/#themes). - Select the [view type](#view-type). - If this view is meant to be used as a [subview](#subview) only, enable the **Subview** toggle. + - If you are using **Sections view**, choose the number of columns you want to use, and, if you want to let the system fill gaps between cards, enable **Dense section placement.**. - ![The create new view configuration dialog](/images/dashboards/dashboard_view_configuration_01.png) + ![The create new view configuration dialog](/images/dashboards/dashboard_view_configuration_03.png) 4. To use a background image, on the **Background** tab, select an image. - **Upload picture** lets you pick an image from the system used to show your Home Assistant UI. @@ -69,6 +68,30 @@ It is currently not possible to migrate your dashboard from one view type into a - Sidebar and panel views do not support badges. 6. By default, the new section is visible to all users. On the **Visibility** tab, you can disable the view for users. +## Migrating a view into a sections view + +If you have already defined a view but you would now like to have it in a section view type, you can migrate that content. For example, you can migrate from a masonry to a sections view. Currently, you cannot migrate a sections view type into another view type. + +Migrating does not affect the current view. It will stay as is, and a new, additional view is created. + +To migrate a view into a sections view type, follow these steps: + +1. Open the view you want to migrate, and go into edit mode. +2. In the configuration dialog, select the new view type. +3. If the new view type offers additional settings, define those settings. + - For more information on those settings, refer to the documentation of that view type. +4. In the top-right corner, select **Convert**. + - **Result**: A new, additional view is created. + - Your current view will stay untouched. + - A new tab opens, and all your cards are imported to the new view. +5. In the **Imported cards** section, pick each of the cards, and drag them into the sections. + - To edit and customize the view, follow the steps in the [sections view](/dashboards/sections/) documentation. + + ![Move cards from imported cards section onto your dashboard](/images/dashboards/imported-cards.png) +6. To save your changes, select **Done**. + - **Result**: Your new dashboard is shown. + - If you have cards that were not yet integrated, you can still add them later. They are still available in the Edit mode, in the **Imported cards** section. + ## URL of a view You can link to one view from a card in another view when using cards that support navigation (`navigation_path`). The string supplied here will be appended to the string `/lovelace/` to create the path to the view. Do not use special characters in paths. Do not begin a path with a number. This will cause the parser to read your path as a view index. @@ -139,9 +162,9 @@ user: type: string {% endconfiguration %} -## View type +## Changing the view type in YAML -You can change the layout of a view by using a different view type. The default is [`masonry`](/dashboards/masonry). +You can change the layout of a view in YAML by using a different view type. The default is [`section`](/dashboards/section). ### Example diff --git a/source/getting-started/integration.markdown b/source/getting-started/integration.markdown index b6ec8dd93ec..4753209a323 100644 --- a/source/getting-started/integration.markdown +++ b/source/getting-started/integration.markdown @@ -17,7 +17,7 @@ This tutorial assumes that you have [installed Home Assistant](/installation/) a ![Screenshot of the integrations page, with discovered devices](/images/getting-started/integrations_page_discovered.png) 2. If there are any devices discovered for you, you can add them now. - - Under **Discovered**, on the integration, select **Configure**. + - Under **Discovered**, on the integration, select **Add**. - Follow the steps in the UI if additional configuration is required. - If no devices were discovered, don't worry, we will add an integration in the next step. 3. In the bottom-right corner, select **Add integration**. diff --git a/source/getting-started/onboarding_dashboard.markdown b/source/getting-started/onboarding_dashboard.markdown index 143fb09fd4f..3368dcaa0f3 100644 --- a/source/getting-started/onboarding_dashboard.markdown +++ b/source/getting-started/onboarding_dashboard.markdown @@ -11,11 +11,18 @@ The screenshot shows an **Overview** dashboard with many [cards](/dashboards/car ### Views -The icons in the blue menu bar on top each represent a different tab. Each tab contains a [view](/dashboards/views/). +The following screenshot shows a fully populated dashboard in [masonry view](/dashboards/masonry/) layout. The icons in the blue menu bar on top each represent a different tab. Each tab contains a [view](/dashboards/views/).

-Screenshot of a populated Overview dashboard -Screenshot of a populated Overview dashboard with many devices. +Screenshot of a populated Overview dashboard in masonry view +Screenshot of a populated Overview dashboard in masonry view layout. +

+ +The following screenshot shows a fully populated dashboard in [sections view](/dashboards/sections/) layout. + +

+ A fully populated dashboard in Sections view layout + A fully populated dashboard in Sections view layout

### Multiple dashboards @@ -33,7 +40,7 @@ In the sidebar on the left, you see the names of different dashboards. Home Assi The **Overview** [dashboard](/dashboards/) is the first page you see after the [onboarding process](/getting-started/onboarding). -If you just onboarded, your dashboard will be nearly empty. It shows cards for devices that were detected automatically. Your dashboard may look quite different, depending on the devices that you have at home. +If you just onboarded, your dashboard will be nearly empty. It is using the [masonry view](/dashboards/masonry/) layout and shows cards for devices that were detected automatically. Your dashboard may look quite different, depending on the devices that you have at home.

Screenshot of the Overview dashboard with Bluetooth devices @@ -123,13 +130,16 @@ In the following steps, we will create a new dashboard and edit some card settin - When you are done, in the top right corner, select **Done**. 14. If you want to change any of the other cards, select the **Edit** button on the card. 15. Congratulations! You have completed your first dashboard customization. +16. While your dashboard is still small, this is a good moment to [migrate it into sections view](/dashboards/views/#migrating-a-view-into-a-sections-view). + - The sections view offers features such as drag and drop, customizing number and width of columns, and more heading options. + - To learn more, head over to the documentation on [section view](/dashboards/sections/). ## Learning more about dashboards If you want to learn more about dashboards, views, and cards, take a look at these topics: 1. Take a look at the [introduction to dashboards](/dashboards/) and learn about [multiple dashboards](/dashboards/dashboards). -2. Learn about the different [view types](/dashboards/views/). +2. Learn more about [view types](/dashboards/views/) 3. Learn how to [add cards](/dashboards/cards/#adding-cards-to-your-dashboard) to a view. ## Next step: integrations diff --git a/source/images/assist/esp32-discovered.png b/source/images/assist/esp32-discovered.png index 52767193ec0..819076f8106 100644 Binary files a/source/images/assist/esp32-discovered.png and b/source/images/assist/esp32-discovered.png differ diff --git a/source/images/assist/piper-whisper-install-new-02.png b/source/images/assist/piper-whisper-install-new-02.png index fb258c42117..3b168a3dec3 100644 Binary files a/source/images/assist/piper-whisper-install-new-02.png and b/source/images/assist/piper-whisper-install-new-02.png differ diff --git a/source/images/blog/2024-11/canadian-french-on-assist.png b/source/images/blog/2024-11/canadian-french-on-assist.png new file mode 100644 index 00000000000..817a6965abb Binary files /dev/null and b/source/images/blog/2024-11/canadian-french-on-assist.png differ diff --git a/source/images/blog/2024-11/dashboard-conversion.png b/source/images/blog/2024-11/dashboard-conversion.png new file mode 100644 index 00000000000..d1ec99635ea Binary files /dev/null and b/source/images/blog/2024-11/dashboard-conversion.png differ diff --git a/source/images/blog/2024-11/imported-cards.png b/source/images/blog/2024-11/imported-cards.png new file mode 100644 index 00000000000..4f402820d2b Binary files /dev/null and b/source/images/blog/2024-11/imported-cards.png differ diff --git a/source/images/blog/2024-11/precise-mode-example.png b/source/images/blog/2024-11/precise-mode-example.png new file mode 100644 index 00000000000..c2224d052ce Binary files /dev/null and b/source/images/blog/2024-11/precise-mode-example.png differ diff --git a/source/images/blog/2024-11/social.jpg b/source/images/blog/2024-11/social.jpg new file mode 100644 index 00000000000..6f7da603692 Binary files /dev/null and b/source/images/blog/2024-11/social.jpg differ diff --git a/source/images/blog/2024-11/streaming-live-logs.gif b/source/images/blog/2024-11/streaming-live-logs.gif new file mode 100644 index 00000000000..f054ddde8ff Binary files /dev/null and b/source/images/blog/2024-11/streaming-live-logs.gif differ diff --git a/source/images/blog/2024-11/webrtc-logo-horiz-retro.png b/source/images/blog/2024-11/webrtc-logo-horiz-retro.png new file mode 100644 index 00000000000..fef08510be7 Binary files /dev/null and b/source/images/blog/2024-11/webrtc-logo-horiz-retro.png differ diff --git a/source/images/dashboards/card_resize.png b/source/images/dashboards/card_resize.png index a9852b50e54..636bf7ef88e 100644 Binary files a/source/images/dashboards/card_resize.png and b/source/images/dashboards/card_resize.png differ diff --git a/source/images/dashboards/dashboard_view_configuration_01.png b/source/images/dashboards/dashboard_view_configuration_01.png deleted file mode 100644 index 0a23ff9a542..00000000000 Binary files a/source/images/dashboards/dashboard_view_configuration_01.png and /dev/null differ diff --git a/source/images/dashboards/dashboard_view_configuration_03.png b/source/images/dashboards/dashboard_view_configuration_03.png new file mode 100644 index 00000000000..eda874e19b2 Binary files /dev/null and b/source/images/dashboards/dashboard_view_configuration_03.png differ diff --git a/source/images/dashboards/imported-cards.png b/source/images/dashboards/imported-cards.png new file mode 100644 index 00000000000..ae0c2bae304 Binary files /dev/null and b/source/images/dashboards/imported-cards.png differ diff --git a/source/images/dashboards/precise-mode-example.png b/source/images/dashboards/precise-mode-example.png new file mode 100644 index 00000000000..c2224d052ce Binary files /dev/null and b/source/images/dashboards/precise-mode-example.png differ diff --git a/source/images/getting-started/integrations_page_discovered.png b/source/images/getting-started/integrations_page_discovered.png index 557c2efe34e..5da363d9af6 100644 Binary files a/source/images/getting-started/integrations_page_discovered.png and b/source/images/getting-started/integrations_page_discovered.png differ diff --git a/source/images/integrations/lcn/lcn_create_device.png b/source/images/integrations/lcn/lcn_create_device.png new file mode 100644 index 00000000000..a329ca2be5f Binary files /dev/null and b/source/images/integrations/lcn/lcn_create_device.png differ diff --git a/source/images/integrations/lcn/lcn_create_entity.png b/source/images/integrations/lcn/lcn_create_entity.png new file mode 100644 index 00000000000..c8f3430b0eb Binary files /dev/null and b/source/images/integrations/lcn/lcn_create_entity.png differ diff --git a/source/images/integrations/lcn/lcn_device_page.png b/source/images/integrations/lcn/lcn_device_page.png new file mode 100644 index 00000000000..8bfcd271ea0 Binary files /dev/null and b/source/images/integrations/lcn/lcn_device_page.png differ diff --git a/source/images/integrations/lcn/lcn_entities_page.png b/source/images/integrations/lcn/lcn_entities_page.png new file mode 100644 index 00000000000..e5c123e872c Binary files /dev/null and b/source/images/integrations/lcn/lcn_entities_page.png differ diff --git a/source/images/integrations/lcn/lcn_integration_configuration.png b/source/images/integrations/lcn/lcn_integration_configuration.png new file mode 100644 index 00000000000..a2185fef54a Binary files /dev/null and b/source/images/integrations/lcn/lcn_integration_configuration.png differ diff --git a/source/voice_control/troubleshooting_the_s3_box.markdown b/source/voice_control/troubleshooting_the_s3_box.markdown index 470be2efe39..a4aea358af0 100644 --- a/source/voice_control/troubleshooting_the_s3_box.markdown +++ b/source/voice_control/troubleshooting_the_s3_box.markdown @@ -75,7 +75,7 @@ This message indicates that the device could connect to the Wi-Fi, but is unable 2. Make sure your device is on the same network as Home Assistant. - If you have a complex network setup with VLAN, make sure it is in the same VLAN. 3. Go to {% my integrations title="**Settings** > **Devices & Services**" %}. - - If the device is shown as **Discovered**, select **Configure**. + - If the device is shown as **Discovered**, select **Add**. ![ESP32-S3-BOX-3 open config file](/images/assist/esp32-discovered.png) - If it was not discovered, select [**Add integration** > **ESPHome**](https://my.home-assistant.io/redirect/config_flow_start/?domain=esphome). 4. If you see the screen below, but the ESP32-S3-BOX-3 is not listed, select **Setup another instance of ESPHome**. diff --git a/source/voice_control/voice_remote_local_assistant.markdown b/source/voice_control/voice_remote_local_assistant.markdown index 7bf74c3677d..e9008b6161a 100644 --- a/source/voice_control/voice_remote_local_assistant.markdown +++ b/source/voice_control/voice_remote_local_assistant.markdown @@ -35,7 +35,7 @@ For the quickest way to get your local Assist pipeline started, follow these ste - Once the add-ons are started, head over to the integrations under {% my integrations title="**Settings** > **Devices & Services**" %}. - You should now see Piper and Whisper being discovered by the [Wyoming integration](/integrations/wyoming/). ![Whisper and Piper integrations](/images/assist/piper-whisper-install-new-02.png) - - For each integration, select **Configure**. + - For each integration, select **Add**. - Once the setup is complete, you should see both Piper and Whisper (and, optionally, also openWakeword) in one integration. ![Whisper and Piper integration](/images/assist/piper-whisper-install-new-03.png)