From 4618b5c0e2a8373738c7f6dc0ceb5ab305e4b71e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 27 Mar 2024 18:38:02 +0100 Subject: [PATCH 01/84] 2024.4: Beta release notes --- _config.yml | 6 +- .../_posts/2024-04-03-release-20244.markdown | 588 ++++++++++++++++++ source/changelogs/core-2024.4.markdown | 13 + source/images/blog/2024-04/social.png | Bin 0 -> 167414 bytes 4 files changed, 604 insertions(+), 3 deletions(-) create mode 100644 source/_posts/2024-04-03-release-20244.markdown create mode 100644 source/changelogs/core-2024.4.markdown create mode 100644 source/images/blog/2024-04/social.png diff --git a/_config.yml b/_config.yml index 8279d13f2ed..7ebf29f8949 100644 --- a/_config.yml +++ b/_config.yml @@ -109,9 +109,9 @@ social: # Home Assistant release details current_major_version: 2024 -current_minor_version: 3 -current_patch_version: 3 -date_released: 2024-03-22 +current_minor_version: 4 +current_patch_version: 0 +date_released: 2024-04-03 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2024-04-03-release-20244.markdown b/source/_posts/2024-04-03-release-20244.markdown new file mode 100644 index 00000000000..07d8818bb22 --- /dev/null +++ b/source/_posts/2024-04-03-release-20244.markdown @@ -0,0 +1,588 @@ +--- +layout: post +title: "2024.4 Beta: Organize all the things!" +description: "The beta release notes for Home Assistant 2024.4" +date: 2024-03-27 00:00:00 +date_formatted: "April 3, 2024" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2024-04/social.png +--- + + + + + +These are the beta release notes for Home Assistant Core 2024.4 (and is thus a +work in progress). + +If you encounter any issues with the beta release, please report them on GitHub: + +- Issues with integrations, automations and such (Core related):
+ +- Issues with the frontend/UI/dashboards:
+ +- Issues with the documentation:
+ + +Please be sure to include the beta version you are running in the issue +version field (not title), so we can classify your issue correctly. + +Issues introduced in the beta are processed with priority. + +--- + + + +Home Assistant Core 2024.4! 🎉 + +Thanks for helping out testing the beta! ❤️ + +Enjoy the (beta) release! + +../Frenck + + + +- [Organizing your Home Assistant](#organizing-your-home-assistant) +- [Improved user interface for tables](#improved-user-interface-for-tables) +- [Floors of your home](#floors-of-your-home) +- [Label anything](#label-anything) +- [Organize using categories](#organize-using-categories) +- [Map dashboard](#map-dashboard) +- [Webpage dashboard](#webpage-dashboard) +- [Define the columns in the section view](#define-the-columns-in-the-section-view) +- [Adding matter devices from other controllers](#adding-matter-devices-from-other-controllers) +- [Lock behavior improvements](#lock-behavior-improvements) +- [Even more performance!](#even-more-performance) +- [Other noteworthy changes](#other-noteworthy-changes) +- [New integrations](#new-integrations) +- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui) +- [Need help? Join the community!](#need-help-join-the-community) +- [Backward-incompatible changes](#backward-incompatible-changes) +- [Farewell to the following](#farewell-to-the-following) +- [All changes](#all-changes) + +Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=Q1yHfqsVidw) +3 April 2024, at 20:00 GMT / 12:00 PST / 21:00 CEST! + + + +## Organizing your Home Assistant + +By far, the most requested feature in Home Assistant history would be: +[_"Grouping Automations on frontend for organization"_](https://community.home-assistant.io/t/grouping-automations-on-frontend-for-organization/102771). + +We hear you! And today, in this release, we are going to give you tools to +organize your Home Assistant setup. We want to make it easier for everyone, not +just to organize, but also to view and find the things you need. + +However, we took it a few (well many) steps further than just grouping +automations. We are introducing 3 new organization structures to Home Assistant: + +**[Floors](#floors)**, **[Labels](#labels)**, and **[Categories](#categories)**. + +We'll dive into each of these in a moment. First, let's talk about the brand +new user interface for tables. + +## Improved user interface for tables + +Adding more ways to organize your Home Assistant is great! But being able to +easily view, filter and navigate information is just as important. To achieve +this, we have re-designed ALL the tables in Home Assistant. + +Each table has a search bar, allowing you to quickly find what you are +looking for, can be sorted by any column, and has a new look and feel. + +Tables now have the possibility to group rows, by for example, their entity +state, and can be filtered! The filters are very powerful and allow you to +only show the rows you are interested in, you could for example filter on +areas, but also on the new organization structures we are introducing today: +floors, labels, and categories. + +![CleanShot 2024-03-27 at 16 01 20](https://github.com/home-assistant/frontend/assets/5662298/3aed32c6-dcad-4474-9bbd-97e75e4f98cf) + +## Floors of your home + +Let's talk about the new organization structures, starting with **floors**. + +Currently, Home Assistant has {% term areas %}. Areas can be used to group your +devices per living space in your home (like the living room or kitchen). But +if you look at your home, you might have multiple floors with its own areas. + +This is where **floors** come in. Floors are a new way to organize your areas +per level of floors in your home. The better Home Assistant known your home, +and how it is structured, the better it can help you. + + + +You can use floors in your automations and script as a target for your +actions. For example, you can turn off all the lights on the downstairs floor +when you go to bed. For our power users, you can even use floors in your +templates to create more advanced automations. + +## Label anything + +Floors and areas are great to represent your actual home, but what if you +have different needs? This is where **labels** 🏷️ come in! + +Labels is an organization structure that is completely up to you. You can +make as many labels with any naming structure your want and assign them to +basically anything in Home Assistant. You assign labels to area, devices, +entities, automations, scripts, helpers, you name it! You can even assign +multiple labels to the same thing. + +![CleanShot 2024-03-27 at 08 46 10@2x](https://github.com/home-assistant/frontend/assets/5662298/582b75af-7352-4241-8bad-3a39873c99c6) + +Just like with floors, you can use labels in your automations and scripts as +a target for your actions. This gives you a lot of flexibility, not just in +organizing your Home Assistant, but also in automating your home! 🤯 + +For example, you could create a label "🎄 Christmas" to label all your +Christmas decorations during the holiday season. You can then use this label +automate all of those decorations at once or to filter them in the new tables. + +More examples? You could create a label "🔒 Security" to label and control all +your security-related devices and automations. Or, "🛌 Bedrooms" to label +all your bedroom areas and control all the devices in those areas at once. + +Do you have solar panels or home battery? Create a label "⚡️ Heavy Energy Usage" +to label devices that consume a lot of energy, you could maybe switch them +off when there is not enough battery or solar energy available. + +You decide how to use labels, and the possibilities are endless! And for our +power users, you guessed it, you can use labels in your templates. + +## Organize using categories + +Last but not least, we are introducing **categories**. Categories can be used +to group things in for organization purposes and are specific for a certain +dashboard in Home Assistant. + +For example, you can create as many categories as you want on the automations +dashboards, and group your automations in those categories. You can then view +your automations grouped by those categories, or filter them by those categories. + + + +As these categories are unique for each dashboard, you can have different +sets of categories depending on the place you are organizing. This means +you can have different categories on the automations dashboard than on the +scene, scripts, or helpers dashboard. + +## Map dashboard + +Introducing a new dashboard type this release: The **map**! 🗺️ + +Now, you might think, "Hey, we already have a map in Home Assistant!" and you +are right. However, the map was an integration that was always there, and wasn't +providing the flexibility and features we wanted. + +With the introduction of the map dashboard, it mean you could add multiple map +dashboards with different entities and settings, but you can also just remove +the map if you don't want it. + + + +On upgrade Home Assistant will automatically migrate your existing map +integration to a map dashboard. + +## Webpage dashboard + +Another new dashboard type this release: The **webpage**! 🌐 + +The webpage dashboard allows you to add and embed a webpage to your dashboard. +This could be a webpage from the internet, but also a local webpage or a +webpage from a local server. + + + +This dashboard replaces the old iFrame panel (`iframe_panel`). If you have +existing panels configured in your YAML configuration, Home Assistant will +automatically migrate them to the new webpage dashboard on upgrade. + +## Define the columns in the section view + +Last release, we [introduced the section view](/blog/2024/03/06/release-20243/#a-new-experimental-sections-view) +with drag and drop support. We are absolutely thrilled to see how many of you +loved it! 🥰 + +Many thanks for all the feedback and suggestions! We are prioritizing them and +are working on making the section view even better in the upcoming releases. + +This release, based on your feedback, we have added the ability for you to +define the number of columns in the section view is using. + +![CleanShot 2024-03-20 at 12 47 17](https://github.com/home-assistant/frontend/assets/5878303/eb35c689-ce64-4a28-bfb0-8f4410677397) + +## Adding matter devices from other controllers + +We have improved the way you can add Matter devices from other controllers to +Home Assistant. When you add a Matter device to Home Assistant, it will now +ask you if you want to add a new Matter device, or if you want to add an +device that is already added to another controller (like Google or Apple Home). + +![CleanShot 2024-03-26 at 10 35 18](https://github.com/home-assistant/frontend/assets/5878303/16ff6c5f-e779-46b1-aafc-cfc9089a25b8) + +If you choose to add a device that is already added to another controller, +Home Assistant will guide you through the process of doing that! + +![CleanShot 2024-03-26 at 10 35 35](https://github.com/home-assistant/frontend/assets/5878303/cef33fde-7129-4431-aa5a-7ea0aa929976) + +## Lock behavior improvements + +Unlatching a lock? We want to make sure you don't accidentally open the door +when you miss-clicked the button while not at home. We have improved the +behavior of locks in our user interface to require you to confirm the action. + + + +## Even more performance! + +Remember how we wrote last release that [Home Assistant now boots twice as fast](/blog/2024/03/06/release-20243/#home-assistant-boots-twice-as-fast)? +Well, [@bdraco] wasn't done yet. If you thought that was fast, you are in for +a treat! 🚀 The difference is, yet again, very noticable. + +Besides streamlining what is loaded when at startup (and doing less loading), +we have also adjusted the startup time tracking. It used to be that 1 buggy +integration could push other integrations to be slow too, that should no +longer be the case, making this a more accurate representation of the actual +startup time. + +[@bdraco]: https://github.com/bdraco + +## Other noteworthy changes + +There are many more improvements in this release; here are some of the other +noteworthy changes this release: + +- [@karwosts] has made some improvements to your Home Assistant user profile + page, making it easier to navigate and find the settings you are looking for. + Nice work! +- The [HomeWizard Energy] integration now support the newest generation of + HomeWizard Energy Sockets! Thanks, [@DCSBL]! +- The information shown in the related items of the entity dialogs, but also + related information on device pages (like automations, scenes, scripts, etc.) + has been improved. It should now provide you with more relevant information. +- We are now able to ship new releases of Home Assistant in waaay less time. + Building and shipping Home Assistant for you, when down from 1.5-2 hours to + just 20 minutes! 🚀 Thanks [@edenhaus]! +- [Reolink] now supports PTZ patrol start/stop, package detection and controls + to play quick reply messages. Thanks, [@starkillerOG]! +- We have brand new template functions available to list all the issues in + your repairs dashboard. Thanks, [@RoboMagus]! + +[@RoboMagus]: https://github.com/RoboMagus +[@karwosts]: https://github.com/karwosts +[Reolink]: /integrations/reolink +[@starkillerOG]: https://github.com/starkillerOG +[HomeWizard Energy]: /integrations/homewizard +[@edenhaus]: https://github.com/edenhaus +[@DCSBL]: https://github.com/DCSBL + +_Note to remove: Processed possible noteworthy up to PR #114278_ + +Possible candites for noteworthy from Core: + +- Add new fields from UniFi Protect v3 ([@AngellusMortis] - [#113631]) +- Add person tracking for UniFi Protect ([@AngellusMortis] - [#111289]) +- Add UniFi Protect service to remove privacy zones ([@AngellusMortis] - [#111292]) +- Add reconfigure step to config flow ([@gjohansson-ST] - [#108794]) +- Add reconfigure step to holiday ([@gjohansson-ST] - [#114057]) +- Add reconfigure flow to Axis integration ([@Kane610] - [#114067]) +- Add Locks to Xiaomi-BLE ([@Ernst79] - [#111156]) +- Move Ping binary sensor attributes to sensor entities ([@jpbede] - [#112004]) +- Add support for System Bridge service responses ([@timmo001] - [#100055]) +- Add Beaufort to wind_speed ([@fwestenberg] - [#105795]) +- Add button to homeworks ([@emontnemery] - [#112269]) +- Add device_id to sentence trigger and external conversation APIs ([@synesthesiam] - [#113094]) +- Add Ring Intercom support ([@cosimomeli] - [#109819]) +- Add binary sensor platform for Husqvarna Automower ([@Thomas55555] - [#113248]) +- Add device_tracker platform for husqvarna_automower ([@Thomas55555] - [#111403]) +- Add select platform to Husqvarna Automower ([@Thomas55555] - [#113816]) +- Add additional sensors to Teslemetry ([@Bre77] - [#112555]) +- Add JVC Projector Sensors ([@msavazzi] - [#108949]) +- Add additional buttons to OctoPrint ([@Xitee1] - [#103139]) +- Add Shelly RGB/RGBW profiles support ([@thecode] - [#113808]) +- Add home battery storage entities for enphase_envoy ([@catsmanac] - [#114015]) + +Possible candites for noteworthy from Frontend: + +* `conditional` & `entity-filter`: add ability to filter through `entity_id` & add `entity-filter` `conditional`'s conditions (#19182) @Quentame + +## New integrations + +We welcome the following new integrations in this release: + +- **[Fyta]**, added by [@dontinelli]
+ Monitor your plants with Fyta, a smart plant sensor that measures light, temperature, humidity, and soil moisture. +- **[Motionblinds BLE]**, added by [@LennP]
+ Control your Bluetooth Low Energy Motionblinds motorized window coverings. +- **[Ollama]**, added by [@synesthesiam]
+ Ollama a fully local AI conversation platform that can be used to create custom voice assistants. + +[@dontinelli]: https://github.com/dontinelli +[@LennP]: https://github.com/LennP +[@synesthesiam]: https://github.com/synesthesiam +[Fyta]: /integrations/fyta +[Motionblinds BLE]: /integrations/motionblinds_ble +[Ollama]: /integrations/ollama_conversation + +This release also has new virtual integration. Virtual integrations are stubs +that are handled by other (existing) integrations to help with findability. +The following virtual integration have been added: + +- **[Sacramento Municipal Utility District (SMUD)]**, provided by [Opower] + +[Sacramento Municipal Utility District (SMUD)]: /integrations/smud +[Opower]: /integrations/opower + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- **[Lutron Homeworks]**, done by [@emontnemery] +- **[17TRACK]**, done by [@shaiu] +- **[Downloader]**, done by [@erwindouna] +- **[ROVA]**, done by [@GidoHakvoort] + +[@emontnemery]: https://github.com/emontnemery +[@erwindouna]: https://github.com/erwindouna +[@GidoHakvoort]: https://github.com/GidoHakvoort +[@shaiu]: https://github.com/shaiu +[17TRACK]: /integrations/seventeentrack +[Downloader]: /integrations/downloader +[Lutron Homeworks]: /integrations/homeworks +[ROVA]: /integrations/rova + +## 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 + +{% details "Python 3.11 support has been removed" %} + +Python 3.11 support has previously been deprecated and has now been removed. +Home Assistant now requires Python 3.12 to run. + +You don’t have to do anything if you are using the Home Assistant Operating +System, Home Assistant Container, or Home Assistant Supervised installation +method. In those cases, we handle this all for you. Your system has been +using Python 3.12 for quite some time already. + +([@frenck] - [#114220]) + +[@frenck]: https://github.com/frenck +[#114220]: https://github.com/home-assistant/core/pull/114220 + +{% enddetails %} + +{% details "AEMET OpenData" %} + +The AEMET OpenData integration previously created two entities for each +configured location, one entity which provided daily weather forecasts +and one entity which provided hourly forecasts. + +The AEMET OpenData integration now only creates a single entity which +provides both daily and hourly weather forecasts. + +([@gjohansson-ST] - [#110764]) ([documentation](/integrations/aemet)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#110764]: https://github.com/home-assistant/core/pull/110764 + +{% enddetails %} + +{% details "Dexcom" %} + +The trend sensor now uses values that are using snake_case instead of a space +in the middle: + +- `rising quickly` -> `rising_quickly` +- `rising slightly` -> `rising_slightly` +- `falling slightly` -> `falling_slightly` +- `falling quickly` -> `falling_quickly` + +Please update your automations and scripts accordingly. + +([@joostlek] - [#112423]) ([documentation](/integrations/dexcom)) + +[@joostlek]: https://github.com/joostlek +[#112423]: https://github.com/home-assistant/core/pull/112423 + +{% enddetails %} + +{% details "ecobee" %} + +The non-functional `away` preset mode has been replaced with the correct +`away_indefinitely` preset mode. + +If any automation or script was depending on the `away` preset mode, +it needs to be updated. + +([@alexsydell] - [#108636]) ([documentation](/integrations/ecobee)) + +[@alexsydell]: https://github.com/alexsydell +[#108636]: https://github.com/home-assistant/core/pull/108636 + +{% enddetails %} + +{% details "Environment Canada" %} + +The Environment Canada integration previously created two entities for each +configured location, one entity which provided daily weather forecasts and +one entity which provided hourly forecasts. + +The Environment Canada integration now only creates a single entity which +provides both daily and hourly weather forecasts. + +([@gjohansson-ST] - [#112447]) ([documentation](/integrations/environment_canada)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#112447]: https://github.com/home-assistant/core/pull/112447 + +{% enddetails %} + +{% details "National Weather Service (NWS)" %} + +The National Weather Service integration previously created two entities +for each configured location, one entity which provided daily weather forecasts +and one entity which provided hourly forecasts. + +The National Weather Service integration now only creates a single entity which +provides both daily and hourly weather forecasts. + +([@gjohansson-ST] - [#112503]) ([documentation](/integrations/nws)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#112503]: https://github.com/home-assistant/core/pull/112503 + +{% enddetails %} + +{% details "Met Éireann" %} + +The Met Éireann integration previously created two entities for each configured +location, one entity which provided daily weather forecasts and one entity which +provided hourly forecasts. + +The Met Éireann integration now only creates a single entity which provides +both daily and hourly weather forecasts. + +([@gjohansson-ST] - [#112449]) ([documentation](/integrations/met_eireann)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#112449]: https://github.com/home-assistant/core/pull/112449 + +{% enddetails %} + +{% details "Modbus" %} + +The Modbus integration do not allow a configuration with the device only +(no entities), this will create an issue, and the entry will not be loaded. + +For the special cases (like some custom_components) where it is wanted, +please add a dummy entity. + +([@janiversen] - [#113516]) ([documentation](/integrations/modbus)) + +[@janiversen]: https://github.com/janiversen +[#113516]: https://github.com/home-assistant/core/pull/113516 + +{% enddetails %} + +{% details "MQTT" %} + +Support for `brightness` is now assumed for `mqtt` lights with the `json` schema +unless only color modes `rgb`, `rgbw` or `rgbww` are supported. + +For light which only support color modes `rgb`, `rgbw` or `rgbww`, +the `brightness` option flag can still be set to `false` if brightness is not +supported, in this case brightness support is emulated in Home Assistant by +scaling the RGBx-values. + +For all other color modes except `ColorMode.ONOFF`, it is assumed brightness is +supported and the `brightness` attribute will be included in the MQTT payload +when the `brightness` attribute is supplied to the `light.turn_on` service. + +([@jbouwh] - [#111676]) ([documentation](/integrations/mqtt)) + +[@jbouwh]: https://github.com/jbouwh +[#111676]: https://github.com/home-assistant/core/pull/111676 + +{% enddetails %} + +{% details "myUplink" %} + +If you have a Nibe SMO 20 in your account, you will notice that some 550 +entities are not provided by the integration. + +You can safely remove these entities as they are not used by the integration. + +([@astrandb] - [#113493]) ([documentation](/integrations/myuplink)) + +[@astrandb]: https://github.com/astrandb +[#113493]: https://github.com/home-assistant/core/pull/113493 + +{% enddetails %} + +{% details "Waze Travel Time" %} + +The options `excl_filter` and `incl_filter` now filter for exact matches to +streetnames in the route. Previously only they only filtered on the short +description for the route. + +([@eifinger] - [#108613]) ([documentation](/integrations/waze_travel_time)) + +[@eifinger]: https://github.com/eifinger +[#108613]: https://github.com/home-assistant/core/pull/108613 + +{% enddetails %} + +If you are a custom integration developer and want to learn about breaking +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: + +- [Climate entity auxiliary heater is deprecated](https://developers.home-assistant.io/blog/2024/03/10/climate-aux-heater-deprecated) +- [Config Entries can now provide a reconfigure step](https://developers.home-assistant.io/blog/2024/03/21/config-entry-reconfigure-step) +- [Deprecating `async_run_job` and `async_add_job`](https://developers.home-assistant.io/blog/2024/03/13/deprecate_add_run_job) +- [Integrations import in the executor to avoid blocking the event loop](https://developers.home-assistant.io/blog/2024/03/09/import_executor_default) +- [New state timestamp State.last_reported](https://developers.home-assistant.io/blog/2024/03/20/state_reported_timestamp) +- [Raising exceptions with translations](https://developers.home-assistant.io/blog/2024/03/15/exception-translations) + +[devblog]: https://developers.home-assistant.io/blog/ + +## Farewell to the following + +The following integrations are also no longer available as of this release: + +- **OpenCV** has been removed. The integration has been in a broken state + for over an year, and could not be build. + ([@thecode] - [#113455]) + +[@thecode]: https://github.com/thecode +[#113455]: https://github.com/home-assistant/core/pull/113455 + +## 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.4](/changelogs/core-2024.4) diff --git a/source/changelogs/core-2024.4.markdown b/source/changelogs/core-2024.4.markdown new file mode 100644 index 00000000000..10a3c348d9b --- /dev/null +++ b/source/changelogs/core-2024.4.markdown @@ -0,0 +1,13 @@ +--- +title: Full changelog for Home Assistant Core 2024.4 +description: Detailed changelog for the Home Assistant Core 2024.4 release +replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$ +--- + +These are all the changes included in the Home Assistant Core 2024.4 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2024/04/03/release-20244/). + +## All changes + diff --git a/source/images/blog/2024-04/social.png b/source/images/blog/2024-04/social.png new file mode 100644 index 0000000000000000000000000000000000000000..ddd0a5cbc46a569e10c8726dd27b29196ff26d5e GIT binary patch literal 167414 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�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 Date: Thu, 28 Mar 2024 01:50:33 -0500 Subject: [PATCH 02/84] add cullAssistant, esphome Culligan water sensor link. (#32065) --- source/_docs/energy/water.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_docs/energy/water.markdown b/source/_docs/energy/water.markdown index 699530796ba..58069878217 100644 --- a/source/_docs/energy/water.markdown +++ b/source/_docs/energy/water.markdown @@ -44,6 +44,10 @@ If your water meter lacks a rotary disk, magnetic disk, or coil. There are alter - [AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) is a project running on an ESP32-CAM and can be fully integrated into Home Assistant using the Home Assistant Discovery Functionality of MQTT. It digitalizes your gas/water/electricity meter display and provides its data in various ways.![Photo of the AI-on-the-edge-device Workflow](/images/docs/energy/ +If you have a Culligan Water Softener, you may be able to interface with the inbuilt `DEBUG PORT` and receive water usage stats including `Gallons` (gal), `Gallons Per Minute` (gal/min), and `Gallons to Recharge` (gal): + +- [cullAssistant](https://github.com/LelandSindt/cullAssistant) (ESPHome) + Alternatively, the following shops sell ESPHome-based devices that use a 3-phase light sensor to detect a rotating disk in your water meter and convert this to the amount of water used in milliliters (ml): - [Muino water meter reader](https://watermeter.muino.nl/) (ESPHome) From 70b9510aebb5cd6c5212694e1fdc8c905f07cc9a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Mar 2024 07:52:48 +0100 Subject: [PATCH 03/84] Bump google-protobuf from 4.26.0 to 4.26.1 (#32069) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index df714cd9b43..803ef55eaa1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -27,7 +27,7 @@ GEM eventmachine (1.2.7) ffi (1.16.3) forwardable-extended (2.6.0) - google-protobuf (4.26.0-x86_64-linux) + google-protobuf (4.26.1-x86_64-linux) rake (>= 13) http_parser.rb (0.8.0) i18n (1.14.4) From ca6bb699ecb630b8577afbb3ae6eb6b14ecc91f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Mar 2024 07:53:04 +0100 Subject: [PATCH 04/84] Bump ruby-lsp from 0.14.6 to 0.15.0 (#32067) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index b93880fc1e4..90f3924278a 100644 --- a/Gemfile +++ b/Gemfile @@ -11,7 +11,7 @@ group :development do # > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189 gem 'sassc', '2.1.0' gem 'rubocop', '1.62.1' - gem 'ruby-lsp', '0.14.6' + gem 'ruby-lsp', '0.15.0' gem 'rackup', '2.1.0' end diff --git a/Gemfile.lock b/Gemfile.lock index 803ef55eaa1..3ca950f895f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -115,7 +115,7 @@ GEM unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.31.2) parser (>= 3.3.0.4) - ruby-lsp (0.14.6) + ruby-lsp (0.15.0) language_server-protocol (~> 3.17.0) prism (>= 0.22.0, < 0.25) sorbet-runtime (>= 0.5.10782) @@ -135,7 +135,7 @@ GEM rack-protection (= 4.0.0) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - sorbet-runtime (0.5.11311) + sorbet-runtime (0.5.11316) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -161,7 +161,7 @@ DEPENDENCIES rackup (= 2.1.0) rake (= 13.1.0) rubocop (= 1.62.1) - ruby-lsp (= 0.14.6) + ruby-lsp (= 0.15.0) sass-globbing (= 1.1.5) sassc (= 2.1.0) sinatra (= 4.0.0) From 2fa42407b631bec7c53efc7302f7158d01066297 Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Thu, 28 Mar 2024 09:09:55 +0100 Subject: [PATCH 05/84] Add RLC-1212A as supported (#32070) --- source/_integrations/reolink.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index 807c42df3a4..ecdbb6e9786 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -258,6 +258,7 @@ The following models have been tested and confirmed to work: - [RLC-822A](https://reolink.com/product/rlc-822a/) - [RLC-823A](https://reolink.com/product/rlc-823a/) - [RLC-833A](https://reolink.com/product/rlc-833a/) +- [RLC-1212A](https://reolink.com/product/rlc-1212a/) - [RLC-1224A](https://reolink.com/product/rlc-1224a/) - [RLN8-410 NVR](https://reolink.com/product/rln8-410/) - [RLN16-410 NVR](https://reolink.com/product/rln16-410/) From a01805dcff84317635cb76b7bca2af352cd6f90a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Mar 2024 07:23:30 +0100 Subject: [PATCH 06/84] Bump sorbet-runtime from 0.5.11316 to 0.5.11318 (#32079) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3ca950f895f..311d0ac8ca6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -135,7 +135,7 @@ GEM rack-protection (= 4.0.0) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - sorbet-runtime (0.5.11316) + sorbet-runtime (0.5.11318) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) From 2b572fedb859705a83472b7a32c3332e7dac1093 Mon Sep 17 00:00:00 2001 From: Bruno Henrique Date: Fri, 29 Mar 2024 04:04:39 -0300 Subject: [PATCH 07/84] Adding missing 'Services' section on UniFi Network Integration (#32076) --- source/_integrations/unifi.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 64bbe58f4a7..e19dcac1b96 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -34,6 +34,7 @@ There is currently support for the following device types within Home Assistant: - [Button](#button) - [Image](#image) - [Presence detection](#presence-detection) +- [Services](#services) - [Switch](#switch) - [Sensor](#sensor) - [Firmware updates](#firmware-updates) From 7c923f48f84e22f450cf76b3fc530550b8206ba5 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Fri, 29 Mar 2024 18:48:37 +0100 Subject: [PATCH 08/84] Update service-calls.markdown (#32086) --- source/_docs/scripts/service-calls.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index d94130181ee..ccd734c536c 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -80,7 +80,7 @@ entity_id: switch.ac ### Using the Services Developer Tool You can use the Services Developer Tool to test data to pass in a service call. -For example, you may test turning on or off a 'group' (See [groups] for more info) +For example, you may test turning on or off a 'group' (See [groups](/integrations/group/) for more info) To turn a group on or off, pass the following info: From 9dfd58f4d326ba34510e59cd1cfe6aa37a30f426 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Sat, 30 Mar 2024 07:06:33 +0100 Subject: [PATCH 09/84] Command line command is template for binary sensor and sensor (#32049) --- source/_integrations/command_line.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/command_line.markdown b/source/_integrations/command_line.markdown index 4deb3a59c4b..d18d826b383 100644 --- a/source/_integrations/command_line.markdown +++ b/source/_integrations/command_line.markdown @@ -43,7 +43,7 @@ command_line: command: description: The action to take to get the value. required: true - type: string + type: template command_timeout: description: Defines number of seconds for command timeout. required: false @@ -168,7 +168,7 @@ command_line: command: description: The action to take to get the value. required: true - type: string + type: template command_timeout: description: Defines number of seconds for command timeout required: false From 65521a8c0abc9672140dc832f4aff51a4379da4d Mon Sep 17 00:00:00 2001 From: Pipo31416 <158268990+Pipo31416@users.noreply.github.com> Date: Mon, 1 Apr 2024 10:32:37 +0200 Subject: [PATCH 10/84] Update header-footer.markdown (#32112) Statictis -> Statistics --- source/dashboards/header-footer.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/dashboards/header-footer.markdown b/source/dashboards/header-footer.markdown index b48a122e903..10e7f607d7e 100644 --- a/source/dashboards/header-footer.markdown +++ b/source/dashboards/header-footer.markdown @@ -13,7 +13,7 @@ Header and footer can be used on the following cards: - [Entity](/dashboards/entity/) - [Entities](/dashboards/entities/) -- [Statictis](/dashboards/statistics/) +- [Statistics](/dashboards/statistics/) ## Picture header & footer @@ -151,5 +151,5 @@ hours_to_show: - [Entity](/dashboards/entity/) - [Entities](/dashboards/entities/) -- [Statictis](/dashboards/statistics/) -- [Card actions](/dashboards/actions/) \ No newline at end of file +- [statistics](/dashboards/statistics/) +- [Card actions](/dashboards/actions/) From e7f7bfc4500adec19e07fbf357336e1174fc2424 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 22:42:43 +0200 Subject: [PATCH 11/84] Bump sorbet-runtime from 0.5.11318 to 0.5.11319 (#32110) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 311d0ac8ca6..c27b41c0ecb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -135,7 +135,7 @@ GEM rack-protection (= 4.0.0) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - sorbet-runtime (0.5.11318) + sorbet-runtime (0.5.11319) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) From 6c27dc00ef0ff11e0b004f971865b4ce25540098 Mon Sep 17 00:00:00 2001 From: Clinton Gormley Date: Tue, 2 Apr 2024 08:35:00 +0200 Subject: [PATCH 12/84] Fixed bad 'features' link in cards.markdown (#32085) --- source/dashboards/cards.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/dashboards/cards.markdown b/source/dashboards/cards.markdown index ae3936ff1f3..ac5e78b7dc5 100644 --- a/source/dashboards/cards.markdown +++ b/source/dashboards/cards.markdown @@ -25,7 +25,7 @@ There are several different card types, each with their own configuration option Some cards have support for [tap actions](/dashboards/actions/). These actions define what will happen when you tap or hold on an object within a card. -Some cards have support for [features](/dashboards/actions/). These widgets add quick controls to the card. Supported features depend on the card and entity capabilities. Multiple features can be added to a single card. +Some cards have support for [features](/dashboards/features/). These widgets add quick controls to the card. Supported features depend on the card and entity capabilities. Multiple features can be added to a single card.

Screenshot of tile cards with features. Screenshot of tile cards with features. @@ -87,4 +87,4 @@ Another way to add entities to a dashboard is to use the **Device** page. - For a list of available card types and more detailed documentation, refer to the **Card types** section in the side navigation. - [Card tap actions](/dashboards/actions/) - [Card features](/dashboards/actions/) -- [Card header and footer widgets](/dashboards/header-footer/) \ No newline at end of file +- [Card header and footer widgets](/dashboards/header-footer/) From 2ed3bee6226d6c69962b51df7226290526eeb99d Mon Sep 17 00:00:00 2001 From: 0xEF <48224539+hexEF@users.noreply.github.com> Date: Tue, 2 Apr 2024 08:36:18 +0200 Subject: [PATCH 13/84] Update Synology SRM integration docs (#32074) --- source/_integrations/synology_srm.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/synology_srm.markdown b/source/_integrations/synology_srm.markdown index 801023e4fd8..9d7456d2f26 100644 --- a/source/_integrations/synology_srm.markdown +++ b/source/_integrations/synology_srm.markdown @@ -58,7 +58,7 @@ verify_ssl: type: boolean {% endconfiguration %} -It's not possible to create another account in SRM with admin permissions. You'll need to use your admin account (or the one you renamed at creation) for this connection. +For instructions on creating multiple administrators on SRM, please refer to the [Synology Knowledge Center](https://kb.synology.com/en-id/SRM/tutorial/Create_multiple_administrator_accounts_on_Synology_Router). List of models known to be supported: From 97bdcc06ddcdc2806278e36f9764303689017df3 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Tue, 2 Apr 2024 08:36:30 +0200 Subject: [PATCH 14/84] Filesize abs path with example (#32106) * Filesize abs path with example * Tiny tweak --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/filesize.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/filesize.markdown b/source/_integrations/filesize.markdown index 0b51840c106..7be864a7055 100644 --- a/source/_integrations/filesize.markdown +++ b/source/_integrations/filesize.markdown @@ -21,6 +21,8 @@ The `filesize` sensor is for displaying the size in MB of a file. File paths must also be added to [allowlist_external_dirs](/docs/configuration/basic/) in your `configuration.yaml`. +File paths should be absolute paths. For example: `/config/home-assistant_v2.db` to monitor the size of the default database. + {% include integrations/config_flow.md %} From df853eae95e978a3745588b8451ba164066200e2 Mon Sep 17 00:00:00 2001 From: Zitrium31 <123826842+Zitrium31@users.noreply.github.com> Date: Tue, 2 Apr 2024 09:00:18 +0200 Subject: [PATCH 15/84] Add note for local API access (#32063) * Add note for local API access * tiny tweak --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/freebox.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index a6e53b60d85..12263bcceca 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -45,6 +45,12 @@ You can find out your Freebox host and port by opening this address + +The `host` (ex: xxxxxxxx.fbxos.fr) and `port` given by refers to your Freebox public IP address and may not work if your Home Assistant server is located inside your local LAN. For local API access, you can alternatively use `host` = *mafreebox.freebox.fr* and `port` = *443*. + + + ### Initial setup

From 036bb8757e244c3fa374a10a913d0b89a94448de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 09:03:15 +0200 Subject: [PATCH 16/84] Bump sorbet-runtime from 0.5.11319 to 0.5.11323 (#32120) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c27b41c0ecb..214aa258bdd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -135,7 +135,7 @@ GEM rack-protection (= 4.0.0) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - sorbet-runtime (0.5.11319) + sorbet-runtime (0.5.11323) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) From 2212063c70fca92532294e2aca5076a60c337fa5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 09:05:17 +0200 Subject: [PATCH 17/84] Bump rake from 13.1.0 to 13.2.0 (#32119) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 90f3924278a..cf1fb5443bf 100644 --- a/Gemfile +++ b/Gemfile @@ -3,7 +3,7 @@ source 'https://rubygems.org' ruby '> 2.5.0' group :development do - gem 'rake', '13.1.0' + gem 'rake', '13.2.0' gem 'jekyll', '4.3.3' gem 'compass', '1.0.3' gem 'sass-globbing', '1.1.5' diff --git a/Gemfile.lock b/Gemfile.lock index 214aa258bdd..d1416feb966 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,7 +95,7 @@ GEM rack (>= 3) webrick (~> 1.8) rainbow (3.1.1) - rake (13.1.0) + rake (13.2.0) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) @@ -159,7 +159,7 @@ DEPENDENCIES jekyll-toc (= 0.18.0) nokogiri (= 1.16.3) rackup (= 2.1.0) - rake (= 13.1.0) + rake (= 13.2.0) rubocop (= 1.62.1) ruby-lsp (= 0.15.0) sass-globbing (= 1.1.5) From 9f6346c06ac12f98c90153a880f2efed8ab7ed20 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 2 Apr 2024 13:54:13 +0200 Subject: [PATCH 18/84] 2024.4: Sync codebase with docs --- CODEOWNERS | 12 ++++++++---- source/_integrations/apcupsd.markdown | 1 + source/_integrations/bring.markdown | 2 +- source/_integrations/caldav.markdown | 2 +- source/_integrations/comelit.markdown | 1 - source/_integrations/control4.markdown | 1 - source/_integrations/downloader.markdown | 1 + source/_integrations/dsmr_reader.markdown | 2 +- source/_integrations/dte_energy_bridge.markdown | 2 +- source/_integrations/elmax.markdown | 1 + source/_integrations/fastdotcom.markdown | 1 + source/_integrations/fyta.markdown | 3 +-- source/_integrations/google_tasks.markdown | 2 +- source/_integrations/homematic.markdown | 1 - source/_integrations/homeworks.markdown | 3 ++- source/_integrations/husqvarna_automower.markdown | 1 + source/_integrations/hyperion.markdown | 2 +- source/_integrations/ipma.markdown | 1 + source/_integrations/kitchen_sink.markdown | 1 + source/_integrations/local_todo.markdown | 4 ++-- source/_integrations/microbees.markdown | 7 +++---- source/_integrations/modbus.markdown | 2 +- source/_integrations/motionblinds_ble.markdown | 2 +- source/_integrations/mqtt.markdown | 1 + source/_integrations/neato.markdown | 1 - source/_integrations/notify.markdown | 2 -- source/_integrations/numato.markdown | 2 +- source/_integrations/ourgroceries.markdown | 2 +- source/_integrations/permobil.markdown | 1 + source/_integrations/piper.markdown | 1 + source/_integrations/profiler.markdown | 2 +- source/_integrations/rejseplanen.markdown | 2 -- source/_integrations/seventeentrack.markdown | 2 +- source/_integrations/shelly.markdown | 2 +- source/_integrations/smud.markdown | 2 +- source/_integrations/teslemetry.markdown | 1 - source/_integrations/todo.markdown | 2 +- source/_integrations/todoist.markdown | 2 +- source/_integrations/webmin.markdown | 1 + source/_integrations/whirlpool.markdown | 1 + source/_integrations/whisper.markdown | 1 + source/_integrations/yolink.markdown | 1 + 42 files changed, 46 insertions(+), 38 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index e71a16e1dab..f6976ad1233 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -188,10 +188,11 @@ source/_integrations/dnsip.markdown @gjohansson-ST source/_integrations/doorbird.markdown @oblogic7 @bdraco @flacjacket source/_integrations/dooya.markdown @starkillerOG source/_integrations/dormakaba_dkey.markdown @emontnemery +source/_integrations/downloader.markdown @erwindouna source/_integrations/dremel_3d_printer.markdown @tkdrob source/_integrations/drop_connect.markdown @ChandlerSystems @pfrazer source/_integrations/dsmr.markdown @Robbie1221 @frenck -source/_integrations/dsmr_reader.markdown @depl0y @glodenox +source/_integrations/dsmr_reader.markdown @sorted-bits @glodenox source/_integrations/duotecno.markdown @cereal2nd source/_integrations/duquesne_light.markdown @tronikos source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @andarotajo @@ -273,6 +274,7 @@ source/_integrations/frontend.markdown @home-assistant/frontend source/_integrations/frontier_silicon.markdown @wlcrs source/_integrations/fujitsu_anywair.markdown @Bre77 source/_integrations/fully_kiosk.markdown @cgarwood +source/_integrations/fyta.markdown @dontinelli source/_integrations/garages_amsterdam.markdown @klaasnicolaas source/_integrations/gardena_bluetooth.markdown @elupus source/_integrations/gaviota.markdown @starkillerOG @@ -338,7 +340,7 @@ source/_integrations/homeassistant_sky_connect.markdown @home-assistant/core source/_integrations/homeassistant_yellow.markdown @home-assistant/core source/_integrations/homekit.markdown @bdraco source/_integrations/homekit_controller.markdown @Jc2k @bdraco -source/_integrations/homematic.markdown @pvizeli @danielperna84 +source/_integrations/homematic.markdown @pvizeli source/_integrations/homewizard.markdown @DCSBL source/_integrations/honeywell.markdown @rdfurman @mkmer source/_integrations/http.markdown @home-assistant/core @@ -502,7 +504,7 @@ source/_integrations/mystrom.markdown @fabaff source/_integrations/myuplink.markdown @pajzo @astrandb source/_integrations/nam.markdown @bieniu source/_integrations/nanoleaf.markdown @milanmeu -source/_integrations/neato.markdown @dshokouhi @Santobert +source/_integrations/neato.markdown @Santobert source/_integrations/nederlandse_spoorwegen.markdown @YarmoM source/_integrations/ness_alarm.markdown @nickw444 source/_integrations/nest.markdown @allenporter @@ -541,6 +543,7 @@ source/_integrations/nzbget.markdown @chriscla source/_integrations/obihai.markdown @dshokouhi @ejpenney source/_integrations/octoprint.markdown @rfleming71 source/_integrations/ohmconnect.markdown @robbiet480 +source/_integrations/ollama.markdown @synesthesiam source/_integrations/ombi.markdown @larssont source/_integrations/omnilogic.markdown @oliver84 @djtimca @gentoosu source/_integrations/onboarding.markdown @home-assistant/core @@ -638,7 +641,6 @@ source/_integrations/recollect_waste.markdown @bachya source/_integrations/recorder.markdown @home-assistant/core source/_integrations/recovery_mode.markdown @home-assistant/core source/_integrations/refoss.markdown @ashionky -source/_integrations/rejseplanen.markdown @DarkFox source/_integrations/remote.markdown @home-assistant/core source/_integrations/renault.markdown @epenet source/_integrations/renson.markdown @jimmyd-be @@ -694,6 +696,7 @@ source/_integrations/sentry.markdown @dcramer @frenck source/_integrations/senz.markdown @milanmeu source/_integrations/serial.markdown @fabaff source/_integrations/seven_segments.markdown @fabaff +source/_integrations/seventeentrack.markdown @shaiu source/_integrations/sfr_box.markdown @epenet source/_integrations/sharkiq.markdown @JeffResc @funkybunch source/_integrations/shell_command.markdown @home-assistant/core @@ -726,6 +729,7 @@ source/_integrations/smarttub.markdown @mdz source/_integrations/smarty.markdown @z0mbieprocess source/_integrations/smhi.markdown @gjohansson-ST source/_integrations/sms.markdown @ocalvo +source/_integrations/smud.markdown @tronikos source/_integrations/snapcast.markdown @luar123 source/_integrations/snooz.markdown @AustinBrunkhorst source/_integrations/solaredge.markdown @frenck diff --git a/source/_integrations/apcupsd.markdown b/source/_integrations/apcupsd.markdown index 722ff93b33a..409a7ec2a6d 100644 --- a/source/_integrations/apcupsd.markdown +++ b/source/_integrations/apcupsd.markdown @@ -13,6 +13,7 @@ ha_codeowners: - '@yuxincs' ha_platforms: - binary_sensor + - diagnostics - sensor ha_integration_type: integration ha_quality_scale: silver diff --git a/source/_integrations/bring.markdown b/source/_integrations/bring.markdown index 54f5da1882b..5f2f7ff98ad 100644 --- a/source/_integrations/bring.markdown +++ b/source/_integrations/bring.markdown @@ -26,4 +26,4 @@ For authentication, the integration requires the `email` and `password` you used - [Bring!](https://www.getbring.com/) - [To-do list integration documentation](/integrations/todo) - [List of to-do list integrations](/integrations/#to-do-list) -- [To-do list card](/dashboards/todo-list/) \ No newline at end of file +- [To-do list card](/dashboards/todo-list/) diff --git a/source/_integrations/caldav.markdown b/source/_integrations/caldav.markdown index 374fc235739..ead6c770f76 100644 --- a/source/_integrations/caldav.markdown +++ b/source/_integrations/caldav.markdown @@ -212,4 +212,4 @@ password. - [To-do list integration documentation](/integrations/todo) - [List of to-do list integrations](/integrations/#to-do-list) -- [To-do list card](/dashboards/todo-list/) \ No newline at end of file +- [To-do list card](/dashboards/todo-list/) diff --git a/source/_integrations/comelit.markdown b/source/_integrations/comelit.markdown index 2788798ed64..26ecc7201be 100644 --- a/source/_integrations/comelit.markdown +++ b/source/_integrations/comelit.markdown @@ -18,7 +18,6 @@ ha_iot_class: Local Polling ha_platforms: - alarm_control_panel - climate - - humidifier - cover - humidifier - light diff --git a/source/_integrations/control4.markdown b/source/_integrations/control4.markdown index 7156d48f912..89d82cf9a33 100644 --- a/source/_integrations/control4.markdown +++ b/source/_integrations/control4.markdown @@ -9,7 +9,6 @@ ha_iot_class: Local Polling ha_config_flow: true ha_codeowners: - '@lawtancool' - - '@nalin29' ha_domain: control4 ha_ssdp: true ha_platforms: diff --git a/source/_integrations/downloader.markdown b/source/_integrations/downloader.markdown index 6faf31848f6..1155ea8a033 100644 --- a/source/_integrations/downloader.markdown +++ b/source/_integrations/downloader.markdown @@ -9,6 +9,7 @@ ha_domain: downloader ha_codeowners: - '@erwindouna' ha_integration_type: integration +ha_config_flow: true --- The **Downloader** {% term integration %} provides a service to download files. It will raise an error and not continue to set itself up when the download directory does not exist. The directory needs to be writable for the user that is running Home Assistant. diff --git a/source/_integrations/dsmr_reader.markdown b/source/_integrations/dsmr_reader.markdown index f355a282af1..ce1253c1946 100644 --- a/source/_integrations/dsmr_reader.markdown +++ b/source/_integrations/dsmr_reader.markdown @@ -9,7 +9,7 @@ ha_config_flow: true ha_mqtt: true ha_release: 0.103 ha_codeowners: - - '@depl0y' + - '@sorted-bits' - '@glodenox' ha_domain: dsmr_reader ha_platforms: diff --git a/source/_integrations/dte_energy_bridge.markdown b/source/_integrations/dte_energy_bridge.markdown index c6a74c171df..f8b4ab1e4d7 100644 --- a/source/_integrations/dte_energy_bridge.markdown +++ b/source/_integrations/dte_energy_bridge.markdown @@ -1,5 +1,5 @@ --- -title: DTE Energy Bridge (2020 and older hardware only) +title: DTE Energy Bridge description: Setup early-model DTE Energy Bridge with Home Assistant. ha_category: - Energy diff --git a/source/_integrations/elmax.markdown b/source/_integrations/elmax.markdown index be38b91e26b..6b8ca3fb2e8 100644 --- a/source/_integrations/elmax.markdown +++ b/source/_integrations/elmax.markdown @@ -15,6 +15,7 @@ ha_platforms: - cover - switch ha_integration_type: integration +ha_zeroconf: true --- The Elmax integration enables Home Assistant integration with diff --git a/source/_integrations/fastdotcom.markdown b/source/_integrations/fastdotcom.markdown index 5ade5761a6e..dd46f63bdaa 100644 --- a/source/_integrations/fastdotcom.markdown +++ b/source/_integrations/fastdotcom.markdown @@ -12,6 +12,7 @@ ha_codeowners: - '@erwindouna' ha_domain: fastdotcom ha_platforms: + - diagnostics - sensor ha_integration_type: integration --- diff --git a/source/_integrations/fyta.markdown b/source/_integrations/fyta.markdown index fb8b81f7b94..ab2cfd8ff21 100644 --- a/source/_integrations/fyta.markdown +++ b/source/_integrations/fyta.markdown @@ -11,7 +11,7 @@ ha_codeowners: ha_domain: fyta ha_platforms: - sensor -ha_integration_type: integration +ha_integration_type: hub --- The **FYTA** {% term integration %} uses the open API of [FYTA](https://www.fyta.de) to obtain the data from your plant sensors and integrate these into Home Assistant. @@ -39,4 +39,3 @@ The following sensors are currently available per plant: | moisture | % | Moisture measured by sensor | | salinity | mS/cm | Salinity measured by sensor (measured as conductivity)| | battery_level | % | Battery level of the sensor | - diff --git a/source/_integrations/google_tasks.markdown b/source/_integrations/google_tasks.markdown index 8bfacb45d64..ee2bcffe652 100644 --- a/source/_integrations/google_tasks.markdown +++ b/source/_integrations/google_tasks.markdown @@ -88,4 +88,4 @@ If you have an error with your credentials, you can delete them in the [Applicat - [To-do list integration documentation](/integrations/todo) - [List of to-do list integrations](/integrations/#to-do-list) -- [To-do list card](/dashboards/todo-list/) \ No newline at end of file +- [To-do list card](/dashboards/todo-list/) diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown index bcc2948f65c..10d27e1bb93 100644 --- a/source/_integrations/homematic.markdown +++ b/source/_integrations/homematic.markdown @@ -15,7 +15,6 @@ ha_iot_class: Local Push ha_release: 0.23 ha_codeowners: - '@pvizeli' - - '@danielperna84' ha_domain: homematic ha_platforms: - binary_sensor diff --git a/source/_integrations/homeworks.markdown b/source/_integrations/homeworks.markdown index 7d6af8280b7..962854f7101 100644 --- a/source/_integrations/homeworks.markdown +++ b/source/_integrations/homeworks.markdown @@ -2,9 +2,9 @@ title: Lutron Homeworks description: How to use Lutron Homeworks Series 4 & 8 with Home Assistant. ha_category: - - Hub - Binary sensor - Button + - Hub - Light ha_release: 0.85 ha_iot_class: Local Push @@ -14,6 +14,7 @@ ha_platforms: - button - light ha_integration_type: integration +ha_config_flow: true --- [Lutron](https://www.lutron.com/) is an American lighting control company. The Lutron Homeworks Series 4 & 8 systems are relatively old (~2003), and use RS-232 connections to communicate with home automation systems. The `homeworks` integration in Home Assistant is responsible for communicating with the main controller for these systems. Communication is through an ethernet to serial converter (NPort, for example). diff --git a/source/_integrations/husqvarna_automower.markdown b/source/_integrations/husqvarna_automower.markdown index da4ebaf9f75..281c87a375e 100644 --- a/source/_integrations/husqvarna_automower.markdown +++ b/source/_integrations/husqvarna_automower.markdown @@ -16,6 +16,7 @@ ha_codeowners: ha_platforms: - binary_sensor - device_tracker + - diagnostics - lawn_mower - select - sensor diff --git a/source/_integrations/hyperion.markdown b/source/_integrations/hyperion.markdown index cb8ef98a2c3..69523f81b61 100644 --- a/source/_integrations/hyperion.markdown +++ b/source/_integrations/hyperion.markdown @@ -14,8 +14,8 @@ ha_ssdp: true ha_platforms: - camera - light - - switch - sensor + - switch ha_integration_type: integration --- diff --git a/source/_integrations/ipma.markdown b/source/_integrations/ipma.markdown index 85351853890..378c143b06e 100644 --- a/source/_integrations/ipma.markdown +++ b/source/_integrations/ipma.markdown @@ -10,6 +10,7 @@ ha_codeowners: - '@dgomes' ha_domain: ipma ha_platforms: + - diagnostics - sensor - weather ha_integration_type: integration diff --git a/source/_integrations/kitchen_sink.markdown b/source/_integrations/kitchen_sink.markdown index ef190583c5b..9e0c80ccfe3 100644 --- a/source/_integrations/kitchen_sink.markdown +++ b/source/_integrations/kitchen_sink.markdown @@ -12,6 +12,7 @@ ha_iot_class: Calculated ha_platforms: - button - image + - lawn_mower - lock - sensor - switch diff --git a/source/_integrations/local_todo.markdown b/source/_integrations/local_todo.markdown index 6b977d18659..934b22aa4bd 100644 --- a/source/_integrations/local_todo.markdown +++ b/source/_integrations/local_todo.markdown @@ -1,5 +1,5 @@ --- -title: Local to-do +title: Local To-do description: Instructions on how to use local to-do lists in Home Assistant. ha_category: - To-do list @@ -26,4 +26,4 @@ about to-do list entities. ## Related topics - [**To-do list** integration](/integrations/todo) -- [To-do list card](/dashboards/todo-list/) \ No newline at end of file +- [To-do list card](/dashboards/todo-list/) diff --git a/source/_integrations/microbees.markdown b/source/_integrations/microbees.markdown index 69ded0fd173..28f0763db0e 100644 --- a/source/_integrations/microbees.markdown +++ b/source/_integrations/microbees.markdown @@ -1,9 +1,9 @@ --- title: microBees description: Instructions on how to integrate microBees devices into Home Assistant. -ha_category: - - Cover +ha_category: - Button + - Cover - Light - Sensor - Switch @@ -14,10 +14,9 @@ ha_config_flow: true ha_domain: microbees ha_iot_class: Cloud Polling ha_platforms: - - switch - - cover - binary_sensor - button + - cover - light - sensor - switch diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index f68fd5ff21f..db98da4c3dc 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -16,7 +16,7 @@ ha_platforms: - light - sensor - switch -ha_quality_scale: gold +ha_quality_scale: platinum ha_integration_type: integration --- diff --git a/source/_integrations/motionblinds_ble.markdown b/source/_integrations/motionblinds_ble.markdown index ccdaca3bfe8..321c52f2872 100644 --- a/source/_integrations/motionblinds_ble.markdown +++ b/source/_integrations/motionblinds_ble.markdown @@ -14,7 +14,7 @@ ha_platforms: - button - cover - select -ha_integration_type: integration +ha_integration_type: device --- The Motionblinds BLE {% term integration %} adds support for [Motionblinds](https://motionblinds.com/) Bluetooth motors. Beware that this integration does not work with *Eve Motionblinds* motors. *Eve Motionblinds* can be added to Home Assistant using the [HomeKit Device](https://www.home-assistant.io/integrations/homekit_controller/) integration. diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 158f329f35a..9288d8e15a6 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -25,6 +25,7 @@ ha_platforms: - fan - humidifier - image + - lawn_mower - light - lock - number diff --git a/source/_integrations/neato.markdown b/source/_integrations/neato.markdown index 1332da1336c..8afdb03c705 100644 --- a/source/_integrations/neato.markdown +++ b/source/_integrations/neato.markdown @@ -11,7 +11,6 @@ ha_iot_class: Cloud Polling ha_release: 0.33 ha_config_flow: true ha_codeowners: - - '@dshokouhi' - '@Santobert' ha_domain: neato ha_platforms: diff --git a/source/_integrations/notify.markdown b/source/_integrations/notify.markdown index b1e8e4f120b..7361b552461 100644 --- a/source/_integrations/notify.markdown +++ b/source/_integrations/notify.markdown @@ -87,5 +87,3 @@ action: ``` {% endraw %} - - diff --git a/source/_integrations/numato.markdown b/source/_integrations/numato.markdown index d69384cf8da..eaa005503a0 100644 --- a/source/_integrations/numato.markdown +++ b/source/_integrations/numato.markdown @@ -15,7 +15,7 @@ ha_platforms: - binary_sensor - sensor - switch -ha_integration_type: integration +ha_integration_type: hub --- The `numato` integration is the base for all related GPIO platforms of the diff --git a/source/_integrations/ourgroceries.markdown b/source/_integrations/ourgroceries.markdown index 45c5f147c58..81e463cba47 100644 --- a/source/_integrations/ourgroceries.markdown +++ b/source/_integrations/ourgroceries.markdown @@ -24,4 +24,4 @@ It adds a [to-do list entity](/integrations/todo) for each shopping list, allowi - [OurGroceries](https://www.ourgroceries.com/) - [To-do list integration documentation](/integrations/todo) - [List of to-do list integrations](/integrations/#to-do-list) -- [To-do list card](/dashboards/todo-list/) \ No newline at end of file +- [To-do list card](/dashboards/todo-list/) diff --git a/source/_integrations/permobil.markdown b/source/_integrations/permobil.markdown index b24579bba1a..30b8a219b00 100644 --- a/source/_integrations/permobil.markdown +++ b/source/_integrations/permobil.markdown @@ -10,6 +10,7 @@ ha_codeowners: - '@IsakNyberg' ha_config_flow: true ha_platforms: + - binary_sensor - sensor ha_integration_type: integration --- diff --git a/source/_integrations/piper.markdown b/source/_integrations/piper.markdown index 51c54fdc06d..c5b5997631f 100644 --- a/source/_integrations/piper.markdown +++ b/source/_integrations/piper.markdown @@ -19,6 +19,7 @@ ha_platforms: - stt - switch - tts + - wake_word ha_iot_class: Local Push ha_zeroconf: true --- diff --git a/source/_integrations/profiler.markdown b/source/_integrations/profiler.markdown index c9ec95f6aec..e52cd8e0439 100644 --- a/source/_integrations/profiler.markdown +++ b/source/_integrations/profiler.markdown @@ -198,4 +198,4 @@ Logs statistics from [lru_cache](https://docs.python.org/3/library/functools.htm | ---------------------- | -------- | -------------------------------------- | | `enabled` | yes | Boolean to enable asyncio debug. | -When `set_asyncio_debug` is enabled, `asyncio` will run in [debug mode](https://docs.python.org/3/library/asyncio-dev.html#debug-mode). Use this service to help identify an integration that is blocking the event loop. \ No newline at end of file +When `set_asyncio_debug` is enabled, `asyncio` will run in [debug mode](https://docs.python.org/3/library/asyncio-dev.html#debug-mode). Use this service to help identify an integration that is blocking the event loop. diff --git a/source/_integrations/rejseplanen.markdown b/source/_integrations/rejseplanen.markdown index f58e6e7953a..75a3e8c2516 100644 --- a/source/_integrations/rejseplanen.markdown +++ b/source/_integrations/rejseplanen.markdown @@ -6,8 +6,6 @@ ha_category: ha_iot_class: Cloud Polling ha_release: 0.88 ha_domain: rejseplanen -ha_codeowners: - - '@DarkFox' ha_platforms: - sensor ha_integration_type: integration diff --git a/source/_integrations/seventeentrack.markdown b/source/_integrations/seventeentrack.markdown index 72139122b4b..a4ed5831e40 100644 --- a/source/_integrations/seventeentrack.markdown +++ b/source/_integrations/seventeentrack.markdown @@ -11,7 +11,7 @@ ha_codeowners: ha_domain: seventeentrack ha_platforms: - sensor -ha_integration_type: integration +ha_integration_type: service --- The seventeentrack {% term integration %} allows users to get package data tied to their [17track.net](https://www.17track.net) account. The integration creates both summary sensors, which show the number of packages in a current state (e.g., "In Transit"), as well as individual sensors for each package within the account. diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index 4f19d13e9fb..d9728a66504 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -5,8 +5,8 @@ ha_category: - Binary sensor - Climate - Cover - - Event - Energy + - Event - Light - Number - Sensor diff --git a/source/_integrations/smud.markdown b/source/_integrations/smud.markdown index a98285110b4..a321ea4cb82 100644 --- a/source/_integrations/smud.markdown +++ b/source/_integrations/smud.markdown @@ -4,7 +4,7 @@ description: Get energy usage from Sacramento Municipal Utility District (SMUD) ha_category: - Energy - Sensor -ha_release: 2024.4 +ha_release: 2023.8 ha_domain: smud ha_integration_type: virtual ha_supporting_domain: opower diff --git a/source/_integrations/teslemetry.markdown b/source/_integrations/teslemetry.markdown index 97112d80a39..5822a1e1543 100644 --- a/source/_integrations/teslemetry.markdown +++ b/source/_integrations/teslemetry.markdown @@ -89,4 +89,3 @@ The integration will create sensor entities for a variety of metrics that relate - Power - State code (disabled by default) - Vehicle - diff --git a/source/_integrations/todo.markdown b/source/_integrations/todo.markdown index 1c4886f455b..c07dc406748 100644 --- a/source/_integrations/todo.markdown +++ b/source/_integrations/todo.markdown @@ -144,4 +144,4 @@ target: ## Related topics - [Local to-do integration](/integrations/local_todo/) -- [To-do list card](/dashboards/todo-list/) \ No newline at end of file +- [To-do list card](/dashboards/todo-list/) diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown index de18a3d42d9..654890c4a28 100644 --- a/source/_integrations/todoist.markdown +++ b/source/_integrations/todoist.markdown @@ -205,4 +205,4 @@ Here are two example JSON payloads resulting in the same task: - [To-do list integration documentation](/integrations/todo) - [List of to-do list integrations](/integrations/#to-do-list) - [To-do list card](/dashboards/todo-list/)- -- [Dashboards](/dashboards/dashboards/) \ No newline at end of file +- [Dashboards](/dashboards/dashboards/) diff --git a/source/_integrations/webmin.markdown b/source/_integrations/webmin.markdown index f37204eca78..24ac6e982dc 100644 --- a/source/_integrations/webmin.markdown +++ b/source/_integrations/webmin.markdown @@ -11,6 +11,7 @@ ha_codeowners: ha_domain: webmin ha_integration_type: device ha_platforms: + - diagnostics - sensor --- diff --git a/source/_integrations/whirlpool.markdown b/source/_integrations/whirlpool.markdown index 5629b5f13f7..d634a034e3e 100644 --- a/source/_integrations/whirlpool.markdown +++ b/source/_integrations/whirlpool.markdown @@ -13,6 +13,7 @@ ha_codeowners: ha_domain: whirlpool ha_platforms: - climate + - diagnostics - sensor ha_integration_type: hub --- diff --git a/source/_integrations/whisper.markdown b/source/_integrations/whisper.markdown index 9298b2de6db..d60b91aa302 100644 --- a/source/_integrations/whisper.markdown +++ b/source/_integrations/whisper.markdown @@ -19,6 +19,7 @@ ha_platforms: - stt - switch - tts + - wake_word ha_iot_class: Local Push ha_zeroconf: true --- diff --git a/source/_integrations/yolink.markdown b/source/_integrations/yolink.markdown index 9bd3b8585cb..e84ad1c4a67 100644 --- a/source/_integrations/yolink.markdown +++ b/source/_integrations/yolink.markdown @@ -27,6 +27,7 @@ ha_platforms: - sensor - siren - switch + - valve ha_integration_type: integration --- From 84582809c0f23c45927f8e7901f176df35f57b6c Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 2 Apr 2024 13:54:30 +0200 Subject: [PATCH 19/84] 2024.4: Add full changelog --- source/changelogs/core-2024.4.markdown | 3687 ++++++++++++++++++++++++ 1 file changed, 3687 insertions(+) diff --git a/source/changelogs/core-2024.4.markdown b/source/changelogs/core-2024.4.markdown index 10a3c348d9b..7301e641f73 100644 --- a/source/changelogs/core-2024.4.markdown +++ b/source/changelogs/core-2024.4.markdown @@ -11,3 +11,3690 @@ For a summary in a more readable format: ## All changes +- Add permobil entity ([@IsakNyberg] - [#111761]) +- Bump version to 2024.4.0.dev0 ([@bramkragten] - [#111755]) +- Improve zha coordinator typing ([@cdce8p] - [#111767]) +- Add normalized name registry items base class ([@jpbede] - [#111666]) +- Remove 'values' from services validation ([@balloob] - [#111440]) +- Use proper constant in Airzone Cloud climate tests ([@Noltari] - [#111747]) +- Axis improve coverage binary tests ([@Kane610] - [#111758]) +- Add icon translations to Hue ([@joostlek] - [#111725]) +- Import enphase_envoy in the executor to avoid blocking the event loop ([@bdraco] - [#111805]) +- Add icon translations to IPP ([@joostlek] - [#111846]) +- Import discovergy in the executor to avoid blocking the event loop ([@jpbede] - [#111824]) +- Import homekit in the executor to avoid blocking the event loop ([@bdraco] - [#111809]) +- Import upnp in the executor to avoid blocking the event loop ([@bdraco] - [#111808]) +- Import logbook in the executor to avoid blocking the event loop ([@bdraco] - [#111807]) +- Import flux_led in the executor to avoid blocking the event loop ([@bdraco] - [#111806]) +- Import rest in the executor to avoid blocking the event loop ([@bdraco] - [#111804]) +- Remove areas template filter ([@emontnemery] - [#111827]) +- Add generic classes BaseFlowHandler and BaseFlowManager ([@emontnemery] - [#111814]) +- Remove unused translation key from Ecovacs mower ([@edenhaus] - [#111754]) +- Add icon translations to Laundrify ([@joostlek] - [#111856]) +- Add icon translations to Lastfm ([@joostlek] - [#111855]) +- Add icon translations to Justnimbus ([@joostlek] - [#111849]) +- Add icon translations to Kaleidescape ([@joostlek] - [#111850]) +- Add icon translations to Intellifire ([@joostlek] - [#111845]) +- Add icon translations to KNX ([@joostlek] - [#111852]) +- Migrate integrations a-d to generic flowhandler ([@emontnemery] - [#111861]) +- Migrate integrations e-h to generic flowhandler ([@emontnemery] - [#111862]) +- Migrate integrations u-z to generic flowhandler ([@emontnemery] - [#111866]) +- Migrate integrations i-m to generic flowhandler ([@emontnemery] - [#111863]) +- Migrate integrations n-r to generic flowhandler ([@emontnemery] - [#111864]) +- Migrate integrations s-t to generic flowhandler ([@emontnemery] - [#111865]) +- Switch influxdb to use a SimpleQueue ([@bdraco] - [#111798]) +- Remove unused variable in stats _sorted_statistics_to_dict ([@bdraco] - [#111912]) +- Add person tracking for UniFi Protect ([@AngellusMortis] - [#111289]) +- Add Vallox filter replacement date ([@yozik04] - [#111391]) +- Bump actions/cache from 4.0.0 to 4.0.1 (@dependabot - [#111916]) +- Bump github/codeql-action from 3.24.5 to 3.24.6 (@dependabot - [#111917]) +- Add icon translations to Kodi ([@joostlek] - [#111853]) +- Add icon translations to Enocean ([@joostlek] - [#111514]) +- Add icon translations to EZVIZ ([@joostlek] - [#111532]) +- Add icon translations to Flipr ([@joostlek] - [#111540]) +- Add icon translations to Flux LED ([@joostlek] - [#111545]) +- Add icon translations to Hydrawise ([@joostlek] - [#111810]) +- Add reconfigure step to config flow ([@gjohansson-ST] - [#108794]) +- Add icon translations to Medcom BLE ([@joostlek] - [#111904]) +- Add icon translations to Keymitt BLE ([@joostlek] - [#111851]) +- Add icon translations to IFTTT ([@joostlek] - [#111842]) +- Add icon translations to Idasen desk ([@joostlek] - [#111813]) +- Add icon translations to Lidarr ([@joostlek] - [#111896]) +- Add icon translations to LCN ([@joostlek] - [#111895]) +- Remove config flow specifics from FlowResult ([@emontnemery] - [#111932]) +- Add icon translations to LifX ([@joostlek] - [#111897]) +- Add icon translations to min max ([@joostlek] - [#111908]) +- Add icon translations to Minecraft Server ([@joostlek] - [#111928]) +- Add icon translations to Mill ([@joostlek] - [#111907]) +- Update mypy to a custom version ([@cdce8p] - [#111258]) +- Add icon translations to Litterrobot ([@joostlek] - [#111899]) +- Add icon translations to Local IP ([@joostlek] - [#111900]) +- Add icon translations to Lyric ([@joostlek] - [#111902]) +- Add icon translations to Motioneye ([@joostlek] - [#111936]) +- Add icon translations to Monoprice ([@joostlek] - [#111934]) +- Fix utility meter reset without tarrifs ([@gibwar] - [#102884]) +- Fix LingeringTask after test completion in enphase_envoy ([@catsmanac] - [#111940]) +- Fix loader test warning ([@cdce8p] - [#111965]) +- Add icon translations to MQTT ([@joostlek] - [#111945]) +- Add icon translations to Neato ([@joostlek] - [#111947]) +- Add icon translations to Nanoleaf ([@joostlek] - [#111946]) +- Add icon translations to Motion blinds ([@joostlek] - [#111935]) +- Add icon translations to Modem callerID ([@joostlek] - [#111929]) +- Use default icon for Melcloud ([@joostlek] - [#111905]) +- Fix generic HassJob typing ([@cdce8p] - [#111973]) +- Fix util create_eager_task typing ([@cdce8p] - [#111976]) +- Add icon translations to OpenUV ([@joostlek] - [#111996]) +- Add icon translations to Notion ([@joostlek] - [#111984]) +- Add icon translations to Modern Forms ([@joostlek] - [#111933]) +- Add icon translations to Nextcloud ([@joostlek] - [#111982]) +- Add icon translations to NZBGet ([@joostlek] - [#111985]) +- Add icon translations to Netgear LTE ([@joostlek] - [#111974]) +- Add icon translations to Omnilogic ([@joostlek] - [#111989]) +- Add icon translations to Ondilo ico ([@joostlek] - [#111990]) +- Add icon translations to Octoprint ([@joostlek] - [#111988]) +- Add icon translations to Opensky ([@joostlek] - [#111994]) +- Add icon translations to Openhome ([@joostlek] - [#111993]) +- Add icon translations to OpenAI Conversation ([@joostlek] - [#111992]) +- Add icon translations to ovo energy ([@joostlek] - [#111997]) +- Reduce ESPHome reconnect time ([@bdraco] - [#112001]) +- Reduce samsungtv startup time ([@bdraco] - [#112007]) +- Convert command_line to use asyncio for subprocesses ([@bdraco] - [#111927]) +- Apply better names to a couple of dicts in Axis config flow ([@Kane610] - [#111964]) +- Add icon translations to Nmap tracker ([@joostlek] - [#111983]) +- Add icon translations to Opentherm gw ([@joostlek] - [#111995]) +- Add entity and icon translations to Onvif ([@joostlek] - [#111991]) +- Add icon translations to Netgear ([@joostlek] - [#111972]) +- Remove deprecated `hass.components.hassio` usage ([@jpbede] - [#111878]) +- Streamline naming in the Axis integration ([@Kane610] - [#112044]) +- Simplify load_executor check in loader ([@bdraco] - [#112029]) +- Import co2signal in the executor to avoid blocking the event loop ([@bdraco] - [#112058]) +- Import ambient_station in the executor to avoid blocking the event loop ([@bdraco] - [#112053]) +- Refactor file_upload to avoid janus dep ([@bdraco] - [#112032]) +- Import snmp in the executor to avoid blocking the event loop ([@bdraco] - [#112065]) +- Pre-import more frontend deps to avoid importing when the event loop is running ([@bdraco] - [#112031]) +- Switch config to use async_get_component/async_get_platform ([@bdraco] - [#112071]) +- Import switchbot in the executor to avoid blocking the event loop ([@bdraco] - [#112077]) +- Import smtp in the executor to avoid blocking the loop ([@bdraco] - [#112089]) +- Import integrations using sense-energy in the executor to avoid loop blocking ([@bdraco] - [#112087]) +- Import baf in the executor to avoid blocking the event loop ([@bdraco] - [#112086]) +- Import caldav in the executor to avoid blocking the event loop ([@bdraco] - [#112081]) +- Import yeelight in the executor to avoid blocking the event loop ([@bdraco] - [#112080]) +- Import template in the executor to avoid blocking the event loop ([@bdraco] - [#112070]) +- Import stream in the executor to avoid blocking the event loop ([@bdraco] - [#112078]) +- Avoid trying to import platforms that do not exist ([@bdraco] - [#112028]) +- Preload platform integrations to better group executor usage ([@bdraco] - [#112010]) +- Move Ping binary sensor attributes to sensor entities ([@jpbede] - [#112004]) +- Add YoLInk YS7905-UC Support ([@matrixd2] - [#111709]) +- Fix flakey airzone_cloud tests by avoiding creation of the websocket ([@Noltari] - [#112102]) +- Add icon translations to Nextbus ([@joostlek] - [#111981]) +- Add icon translations to Nexia ([@joostlek] - [#111980]) +- Add tests for number of devices created in myuplink ([@astrandb] - [#111816]) +- Load wyoming in the executor to avoid blocking the event loop ([@bdraco] - [#112107]) +- Add event platform to rfxtrx ([@elupus] - [#111526]) +- Add comment to integration platform helper about blocking I/O ([@bdraco] - [#112103]) +- Address late review for Ping ([@jpbede] - [#112123]) +- Import steamist in the executor to avoid blocking the loop ([@bdraco] - [#112111]) +- Move all System Monitor updates into single Data Update Coordinator ([@gjohansson-ST] - [#112055]) +- Add the ability to resume cleaning on start button ([@Lash-L] - [#112122]) +- Clean up setup and teardown of Axis integration ([@Kane610] - [#112120]) +- Exclude tankerkoenig attributes from recording ([@jpbede] - [#112109]) +- Avoid calling async_get_component twice for each component being setup ([@bdraco] - [#112096]) +- Import screenlogic in the executor to avoid blocking the loop ([@bdraco] - [#112097]) +- Avoid compiling entity service schema when passed defaults ([@bdraco] - [#112099]) +- Add package detection to Reolink ([@starkillerOG] - [#112126]) +- Try to preload the config platform when loading a component ([@bdraco] - [#112104]) +- Fix flakey tplink test ([@bdraco] - [#112135]) +- Add icon translations to Melnor ([@joostlek] - [#111906]) +- Ensure setup loads top level component before platforms ([@bdraco] - [#112057]) +- Add Reolink PTZ patrol start/stop ([@starkillerOG] - [#112129]) +- Fix async_prepare_setup_platform test ([@bdraco] - [#112143]) +- Fix places not changed to hub in Axis tests ([@Kane610] - [#112128]) +- Split up hassio coordinator and data into new file to allow preload ([@bdraco] - [#112147]) +- Preload config flow if it exists when loading a component ([@bdraco] - [#112145]) +- Migrate condition/state/trigger helper to use async_get_platform ([@bdraco] - [#112144]) +- Use MockConfigEntry in hue tests ([@bdraco] - [#112149]) +- Fix async_get_component loading in the executor when the module is already loaded ([@bdraco] - [#112153]) +- Add types throughout the prometheus tests ([@agoode] - [#112156]) +- Run more of hassio setup in in tasks ([@bdraco] - [#112151]) +- Streamline UniFi entity descriptions ([@Kane610] - [#112136]) +- Avoid multiple executor jobs with concurrent calls to async_get_component ([@bdraco] - [#112155]) +- Ignore unsupported devices (room sensors, floor heating) in ViCare integration ([@CFenner] - [#112106]) +- Group loading of platforms in the import executor ([@bdraco] - [#112141]) +- Improve mqtt value template error logging ([@jbouwh] - [#110492]) +- Import recorder and common recorder platforms before asyncio starts ([@bdraco] - [#112131]) +- Group platform loads in homekit_controller to minimize executor use ([@bdraco] - [#112148]) +- Avoid using coordinator in config flow of APCUPSD ([@yuxincs] - [#112121]) +- Update System Bridge to support version 4.x.x and above ([@timmo001] - [#107957]) +- Add local API support to elmax ([@albertogeniola] - [#94392]) +- Bump actions/download-artifact from 4.1.3 to 4.1.4 (@dependabot - [#112159]) +- Remove unused test helper mock_area_registry ([@emontnemery] - [#112172]) +- Migrate config to use async_get_component ([@bdraco] - [#112160]) +- Migrate device_automation to use async_get_platform ([@bdraco] - [#112162]) +- Migrate rest to use eager tasks for setup ([@bdraco] - [#112166]) +- Migrate application_credentials to use async_get_platform ([@bdraco] - [#112161]) +- Import in the executor by default for core integrations ([@bdraco] - [#112127]) +- Update systembridgeconnector to 4.0.2 ([@timmo001] - [#112174]) +- Issues template function ([@RoboMagus] - [#95206]) +- Fix pylint/mypy on elmax integration ([@Noltari] - [#112211]) +- Add icon translations to Snapcast ([@joostlek] - [#112229]) +- Add icon translations to Rainbird ([@joostlek] - [#112200]) +- Add icon translations to RFXCOM RFXtrx ([@joostlek] - [#112209]) +- Add icon translations to Simplisafe ([@joostlek] - [#112224]) +- Add icon translations to Ridwell ([@joostlek] - [#112210]) +- Add icon translations to Recollect Waste ([@joostlek] - [#112204]) +- Add icon translations to Private BLE Device ([@joostlek] - [#112185]) +- Add icon translations to PurpleAir ([@joostlek] - [#112192]) +- Add icon translations to Rainmachine ([@joostlek] - [#112202]) +- Add icon translations to Renault ([@joostlek] - [#112205]) +- Add icon translations to Solarlog ([@joostlek] - [#112232]) +- Add icon translations to Songpal ([@joostlek] - [#112234]) +- Add icon translations to Philips TV ([@joostlek] - [#112179]) +- Add icon translations to Smarttub ([@joostlek] - [#112227]) +- Add icon translations to sabNZBd ([@joostlek] - [#112219]) +- Add icon translations to Slack ([@joostlek] - [#112226]) +- Add icon translations to Season ([@joostlek] - [#112221]) +- Add icon translations to Screenlogic ([@joostlek] - [#112220]) +- Change log level for System Bridge service handlers ([@timmo001] - [#112175]) +- Add icon translations to Roon ([@joostlek] - [#112218]) +- Add icon translations to Swiss public transport ([@joostlek] - [#112254]) +- Address srp_energy late review comment ([@briglx] - [#105756]) +- Add Hyperion sensor to report active priority on each instance ([@belangp] - [#102333]) +- Add icon translations to Sensibo ([@joostlek] - [#112222]) +- Fix authentication issues for asekopool ([@hopkins-tk] - [#99495]) +- Fix spaceapi attribute for closed icon ([@Xiretza] - [#108596]) +- Add sensor platform to Teslemetry ([@Bre77] - [#109088]) +- Add config flow to homeworks ([@emontnemery] - [#112042]) +- Enable strict typing of homeworks ([@emontnemery] - [#112267]) +- Add device and enable entity name for Lutron homeworks ([@emontnemery] - [#112268]) +- Add icon translations to Steamist ([@joostlek] - [#112246]) +- Add icon translations to Starlink ([@joostlek] - [#112244]) +- Add icon translations to Squeezebox ([@joostlek] - [#112240]) +- Add icon translations to Streamlabswater ([@joostlek] - [#112247]) +- Add permobil binary sensor ([@IsakNyberg] - [#112130]) +- Add icon translations to Sure Petcare ([@joostlek] - [#112253]) +- Add icon translations to Spotify ([@joostlek] - [#112239]) +- Remove callback decorator from coroutine ([@Kane610] - [#112276]) +- Update pytest to 8.1.0 ([@cdce8p] - [#112173]) +- Reduce some linear searches to cleanup the device registry ([@bdraco] - [#112277]) +- Ensure hassio diagnostics get imported with the integration ([@bdraco] - [#112286]) +- Add support for preloading platforms in the loader ([@bdraco] - [#112282]) +- Add icon translations to Elkm1 ([@joostlek] - [#111512]) +- Refactor integration platforms to import in the executor ([@bdraco] - [#112168]) +- Remove unnecessary access to UniFi hub object in tests ([@Kane610] - [#112275]) +- Add icon translations to SMS ([@joostlek] - [#112228]) +- Add icon translations to Rainforest Raven ([@joostlek] - [#112201]) +- Add icon translations to Plum lightpad ([@joostlek] - [#112183]) +- Add icon translations to Profiler ([@joostlek] - [#112186]) +- Add icon translations to Prosegur ([@joostlek] - [#112187]) +- Add icon translations to Prusalink ([@joostlek] - [#112188]) +- Add icon translations to PS4 ([@joostlek] - [#112190]) +- Add icon translations to QBittorrent ([@joostlek] - [#112193]) +- Add icon translations to QNap QSW ([@joostlek] - [#112194]) +- Add icon translations to Rachio ([@joostlek] - [#112195]) +- Add icon translations to Radarr ([@joostlek] - [#112196]) +- Add icon translations to Radiotherm ([@joostlek] - [#112197]) +- Add icon translations to RDW ([@joostlek] - [#112203]) +- Add icon translations to Renson ([@joostlek] - [#112207]) +- Add icon translations to Ring ([@joostlek] - [#112212]) +- Add icon translations to Rituals perfume genie ([@joostlek] - [#112213]) +- Add icon translations to Roomba ([@joostlek] - [#112217]) +- Add icon translations to Skybell ([@joostlek] - [#112225]) +- Add icon translations to Snooz ([@joostlek] - [#112230]) +- Add icon translations to Solaredge ([@joostlek] - [#112231]) +- Add icon translations to Soundtouch ([@joostlek] - [#112236]) +- Add icon translations to Subaru ([@joostlek] - [#112252]) +- Deprecate old config options for MQTT json light ([@jbouwh] - [#111676]) +- Add icon translations to P1 monitor ([@joostlek] - [#111998]) +- Add icon translations to Speedtestdotnet ([@joostlek] - [#112237]) +- Use default icon in Romy ([@joostlek] - [#112215]) +- Add icon translations to Shopping list ([@joostlek] - [#112223]) +- Add icon translations to Pi-hole ([@joostlek] - [#112180]) +- Add icon translations to PECO ([@joostlek] - [#112169]) +- Add icon translations to Permobil ([@joostlek] - [#112170]) +- Add icon translations to Plex ([@joostlek] - [#112182]) +- Cleanup rainbird aiohttp client cleanup on EVENT_HOMEASSISTANT_CLOSE ([@allenporter] - [#112292]) +- Add icon translations to Switcher kis ([@joostlek] - [#112296]) +- Add icon translations to Systemmonitor ([@joostlek] - [#112300]) +- Add icon translations to Tautulli ([@joostlek] - [#112305]) +- Add icon translations to Trafikverket Train ([@joostlek] - [#112322]) +- Add icon translations to Trafikverket Ferry ([@joostlek] - [#112321]) +- Add icon translations to Trafikverket Camera ([@joostlek] - [#112320]) +- Add icon translations to Trafikverket Weather station ([@joostlek] - [#112323]) +- Add icon translations to Workday ([@joostlek] - [#112359]) +- Add icon translations to Yale ([@joostlek] - [#112361]) +- Add icon translations to YouTube ([@joostlek] - [#112365]) +- Add icon translations to YoLink ([@joostlek] - [#112364]) +- Add icon translations to Yardian ([@joostlek] - [#112362]) +- Add icon translations to Xiaomi Aqara ([@joostlek] - [#112360]) +- Add icon translations to Weatherkit ([@joostlek] - [#112354]) +- Add icon translations to Synology DSM ([@joostlek] - [#112299]) +- Add icon translations to Trend ([@joostlek] - [#112325]) +- Add icon translations to TP-Link ([@joostlek] - [#112317]) +- Add icon translations to Tesla Wall Connector ([@joostlek] - [#112309]) +- Add icon translations to Tolo ([@joostlek] - [#112313]) +- Add icon translations to Tile ([@joostlek] - [#112310]) +- Add icon translations to Todoist ([@joostlek] - [#112312]) +- Add icon translations to Template ([@joostlek] - [#112308]) +- Add icon translations to Syncthing ([@joostlek] - [#112297]) +- Add icon translations to Tedee ([@joostlek] - [#112307]) +- Update aioairzone-cloud to v0.4.6 ([@Noltari] - [#112198]) +- Add support for System Bridge service responses ([@timmo001] - [#100055]) +- Remove async_entity_ids and get_entity_ids from entity registry ([@bdraco] - [#112311]) +- Add Beaufort to wind_speed ([@fwestenberg] - [#105795]) +- Add icon translations to WebOS TV ([@joostlek] - [#112355]) +- Add icon translations to Watttime ([@joostlek] - [#112351]) +- Add icon translations to Uptimerobot ([@joostlek] - [#112336]) +- Initialize triggers eagerly ([@bdraco] - [#112294]) +- Migrate remaining calls in config modules to async_get_component ([@bdraco] - [#112293]) +- Migrate system flows to use the discovery helper ([@bdraco] - [#112291]) +- Simplify loader preload logic for config_flows ([@bdraco] - [#112290]) +- Remove entity description mixin in Accuweather ([@joostlek] - [#112375]) +- Remove entity description mixin in Bravia TV ([@joostlek] - [#112395]) +- Remove entity description mixin in Brother ([@joostlek] - [#112396]) +- Add icon translations to Vizio ([@joostlek] - [#112348]) +- Remove entity description mixin in Balboa ([@joostlek] - [#112389]) +- Remove entity description mixin in BMW ([@joostlek] - [#112391]) +- Remove entity description mixin in Bond ([@joostlek] - [#112393]) +- Remove entity description mixin in Bosch SHC ([@joostlek] - [#112394]) +- Remove entity description mixin in Dovado ([@joostlek] - [#112402]) +- Remove entity description mixin in Ecobee ([@joostlek] - [#112408]) +- Add icon translations to Vodafone Station ([@joostlek] - [#112349]) +- Remove entity description mixin in AirQ ([@joostlek] - [#112377]) +- Remove entity description mixin in Aladdin Connect ([@joostlek] - [#112379]) +- Remove entity description mixin in Azure DevOps ([@joostlek] - [#112385]) +- Add comments why we use loop.create_task in core ([@MartinHjelmare] - [#112372]) +- Remove entity description mixin in Dormakaba dKey ([@joostlek] - [#112401]) +- Add button to homeworks ([@emontnemery] - [#112269]) +- Remove entity description mixin in Airzone ([@joostlek] - [#112378]) +- Remove list comprehension when adding entities in Nextcloud ([@jpbede] - [#112429]) +- Remove list comprehension when adding entities in opengarage ([@jpbede] - [#112430]) +- Remove entity description mixin in Electric Kiwi ([@joostlek] - [#112411]) +- Migrate Azure DevOps to has entity name ([@joostlek] - [#112420]) +- Remove entity description mixin in Devolo Home Network ([@joostlek] - [#112399]) +- Remove list comprehension when adding entities in Smartthings ([@jpbede] - [#112432]) +- Remove list comprehension when adding entities in Wallbox ([@jpbede] - [#112433]) +- Remove the deprecated YAML support for Aftership ([@jpbede] - [#112390]) +- Add icon translations to Azure DevOps ([@joostlek] - [#112436]) +- Small cleanup in Dexcom ([@joostlek] - [#112425]) +- Break out UniFi config handling to own class ([@Kane610] - [#111325]) +- Rename reconfigure step in apple_tv ([@gjohansson-ST] - [#112438]) +- Remove myself as a codeowner for neato ([@dshokouhi] - [#112410]) +- Remove entity description mixin in AirNow ([@joostlek] - [#112376]) +- Add icon translations to Vilfo ([@joostlek] - [#112347]) +- Add icon translations to Verisure ([@joostlek] - [#112342]) +- Add icon translations to Vallox ([@joostlek] - [#112339]) +- Remove entity description mixin in Abode ([@joostlek] - [#112374]) +- Add icon translations to Velbus ([@joostlek] - [#112340]) +- Add icon translations to Ukraine Alarm ([@joostlek] - [#112330]) +- Add icon translations to Twitch ([@joostlek] - [#112329]) +- Remove entity description mixin in Android IP Webcam ([@joostlek] - [#112380]) +- Remove entity description mixin in Aseko ([@joostlek] - [#112382]) +- Remove entity description mixin in Awair ([@joostlek] - [#112384]) +- Remove entity description mixin in Comfoconnect ([@joostlek] - [#112397]) +- Remove entity description mixin in Daikin ([@joostlek] - [#112398]) +- Remove entity description mixin in Doorbird ([@joostlek] - [#112400]) +- Remove entity description mixin in Ecoforest ([@joostlek] - [#112409]) +- Add icon translations to Tomorrowio ([@joostlek] - [#112315]) +- Add TypeVar default for FlowResult ([@emontnemery] - [#112345]) +- Bump dorny/paths-filter from 3.0.1 to 3.0.2 (@dependabot - [#112158]) +- Bump SQLAlchemy to 2.0.28 ([@bdraco] - [#112314]) +- Pre import image_upload to avoid loading it after asyncio has started ([@bdraco] - [#112444]) +- Pre import webhook before asyncio starts ([@bdraco] - [#112441]) +- Limit legacy state translations to custom components ([@bdraco] - [#112295]) +- Remove list comprehension when adding entities in Vallox ([@jpbede] - [#112446]) +- Remove entity description mixin in BAF ([@joostlek] - [#112386]) +- Fix config modules being imported in the event loop ([@bdraco] - [#112462]) +- Adjust MAX_LOAD_CONCURRENTLY constant to allow 6 storage loaders ([@bdraco] - [#112468]) +- Add system_health to the hassio pre-imports to avoid a late executor job ([@bdraco] - [#112466]) +- Start fetching the source ip sooner in http to reduce setup time ([@bdraco] - [#112461]) +- Load network storage in a task to reduce startup time ([@bdraco] - [#112460]) +- Fix incorrect scope on checking files to load in translations ([@bdraco] - [#112457]) +- Migrate remaining get_platform in config to async_get_platform ([@bdraco] - [#112469]) +- Migrate remaining get_platform in check_config to async_get_platform ([@bdraco] - [#112470]) +- Add icon translations to Zeversolar ([@joostlek] - [#112367]) +- Remove myself as maintainer of the Rejseplanen integration ([@DarkFox] - [#112426]) +- Add icon translations to Tado ([@joostlek] - [#112301]) +- Add icon translations to iCloud ([@joostlek] - [#111812]) +- Add icon translations to Weatherflow ([@joostlek] - [#112353]) +- Add icon translations to Vesync ([@joostlek] - [#112344]) +- Add icon translations to Velux ([@joostlek] - [#112341]) +- Add icon translations to Tradfri ([@joostlek] - [#112319]) +- Add icon translations to UPnP ([@joostlek] - [#112335]) +- Add icon translations to Totalconnect ([@joostlek] - [#112316]) +- Add icon translations to TechnoVE ([@joostlek] - [#112306]) +- Add icon translations to Tami4 ([@joostlek] - [#112304]) +- Use default icon for Lupusec ([@joostlek] - [#111901]) +- Add icon translations to iBeacon ([@joostlek] - [#111811]) +- Add icon translations to V2C ([@joostlek] - [#112338]) +- Add test to ensure bootstrap continues if an integraton raises CancelledError ([@bdraco] - [#112472]) +- Avoid waiting for integration platforms in the parent integration ([@bdraco] - [#112467]) +- Add Reolink play quick reply message ([@starkillerOG] - [#112134]) +- Deprecate attributes of Nuki entities ([@steffenrapp] - [#111419]) +- Remove deprecated `hass.components` usage in config entry flow ([@jpbede] - [#111880]) +- Bump tesla-fleet-api to 0.4.9 ([@Bre77] - [#112288]) +- Remove deprecated `hass.components` usage in mobile_app ([@jpbede] - [#111888]) +- Wait to start emulated_hue until the started event ([@bdraco] - [#112477]) +- Fix detection of DLI sockets in wemo ([@bdraco] - [#112485]) +- Bump Wandalen/wretry.action from 1.4.4 to 1.4.5 (@dependabot - [#111700]) +- Remove entity description mixin in Enphase Envoy ([@joostlek] - [#112486]) +- Post System Bridge 4.x.x integration improvements ([@timmo001] - [#112189]) +- Add icon translations to Reolink ([@joostlek] - [#112208]) +- Improve integration_entities template function ([@emontnemery] - [#111943]) +- Remove constructor in WLED Options flow ([@joostlek] - [#112456]) +- Add icon translations to Tailwind ([@joostlek] - [#112303]) +- Add icon translations to Elgato ([@joostlek] - [#111423]) +- Add icon translations to Twentemilieu ([@joostlek] - [#112327]) +- Fix typo in Reolink translation keys ([@joostlek] - [#112489]) +- Remove entity description mixin in EnOcean ([@joostlek] - [#112483]) +- Add icon translations to Zone ([@joostlek] - [#112370]) +- Add icon translations to Zodiac ([@joostlek] - [#112369]) +- Add icon translations to Wilight ([@joostlek] - [#112357]) +- Add icon translations to ViCare ([@joostlek] - [#112346]) +- Add icon translations to UPB ([@joostlek] - [#112333]) +- Add icon translations to Tuya ([@joostlek] - [#112326]) +- Add icon translations to Transmission ([@joostlek] - [#112324]) +- Add icon translations to TP-Link Omada ([@joostlek] - [#112318]) +- Add icon translations to Poolsense ([@joostlek] - [#112184]) +- Add icon translations to Starline ([@joostlek] - [#112241]) +- Add icon translations to iZone ([@joostlek] - [#111848]) +- Add icon translations to isy994 ([@joostlek] - [#111847]) +- Add icon translations to Insteon ([@joostlek] - [#111844]) +- Add Shelly restart required binary sensor ([@chemelli74] - [#112493]) +- Remove entity description mixin in August ([@joostlek] - [#112383]) +- Add icon translations to Zerproc ([@joostlek] - [#112366]) +- Add icon translations to Whois ([@joostlek] - [#112356]) +- Add icon translations to Tailscale ([@joostlek] - [#112302]) +- Disable Shelly diagnostic binary sensor ([@chemelli74] - [#112497]) +- Remove entity description mixin in EasyEnergy ([@joostlek] - [#112407]) +- Remove entity description mixin in EnergyZero ([@joostlek] - [#112412]) +- Remove entity description mixin in Dremel 3D Printer ([@joostlek] - [#112405]) +- Add icon translations to Sonarr ([@joostlek] - [#112233]) +- Add icon translations to Wallbox ([@joostlek] - [#112350]) +- Enable some PERF rules ([@joostlek] - [#112498]) +- Simplify color mode logic in Tuya light ([@emontnemery] - [#110327]) +- Use an eager task for Sonos async_update_device_properties ([@bdraco] - [#112488]) +- Fix sonos overloading the executor when there are many devices ([@bdraco] - [#112482]) +- Add snapshot tests to webmin ([@autinerd] - [#112518]) +- Remove hourly weather entity from Environment Canada ([@gjohansson-ST] - [#112447]) +- Reduce executor jobs needed to setup filesize ([@bdraco] - [#112490]) +- Increase bootstrap preload test timeout ([@bdraco] - [#112520]) +- Fix homekit creating executor jobs to resolve default listen ips ([@bdraco] - [#112522]) +- Avoid importing counter and proximity integrations in logbook ([@bdraco] - [#112528]) +- Add icon translations to Waze Travel Time ([@joostlek] - [#112352]) +- Log tasks that are being waited on when startup is blocked ([@bdraco] - [#112542]) +- Move analytics setup to later stage to avoid delaying frontend startup ([@bdraco] - [#112535]) +- Pre import the rest of the recorder platforms before asyncio starts ([@bdraco] - [#112289]) +- Avoid having to work out the job type for each entity service at startup ([@bdraco] - [#112557]) +- Pass job type to event listeners when creating entities ([@bdraco] - [#112551]) +- Make HassJob job_type lookup lazy ([@bdraco] - [#112563]) +- Bump aioesphomeapi to 23.1.0 ([@jesserockz] - [#112560]) +- Speed up the frame helper ([@bdraco] - [#112562]) +- Bump Wandalen/wretry.action from 1.4.5 to 1.4.7 (@dependabot - [#112575]) +- Add icon translations to Twinkly ([@joostlek] - [#112328]) +- Make FlowResult a generic type ([@emontnemery] - [#111952]) +- Change KEY_HASS to be an aiohttp AppKey ([@cdce8p] - [#111954]) +- Avoid extracting the stack twice in system_log ([@bdraco] - [#112572]) +- Use KEY_HASS [h-z] ([@cdce8p] - [#112610]) +- Use KEY_HASS [a-g] ([@cdce8p] - [#112609]) +- Fix Bang and olufsen naming ([@joostlek] - [#111344]) +- Remove local imports of hass-nabucasa ([@emontnemery] - [#112634]) +- Log waiting tasks in bootstrap that are delaying startup ([@bdraco] - [#112637]) +- Schedule polling as periodic tasks ([@bdraco] - [#112640]) +- Fix homekit_controller delaying startup and shutdown ([@bdraco] - [#112671]) +- Fix dhcp delaying shutdown ([@bdraco] - [#112670]) +- Make zeroconf lookups background tasks ([@bdraco] - [#112669]) +- Close hue api if setup fails ([@bdraco] - [#112164]) +- Avoid writing registries to disk during startup ([@bdraco] - [#112662]) +- Bump python-telegram-bot package to 21.0.1 ([@malkstar] - [#110297]) +- Speed up importing mqtt platforms ([@bdraco] - [#112682]) +- Use aiohttp.AppKey for http ban keys ([@cdce8p] - [#112657]) +- Add TypeVar defaults for DataUpdateCoordinator ([@cdce8p] - [#111949]) +- Add reauthentication for husqvarna_automower ([@Thomas55555] - [#109930]) +- Use aiohttp.AppKey for http cors keys ([@cdce8p] - [#112658]) +- Bump devcontainer to 1-3.12 ([@edenhaus] - [#108709]) +- Update systembridgeconnector to version 4.0.3 ([@timmo001] - [#112608]) +- Make Event data generic ([@cdce8p] - [#111955]) +- Add empty line after module docstring [d-f] ([@cdce8p] - [#112698]) +- Add empty line after module docstring [s] ([@cdce8p] - [#112704]) +- Add empty line after module docstring [tests t-z] ([@cdce8p] - [#112712]) +- Add empty line after module docstring [tests q-s] ([@cdce8p] - [#112711]) +- Add empty line after module docstring [tests f-k] ([@cdce8p] - [#112709]) +- Add empty line after module docstring [tests a-e] ([@cdce8p] - [#112708]) +- Add empty line after module docstring [a-d] ([@cdce8p] - [#112697]) +- Add empty line after module docstring [g-i] ([@cdce8p] - [#112699]) +- Add empty line after module docstring [tests l-p] ([@cdce8p] - [#112710]) +- Add empty line after module docstring [j-m] ([@cdce8p] - [#112700]) +- Add empty line after module docstring [n-q] ([@cdce8p] - [#112702]) +- Add empty line after module docstring [r] ([@cdce8p] - [#112703]) +- Add empty line after module docstring [t-v] ([@cdce8p] - [#112705]) +- Add empty line after module docstring [w-z] ([@cdce8p] - [#112706]) +- Add empty line after module docstring [helpers + other] ([@cdce8p] - [#112707]) +- Remove Python 3.11 from CI ([@frenck] - [#112626]) +- Remove built-in support for import_executor in manifest ([@balloob] - [#112725]) +- Use more f-strings [ruff] ([@cdce8p] - [#112695]) +- Add empty line after module docstring (2) [components] ([@cdce8p] - [#112736]) +- Add empty line after module docstring (2) [tests.components] ([@cdce8p] - [#112737]) +- Add empty line after module docstring (2) [other] ([@cdce8p] - [#112738]) +- Replace EventType with Event [a-g] ([@cdce8p] - [#112739]) +- Replace EventType with Event [h-i] ([@cdce8p] - [#112740]) +- Replace EventType with Event [l-s] ([@cdce8p] - [#112741]) +- Replace EventType with Event [t-z] ([@cdce8p] - [#112742]) +- Replace EventType with Event [helpers] ([@cdce8p] - [#112743]) +- Add diagnostics to webmin ([@autinerd] - [#112543]) +- Update byte string formatting ([@cdce8p] - [#112752]) +- Add empty line after module docstring (3) ([@cdce8p] - [#112750]) +- Replace EventType with Event [missing] ([@cdce8p] - [#112753]) +- Update EventBus listen type signatures ([@cdce8p] - [#112760]) +- Remove entity description mixin in Fully Kiosk ([@joostlek] - [#112768]) +- Remove entity description mixin in Flume ([@joostlek] - [#112765]) +- Remove entity description mixin in HomeKit Device ([@joostlek] - [#112775]) +- Remove entity description mixin in iBeacon ([@joostlek] - [#112779]) +- Avoid trying to load translations for integrations that have none ([@bdraco] - [#112683]) +- Replace periodic tasks with background tasks ([@bdraco] - [#112726]) +- Fix race reloading homekit_controller ([@bdraco] - [#112790]) +- Add Event typing to websocket_api for entity subscriptions ([@bdraco] - [#112786]) +- Improve entity translation typing ([@bdraco] - [#112788]) +- Run service call tasks eagerly ([@bdraco] - [#112791]) +- Use Mapping as default for Event data ([@cdce8p] - [#112769]) +- Use eager_start for homeassistant triggers ([@bdraco] - [#112801]) +- Use eager_start for tasks to register integration platforms ([@bdraco] - [#112800]) +- Break out UniFi platform registration to its own class ([@Kane610] - [#112514]) +- Unifi more polish on entity description ([@Kane610] - [#112281]) +- Cache the job type for entity service calls ([@bdraco] - [#112793]) +- Make SSDP tasks background HassJob to avoid delaying startup ([@bdraco] - [#112668]) +- Give the UniFi integration better control over what data to load ([@Kane610] - [#112804]) +- Move restoring inactive clients method into UniFi entity loader ([@Kane610] - [#112805]) +- Remove entity description mixin in Jellyfin ([@joostlek] - [#112782]) +- Remove entity description mixin in Goodwe ([@joostlek] - [#112773]) +- Move wireless clients into entity_loader ([@Kane610] - [#112813]) +- Cleanup mqtt discovery code ([@jbouwh] - [#112749]) +- Update modbus test to include a dummy sensor ([@janiversen] - [#112820]) +- Revert "Cleanup mqtt discovery code" ([@jbouwh] - [#112818]) +- Remove deprecated CLOSE_COMM_ON_ERROR from modbus ([@janiversen] - [#112821]) +- Remove entity description mixin in Huawei LTE ([@joostlek] - [#112777]) +- Remove outdated prettier and yamllint `azure-*.yml` ignores ([@scop] - [#112819]) +- Remove deprecated retry_on_empty from modbus ([@janiversen] - [#112822]) +- Remove entity description mixin in Glances ([@joostlek] - [#112772]) +- Remove entity description mixin in EZVIZ ([@joostlek] - [#112764]) +- Remove entity description mixin in Environment Canada ([@joostlek] - [#112763]) +- Remove entity description mixin in Google wifi ([@joostlek] - [#112774]) +- Remove entity description mixin in idasen desk ([@joostlek] - [#112780]) +- Remove entity description mixin in Honeywell ([@joostlek] - [#112776]) +- Remove entity description mixin in Geocaching ([@joostlek] - [#112770]) +- Remove entity description mixin in AVM Fritz!Tools ([@joostlek] - [#112767]) +- Use eager_start for discovery listeners ([@bdraco] - [#112803]) +- Rename get_deconz_session to get_deconz_api ([@Kane610] - [#112826]) +- Split out Axis config data ([@Kane610] - [#112825]) +- Add icon translations to Yeelight ([@joostlek] - [#112363]) +- Bump mastodon.py version to 1.8.1 ([@thejeffreystone] - [#112728]) +- Improve performance of image streams ([@bdraco] - [#112810]) +- Allow Just-in-Time platform setup for mqtt ([@jbouwh] - [#112720]) +- Enphase Envoy refactor and extend diagnostics ([@catsmanac] - [#109080]) +- Avoid saving auth right after we load it during startup ([@bdraco] - [#112008]) +- Schedule coroutines with eager_task from async_track_state_change_event ([@bdraco] - [#112807]) +- Remove entity description mixin in IPP ([@joostlek] - [#112781]) +- Cleanup mqtt PLATFORMS constant and CI-test platform filters ([@jbouwh] - [#112847]) +- Only read cpu once during systemmonitor setup ([@bdraco] - [#112863]) +- Schedule coroutine functions eagerly when async_listen uses run_immediately ([@bdraco] - [#112846]) +- Update pytest to 8.1.1 ([@cdce8p] - [#112859]) +- Refactor handling of device updates in ESPHome ([@bdraco] - [#112864]) +- Split out deCONZ hub ([@Kane610] - [#112854]) +- Bump yalexs to 2.0.0 ([@abjorck] - [#111706]) +- Add Locks to Xiaomi-BLE ([@Ernst79] - [#111156]) +- Remove entity description mixin in Freebox ([@joostlek] - [#112766]) +- Remove entity description mixin in Private BLE Device ([@joostlek] - [#112922]) +- Remove entity description mixin in Netgear ([@joostlek] - [#112911]) +- Remove entity description mixin in SFR Box ([@joostlek] - [#112937]) +- Remove entity description mixin in Renault ([@joostlek] - [#112925]) +- Remove entity description mixin in Roku ([@joostlek] - [#112931]) +- Remove entity description mixin in Overkiz ([@joostlek] - [#112914]) +- Remove entity description mixin in Trafikverket Weatherstation ([@joostlek] - [#112957]) +- Remove entity description mixin in Trafikverket Train ([@joostlek] - [#112956]) +- Remove entity description mixin in Trafikverket Ferry ([@joostlek] - [#112955]) +- Remove entity description mixin in Trafikverket Camera ([@joostlek] - [#112954]) +- Remove entity description mixin in Sensibo ([@joostlek] - [#112936]) +- Improve 17track tests ([@shaiu] - [#112734]) +- Fix mqtt platform setup race ([@jbouwh] - [#112888]) +- Run debouncer tasks eagerly to avoid scheduling on the event loop ([@bdraco] - [#112789]) +- Import custom components in the executor by default ([@bdraco] - [#112177]) +- Remove entity description mixin in Vodafone Station ([@joostlek] - [#112967]) +- Remove entity description mixin in Zeversolar ([@joostlek] - [#112977]) +- Remove entity description mixin in Youtube ([@joostlek] - [#112975]) +- Remove entity description mixin in WAQI ([@joostlek] - [#112970]) +- Remove entity description mixin in Tradfri ([@joostlek] - [#112953]) +- Use async_at_started in Speedtest.Net ([@gjohansson-ST] - [#112110]) +- Remove entity description mixin in Permobil ([@joostlek] - [#112918]) +- Remove entity description mixin in PEGELONLINE ([@joostlek] - [#112917]) +- Remove entity description mixin in Melcloud ([@joostlek] - [#112905]) +- Remove entity description mixin in Justnimbus ([@joostlek] - [#112893]) +- Remove entity description mixin in LaCrosse View ([@joostlek] - [#112900]) +- Move wsdot fixture to integration test ([@joostlek] - [#112996]) +- Move uk_transport fixture to integration test ([@joostlek] - [#112995]) +- Move OpenALPR cloud fixture to integration test ([@joostlek] - [#112994]) +- Remove not needed hass.async_block_till_done in test ([@jbouwh] - [#113002]) +- Remove entity description mixin in Switcher Kis ([@joostlek] - [#112945]) +- Remove entity description mixin in Nettigo Air Monitor ([@joostlek] - [#112909]) +- Remove entity description mixin in Tractive ([@joostlek] - [#112952]) +- Remove entity description mixin in Synology DSM ([@joostlek] - [#112946]) +- Add icon translations to Picnic ([@joostlek] - [#112181]) +- Add icon translations to Husqvarna automower ([@joostlek] - [#111727]) +- Remove entity description mixin in Shelly ([@joostlek] - [#112938]) +- Migrate APCUPSD to has entity name ([@yuxincs] - [#112997]) +- Fix race condition when ZHA group members change ([@dmulcahey] - [#113030]) +- Ignore logging events in zha websocket tests ([@bdraco] - [#113031]) +- Fix Bang & Olufsen enum naming ([@joostlek] - [#113022]) +- Bump aioesphomeapi to 23.1.1 ([@bdraco] - [#113016]) +- Enable more SIM ruff rules ([@joostlek] - [#113015]) +- Migrate duckdns to use async_run_hass_job ([@bdraco] - [#113012]) +- Avoid scheduling person updates on the event loop ([@bdraco] - [#113010]) +- Move Microsoft face fixture to integration test ([@joostlek] - [#112993]) +- Move metoffice fixture to integration test ([@joostlek] - [#112992]) +- Move london_air fixture to integration test ([@joostlek] - [#112991]) +- Move Feedreader fixture to integration test ([@joostlek] - [#112989]) +- Schedule tasks eagerly when called from hass.add_job ([@bdraco] - [#113014]) +- Move openhardwaremonitor fixture to integration tests ([@joostlek] - [#112982]) +- Remove entity description mixin in V2C ([@joostlek] - [#112960]) +- Remove a redundant check in APCUPSD's config flow ([@yuxincs] - [#113032]) +- Rename mqtt platform setup method ([@jbouwh] - [#113042]) +- Fix google assistant cloud sync test ([@bdraco] - [#113044]) +- Fix CoreState in cloud google assistant tests ([@bdraco] - [#113045]) +- Allow Shelly CoAP to honour default network adapter ([@chemelli74] - [#110997]) +- Remove entity description mixin in Vilfo ([@joostlek] - [#112966]) +- Remove entity description mixin in Tado ([@joostlek] - [#112947]) +- Add tests for Aussie Broadband diagnostics ([@Bre77] - [#113049]) +- Bump aioslimproto to 3.0.0 ([@marcelveldt] - [#113046]) +- Remove entity description mixin in Opower ([@joostlek] - [#112913]) +- Bump Wandalen/wretry.action from 1.4.7 to 1.4.8 (@dependabot - [#113038]) +- Remove entity description mixin in WeatherFlow ([@joostlek] - [#112971]) +- Remove entity description mixin in Starlink ([@joostlek] - [#112943]) +- Remove entity description mixin in Schlage ([@joostlek] - [#112934]) +- Remove entity description mixin in Kaleidescape ([@joostlek] - [#112896]) +- Remove entity description mixin in Launch Library ([@joostlek] - [#112902]) +- Remove entity description mixin in Kaiterra ([@joostlek] - [#112895]) +- Move yandex transport fixture to integration test ([@joostlek] - [#112988]) +- Remove entity description mixin in Meater ([@joostlek] - [#112904]) +- Remove entity description mixin in Minecraft Server ([@joostlek] - [#112908]) +- Remove YAML configuration from WAQI ([@joostlek] - [#113027]) +- Bump webmin-xmlrpc to 0.0.2 ([@autinerd] - [#113004]) +- Remove entity description mixin in QNAP QSW ([@joostlek] - [#112924]) +- Remove entity description mixin in Wallbox ([@joostlek] - [#112969]) +- Remove entity description mixin in SABnzbd ([@joostlek] - [#112933]) +- Remove entity description mixin in Honeywell Lyric ([@joostlek] - [#112903]) +- Remove entity description mixin in Z-Wave.js ([@joostlek] - [#112979]) +- Remove entity description mixin in Zamg ([@joostlek] - [#112976]) +- Remove entity description mixin in Yalexs BLE ([@joostlek] - [#112974]) +- Remove entity description mixin in Xiaomi Miio ([@joostlek] - [#112973]) +- Remove entity description mixin in Whirlpool ([@joostlek] - [#112972]) +- Remove entity description mixin in VeSync ([@joostlek] - [#112965]) +- Remove entity description mixin in Venstar ([@joostlek] - [#112964]) +- Remove entity description mixin in Vallox ([@joostlek] - [#112963]) +- Remove entity description mixin in Tuya ([@joostlek] - [#112959]) +- Remove entity description mixin in Transmission ([@joostlek] - [#112958]) +- Remove entity description mixin in Tolo ([@joostlek] - [#112951]) +- Remove entity description mixin in Tautulli ([@joostlek] - [#112949]) +- Remove entity description mixin in Steamist ([@joostlek] - [#112944]) +- Remove entity description mixin in Solaredge ([@joostlek] - [#112942]) +- Remove entity description mixin in Smappee ([@joostlek] - [#112941]) +- Remove entity description mixin in SleepIQ ([@joostlek] - [#112940]) +- Remove entity description mixin in Skybell ([@joostlek] - [#112939]) +- Remove entity description mixin in Roomba ([@joostlek] - [#112932]) +- Remove entity description mixin in Ring ([@joostlek] - [#112928]) +- Remove entity description mixin in Roborock ([@joostlek] - [#112930]) +- Remove entity description mixin in Meteo-France ([@joostlek] - [#112907]) +- Remove entity description mixin in Rituals Perfume Genie ([@joostlek] - [#112929]) +- Remove entity description mixin in Renson ([@joostlek] - [#112926]) +- Remove entity description mixin in Pure Energie ([@joostlek] - [#112923]) +- Remove entity description in Point ([@joostlek] - [#112921]) +- Remove entity description mixin in Picnic ([@joostlek] - [#112920]) +- Remove entity description mixin in Pi-hole ([@joostlek] - [#112919]) +- Remove entity description mixin in PECO ([@joostlek] - [#112915]) +- Remove entity description mixin in Onvif ([@joostlek] - [#112912]) +- Remove entity description mixin in Netatmo ([@joostlek] - [#112910]) +- Remove entity description mixin in Melnor ([@joostlek] - [#112906]) +- Remove entity description mixin in Landisgyr Heat Meter ([@joostlek] - [#112901]) +- Remove entity description mixin in Kraken ([@joostlek] - [#112899]) +- Remove entity description mixin in Kostal Plenticore ([@joostlek] - [#112898]) +- Remove entity description mixin in Juicenet ([@joostlek] - [#112892]) +- Use UV instead of PIP in the CI ([@edenhaus] - [#113051]) +- Fix adding Hue bridge manually by IP ([@marcelveldt] - [#113055]) +- Bump xiaomi-ble to 0.27.0 ([@Ernst79] - [#113013]) +- Add ConfigFlow for seventeentrack integration ([@shaiu] - [#111196]) +- Move HomematicIP Cloud fixture to integration test ([@joostlek] - [#112987]) +- Prepare ring update service for deprecation ([@sdb9696] - [#108781]) +- Enable even more SIM ruff rules ([@joostlek] - [#113017]) +- Fix for Hue not applying effect in scene ([@marcelveldt] - [#113057]) +- Fix here_travel_time creating many refresh requests at startup ([@bdraco] - [#113041]) +- Remove entity description mixin in Github ([@joostlek] - [#112771]) +- Ensure wemo discovery is run in a background task ([@bdraco] - [#112665]) +- Remove fixtures from global fixtures folder ([@joostlek] - [#113060]) +- Improve lists in integrations [A] ([@joostlek] - [#113006]) +- Change airthings pressure sensor device_class to atmospheric pressure ([@OndraM] - [#113005]) +- Bump `regenmaschine` to 2024.03.0 ([@bachya] - [#113074]) +- Improve lists in integrations [C-D] ([@joostlek] - [#113072]) +- Improve lists in integrations [B] ([@joostlek] - [#113069]) +- Add icon translations to Version ([@joostlek] - [#112343]) +- Only load services.yaml for integrations that have it ([@balloob] - [#112732]) +- Start tasks eagerly in for async_at_start(ed) ([@bdraco] - [#112802]) +- Migrate dispatcher to create tasks eagerly ([@bdraco] - [#112845]) +- Migrate _async_when_setup to use eager_start ([@bdraco] - [#112872]) +- Ensure that the ring integration always raises HomeAssistantError for user actions ([@sdb9696] - [#109893]) +- Fix race in script stop that could cause async_stop to hang forever ([@bdraco] - [#113089]) +- Fix location data in Teslemetry ([@Bre77] - [#112866]) +- Migrate async_run_job to use eager_start for tasks ([@bdraco] - [#113011]) +- Reduce latency to populate initial HKC bluetooth device state ([@bdraco] - [#113103]) +- Make sonos ssdp discovery callback a callback function ([@bdraco] - [#113107]) +- Make sonos household_coordinator setup a callback function ([@bdraco] - [#113108]) +- Make sonos binary sensor entity creation callback functions ([@bdraco] - [#113109]) +- Add support for run_immediately to async_listen_once ([@bdraco] - [#113020]) +- Run coroutines as eager tasks in async_run_hass_job ([@bdraco] - [#111683]) +- Make cast async_cast_discovered a callback function ([@bdraco] - [#113111]) +- Migrate homekit to use async_at_started ([@bdraco] - [#113102]) +- Make restore state started a callback function ([@bdraco] - [#113110]) +- Use run_immediately for starting discovery at the started event ([@bdraco] - [#113112]) +- Update timezone in supervisor in an eager task ([@bdraco] - [#113113]) +- Migrate scene platform to use async_add_executor_job ([@bdraco] - [#113114]) +- Attach template triggers at start eagerly ([@bdraco] - [#113120]) +- Add run_immediately to the zone core config update async_listen ([@bdraco] - [#113119]) +- Remove unnecessary use of async_run_job in script helper ([@bdraco] - [#113118]) +- Remove unnecessary use of async_add_job in openalpr_cloud ([@bdraco] - [#113116]) +- Await discovery_function in the DiscoveryFlowHandler instead of wrapping it in a task ([@bdraco] - [#113115]) +- Simplify automation startup logic ([@bdraco] - [#113122]) +- Migrate remaining call in check_config helper to use async_get_component ([@bdraco] - [#113123]) +- Import homeassistant trigger platforms in the executor ([@bdraco] - [#113124]) +- Switch the reload helper to use async_get_component ([@bdraco] - [#113126]) +- Add A6 family code for DS2438 1-Wire sensor ([@definitio] - [#112844]) +- Add missing device info to Husqvarna Automower ([@Thomas55555] - [#113090]) +- Add scheduled mode to renault charge mode ([@slyoldfox] - [#105967]) +- Add reconfigure flow to homeworks ([@emontnemery] - [#112419]) +- Validate state_class with last_reset_value_template for mqtt sensors ([@jbouwh] - [#113099]) +- Update vallox_websocket_api to 5.1.1 ([@yozik04] - [#113139]) +- Bump Wandalen/wretry.action from 1.4.8 to 1.4.9 (@dependabot - [#113132]) +- Convert sets to list before passing to the JSON serializer in the registries ([@bdraco] - [#113133]) +- Add the ability to create Debouncer tasks as background tasks ([@bdraco] - [#113128]) +- Add device_id to sentence trigger and external conversation APIs ([@synesthesiam] - [#113094]) +- Remove deprecated `hass.components` usage in device_sun_light_trigger ([@jpbede] - [#111881]) +- Add motion detection enable/disable to ring camera platform ([@sdb9696] - [#108789]) +- Remove entity description mixin in Screenlogic ([@joostlek] - [#112935]) +- Remove deprecated `hass.components` usage in service tests ([@jpbede] - [#111883]) +- Clean up Abode imports ([@joostlek] - [#113138]) +- Improve lists in integrations [E-F] ([@joostlek] - [#113075]) +- Make august activity update a background task ([@bdraco] - [#112652]) +- Make Bluetooth active coordinator debouncers run tasks in the background ([@bdraco] - [#113129]) +- Ensure HKC debounced availability poll does not block startup ([@bdraco] - [#113130]) +- Avoid multiple executor jobs to add wemo devices ([@bdraco] - [#112484]) +- Add icon translations to Lametric ([@joostlek] - [#111854]) +- Add options update listener for Speedtest.Net ([@gjohansson-ST] - [#112108]) +- Add binary_sensor to homeworks ([@emontnemery] - [#112418]) +- Fix Axis unique ID ([@Kane610] - [#112132]) +- Use enum device class in Dexcom ([@joostlek] - [#112423]) +- Add icons to Teslemetry ([@Bre77] - [#112546]) +- Sonos reduce test time ([@PeteRager] - [#111688]) +- Avoid some event loop overhead for ESPHome listeners ([@bdraco] - [#113173]) +- Add "language" to strings.json ([@autinerd] - [#112869]) +- Move Notion coordinator to its own module ([@bachya] - [#112756]) +- Add icon translations to Bond ([@joostlek] - [#111349]) +- Fix System Bridge media source data URL ([@timmo001] - [#112612]) +- Small improvement to test run time ([@bdraco] - [#113175]) +- Remove ZHA IasZone sensor migration ([@TheJulianJES] - [#111893]) +- Add a task name to the config entry retry tasks ([@bdraco] - [#113188]) +- Fix radon precision for Airthings BLE ([@LaStrada] - [#113185]) +- ESPHome: Catch and re-raise client library errors as HomeAssistantErrors ([@jesserockz] - [#113026]) +- Properly mark Plex update sensor when current ([@jjlawren] - [#113197]) +- ESPHome: Add Date Entity support ([@jesserockz] - [#112475]) +- Bump radios to 0.3.1 ([@bdraco] - [#112850]) +- Bump github/codeql-action from 3.24.6 to 3.24.7 (@dependabot - [#113207]) +- Bump Wandalen/wretry.action from 1.4.9 to 1.4.10 (@dependabot - [#113206]) +- Update pytest artifact actions to v4 ([@cdce8p] - [#110906]) +- Improve lists for MQTT integration ([@jbouwh] - [#113184]) +- Migrate one time listeners to use async_run_hass_job ([@bdraco] - [#113179]) +- Bump actions/checkout from 4.1.1 to 4.1.2 (@dependabot - [#113208]) +- Migrate torque to use async_add_hass_job ([@bdraco] - [#113218]) +- Only extract traceback once in system_log ([@bdraco] - [#113201]) +- Simplify entity _attr cached_property getter implementation ([@bdraco] - [#113195]) +- Migrate harmony to use async_run_hass_job ([@bdraco] - [#113178]) +- Ensure apple_tv connect loop is cancelled on shutdown ([@bdraco] - [#113191]) +- Simplify clearing _attr cached_property in entities ([@bdraco] - [#113136]) +- Add diagnostics platform to IPMA ([@dgomes] - [#105697]) +- Update dsmr reader codeowner ([@joostlek] - [#108152]) +- Constrain pycountry to >=23.12.11 ([@bdraco] - [#112849]) +- Remove HassJob wrapping from the DataUpdateCoordinator ([@bdraco] - [#113192]) +- Add processes services to System Bridge ([@timmo001] - [#103564]) +- Improve lists in integrations [I-K] ([@joostlek] - [#113221]) +- Deprecate `homeassistant.components.is_on` function ([@jpbede] - [#111891]) +- Improve lists in integrations [G-H] ([@joostlek] - [#113168]) +- CI: Move pytest-github-actions-annotate-failures to test deps, upgrade ([@akx] - [#104604]) +- Improve lists in integrations [P-Q] ([@joostlek] - [#113236]) +- Run coordinator shutdown eagerly ([@bdraco] - [#113174]) +- Use `single_config_entry` in Accuweather manifest ([@bieniu] - [#111548]) +- Improve lists in integrations [T-U] ([@joostlek] - [#113243]) +- Parameterize some tests in generic_thermostat ([@esciara] - [#105643]) +- Add icon translations to Roku ([@joostlek] - [#112214]) +- Remove remaining async_add_job calls in core ([@bdraco] - [#113217]) +- Improve lists in integrations [V-W] ([@joostlek] - [#113252]) +- Use async_update_reload_and_abort helper in tailwind ([@jpbede] - [#110885]) +- Rework Melissa tests ([@joostlek] - [#113241]) +- Improve lists in integrations [X-Z] ([@joostlek] - [#113253]) +- Improve lists in integrations [L-M] ([@joostlek] - [#113227]) +- Improve lists in integrations [N-O] ([@joostlek] - [#113231]) +- Improve lists in integrations [R-S] ([@joostlek] - [#113233]) +- Split out deCONZ config model ([@Kane610] - [#112851]) +- Add service icons to Bluesound ([@joostlek] - [#113281]) +- Add service icons to Browser ([@joostlek] - [#113283]) +- Add service icons to Command line ([@joostlek] - [#113285]) +- Ensure apple_tv setup retries later on timeout ([@bdraco] - [#113367]) +- Bump aiodns to 3.1.1 ([@bdraco] - [#113371]) +- Bump bluetooth-auto-recovery to 1.4.0 ([@bdraco] - [#113368]) +- Bump aiodiscover to 2.0.0 ([@bdraco] - [#113337]) +- Fix uv cache dir env [ci] ([@cdce8p] - [#113312]) +- Avoid pre-importing config_flows if the integration does not support migration ([@bdraco] - [#113369]) +- Bump ha-ffmpeg to 3.2.0 ([@bdraco] - [#113297]) +- Add default_config to the bootstrap pre-imports ([@bdraco] - [#113263]) +- Migrate solax away from using async_add_job ([@bdraco] - [#113257]) +- Remove async_add_job calls from configurator ([@bdraco] - [#113256]) +- Migrate script integration to create eager tasks ([@bdraco] - [#113189]) +- Add a helper to import modules from the event loop ([@bdraco] - [#113169]) +- Remove async_add_job calls from qwikswitch ([@bdraco] - [#113258]) +- Add service icons to REST command ([@joostlek] - [#113347]) +- Fix group loading too late resulting in incorrect state ([@bdraco] - [#113262]) +- Remove usage of async_add_job in tests ([@bdraco] - [#113259]) +- Add service icons to Unifi ([@joostlek] - [#113360]) +- Bump opower to 0.4.0 ([@tronikos] - [#113390]) +- Bump gassist-text to 0.0.11 ([@tronikos] - [#113386]) +- Bump docker/login-action from 3.0.0 to 3.1.0 (@dependabot - [#113384]) +- Add service icons to Debug py ([@joostlek] - [#113287]) +- Add virtual integration Sacramento Municipal Utility District (SMUD) ([@tronikos] - [#113389]) +- Add service icons to Filter ([@joostlek] - [#113295]) +- Improve loops and lists ([@joostlek] - [#113269]) +- Enable ISC ruff rule ([@joostlek] - [#113270]) +- Remove old migration from lovelace ([@emontnemery] - [#113388]) +- Update ring integration imports ([@sdb9696] - [#113397]) +- Migrate auth to use async_import_module to avoid blocking I/O in the event loop ([@bdraco] - [#113387]) +- Fix telegram_bot doing blocking I/O in the event loop to import platforms ([@bdraco] - [#113383]) +- Migrate sun to use single_config_entry ([@bdraco] - [#113370]) +- Add service icons to Zoneminder ([@joostlek] - [#113366]) +- Fix smartthings doing blocking I/O in the event loop to import platforms ([@bdraco] - [#113382]) +- Add service icons to Wake on LAN ([@joostlek] - [#113362]) +- Add service icons to System Log ([@joostlek] - [#113355]) +- Add service icons to Statistics ([@joostlek] - [#113353]) +- Add service icons to Universal ([@joostlek] - [#113361]) +- Add service icons to Alert ([@joostlek] - [#113274]) +- Add service icons to System Bridge ([@joostlek] - [#113354]) +- Add service icons to Timer ([@joostlek] - [#113358]) +- Add service icons to SMTP ([@joostlek] - [#113351]) +- Add service icons to Schedule ([@joostlek] - [#113350]) +- Add service icons to Recorder ([@joostlek] - [#113344]) +- Add service icons to Snips ([@joostlek] - [#113352]) +- Add service icons to Ombi ([@joostlek] - [#113339]) +- Move modbus check_config to setup, to have access to hass ([@janiversen] - [#112828]) +- Bump hass-nabucasa from 0.78.0 to 0.79.0 ([@ludeeus] - [#113405]) +- Add floor support to areas WebSocket API ([@frenck] - [#113402]) +- Add service icons to Yamaha ([@joostlek] - [#113365]) +- Add service icons to Wemo ([@joostlek] - [#113363]) +- Add service icons to Telegram bot ([@joostlek] - [#113357]) +- Add service icons to Toon ([@joostlek] - [#113359]) +- Add service icons to Telegram ([@joostlek] - [#113356]) +- Add service icons to Route53 ([@joostlek] - [#113349]) +- Add service icons to RFLink ([@joostlek] - [#113348]) +- Add service icons to Remember the milk ([@joostlek] - [#113345]) +- Add service icons to Xiaomi Miio ([@joostlek] - [#113364]) +- Add service icons to QVR Pro ([@joostlek] - [#113343]) +- Add service icons to Python Scripts ([@joostlek] - [#113342]) +- Add service icons to Pilight ([@joostlek] - [#113341]) +- Add service icons to nx584 ([@joostlek] - [#113338]) +- Add service icons to Nissan Leaf ([@joostlek] - [#113336]) +- Add service icons to Netatmo ([@joostlek] - [#113335]) +- Add service icons to Media Extractor ([@joostlek] - [#113329]) +- Add service icons to Microsoft Face ([@joostlek] - [#113330]) +- Add service icons to Minio ([@joostlek] - [#113331]) +- Add service icons to Ness alarm ([@joostlek] - [#113333]) +- Add service icons to Matrix ([@joostlek] - [#113328]) +- Add service icons to Lovelace ([@joostlek] - [#113327]) +- Add service icons to Logi circle ([@joostlek] - [#113326]) +- Add service icons to Local file ([@joostlek] - [#113323]) +- Add service icons to Keyboard ([@joostlek] - [#113322]) +- Add service icons to Kef ([@joostlek] - [#113321]) +- Add service icons to Keba ([@joostlek] - [#113320]) +- Add service icons to Iperf3 ([@joostlek] - [#113319]) +- Add service icons to Intent Script ([@joostlek] - [#113318]) +- Add service icons to Input Text ([@joostlek] - [#113317]) +- Add service icons to Input Select ([@joostlek] - [#113316]) +- Add service icons to Input button ([@joostlek] - [#113313]) +- Add service icons to Input Number ([@joostlek] - [#113315]) +- Add service icons to IHC ([@joostlek] - [#113311]) +- Add service icons to HTML5 ([@joostlek] - [#113309]) +- Add service icons to Homematic ([@joostlek] - [#113308]) +- Add service icons to Home Assistant ([@joostlek] - [#113307]) +- Add service icons to Habitica ([@joostlek] - [#113303]) +- Add service icons to Geniushub ([@joostlek] - [#113301]) +- Add service icons to Generic Thermostat ([@joostlek] - [#113300]) +- Add service icons to Frontend ([@joostlek] - [#113299]) +- Add service icons to Freebox ([@joostlek] - [#113298]) +- Add service icons to Ffmpeg ([@joostlek] - [#113294]) +- Add service icons to Evohome ([@joostlek] - [#113293]) +- Add service icons to Foursquare ([@joostlek] - [#113296]) +- Add service icons to Envisalink ([@joostlek] - [#113292]) +- Add service icons to HDMI CEC ([@joostlek] - [#113304]) +- Add service icons to Ebusd ([@joostlek] - [#113291]) +- Add service icons to Downloader ([@joostlek] - [#113289]) +- Add service icons to Dominos ([@joostlek] - [#113288]) +- Add service icons to Logbook ([@joostlek] - [#113324]) +- Add service icons to Logger ([@joostlek] - [#113325]) +- Add service icons to Input Datetime ([@joostlek] - [#113314]) +- Add service icons to Conversation ([@joostlek] - [#113286]) +- Add service icons to DuckDNS ([@joostlek] - [#113290]) +- Add service icons to Agent DVR ([@joostlek] - [#113273]) +- Bump tololib to 1.1.0 ([@MatthiasLohr] - [#113268]) +- Add service icons to Advantage air ([@joostlek] - [#113272]) +- Add service icons to Channels ([@joostlek] - [#113284]) +- Add service icons to Modbus ([@joostlek] - [#113332]) +- Add service icons to Backup ([@joostlek] - [#113277]) +- Add service icons to Bayesian ([@joostlek] - [#113278]) +- Add service icons to Bluetooth Tracker ([@joostlek] - [#113282]) +- Add service icons to History Stats ([@joostlek] - [#113306]) +- Add service icons to Group ([@joostlek] - [#113302]) +- Add service icons to REST ([@joostlek] - [#113346]) +- Add service icons to Amcrest ([@joostlek] - [#113276]) +- Add service icons to Blackbird ([@joostlek] - [#113280]) +- Add service icons to Persistent Notification ([@joostlek] - [#113340]) +- Deprecate the map integration ([@emontnemery] - [#113215]) +- Enable PERF ruff rules ([@joostlek] - [#113408]) +- Fix icon mistakes ([@joostlek] - [#113420]) +- Add service icons to Utility meter ([@joostlek] - [#113419]) +- Add service icons to Demo ([@joostlek] - [#113414]) +- Bump weatherflow_cloud backing lib v0.2.13 ([@jeeftor] - [#113181]) +- Add service icons to Scene ([@joostlek] - [#113418]) +- Add service icons to ADS ([@joostlek] - [#113412]) +- Add UniFi Protect service to remove privacy zones ([@AngellusMortis] - [#111292]) +- Add icon translations to Unifi protect ([@joostlek] - [#112332]) +- Add floors to service target ([@frenck] - [#110850]) +- add switch platform for tolo ([@MatthiasLohr] - [#113440]) +- Allow entity platforms without entity_component in icon validation ([@joostlek] - [#113422]) +- Add service icons to Fan ([@joostlek] - [#113415]) +- Fix alarm control panel icons ([@joostlek] - [#113413]) +- Add service icons to Abode ([@joostlek] - [#113411]) +- Add icon translations to ZHA ([@joostlek] - [#112368]) +- Fix calling sync api in counter/ffmpeg/device_tracker tests ([@bdraco] - [#113441]) +- Deprecate async_run_job and async_add_job ([@bdraco] - [#113260]) +- Add service icons to Climate ([@joostlek] - [#113409]) +- Add aroma therapy select entity for tolo integration ([@MatthiasLohr] - [#113442]) +- Revert "Remove unused test helper mock_area_registry" ([@jbouwh] - [#113453]) +- Fix hassfest icons check for notify and image_processing ([@jbouwh] - [#113446]) +- Add aliases support to floor registry WebSocket API ([@frenck] - [#113401]) +- Support lutron transition time and flash for lights ([@wilburCforce] - [#109185]) +- Change modbus integration to use async library calls ([@janiversen] - [#113450]) +- Add service icons to Notify ([@joostlek] - [#113417]) +- Add service icons to Image processing ([@joostlek] - [#113416]) +- Bump aiooncue to 0.3.7 ([@PeteRager] - [#113451]) +- Add icon translations to myuplink ([@astrandb] - [#111466]) +- Construct storage data in the executor to avoid blocking the event loop ([@bdraco] - [#113465]) +- Reduce overhead to save the larger registries ([@bdraco] - [#113462]) +- Avoid creating another ssl context in cert_expiry ([@bdraco] - [#113467]) +- Bump aiodhcpwatcher to 1.0.0 ([@bdraco] - [#113469]) +- Reduce script overhead by avoiding creation of many tasks ([@bdraco] - [#113183]) +- Fix scene integration doing blocking I/O in the event loop to import platforms ([@bdraco] - [#113391]) +- Fix delayed registry check to only using the short delay at running ([@bdraco] - [#113471]) +- Start script runs eagerly ([@bdraco] - [#113190]) +- Remove unused tts fixture ([@emontnemery] - [#113480]) +- Move loading of ha-av to the executor ([@bdraco] - [#113485]) +- Remove supports_encryption check from mobile_app ([@bdraco] - [#113490]) +- Improve State docstring ([@emontnemery] - [#113501]) +- Avoid multiple context switches to setup a sonos speaker ([@bdraco] - [#113378]) +- Address late review on adding an error sensor to Husqvarna Automower ([@Thomas55555] - [#113242]) +- Add missing mystrom sensor ([@slyoldfox] - [#113225]) +- Remove old update unique id function from deCONZ binary sensor ([@Kane610] - [#112536]) +- Create more relevant names for myuplink DeviceInfo ([@astrandb] - [#111502]) +- Add icon translations to Moon ([@dougiteixeira] - [#111386]) +- Use `single_config_entry` in KNX manifest ([@farmio] - [#112526]) +- Remove OpenCV integration ([@thecode] - [#113455]) +- Ensure TurboJPEG is imported in the executor ([@bdraco] - [#113504]) +- Use on state icons by default in Balboa spa integration ([@snoack] - [#111911]) +- Add Ring Intercom support ([@cosimomeli] - [#109819]) +- Add theme color support to labels ([@frenck] - [#113404]) +- Add category registry ([@frenck] - [#110897]) +- create issues for modbus config errors ([@janiversen] - [#113431]) +- Speed up ffmpeg setup ([@bdraco] - [#113496]) +- Filter out irrelevant entities on SMO20 devices in myuplink ([@astrandb] - [#113493]) +- Remove Sonos migrations ([@joostlek] - [#113506]) +- Add diagnostics platform to Fastdotcom ([@erwindouna] - [#111525]) +- Remove modbus create_issue from init ([@janiversen] - [#113510]) +- Add Ring Intercom open door button ([@cosimomeli] - [#113514]) +- Add icon translations to Sonos ([@joostlek] - [#112235]) +- Add missing icon for Unifi protect service ([@joostlek] - [#113508]) +- Protect SupervisorIssues.update method ([@mdegat01] - [#113425]) +- Bump opower to 0.4.1 ([@drewclauson] - [#113509]) +- Remove repetitive words in comments and docstrings ([@soonsouth] - [#113529]) +- Add Fyta integration ([@dontinelli] - [#110816]) +- Use Volume Flow Rate device class in BTHome ([@joostlek] - [#113530]) +- Freeze timezone in bmw_connected_drive tests ([@Thomas55555] - [#113533]) +- Fix MyUplink tests ([@joostlek] - [#113534]) +- Support configuring Axis to use HTTPS ([@Kane610] - [#113271]) +- Use Volume Flow Rate device class in DROP connect ([@joostlek] - [#113528]) +- Use Volume Flow Rate device class in Opentherm gw ([@joostlek] - [#113531]) +- Do not allow modbus config without entities ([@janiversen] - [#113516]) +- Use single_config_entry in jellyfin manifest ([@ctalkington] - [#113202]) +- Import and create pyudev for usb in the executor ([@bdraco] - [#113478]) +- Remove old update of sensor unique id in deCONZ ([@Kane610] - [#113527]) +- Remove old update of number unique id in deCONZ ([@Kane610] - [#113524]) +- Remove old update of group unique id in deCONZ ([@Kane610] - [#112533]) +- Add missing continue in legacy recorder history function ([@emontnemery] - [#113535]) +- fix mqtt siren test asserts ([@autinerd] - [#113550]) +- fix homekit test asserts ([@autinerd] - [#113549]) +- Speed up loading sun ([@bdraco] - [#113544]) +- Revert "Avoid pre-importing config_flows if the integration does not … ([@gjohansson-ST] - [#113553]) +- Add missing async_block_till_done to jellyfin test_invalid_auth test ([@bdraco] - [#113556]) +- Avoid calling entry.async_migrate in sonarr tests ([@bdraco] - [#113557]) +- Remove danielperna84 as codeowner ([@danielperna84] - [#109662]) +- Add translations for devolo Home Network exceptions ([@Shutgun] - [#105755]) +- Restore group config_flow pre-import ([@bdraco] - [#113558]) +- Send keep-alive frames in image proxy stream ([@OnFreund] - [#113542]) +- Add profiler set_asyncio_debug service ([@bdraco] - [#113447]) +- Remove group integration platforms that use the default states ([@bdraco] - [#113562]) +- Fix lingering hassio issues test ([@jbouwh] - [#113569]) +- Cleanup some circular imports in group ([@bdraco] - [#113554]) +- Add ruff B005, B015, B032 and fix occurrences ([@autinerd] - [#113543]) +- Improve typing of State.as_compressed_state ([@emontnemery] - [#113540]) +- Move group config flow pre-import to its init ([@bdraco] - [#113564]) +- Reduce bottlenecks in bootstrap by ordering the setup of integrations ([@bdraco] - [#113570]) +- Fix unifiprotect tests for ruff B018 ([@autinerd] - [#113584]) +- Fix freedompro tests for ruff B018 ([@autinerd] - [#113583]) +- Add additional sensors to Teslemetry ([@Bre77] - [#112555]) +- Add battery discharge sensor to ViCare integration ([@CFenner] - [#113502]) +- Shelly config flow test wait for tasks to finish ([@thecode] - [#113588]) +- Use async_create_task in recorder init tests ([@bdraco] - [#113586]) +- Add JVC Projector Sensors ([@msavazzi] - [#108949]) +- Enable ruff RUF005 and fix occurrences ([@autinerd] - [#113589]) +- Remove unnecessary method in UniFi entity loader ([@Kane610] - [#113597]) +- Axis use entity description in switch platform ([@Kane610] - [#113595]) +- Clean up unneeded ruff noqa directives ([@autinerd] - [#113616]) +- Remove deprecated `hass.components` from mysensors ([@jpbede] - [#113611]) +- Freeze time on profile test ([@jbouwh] - [#113618]) +- Add a guard to handle unhashable platforms in config ([@bdraco] - [#113607]) +- Avoid creating tasks in homeassistant_alerts when the debouncer will not fire ([@bdraco] - [#113580]) +- Gather loading platforms in async_process_component_config ([@bdraco] - [#113573]) +- Fix vulcan calendar offset ([@Antoni-Czaplicki] - [#113604]) +- Add ruff rules PIE790, PIE794, PIE807, PIE810 ([@autinerd] - [#113617]) +- Remove deprecated `hass.components` from legacy device tracker platform ([@jpbede] - [#113612]) +- Fix race in removing modified devices from the entity registry ([@bdraco] - [#113623]) +- snmp: Better sensor support to resolve previous issues ([@lextm] - [#113624]) +- Generate HomeAssistantError message from English translations ([@jbouwh] - [#113305]) +- Add ruff rule PIE804 ([@autinerd] - [#113620]) +- Remove ignore for ruff PLC0208 ([@autinerd] - [#113537]) +- Use `mock_platform` for button entity component tests instead of `hass.components` ([@jpbede] - [#113627]) +- Add new fields from UniFi Protect v3 ([@AngellusMortis] - [#113631]) +- Run apple_tv shutdown eagerly at the stop event ([@bdraco] - [#113637]) +- Run shelly coordinator shutdown immediately at the stop event ([@bdraco] - [#113633]) +- Shutdown config entry manager immediately at the stop event ([@bdraco] - [#113632]) +- Shutdown homekit eagerly at the stop event ([@bdraco] - [#113639]) +- Consolidate ruff PL and Q rules ([@autinerd] - [#113555]) +- Run functions from ssdp listeners immediately ([@bdraco] - [#113634]) +- Fix zeroconf shutting down too early ([@bdraco] - [#113638]) +- Run entity component shutdown immediately ([@bdraco] - [#113635]) +- Create config entry async_on_unload tasks eagerly ([@bdraco] - [#113626]) +- Bump snapcast to 2.3.6 ([@luar123] - [#113606]) +- Cleanup sonos shutdown process ([@bdraco] - [#113654]) +- Deprecate UniFi Protect HDR switch and package sensor ([@AngellusMortis] - [#113636]) +- Add ruff rule PIE800 ([@autinerd] - [#113619]) +- Eagerly shutdown unifiprotect at the stop event ([@bdraco] - [#113655]) +- Run yalexs_ble shutdown with run_immediately ([@bdraco] - [#113653]) +- Eagerly shutdown homekit_controller at the stop event ([@bdraco] - [#113650]) +- Run bond shutdown listener with run_immediately ([@bdraco] - [#113657]) +- Save bluetooth passive data eagerly at the stop event ([@bdraco] - [#113648]) +- Add run_immediately to bluetooth listeners ([@bdraco] - [#113659]) +- Add tests of homeworks binary sensor ([@emontnemery] - [#113577]) +- Add tests of homeworks light ([@emontnemery] - [#113579]) +- Add ruff rule PIE808 ([@autinerd] - [#113621]) +- Add tests of homeworks button ([@emontnemery] - [#113578]) +- Add tests of homeworks __init__ ([@emontnemery] - [#113581]) +- Replace pylint pointless-statement with ruff B018 ([@autinerd] - [#113582]) +- Improve debug logging in Tankerkoenig ([@mib1185] - [#113674]) +- Remove deprecated `hass.components` from image_processing platform ([@jpbede] - [#113613]) +- Add Ruff LOG rules ([@autinerd] - [#113677]) +- Freeze time on zwave_js update test ([@jbouwh] - [#113625]) +- Re-ignore Ruff rule PLC1901 ([@autinerd] - [#113675]) +- Add WAN port connection control to TP-Link Omada gateways ([@MarkGodwin] - [#111431]) +- Use `mock_platform` for event entity component tests instead of `hass.components` ([@jpbede] - [#113667]) +- Migrate stream listeners to use run_immediately and eager tasks ([@bdraco] - [#113660]) +- Remove deprecated `hass.components` from network helper function ([@jpbede] - [#113615]) +- Remove deprecated `hass.components` from withings webhook tests ([@jpbede] - [#113687]) +- Add run_immediately to usb start/stop listeners ([@bdraco] - [#113658]) +- Move ESPHome disconnects to the close event ([@bdraco] - [#113652]) +- Run entity registry write_unavailable_states immediately at start ([@bdraco] - [#113647]) +- Run registry cleanup listeners immediately ([@bdraco] - [#113646]) +- Migrate registry for labels and categories to run_immediately ([@bdraco] - [#113645]) +- Start and stop template cache watcher to run_immediately ([@bdraco] - [#113644]) +- Cache late imported async_get_exception_message for HomeAssistantError ([@jbouwh] - [#113683]) +- Enable Ruff RSE ([@autinerd] - [#113695]) +- Improve scaffold test_config_flow ([@jwillemsen] - [#113229]) +- Adjust config flow pre-import comment in group ([@bdraco] - [#113702]) +- Migrate isy994 listeners to use run_immediately ([@bdraco] - [#113661]) +- Bump xiaomi-ble to 0.27.1 ([@Ernst79] - [#113686]) +- Bump dawidd6/action-download-artifact from 3.1.2 to 3.1.3 (@dependabot - [#113720]) +- Move legacy device_tracker setup to a tracked task ([@bdraco] - [#113715]) +- Run august stop listener with run_immediately ([@bdraco] - [#113729]) +- Move legacy notify setup to use tracked tasks ([@bdraco] - [#113716]) +- Move legacy stt setup to use tracked tasks ([@bdraco] - [#113718]) +- Move legacy tts setup to use tracked tasks ([@bdraco] - [#113717]) +- Add first batch of Ruff PT rules ([@autinerd] - [#113665]) +- Get HomeAssistantError message from translation cache only ([@jbouwh] - [#113688]) +- Get ServiceValidationError message from translation cache only ([@jbouwh] - [#113704]) +- Run dhcp listeners with run_immediately ([@bdraco] - [#113726]) +- Bump apprise to 1.7.4 ([@caronc] - [#113629]) +- Add Downloader config flow, including tests ([@erwindouna] - [#98722]) +- Allow configuring Starlink sleep schedule ([@boswelja] - [#103057]) +- Add additional buttons to OctoPrint ([@Xitee1] - [#103139]) +- Add camera in use and pending reboot binary sensors to System Bridge ([@timmo001] - [#104095]) +- Log cannot connect exception in Tedee config flow ([@zweckj] - [#113740]) +- Patch Discovery timeout in govee light local ([@joostlek] - [#113692]) +- Add support for Tuya dimmer module ([@mjh1] - [#113741]) +- Add config flow to Rova ([@GidoHakvoort] - [#113596]) +- Axis use entity description light platform ([@Kane610] - [#113602]) +- Remove deprecated `hass.components` from netatmo webhook tests ([@jpbede] - [#113691]) +- Add WebSocket support for handling labels on device registry ([@frenck] - [#113758]) +- Add WebSocket support for assigning labels to entities ([@frenck] - [#113757]) +- Streamline naming in deCONZ integration ([@Kane610] - [#111977]) +- Add WebSocket support for handling labels on areas registry ([@frenck] - [#113755]) +- Add labels to service target ([@frenck] - [#113753]) +- Run websocket shutdown listener with run_immediately ([@bdraco] - [#113727]) +- Refactor integration startup time to show wall clock time ([@bdraco] - [#113707]) +- Bump PyMetno to 0.12.0 ([@bdraco] - [#113777]) +- Start live history/logbook with eager tasks ([@bdraco] - [#113779]) +- Bump dawidd6/action-download-artifact from 3.1.3 to 3.1.4 (@dependabot - [#113788]) +- Bump github/codeql-action from 3.24.7 to 3.24.8 (@dependabot - [#113789]) +- Require an icon for a service ([@joostlek] - [#112373]) +- Create tasks eagerly with core create_task ([@bdraco] - [#113781]) +- Align Comelit climate code to humidifier ([@chemelli74] - [#113747]) +- Migrate restore_state shutdown to use run_immediately ([@bdraco] - [#113786]) +- Use async api in template weather to create tasks ([@bdraco] - [#113784]) +- Use async api in yamaha_musiccast to create tasks ([@bdraco] - [#113785]) +- Use async api in generic_thermostat to create tasks ([@bdraco] - [#113783]) +- Call async task creation api in apple_tv ([@bdraco] - [#113782]) +- Start energy load platform task eagerly ([@bdraco] - [#113778]) +- Bump sunweg to 2.1.1 ([@rokam] - [#113767]) +- Enable Ruff rule PT007 ([@autinerd] - [#113764]) +- Update Home Assistant base image to 2024.03.0 ([@frenck] - [#113797]) +- Add WS command cloud/remove_data ([@emontnemery] - [#109821]) +- Add Room Audio Control to Control4 Integration ([@nalin29] - [#87821]) +- Simplify UV install in CI ([@edenhaus] - [#113803]) +- Allow retries on communication exceptions for Aurora ABB Powerone solar inverter ([@davet2001] - [#104492]) +- Bump bthome-ble to 3.8.1 ([@Ernst79] - [#113800]) +- Migrate Harmony to has entity name ([@joostlek] - [#104737]) +- Find referenced floors in automations & scripts ([@frenck] - [#113802]) +- Add binary sensor platform for Husqvarna Automower ([@Thomas55555] - [#113248]) +- Add device_tracker platform for husqvarna_automower ([@Thomas55555] - [#111403]) +- Find referenced labels in automations & scripts ([@frenck] - [#113812]) +- Revert get_model from myuplink lib ([@astrandb] - [#113811]) +- Do not patch `asyncio.timeout` in govee light local test ([@jpbede] - [#113819]) +- Fix flakey profiler object growth tests ([@bdraco] - [#113825]) +- Fix duplicate events in live logbook ([@bdraco] - [#113828]) +- Remove deprecated `hass.components` from http test ([@jpbede] - [#113823]) +- Remove deprecated `hass.components` from cloud client test ([@jpbede] - [#113820]) +- Remove deprecated `hass.components` from person test ([@jpbede] - [#113822]) +- Only wait for import flows in setup of there is a config flow ([@bdraco] - [#113780]) +- Fix template sensor test relying on event bus debug logging ([@bdraco] - [#113842]) +- Migrate samsungtv stop to use run_immediately ([@bdraco] - [#113834]) +- Migrate camera listeners to use run_immediately ([@bdraco] - [#113840]) +- Only create one executor job to shutdown wemo ([@bdraco] - [#113836]) +- Migrate legacy device_tracker shutdown to use run_immediately ([@bdraco] - [#113835]) +- Use `mock_platform` for light entity component tests instead of `hass.components` ([@jpbede] - [#113845]) +- Remove deprecated `hass.components` from vilfo config flow tests ([@jpbede] - [#113821]) +- Update actions/cache to 4.0.2 ([@cdce8p] - [#113817]) +- Upgrade whirlpool integration to add shared appliances and allow brand selection ([@NodeJSmith] - [#111687]) +- Reduce overhead to write dlna_dmr state ([@bdraco] - [#113776]) +- Avoid expensive db queries at startup to check if data is migrated ([@bdraco] - [#113773]) +- Bump aioesphomeapi to 23.2.0 ([@jesserockz] - [#113854]) +- Add icon translations to Github ([@joostlek] - [#111614]) +- Fix flapping device tracker test ([@bdraco] - [#113859]) +- Fix flapping stream hls test ([@bdraco] - [#113858]) +- Remove deprecated `hass.components` from group light tests and use fixture ([@jpbede] - [#113862]) +- Avoid creating unneeded Context and Event objects when firing events ([@emontnemery] - [#113798]) +- Deprecate cloud tts gender ([@MartinHjelmare] - [#112256]) +- Remove Amcrest camera unique id migration ([@joostlek] - [#113870]) +- Bump bluecurrent-api to 1.2.2 ([@Floris272] - [#110483]) +- Bump numato-gpio to v0.13.0 ([@clssn] - [#113182]) +- Add floor template functions ([@frenck] - [#110847]) +- Make temperature a required parameter for tado climate service ([@alinbalutoiu] - [#113872]) +- Update Amcrest services.yaml ([@tuday2] - [#111161]) +- Change quotes in cloud translations ([@piitaya] - [#113871]) +- Add matter device serial number ([@MartinHjelmare] - [#113878]) +- Provide better debug capabilities for the Traccar Server integration ([@ludeeus] - [#113868]) +- Remove obsolete issue strings in WAQI ([@joostlek] - [#113884]) +- YoLink fix cover incorrect state ([@matrixd2] - [#104975]) +- Bump aioshelly to 8.2.0 ([@chemelli74] - [#113886]) +- Bump islamic_prayer_times to 0.0.12 ([@uchagani] - [#113744]) +- Fix duplicate events in live history ([@bdraco] - [#113896]) +- Add State.last_reported ([@emontnemery] - [#113511]) +- Small cleanup to unifiprotect subscriptions ([@bdraco] - [#113901]) +- Fix flakey test_reading_yaml_config test ([@bdraco] - [#113902]) +- Fix system_info importing hassio in the event loop ([@bdraco] - [#113903]) +- Cache parsing the url for the device registry ([@bdraco] - [#113910]) +- Use faster time compare in history and live logbook ([@bdraco] - [#113897]) +- Reduce overhead to clear cache in button state ([@bdraco] - [#113895]) +- Refactor rate limit helper to track time in seconds ([@bdraco] - [#113898]) +- Use intersection for determine_script_action ([@bdraco] - [#113915]) +- Reduce overhead to construct and validate entity service schema ([@bdraco] - [#113920]) +- ESPHome: Add Time Entity support ([@jesserockz] - [#113852]) +- Fetch MaxLengthExceeded exception mesage from the translation cache ([@jbouwh] - [#113904]) +- Fetch ServiceNotFound message from translation cache ([@jbouwh] - [#113893]) +- Load system info with base functionality ([@bdraco] - [#113923]) +- Add run_immediately to the trace stop listener ([@bdraco] - [#113922]) +- Only calculate native value once per update in systemmonitor ([@bdraco] - [#113921]) +- Add a fast path for async_get_platform ([@bdraco] - [#113917]) +- Enable Ruff PT023, disable PT011, PT012, PT018 ([@autinerd] - [#113900]) +- Upgrade Modbus quality scale to platinum ([@janiversen] - [#113482]) +- Add diagnostics to Husqvarna Automower ([@Thomas55555] - [#111857]) +- modbus: Remove PARALLEL_UPDATES from base_platform ([@janiversen] - [#113928]) +- Split light fixture from implementation to only import when fixture is actually used ([@jpbede] - [#113892]) +- Add transmission-integration path and protocol ([@idelsink] - [#104334]) +- Remove AUX heating from demo climate ([@emontnemery] - [#113929]) +- Add Reolink hdd/sd card storage sensor ([@starkillerOG] - [#110961]) +- Bump Wandalen/wretry.action from 1.4.10 to 2.0.0 (@dependabot - [#113888]) +- Remove deprecated `hass.components` from flux switch tests and use fixture ([@jpbede] - [#113875]) +- Add Bluetooth support to La Marzocco integration ([@zweckj] - [#108287]) +- Add availability to Scrape config flow ([@gjohansson-ST] - [#105516]) +- Add select platform to Husqvarna Automower ([@Thomas55555] - [#113816]) +- Remove unrelated patching from scrape test ([@bdraco] - [#113951]) +- Add support for Shelly RPC devices custom TCP port ([@chemelli74] - [#110860]) +- Add Shelly RGB/RGBW profiles support ([@thecode] - [#113808]) +- Fix grammar in async_get_platform comment ([@bdraco] - [#113948]) +- Avoid writing HomeKit state to disk unless its missing ([@bdraco] - [#111970]) +- Improve user error messages for generic camera ([@davet2001] - [#112814]) +- Add guard to HomeAssistantError `__str__` method to prevent a recursive loop ([@jbouwh] - [#113913]) +- Bump pyenphase to 1.20.0 ([@catsmanac] - [#113963]) +- Fix argument name in async_update_ha_state warning message ([@MrXANA91] - [#113969]) +- Pre import mobile app platforms to avoid having to wait on them ([@bdraco] - [#113966]) +- Deprecate the panel_iframe integration ([@emontnemery] - [#113410]) +- Group wemo platform forwards to reduce overhead ([@bdraco] - [#113972]) +- Return default repairs flow for cloud TTS issues ([@ludeeus] - [#113981]) +- Correct HomeAssistantError __str__ implementation and test ([@jbouwh] - [#113991]) +- Update JVC Projector polling time to be more responsive for automations ([@msavazzi] - [#113765]) +- Add binary sensor platform to microBees ([@FedDam] - [#111190]) ([microBees docs]) +- Add icon translations to Wiz ([@joostlek] - [#112358]) +- Add reformatting commits to .git-blame-ignore-revs ([@akx] - [#110481]) +- Add cover platform to microBees ([@FedDam] - [#111135]) ([microBees docs]) +- Axis use entity descripton binary sensor platform ([@Kane610] - [#113705]) +- Remember entered IP when error happend while setting up HomeWizard ([@DCSBL] - [#113815]) +- Remove hourly weather entity from Aemet ([@gjohansson-ST] - [#110764]) +- Remove hourly weather entity from NWS ([@gjohansson-ST] - [#112503]) +- Add new HomeWizard Energy Socket to tests ([@DCSBL] - [#113406]) +- Use uv instead of pip on production images ([@edenhaus] - [#112496]) +- Remove deprecated `hass.components` from frontend tests ([@jpbede] - [#114011]) +- Remove deprecated `hass.components` from scene tests ([@jpbede] - [#114014]) +- Remove deprecated `hass.components` from zeroconf tests ([@jpbede] - [#114013]) +- Remove deprecated `hass.components` from conversation tests and use light setup fixture ([@jpbede] - [#114012]) +- Rename device to api in Axis integration ([@Kane610] - [#113965]) +- Tweak marking private methods in UniFi, no need to mark inner functio… ([@Kane610] - [#113964]) +- Speed up recorder startup by making schema query read only ([@bdraco] - [#113987]) +- Define and use entity description in Axis entity base class ([@Kane610] - [#114007]) +- Add home battery storage entities for enphase_envoy ([@catsmanac] - [#114015]) +- Add missing is_closed property to powerview tilt only entities ([@kingy444] - [#113792]) +- Improve deCONZ test_non_color_light_reports_color ([@Kane610] - [#114021]) +- Add ecobee indefinite away preset, remove unusable/broken presets ([@alexsydell] - [#108636]) +- Update pytest warnings filter ([@cdce8p] - [#114036]) +- Update byte string formatting (2) ([@cdce8p] - [#114039]) +- Update empty line formatting after module docstring ([@cdce8p] - [#114040]) +- Move powerview timeout logic to the upstream api ([@kingy444] - [#113984]) +- Improve axis tests ([@Kane610] - [#114035]) +- Combine recorder and frontend bootstrap step ([@bdraco] - [#113985]) +- Add Powerview Type 11 ([@kingy444] - [#114047]) +- Move setup of legacy device_tracker see service to legacy setup task ([@bdraco] - [#114043]) +- Fix missing linked device on Overkiz integration ([@Tronix117] - [#114006]) +- Load light profiles in a task to avoid delaying platform setup ([@bdraco] - [#114038]) +- Smhi add reconfigure step to config flow ([@gjohansson-ST] - [#114044]) +- Fix flakey stream hls test ([@bdraco] - [#114046]) +- Fix after deps not being considered for integrations before stage 1 ([@bdraco] - [#114045]) +- Fix building images for nightlies ([@edenhaus] - [#114054]) +- Show correct ipv6 address in System Monitor ([@gjohansson-ST] - [#114024]) +- Reduce sqlalchemy reflection overhead at recorder setup time ([@bdraco] - [#113989]) +- Migrate UpdateCoordinator to its own file in aurora_abb_powerone ([@davet2001] - [#114053]) +- Create registry matrix to run publishing for images in parallel ([@edenhaus] - [#114060]) +- Enable turn_on / turn_off features for HitachiAirToAirHeatPump in Overkiz ([@iMicknl] - [#112990]) +- Bump pyrisco to 0.6.0 ([@OnFreund] - [#114063]) +- Fix bug in roon media player to use correct 'seek position' while playing a track. ([@pavoni] - [#113999]) +- Bump holidays to 0.45 ([@gjohansson-ST] - [#114069]) +- Add Rachio smart hose timer support ([@brg468] - [#107901]) +- Add Lutron Serena tilt only wood blinds ([@wujiaqi] - [#113791]) +- Add Risco system binary sensors ([@OnFreund] - [#114062]) +- Use a constant to reference `homeassistant` domain ([@jbouwh] - [#113889]) +- Fix setup timings when config entry platform loads are not awaited ([@bdraco] - [#113959]) +- Refactor recorder states tests ([@bdraco] - [#114073]) +- Catch Mill timeout error ([@joostlek] - [#114068]) +- Fix Shelly WallDisplay device power ([@thecode] - [#114071]) +- Centralize loading Axis entities ([@Kane610] - [#114018]) +- Avoid creating inner function in EntityComponent setup ([@bdraco] - [#114050]) +- Add more sensors to aurora_abb_powerone ([@davet2001] - [#114074]) +- Add reconfigure step to holiday ([@gjohansson-ST] - [#114057]) +- Migrate nut to use aionut ([@bdraco] - [#114078]) +- Allow retry during Config Flow in Advantage Air ([@Bre77] - [#114083]) +- Small performance improvement to template expand ([@bdraco] - [#114086]) +- Optimize loading of translations ([@bdraco] - [#114089]) +- Bump gcal-sync to 6.0.4 ([@allenporter] - [#114085]) +- Bump tplink_omada to 1.3.12 for ER7212PC support ([@MarkGodwin] - [#114077]) +- Add vehicle config to coordinator to fix bug in Teslemetry ([@Bre77] - [#113850]) +- Improve blue current integration code ([@Floris272] - [#114004]) +- Add more sensors to aurora_abb_powerone (part 2) ([@davet2001] - [#114097]) +- Add reconfigure flow to Axis integration ([@Kane610] - [#114067]) +- Fix flapping device_tracker test_bad_platform test ([@bdraco] - [#114102]) +- Tado: fix 113982 ([@niro1987] - [#114109]) +- Fix launch library translation keys ([@LarsStegman] - [#114093]) +- Replace if in range check ([@cdce8p] - [#114107]) +- Bump xiaomi-ble to 0.28.0 ([@Ernst79] - [#114120]) +- Ensure discovery can setup legacy device tracker platforms ([@bdraco] - [#114101]) +- Fetch ServiceNotFound message from translation cache and fix super ([@jbouwh] - [#114084]) +- Use TypeVarTuple for add_job and run_job methods ([@cdce8p] - [#114122]) +- Fix google assistant diagnostics test ([@jbouwh] - [#114111]) +- Cancel config entry setup retry at shutdown ([@bdraco] - [#114124]) +- Bump aionut to 4.1.0 ([@bdraco] - [#114125]) +- Implement diagnostics platform for APCUPSD ([@yuxincs] - [#112284]) +- Bump aionut to 4.2.1 ([@bdraco] - [#114132]) +- Bump yolink-api to 0.4.1 fix water depth sensor error when device is not initialize ([@matrixd2] - [#113994]) +- Bump aionut to 4.3.2 ([@bdraco] - [#114142]) +- Covert system_log services to be callbacks ([@bdraco] - [#114143]) +- Add repair for UniFi Protect if RTSP is disabled on camera ([@AngellusMortis] - [#114088]) +- Bump github/codeql-action from 3.24.8 to 3.24.9 (@dependabot - [#114151]) +- Bump Wandalen/wretry.action from 2.0.0 to 2.1.0 (@dependabot - [#114150]) +- Bump vilfo-api-client to 0.5.0 ([@ManneW] - [#114082]) +- Update pre-commit to 3.7.0 ([@cdce8p] - [#114154]) +- Use uv and sort jobs in builder.yml ([@edenhaus] - [#114153]) +- Update pytest-asyncio to 0.23.6 ([@cdce8p] - [#114155]) +- Generate ConfigValidationError message from English translations ([@jbouwh] - [#113844]) +- Add climate fan modes for Airzone Cloud Aidoo devices ([@Noltari] - [#103574]) +- Update coverage to 7.4.4 ([@cdce8p] - [#114158]) +- Update pytest-timeout to 2.3.1 ([@cdce8p] - [#114161]) +- Update respx to 0.21.0 ([@cdce8p] - [#114163]) +- Update pipdeptree to 2.16.1 ([@cdce8p] - [#114159]) +- Bump plugwise to v0.37.1 ([@bouwew] - [#113245]) +- Update pyOpenSSL to 24.1.0 ([@cdce8p] - [#114165]) +- Update yamllint to 1.35.1 ([@cdce8p] - [#114166]) +- Update pytest-cov to 5.0.0 ([@cdce8p] - [#114160]) +- Allow debugging tests by default in vscode ([@jbouwh] - [#114065]) +- Update typing-extensions to 4.11.0rc1 ([@cdce8p] - [#114116]) +- Avoid homekit random id generation for existing entries ([@bdraco] - [#114144]) +- Remove hourly weather entity from met_eireann ([@gjohansson-ST] - [#112449]) +- Update types packages ([@cdce8p] - [#114164]) +- Fix spelling [runtime] ([@cdce8p] - [#114169]) +- Fix spelling [docstrings + comments] ([@cdce8p] - [#114168]) +- Update pytest-unordered to 0.6.0 ([@cdce8p] - [#114162]) +- Update codespell to 2.2.6 ([@cdce8p] - [#114167]) +- Use enums to define choices in tolo ([@MatthiasLohr] - [#113992]) +- Refactor homekit device linking to use the device index ([@bdraco] - [#114145]) +- Add Withings webhook manager ([@joostlek] - [#106311]) +- Add base entity to romy integration ([@xeniter] - [#113750]) +- Updated temp offset logging in tado component ([@343max] - [#106308]) +- Bump pywaze to 1.0.0 ([@eifinger] - [#108613]) +- Bump aioautomower to 2024.3.4 ([@Thomas55555] - [#114127]) +- Adapt to Axis library file structure changes ([@Kane610] - [#114181]) +- Fix Axis not generate unique IDs ([@Kane610] - [#114115]) +- Refactor options flow in dnsip ([@gjohansson-ST] - [#114058]) +- Add Ecovacs last job event entity ([@edenhaus] - [#113826]) +- Add reauth support to NUT ([@bdraco] - [#114131]) +- Add restrictions for listening to event_reported events ([@emontnemery] - [#114183]) +- Telegram bot proxy params deprecation ([@malkstar] - [#112778]) +- Add generic test component platform setup function ([@jpbede] - [#114016]) +- Fix Shelly reauth flow ([@thecode] - [#114180]) +- Improve test coverage mqtt discovery test ([@jbouwh] - [#114188]) +- Remove deprecated `hass.components` from system_health tests ([@jpbede] - [#114207]) +- Bump anyio to 4.3.0 ([@bdraco] - [#114198]) +- Bump ruff to 0.3.4 ([@joostlek] - [#112690]) +- Use new `setup_test_component_platform` helper instead of test fixture for light platform ([@jpbede] - [#114200]) +- Bump SQLAlchemy to 2.0.29 ([@bdraco] - [#114208]) +- Preload storage for integrations we know we are going to setup ([@bdraco] - [#114192]) +- Revert "Update typing-extensions to 4.11.0rc1 (#114116)" ([@cdce8p] - [#114216]) +- Rework Axis entity loader to have a better internal storage structure ([@Kane610] - [#114114]) +- Remove async_get_device_class_lookup from entity_registry ([@bdraco] - [#114212]) +- Add YoLink Water Meter Support ([@matrixd2] - [#114148]) +- Bump pyenphase to 1.20.1 ([@catsmanac] - [#114218]) +- Add Motionblinds BLE integration ([@LennP] - [#109497]) +- Fix motion blinds formatting ([@joostlek] - [#114222]) +- Allow pre-releases for "Adjust nightly version" only ([@edenhaus] - [#114219]) +- Add more timestamp sensors to swiss_public_transport ([@miaucl] - [#107916]) +- Add label template functions ([@frenck] - [#111024]) +- Implement Identify button and Cloud connection toggle for HomeWizard Watermeter ([@DCSBL] - [#113814]) +- Don't allow listening to state_reported in event triggers ([@emontnemery] - [#114191]) +- Add test to ensure non callback event filter is rejected ([@emontnemery] - [#114182]) +- Allow string formatting for dispatcher SignalType ([@cdce8p] - [#114174]) +- Add ruff commit to git-blame-ignore-revs ([@cdce8p] - [#114229]) +- Drop Python 3.11 support ([@frenck] - [#114220]) +- Bump motionblindsble to 0.0.9 ([@LennP] - [#114232]) +- Remove test cases for task eager_start <3.12 ([@cdce8p] - [#114243]) +- Default floor level to None (and allow unsetting it) ([@frenck] - [#114249]) +- Refactor Riemann sum integral sensor to prepare for time based trigger ([@ronweikamp] - [#113932]) +- Allow numeric state trigger/condition against zone entities ([@frenck] - [#114221]) +- Use `setup_test_component_platform` helper for update entity component tests instead of `hass.components` ([@jpbede] - [#114203]) +- Add label selector ([@frenck] - [#111029]) +- Small performance improvements to energy sensors ([@bdraco] - [#114149]) +- Bump bring-api to 0.5.7 ([@tr4nt0r] - [#114252]) +- Fix ruff-format on energy sensor ([@bdraco] - [#114261]) +- Restore scapy pin to >=2.5.0 ([@bdraco] - [#114253]) +- Remove unused code in ESPHome entry_data ([@bdraco] - [#114263]) +- Do not late import config_entry in `setup_test_component_platform` test helper ([@jpbede] - [#114260]) +- Use `setup_test_component_platform` func for number entity component tests instead of `hass.components` ([@jpbede] - [#114017]) +- Add Ollama conversation agent ([@synesthesiam] - [#113962]) +- Fix Opower accounts that report cost less regularly than usage ([@tronikos] - [#114034]) +- Combine tts cache init executor jobs ([@bdraco] - [#114271]) +- Add Motionblinds brand ([@LennP] - [#114235]) +- Bump actions/setup-python from 5.0.0 to 5.1.0 (@dependabot - [#114276]) +- Bump ondilo_ico to 0.4.0 ([@JeromeHXP] - [#114022]) +- Move SignalTypes to util ([@cdce8p] - [#114236]) +- Run recorder shutdown tasks eagerly ([@bdraco] - [#113018]) +- Refactor/fix search component, including labels & floors support ([@frenck] - [#114206]) +- Bump aiounifi to v73 ([@Kane610] - [#114278]) +- Avoid delaying automation/script startup for sample blueprints ([@bdraco] - [#114277]) +- Refactor yeelight scanner to avoid creating tasks to wait for scanner start ([@bdraco] - [#113919]) +- Add select to Motionblinds BLE integration ([@LennP] - [#114228]) +- Add buttons to Motionblinds BLE integration ([@LennP] - [#114227]) +- Address late review of 17track config flow ([@shaiu] - [#114283]) +- Remove hourly weather entity from metoffice ([@gjohansson-ST] - [#112452]) +- Allow Humidifier.current_humidity to be a float ([@cdce8p] - [#111297]) +- Do not override state property in `MockEntity` ([@jpbede] - [#114231]) +- Allow float for int argument type [pylint plugin] ([@cdce8p] - [#114105]) +- Use `setup_test_component_platform` func for cover entity component tests instead of `hass.components` ([@jpbede] - [#114010]) +- Update mypy-dev to 1.10.0a3 ([@cdce8p] - [#114289]) +- Record state.last_reported ([@emontnemery] - [#114201]) +- Add tests to Rova ([@joostlek] - [#114285]) +- Use SignalType to improve typing [esphome] ([@cdce8p] - [#114296]) +- Use SignalType to improve typing [bthome] ([@cdce8p] - [#114295]) +- Update bump_version.py to append also the time to nightlies and add possibility to set manual a nightly version ([@edenhaus] - [#114300]) +- Add coordinator to Rova ([@joostlek] - [#114288]) +- Use `setup_test_component_platform` helper for binary_sensor entity component tests instead of `hass.components` ([@jpbede] - [#114293]) +- Use SignalType to improve typing [core] ([@cdce8p] - [#114298]) +- Use `setup_test_component_platform` helper for alarm_control_panel entity component tests instead of `hass.components` ([@jpbede] - [#114301]) +- Fix missing powerview shade data when initial refresh fails ([@bdraco] - [#113033]) +- Fix version_bump --set-nightly-version ([@edenhaus] - [#114304]) +- Bump pyprusalink to 2.1.1 and support Prusa MK3 ([@the-ress] - [#114210]) +- Raise issue if not Rova area anymore ([@joostlek] - [#114309]) +- Fix exception when logging out from cloud ([@emontnemery] - [#114306]) +- Add support for PoE control of TP-Link Omada Gateways ([@MarkGodwin] - [#114138]) +- Start deprecation of auxiliary heater in ClimateEntity ([@gjohansson-ST] - [#112532]) +- Refactor switcher kis ([@YogevBokobza] - [#114281]) +- Migrate Rova to has entity name ([@joostlek] - [#114303]) +- Version Bump for WeatherFlow Cloud Backing Lib ([@jeeftor] - [#114302]) +- Finish ROVA init tests ([@joostlek] - [#114315]) +- Bump intents to 2024.3.27 ([@synesthesiam] - [#114312]) +- Change min and max humidity for MQTT climate and humidifier ([@jbouwh] - [#114292]) +- Remove deprecated forecast attribute from WeatherEntity ([@gjohansson-ST] - [#110761]) +- Defensively validate ZHA quirks v2 supplied entity metadata ([@dmulcahey] - [#112643]) +- Handle TypeError in Spotify ([@joostlek] - [#114317]) +- Fix icons for Motionblinds BLE integration ([@LennP] - [#114321]) +- Fix feedback in ROVA ([@joostlek] - [#114308]) +- Use SignalType to improve typing [homekit] ([@cdce8p] - [#114297]) +- Support the Home Assistant Connect ZBT-1 ([@puddly] - [#114213]) +- Update frontend to 20240327.0 ([@bramkragten] - [#114322]) +- Use fallback voice for selected language in cloud ([@MartinHjelmare] - [#114246]) +- Bump zha-quirks to 0.0.113 ([@TheJulianJES] - [#114311]) +- Bump pyduotecno to 2024.3.2 ([@Cereal2nd] - [#114320]) +- Fix Matter airconditioner discovery of climate platform ([@marcelveldt] - [#114326]) +- Avoid changing local time on Nobø Ecohub ([@oyvindwe] - [#114332]) +- Don't access States.last_reported_ts before it's added ([@emontnemery] - [#114333]) +- Download translations only once in the build pipeline ([@edenhaus] - [#114335]) +- Remove checked in translations ([@edenhaus] - [#114336]) +- Revert velocity change in powerview ([@bdraco] - [#114337]) +- Add more Ollama models ([@synesthesiam] - [#114339]) +- Bump fjaraskupan to 2.3.0 ([@elupus] - [#114344]) +- Fix empty delays in script helper ([@bdraco] - [#114346]) +- Bump pyunifiprotect to 5.1.2 ([@AngellusMortis] - [#114348]) +- Fix script for checking on existing translations ([@edenhaus] - [#114354]) +- Improve utility meter restore state tests ([@emontnemery] - [#114356]) +- Improve device class of utility meter ([@emontnemery] - [#114368]) +- Update pytile to 2023.12.0 ([@cdce8p] - [#114370]) +- Fix streamlabswater feedback ([@joostlek] - [#114371]) +- Fix Suez water feedback ([@joostlek] - [#114372]) +- Fix Swiss public transport feedback ([@joostlek] - [#114373]) +- Fix Lupusec feedback ([@joostlek] - [#114374]) +- Adapt Tractive integration the latest API changes ([@bieniu] - [#114380]) +- Fix hassfest service icons check for custom integrations ([@frenck] - [#114389]) +- Filter preferred TTS format options if not supported ([@synesthesiam] - [#114392]) +- Fix area search for entities of devices ([@frenck] - [#114394]) +- Update frontend to 20240328.0 ([@piitaya] - [#114396]) +- Bump aioraven to 0.5.3 ([@cottsay] - [#114397]) +- Follow real AtlanticPassAPCZoneControlZone physical mode on Overkiz (HEAT, COOL or HEAT_COOL) ([@Tronix117] - [#111830]) +- Add overkiz heating status, absence mode, and boost mode binary sensors for Atlantic Water Heater ([@ALERTua] - [#114184]) +- Add overkiz water targets temperature numbers for Atlantic water heater ([@ALERTua] - [#114185]) +- Add overkiz bottom tank water temperature and core control water temperature for Atlantic Water Heater ([@ALERTua] - [#114186]) +- Avoid concurrent radio operations with powerview hubs ([@bdraco] - [#114399]) +- Cleanup some plex tasks that delayed startup ([@bdraco] - [#114418]) +- Bump python-ring-doorbell to 0.8.8 ([@sdb9696] - [#114431]) +- Bump pyoverkiz to 1.13.9 ([@iMicknl] - [#114442]) +- Log warnings in Renault initialisation ([@epenet] - [#114445]) +- Bump async-upnp-client to 0.38.3 ([@StevenLooman] - [#114447]) +- Update frontend to 20240329.0 ([@piitaya] - [#114452]) +- Avoid tracking import executor jobs ([@bdraco] - [#114453]) +- Update frontend to 20240329.1 ([@piitaya] - [#114459]) +- Cleanup Shelly RGBW light entities ([@thecode] - [#114410]) +- Mark executor jobs as background unless created from a tracked task ([@bdraco] - [#114450]) +- Add initial support for floors to intents ([@synesthesiam] - [#114456]) +- Improve sonos test synchronization ([@bdraco] - [#114468]) +- Fix Overkiz Hitachi OVP air-to-air heat pump ([@dotvav] - [#114487]) +- Fix late load of anyio doing blocking I/O in the event loop ([@bdraco] - [#114491]) +- Fix workday doing blocking I/O in the event loop ([@bdraco] - [#114492]) +- Fix server update from breaking setup in Speedtest.NET ([@gjohansson-ST] - [#114524]) +- Bump axis to v60 ([@Kane610] - [#114544]) +- Fix wrong icons ([@joostlek] - [#114567]) +- Bump velbusaio to 2024.4.0 ([@Cereal2nd] - [#114569]) +- Reduce usage of executer threads in AVM Fritz!Tools ([@mib1185] - [#114570]) +- Filter out ignored entries in ssdp step of AVM Fritz!SmartHome ([@mib1185] - [#114574]) +- Bump plexapi to 4.15.11 ([@jjlawren] - [#114581]) +- Fix reolink media source data access ([@MartinHjelmare] - [#114593]) +- Bump zeroconf to 0.132.0 ([@bdraco] - [#114596]) +- Add missing platforms_exist guard to check_config ([@bdraco] - [#114600]) +- Fix memory leak when importing a platform fails ([@bdraco] - [#114602]) +- Avoid storing raw extracted traceback in system_log ([@bdraco] - [#114603]) +- Bump whirlpool-sixth-sense to 0.18.7 ([@mkmer] - [#114606]) +- Display sonos album title with URL encoding ([@PeteRager] - [#113693]) +- Bump roombapy to 1.8.1 ([@joostlek] - [#114478]) +- Improve Shelly RPC device update progress ([@bieniu] - [#114566]) +- Fix battery heater in Tessie ([@Bre77] - [#114568]) +- Add diagnostic platform to Whirlpool ([@mkmer] - [#114578]) +- Catch potential ValueError when getting or setting Starlink sleep values ([@boswelja] - [#114607]) +- Bump opower to 0.4.2 ([@max2697] - [#114608]) +- Add floor selector ([@frenck] - [#114614]) +- Fix Starlink integration startup issue ([@Fexiven] - [#114615]) +- Update frontend to 20240402.0 ([@bramkragten] - [#114627]) + +[#100055]: https://github.com/home-assistant/core/pull/100055 +[#102333]: https://github.com/home-assistant/core/pull/102333 +[#102884]: https://github.com/home-assistant/core/pull/102884 +[#103057]: https://github.com/home-assistant/core/pull/103057 +[#103139]: https://github.com/home-assistant/core/pull/103139 +[#103564]: https://github.com/home-assistant/core/pull/103564 +[#103574]: https://github.com/home-assistant/core/pull/103574 +[#104095]: https://github.com/home-assistant/core/pull/104095 +[#104334]: https://github.com/home-assistant/core/pull/104334 +[#104492]: https://github.com/home-assistant/core/pull/104492 +[#104604]: https://github.com/home-assistant/core/pull/104604 +[#104737]: https://github.com/home-assistant/core/pull/104737 +[#104975]: https://github.com/home-assistant/core/pull/104975 +[#105516]: https://github.com/home-assistant/core/pull/105516 +[#105643]: https://github.com/home-assistant/core/pull/105643 +[#105697]: https://github.com/home-assistant/core/pull/105697 +[#105755]: https://github.com/home-assistant/core/pull/105755 +[#105756]: https://github.com/home-assistant/core/pull/105756 +[#105795]: https://github.com/home-assistant/core/pull/105795 +[#105967]: https://github.com/home-assistant/core/pull/105967 +[#106308]: https://github.com/home-assistant/core/pull/106308 +[#106311]: https://github.com/home-assistant/core/pull/106311 +[#107901]: https://github.com/home-assistant/core/pull/107901 +[#107916]: https://github.com/home-assistant/core/pull/107916 +[#107957]: https://github.com/home-assistant/core/pull/107957 +[#108152]: https://github.com/home-assistant/core/pull/108152 +[#108287]: https://github.com/home-assistant/core/pull/108287 +[#108596]: https://github.com/home-assistant/core/pull/108596 +[#108613]: https://github.com/home-assistant/core/pull/108613 +[#108636]: https://github.com/home-assistant/core/pull/108636 +[#108709]: https://github.com/home-assistant/core/pull/108709 +[#108781]: https://github.com/home-assistant/core/pull/108781 +[#108789]: https://github.com/home-assistant/core/pull/108789 +[#108794]: https://github.com/home-assistant/core/pull/108794 +[#108949]: https://github.com/home-assistant/core/pull/108949 +[#109080]: https://github.com/home-assistant/core/pull/109080 +[#109088]: https://github.com/home-assistant/core/pull/109088 +[#109185]: https://github.com/home-assistant/core/pull/109185 +[#109497]: https://github.com/home-assistant/core/pull/109497 +[#109662]: https://github.com/home-assistant/core/pull/109662 +[#109819]: https://github.com/home-assistant/core/pull/109819 +[#109821]: https://github.com/home-assistant/core/pull/109821 +[#109893]: https://github.com/home-assistant/core/pull/109893 +[#109930]: https://github.com/home-assistant/core/pull/109930 +[#110297]: https://github.com/home-assistant/core/pull/110297 +[#110327]: https://github.com/home-assistant/core/pull/110327 +[#110481]: https://github.com/home-assistant/core/pull/110481 +[#110483]: https://github.com/home-assistant/core/pull/110483 +[#110492]: https://github.com/home-assistant/core/pull/110492 +[#110761]: https://github.com/home-assistant/core/pull/110761 +[#110764]: https://github.com/home-assistant/core/pull/110764 +[#110816]: https://github.com/home-assistant/core/pull/110816 +[#110847]: https://github.com/home-assistant/core/pull/110847 +[#110850]: https://github.com/home-assistant/core/pull/110850 +[#110860]: https://github.com/home-assistant/core/pull/110860 +[#110885]: https://github.com/home-assistant/core/pull/110885 +[#110897]: https://github.com/home-assistant/core/pull/110897 +[#110906]: https://github.com/home-assistant/core/pull/110906 +[#110961]: https://github.com/home-assistant/core/pull/110961 +[#110997]: https://github.com/home-assistant/core/pull/110997 +[#111024]: https://github.com/home-assistant/core/pull/111024 +[#111029]: https://github.com/home-assistant/core/pull/111029 +[#111135]: https://github.com/home-assistant/core/pull/111135 +[#111156]: https://github.com/home-assistant/core/pull/111156 +[#111161]: https://github.com/home-assistant/core/pull/111161 +[#111190]: https://github.com/home-assistant/core/pull/111190 +[#111196]: https://github.com/home-assistant/core/pull/111196 +[#111258]: https://github.com/home-assistant/core/pull/111258 +[#111289]: https://github.com/home-assistant/core/pull/111289 +[#111292]: https://github.com/home-assistant/core/pull/111292 +[#111297]: https://github.com/home-assistant/core/pull/111297 +[#111325]: https://github.com/home-assistant/core/pull/111325 +[#111344]: https://github.com/home-assistant/core/pull/111344 +[#111349]: https://github.com/home-assistant/core/pull/111349 +[#111386]: https://github.com/home-assistant/core/pull/111386 +[#111391]: https://github.com/home-assistant/core/pull/111391 +[#111403]: https://github.com/home-assistant/core/pull/111403 +[#111419]: https://github.com/home-assistant/core/pull/111419 +[#111423]: https://github.com/home-assistant/core/pull/111423 +[#111431]: https://github.com/home-assistant/core/pull/111431 +[#111440]: https://github.com/home-assistant/core/pull/111440 +[#111466]: https://github.com/home-assistant/core/pull/111466 +[#111502]: https://github.com/home-assistant/core/pull/111502 +[#111512]: https://github.com/home-assistant/core/pull/111512 +[#111514]: https://github.com/home-assistant/core/pull/111514 +[#111525]: https://github.com/home-assistant/core/pull/111525 +[#111526]: https://github.com/home-assistant/core/pull/111526 +[#111532]: https://github.com/home-assistant/core/pull/111532 +[#111540]: https://github.com/home-assistant/core/pull/111540 +[#111545]: https://github.com/home-assistant/core/pull/111545 +[#111548]: https://github.com/home-assistant/core/pull/111548 +[#111614]: https://github.com/home-assistant/core/pull/111614 +[#111666]: https://github.com/home-assistant/core/pull/111666 +[#111676]: https://github.com/home-assistant/core/pull/111676 +[#111683]: https://github.com/home-assistant/core/pull/111683 +[#111687]: https://github.com/home-assistant/core/pull/111687 +[#111688]: https://github.com/home-assistant/core/pull/111688 +[#111700]: https://github.com/home-assistant/core/pull/111700 +[#111706]: https://github.com/home-assistant/core/pull/111706 +[#111709]: https://github.com/home-assistant/core/pull/111709 +[#111725]: https://github.com/home-assistant/core/pull/111725 +[#111727]: https://github.com/home-assistant/core/pull/111727 +[#111747]: https://github.com/home-assistant/core/pull/111747 +[#111754]: https://github.com/home-assistant/core/pull/111754 +[#111755]: https://github.com/home-assistant/core/pull/111755 +[#111758]: https://github.com/home-assistant/core/pull/111758 +[#111761]: https://github.com/home-assistant/core/pull/111761 +[#111767]: https://github.com/home-assistant/core/pull/111767 +[#111798]: https://github.com/home-assistant/core/pull/111798 +[#111804]: https://github.com/home-assistant/core/pull/111804 +[#111805]: https://github.com/home-assistant/core/pull/111805 +[#111806]: https://github.com/home-assistant/core/pull/111806 +[#111807]: https://github.com/home-assistant/core/pull/111807 +[#111808]: https://github.com/home-assistant/core/pull/111808 +[#111809]: https://github.com/home-assistant/core/pull/111809 +[#111810]: https://github.com/home-assistant/core/pull/111810 +[#111811]: https://github.com/home-assistant/core/pull/111811 +[#111812]: https://github.com/home-assistant/core/pull/111812 +[#111813]: https://github.com/home-assistant/core/pull/111813 +[#111814]: https://github.com/home-assistant/core/pull/111814 +[#111816]: https://github.com/home-assistant/core/pull/111816 +[#111824]: https://github.com/home-assistant/core/pull/111824 +[#111827]: https://github.com/home-assistant/core/pull/111827 +[#111830]: https://github.com/home-assistant/core/pull/111830 +[#111842]: https://github.com/home-assistant/core/pull/111842 +[#111844]: https://github.com/home-assistant/core/pull/111844 +[#111845]: https://github.com/home-assistant/core/pull/111845 +[#111846]: https://github.com/home-assistant/core/pull/111846 +[#111847]: https://github.com/home-assistant/core/pull/111847 +[#111848]: https://github.com/home-assistant/core/pull/111848 +[#111849]: https://github.com/home-assistant/core/pull/111849 +[#111850]: https://github.com/home-assistant/core/pull/111850 +[#111851]: https://github.com/home-assistant/core/pull/111851 +[#111852]: https://github.com/home-assistant/core/pull/111852 +[#111853]: https://github.com/home-assistant/core/pull/111853 +[#111854]: https://github.com/home-assistant/core/pull/111854 +[#111855]: https://github.com/home-assistant/core/pull/111855 +[#111856]: https://github.com/home-assistant/core/pull/111856 +[#111857]: https://github.com/home-assistant/core/pull/111857 +[#111861]: https://github.com/home-assistant/core/pull/111861 +[#111862]: https://github.com/home-assistant/core/pull/111862 +[#111863]: https://github.com/home-assistant/core/pull/111863 +[#111864]: https://github.com/home-assistant/core/pull/111864 +[#111865]: https://github.com/home-assistant/core/pull/111865 +[#111866]: https://github.com/home-assistant/core/pull/111866 +[#111878]: https://github.com/home-assistant/core/pull/111878 +[#111880]: https://github.com/home-assistant/core/pull/111880 +[#111881]: https://github.com/home-assistant/core/pull/111881 +[#111883]: https://github.com/home-assistant/core/pull/111883 +[#111888]: https://github.com/home-assistant/core/pull/111888 +[#111891]: https://github.com/home-assistant/core/pull/111891 +[#111893]: https://github.com/home-assistant/core/pull/111893 +[#111895]: https://github.com/home-assistant/core/pull/111895 +[#111896]: https://github.com/home-assistant/core/pull/111896 +[#111897]: https://github.com/home-assistant/core/pull/111897 +[#111899]: https://github.com/home-assistant/core/pull/111899 +[#111900]: https://github.com/home-assistant/core/pull/111900 +[#111901]: https://github.com/home-assistant/core/pull/111901 +[#111902]: https://github.com/home-assistant/core/pull/111902 +[#111904]: https://github.com/home-assistant/core/pull/111904 +[#111905]: https://github.com/home-assistant/core/pull/111905 +[#111906]: https://github.com/home-assistant/core/pull/111906 +[#111907]: https://github.com/home-assistant/core/pull/111907 +[#111908]: https://github.com/home-assistant/core/pull/111908 +[#111911]: https://github.com/home-assistant/core/pull/111911 +[#111912]: https://github.com/home-assistant/core/pull/111912 +[#111916]: https://github.com/home-assistant/core/pull/111916 +[#111917]: https://github.com/home-assistant/core/pull/111917 +[#111927]: https://github.com/home-assistant/core/pull/111927 +[#111928]: https://github.com/home-assistant/core/pull/111928 +[#111929]: https://github.com/home-assistant/core/pull/111929 +[#111932]: https://github.com/home-assistant/core/pull/111932 +[#111933]: https://github.com/home-assistant/core/pull/111933 +[#111934]: https://github.com/home-assistant/core/pull/111934 +[#111935]: https://github.com/home-assistant/core/pull/111935 +[#111936]: https://github.com/home-assistant/core/pull/111936 +[#111940]: https://github.com/home-assistant/core/pull/111940 +[#111943]: https://github.com/home-assistant/core/pull/111943 +[#111945]: https://github.com/home-assistant/core/pull/111945 +[#111946]: https://github.com/home-assistant/core/pull/111946 +[#111947]: https://github.com/home-assistant/core/pull/111947 +[#111949]: https://github.com/home-assistant/core/pull/111949 +[#111952]: https://github.com/home-assistant/core/pull/111952 +[#111954]: https://github.com/home-assistant/core/pull/111954 +[#111955]: https://github.com/home-assistant/core/pull/111955 +[#111964]: https://github.com/home-assistant/core/pull/111964 +[#111965]: https://github.com/home-assistant/core/pull/111965 +[#111970]: https://github.com/home-assistant/core/pull/111970 +[#111972]: https://github.com/home-assistant/core/pull/111972 +[#111973]: https://github.com/home-assistant/core/pull/111973 +[#111974]: https://github.com/home-assistant/core/pull/111974 +[#111976]: https://github.com/home-assistant/core/pull/111976 +[#111977]: https://github.com/home-assistant/core/pull/111977 +[#111980]: https://github.com/home-assistant/core/pull/111980 +[#111981]: https://github.com/home-assistant/core/pull/111981 +[#111982]: https://github.com/home-assistant/core/pull/111982 +[#111983]: https://github.com/home-assistant/core/pull/111983 +[#111984]: https://github.com/home-assistant/core/pull/111984 +[#111985]: https://github.com/home-assistant/core/pull/111985 +[#111988]: https://github.com/home-assistant/core/pull/111988 +[#111989]: https://github.com/home-assistant/core/pull/111989 +[#111990]: https://github.com/home-assistant/core/pull/111990 +[#111991]: https://github.com/home-assistant/core/pull/111991 +[#111992]: https://github.com/home-assistant/core/pull/111992 +[#111993]: https://github.com/home-assistant/core/pull/111993 +[#111994]: https://github.com/home-assistant/core/pull/111994 +[#111995]: https://github.com/home-assistant/core/pull/111995 +[#111996]: https://github.com/home-assistant/core/pull/111996 +[#111997]: https://github.com/home-assistant/core/pull/111997 +[#111998]: https://github.com/home-assistant/core/pull/111998 +[#112001]: https://github.com/home-assistant/core/pull/112001 +[#112004]: https://github.com/home-assistant/core/pull/112004 +[#112007]: https://github.com/home-assistant/core/pull/112007 +[#112008]: https://github.com/home-assistant/core/pull/112008 +[#112010]: https://github.com/home-assistant/core/pull/112010 +[#112028]: https://github.com/home-assistant/core/pull/112028 +[#112029]: https://github.com/home-assistant/core/pull/112029 +[#112031]: https://github.com/home-assistant/core/pull/112031 +[#112032]: https://github.com/home-assistant/core/pull/112032 +[#112042]: https://github.com/home-assistant/core/pull/112042 +[#112044]: https://github.com/home-assistant/core/pull/112044 +[#112053]: https://github.com/home-assistant/core/pull/112053 +[#112055]: https://github.com/home-assistant/core/pull/112055 +[#112057]: https://github.com/home-assistant/core/pull/112057 +[#112058]: https://github.com/home-assistant/core/pull/112058 +[#112065]: https://github.com/home-assistant/core/pull/112065 +[#112070]: https://github.com/home-assistant/core/pull/112070 +[#112071]: https://github.com/home-assistant/core/pull/112071 +[#112077]: https://github.com/home-assistant/core/pull/112077 +[#112078]: https://github.com/home-assistant/core/pull/112078 +[#112080]: https://github.com/home-assistant/core/pull/112080 +[#112081]: https://github.com/home-assistant/core/pull/112081 +[#112086]: https://github.com/home-assistant/core/pull/112086 +[#112087]: https://github.com/home-assistant/core/pull/112087 +[#112089]: https://github.com/home-assistant/core/pull/112089 +[#112096]: https://github.com/home-assistant/core/pull/112096 +[#112097]: https://github.com/home-assistant/core/pull/112097 +[#112099]: https://github.com/home-assistant/core/pull/112099 +[#112102]: https://github.com/home-assistant/core/pull/112102 +[#112103]: https://github.com/home-assistant/core/pull/112103 +[#112104]: https://github.com/home-assistant/core/pull/112104 +[#112106]: https://github.com/home-assistant/core/pull/112106 +[#112107]: https://github.com/home-assistant/core/pull/112107 +[#112108]: https://github.com/home-assistant/core/pull/112108 +[#112109]: https://github.com/home-assistant/core/pull/112109 +[#112110]: https://github.com/home-assistant/core/pull/112110 +[#112111]: https://github.com/home-assistant/core/pull/112111 +[#112120]: https://github.com/home-assistant/core/pull/112120 +[#112121]: https://github.com/home-assistant/core/pull/112121 +[#112122]: https://github.com/home-assistant/core/pull/112122 +[#112123]: https://github.com/home-assistant/core/pull/112123 +[#112126]: https://github.com/home-assistant/core/pull/112126 +[#112127]: https://github.com/home-assistant/core/pull/112127 +[#112128]: https://github.com/home-assistant/core/pull/112128 +[#112129]: https://github.com/home-assistant/core/pull/112129 +[#112130]: https://github.com/home-assistant/core/pull/112130 +[#112131]: https://github.com/home-assistant/core/pull/112131 +[#112132]: https://github.com/home-assistant/core/pull/112132 +[#112134]: https://github.com/home-assistant/core/pull/112134 +[#112135]: https://github.com/home-assistant/core/pull/112135 +[#112136]: https://github.com/home-assistant/core/pull/112136 +[#112141]: https://github.com/home-assistant/core/pull/112141 +[#112143]: https://github.com/home-assistant/core/pull/112143 +[#112144]: https://github.com/home-assistant/core/pull/112144 +[#112145]: https://github.com/home-assistant/core/pull/112145 +[#112147]: https://github.com/home-assistant/core/pull/112147 +[#112148]: https://github.com/home-assistant/core/pull/112148 +[#112149]: https://github.com/home-assistant/core/pull/112149 +[#112151]: https://github.com/home-assistant/core/pull/112151 +[#112153]: https://github.com/home-assistant/core/pull/112153 +[#112155]: https://github.com/home-assistant/core/pull/112155 +[#112156]: https://github.com/home-assistant/core/pull/112156 +[#112158]: https://github.com/home-assistant/core/pull/112158 +[#112159]: https://github.com/home-assistant/core/pull/112159 +[#112160]: https://github.com/home-assistant/core/pull/112160 +[#112161]: https://github.com/home-assistant/core/pull/112161 +[#112162]: https://github.com/home-assistant/core/pull/112162 +[#112164]: https://github.com/home-assistant/core/pull/112164 +[#112166]: https://github.com/home-assistant/core/pull/112166 +[#112168]: https://github.com/home-assistant/core/pull/112168 +[#112169]: https://github.com/home-assistant/core/pull/112169 +[#112170]: https://github.com/home-assistant/core/pull/112170 +[#112172]: https://github.com/home-assistant/core/pull/112172 +[#112173]: https://github.com/home-assistant/core/pull/112173 +[#112174]: https://github.com/home-assistant/core/pull/112174 +[#112175]: https://github.com/home-assistant/core/pull/112175 +[#112177]: https://github.com/home-assistant/core/pull/112177 +[#112179]: https://github.com/home-assistant/core/pull/112179 +[#112180]: https://github.com/home-assistant/core/pull/112180 +[#112181]: https://github.com/home-assistant/core/pull/112181 +[#112182]: https://github.com/home-assistant/core/pull/112182 +[#112183]: https://github.com/home-assistant/core/pull/112183 +[#112184]: https://github.com/home-assistant/core/pull/112184 +[#112185]: https://github.com/home-assistant/core/pull/112185 +[#112186]: https://github.com/home-assistant/core/pull/112186 +[#112187]: https://github.com/home-assistant/core/pull/112187 +[#112188]: https://github.com/home-assistant/core/pull/112188 +[#112189]: https://github.com/home-assistant/core/pull/112189 +[#112190]: https://github.com/home-assistant/core/pull/112190 +[#112192]: https://github.com/home-assistant/core/pull/112192 +[#112193]: https://github.com/home-assistant/core/pull/112193 +[#112194]: https://github.com/home-assistant/core/pull/112194 +[#112195]: https://github.com/home-assistant/core/pull/112195 +[#112196]: https://github.com/home-assistant/core/pull/112196 +[#112197]: https://github.com/home-assistant/core/pull/112197 +[#112198]: https://github.com/home-assistant/core/pull/112198 +[#112200]: https://github.com/home-assistant/core/pull/112200 +[#112201]: https://github.com/home-assistant/core/pull/112201 +[#112202]: https://github.com/home-assistant/core/pull/112202 +[#112203]: https://github.com/home-assistant/core/pull/112203 +[#112204]: https://github.com/home-assistant/core/pull/112204 +[#112205]: https://github.com/home-assistant/core/pull/112205 +[#112207]: https://github.com/home-assistant/core/pull/112207 +[#112208]: https://github.com/home-assistant/core/pull/112208 +[#112209]: https://github.com/home-assistant/core/pull/112209 +[#112210]: https://github.com/home-assistant/core/pull/112210 +[#112211]: https://github.com/home-assistant/core/pull/112211 +[#112212]: https://github.com/home-assistant/core/pull/112212 +[#112213]: https://github.com/home-assistant/core/pull/112213 +[#112214]: https://github.com/home-assistant/core/pull/112214 +[#112215]: https://github.com/home-assistant/core/pull/112215 +[#112217]: https://github.com/home-assistant/core/pull/112217 +[#112218]: https://github.com/home-assistant/core/pull/112218 +[#112219]: https://github.com/home-assistant/core/pull/112219 +[#112220]: https://github.com/home-assistant/core/pull/112220 +[#112221]: https://github.com/home-assistant/core/pull/112221 +[#112222]: https://github.com/home-assistant/core/pull/112222 +[#112223]: https://github.com/home-assistant/core/pull/112223 +[#112224]: https://github.com/home-assistant/core/pull/112224 +[#112225]: https://github.com/home-assistant/core/pull/112225 +[#112226]: https://github.com/home-assistant/core/pull/112226 +[#112227]: https://github.com/home-assistant/core/pull/112227 +[#112228]: https://github.com/home-assistant/core/pull/112228 +[#112229]: https://github.com/home-assistant/core/pull/112229 +[#112230]: https://github.com/home-assistant/core/pull/112230 +[#112231]: https://github.com/home-assistant/core/pull/112231 +[#112232]: https://github.com/home-assistant/core/pull/112232 +[#112233]: https://github.com/home-assistant/core/pull/112233 +[#112234]: https://github.com/home-assistant/core/pull/112234 +[#112235]: https://github.com/home-assistant/core/pull/112235 +[#112236]: https://github.com/home-assistant/core/pull/112236 +[#112237]: https://github.com/home-assistant/core/pull/112237 +[#112239]: https://github.com/home-assistant/core/pull/112239 +[#112240]: https://github.com/home-assistant/core/pull/112240 +[#112241]: https://github.com/home-assistant/core/pull/112241 +[#112244]: https://github.com/home-assistant/core/pull/112244 +[#112246]: https://github.com/home-assistant/core/pull/112246 +[#112247]: https://github.com/home-assistant/core/pull/112247 +[#112252]: https://github.com/home-assistant/core/pull/112252 +[#112253]: https://github.com/home-assistant/core/pull/112253 +[#112254]: https://github.com/home-assistant/core/pull/112254 +[#112256]: https://github.com/home-assistant/core/pull/112256 +[#112267]: https://github.com/home-assistant/core/pull/112267 +[#112268]: https://github.com/home-assistant/core/pull/112268 +[#112269]: https://github.com/home-assistant/core/pull/112269 +[#112275]: https://github.com/home-assistant/core/pull/112275 +[#112276]: https://github.com/home-assistant/core/pull/112276 +[#112277]: https://github.com/home-assistant/core/pull/112277 +[#112281]: https://github.com/home-assistant/core/pull/112281 +[#112282]: https://github.com/home-assistant/core/pull/112282 +[#112284]: https://github.com/home-assistant/core/pull/112284 +[#112286]: https://github.com/home-assistant/core/pull/112286 +[#112288]: https://github.com/home-assistant/core/pull/112288 +[#112289]: https://github.com/home-assistant/core/pull/112289 +[#112290]: https://github.com/home-assistant/core/pull/112290 +[#112291]: https://github.com/home-assistant/core/pull/112291 +[#112292]: https://github.com/home-assistant/core/pull/112292 +[#112293]: https://github.com/home-assistant/core/pull/112293 +[#112294]: https://github.com/home-assistant/core/pull/112294 +[#112295]: https://github.com/home-assistant/core/pull/112295 +[#112296]: https://github.com/home-assistant/core/pull/112296 +[#112297]: https://github.com/home-assistant/core/pull/112297 +[#112299]: https://github.com/home-assistant/core/pull/112299 +[#112300]: https://github.com/home-assistant/core/pull/112300 +[#112301]: https://github.com/home-assistant/core/pull/112301 +[#112302]: https://github.com/home-assistant/core/pull/112302 +[#112303]: https://github.com/home-assistant/core/pull/112303 +[#112304]: https://github.com/home-assistant/core/pull/112304 +[#112305]: https://github.com/home-assistant/core/pull/112305 +[#112306]: https://github.com/home-assistant/core/pull/112306 +[#112307]: https://github.com/home-assistant/core/pull/112307 +[#112308]: https://github.com/home-assistant/core/pull/112308 +[#112309]: https://github.com/home-assistant/core/pull/112309 +[#112310]: https://github.com/home-assistant/core/pull/112310 +[#112311]: https://github.com/home-assistant/core/pull/112311 +[#112312]: https://github.com/home-assistant/core/pull/112312 +[#112313]: https://github.com/home-assistant/core/pull/112313 +[#112314]: https://github.com/home-assistant/core/pull/112314 +[#112315]: https://github.com/home-assistant/core/pull/112315 +[#112316]: https://github.com/home-assistant/core/pull/112316 +[#112317]: https://github.com/home-assistant/core/pull/112317 +[#112318]: https://github.com/home-assistant/core/pull/112318 +[#112319]: https://github.com/home-assistant/core/pull/112319 +[#112320]: https://github.com/home-assistant/core/pull/112320 +[#112321]: https://github.com/home-assistant/core/pull/112321 +[#112322]: https://github.com/home-assistant/core/pull/112322 +[#112323]: https://github.com/home-assistant/core/pull/112323 +[#112324]: https://github.com/home-assistant/core/pull/112324 +[#112325]: https://github.com/home-assistant/core/pull/112325 +[#112326]: https://github.com/home-assistant/core/pull/112326 +[#112327]: https://github.com/home-assistant/core/pull/112327 +[#112328]: https://github.com/home-assistant/core/pull/112328 +[#112329]: https://github.com/home-assistant/core/pull/112329 +[#112330]: https://github.com/home-assistant/core/pull/112330 +[#112332]: https://github.com/home-assistant/core/pull/112332 +[#112333]: https://github.com/home-assistant/core/pull/112333 +[#112335]: https://github.com/home-assistant/core/pull/112335 +[#112336]: https://github.com/home-assistant/core/pull/112336 +[#112338]: https://github.com/home-assistant/core/pull/112338 +[#112339]: https://github.com/home-assistant/core/pull/112339 +[#112340]: https://github.com/home-assistant/core/pull/112340 +[#112341]: https://github.com/home-assistant/core/pull/112341 +[#112342]: https://github.com/home-assistant/core/pull/112342 +[#112343]: https://github.com/home-assistant/core/pull/112343 +[#112344]: https://github.com/home-assistant/core/pull/112344 +[#112345]: https://github.com/home-assistant/core/pull/112345 +[#112346]: https://github.com/home-assistant/core/pull/112346 +[#112347]: https://github.com/home-assistant/core/pull/112347 +[#112348]: https://github.com/home-assistant/core/pull/112348 +[#112349]: https://github.com/home-assistant/core/pull/112349 +[#112350]: https://github.com/home-assistant/core/pull/112350 +[#112351]: https://github.com/home-assistant/core/pull/112351 +[#112352]: https://github.com/home-assistant/core/pull/112352 +[#112353]: https://github.com/home-assistant/core/pull/112353 +[#112354]: https://github.com/home-assistant/core/pull/112354 +[#112355]: https://github.com/home-assistant/core/pull/112355 +[#112356]: https://github.com/home-assistant/core/pull/112356 +[#112357]: https://github.com/home-assistant/core/pull/112357 +[#112358]: https://github.com/home-assistant/core/pull/112358 +[#112359]: https://github.com/home-assistant/core/pull/112359 +[#112360]: https://github.com/home-assistant/core/pull/112360 +[#112361]: https://github.com/home-assistant/core/pull/112361 +[#112362]: https://github.com/home-assistant/core/pull/112362 +[#112363]: https://github.com/home-assistant/core/pull/112363 +[#112364]: https://github.com/home-assistant/core/pull/112364 +[#112365]: https://github.com/home-assistant/core/pull/112365 +[#112366]: https://github.com/home-assistant/core/pull/112366 +[#112367]: https://github.com/home-assistant/core/pull/112367 +[#112368]: https://github.com/home-assistant/core/pull/112368 +[#112369]: https://github.com/home-assistant/core/pull/112369 +[#112370]: https://github.com/home-assistant/core/pull/112370 +[#112372]: https://github.com/home-assistant/core/pull/112372 +[#112373]: https://github.com/home-assistant/core/pull/112373 +[#112374]: https://github.com/home-assistant/core/pull/112374 +[#112375]: https://github.com/home-assistant/core/pull/112375 +[#112376]: https://github.com/home-assistant/core/pull/112376 +[#112377]: https://github.com/home-assistant/core/pull/112377 +[#112378]: https://github.com/home-assistant/core/pull/112378 +[#112379]: https://github.com/home-assistant/core/pull/112379 +[#112380]: https://github.com/home-assistant/core/pull/112380 +[#112382]: https://github.com/home-assistant/core/pull/112382 +[#112383]: https://github.com/home-assistant/core/pull/112383 +[#112384]: https://github.com/home-assistant/core/pull/112384 +[#112385]: https://github.com/home-assistant/core/pull/112385 +[#112386]: https://github.com/home-assistant/core/pull/112386 +[#112389]: https://github.com/home-assistant/core/pull/112389 +[#112390]: https://github.com/home-assistant/core/pull/112390 +[#112391]: https://github.com/home-assistant/core/pull/112391 +[#112393]: https://github.com/home-assistant/core/pull/112393 +[#112394]: https://github.com/home-assistant/core/pull/112394 +[#112395]: https://github.com/home-assistant/core/pull/112395 +[#112396]: https://github.com/home-assistant/core/pull/112396 +[#112397]: https://github.com/home-assistant/core/pull/112397 +[#112398]: https://github.com/home-assistant/core/pull/112398 +[#112399]: https://github.com/home-assistant/core/pull/112399 +[#112400]: https://github.com/home-assistant/core/pull/112400 +[#112401]: https://github.com/home-assistant/core/pull/112401 +[#112402]: https://github.com/home-assistant/core/pull/112402 +[#112405]: https://github.com/home-assistant/core/pull/112405 +[#112407]: https://github.com/home-assistant/core/pull/112407 +[#112408]: https://github.com/home-assistant/core/pull/112408 +[#112409]: https://github.com/home-assistant/core/pull/112409 +[#112410]: https://github.com/home-assistant/core/pull/112410 +[#112411]: https://github.com/home-assistant/core/pull/112411 +[#112412]: https://github.com/home-assistant/core/pull/112412 +[#112418]: https://github.com/home-assistant/core/pull/112418 +[#112419]: https://github.com/home-assistant/core/pull/112419 +[#112420]: https://github.com/home-assistant/core/pull/112420 +[#112423]: https://github.com/home-assistant/core/pull/112423 +[#112425]: https://github.com/home-assistant/core/pull/112425 +[#112426]: https://github.com/home-assistant/core/pull/112426 +[#112429]: https://github.com/home-assistant/core/pull/112429 +[#112430]: https://github.com/home-assistant/core/pull/112430 +[#112432]: https://github.com/home-assistant/core/pull/112432 +[#112433]: https://github.com/home-assistant/core/pull/112433 +[#112436]: https://github.com/home-assistant/core/pull/112436 +[#112438]: https://github.com/home-assistant/core/pull/112438 +[#112441]: https://github.com/home-assistant/core/pull/112441 +[#112444]: https://github.com/home-assistant/core/pull/112444 +[#112446]: https://github.com/home-assistant/core/pull/112446 +[#112447]: https://github.com/home-assistant/core/pull/112447 +[#112449]: https://github.com/home-assistant/core/pull/112449 +[#112452]: https://github.com/home-assistant/core/pull/112452 +[#112456]: https://github.com/home-assistant/core/pull/112456 +[#112457]: https://github.com/home-assistant/core/pull/112457 +[#112460]: https://github.com/home-assistant/core/pull/112460 +[#112461]: https://github.com/home-assistant/core/pull/112461 +[#112462]: https://github.com/home-assistant/core/pull/112462 +[#112466]: https://github.com/home-assistant/core/pull/112466 +[#112467]: https://github.com/home-assistant/core/pull/112467 +[#112468]: https://github.com/home-assistant/core/pull/112468 +[#112469]: https://github.com/home-assistant/core/pull/112469 +[#112470]: https://github.com/home-assistant/core/pull/112470 +[#112472]: https://github.com/home-assistant/core/pull/112472 +[#112475]: https://github.com/home-assistant/core/pull/112475 +[#112477]: https://github.com/home-assistant/core/pull/112477 +[#112482]: https://github.com/home-assistant/core/pull/112482 +[#112483]: https://github.com/home-assistant/core/pull/112483 +[#112484]: https://github.com/home-assistant/core/pull/112484 +[#112485]: https://github.com/home-assistant/core/pull/112485 +[#112486]: https://github.com/home-assistant/core/pull/112486 +[#112488]: https://github.com/home-assistant/core/pull/112488 +[#112489]: https://github.com/home-assistant/core/pull/112489 +[#112490]: https://github.com/home-assistant/core/pull/112490 +[#112493]: https://github.com/home-assistant/core/pull/112493 +[#112496]: https://github.com/home-assistant/core/pull/112496 +[#112497]: https://github.com/home-assistant/core/pull/112497 +[#112498]: https://github.com/home-assistant/core/pull/112498 +[#112503]: https://github.com/home-assistant/core/pull/112503 +[#112514]: https://github.com/home-assistant/core/pull/112514 +[#112518]: https://github.com/home-assistant/core/pull/112518 +[#112520]: https://github.com/home-assistant/core/pull/112520 +[#112522]: https://github.com/home-assistant/core/pull/112522 +[#112526]: https://github.com/home-assistant/core/pull/112526 +[#112528]: https://github.com/home-assistant/core/pull/112528 +[#112532]: https://github.com/home-assistant/core/pull/112532 +[#112533]: https://github.com/home-assistant/core/pull/112533 +[#112535]: https://github.com/home-assistant/core/pull/112535 +[#112536]: https://github.com/home-assistant/core/pull/112536 +[#112542]: https://github.com/home-assistant/core/pull/112542 +[#112543]: https://github.com/home-assistant/core/pull/112543 +[#112546]: https://github.com/home-assistant/core/pull/112546 +[#112551]: https://github.com/home-assistant/core/pull/112551 +[#112555]: https://github.com/home-assistant/core/pull/112555 +[#112557]: https://github.com/home-assistant/core/pull/112557 +[#112560]: https://github.com/home-assistant/core/pull/112560 +[#112562]: https://github.com/home-assistant/core/pull/112562 +[#112563]: https://github.com/home-assistant/core/pull/112563 +[#112572]: https://github.com/home-assistant/core/pull/112572 +[#112575]: https://github.com/home-assistant/core/pull/112575 +[#112608]: https://github.com/home-assistant/core/pull/112608 +[#112609]: https://github.com/home-assistant/core/pull/112609 +[#112610]: https://github.com/home-assistant/core/pull/112610 +[#112612]: https://github.com/home-assistant/core/pull/112612 +[#112626]: https://github.com/home-assistant/core/pull/112626 +[#112634]: https://github.com/home-assistant/core/pull/112634 +[#112637]: https://github.com/home-assistant/core/pull/112637 +[#112640]: https://github.com/home-assistant/core/pull/112640 +[#112643]: https://github.com/home-assistant/core/pull/112643 +[#112652]: https://github.com/home-assistant/core/pull/112652 +[#112657]: https://github.com/home-assistant/core/pull/112657 +[#112658]: https://github.com/home-assistant/core/pull/112658 +[#112662]: https://github.com/home-assistant/core/pull/112662 +[#112665]: https://github.com/home-assistant/core/pull/112665 +[#112668]: https://github.com/home-assistant/core/pull/112668 +[#112669]: https://github.com/home-assistant/core/pull/112669 +[#112670]: https://github.com/home-assistant/core/pull/112670 +[#112671]: https://github.com/home-assistant/core/pull/112671 +[#112682]: https://github.com/home-assistant/core/pull/112682 +[#112683]: https://github.com/home-assistant/core/pull/112683 +[#112690]: https://github.com/home-assistant/core/pull/112690 +[#112695]: https://github.com/home-assistant/core/pull/112695 +[#112697]: https://github.com/home-assistant/core/pull/112697 +[#112698]: https://github.com/home-assistant/core/pull/112698 +[#112699]: https://github.com/home-assistant/core/pull/112699 +[#112700]: https://github.com/home-assistant/core/pull/112700 +[#112702]: https://github.com/home-assistant/core/pull/112702 +[#112703]: https://github.com/home-assistant/core/pull/112703 +[#112704]: https://github.com/home-assistant/core/pull/112704 +[#112705]: https://github.com/home-assistant/core/pull/112705 +[#112706]: https://github.com/home-assistant/core/pull/112706 +[#112707]: https://github.com/home-assistant/core/pull/112707 +[#112708]: https://github.com/home-assistant/core/pull/112708 +[#112709]: https://github.com/home-assistant/core/pull/112709 +[#112710]: https://github.com/home-assistant/core/pull/112710 +[#112711]: https://github.com/home-assistant/core/pull/112711 +[#112712]: https://github.com/home-assistant/core/pull/112712 +[#112720]: https://github.com/home-assistant/core/pull/112720 +[#112725]: https://github.com/home-assistant/core/pull/112725 +[#112726]: https://github.com/home-assistant/core/pull/112726 +[#112728]: https://github.com/home-assistant/core/pull/112728 +[#112732]: https://github.com/home-assistant/core/pull/112732 +[#112734]: https://github.com/home-assistant/core/pull/112734 +[#112736]: https://github.com/home-assistant/core/pull/112736 +[#112737]: https://github.com/home-assistant/core/pull/112737 +[#112738]: https://github.com/home-assistant/core/pull/112738 +[#112739]: https://github.com/home-assistant/core/pull/112739 +[#112740]: https://github.com/home-assistant/core/pull/112740 +[#112741]: https://github.com/home-assistant/core/pull/112741 +[#112742]: https://github.com/home-assistant/core/pull/112742 +[#112743]: https://github.com/home-assistant/core/pull/112743 +[#112749]: https://github.com/home-assistant/core/pull/112749 +[#112750]: https://github.com/home-assistant/core/pull/112750 +[#112752]: https://github.com/home-assistant/core/pull/112752 +[#112753]: https://github.com/home-assistant/core/pull/112753 +[#112756]: https://github.com/home-assistant/core/pull/112756 +[#112760]: https://github.com/home-assistant/core/pull/112760 +[#112763]: https://github.com/home-assistant/core/pull/112763 +[#112764]: https://github.com/home-assistant/core/pull/112764 +[#112765]: https://github.com/home-assistant/core/pull/112765 +[#112766]: https://github.com/home-assistant/core/pull/112766 +[#112767]: https://github.com/home-assistant/core/pull/112767 +[#112768]: https://github.com/home-assistant/core/pull/112768 +[#112769]: https://github.com/home-assistant/core/pull/112769 +[#112770]: https://github.com/home-assistant/core/pull/112770 +[#112771]: https://github.com/home-assistant/core/pull/112771 +[#112772]: https://github.com/home-assistant/core/pull/112772 +[#112773]: https://github.com/home-assistant/core/pull/112773 +[#112774]: https://github.com/home-assistant/core/pull/112774 +[#112775]: https://github.com/home-assistant/core/pull/112775 +[#112776]: https://github.com/home-assistant/core/pull/112776 +[#112777]: https://github.com/home-assistant/core/pull/112777 +[#112778]: https://github.com/home-assistant/core/pull/112778 +[#112779]: https://github.com/home-assistant/core/pull/112779 +[#112780]: https://github.com/home-assistant/core/pull/112780 +[#112781]: https://github.com/home-assistant/core/pull/112781 +[#112782]: https://github.com/home-assistant/core/pull/112782 +[#112786]: https://github.com/home-assistant/core/pull/112786 +[#112788]: https://github.com/home-assistant/core/pull/112788 +[#112789]: https://github.com/home-assistant/core/pull/112789 +[#112790]: https://github.com/home-assistant/core/pull/112790 +[#112791]: https://github.com/home-assistant/core/pull/112791 +[#112793]: https://github.com/home-assistant/core/pull/112793 +[#112800]: https://github.com/home-assistant/core/pull/112800 +[#112801]: https://github.com/home-assistant/core/pull/112801 +[#112802]: https://github.com/home-assistant/core/pull/112802 +[#112803]: https://github.com/home-assistant/core/pull/112803 +[#112804]: https://github.com/home-assistant/core/pull/112804 +[#112805]: https://github.com/home-assistant/core/pull/112805 +[#112807]: https://github.com/home-assistant/core/pull/112807 +[#112810]: https://github.com/home-assistant/core/pull/112810 +[#112813]: https://github.com/home-assistant/core/pull/112813 +[#112814]: https://github.com/home-assistant/core/pull/112814 +[#112818]: https://github.com/home-assistant/core/pull/112818 +[#112819]: https://github.com/home-assistant/core/pull/112819 +[#112820]: https://github.com/home-assistant/core/pull/112820 +[#112821]: https://github.com/home-assistant/core/pull/112821 +[#112822]: https://github.com/home-assistant/core/pull/112822 +[#112825]: https://github.com/home-assistant/core/pull/112825 +[#112826]: https://github.com/home-assistant/core/pull/112826 +[#112828]: https://github.com/home-assistant/core/pull/112828 +[#112844]: https://github.com/home-assistant/core/pull/112844 +[#112845]: https://github.com/home-assistant/core/pull/112845 +[#112846]: https://github.com/home-assistant/core/pull/112846 +[#112847]: https://github.com/home-assistant/core/pull/112847 +[#112849]: https://github.com/home-assistant/core/pull/112849 +[#112850]: https://github.com/home-assistant/core/pull/112850 +[#112851]: https://github.com/home-assistant/core/pull/112851 +[#112854]: https://github.com/home-assistant/core/pull/112854 +[#112859]: https://github.com/home-assistant/core/pull/112859 +[#112863]: https://github.com/home-assistant/core/pull/112863 +[#112864]: https://github.com/home-assistant/core/pull/112864 +[#112866]: https://github.com/home-assistant/core/pull/112866 +[#112869]: https://github.com/home-assistant/core/pull/112869 +[#112872]: https://github.com/home-assistant/core/pull/112872 +[#112888]: https://github.com/home-assistant/core/pull/112888 +[#112892]: https://github.com/home-assistant/core/pull/112892 +[#112893]: https://github.com/home-assistant/core/pull/112893 +[#112895]: https://github.com/home-assistant/core/pull/112895 +[#112896]: https://github.com/home-assistant/core/pull/112896 +[#112898]: https://github.com/home-assistant/core/pull/112898 +[#112899]: https://github.com/home-assistant/core/pull/112899 +[#112900]: https://github.com/home-assistant/core/pull/112900 +[#112901]: https://github.com/home-assistant/core/pull/112901 +[#112902]: https://github.com/home-assistant/core/pull/112902 +[#112903]: https://github.com/home-assistant/core/pull/112903 +[#112904]: https://github.com/home-assistant/core/pull/112904 +[#112905]: https://github.com/home-assistant/core/pull/112905 +[#112906]: https://github.com/home-assistant/core/pull/112906 +[#112907]: https://github.com/home-assistant/core/pull/112907 +[#112908]: https://github.com/home-assistant/core/pull/112908 +[#112909]: https://github.com/home-assistant/core/pull/112909 +[#112910]: https://github.com/home-assistant/core/pull/112910 +[#112911]: https://github.com/home-assistant/core/pull/112911 +[#112912]: https://github.com/home-assistant/core/pull/112912 +[#112913]: https://github.com/home-assistant/core/pull/112913 +[#112914]: https://github.com/home-assistant/core/pull/112914 +[#112915]: https://github.com/home-assistant/core/pull/112915 +[#112917]: https://github.com/home-assistant/core/pull/112917 +[#112918]: https://github.com/home-assistant/core/pull/112918 +[#112919]: https://github.com/home-assistant/core/pull/112919 +[#112920]: https://github.com/home-assistant/core/pull/112920 +[#112921]: https://github.com/home-assistant/core/pull/112921 +[#112922]: https://github.com/home-assistant/core/pull/112922 +[#112923]: https://github.com/home-assistant/core/pull/112923 +[#112924]: https://github.com/home-assistant/core/pull/112924 +[#112925]: https://github.com/home-assistant/core/pull/112925 +[#112926]: https://github.com/home-assistant/core/pull/112926 +[#112928]: https://github.com/home-assistant/core/pull/112928 +[#112929]: https://github.com/home-assistant/core/pull/112929 +[#112930]: https://github.com/home-assistant/core/pull/112930 +[#112931]: https://github.com/home-assistant/core/pull/112931 +[#112932]: https://github.com/home-assistant/core/pull/112932 +[#112933]: https://github.com/home-assistant/core/pull/112933 +[#112934]: https://github.com/home-assistant/core/pull/112934 +[#112935]: https://github.com/home-assistant/core/pull/112935 +[#112936]: https://github.com/home-assistant/core/pull/112936 +[#112937]: https://github.com/home-assistant/core/pull/112937 +[#112938]: https://github.com/home-assistant/core/pull/112938 +[#112939]: https://github.com/home-assistant/core/pull/112939 +[#112940]: https://github.com/home-assistant/core/pull/112940 +[#112941]: https://github.com/home-assistant/core/pull/112941 +[#112942]: https://github.com/home-assistant/core/pull/112942 +[#112943]: https://github.com/home-assistant/core/pull/112943 +[#112944]: https://github.com/home-assistant/core/pull/112944 +[#112945]: https://github.com/home-assistant/core/pull/112945 +[#112946]: https://github.com/home-assistant/core/pull/112946 +[#112947]: https://github.com/home-assistant/core/pull/112947 +[#112949]: https://github.com/home-assistant/core/pull/112949 +[#112951]: https://github.com/home-assistant/core/pull/112951 +[#112952]: https://github.com/home-assistant/core/pull/112952 +[#112953]: https://github.com/home-assistant/core/pull/112953 +[#112954]: https://github.com/home-assistant/core/pull/112954 +[#112955]: https://github.com/home-assistant/core/pull/112955 +[#112956]: https://github.com/home-assistant/core/pull/112956 +[#112957]: https://github.com/home-assistant/core/pull/112957 +[#112958]: https://github.com/home-assistant/core/pull/112958 +[#112959]: https://github.com/home-assistant/core/pull/112959 +[#112960]: https://github.com/home-assistant/core/pull/112960 +[#112963]: https://github.com/home-assistant/core/pull/112963 +[#112964]: https://github.com/home-assistant/core/pull/112964 +[#112965]: https://github.com/home-assistant/core/pull/112965 +[#112966]: https://github.com/home-assistant/core/pull/112966 +[#112967]: https://github.com/home-assistant/core/pull/112967 +[#112969]: https://github.com/home-assistant/core/pull/112969 +[#112970]: https://github.com/home-assistant/core/pull/112970 +[#112971]: https://github.com/home-assistant/core/pull/112971 +[#112972]: https://github.com/home-assistant/core/pull/112972 +[#112973]: https://github.com/home-assistant/core/pull/112973 +[#112974]: https://github.com/home-assistant/core/pull/112974 +[#112975]: https://github.com/home-assistant/core/pull/112975 +[#112976]: https://github.com/home-assistant/core/pull/112976 +[#112977]: https://github.com/home-assistant/core/pull/112977 +[#112979]: https://github.com/home-assistant/core/pull/112979 +[#112982]: https://github.com/home-assistant/core/pull/112982 +[#112987]: https://github.com/home-assistant/core/pull/112987 +[#112988]: https://github.com/home-assistant/core/pull/112988 +[#112989]: https://github.com/home-assistant/core/pull/112989 +[#112990]: https://github.com/home-assistant/core/pull/112990 +[#112991]: https://github.com/home-assistant/core/pull/112991 +[#112992]: https://github.com/home-assistant/core/pull/112992 +[#112993]: https://github.com/home-assistant/core/pull/112993 +[#112994]: https://github.com/home-assistant/core/pull/112994 +[#112995]: https://github.com/home-assistant/core/pull/112995 +[#112996]: https://github.com/home-assistant/core/pull/112996 +[#112997]: https://github.com/home-assistant/core/pull/112997 +[#113002]: https://github.com/home-assistant/core/pull/113002 +[#113004]: https://github.com/home-assistant/core/pull/113004 +[#113005]: https://github.com/home-assistant/core/pull/113005 +[#113006]: https://github.com/home-assistant/core/pull/113006 +[#113010]: https://github.com/home-assistant/core/pull/113010 +[#113011]: https://github.com/home-assistant/core/pull/113011 +[#113012]: https://github.com/home-assistant/core/pull/113012 +[#113013]: https://github.com/home-assistant/core/pull/113013 +[#113014]: https://github.com/home-assistant/core/pull/113014 +[#113015]: https://github.com/home-assistant/core/pull/113015 +[#113016]: https://github.com/home-assistant/core/pull/113016 +[#113017]: https://github.com/home-assistant/core/pull/113017 +[#113018]: https://github.com/home-assistant/core/pull/113018 +[#113020]: https://github.com/home-assistant/core/pull/113020 +[#113022]: https://github.com/home-assistant/core/pull/113022 +[#113026]: https://github.com/home-assistant/core/pull/113026 +[#113027]: https://github.com/home-assistant/core/pull/113027 +[#113030]: https://github.com/home-assistant/core/pull/113030 +[#113031]: https://github.com/home-assistant/core/pull/113031 +[#113032]: https://github.com/home-assistant/core/pull/113032 +[#113033]: https://github.com/home-assistant/core/pull/113033 +[#113038]: https://github.com/home-assistant/core/pull/113038 +[#113041]: https://github.com/home-assistant/core/pull/113041 +[#113042]: https://github.com/home-assistant/core/pull/113042 +[#113044]: https://github.com/home-assistant/core/pull/113044 +[#113045]: https://github.com/home-assistant/core/pull/113045 +[#113046]: https://github.com/home-assistant/core/pull/113046 +[#113049]: https://github.com/home-assistant/core/pull/113049 +[#113051]: https://github.com/home-assistant/core/pull/113051 +[#113055]: https://github.com/home-assistant/core/pull/113055 +[#113057]: https://github.com/home-assistant/core/pull/113057 +[#113060]: https://github.com/home-assistant/core/pull/113060 +[#113069]: https://github.com/home-assistant/core/pull/113069 +[#113072]: https://github.com/home-assistant/core/pull/113072 +[#113074]: https://github.com/home-assistant/core/pull/113074 +[#113075]: https://github.com/home-assistant/core/pull/113075 +[#113089]: https://github.com/home-assistant/core/pull/113089 +[#113090]: https://github.com/home-assistant/core/pull/113090 +[#113094]: https://github.com/home-assistant/core/pull/113094 +[#113099]: https://github.com/home-assistant/core/pull/113099 +[#113102]: https://github.com/home-assistant/core/pull/113102 +[#113103]: https://github.com/home-assistant/core/pull/113103 +[#113107]: https://github.com/home-assistant/core/pull/113107 +[#113108]: https://github.com/home-assistant/core/pull/113108 +[#113109]: https://github.com/home-assistant/core/pull/113109 +[#113110]: https://github.com/home-assistant/core/pull/113110 +[#113111]: https://github.com/home-assistant/core/pull/113111 +[#113112]: https://github.com/home-assistant/core/pull/113112 +[#113113]: https://github.com/home-assistant/core/pull/113113 +[#113114]: https://github.com/home-assistant/core/pull/113114 +[#113115]: https://github.com/home-assistant/core/pull/113115 +[#113116]: https://github.com/home-assistant/core/pull/113116 +[#113118]: https://github.com/home-assistant/core/pull/113118 +[#113119]: https://github.com/home-assistant/core/pull/113119 +[#113120]: https://github.com/home-assistant/core/pull/113120 +[#113122]: https://github.com/home-assistant/core/pull/113122 +[#113123]: https://github.com/home-assistant/core/pull/113123 +[#113124]: https://github.com/home-assistant/core/pull/113124 +[#113126]: https://github.com/home-assistant/core/pull/113126 +[#113128]: https://github.com/home-assistant/core/pull/113128 +[#113129]: https://github.com/home-assistant/core/pull/113129 +[#113130]: https://github.com/home-assistant/core/pull/113130 +[#113132]: https://github.com/home-assistant/core/pull/113132 +[#113133]: https://github.com/home-assistant/core/pull/113133 +[#113136]: https://github.com/home-assistant/core/pull/113136 +[#113138]: https://github.com/home-assistant/core/pull/113138 +[#113139]: https://github.com/home-assistant/core/pull/113139 +[#113168]: https://github.com/home-assistant/core/pull/113168 +[#113169]: https://github.com/home-assistant/core/pull/113169 +[#113173]: https://github.com/home-assistant/core/pull/113173 +[#113174]: https://github.com/home-assistant/core/pull/113174 +[#113175]: https://github.com/home-assistant/core/pull/113175 +[#113178]: https://github.com/home-assistant/core/pull/113178 +[#113179]: https://github.com/home-assistant/core/pull/113179 +[#113181]: https://github.com/home-assistant/core/pull/113181 +[#113182]: https://github.com/home-assistant/core/pull/113182 +[#113183]: https://github.com/home-assistant/core/pull/113183 +[#113184]: https://github.com/home-assistant/core/pull/113184 +[#113185]: https://github.com/home-assistant/core/pull/113185 +[#113188]: https://github.com/home-assistant/core/pull/113188 +[#113189]: https://github.com/home-assistant/core/pull/113189 +[#113190]: https://github.com/home-assistant/core/pull/113190 +[#113191]: https://github.com/home-assistant/core/pull/113191 +[#113192]: https://github.com/home-assistant/core/pull/113192 +[#113195]: https://github.com/home-assistant/core/pull/113195 +[#113197]: https://github.com/home-assistant/core/pull/113197 +[#113201]: https://github.com/home-assistant/core/pull/113201 +[#113202]: https://github.com/home-assistant/core/pull/113202 +[#113206]: https://github.com/home-assistant/core/pull/113206 +[#113207]: https://github.com/home-assistant/core/pull/113207 +[#113208]: https://github.com/home-assistant/core/pull/113208 +[#113215]: https://github.com/home-assistant/core/pull/113215 +[#113217]: https://github.com/home-assistant/core/pull/113217 +[#113218]: https://github.com/home-assistant/core/pull/113218 +[#113221]: https://github.com/home-assistant/core/pull/113221 +[#113225]: https://github.com/home-assistant/core/pull/113225 +[#113227]: https://github.com/home-assistant/core/pull/113227 +[#113229]: https://github.com/home-assistant/core/pull/113229 +[#113231]: https://github.com/home-assistant/core/pull/113231 +[#113233]: https://github.com/home-assistant/core/pull/113233 +[#113236]: https://github.com/home-assistant/core/pull/113236 +[#113241]: https://github.com/home-assistant/core/pull/113241 +[#113242]: https://github.com/home-assistant/core/pull/113242 +[#113243]: https://github.com/home-assistant/core/pull/113243 +[#113245]: https://github.com/home-assistant/core/pull/113245 +[#113248]: https://github.com/home-assistant/core/pull/113248 +[#113252]: https://github.com/home-assistant/core/pull/113252 +[#113253]: https://github.com/home-assistant/core/pull/113253 +[#113256]: https://github.com/home-assistant/core/pull/113256 +[#113257]: https://github.com/home-assistant/core/pull/113257 +[#113258]: https://github.com/home-assistant/core/pull/113258 +[#113259]: https://github.com/home-assistant/core/pull/113259 +[#113260]: https://github.com/home-assistant/core/pull/113260 +[#113262]: https://github.com/home-assistant/core/pull/113262 +[#113263]: https://github.com/home-assistant/core/pull/113263 +[#113268]: https://github.com/home-assistant/core/pull/113268 +[#113269]: https://github.com/home-assistant/core/pull/113269 +[#113270]: https://github.com/home-assistant/core/pull/113270 +[#113271]: https://github.com/home-assistant/core/pull/113271 +[#113272]: https://github.com/home-assistant/core/pull/113272 +[#113273]: https://github.com/home-assistant/core/pull/113273 +[#113274]: https://github.com/home-assistant/core/pull/113274 +[#113276]: https://github.com/home-assistant/core/pull/113276 +[#113277]: https://github.com/home-assistant/core/pull/113277 +[#113278]: https://github.com/home-assistant/core/pull/113278 +[#113280]: https://github.com/home-assistant/core/pull/113280 +[#113281]: https://github.com/home-assistant/core/pull/113281 +[#113282]: https://github.com/home-assistant/core/pull/113282 +[#113283]: https://github.com/home-assistant/core/pull/113283 +[#113284]: https://github.com/home-assistant/core/pull/113284 +[#113285]: https://github.com/home-assistant/core/pull/113285 +[#113286]: https://github.com/home-assistant/core/pull/113286 +[#113287]: https://github.com/home-assistant/core/pull/113287 +[#113288]: https://github.com/home-assistant/core/pull/113288 +[#113289]: https://github.com/home-assistant/core/pull/113289 +[#113290]: https://github.com/home-assistant/core/pull/113290 +[#113291]: https://github.com/home-assistant/core/pull/113291 +[#113292]: https://github.com/home-assistant/core/pull/113292 +[#113293]: https://github.com/home-assistant/core/pull/113293 +[#113294]: https://github.com/home-assistant/core/pull/113294 +[#113295]: https://github.com/home-assistant/core/pull/113295 +[#113296]: https://github.com/home-assistant/core/pull/113296 +[#113297]: https://github.com/home-assistant/core/pull/113297 +[#113298]: https://github.com/home-assistant/core/pull/113298 +[#113299]: https://github.com/home-assistant/core/pull/113299 +[#113300]: https://github.com/home-assistant/core/pull/113300 +[#113301]: https://github.com/home-assistant/core/pull/113301 +[#113302]: https://github.com/home-assistant/core/pull/113302 +[#113303]: https://github.com/home-assistant/core/pull/113303 +[#113304]: https://github.com/home-assistant/core/pull/113304 +[#113305]: https://github.com/home-assistant/core/pull/113305 +[#113306]: https://github.com/home-assistant/core/pull/113306 +[#113307]: https://github.com/home-assistant/core/pull/113307 +[#113308]: https://github.com/home-assistant/core/pull/113308 +[#113309]: https://github.com/home-assistant/core/pull/113309 +[#113311]: https://github.com/home-assistant/core/pull/113311 +[#113312]: https://github.com/home-assistant/core/pull/113312 +[#113313]: https://github.com/home-assistant/core/pull/113313 +[#113314]: https://github.com/home-assistant/core/pull/113314 +[#113315]: https://github.com/home-assistant/core/pull/113315 +[#113316]: https://github.com/home-assistant/core/pull/113316 +[#113317]: https://github.com/home-assistant/core/pull/113317 +[#113318]: https://github.com/home-assistant/core/pull/113318 +[#113319]: https://github.com/home-assistant/core/pull/113319 +[#113320]: https://github.com/home-assistant/core/pull/113320 +[#113321]: https://github.com/home-assistant/core/pull/113321 +[#113322]: https://github.com/home-assistant/core/pull/113322 +[#113323]: https://github.com/home-assistant/core/pull/113323 +[#113324]: https://github.com/home-assistant/core/pull/113324 +[#113325]: https://github.com/home-assistant/core/pull/113325 +[#113326]: https://github.com/home-assistant/core/pull/113326 +[#113327]: https://github.com/home-assistant/core/pull/113327 +[#113328]: https://github.com/home-assistant/core/pull/113328 +[#113329]: https://github.com/home-assistant/core/pull/113329 +[#113330]: https://github.com/home-assistant/core/pull/113330 +[#113331]: https://github.com/home-assistant/core/pull/113331 +[#113332]: https://github.com/home-assistant/core/pull/113332 +[#113333]: https://github.com/home-assistant/core/pull/113333 +[#113335]: https://github.com/home-assistant/core/pull/113335 +[#113336]: https://github.com/home-assistant/core/pull/113336 +[#113337]: https://github.com/home-assistant/core/pull/113337 +[#113338]: https://github.com/home-assistant/core/pull/113338 +[#113339]: https://github.com/home-assistant/core/pull/113339 +[#113340]: https://github.com/home-assistant/core/pull/113340 +[#113341]: https://github.com/home-assistant/core/pull/113341 +[#113342]: https://github.com/home-assistant/core/pull/113342 +[#113343]: https://github.com/home-assistant/core/pull/113343 +[#113344]: https://github.com/home-assistant/core/pull/113344 +[#113345]: https://github.com/home-assistant/core/pull/113345 +[#113346]: https://github.com/home-assistant/core/pull/113346 +[#113347]: https://github.com/home-assistant/core/pull/113347 +[#113348]: https://github.com/home-assistant/core/pull/113348 +[#113349]: https://github.com/home-assistant/core/pull/113349 +[#113350]: https://github.com/home-assistant/core/pull/113350 +[#113351]: https://github.com/home-assistant/core/pull/113351 +[#113352]: https://github.com/home-assistant/core/pull/113352 +[#113353]: https://github.com/home-assistant/core/pull/113353 +[#113354]: https://github.com/home-assistant/core/pull/113354 +[#113355]: https://github.com/home-assistant/core/pull/113355 +[#113356]: https://github.com/home-assistant/core/pull/113356 +[#113357]: https://github.com/home-assistant/core/pull/113357 +[#113358]: https://github.com/home-assistant/core/pull/113358 +[#113359]: https://github.com/home-assistant/core/pull/113359 +[#113360]: https://github.com/home-assistant/core/pull/113360 +[#113361]: https://github.com/home-assistant/core/pull/113361 +[#113362]: https://github.com/home-assistant/core/pull/113362 +[#113363]: https://github.com/home-assistant/core/pull/113363 +[#113364]: https://github.com/home-assistant/core/pull/113364 +[#113365]: https://github.com/home-assistant/core/pull/113365 +[#113366]: https://github.com/home-assistant/core/pull/113366 +[#113367]: https://github.com/home-assistant/core/pull/113367 +[#113368]: https://github.com/home-assistant/core/pull/113368 +[#113369]: https://github.com/home-assistant/core/pull/113369 +[#113370]: https://github.com/home-assistant/core/pull/113370 +[#113371]: https://github.com/home-assistant/core/pull/113371 +[#113378]: https://github.com/home-assistant/core/pull/113378 +[#113382]: https://github.com/home-assistant/core/pull/113382 +[#113383]: https://github.com/home-assistant/core/pull/113383 +[#113384]: https://github.com/home-assistant/core/pull/113384 +[#113386]: https://github.com/home-assistant/core/pull/113386 +[#113387]: https://github.com/home-assistant/core/pull/113387 +[#113388]: https://github.com/home-assistant/core/pull/113388 +[#113389]: https://github.com/home-assistant/core/pull/113389 +[#113390]: https://github.com/home-assistant/core/pull/113390 +[#113391]: https://github.com/home-assistant/core/pull/113391 +[#113397]: https://github.com/home-assistant/core/pull/113397 +[#113401]: https://github.com/home-assistant/core/pull/113401 +[#113402]: https://github.com/home-assistant/core/pull/113402 +[#113404]: https://github.com/home-assistant/core/pull/113404 +[#113405]: https://github.com/home-assistant/core/pull/113405 +[#113406]: https://github.com/home-assistant/core/pull/113406 +[#113408]: https://github.com/home-assistant/core/pull/113408 +[#113409]: https://github.com/home-assistant/core/pull/113409 +[#113410]: https://github.com/home-assistant/core/pull/113410 +[#113411]: https://github.com/home-assistant/core/pull/113411 +[#113412]: https://github.com/home-assistant/core/pull/113412 +[#113413]: https://github.com/home-assistant/core/pull/113413 +[#113414]: https://github.com/home-assistant/core/pull/113414 +[#113415]: https://github.com/home-assistant/core/pull/113415 +[#113416]: https://github.com/home-assistant/core/pull/113416 +[#113417]: https://github.com/home-assistant/core/pull/113417 +[#113418]: https://github.com/home-assistant/core/pull/113418 +[#113419]: https://github.com/home-assistant/core/pull/113419 +[#113420]: https://github.com/home-assistant/core/pull/113420 +[#113422]: https://github.com/home-assistant/core/pull/113422 +[#113425]: https://github.com/home-assistant/core/pull/113425 +[#113431]: https://github.com/home-assistant/core/pull/113431 +[#113440]: https://github.com/home-assistant/core/pull/113440 +[#113441]: https://github.com/home-assistant/core/pull/113441 +[#113442]: https://github.com/home-assistant/core/pull/113442 +[#113446]: https://github.com/home-assistant/core/pull/113446 +[#113447]: https://github.com/home-assistant/core/pull/113447 +[#113450]: https://github.com/home-assistant/core/pull/113450 +[#113451]: https://github.com/home-assistant/core/pull/113451 +[#113453]: https://github.com/home-assistant/core/pull/113453 +[#113455]: https://github.com/home-assistant/core/pull/113455 +[#113462]: https://github.com/home-assistant/core/pull/113462 +[#113465]: https://github.com/home-assistant/core/pull/113465 +[#113467]: https://github.com/home-assistant/core/pull/113467 +[#113469]: https://github.com/home-assistant/core/pull/113469 +[#113471]: https://github.com/home-assistant/core/pull/113471 +[#113478]: https://github.com/home-assistant/core/pull/113478 +[#113480]: https://github.com/home-assistant/core/pull/113480 +[#113482]: https://github.com/home-assistant/core/pull/113482 +[#113485]: https://github.com/home-assistant/core/pull/113485 +[#113490]: https://github.com/home-assistant/core/pull/113490 +[#113493]: https://github.com/home-assistant/core/pull/113493 +[#113496]: https://github.com/home-assistant/core/pull/113496 +[#113501]: https://github.com/home-assistant/core/pull/113501 +[#113502]: https://github.com/home-assistant/core/pull/113502 +[#113504]: https://github.com/home-assistant/core/pull/113504 +[#113506]: https://github.com/home-assistant/core/pull/113506 +[#113508]: https://github.com/home-assistant/core/pull/113508 +[#113509]: https://github.com/home-assistant/core/pull/113509 +[#113510]: https://github.com/home-assistant/core/pull/113510 +[#113511]: https://github.com/home-assistant/core/pull/113511 +[#113514]: https://github.com/home-assistant/core/pull/113514 +[#113516]: https://github.com/home-assistant/core/pull/113516 +[#113524]: https://github.com/home-assistant/core/pull/113524 +[#113527]: https://github.com/home-assistant/core/pull/113527 +[#113528]: https://github.com/home-assistant/core/pull/113528 +[#113529]: https://github.com/home-assistant/core/pull/113529 +[#113530]: https://github.com/home-assistant/core/pull/113530 +[#113531]: https://github.com/home-assistant/core/pull/113531 +[#113533]: https://github.com/home-assistant/core/pull/113533 +[#113534]: https://github.com/home-assistant/core/pull/113534 +[#113535]: https://github.com/home-assistant/core/pull/113535 +[#113537]: https://github.com/home-assistant/core/pull/113537 +[#113540]: https://github.com/home-assistant/core/pull/113540 +[#113542]: https://github.com/home-assistant/core/pull/113542 +[#113543]: https://github.com/home-assistant/core/pull/113543 +[#113544]: https://github.com/home-assistant/core/pull/113544 +[#113549]: https://github.com/home-assistant/core/pull/113549 +[#113550]: https://github.com/home-assistant/core/pull/113550 +[#113553]: https://github.com/home-assistant/core/pull/113553 +[#113554]: https://github.com/home-assistant/core/pull/113554 +[#113555]: https://github.com/home-assistant/core/pull/113555 +[#113556]: https://github.com/home-assistant/core/pull/113556 +[#113557]: https://github.com/home-assistant/core/pull/113557 +[#113558]: https://github.com/home-assistant/core/pull/113558 +[#113562]: https://github.com/home-assistant/core/pull/113562 +[#113564]: https://github.com/home-assistant/core/pull/113564 +[#113569]: https://github.com/home-assistant/core/pull/113569 +[#113570]: https://github.com/home-assistant/core/pull/113570 +[#113573]: https://github.com/home-assistant/core/pull/113573 +[#113577]: https://github.com/home-assistant/core/pull/113577 +[#113578]: https://github.com/home-assistant/core/pull/113578 +[#113579]: https://github.com/home-assistant/core/pull/113579 +[#113580]: https://github.com/home-assistant/core/pull/113580 +[#113581]: https://github.com/home-assistant/core/pull/113581 +[#113582]: https://github.com/home-assistant/core/pull/113582 +[#113583]: https://github.com/home-assistant/core/pull/113583 +[#113584]: https://github.com/home-assistant/core/pull/113584 +[#113586]: https://github.com/home-assistant/core/pull/113586 +[#113588]: https://github.com/home-assistant/core/pull/113588 +[#113589]: https://github.com/home-assistant/core/pull/113589 +[#113595]: https://github.com/home-assistant/core/pull/113595 +[#113596]: https://github.com/home-assistant/core/pull/113596 +[#113597]: https://github.com/home-assistant/core/pull/113597 +[#113602]: https://github.com/home-assistant/core/pull/113602 +[#113604]: https://github.com/home-assistant/core/pull/113604 +[#113606]: https://github.com/home-assistant/core/pull/113606 +[#113607]: https://github.com/home-assistant/core/pull/113607 +[#113611]: https://github.com/home-assistant/core/pull/113611 +[#113612]: https://github.com/home-assistant/core/pull/113612 +[#113613]: https://github.com/home-assistant/core/pull/113613 +[#113615]: https://github.com/home-assistant/core/pull/113615 +[#113616]: https://github.com/home-assistant/core/pull/113616 +[#113617]: https://github.com/home-assistant/core/pull/113617 +[#113618]: https://github.com/home-assistant/core/pull/113618 +[#113619]: https://github.com/home-assistant/core/pull/113619 +[#113620]: https://github.com/home-assistant/core/pull/113620 +[#113621]: https://github.com/home-assistant/core/pull/113621 +[#113623]: https://github.com/home-assistant/core/pull/113623 +[#113624]: https://github.com/home-assistant/core/pull/113624 +[#113625]: https://github.com/home-assistant/core/pull/113625 +[#113626]: https://github.com/home-assistant/core/pull/113626 +[#113627]: https://github.com/home-assistant/core/pull/113627 +[#113629]: https://github.com/home-assistant/core/pull/113629 +[#113631]: https://github.com/home-assistant/core/pull/113631 +[#113632]: https://github.com/home-assistant/core/pull/113632 +[#113633]: https://github.com/home-assistant/core/pull/113633 +[#113634]: https://github.com/home-assistant/core/pull/113634 +[#113635]: https://github.com/home-assistant/core/pull/113635 +[#113636]: https://github.com/home-assistant/core/pull/113636 +[#113637]: https://github.com/home-assistant/core/pull/113637 +[#113638]: https://github.com/home-assistant/core/pull/113638 +[#113639]: https://github.com/home-assistant/core/pull/113639 +[#113644]: https://github.com/home-assistant/core/pull/113644 +[#113645]: https://github.com/home-assistant/core/pull/113645 +[#113646]: https://github.com/home-assistant/core/pull/113646 +[#113647]: https://github.com/home-assistant/core/pull/113647 +[#113648]: https://github.com/home-assistant/core/pull/113648 +[#113650]: https://github.com/home-assistant/core/pull/113650 +[#113652]: https://github.com/home-assistant/core/pull/113652 +[#113653]: https://github.com/home-assistant/core/pull/113653 +[#113654]: https://github.com/home-assistant/core/pull/113654 +[#113655]: https://github.com/home-assistant/core/pull/113655 +[#113657]: https://github.com/home-assistant/core/pull/113657 +[#113658]: https://github.com/home-assistant/core/pull/113658 +[#113659]: https://github.com/home-assistant/core/pull/113659 +[#113660]: https://github.com/home-assistant/core/pull/113660 +[#113661]: https://github.com/home-assistant/core/pull/113661 +[#113665]: https://github.com/home-assistant/core/pull/113665 +[#113667]: https://github.com/home-assistant/core/pull/113667 +[#113674]: https://github.com/home-assistant/core/pull/113674 +[#113675]: https://github.com/home-assistant/core/pull/113675 +[#113677]: https://github.com/home-assistant/core/pull/113677 +[#113683]: https://github.com/home-assistant/core/pull/113683 +[#113686]: https://github.com/home-assistant/core/pull/113686 +[#113687]: https://github.com/home-assistant/core/pull/113687 +[#113688]: https://github.com/home-assistant/core/pull/113688 +[#113691]: https://github.com/home-assistant/core/pull/113691 +[#113692]: https://github.com/home-assistant/core/pull/113692 +[#113693]: https://github.com/home-assistant/core/pull/113693 +[#113695]: https://github.com/home-assistant/core/pull/113695 +[#113702]: https://github.com/home-assistant/core/pull/113702 +[#113704]: https://github.com/home-assistant/core/pull/113704 +[#113705]: https://github.com/home-assistant/core/pull/113705 +[#113707]: https://github.com/home-assistant/core/pull/113707 +[#113715]: https://github.com/home-assistant/core/pull/113715 +[#113716]: https://github.com/home-assistant/core/pull/113716 +[#113717]: https://github.com/home-assistant/core/pull/113717 +[#113718]: https://github.com/home-assistant/core/pull/113718 +[#113720]: https://github.com/home-assistant/core/pull/113720 +[#113726]: https://github.com/home-assistant/core/pull/113726 +[#113727]: https://github.com/home-assistant/core/pull/113727 +[#113729]: https://github.com/home-assistant/core/pull/113729 +[#113740]: https://github.com/home-assistant/core/pull/113740 +[#113741]: https://github.com/home-assistant/core/pull/113741 +[#113744]: https://github.com/home-assistant/core/pull/113744 +[#113747]: https://github.com/home-assistant/core/pull/113747 +[#113750]: https://github.com/home-assistant/core/pull/113750 +[#113753]: https://github.com/home-assistant/core/pull/113753 +[#113755]: https://github.com/home-assistant/core/pull/113755 +[#113757]: https://github.com/home-assistant/core/pull/113757 +[#113758]: https://github.com/home-assistant/core/pull/113758 +[#113764]: https://github.com/home-assistant/core/pull/113764 +[#113765]: https://github.com/home-assistant/core/pull/113765 +[#113767]: https://github.com/home-assistant/core/pull/113767 +[#113773]: https://github.com/home-assistant/core/pull/113773 +[#113776]: https://github.com/home-assistant/core/pull/113776 +[#113777]: https://github.com/home-assistant/core/pull/113777 +[#113778]: https://github.com/home-assistant/core/pull/113778 +[#113779]: https://github.com/home-assistant/core/pull/113779 +[#113780]: https://github.com/home-assistant/core/pull/113780 +[#113781]: https://github.com/home-assistant/core/pull/113781 +[#113782]: https://github.com/home-assistant/core/pull/113782 +[#113783]: https://github.com/home-assistant/core/pull/113783 +[#113784]: https://github.com/home-assistant/core/pull/113784 +[#113785]: https://github.com/home-assistant/core/pull/113785 +[#113786]: https://github.com/home-assistant/core/pull/113786 +[#113788]: https://github.com/home-assistant/core/pull/113788 +[#113789]: https://github.com/home-assistant/core/pull/113789 +[#113791]: https://github.com/home-assistant/core/pull/113791 +[#113792]: https://github.com/home-assistant/core/pull/113792 +[#113797]: https://github.com/home-assistant/core/pull/113797 +[#113798]: https://github.com/home-assistant/core/pull/113798 +[#113800]: https://github.com/home-assistant/core/pull/113800 +[#113802]: https://github.com/home-assistant/core/pull/113802 +[#113803]: https://github.com/home-assistant/core/pull/113803 +[#113808]: https://github.com/home-assistant/core/pull/113808 +[#113811]: https://github.com/home-assistant/core/pull/113811 +[#113812]: https://github.com/home-assistant/core/pull/113812 +[#113814]: https://github.com/home-assistant/core/pull/113814 +[#113815]: https://github.com/home-assistant/core/pull/113815 +[#113816]: https://github.com/home-assistant/core/pull/113816 +[#113817]: https://github.com/home-assistant/core/pull/113817 +[#113819]: https://github.com/home-assistant/core/pull/113819 +[#113820]: https://github.com/home-assistant/core/pull/113820 +[#113821]: https://github.com/home-assistant/core/pull/113821 +[#113822]: https://github.com/home-assistant/core/pull/113822 +[#113823]: https://github.com/home-assistant/core/pull/113823 +[#113825]: https://github.com/home-assistant/core/pull/113825 +[#113826]: https://github.com/home-assistant/core/pull/113826 +[#113828]: https://github.com/home-assistant/core/pull/113828 +[#113834]: https://github.com/home-assistant/core/pull/113834 +[#113835]: https://github.com/home-assistant/core/pull/113835 +[#113836]: https://github.com/home-assistant/core/pull/113836 +[#113840]: https://github.com/home-assistant/core/pull/113840 +[#113842]: https://github.com/home-assistant/core/pull/113842 +[#113844]: https://github.com/home-assistant/core/pull/113844 +[#113845]: https://github.com/home-assistant/core/pull/113845 +[#113850]: https://github.com/home-assistant/core/pull/113850 +[#113852]: https://github.com/home-assistant/core/pull/113852 +[#113854]: https://github.com/home-assistant/core/pull/113854 +[#113858]: https://github.com/home-assistant/core/pull/113858 +[#113859]: https://github.com/home-assistant/core/pull/113859 +[#113862]: https://github.com/home-assistant/core/pull/113862 +[#113868]: https://github.com/home-assistant/core/pull/113868 +[#113870]: https://github.com/home-assistant/core/pull/113870 +[#113871]: https://github.com/home-assistant/core/pull/113871 +[#113872]: https://github.com/home-assistant/core/pull/113872 +[#113875]: https://github.com/home-assistant/core/pull/113875 +[#113878]: https://github.com/home-assistant/core/pull/113878 +[#113884]: https://github.com/home-assistant/core/pull/113884 +[#113886]: https://github.com/home-assistant/core/pull/113886 +[#113888]: https://github.com/home-assistant/core/pull/113888 +[#113889]: https://github.com/home-assistant/core/pull/113889 +[#113892]: https://github.com/home-assistant/core/pull/113892 +[#113893]: https://github.com/home-assistant/core/pull/113893 +[#113895]: https://github.com/home-assistant/core/pull/113895 +[#113896]: https://github.com/home-assistant/core/pull/113896 +[#113897]: https://github.com/home-assistant/core/pull/113897 +[#113898]: https://github.com/home-assistant/core/pull/113898 +[#113900]: https://github.com/home-assistant/core/pull/113900 +[#113901]: https://github.com/home-assistant/core/pull/113901 +[#113902]: https://github.com/home-assistant/core/pull/113902 +[#113903]: https://github.com/home-assistant/core/pull/113903 +[#113904]: https://github.com/home-assistant/core/pull/113904 +[#113910]: https://github.com/home-assistant/core/pull/113910 +[#113913]: https://github.com/home-assistant/core/pull/113913 +[#113915]: https://github.com/home-assistant/core/pull/113915 +[#113917]: https://github.com/home-assistant/core/pull/113917 +[#113919]: https://github.com/home-assistant/core/pull/113919 +[#113920]: https://github.com/home-assistant/core/pull/113920 +[#113921]: https://github.com/home-assistant/core/pull/113921 +[#113922]: https://github.com/home-assistant/core/pull/113922 +[#113923]: https://github.com/home-assistant/core/pull/113923 +[#113928]: https://github.com/home-assistant/core/pull/113928 +[#113929]: https://github.com/home-assistant/core/pull/113929 +[#113932]: https://github.com/home-assistant/core/pull/113932 +[#113948]: https://github.com/home-assistant/core/pull/113948 +[#113951]: https://github.com/home-assistant/core/pull/113951 +[#113959]: https://github.com/home-assistant/core/pull/113959 +[#113962]: https://github.com/home-assistant/core/pull/113962 +[#113963]: https://github.com/home-assistant/core/pull/113963 +[#113964]: https://github.com/home-assistant/core/pull/113964 +[#113965]: https://github.com/home-assistant/core/pull/113965 +[#113966]: https://github.com/home-assistant/core/pull/113966 +[#113969]: https://github.com/home-assistant/core/pull/113969 +[#113972]: https://github.com/home-assistant/core/pull/113972 +[#113981]: https://github.com/home-assistant/core/pull/113981 +[#113984]: https://github.com/home-assistant/core/pull/113984 +[#113985]: https://github.com/home-assistant/core/pull/113985 +[#113987]: https://github.com/home-assistant/core/pull/113987 +[#113989]: https://github.com/home-assistant/core/pull/113989 +[#113991]: https://github.com/home-assistant/core/pull/113991 +[#113992]: https://github.com/home-assistant/core/pull/113992 +[#113994]: https://github.com/home-assistant/core/pull/113994 +[#113999]: https://github.com/home-assistant/core/pull/113999 +[#114004]: https://github.com/home-assistant/core/pull/114004 +[#114006]: https://github.com/home-assistant/core/pull/114006 +[#114007]: https://github.com/home-assistant/core/pull/114007 +[#114010]: https://github.com/home-assistant/core/pull/114010 +[#114011]: https://github.com/home-assistant/core/pull/114011 +[#114012]: https://github.com/home-assistant/core/pull/114012 +[#114013]: https://github.com/home-assistant/core/pull/114013 +[#114014]: https://github.com/home-assistant/core/pull/114014 +[#114015]: https://github.com/home-assistant/core/pull/114015 +[#114016]: https://github.com/home-assistant/core/pull/114016 +[#114017]: https://github.com/home-assistant/core/pull/114017 +[#114018]: https://github.com/home-assistant/core/pull/114018 +[#114021]: https://github.com/home-assistant/core/pull/114021 +[#114022]: https://github.com/home-assistant/core/pull/114022 +[#114024]: https://github.com/home-assistant/core/pull/114024 +[#114034]: https://github.com/home-assistant/core/pull/114034 +[#114035]: https://github.com/home-assistant/core/pull/114035 +[#114036]: https://github.com/home-assistant/core/pull/114036 +[#114038]: https://github.com/home-assistant/core/pull/114038 +[#114039]: https://github.com/home-assistant/core/pull/114039 +[#114040]: https://github.com/home-assistant/core/pull/114040 +[#114043]: https://github.com/home-assistant/core/pull/114043 +[#114044]: https://github.com/home-assistant/core/pull/114044 +[#114045]: https://github.com/home-assistant/core/pull/114045 +[#114046]: https://github.com/home-assistant/core/pull/114046 +[#114047]: https://github.com/home-assistant/core/pull/114047 +[#114050]: https://github.com/home-assistant/core/pull/114050 +[#114053]: https://github.com/home-assistant/core/pull/114053 +[#114054]: https://github.com/home-assistant/core/pull/114054 +[#114057]: https://github.com/home-assistant/core/pull/114057 +[#114058]: https://github.com/home-assistant/core/pull/114058 +[#114060]: https://github.com/home-assistant/core/pull/114060 +[#114062]: https://github.com/home-assistant/core/pull/114062 +[#114063]: https://github.com/home-assistant/core/pull/114063 +[#114065]: https://github.com/home-assistant/core/pull/114065 +[#114067]: https://github.com/home-assistant/core/pull/114067 +[#114068]: https://github.com/home-assistant/core/pull/114068 +[#114069]: https://github.com/home-assistant/core/pull/114069 +[#114071]: https://github.com/home-assistant/core/pull/114071 +[#114073]: https://github.com/home-assistant/core/pull/114073 +[#114074]: https://github.com/home-assistant/core/pull/114074 +[#114077]: https://github.com/home-assistant/core/pull/114077 +[#114078]: https://github.com/home-assistant/core/pull/114078 +[#114082]: https://github.com/home-assistant/core/pull/114082 +[#114083]: https://github.com/home-assistant/core/pull/114083 +[#114084]: https://github.com/home-assistant/core/pull/114084 +[#114085]: https://github.com/home-assistant/core/pull/114085 +[#114086]: https://github.com/home-assistant/core/pull/114086 +[#114088]: https://github.com/home-assistant/core/pull/114088 +[#114089]: https://github.com/home-assistant/core/pull/114089 +[#114093]: https://github.com/home-assistant/core/pull/114093 +[#114097]: https://github.com/home-assistant/core/pull/114097 +[#114101]: https://github.com/home-assistant/core/pull/114101 +[#114102]: https://github.com/home-assistant/core/pull/114102 +[#114105]: https://github.com/home-assistant/core/pull/114105 +[#114107]: https://github.com/home-assistant/core/pull/114107 +[#114109]: https://github.com/home-assistant/core/pull/114109 +[#114111]: https://github.com/home-assistant/core/pull/114111 +[#114114]: https://github.com/home-assistant/core/pull/114114 +[#114115]: https://github.com/home-assistant/core/pull/114115 +[#114116]: https://github.com/home-assistant/core/pull/114116 +[#114120]: https://github.com/home-assistant/core/pull/114120 +[#114122]: https://github.com/home-assistant/core/pull/114122 +[#114124]: https://github.com/home-assistant/core/pull/114124 +[#114125]: https://github.com/home-assistant/core/pull/114125 +[#114127]: https://github.com/home-assistant/core/pull/114127 +[#114131]: https://github.com/home-assistant/core/pull/114131 +[#114132]: https://github.com/home-assistant/core/pull/114132 +[#114138]: https://github.com/home-assistant/core/pull/114138 +[#114142]: https://github.com/home-assistant/core/pull/114142 +[#114143]: https://github.com/home-assistant/core/pull/114143 +[#114144]: https://github.com/home-assistant/core/pull/114144 +[#114145]: https://github.com/home-assistant/core/pull/114145 +[#114148]: https://github.com/home-assistant/core/pull/114148 +[#114149]: https://github.com/home-assistant/core/pull/114149 +[#114150]: https://github.com/home-assistant/core/pull/114150 +[#114151]: https://github.com/home-assistant/core/pull/114151 +[#114153]: https://github.com/home-assistant/core/pull/114153 +[#114154]: https://github.com/home-assistant/core/pull/114154 +[#114155]: https://github.com/home-assistant/core/pull/114155 +[#114158]: https://github.com/home-assistant/core/pull/114158 +[#114159]: https://github.com/home-assistant/core/pull/114159 +[#114160]: https://github.com/home-assistant/core/pull/114160 +[#114161]: https://github.com/home-assistant/core/pull/114161 +[#114162]: https://github.com/home-assistant/core/pull/114162 +[#114163]: https://github.com/home-assistant/core/pull/114163 +[#114164]: https://github.com/home-assistant/core/pull/114164 +[#114165]: https://github.com/home-assistant/core/pull/114165 +[#114166]: https://github.com/home-assistant/core/pull/114166 +[#114167]: https://github.com/home-assistant/core/pull/114167 +[#114168]: https://github.com/home-assistant/core/pull/114168 +[#114169]: https://github.com/home-assistant/core/pull/114169 +[#114174]: https://github.com/home-assistant/core/pull/114174 +[#114180]: https://github.com/home-assistant/core/pull/114180 +[#114181]: https://github.com/home-assistant/core/pull/114181 +[#114182]: https://github.com/home-assistant/core/pull/114182 +[#114183]: https://github.com/home-assistant/core/pull/114183 +[#114184]: https://github.com/home-assistant/core/pull/114184 +[#114185]: https://github.com/home-assistant/core/pull/114185 +[#114186]: https://github.com/home-assistant/core/pull/114186 +[#114188]: https://github.com/home-assistant/core/pull/114188 +[#114191]: https://github.com/home-assistant/core/pull/114191 +[#114192]: https://github.com/home-assistant/core/pull/114192 +[#114198]: https://github.com/home-assistant/core/pull/114198 +[#114200]: https://github.com/home-assistant/core/pull/114200 +[#114201]: https://github.com/home-assistant/core/pull/114201 +[#114203]: https://github.com/home-assistant/core/pull/114203 +[#114206]: https://github.com/home-assistant/core/pull/114206 +[#114207]: https://github.com/home-assistant/core/pull/114207 +[#114208]: https://github.com/home-assistant/core/pull/114208 +[#114210]: https://github.com/home-assistant/core/pull/114210 +[#114212]: https://github.com/home-assistant/core/pull/114212 +[#114213]: https://github.com/home-assistant/core/pull/114213 +[#114216]: https://github.com/home-assistant/core/pull/114216 +[#114218]: https://github.com/home-assistant/core/pull/114218 +[#114219]: https://github.com/home-assistant/core/pull/114219 +[#114220]: https://github.com/home-assistant/core/pull/114220 +[#114221]: https://github.com/home-assistant/core/pull/114221 +[#114222]: https://github.com/home-assistant/core/pull/114222 +[#114227]: https://github.com/home-assistant/core/pull/114227 +[#114228]: https://github.com/home-assistant/core/pull/114228 +[#114229]: https://github.com/home-assistant/core/pull/114229 +[#114231]: https://github.com/home-assistant/core/pull/114231 +[#114232]: https://github.com/home-assistant/core/pull/114232 +[#114235]: https://github.com/home-assistant/core/pull/114235 +[#114236]: https://github.com/home-assistant/core/pull/114236 +[#114243]: https://github.com/home-assistant/core/pull/114243 +[#114246]: https://github.com/home-assistant/core/pull/114246 +[#114249]: https://github.com/home-assistant/core/pull/114249 +[#114252]: https://github.com/home-assistant/core/pull/114252 +[#114253]: https://github.com/home-assistant/core/pull/114253 +[#114260]: https://github.com/home-assistant/core/pull/114260 +[#114261]: https://github.com/home-assistant/core/pull/114261 +[#114263]: https://github.com/home-assistant/core/pull/114263 +[#114271]: https://github.com/home-assistant/core/pull/114271 +[#114276]: https://github.com/home-assistant/core/pull/114276 +[#114277]: https://github.com/home-assistant/core/pull/114277 +[#114278]: https://github.com/home-assistant/core/pull/114278 +[#114281]: https://github.com/home-assistant/core/pull/114281 +[#114283]: https://github.com/home-assistant/core/pull/114283 +[#114285]: https://github.com/home-assistant/core/pull/114285 +[#114288]: https://github.com/home-assistant/core/pull/114288 +[#114289]: https://github.com/home-assistant/core/pull/114289 +[#114292]: https://github.com/home-assistant/core/pull/114292 +[#114293]: https://github.com/home-assistant/core/pull/114293 +[#114295]: https://github.com/home-assistant/core/pull/114295 +[#114296]: https://github.com/home-assistant/core/pull/114296 +[#114297]: https://github.com/home-assistant/core/pull/114297 +[#114298]: https://github.com/home-assistant/core/pull/114298 +[#114300]: https://github.com/home-assistant/core/pull/114300 +[#114301]: https://github.com/home-assistant/core/pull/114301 +[#114302]: https://github.com/home-assistant/core/pull/114302 +[#114303]: https://github.com/home-assistant/core/pull/114303 +[#114304]: https://github.com/home-assistant/core/pull/114304 +[#114306]: https://github.com/home-assistant/core/pull/114306 +[#114308]: https://github.com/home-assistant/core/pull/114308 +[#114309]: https://github.com/home-assistant/core/pull/114309 +[#114311]: https://github.com/home-assistant/core/pull/114311 +[#114312]: https://github.com/home-assistant/core/pull/114312 +[#114315]: https://github.com/home-assistant/core/pull/114315 +[#114317]: https://github.com/home-assistant/core/pull/114317 +[#114320]: https://github.com/home-assistant/core/pull/114320 +[#114321]: https://github.com/home-assistant/core/pull/114321 +[#114322]: https://github.com/home-assistant/core/pull/114322 +[#114326]: https://github.com/home-assistant/core/pull/114326 +[#114332]: https://github.com/home-assistant/core/pull/114332 +[#114333]: https://github.com/home-assistant/core/pull/114333 +[#114335]: https://github.com/home-assistant/core/pull/114335 +[#114336]: https://github.com/home-assistant/core/pull/114336 +[#114337]: https://github.com/home-assistant/core/pull/114337 +[#114339]: https://github.com/home-assistant/core/pull/114339 +[#114344]: https://github.com/home-assistant/core/pull/114344 +[#114346]: https://github.com/home-assistant/core/pull/114346 +[#114348]: https://github.com/home-assistant/core/pull/114348 +[#114354]: https://github.com/home-assistant/core/pull/114354 +[#114356]: https://github.com/home-assistant/core/pull/114356 +[#114368]: https://github.com/home-assistant/core/pull/114368 +[#114370]: https://github.com/home-assistant/core/pull/114370 +[#114371]: https://github.com/home-assistant/core/pull/114371 +[#114372]: https://github.com/home-assistant/core/pull/114372 +[#114373]: https://github.com/home-assistant/core/pull/114373 +[#114374]: https://github.com/home-assistant/core/pull/114374 +[#114380]: https://github.com/home-assistant/core/pull/114380 +[#114389]: https://github.com/home-assistant/core/pull/114389 +[#114392]: https://github.com/home-assistant/core/pull/114392 +[#114394]: https://github.com/home-assistant/core/pull/114394 +[#114396]: https://github.com/home-assistant/core/pull/114396 +[#114397]: https://github.com/home-assistant/core/pull/114397 +[#114399]: https://github.com/home-assistant/core/pull/114399 +[#114410]: https://github.com/home-assistant/core/pull/114410 +[#114418]: https://github.com/home-assistant/core/pull/114418 +[#114431]: https://github.com/home-assistant/core/pull/114431 +[#114442]: https://github.com/home-assistant/core/pull/114442 +[#114445]: https://github.com/home-assistant/core/pull/114445 +[#114447]: https://github.com/home-assistant/core/pull/114447 +[#114450]: https://github.com/home-assistant/core/pull/114450 +[#114452]: https://github.com/home-assistant/core/pull/114452 +[#114453]: https://github.com/home-assistant/core/pull/114453 +[#114456]: https://github.com/home-assistant/core/pull/114456 +[#114459]: https://github.com/home-assistant/core/pull/114459 +[#114468]: https://github.com/home-assistant/core/pull/114468 +[#114478]: https://github.com/home-assistant/core/pull/114478 +[#114487]: https://github.com/home-assistant/core/pull/114487 +[#114491]: https://github.com/home-assistant/core/pull/114491 +[#114492]: https://github.com/home-assistant/core/pull/114492 +[#114524]: https://github.com/home-assistant/core/pull/114524 +[#114544]: https://github.com/home-assistant/core/pull/114544 +[#114566]: https://github.com/home-assistant/core/pull/114566 +[#114567]: https://github.com/home-assistant/core/pull/114567 +[#114568]: https://github.com/home-assistant/core/pull/114568 +[#114569]: https://github.com/home-assistant/core/pull/114569 +[#114570]: https://github.com/home-assistant/core/pull/114570 +[#114574]: https://github.com/home-assistant/core/pull/114574 +[#114578]: https://github.com/home-assistant/core/pull/114578 +[#114581]: https://github.com/home-assistant/core/pull/114581 +[#114593]: https://github.com/home-assistant/core/pull/114593 +[#114596]: https://github.com/home-assistant/core/pull/114596 +[#114600]: https://github.com/home-assistant/core/pull/114600 +[#114602]: https://github.com/home-assistant/core/pull/114602 +[#114603]: https://github.com/home-assistant/core/pull/114603 +[#114606]: https://github.com/home-assistant/core/pull/114606 +[#114607]: https://github.com/home-assistant/core/pull/114607 +[#114608]: https://github.com/home-assistant/core/pull/114608 +[#114614]: https://github.com/home-assistant/core/pull/114614 +[#114615]: https://github.com/home-assistant/core/pull/114615 +[#114627]: https://github.com/home-assistant/core/pull/114627 +[#87821]: https://github.com/home-assistant/core/pull/87821 +[#94392]: https://github.com/home-assistant/core/pull/94392 +[#95206]: https://github.com/home-assistant/core/pull/95206 +[#98722]: https://github.com/home-assistant/core/pull/98722 +[#99495]: https://github.com/home-assistant/core/pull/99495 +[@343max]: https://github.com/343max +[@ALERTua]: https://github.com/ALERTua +[@AngellusMortis]: https://github.com/AngellusMortis +[@Antoni-Czaplicki]: https://github.com/Antoni-Czaplicki +[@Bre77]: https://github.com/Bre77 +[@CFenner]: https://github.com/CFenner +[@Cereal2nd]: https://github.com/Cereal2nd +[@DCSBL]: https://github.com/DCSBL +[@DarkFox]: https://github.com/DarkFox +[@Ernst79]: https://github.com/Ernst79 +[@FedDam]: https://github.com/FedDam +[@Fexiven]: https://github.com/Fexiven +[@Floris272]: https://github.com/Floris272 +[@GidoHakvoort]: https://github.com/GidoHakvoort +[@IsakNyberg]: https://github.com/IsakNyberg +[@JeromeHXP]: https://github.com/JeromeHXP +[@Kane610]: https://github.com/Kane610 +[@LaStrada]: https://github.com/LaStrada +[@LarsStegman]: https://github.com/LarsStegman +[@Lash-L]: https://github.com/Lash-L +[@LennP]: https://github.com/LennP +[@ManneW]: https://github.com/ManneW +[@MarkGodwin]: https://github.com/MarkGodwin +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MatthiasLohr]: https://github.com/MatthiasLohr +[@MrXANA91]: https://github.com/MrXANA91 +[@NodeJSmith]: https://github.com/NodeJSmith +[@Noltari]: https://github.com/Noltari +[@OnFreund]: https://github.com/OnFreund +[@OndraM]: https://github.com/OndraM +[@PeteRager]: https://github.com/PeteRager +[@RoboMagus]: https://github.com/RoboMagus +[@Shutgun]: https://github.com/Shutgun +[@StevenLooman]: https://github.com/StevenLooman +[@TheJulianJES]: https://github.com/TheJulianJES +[@Thomas55555]: https://github.com/Thomas55555 +[@Tronix117]: https://github.com/Tronix117 +[@Xiretza]: https://github.com/Xiretza +[@Xitee1]: https://github.com/Xitee1 +[@YogevBokobza]: https://github.com/YogevBokobza +[@abjorck]: https://github.com/abjorck +[@agoode]: https://github.com/agoode +[@akx]: https://github.com/akx +[@albertogeniola]: https://github.com/albertogeniola +[@alexsydell]: https://github.com/alexsydell +[@alinbalutoiu]: https://github.com/alinbalutoiu +[@allenporter]: https://github.com/allenporter +[@astrandb]: https://github.com/astrandb +[@autinerd]: https://github.com/autinerd +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@belangp]: https://github.com/belangp +[@bieniu]: https://github.com/bieniu +[@boswelja]: https://github.com/boswelja +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@brg468]: https://github.com/brg468 +[@briglx]: https://github.com/briglx +[@caronc]: https://github.com/caronc +[@catsmanac]: https://github.com/catsmanac +[@cdce8p]: https://github.com/cdce8p +[@chemelli74]: https://github.com/chemelli74 +[@clssn]: https://github.com/clssn +[@cosimomeli]: https://github.com/cosimomeli +[@cottsay]: https://github.com/cottsay +[@ctalkington]: https://github.com/ctalkington +[@danielperna84]: https://github.com/danielperna84 +[@davet2001]: https://github.com/davet2001 +[@definitio]: https://github.com/definitio +[@dgomes]: https://github.com/dgomes +[@dmulcahey]: https://github.com/dmulcahey +[@dontinelli]: https://github.com/dontinelli +[@dotvav]: https://github.com/dotvav +[@dougiteixeira]: https://github.com/dougiteixeira +[@drewclauson]: https://github.com/drewclauson +[@dshokouhi]: https://github.com/dshokouhi +[@edenhaus]: https://github.com/edenhaus +[@eifinger]: https://github.com/eifinger +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@erwindouna]: https://github.com/erwindouna +[@esciara]: https://github.com/esciara +[@farmio]: https://github.com/farmio +[@frenck]: https://github.com/frenck +[@fwestenberg]: https://github.com/fwestenberg +[@gibwar]: https://github.com/gibwar +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@hopkins-tk]: https://github.com/hopkins-tk +[@iMicknl]: https://github.com/iMicknl +[@idelsink]: https://github.com/idelsink +[@janiversen]: https://github.com/janiversen +[@jbouwh]: https://github.com/jbouwh +[@jeeftor]: https://github.com/jeeftor +[@jesserockz]: https://github.com/jesserockz +[@jjlawren]: https://github.com/jjlawren +[@joostlek]: https://github.com/joostlek +[@jpbede]: https://github.com/jpbede +[@jwillemsen]: https://github.com/jwillemsen +[@kingy444]: https://github.com/kingy444 +[@lextm]: https://github.com/lextm +[@luar123]: https://github.com/luar123 +[@ludeeus]: https://github.com/ludeeus +[@malkstar]: https://github.com/malkstar +[@marcelveldt]: https://github.com/marcelveldt +[@matrixd2]: https://github.com/matrixd2 +[@max2697]: https://github.com/max2697 +[@mdegat01]: https://github.com/mdegat01 +[@miaucl]: https://github.com/miaucl +[@mib1185]: https://github.com/mib1185 +[@mjh1]: https://github.com/mjh1 +[@mkmer]: https://github.com/mkmer +[@msavazzi]: https://github.com/msavazzi +[@nalin29]: https://github.com/nalin29 +[@niro1987]: https://github.com/niro1987 +[@oyvindwe]: https://github.com/oyvindwe +[@pavoni]: https://github.com/pavoni +[@piitaya]: https://github.com/piitaya +[@puddly]: https://github.com/puddly +[@rokam]: https://github.com/rokam +[@ronweikamp]: https://github.com/ronweikamp +[@scop]: https://github.com/scop +[@sdb9696]: https://github.com/sdb9696 +[@shaiu]: https://github.com/shaiu +[@slyoldfox]: https://github.com/slyoldfox +[@snoack]: https://github.com/snoack +[@soonsouth]: https://github.com/soonsouth +[@starkillerOG]: https://github.com/starkillerOG +[@steffenrapp]: https://github.com/steffenrapp +[@synesthesiam]: https://github.com/synesthesiam +[@the-ress]: https://github.com/the-ress +[@thecode]: https://github.com/thecode +[@thejeffreystone]: https://github.com/thejeffreystone +[@timmo001]: https://github.com/timmo001 +[@tr4nt0r]: https://github.com/tr4nt0r +[@tronikos]: https://github.com/tronikos +[@tuday2]: https://github.com/tuday2 +[@uchagani]: https://github.com/uchagani +[@wilburCforce]: https://github.com/wilburCforce +[@wujiaqi]: https://github.com/wujiaqi +[@xeniter]: https://github.com/xeniter +[@yozik04]: https://github.com/yozik04 +[@yuxincs]: https://github.com/yuxincs +[@zweckj]: https://github.com/zweckj +[abode docs]: /integrations/abode/ +[accuweather docs]: /integrations/accuweather/ +[acer_projector docs]: /integrations/acer_projector/ +[acmeda docs]: /integrations/acmeda/ +[actiontec docs]: /integrations/actiontec/ +[adax docs]: /integrations/adax/ +[ads docs]: /integrations/ads/ +[advantage_air docs]: /integrations/advantage_air/ +[aemet docs]: /integrations/aemet/ +[aftership docs]: /integrations/aftership/ +[agent_dvr docs]: /integrations/agent_dvr/ +[airnow docs]: /integrations/airnow/ +[airq docs]: /integrations/airq/ +[airthings docs]: /integrations/airthings/ +[airthings_ble docs]: /integrations/airthings_ble/ +[airzone docs]: /integrations/airzone/ +[airzone_cloud docs]: /integrations/airzone_cloud/ +[aladdin_connect docs]: /integrations/aladdin_connect/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alert docs]: /integrations/alert/ +[ambient_station docs]: /integrations/ambient_station/ +[amcrest docs]: /integrations/amcrest/ +[android_ip_webcam docs]: /integrations/android_ip_webcam/ +[apache_kafka docs]: /integrations/apache_kafka/ +[apcupsd docs]: /integrations/apcupsd/ +[api docs]: /integrations/api/ +[apple_tv docs]: /integrations/apple_tv/ +[application_credentials docs]: /integrations/application_credentials/ +[apprise docs]: /integrations/apprise/ +[aseko_pool_live docs]: /integrations/aseko_pool_live/ +[assist_pipeline docs]: /integrations/assist_pipeline/ +[august docs]: /integrations/august/ +[aurora_abb_powerone docs]: /integrations/aurora_abb_powerone/ +[auth docs]: /integrations/auth/ +[automation docs]: /integrations/automation/ +[awair docs]: /integrations/awair/ +[axis docs]: /integrations/axis/ +[azure_devops docs]: /integrations/azure_devops/ +[backup docs]: /integrations/backup/ +[baf docs]: /integrations/baf/ +[balboa docs]: /integrations/balboa/ +[bang_olufsen docs]: /integrations/bang_olufsen/ +[bayesian docs]: /integrations/bayesian/ +[binary_sensor docs]: /integrations/binary_sensor/ +[blackbird docs]: /integrations/blackbird/ +[blue_current docs]: /integrations/blue_current/ +[bluesound docs]: /integrations/bluesound/ +[bluetooth docs]: /integrations/bluetooth/ +[bluetooth_tracker docs]: /integrations/bluetooth_tracker/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bond docs]: /integrations/bond/ +[bosch_shc docs]: /integrations/bosch_shc/ +[braviatv docs]: /integrations/braviatv/ +[bring docs]: /integrations/bring/ +[brother docs]: /integrations/brother/ +[browser docs]: /integrations/browser/ +[bthome docs]: /integrations/bthome/ +[button docs]: /integrations/button/ +[caldav docs]: /integrations/caldav/ +[camera docs]: /integrations/camera/ +[cast docs]: /integrations/cast/ +[cert_expiry docs]: /integrations/cert_expiry/ +[channels docs]: /integrations/channels/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[co2signal docs]: /integrations/co2signal/ +[comelit docs]: /integrations/comelit/ +[comfoconnect docs]: /integrations/comfoconnect/ +[command_line docs]: /integrations/command_line/ +[config docs]: /integrations/config/ +[configurator docs]: /integrations/configurator/ +[control4 docs]: /integrations/control4/ +[conversation docs]: /integrations/conversation/ +[counter docs]: /integrations/counter/ +[cover docs]: /integrations/cover/ +[daikin docs]: /integrations/daikin/ +[debugpy docs]: /integrations/debugpy/ +[deconz docs]: /integrations/deconz/ +[demo docs]: /integrations/demo/ +[devialet docs]: /integrations/devialet/ +[device_automation docs]: /integrations/device_automation/ +[device_sun_light_trigger docs]: /integrations/device_sun_light_trigger/ +[device_tracker docs]: /integrations/device_tracker/ +[devolo_home_network docs]: /integrations/devolo_home_network/ +[dexcom docs]: /integrations/dexcom/ +[dhcp docs]: /integrations/dhcp/ +[discovergy docs]: /integrations/discovergy/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[dlna_dms docs]: /integrations/dlna_dms/ +[dnsip docs]: /integrations/dnsip/ +[dominos docs]: /integrations/dominos/ +[doorbird docs]: /integrations/doorbird/ +[dormakaba_dkey docs]: /integrations/dormakaba_dkey/ +[dovado docs]: /integrations/dovado/ +[downloader docs]: /integrations/downloader/ +[dremel_3d_printer docs]: /integrations/dremel_3d_printer/ +[drop_connect docs]: /integrations/drop_connect/ +[dsmr_reader docs]: /integrations/dsmr_reader/ +[duckdns docs]: /integrations/duckdns/ +[duotecno docs]: /integrations/duotecno/ +[easyenergy docs]: /integrations/easyenergy/ +[ebusd docs]: /integrations/ebusd/ +[ecobee docs]: /integrations/ecobee/ +[ecoforest docs]: /integrations/ecoforest/ +[econet docs]: /integrations/econet/ +[ecovacs docs]: /integrations/ecovacs/ +[efergy docs]: /integrations/efergy/ +[electric_kiwi docs]: /integrations/electric_kiwi/ +[elgato docs]: /integrations/elgato/ +[elkm1 docs]: /integrations/elkm1/ +[elmax docs]: /integrations/elmax/ +[emulated_hue docs]: /integrations/emulated_hue/ +[emulated_kasa docs]: /integrations/emulated_kasa/ +[energy docs]: /integrations/energy/ +[energyzero docs]: /integrations/energyzero/ +[enocean docs]: /integrations/enocean/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[environment_canada docs]: /integrations/environment_canada/ +[envisalink docs]: /integrations/envisalink/ +[esphome docs]: /integrations/esphome/ +[event docs]: /integrations/event/ +[evohome docs]: /integrations/evohome/ +[ezviz docs]: /integrations/ezviz/ +[fan docs]: /integrations/fan/ +[fastdotcom docs]: /integrations/fastdotcom/ +[feedreader docs]: /integrations/feedreader/ +[ffmpeg docs]: /integrations/ffmpeg/ +[file_upload docs]: /integrations/file_upload/ +[filesize docs]: /integrations/filesize/ +[filter docs]: /integrations/filter/ +[fjaraskupan docs]: /integrations/fjaraskupan/ +[flipr docs]: /integrations/flipr/ +[flume docs]: /integrations/flume/ +[flux docs]: /integrations/flux/ +[flux_led docs]: /integrations/flux_led/ +[foursquare docs]: /integrations/foursquare/ +[freebox docs]: /integrations/freebox/ +[freedompro docs]: /integrations/freedompro/ +[fritz docs]: /integrations/fritz/ +[fritzbox docs]: /integrations/fritzbox/ +[frontend docs]: /integrations/frontend/ +[fully_kiosk docs]: /integrations/fully_kiosk/ +[fyta docs]: /integrations/fyta/ +[garadget docs]: /integrations/garadget/ +[garages_amsterdam docs]: /integrations/garages_amsterdam/ +[gardena_bluetooth docs]: /integrations/gardena_bluetooth/ +[gc100 docs]: /integrations/gc100/ +[gdacs docs]: /integrations/gdacs/ +[generic docs]: /integrations/generic/ +[generic_hygrostat docs]: /integrations/generic_hygrostat/ +[generic_thermostat docs]: /integrations/generic_thermostat/ +[geniushub docs]: /integrations/geniushub/ +[geocaching docs]: /integrations/geocaching/ +[github docs]: /integrations/github/ +[glances docs]: /integrations/glances/ +[goodwe docs]: /integrations/goodwe/ +[google docs]: /integrations/google/ +[google_assistant docs]: /integrations/google_assistant/ +[google_assistant_sdk docs]: /integrations/google_assistant_sdk/ +[google_wifi docs]: /integrations/google_wifi/ +[govee_light_local docs]: /integrations/govee_light_local/ +[group docs]: /integrations/group/ +[habitica docs]: /integrations/habitica/ +[harmony docs]: /integrations/harmony/ +[hassio docs]: /integrations/hassio/ +[hdmi_cec docs]: /integrations/hdmi_cec/ +[here_travel_time docs]: /integrations/here_travel_time/ +[history docs]: /integrations/history/ +[history_stats docs]: /integrations/history_stats/ +[holiday docs]: /integrations/holiday/ +[homeassistant docs]: /integrations/homeassistant/ +[homeassistant_alerts docs]: /integrations/homeassistant_alerts/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[homewizard docs]: /integrations/homewizard/ +[homeworks docs]: /integrations/homeworks/ +[honeywell docs]: /integrations/honeywell/ +[html5 docs]: /integrations/html5/ +[http docs]: /integrations/http/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[humidifier docs]: /integrations/humidifier/ +[hunterdouglas_powerview docs]: /integrations/hunterdouglas_powerview/ +[husqvarna_automower docs]: /integrations/husqvarna_automower/ +[hydrawise docs]: /integrations/hydrawise/ +[hyperion docs]: /integrations/hyperion/ +[ibeacon docs]: /integrations/ibeacon/ +[icloud docs]: /integrations/icloud/ +[idasen_desk docs]: /integrations/idasen_desk/ +[ifttt docs]: /integrations/ifttt/ +[ihc docs]: /integrations/ihc/ +[image docs]: /integrations/image/ +[image_processing docs]: /integrations/image_processing/ +[influxdb docs]: /integrations/influxdb/ +[input_button docs]: /integrations/input_button/ +[input_datetime docs]: /integrations/input_datetime/ +[input_number docs]: /integrations/input_number/ +[input_select docs]: /integrations/input_select/ +[input_text docs]: /integrations/input_text/ +[insteon docs]: /integrations/insteon/ +[integration docs]: /integrations/integration/ +[intellifire docs]: /integrations/intellifire/ +[intent_script docs]: /integrations/intent_script/ +[iperf3 docs]: /integrations/iperf3/ +[ipma docs]: /integrations/ipma/ +[ipp docs]: /integrations/ipp/ +[islamic_prayer_times docs]: /integrations/islamic_prayer_times/ +[isy994 docs]: /integrations/isy994/ +[izone docs]: /integrations/izone/ +[jellyfin docs]: /integrations/jellyfin/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[joaoapps_join docs]: /integrations/joaoapps_join/ +[juicenet docs]: /integrations/juicenet/ +[justnimbus docs]: /integrations/justnimbus/ +[jvc_projector docs]: /integrations/jvc_projector/ +[kaiterra docs]: /integrations/kaiterra/ +[kaleidescape docs]: /integrations/kaleidescape/ +[kankun docs]: /integrations/kankun/ +[keba docs]: /integrations/keba/ +[kef docs]: /integrations/kef/ +[keyboard docs]: /integrations/keyboard/ +[keymitt_ble docs]: /integrations/keymitt_ble/ +[knx docs]: /integrations/knx/ +[kodi docs]: /integrations/kodi/ +[kostal_plenticore docs]: /integrations/kostal_plenticore/ +[kraken docs]: /integrations/kraken/ +[lacrosse_view docs]: /integrations/lacrosse_view/ +[lamarzocco docs]: /integrations/lamarzocco/ +[lametric docs]: /integrations/lametric/ +[landisgyr_heat_meter docs]: /integrations/landisgyr_heat_meter/ +[lastfm docs]: /integrations/lastfm/ +[launch_library docs]: /integrations/launch_library/ +[laundrify docs]: /integrations/laundrify/ +[lawn_mower docs]: /integrations/lawn_mower/ +[lcn docs]: /integrations/lcn/ +[lidarr docs]: /integrations/lidarr/ +[lifx docs]: /integrations/lifx/ +[light docs]: /integrations/light/ +[litterrobot docs]: /integrations/litterrobot/ +[local_file docs]: /integrations/local_file/ +[local_ip docs]: /integrations/local_ip/ +[logbook docs]: /integrations/logbook/ +[logger docs]: /integrations/logger/ +[logi_circle docs]: /integrations/logi_circle/ +[london_air docs]: /integrations/london_air/ +[lovelace docs]: /integrations/lovelace/ +[lupusec docs]: /integrations/lupusec/ +[lutron docs]: /integrations/lutron/ +[lutron_caseta docs]: /integrations/lutron_caseta/ +[lyric docs]: /integrations/lyric/ +[map docs]: /integrations/map/ +[mastodon docs]: /integrations/mastodon/ +[matrix docs]: /integrations/matrix/ +[matter docs]: /integrations/matter/ +[meater docs]: /integrations/meater/ +[medcom_ble docs]: /integrations/medcom_ble/ +[media_extractor docs]: /integrations/media_extractor/ +[media_player docs]: /integrations/media_player/ +[melcloud docs]: /integrations/melcloud/ +[melissa docs]: /integrations/melissa/ +[melnor docs]: /integrations/melnor/ +[met docs]: /integrations/met/ +[met_eireann docs]: /integrations/met_eireann/ +[meteo_france docs]: /integrations/meteo_france/ +[metoffice docs]: /integrations/metoffice/ +[microBees docs]: /integrations/microBees/ +[microsoft_face docs]: /integrations/microsoft_face/ +[microsoft_face_detect docs]: /integrations/microsoft_face_detect/ +[microsoft_face_identify docs]: /integrations/microsoft_face_identify/ +[mill docs]: /integrations/mill/ +[min_max docs]: /integrations/min_max/ +[minecraft_server docs]: /integrations/minecraft_server/ +[minio docs]: /integrations/minio/ +[mobile_app docs]: /integrations/mobile_app/ +[modbus docs]: /integrations/modbus/ +[modem_callerid docs]: /integrations/modem_callerid/ +[modern_forms docs]: /integrations/modern_forms/ +[monoprice docs]: /integrations/monoprice/ +[moon docs]: /integrations/moon/ +[motion_blinds docs]: /integrations/motion_blinds/ +[motionblinds_ble docs]: /integrations/motionblinds_ble/ +[motioneye docs]: /integrations/motioneye/ +[mqtt docs]: /integrations/mqtt/ +[mqtt_statestream docs]: /integrations/mqtt_statestream/ +[mysensors docs]: /integrations/mysensors/ +[mystrom docs]: /integrations/mystrom/ +[myuplink docs]: /integrations/myuplink/ +[nad docs]: /integrations/nad/ +[nam docs]: /integrations/nam/ +[namecheapdns docs]: /integrations/namecheapdns/ +[nanoleaf docs]: /integrations/nanoleaf/ +[neato docs]: /integrations/neato/ +[nederlandse_spoorwegen docs]: /integrations/nederlandse_spoorwegen/ +[ness_alarm docs]: /integrations/ness_alarm/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[netgear docs]: /integrations/netgear/ +[netgear_lte docs]: /integrations/netgear_lte/ +[network docs]: /integrations/network/ +[nexia docs]: /integrations/nexia/ +[nextbus docs]: /integrations/nextbus/ +[nextcloud docs]: /integrations/nextcloud/ +[nissan_leaf docs]: /integrations/nissan_leaf/ +[nmap_tracker docs]: /integrations/nmap_tracker/ +[nobo_hub docs]: /integrations/nobo_hub/ +[norway_air docs]: /integrations/norway_air/ +[notify docs]: /integrations/notify/ +[notion docs]: /integrations/notion/ +[nuki docs]: /integrations/nuki/ +[numato docs]: /integrations/numato/ +[number docs]: /integrations/number/ +[nut docs]: /integrations/nut/ +[nws docs]: /integrations/nws/ +[nx584 docs]: /integrations/nx584/ +[nzbget docs]: /integrations/nzbget/ +[octoprint docs]: /integrations/octoprint/ +[ollama docs]: /integrations/ollama/ +[ollama_conversation docs]: /integrations/ollama_conversation/ +[ombi docs]: /integrations/ombi/ +[omnilogic docs]: /integrations/omnilogic/ +[onboarding docs]: /integrations/onboarding/ +[oncue docs]: /integrations/oncue/ +[ondilo_ico docs]: /integrations/ondilo_ico/ +[onewire docs]: /integrations/onewire/ +[onvif docs]: /integrations/onvif/ +[openai_conversation docs]: /integrations/openai_conversation/ +[openalpr_cloud docs]: /integrations/openalpr_cloud/ +[opencv docs]: /integrations/opencv/ +[opengarage docs]: /integrations/opengarage/ +[openhardwaremonitor docs]: /integrations/openhardwaremonitor/ +[openhome docs]: /integrations/openhome/ +[opensky docs]: /integrations/opensky/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[openuv docs]: /integrations/openuv/ +[opower docs]: /integrations/opower/ +[otbr docs]: /integrations/otbr/ +[overkiz docs]: /integrations/overkiz/ +[ovo_energy docs]: /integrations/ovo_energy/ +[p1_monitor docs]: /integrations/p1_monitor/ +[panel_iframe docs]: /integrations/panel_iframe/ +[peco docs]: /integrations/peco/ +[pegel_online docs]: /integrations/pegel_online/ +[permobil docs]: /integrations/permobil/ +[persistent_notification docs]: /integrations/persistent_notification/ +[person docs]: /integrations/person/ +[philips_js docs]: /integrations/philips_js/ +[pi_hole docs]: /integrations/pi_hole/ +[picnic docs]: /integrations/picnic/ +[pilight docs]: /integrations/pilight/ +[ping docs]: /integrations/ping/ +[plex docs]: /integrations/plex/ +[plugwise docs]: /integrations/plugwise/ +[plum_lightpad docs]: /integrations/plum_lightpad/ +[point docs]: /integrations/point/ +[poolsense docs]: /integrations/poolsense/ +[private_ble_device docs]: /integrations/private_ble_device/ +[profiler docs]: /integrations/profiler/ +[progettihwsw docs]: /integrations/progettihwsw/ +[prometheus docs]: /integrations/prometheus/ +[prosegur docs]: /integrations/prosegur/ +[prusalink docs]: /integrations/prusalink/ +[ps4 docs]: /integrations/ps4/ +[pure_energie docs]: /integrations/pure_energie/ +[purpleair docs]: /integrations/purpleair/ +[pvpc_hourly_pricing docs]: /integrations/pvpc_hourly_pricing/ +[pytest docs]: /integrations/pytest/ +[python_script docs]: /integrations/python_script/ +[qbittorrent docs]: /integrations/qbittorrent/ +[qnap_qsw docs]: /integrations/qnap_qsw/ +[qvr_pro docs]: /integrations/qvr_pro/ +[qwikswitch docs]: /integrations/qwikswitch/ +[rabbitair docs]: /integrations/rabbitair/ +[rachio docs]: /integrations/rachio/ +[radarr docs]: /integrations/radarr/ +[radio_browser docs]: /integrations/radio_browser/ +[radiotherm docs]: /integrations/radiotherm/ +[rainbird docs]: /integrations/rainbird/ +[rainforest_raven docs]: /integrations/rainforest_raven/ +[rainmachine docs]: /integrations/rainmachine/ +[rdw docs]: /integrations/rdw/ +[recollect_waste docs]: /integrations/recollect_waste/ +[recorder docs]: /integrations/recorder/ +[rejseplanen docs]: /integrations/rejseplanen/ +[remember_the_milk docs]: /integrations/remember_the_milk/ +[renault docs]: /integrations/renault/ +[renson docs]: /integrations/renson/ +[reolink docs]: /integrations/reolink/ +[repairs docs]: /integrations/repairs/ +[rest docs]: /integrations/rest/ +[rest_command docs]: /integrations/rest_command/ +[rflink docs]: /integrations/rflink/ +[rfxtrx docs]: /integrations/rfxtrx/ +[ridwell docs]: /integrations/ridwell/ +[ring docs]: /integrations/ring/ +[risco docs]: /integrations/risco/ +[rituals_perfume_genie docs]: /integrations/rituals_perfume_genie/ +[roborock docs]: /integrations/roborock/ +[roku docs]: /integrations/roku/ +[romy docs]: /integrations/romy/ +[roomba docs]: /integrations/roomba/ +[roon docs]: /integrations/roon/ +[route53 docs]: /integrations/route53/ +[rova docs]: /integrations/rova/ +[sabnzbd docs]: /integrations/sabnzbd/ +[samsungtv docs]: /integrations/samsungtv/ +[scene docs]: /integrations/scene/ +[schedule docs]: /integrations/schedule/ +[schlage docs]: /integrations/schlage/ +[scrape docs]: /integrations/scrape/ +[screenlogic docs]: /integrations/screenlogic/ +[script docs]: /integrations/script/ +[search docs]: /integrations/search/ +[season docs]: /integrations/season/ +[sense docs]: /integrations/sense/ +[sensibo docs]: /integrations/sensibo/ +[sensor docs]: /integrations/sensor/ +[seventeentrack docs]: /integrations/seventeentrack/ +[sfr_box docs]: /integrations/sfr_box/ +[shelly docs]: /integrations/shelly/ +[shopping_list docs]: /integrations/shopping_list/ +[simplisafe docs]: /integrations/simplisafe/ +[siren docs]: /integrations/siren/ +[skybell docs]: /integrations/skybell/ +[slack docs]: /integrations/slack/ +[sleepiq docs]: /integrations/sleepiq/ +[slimproto docs]: /integrations/slimproto/ +[smappee docs]: /integrations/smappee/ +[smartthings docs]: /integrations/smartthings/ +[smarttub docs]: /integrations/smarttub/ +[smhi docs]: /integrations/smhi/ +[sms docs]: /integrations/sms/ +[smtp docs]: /integrations/smtp/ +[smud docs]: /integrations/smud/ +[snapcast docs]: /integrations/snapcast/ +[snips docs]: /integrations/snips/ +[snmp docs]: /integrations/snmp/ +[snooz docs]: /integrations/snooz/ +[solaredge docs]: /integrations/solaredge/ +[solarlog docs]: /integrations/solarlog/ +[solax docs]: /integrations/solax/ +[sonarr docs]: /integrations/sonarr/ +[songpal docs]: /integrations/songpal/ +[sonos docs]: /integrations/sonos/ +[soundtouch docs]: /integrations/soundtouch/ +[spaceapi docs]: /integrations/spaceapi/ +[speedtestdotnet docs]: /integrations/speedtestdotnet/ +[spotify docs]: /integrations/spotify/ +[sql docs]: /integrations/sql/ +[squeezebox docs]: /integrations/squeezebox/ +[srp_energy docs]: /integrations/srp_energy/ +[ssdp docs]: /integrations/ssdp/ +[starline docs]: /integrations/starline/ +[starlink docs]: /integrations/starlink/ +[statistics docs]: /integrations/statistics/ +[steamist docs]: /integrations/steamist/ +[stream docs]: /integrations/stream/ +[streamlabswater docs]: /integrations/streamlabswater/ +[stt docs]: /integrations/stt/ +[subaru docs]: /integrations/subaru/ +[suez_water docs]: /integrations/suez_water/ +[sun docs]: /integrations/sun/ +[sunweg docs]: /integrations/sunweg/ +[surepetcare docs]: /integrations/surepetcare/ +[swiss_public_transport docs]: /integrations/swiss_public_transport/ +[switchbot docs]: /integrations/switchbot/ +[switcher_kis docs]: /integrations/switcher_kis/ +[syncthing docs]: /integrations/syncthing/ +[synology_dsm docs]: /integrations/synology_dsm/ +[system_bridge docs]: /integrations/system_bridge/ +[system_health docs]: /integrations/system_health/ +[system_log docs]: /integrations/system_log/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tado docs]: /integrations/tado/ +[tag docs]: /integrations/tag/ +[tailscale docs]: /integrations/tailscale/ +[tailwind docs]: /integrations/tailwind/ +[tami4 docs]: /integrations/tami4/ +[tankerkoenig docs]: /integrations/tankerkoenig/ +[tasmota docs]: /integrations/tasmota/ +[tautulli docs]: /integrations/tautulli/ +[technove docs]: /integrations/technove/ +[tedee docs]: /integrations/tedee/ +[telegram docs]: /integrations/telegram/ +[telegram_bot docs]: /integrations/telegram_bot/ +[template docs]: /integrations/template/ +[tesla_wall_connector docs]: /integrations/tesla_wall_connector/ +[teslemetry docs]: /integrations/teslemetry/ +[tessie docs]: /integrations/tessie/ +[tile docs]: /integrations/tile/ +[timer docs]: /integrations/timer/ +[todoist docs]: /integrations/todoist/ +[tolo docs]: /integrations/tolo/ +[tomorrowio docs]: /integrations/tomorrowio/ +[toon docs]: /integrations/toon/ +[torque docs]: /integrations/torque/ +[totalconnect docs]: /integrations/totalconnect/ +[tplink docs]: /integrations/tplink/ +[tplink_omada docs]: /integrations/tplink_omada/ +[traccar_server docs]: /integrations/traccar_server/ +[trace docs]: /integrations/trace/ +[tractive docs]: /integrations/tractive/ +[tradfri docs]: /integrations/tradfri/ +[trafikverket_camera docs]: /integrations/trafikverket_camera/ +[trafikverket_ferry docs]: /integrations/trafikverket_ferry/ +[trafikverket_train docs]: /integrations/trafikverket_train/ +[trafikverket_weatherstation docs]: /integrations/trafikverket_weatherstation/ +[transmission docs]: /integrations/transmission/ +[trend docs]: /integrations/trend/ +[tts docs]: /integrations/tts/ +[tuya docs]: /integrations/tuya/ +[twentemilieu docs]: /integrations/twentemilieu/ +[twinkly docs]: /integrations/twinkly/ +[twitch docs]: /integrations/twitch/ +[uk_transport docs]: /integrations/uk_transport/ +[ukraine_alarm docs]: /integrations/ukraine_alarm/ +[unifi docs]: /integrations/unifi/ +[unifiprotect docs]: /integrations/unifiprotect/ +[universal docs]: /integrations/universal/ +[upb docs]: /integrations/upb/ +[update docs]: /integrations/update/ +[upnp docs]: /integrations/upnp/ +[uptimerobot docs]: /integrations/uptimerobot/ +[usb docs]: /integrations/usb/ +[utility_meter docs]: /integrations/utility_meter/ +[v2c docs]: /integrations/v2c/ +[vacuum docs]: /integrations/vacuum/ +[vallox docs]: /integrations/vallox/ +[velbus docs]: /integrations/velbus/ +[velux docs]: /integrations/velux/ +[venstar docs]: /integrations/venstar/ +[verisure docs]: /integrations/verisure/ +[version docs]: /integrations/version/ +[vesync docs]: /integrations/vesync/ +[vicare docs]: /integrations/vicare/ +[vilfo docs]: /integrations/vilfo/ +[vizio docs]: /integrations/vizio/ +[vodafone_station docs]: /integrations/vodafone_station/ +[voip docs]: /integrations/voip/ +[vulcan docs]: /integrations/vulcan/ +[wake_on_lan docs]: /integrations/wake_on_lan/ +[wallbox docs]: /integrations/wallbox/ +[waqi docs]: /integrations/waqi/ +[water_heater docs]: /integrations/water_heater/ +[watttime docs]: /integrations/watttime/ +[waze_travel_time docs]: /integrations/waze_travel_time/ +[weather docs]: /integrations/weather/ +[weatherflow docs]: /integrations/weatherflow/ +[weatherflow_cloud docs]: /integrations/weatherflow_cloud/ +[weatherkit docs]: /integrations/weatherkit/ +[webmin docs]: /integrations/webmin/ +[webostv docs]: /integrations/webostv/ +[websocket_api docs]: /integrations/websocket_api/ +[wemo docs]: /integrations/wemo/ +[whirlpool docs]: /integrations/whirlpool/ +[whois docs]: /integrations/whois/ +[wilight docs]: /integrations/wilight/ +[withings docs]: /integrations/withings/ +[wiz docs]: /integrations/wiz/ +[wled docs]: /integrations/wled/ +[workday docs]: /integrations/workday/ +[wsdot docs]: /integrations/wsdot/ +[wyoming docs]: /integrations/wyoming/ +[xiaomi_aqara docs]: /integrations/xiaomi_aqara/ +[xiaomi_ble docs]: /integrations/xiaomi_ble/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yale_smart_alarm docs]: /integrations/yale_smart_alarm/ +[yalexs_ble docs]: /integrations/yalexs_ble/ +[yamaha docs]: /integrations/yamaha/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[yandex_transport docs]: /integrations/yandex_transport/ +[yardian docs]: /integrations/yardian/ +[yeelight docs]: /integrations/yeelight/ +[yolink docs]: /integrations/yolink/ +[youtube docs]: /integrations/youtube/ +[zamg docs]: /integrations/zamg/ +[zeroconf docs]: /integrations/zeroconf/ +[zerproc docs]: /integrations/zerproc/ +[zeversolar docs]: /integrations/zeversolar/ +[zha docs]: /integrations/zha/ +[zodiac docs]: /integrations/zodiac/ +[zone docs]: /integrations/zone/ +[zoneminder docs]: /integrations/zoneminder/ +[zwave_js docs]: /integrations/zwave_js/ From 87311ae1f9f4e732733011482871443a982bf7f1 Mon Sep 17 00:00:00 2001 From: Quentame Date: Sat, 30 Mar 2024 07:01:07 +0100 Subject: [PATCH 20/84] `conditional` & `entity-filter`: add ability to filter through `entity_id` & add `entity-filter` `conditional`'s conditions (#30561) * entity-filter: add ability to filter through entity_id value * Update to latest frontend PR edits * Update to new upstream * Fix English spelling Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_dashboards/conditional.markdown | 79 ++++-- source/_dashboards/entity-filter.markdown | 287 ++++++++++++++++++--- source/dashboards/badges.markdown | 288 ++++++++++++++++++++-- 3 files changed, 593 insertions(+), 61 deletions(-) diff --git a/source/_dashboards/conditional.markdown b/source/_dashboards/conditional.markdown index 3cf505e9a5e..19b188730ba 100644 --- a/source/_dashboards/conditional.markdown +++ b/source/_dashboards/conditional.markdown @@ -25,7 +25,7 @@ type: type: string conditions: required: true - description: List of conditions to check. See [available conditions](/dashboards/conditional/#card-conditions). + description: List of conditions to check. See [available conditions](#conditions-options). type: list card: required: true @@ -79,24 +79,24 @@ card: - binary_sensor.rookmelder ``` -## Card conditions +## Conditions options ### State +Tests if an entity has a specified state. + ```yaml -condition: "state" +condition: state entity: climate.thermostat state: heat ``` ```yaml -condition: "state" +condition: state entity: climate.thermostat state_not: "off" ``` -Tests if an entity has a specified state. - {% configuration %} condition: required: true @@ -108,11 +108,11 @@ entity: type: string state: required: false - description: Entity state is equal to this value. Can contain an array of states.* + description: Entity state or ID to be equal to this value. Can contain an array of states.* type: [list, string] state_not: required: false - description: Entity state is unequal to this value. Can contain an array of states.* + description: Entity state or ID to not be equal to this value. Can contain an array of states.* type: [list, string] {% endconfiguration %} @@ -123,7 +123,7 @@ state_not: Tests if an entity state matches the thresholds. ```yaml -condition: "numeric_state" +condition: numeric_state entity: sensor.outside_temperature above: 10 below: 20 @@ -140,15 +140,15 @@ entity: type: string above: required: false - description: Entity state is above this value.* + description: Entity state or ID to be above this value.* type: string below: required: false - description: Entity state is below to this value.* + description: Entity state or ID to be below this value.* type: string {% endconfiguration %} -*at least one is required (`above` or `below`) +*at least one is required (`above` or `below`), both are also possible for values between. ### Screen @@ -175,7 +175,7 @@ media_query: Specify the visibility of the card per user. ```yaml -condition: "user" +condition: user users: - 581fca7fdc014b8b894519cc531f9a04 ``` @@ -191,6 +191,57 @@ users: type: list {% endconfiguration %} +### And + +Specify that both conditions must be met. + +```yaml +condition: and +conditions: + - condition: numeric_state + above: 0 + - condition: user + users: + - 581fca7fdc014b8b894519cc531f9a04 +``` + +{% configuration %} +condition: + required: true + description: "`and`" + type: string +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options). + type: list +{% endconfiguration %} + +### Or + +Specify that at least one of the conditions must be met. + +```yaml +condition: or +conditions: + - condition: numeric_state + above: 0 + - condition: user + users: + - 581fca7fdc014b8b894519cc531f9a04 +``` + +{% configuration %} +condition: + required: true + description: "`or`" + type: string +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options). + type: list +{% endconfiguration %} + + ## Related topics -- [Dashboard cards](/dashboards/cards/) \ No newline at end of file +- [Dashboard cards](/dashboards/cards/) diff --git a/source/_dashboards/entity-filter.markdown b/source/_dashboards/entity-filter.markdown index 201e7067261..64b57545829 100644 --- a/source/_dashboards/entity-filter.markdown +++ b/source/_dashboards/entity-filter.markdown @@ -29,9 +29,13 @@ entities: required: true description: A list of entity IDs or `entity` objects, see below. type: list +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options).* + type: list state_filter: - required: true - description: List of strings representing states or `filter` objects, see below. + required: false + description: (legacy) List of strings representing states or filters to check. See [available legacy filters](#legacy-state-filters).* type: list card: required: false @@ -45,6 +49,8 @@ show_empty: default: true {% endconfiguration %} +*one is required (`conditions` or `state_filter`) + ### Options for entities If you define entities as objects instead of strings (by adding `entity:` before entity ID), you can add more customization and configurations: @@ -64,8 +70,9 @@ name: type: string icon: required: false - description: Overwrites icon or entity picture. + description: Overwrites icon or entity picture. You can use any icon from [Material Design Icons](https://pictogrammers.com/library/mdi/). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string + default: Entity domain icon secondary_info: required: false description: "Show additional info. Values: `entity-id`, `last-changed`." @@ -74,32 +81,225 @@ format: required: false description: "How the state should be formatted. Currently only used for timestamp sensors. Valid values are: `relative`, `total`, `date`, `time` and `datetime`." type: string +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options).* + type: list state_filter: required: false - description: List of strings representing states or `filter` objects, see below. + description: (legacy) List of strings representing states or filters to check. See [available legacy filters](#legacy-state-filters).* type: list {% endconfiguration %} -### Options for state filter +*only one filter will be applied: `conditions` or `state_filter` if `conditions` is not present -If you define `state_filter` as objects instead of strings (by adding `value:` before your state value), you can add more customization to your filter: +## Conditions options -{% configuration %} -value: +You can specify multiple `conditions`, in which case the entity will be displayed if it matches any condition. + +### State + +Tests if an entity has a specified state. + +```yaml +type: entity-filter +entities: + - climate.thermostat_living_room + - climate.thermostat_bed_room +conditions: + - condition: state + state: heat +``` + +```yaml +type: entity-filter +entities: + - climate.thermostat_living_room + - climate.thermostat_bed_room +conditions: + - condition: state + state_not: "off" +``` + +```yaml +type: entity-filter +entities: + - sensor.gas_station_1 + - sensor.gas_station_2 + - sensor.gas_station_3 +conditions: + - condition: state + state: sensor.gas_station_lowest_price +``` + +{% configuration condition_state %} +condition: required: true - description: String representing the state. + description: "`state`" type: string -operator: +state: required: false - description: Operator to use in the comparison. Can be `==`, `<=`, `<`, `>=`, `>`, `!=`, `in`, `not in`, or `regex`. + description: Entity state or ID to be equal to this value. Can contain an array of states.* + type: [list, string] +state_not: + required: false + description: Entity state or ID to not be equal to this value. Can contain an array of states.* + type: [list, string] +{% endconfiguration %} + +*one is required (`state` or `state_not`) + +### Numeric state + +Tests if an entity state matches the thresholds. + +```yaml +type: entity-filter +entities: + - sensor.outside_temperature + - sensor.living_room_temperature + - sensor.bed_room_temperature +conditions: + - condition: numeric_state + above: 10 + below: 20 +``` + +{% configuration condition_numeric_state %} +condition: + required: true + description: "`numeric_state`" type: string -attribute: +above: required: false - description: Attribute of the entity to use instead of the state. + description: Entity state or ID to be above this value.* + type: string +below: + required: false + description: Entity state or ID to be below this value.* type: string {% endconfiguration %} -## Examples +*at least one is required (`above` or `below`), both are also possible for values between. + +### Screen + +Specify the visibility of the entity per screen size. Some screen size presets are available in the UI but you can use any CSS media query you want in YAML. + +```yaml +type: entity-filter +entities: + - sensor.outside_temperature + - sensor.living_room_temperature + - sensor.bed_room_temperature +conditions: + - condition: screen + media_query: "(min-width: 1280px)" +``` + +{% configuration condition_screen %} +condition: + required: true + description: "`screen`" + type: string +media_query: + required: true + description: Media query to check which screen size are allowed to display the entity. + type: string +{% endconfiguration %} + +### User + +Specify the visibility of the entity per user. + +```yaml +type: entity-filter +entities: + - sensor.outside_temperature + - sensor.living_room_temperature + - sensor.bed_room_temperature +conditions: + - condition: user + users: + - 581fca7fdc014b8b894519cc531f9a04 +``` + +{% configuration condition_user %} +condition: + required: true + description: "`user`" + type: string +users: + required: true + description: User ID that can see the entity (unique hex value found on the Users configuration page). + type: list +{% endconfiguration %} + +### And + +Specify that both conditions must be met. + +```yaml +type: entity-filter +entities: + - sensor.outside_temperature + - sensor.living_room_temperature + - sensor.bed_room_temperature +conditions: + - condition: and + conditions: + - condition: numeric_state + above: 0 + - condition: user + users: + - 581fca7fdc014b8b894519cc531f9a04 +``` + +{% configuration condition_and %} +condition: + required: true + description: "`and`" + type: string +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options). + type: list +{% endconfiguration %} + +### Or + +Specify that at least one of the conditions must be met. + +```yaml +type: entity-filter +entities: + - sensor.outside_temperature + - sensor.living_room_temperature + - sensor.bed_room_temperature +conditions: + - condition: or + conditions: + - condition: numeric_state + above: 0 + - condition: user + users: + - 581fca7fdc014b8b894519cc531f9a04 +``` + +{% configuration condition_or %} +condition: + required: true + description: "`or`" + type: string +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options). + type: list +{% endconfiguration %} + +## Legacy state filters + +### String filter Show only active switches or lights in the house. @@ -134,7 +334,32 @@ card: Entity filter combined with glance card.

-You can also specify multiple `state_filter` conditions, in which case the entity will be displayed if it matches any condition. This example will display everyone who is at home or at work. +You can also specify multiple `state_filter` conditions, in which case the entity will be displayed if it matches any condition. + +If you define `state_filter` as objects instead of strings, you can add more customization to your filter, as described below. + +### Operator filter + +Tests if an entity state correspond to the applied `operator`. + +{% configuration condition_operator %} +value: + required: true + description: String representing the state. + type: string +operator: + required: true + description: Operator to use in the comparison. Can be `==`, `<=`, `<`, `>=`, `>`, `!=`, `in`, `not in`, or `regex`. + type: string +attribute: + required: false + description: Attribute of the entity to use instead of the state. + type: string +{% endconfiguration %} + +#### Examples + +Displays everyone who is at home or at work. ```yaml type: entity-filter @@ -146,7 +371,7 @@ state_filter: - operator: "==" value: home - operator: "==" - value: work + value: work card: type: glance title: Who's at work or home @@ -173,19 +398,19 @@ entities: Use a regex filter against entity attributes. This regex filter below looks for expressions that are 1 digit in length and where the number is between 0-7 (so show holidays today or in the next 7 days) and displays those holidays as entities in the Entity Filter card. ```yaml - - type: entity-filter - card: - title: "Upcoming Holidays In Next 7 Days" - show_header_toggle: false - state_filter: - - operator: regex - value: "^([0-7]{1})$" - attribute: eta - entities: - - entity: sensor.upcoming_ical_holidays_0 - - entity: sensor.upcoming_ical_holidays_1 - - entity: sensor.upcoming_ical_holidays_2 - - entity: sensor.upcoming_ical_holidays_3 - - entity: sensor.upcoming_ical_holidays_4 - show_empty: false +type: entity-filter +card: + title: "Upcoming Holidays In Next 7 Days" + show_header_toggle: false +state_filter: + - operator: regex + value: "^([0-7]{1})$" + attribute: eta +entities: + - entity: sensor.upcoming_ical_holidays_0 + - entity: sensor.upcoming_ical_holidays_1 + - entity: sensor.upcoming_ical_holidays_2 + - entity: sensor.upcoming_ical_holidays_3 + - entity: sensor.upcoming_ical_holidays_4 +show_empty: false ``` diff --git a/source/dashboards/badges.markdown b/source/dashboards/badges.markdown index 56821d17624..198b11f4105 100644 --- a/source/dashboards/badges.markdown +++ b/source/dashboards/badges.markdown @@ -19,7 +19,7 @@ type: state-label entity: light.living_room ``` -{% configuration state_label %} +{% configuration state_badge %} type: required: true description: "`state-label`" @@ -62,12 +62,18 @@ entities: required: true description: A list of entity IDs or `entity` objects, see below. type: list +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options).* + type: list state_filter: - required: true - description: List of strings representing states or `filter` objects, see below. + required: false + description: (legacy) List of strings representing states or filters to check. See [available legacy filters](#legacy-state-filters).* type: list {% endconfiguration %} +*one is required (`conditions` or `state_filter`) + ### Options for entities If you define entities as objects instead of strings (by adding `entity:` before entity ID), you can add more customization and configurations: @@ -93,34 +99,227 @@ image: required: false description: The URL of an image. type: string +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options).* + type: list state_filter: required: false - description: List of strings representing states or `filter` objects, see below. + description: (legacy) List of strings representing states or filters to check. See [available legacy filters](#legacy-state-filters).* type: list {% endconfiguration %} -### Options for state filter +*only one filter will be applied: `conditions` or `state_filter` if `conditions` is not present -If you define state_filter as objects instead of strings (by adding `value:` before your state value), you can add more customization to your filter: +## Conditions options -{% configuration state_filter %} -value: +You can specify multiple `conditions`, in which case the entity will be displayed if it matches any condition. + +### State + +Tests if an entity has a specified state. + +```yaml +type: entity-filter +entities: + - climate.thermostat_living_room + - climate.thermostat_bed_room +conditions: + - condition: state + state: heat +``` + +```yaml +type: entity-filter +entities: + - climate.thermostat_living_room + - climate.thermostat_bed_room +conditions: + - condition: state + state_not: "off" +``` + +```yaml +type: entity-filter +entities: + - sensor.gas_station_1 + - sensor.gas_station_2 + - sensor.gas_station_3 +conditions: + - condition: state + state: sensor.gas_station_lowest_price +``` + +{% configuration condition_state %} +condition: required: true - description: String representing the state. + description: "`state`" type: string -operator: +state: required: false - description: Operator to use in the comparison. Can be `==`, `<=`, `<`, `>=`, `>`, `!=` or `regex`. + description: Entity state or ID to be equal to this value. Can contain an array of states.* + type: [list, string] +state_not: + required: false + description: Entity state or ID to not be equal to this value. Can contain an array of states.* + type: [list, string] +{% endconfiguration %} + +*one is required (`state` or `state_not`) + +### Numeric state + +Tests if an entity state matches the thresholds. + +```yaml +type: entity-filter +entities: + - sensor.outside_temperature + - sensor.living_room_temperature + - sensor.bed_room_temperature +conditions: + - condition: numeric_state + above: 10 + below: 20 +``` + +{% configuration condition_numeric_state %} +condition: + required: true + description: "`numeric_state`" type: string -attribute: +above: required: false - description: Attribute of the entity to use instead of the state. + description: Entity state or ID to be above this value.* + type: string +below: + required: false + description: Entity state or ID to be below this value.* type: string {% endconfiguration %} -### Examples +*at least one is required (`above` or `below`), both are also possible for values between. -Show only active switches or lights in the house +### Screen + +Specify the visibility of the entity per screen size. Some screen size presets are available in the UI but you can use any CSS media query you want in YAML. + +```yaml +type: entity-filter +entities: + - sensor.outside_temperature + - sensor.living_room_temperature + - sensor.bed_room_temperature +conditions: + - condition: screen + media_query: "(min-width: 1280px)" +``` + +{% configuration condition_screen %} +condition: + required: true + description: "`screen`" + type: string +media_query: + required: true + description: Media query to check which screen size are allowed to display the entity. + type: string +{% endconfiguration %} + +### User + +Specify the visibility of the entity per user. + +```yaml +type: entity-filter +entities: + - sensor.outside_temperature + - sensor.living_room_temperature + - sensor.bed_room_temperature +conditions: + - condition: user + users: + - 581fca7fdc014b8b894519cc531f9a04 +``` + +{% configuration condition_user %} +condition: + required: true + description: "`user`" + type: string +users: + required: true + description: User ID that can see the entity (unique hex value found on the Users configuration page). + type: list +{% endconfiguration %} + +### And + +Specify that both conditions must be met. + +```yaml +type: entity-filter +entities: + - sensor.outside_temperature + - sensor.living_room_temperature + - sensor.bed_room_temperature +conditions: + - condition: and + conditions: + - condition: numeric_state + above: 0 + - condition: user + users: + - 581fca7fdc014b8b894519cc531f9a04 +``` + +{% configuration condition_and %} +condition: + required: true + description: "`and`" + type: string +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options). + type: list +{% endconfiguration %} + +### Or + +Specify that at least one of the conditions must be met. + +```yaml +type: entity-filter +entities: + - sensor.outside_temperature + - sensor.living_room_temperature + - sensor.bed_room_temperature +conditions: + - condition: or + conditions: + - condition: numeric_state + above: 0 + - condition: user + users: + - 581fca7fdc014b8b894519cc531f9a04 +``` + +{% configuration condition_or %} +condition: + required: true + description: "`or`" + type: string +conditions: + required: false + description: List of conditions to check. See [available conditions](#conditions-options). + type: list +{% endconfiguration %} + +## Legacy state filters + +### String filter + +Show only active switches or lights in the house. ```yaml type: entity-filter @@ -133,7 +332,47 @@ state_filter: - "on" ``` -Specify filter for a single entity +You can also specify multiple `state_filter` conditions, in which case the entity will be displayed if it matches any condition. + +If you define `state_filter` as objects instead of strings, you can add more customization to your filter, as described below. + +### Operator filter + +Tests if an entity state correspond to the applied `operator`. + +{% configuration condition_operator %} +value: + required: true + description: String representing the state. + type: string +operator: + required: true + description: Operator to use in the comparison. Can be `==`, `<=`, `<`, `>=`, `>`, `!=`, `in`, `not in`, or `regex`. + type: string +attribute: + required: false + description: Attribute of the entity to use instead of the state. + type: string +{% endconfiguration %} + +#### Examples + +Displays everyone who is at home or at work. + +```yaml +type: entity-filter +entities: + - device_tracker.demo_paulus + - device_tracker.demo_anne_therese + - device_tracker.demo_home_boy +state_filter: + - operator: "==" + value: home + - operator: "==" + value: work +``` + +Specify filter for a single entity. ```yaml type: entity-filter @@ -150,3 +389,20 @@ entities: value: 50 attribute: humidity ``` + +Use a regex filter against entity attributes. This regex filter below looks for expressions that are 1 digit in length and where the number is between 0-7 (so show holidays today or in the next 7 days) and displays those holidays as entities in the Entity Filter badge. + +```yaml +type: entity-filter +state_filter: + - operator: regex + value: "^([0-7]{1})$" + attribute: eta +entities: + - entity: sensor.upcoming_ical_holidays_0 + - entity: sensor.upcoming_ical_holidays_1 + - entity: sensor.upcoming_ical_holidays_2 + - entity: sensor.upcoming_ical_holidays_3 + - entity: sensor.upcoming_ical_holidays_4 +show_empty: false +``` From fa007d9d0ed26e96480e313c191b71dcc37a0515 Mon Sep 17 00:00:00 2001 From: Lenn <78048721+LennP@users.noreply.github.com> Date: Tue, 2 Apr 2024 08:11:12 +0200 Subject: [PATCH 21/84] Add more info to Motionblinds BLE integration (#32058) * Add extra information for Motionblinds Bluetooth motors * Fix Matter link * Fix commas and period * Fix spelling error * Remove seller info --- source/_integrations/motionblinds_ble.markdown | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/source/_integrations/motionblinds_ble.markdown b/source/_integrations/motionblinds_ble.markdown index 321c52f2872..8744aa6d73a 100644 --- a/source/_integrations/motionblinds_ble.markdown +++ b/source/_integrations/motionblinds_ble.markdown @@ -17,13 +17,14 @@ ha_platforms: ha_integration_type: device --- -The Motionblinds BLE {% term integration %} adds support for [Motionblinds](https://motionblinds.com/) Bluetooth motors. Beware that this integration does not work with *Eve Motionblinds* motors. *Eve Motionblinds* can be added to Home Assistant using the [HomeKit Device](https://www.home-assistant.io/integrations/homekit_controller/) integration. +This {% term integration %} adds support for [Motionblinds](https://motionblinds.com/) Bluetooth motors. Want to motorize your existing blinds? This can be done with Motionblinds motor CMD-03. Made-to-measure window coverings with Motionblinds are available through a worldwide reseller network. +Beware that this integration does not work with Eve Motionblinds motors. Eve Motionblinds can be added to Home Assistant using the [HomeKit Device](https://www.home-assistant.io/integrations/homekit_controller/) integration or the [Matter](https://www.home-assistant.io/integrations/matter/) integration. {% include integrations/config_flow.md %} ## Setup -During the setup of a Motionblinds BLE device, you will be asked what kind of blind your Motionblind is. There are 8 different blind types: +During the setup of a Motionblinds Bluetooth motor, you will be asked what kind of blind you have. There are 8 different blind types: - **Roller blind**: has the ability to change position and speed. - **Honeycomb blind**: has the ability to change position and speed. @@ -32,7 +33,7 @@ During the setup of a Motionblinds BLE device, you will be asked what kind of bl - **Venetian blind (tilt-only)**: has the ability to change tilt and speed. - **Double Roller blind**: has the ability to change position, tilt, and speed. - **Curtain blind**: has the ability to change position. May need to be calibrated if the end positions are lost, which can be done by using the open/close cover button or the set cover position slider. This will trigger a calibration which will first make the curtain find the end positions after which it will run to the position as indicated by the command that was given. -- **Vertical blind**: has the ability to change position and tilt. May need to be calibrated if the end positions are lost, which has to be done using the Motionblinds BLE mobile app. +- **Vertical blind**: has the ability to change position and tilt. May need to be calibrated if the end positions are lost, which must be done using the Motionblinds Bluetooth app. ## Entities @@ -44,13 +45,13 @@ The following entities are available for a Motionblinds BLE device: - Disconnect button: allows you to disconnect the blind. - Favorite button: allows you to move the blind to the favorite position. - [Select](https://www.home-assistant.io/integrations/select/) entities: - - Speed select: allows you to change the speed of the motor to low, medium, or high. Available for all blinds except a curtain blind and a vertical blind. + - Speed select: allows you to change the speed of the motor to low, medium, or high. Available for all blinds except curtain blinds and vertical blinds. ## Services -Since Motionblinds BLE motors require a Bluetooth connection to control them, Home Assistant does not get automatic updates of the motor's state by default. Therefore, you can use the [homeassistant.update_entity](https://www.home-assistant.io/docs/scripts/service-calls/#homeassistant-services) service on a Motionblinds BLE entity which will connect to your Motionblind and update the state of all entities belonging to the device. **However, be aware that doing so may impact battery life.** +Since Motionblinds Bluetooth motors require a Bluetooth connection to control them, Home Assistant does not get automatic updates of the motor's state by default. Therefore, you can use the [homeassistant.update_entity](https://www.home-assistant.io/docs/scripts/service-calls/#homeassistant-services) service on any entity belonging to a Motionblinds Bluetooth device, which will connect to your Motionblinds Bluetooth motor and update the state of all entities belong to that device. However, be aware that doing so may impact battery life. -This can also be automated using a YAML automation. For instance, the following automation connects to your Motionblind every 24 hours to update it's state in Home Assistant: +This can also be automated using a YAML automation. For instance, the following automation connects to your Motionblind every 24 hours to update its state in Home Assistant: ```yaml alias: Motionblinds BLE polling automation From 6789443ef30f83a64a5ab32379b65359100963e5 Mon Sep 17 00:00:00 2001 From: Shai Ungar Date: Sat, 30 Mar 2024 16:23:16 +0300 Subject: [PATCH 22/84] Fix Rova double header (#32097) --- source/_integrations/rova.markdown | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/_integrations/rova.markdown b/source/_integrations/rova.markdown index abb38a4c4c5..024645f53ce 100644 --- a/source/_integrations/rova.markdown +++ b/source/_integrations/rova.markdown @@ -14,6 +14,4 @@ ha_integration_type: integration [ROVA](https://rova.nl) is a waste collection company that operates in the center and east of the Netherlands. This **ROVA** integration uses an unofficial [ROVA](https://rova.nl) API to allow you to get your waste collection schedule and integrate this into your Home Assistant installation. -## Configuration - {% include integrations/config_flow.md %} From e1b49ae9ead671e2c356349059e4f0456d34be26 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 2 Apr 2024 09:29:37 +0200 Subject: [PATCH 23/84] Add floor template functions (#32121) * Add floor template functions * Add missing full stop --- .../_docs/configuration/templating.markdown | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index f2bd16b9b7a..96a66407429 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -458,6 +458,51 @@ The same thing can also be expressed as a test: {% endraw %} +### Floors + +- `floors()` returns the full list of floor IDs. +- `floor_id(lookup_value)` returns the floor ID for a given device ID, entity ID, area ID, or area name. Can also be used as a filter. +- `floor_name(lookup_value)` returns the floor name for a given device ID, entity ID, area ID, or floor ID. Can also be used as a filter. +- `floor_areas(floor_name_or_id)` returns the list of area IDs tied to a given floor ID or name. Can also be used as a filter. + +#### Floors examples + +{% raw %} + +```text +{{ floor() }} # ['floor_id'] +``` + +```text +{{ floor_id('First floor') }} # 'first_floor' +``` + +```text +{{ floor_id('my_device_id') }} # 'second_floor' +``` + +```text +{{ floor_id('sensor.sony') }} # 'first_floor' +``` + +```text +{{ floor_name('first_floor') }} # 'First floor' +``` + +```text +{{ floor_name('my_device_id') }} # 'Second floor' +``` + +```text +{{ floor_name('sensor.sony') }} # 'First floor' +``` + +```text +{{ floor_areas('first_floor') }} # ['living_room', 'kitchen'] +``` + +{% endraw %} + ### Areas - `areas()` returns the full list of area IDs From 60a02f71770726707090c82bed844f98774dda55 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 2 Apr 2024 09:54:09 +0200 Subject: [PATCH 24/84] Add label template functions (#32122) * Add label template functions * tiny tweaks --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- .../_docs/configuration/templating.markdown | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 96a66407429..7117294db66 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -574,6 +574,59 @@ If there is more than one entry with the same title, the entities for all the ma {% endraw %} +### Labels + +- `labels()` returns the full list of label IDs, or those for a given area ID, device ID, or entity ID. +- `label_id(lookup_value)` returns the label ID for a given label name. +- `label_name(lookup_value)` returns the label name for a given label ID. +- `label_areas(label_name_or_id)` returns the list of area IDs tied to a given label ID or name. +- `label_devices(label_name_or_id)` returns the list of device IDs tied to a given label ID or name. +- `label_entities(label_name_or_id)` returns the list of entity IDs tied to a given label ID or name. + +Each of the label template functions can also be used as a filter. + +#### Labels examples + +{% raw %} + +```text +{{ labels() }} # ['christmas_decorations', 'energy_saver', 'security'] +``` + +```text +{{ labels("living_room") }} # ['christmas_decorations', 'energy_saver'] +``` + +```text +{{ labels("my_device_id") }} # ['security'] +``` + +```text +{{ labels("light.christmas_tree") }} # ['christmas_decorations'] +``` + +```text +{{ label_id('Energy saver') }} # 'energy_saver' +``` + +```text +{{ label_name('energy_saver') }} # 'Energy saver' +``` + +```text +{{ label_areas('security') }} # ['driveway', 'garden', 'porch'] +``` + +```text +{{ label_devices('energy_saver') }} # ['deadbeefdeadbeefdeadbeefdeadbeef'] +``` + +```text +{{ label_entities('security') }} # ['camera.driveway', 'binary_sensor.motion_garden', 'camera.porch'] +``` + +{% endraw %} + ### Issues - `issues()` returns all open issues as a mapping of (domain, issue_id) tuples to the issue object. From 9725635dab9c44b12d31bef810b455ba14b370d7 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 2 Apr 2024 13:56:49 +0200 Subject: [PATCH 25/84] Add floor selector (#32124) * Add floor selector * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_docs/blueprint/selectors.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_docs/blueprint/selectors.markdown | 151 ++++++++++++++++++-- source/images/blueprints/selector-floor.png | Bin 0 -> 20550 bytes 2 files changed, 141 insertions(+), 10 deletions(-) create mode 100644 source/images/blueprints/selector-floor.png diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown index 4a9c030b790..f636b302989 100644 --- a/source/_docs/blueprint/selectors.markdown +++ b/source/_docs/blueprint/selectors.markdown @@ -18,7 +18,6 @@ The following selectors are currently available: - [Action selector](#action-selector) - [Add-on selector](#add-on-selector) - [Area selector](#area-selector) - - [Example area selectors](#example-area-selectors) - [Attribute selector](#attribute-selector) - [Assist pipeline selector](#assist-pipeline-selector) - [Backup location selector](#backup-location-selector) @@ -32,23 +31,20 @@ The following selectors are currently available: - [Date selector](#date-selector) - [Date \& time selector](#date--time-selector) - [Device selector](#device-selector) - - [Example device selector](#example-device-selector) - [Duration selector](#duration-selector) - [Entity selector](#entity-selector) - - [Example entity selector](#example-entity-selector) +- [Floor selector](#floor-selector) - [Icon selector](#icon-selector) - [Language selector](#language-selector) - [Location selector](#location-selector) - [Media selector](#media-selector) - [Number selector](#number-selector) - - [Example number selectors](#example-number-selectors) - [Object selector](#object-selector) - [QR code selector](#qr-code-selector) - [RGB color selector](#rgb-color-selector) - [Select selector](#select-selector) - [State selector](#state-selector) - [Target selector](#target-selector) - - [Example target selectors](#example-target-selectors) - [Template selector](#template-selector) - [Text selector](#text-selector) - [Theme selector](#theme-selector) @@ -211,7 +207,7 @@ living_room - kitchen ``` -### Example area selectors +### Example area selectors An example area selector only shows areas that provide one or more lights or switches provided by the [ZHA](/integrations/zha) integration. @@ -581,7 +577,7 @@ faadde5365842003e8ca55267fe9d1f4 - 3da77cb054352848b9544d40e19de562 ``` -### Example device selector +### Example device selector An example entity selector that, will only show devices that are: @@ -717,7 +713,7 @@ light.living_room - light.kitchen ``` -### Example entity selector +### Example entity selector An example entity selector that, will only show entities that are: @@ -737,6 +733,141 @@ entity: device_class: motion ``` +## Floor selector + +The floor selector shows a floor finder that can pick +floors based on the selector configuration. The value of the input will be the +floor ID. If `multiple` is set to `true`, the value is a list of floor IDs. + +A floor selector can filter the list of floors based on the properties of the +devices and entities assigned to the areas on those floors. +For example, the floor list could be limited to floors with entities +provided by the [ZHA](/integrations/zha) integration, based on the areas they are in. + +In its most basic form, this selector doesn't require any options. +It will show all floors. + +![Screenshot of a floor selector](/images/blueprints/selector-floor.png) + +```yaml +floor: +``` + +{% configuration floor %} +device: + description: > + When device options are provided, the list of floors is filtered by floors + that have at least one device matching the given conditions. Can be + either an object or a list of objects. + type: list + required: false + keys: + integration: + description: > + Can be set to an integration domain. Limits the list of floors that + have devices by this integration domain. For example, + [`zha`](/integrations/zha). + type: string + required: false + manufacturer: + description: > + When set, the list only includes floors that have devices by the set + manufacturer name. + type: string + required: false + model: + description: > + When set, the list only includes floors that have devices which have + the set model. + type: string + required: false +entity: + description: > + When entity options are provided, the list only includes floors + that at least have one entity that matches the given conditions. Can be + either an object or a list of objects. + type: list + required: false + keys: + integration: + description: > + Can be set to an integration domain. Limits the list of floors that + have entities by the set integration domain. For example, + [`zha`](/integrations/zha). + type: string + required: false + domain: + description: > + When set, the list only includes floors that have entities of certain domains, + for example, [`light`](/integrations/light) or + [`binary_sensor`](/integrations/binary_sensor). Can be either a string + with a single domain, or a list of string domains to limit the selection to. + type: [string, list] + required: false + device_class: + description: > + When set, the list only includes floors that have entities with a certain + device class, for example, `motion` or `window`. Can be either a string + with a single device_class, or a list of string device_class to limit + the selection. + type: [device_class, list] + required: false + supported_features: + description: > + When set, the list only includes floors that have entities with a certain + supported feature, for example, `light.LightEntityFeature.TRANSITION` + or `climate.ClimateEntityFeature.TARGET_TEMPERATURE`. Should be a list + of features. + type: list + required: false +multiple: + description: > + Allows selecting multiple floors. If set to `true`, the resulting value of + this selector will be a list instead of a single string value. + type: boolean + default: false + required: false +{% endconfiguration %} + +The output of this selector is the floor ID, or (in case `multiple` is set to +`true`) a list of floor IDs. + +```yaml +# Example floor selector output result, when multiple is set to false +first_floor + +# Example floor selector output result, when multiple is set to true +- first_floor +- second_floor +``` + +### Example floor selectors + +An example floor selector only shows floors that have one or more lights or +switches provided by the [ZHA](/integrations/zha) integration. + +```yaml +floor: + entity: + integration: zha + domain: + - light + - switch +``` + +Another example using the floor selector, which only shows floors that +have one or more remote controls provided by the [deCONZ](/integrations/deconz) +integration. Multiple floors can be selected. + +```yaml +floor: + multiple: true + device: + - integration: deconz + manufacturer: IKEA of Sweden + model: TRADFRI remote control +``` + ## Icon selector The icon selector shows an icon picker that allows the user to select an icon. @@ -910,7 +1041,7 @@ mode: The output of this selector is a number, for example: `42` -### Example number selectors +### Example number selectors An example number selector that allows a user a percentage, directly in a regular number input box. @@ -1209,7 +1340,7 @@ action:
-### Example target selectors +### Example target selectors An example target selector that only shows targets that at least provide one or more lights, provided by the [ZHA](/integrations/zha) integration. diff --git a/source/images/blueprints/selector-floor.png b/source/images/blueprints/selector-floor.png new file mode 100644 index 0000000000000000000000000000000000000000..7c345440b0df3c9b1d934267b5c315c6c0bccebf GIT binary patch literal 20550 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 literal 0 HcmV?d00001 From 16377da3b694197c297911bb508253375189c088 Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Tue, 2 Apr 2024 14:06:39 +0200 Subject: [PATCH 26/84] Map dashboard update to reflect current software (#32126) --- source/_dashboards/map.markdown | 5 ++-- source/_integrations/default_config.markdown | 1 - source/_integrations/map.markdown | 27 ------------------ source/_redirects | 1 + source/dashboards/dashboards.markdown | 14 +++++---- .../presence-detection.markdown | 5 ++-- .../images/dashboards/dashboard-manage-01.png | Bin 62349 -> 57138 bytes 7 files changed, 15 insertions(+), 38 deletions(-) delete mode 100644 source/_integrations/map.markdown diff --git a/source/_dashboards/map.markdown b/source/_dashboards/map.markdown index 9370e83431f..3ee49dcb992 100644 --- a/source/_dashboards/map.markdown +++ b/source/_dashboards/map.markdown @@ -5,7 +5,7 @@ sidebar_label: Map description: "The map card that allows you to display entities on a map" --- -The map card that allows you to display entities on a map +The map card that allows you to display entities on a map. This card is used on the [Map dashboard](/dashboards/dashboards/#map-dashboard), which is one of the default dashboards.

Screenshot of the map card @@ -138,4 +138,5 @@ hours_to_show: 48 ## Related topics - [Themes](/integrations/frontend/) -- [Dashboard cards](/dashboards/cards/) \ No newline at end of file +- [Dashboard cards](/dashboards/cards/) +- [Map dashboard](/dashboards/dashboards/#map-dashboard) \ No newline at end of file diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown index 61be61b50be..c579916b7d7 100644 --- a/source/_integrations/default_config.markdown +++ b/source/_integrations/default_config.markdown @@ -25,7 +25,6 @@ This {% term integration %} is a meta-component and configures a default set of - [Home Assistant Cloud](/integrations/cloud/) (`cloud`) - [Image upload](/integrations/image_upload/) (`image_upload`) - [Logbook](/integrations/logbook/) (`logbook`) -- [Map](/integrations/map/) (`map`) - [Media source](/integrations/media_source/) (`media_source`) - [Mobile app support](/integrations/mobile_app/) (`mobile_app`) - [My Home Assistant](/integrations/my/) (`my`) diff --git a/source/_integrations/map.markdown b/source/_integrations/map.markdown deleted file mode 100644 index 3702fe90909..00000000000 --- a/source/_integrations/map.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Map -description: Offers a map to show tracked devices. -ha_category: - - Other -ha_release: 0.56 -ha_quality_scale: internal -ha_domain: map -ha_integration_type: system ---- - -This offers a map on the frontend to display the location of tracked devices. To set up tracked devices, look at the [device tracker](/integrations/device_tracker/) documentation. This integration is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually: - -```yaml -# Example configuration.yaml entry -map: -``` - -

-Devices that are currently at home won't show on the map. -
- -
- -This map always shows the location of all tracked devices. If you want to hide certain entities, you should look into the [Map Card](/dashboards/map/). - -
diff --git a/source/_redirects b/source/_redirects index efbc3b90f83..5d9c2946ff4 100644 --- a/source/_redirects +++ b/source/_redirects @@ -467,6 +467,7 @@ layout: null /docs/tools/credstash/ /docs/configuration/secrets /docs/scripts/editor/ /docs/scripts /getting-started/devices /integrations +/integrations/map /dashboards/map/ # Blog /blog/2019/05/29/release-94 /blog/2019/06/05/release-94 diff --git a/source/dashboards/dashboards.markdown b/source/dashboards/dashboards.markdown index abcb82ff328..bbd9f892860 100644 --- a/source/dashboards/dashboards.markdown +++ b/source/dashboards/dashboards.markdown @@ -18,16 +18,20 @@ Home Assistant ships with some dashboards out of the box: - Overview - Energy -- Map +- [Map](#map-dashboard) - Logbook - History - To-do lists -Not all of the predefined dashboards are listed under {% my lovelace_dashboards title="**Settings** > **Dashboards**" %}. **Map**, **Logbook**, and **History**, are powered by their respective integrations. +Not all of the predefined dashboards are listed under {% my lovelace_dashboards title="**Settings** > **Dashboards**" %}. The **Logbook** and **History** dashboards are powered by their respective integrations. ### Map dashboard -The predefined **Map** dashboard is powered by the [Map integration](/integrations/map/). If you see a [person](/integrations/person/) on the map, it means you have connected a device that allows [presence detection](/integrations/#presence-detection). This is the case for example if you have the [Home Assistant Companion App](https://companion.home-assistant.io/) on your phone and allowed location tracking. +The predefined **Map** dashboard is populated by the [Map card](/dashboards/map/). You can edit this dashboard like any other dashboard. For example, you can edit the [view](/dashboards/views/) to use the **Sidebar** instead of the default **Panel** view type if you like. + +#### Maps and presence detection + +If you see a [person](/integrations/person/) on the map, it means you have connected a device that allows [presence detection](/integrations/#presence-detection). This is the case for example if you have the [Home Assistant Companion App](https://companion.home-assistant.io/) on your phone and allowed location tracking. ### Logbook dashboard @@ -255,6 +259,6 @@ views: ## Related topics - [Logbook integration](/integrations/logbook/) -- [Map integration](/integrations/map/) - [History integration](/integrations/history/) -- [To-do list integration](/integrations/todo/) \ No newline at end of file +- [To-do list integration](/integrations/todo/) +- [Views](/dashboards/views/) \ No newline at end of file diff --git a/source/getting-started/presence-detection.markdown b/source/getting-started/presence-detection.markdown index 71eac4875eb..3d1f98eb8e6 100644 --- a/source/getting-started/presence-detection.markdown +++ b/source/getting-started/presence-detection.markdown @@ -18,14 +18,14 @@ It's also possible to run an app on your phone to provide detailed location info During the setup of Home Assistant Companion on your mobile device, the app will ask for permission to allow the device's location to be provided to Home Assistant. Allowing this will create a `device_tracker` entity for that device which can be used in automations and conditions. - ### Zones + ![Map with zones](/images/screenshots/badges-zone.png) {% term Zones %} allow you to name areas on a map. These areas can then be used to name the location a tracked user is, or use entering/leaving a zone as an automation {% term trigger %} or {% term condition %}. See [Zones integration](/integrations/zone/) page for more details like creating zones.
[routers]: /integrations/#presence-detection @@ -40,7 +40,6 @@ The map view will hide all devices that are home. [zone]: /integrations/zone/ [trigger]: /getting-started/automation-trigger/#zone-trigger [condition]: /getting-started/automation-condition/#zone-condition -[ha-map]: /integrations/map/ [companion]: https://companion.home-assistant.io/ {% include getting-started/next_step.html step="Join the Community" link="/getting-started/join-the-community/" %} diff --git a/source/images/dashboards/dashboard-manage-01.png b/source/images/dashboards/dashboard-manage-01.png index bfd486c364fa2266eb69c9778894332a34d6bd67..55f693582c48704d4d2a0196fca6ceace196caed 100644 GIT binary patch literal 57138 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
neE%`rg6yY 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 z z%71aW+Tv8M*OAfM%3Im>;z@`CZ#)!h0`RP>jw6h-b8}ORi@$(f`quaCd47$Jne>Hz zsD%O|E-1oXMGm}YXx?1iBwqhzuDqhcv96H6i@@~^w>7Z z&;py#$S-&DT3R##jR5fGJ2h%Xk<|ZgCnF;h{(rXvmCq|};eQYPS7I2zE!%c%MNsE# z)(jED{3tCg?Q8hYbXfZn!%j!DGBcw9iTU-x%+BAxp-ghXdxAL%fN7nDnN7{t$Rg6a zOIiF?niN9~7!mUQPTmCN7w@7W^3+tN>pbzwh{?WJCgxOM&Re23XBTXf4P zHYLoEc1uM}?XU?pT5N_dSY8o)^`2A%(Mu%>sw#m}s`hH0P$cP8KyLbTZh~Ktrjnd* zNpioMrV3m36BATC7Y$}d;w&pqMXbgC$%$lD^OEV1y7(rsrzD~y(l}95`58j)#S2-& zH&0vo!4_6dNC25aZ>(n;p*$y0Rq1%bG)}7gv_n6Tpk6TqpBZFX9FmnK8;$Kl1c^GK zfqcL8v`@SC%*Q|RN0Q0oQ%ODE-EyHS>0FI~lwhiQl`=Of|LOP)}bf6(0f8y%6X!SQ?%4IPWX& z1G=VLfFwg{c4_AWgRgl!)-f_}*D;nap8;vpRa)Z{rCeqzzm(Trwp+d1x`zbUzT(}u z@v@um*J3~swU(Y$KKJ~WZ`tmML$2&G#`Vr_!cvBs5?(K}z(OlK#rw`q^u}~yT56dO zI9#1=<84Bb#V~gza{H}@`SRAP#j=bGput^wa7;+-!f5Vl>ob#+$syv3E3!B#TC3Pl z7@50e&MxS{EXj>INd+@P$xFg&HepWy+ua7x4~I1Xf^72` zm##U}i5yI|)Re9QT}3nKC?RhVt8%_P%8h1z6_k^al2h)DDPk|(jUqFGqk1W~v+4f? zXdUv}+sxV)J!!6+eDdEx98FM0!ULCQ6xOi>^I$MI`rM>jilyvO?`-!RH6~?^fvAg3MW)s?+}+J%v9y#(YpN zlk4JsJI?9$SQ8M60ZO>RUB|cdo+ldS4y2p#zXL@@^oWsc>97QD^>WuOQrrYen6PG? z0G&d2B*O}(qa9JEy@G01Vi<4ise@z}z%wai6w-YLM^=a_pkN}Y@YV3F`Qr?viTc!F zg~`x`zWoKs?oVeDjojUp`af3>oE?F4`<@4poZqh4)mbet0oT#I9m|*BY9zr=oDirG znEJlTZCmifcq#v&*~+JUSuN;4Dh8TUV~lQ`_A2iro5ci+zHvnn6UU=%;~g?X3AbTA z;r_K#BDP&$rfu)HH2Q|Oe77I0ljE6obg)~xoy$jZ+YZbjWXltj69c!Y(R!(uz^?rx zS4Vw)5*EGM=EW~nq%ic>@q> zLOM!ktwXD7Q)wJP19+sW@7dV`lIZX;_j?34VHIPmo0fCMCzb^@s>V~5SKgrVC7+x@ zwU|M*56}|}$v|%s_gP1jBLRMxM9djIta%#EJW2mv)uW5DE}zJiIb06XP)W9t z;0~CO$?xf2rHq0~OQ=Ec|GA>9IJTmhiI4b-iyT2w$kekL1Tm4QZdI?g$xm#5ug%PtU3%4)ehxV6^@$x{E69aOIOUW?~E;Kkg3lCrOfUx zc6ek31(T!oe7_g?kJdS>#pf1HZvuqO2APk4Ga!IyBk}}1&H>O!w;U8@E>;`%k^aMG zEyrK_jqk>Ob<3gTZLDMd@T(a&=Vji!^1Uo=mDR4KE`5MX(43RR6`mVRr+N864EtXz zRjjrGwGUq%7xSGW^Q-MP1OdqKAg}NBH{FaST~;|D7&lm2M#kfyFcnUzmj(0{7rZB& z0N*k$y5I}UtJQd1nXdc2`urWs98&PT#Gu7|gM11602X`$fZ?a{82{yT04{9lzq)iL zy;XW-CfG0lt}izC zgJ-WNJvjnGM>CjJeE`W1CEiQN!W8dH|7H*Hl32u{oW{iKRgt5Roe2z-P5cR|@-7V5pX`gETO2ub* z?ljGJ_rEv@hDWF1`{>4N4P+;J6Vw@3j1fl0$BXKn?UDU&m-Yl;7;7wpxnKbjodP#uMzio9U^XXfq`R_PuGQR#;Kx}TL7W5 z&xs;Pv92&s^I^SNiLDi!is>Mi`W*fT^gr zIxLr~r~vbLb=#&)6!OJ?_C0})nkC&O?d>?couPKel5;#nj0H@$G;N!{3pRCCQGv}- zb^6vr4Ec*s;eku8=X0a_rV^9%xf!5rBREPs#FeZs!e%#!q7a#!2B3&hG%|I6E4ZT~+h+8e;&9WhHfK zD>HrUC*$VEX}<9f`S0@7NRbaCn)Jy$&R3mQ_{#xSHn>&NhJKD~62 zSf@|E$~u#*?}~@{9Wj%_*lg2XpN&ArIH6D4?5xUd4jj)|R=tY#YjM}7xz{)@Xu7-$&Rb)zz)-gi$KNc~EIy?rEBdtz zZ$9(SVvTXfG|w9a#l;0oiRDgCPX`v=Ou+5|+RYIFBEStarfD3)|EL*{JE<3BnNMT$ zSw58(@`LkrpCq}>AtAnIXFBiPeBO-@sOj&XEiePkx4gzlr_!HGK)XG;6A10npc2EL zhnU`VRA&W>GGU&{yGkE?APRjq4huKPyD;3Xffpy&4FCqG*}gtaE)a=_IXESh&yv_)cadze1SF}IBmVhOSfVXvG$pOBkP3@>8$t?p*A zc$BKW&0>=HCepcjCg5G&lSd1!kMS(ki(D`E1i_bBIDXi)bX$|%~p`uBFqL}~>p zR@Uz;c3s(j|C$ne?vnw^_)nG1e>fWLE zi%qiML$RL`@cG-ZJ8A*%7FL>unb0YLL;~|mG62nBg#MkmFDHO0eMSPfpo94$3*x^z}r3xB} zyCsUG22vYS1R`o#y)1!QSY?E_gz2hjti9@aR56+(pe^ly#^-W~xuENo{f3~!!*80K zLb7lHfGmQn;K&vEmSHJ8(0t79PS^hXHjs(GkNo;Y3dp+ShD5)9#Q=J5-q%wS0(v=X zxa}&|l(Ev)5H1j5I#skO!6s$LBvES>Lw#Nb8>WHI^?VeV6NG-3Obvik6lPs^IT3C<$0~;VKGsGec zp8i)0P~0UtHriv&rmTgOPW1^gwQ54-03HS5vPXeP(oH|5g9|~JW|}NTW`@IM#6SQ5 zG#{V%_`H7kb|urRD{E=-(#+q~P52;w-rm61yjJ%yD8JWz2*>K;bIvjD&RE;)Tdy;{ z^Y{Y4&i&8=Cq*pws?p^u@HR+r50n5vixDO={~QpW0gwq!&wUFPn2za-z@TQ@#+d%4 zfW&{D+y@C#IY|>OW&U0ffpR%LvjogpgU!?wot!1if22}s)2FHGN7o*Zs!F&4W5})= zwT6f2v1&w=#m(4et;vuKeC)zsyLRvtK~Q!-2pXFb18Nuus1?6{6_u_aD5gw|gy1*I zZ^RIgI`Cpil>Hi}H<1t*v_e%AQ<3=XGfC^~Iu)y}mHNbqPdo~5|W_Fpsn|Ynof2MfxdR00BTPM8qT_>1Z8ByJO6xHSe#@U zwdaWq2#ui=FC*fqrP-#n_b+9v=5ug&O+!h#crUfcIHjg3}JQ6qYCb6$N z=LRyaT9qCnEET{QM<08jtzpX&0?%f0_rs6M%1Vh5x3sYU2|b1{$-*I_?+IUI=SOI)!X!tTYfp+Y?;u#AR5}5@Rrx(|E+j@4l z4#7Aus--0al&1P!p~kHfb5#+Y5SRYq4~((u{|9y18W@z{lxP;tzB>wSV&Py>doBu6 zp$r^Wl6o|(3WPB}fQB(1)>W4D=59laiF#dKv zN7~urPJj;J=(Ui~&GB>PM?pIOK+NQ`OA1setpO^X$e0}`^0z+{huewEEF)$!&D-44x z>&2F_DwkX!#~!J-=eXs>eUVkp6)rDpl)$y31)$`A!8hm?)2|0aR`=yV zJYJtWUI=ac^Ssgj5(F3lPz2<4*Xsv~aNKg2eXSSB$OItK0uin8>BfNJY2)2VUsm_# zP^KAp3e4D?HPk?S2I4o<-HGBma8d|swHCG7rjdsKkSH8#C1dY zl515e(6O+v=o69iWMQzqQ4jUY{lf;2x#@d5TscJkhQqz%&ba?z`6vZB6jxI~lA2M| za((ZEI%a-%!P)47JD2%~RpG6Eefv<04#Hvv#IdUzj5Ueg;Rn<#amtU@&td%=0))V2 z@>VI5&d|LClSAN2V8o9No!$KGYs2P0`)GD}0L|t_^NIF#kHrb4<~ACU9tqAWF8ozg zg=0=NqgE9ut^GGXB!jMv^LYyQu&}*Mw86+zIigQ-?>_wHCQQXDr%wS5MK-s@NYJok zj$(&AeJX8RV~97Q`g=ToK3_&gmVkhOlapJWNxi-P!NCR3MIM2cCNmdFetxe%iO@WQ zKBGd|om31gDm&{lUVBT|h=9 zk-{Y;BI5JBV4TFc9W}5>b^NvP>(pe7Vd>ELq_>Czg@_wPL`1~aV2c;te&I;z%+NR* z`N$@{x4}7bjD#B%IACFO`fTh^~%y+p(dw`ZIfzNjiR=M{)pCG+b;vut^_!o29< zExf$FhY0+)oOXQ*j#mQ2v=1}c-LEkxDJUt$czB)CY%DCYv$Fg_*+$QMR&M{(KTXg* z4lv6OZL*Prf<=5B9wL4IjIltDhCU;`@-{S1?Bjw9R=l`-Hkt52lnj(&fyj6TI1=KV zCvS|6scdRe$(q+ED{V(>5YDfvPg_j0yi5%moT(SqqHlfOC%CwWgY|v+{OITqjR0(+MHdz@ zhZLi=X*q)gp~U^|9L|JR)ZoPZ#U4h7_e8Xa4@b=Ko6OUMb1$E(1Tt_efbQTpvyy$m zu-1Hmrkv~J?@M-{lvEc!*s!;ZCDfu3Kf2w)igHl5NqTa6+BEs|svWO+m{~_fP0iy^ zd}<#MW9L0`V#K~BrUs(n{L)ghp}YhegrEd%v(Zh*(Pw0+q_&jZ_6f<8)rjBZ4|$G` zw9g}~7M33uyHl@9pPVyhvhJlhWBW|?Y~k(nB(F_tBn}X_jnD4BN?(3X&E~0i8hlCg ziM_3q&rm$-WHsS$^VM&@iPLxv`9_~2j9uxWjT=QNBF#seCyUH{&`GIVmwFpN#i10r zhX@v~yaD8dY6ef?Y9)RB#qA!kJhP;|LFVx43s336>v@F428!WemgpUK$!ib-{zUtn zQGt$;4dwIMnUh+H&h|@Og}itezkJSZH4?^W1g=Gtl$2*=6Jq?(oDh^R?}NcA*xB8+ zuhY596l=D+xf~ZFbU#{D&U?3?6_{y%oKzjVv}6De4}WxdX?rhYX12V%bWFQYyqk_? z(O=i5$n^b)oN{FKXxODAYkd+2Pz&yc9`Dew9&c$?mC0@oLk~}rhrEJ-I^?jFMQaf5 z?{-Y#QYmN=m#RtBOywqpr}NJtKehDx}5xn5-a2_^gKI;WKy@BW`%j zL4$K#e!0JJ#LKhQ77^=}rVm0yfgufTig}yp7_oZD7|qSiSGTvLV`JhGg-{j z<`Ehsu|yn!EBInH#jwB$17mxBY4`%W7j#EYpFUmM-Q8`l*72HI;=B*fAXZMo3Bb}^`mUV)#Vv`8oy^wNQllsY;eM@wPNbt z;o;EHGL(SNf%=DJ`|(NzYIQ_ak&P*uoo|G zcpwIqjnUQ7G76b+njtjET}({YZmYJ0G#Cj3BbI^h#a|aFtmtFJMSlDCt&ZaW7vOJH zHE?mcE8q=J<;UaxPP3_}ajR~sej1kWnQ}HLXizkSIf90g^2v#I75Hj$%~uW&72mw^ zyYza>^y4K{Th_ibRH>2E)r{i%I(|?>%<%C}O8U5KL;ay!vjzB@{uOVn2x33o4%E|7 zJJG#D>0w|3W3-fR(ZJ}+d~3d(%6`h+V| zOP3q9c;72}ayFXrG$gci8!b0<8(Ci1%-q6){8BOVZ=R&c>Za=hoSX-kIT74Qm22r$sFgChE_f-_LMCV*?+w+USF)6zfrh0zfu*yVfCuI zpF4)jOyCptQ#^eZ$cNo+CoV3&mTjIH7!nflN)X(Iw158JJv`ezT4I)?rL8QO7fdzO z$yG1yWX)!-STdQyoIsn7QUPSP%~C@y6clKyML1mB4uTAIQR#N215uD_ zCMP9(zSHg5*!K2z`k;QD!}|AM5h>@r5v2Rs!wAQ1LS7X#DJT1Xbw%`I-;Vv}`)Vd} zY1i3_Z$HlK%Di85o{*6-2#m>C`Yid<6%;kfyD_T;zMagu-Q$Ia=-8ODT!ERG$-{wb z%WkAx@%64y&%!j0UO8R1Vr`j&Au3LsCJTl#S(aQw@zI0$f~E1#hPo zFl?(^{p&ekZ)mu&=Sg;6!og@&QfD&_5B^QNzA8bJ8}*vMZ7iGK?SJ@meX_pM$I{}Z zsb{H^>N7mTqNP<)c_Zj!SIEal*`Fq8?C(CN-EFw>u$h>=+TN9XS?V)iIX59NP`9hc zW2P9%N@dFUY1B;a^sj(fs^KbS|Jmkc%|!^BOET;Tsc45Ts%#y}=IW{DiSf9{M-^QK zEux5c1{*Jrbxk#gTlT8q(|H7mz2=B{ez>pNIVBQs+xTC8 zzCHe&G0;T3_@Zhem><&yG2v7PjYvrW1&jZaB_E6Ap_mWJit9I|> zaMek2ALblb6*%BD;|%r_VM?`FXjpY?IAR@acvvkain`z4SUcN@951;YK-fj~Jg9MR zF$8BaQpb|OCE2i2{jzT`J|n|tIzY^9*-%qF>H5Zf*U`Z-Z^kw#aNvC6I0{V*x`H&Y zOkri=h<|TTNWgudFm#(rXj)=rFi!@J~#th-7{F;NHFI!$xl z^eD##{i7nCjgQoZ__vT}Nqk625d13a*NxZS+Be%FswO5hAnt>K4$Q1fH+Ek00C_AA z!!9BxLeN2tv2%Owz+2BNfAjFHTYFRt1sz_p%Lq~&}#fSH>d4;x)UE5+=`o4!SE<=-T$9o(O}7C2+yYPsWL zB^-2=W7EHTQATL~l|TKHvxm0$5cNqMT=}D|$*D#fo+!Ge3l=hRa z>8PMu?%h;SrTeO_lRc}gSyt(2bIuSs27zDwy=C~>*_nbZNED3v&1peFLBcG1x|*_O zblkQC7P7q9tbqre-;}y04u2F~8>N~|_f|C=m|DZpb^FqJRyo?>) ztnBf7!Sgj|O8RvP4YgoOHAC)u9ko&BK{uarLyCtIV)&i(g@Mr7^-zAB#MGG?EyxM` zgwFRpTsxB88aShaxjJ1^x!J@Q%0^}VI)Oj?Zi-sVX#8oCBs49TrF-2cU6-a+GX%I0 z#-h`<31sj+1J1`YxEZ7sOid?Vv?82mOggCB?m6jVCFH#SsAxkfY3V&bcmvK=46!@p z*^3vHuU_RJ$_h|Krps28YrYJi>tBvB{!o*twIe9*Ac}&FR;$ryAzKUObY`Hv$hyA*QunPfHqNhn4HCaGH62fcI_Ac65qx2SVO*&! z`>gI3)!kI8#6UDGa%%78UN1e3AO+$s{ZyGF)AB{w=~plQQ_;OC%x>kn?Gm3!|7M_N z8UZDXhsTWxfj=wCXTMlunStpy*F|=U<1Sj6$BpGKgzwd!xb{%HkkN}AdTiz}Q853J zj5L8qq8GZSFC3FGRVMCgw%9PSGO+eyMVEW;!l?!|xQXNHCl+~_`&+uCxi{zmZIF9& zy7zD8LULps!b3u&qqk7vK^2${DmO~X7ij;xhyPzc`}Yd)I(V3Z3DAcNo?&3reX1|W z1sU`#q@}>%lexeSXc~XK0QCXss0}g(2F80gbZ{RCs+9jcjP=i-MUuSwREV?hiC0!@s( z(a_QDkD&XFAQNfU9-6N(K?c;IJHV={-I^2uJy$RqnVJ|ZzdPjy$;e2k@Ds1e(Nh|F z4|EpOy5V}Ni5CWX%6NMVsTGb32-&ZQ&)HleWNx}NBm>=Bp<1!gWQp#)k5IagxcJAI zpkM$g{%$xAtKf=I9DpNtdXI}VQIyp|D&dd(PT2~(p1g~-M>{jvQ2xt~APQ8ntLsHk z(7-9vbO^jU-0!cLb0!4hG^PfMW##3FMUsq4frcFrF8t@abB?w1Hh^jP4p7Hj8c1OF8%hAM zNMO=dDW{}VAErsC-fQEhfk5>HTBw<3!jMC;yQtr8Q^XreMxQ zV`B|c4f!~G%IEU*Hyn*6y$0um%s`hMJFcj6XJx;vc9!07deq8cG<5kWN*J_DF1K|p z*8{dNUmd{Dr(t1<&dsF-?77BnMHpoBkHK%Le@h4q4pyQB4j|+d6#g+W=s@Sh3r>fO zjLetd;7aFRHLj45o;T0X688;ywrGgo{f6qM=D+Uwc(;OM@VvW;DJe*L(~iq1Ew~dDwFZ5d18-k2VfvudsC>2%{l?@>}00hcnS93w?WmHh(-Q zaL8&i$2*uIG;8x9MdsaMCUQH?oO!vCYU=>F#HZIoz8SASM_A+1srI0B+aC_J? zgywVf1XS(QwdMD0%u-Rra0UQ=gc+@>Qh}9Nb!2z#qlxjy|D|J@=F4_7lQIq-V!xtf zW*r7xxH1+qcyQgRnPSvgqgg)F6yJ}PGu8Clm_H8ZR*l29q#DI}=YFjau$kBXo4!o0 z+nX{8{oLQi^LD>xXu5V0Q0?y4S$vmoc1sV>_+X&rRINP~Ov!+Z%Loz7>wExSnLR?6 zbI=@__#S}HGcux(k!89J-QR7B3;`nJ&}TH^{6BaY+fw!3hK%-g@{y;JftcLwcJqOl+#T_e_2LgpYUsw7mLInFaL(Fxzl zOC)Q#K`4@t4CKOOvMR!CDY4Ll-7rLvQ(hn?D5z&FCc*emj2{(By9jZlSp8@+aN4dlj4^+y-=e-c<>9j@?J;fi z=26%roh#AG|3l407yRYCIQ8>hj)oOmXh9hTxs4aGCq2p64FyVjW2TY{!J?pV=QzxE zc$kS+-DQ&RWtqZj(hVZ-H5FUn-mznqOVSuj?Wve_DItQ|As-P%8-5~54*Y9UL&N~7gnTX>Y7txHlRjqW?Cz=m*Mln%~rIicE%0wLQT zQalN{xJ_AkJqJcLZANDDX$y2SBFcuo0a6ehi|V|tPh4tX<6YB7hc03sXaBl`6Ag zQA_9)gN&RyZ{smni;z1#LN~a_x><7D`tR4~O;Uzfo^eEb-VP9OSY22Q@lz%wBax+B zG=t79^B|fPjc15Mess?F=*cK2S_($r!$;CZkG$<|E#&^Aw3G~!C~mxs zbEnhe&&7R*zD@<#_3m9LsXNzm&r^?UUDJ`sG7VwxSaRE)96T^N@N4^4zS4c#BpxaU z%&43zp*JO@-Sg(Kx30UfvveO2nYS$wwn~YInsQE_r)RXpk2dvH3IG0n3V53=l~78# z(K%ZMy^DH2R~>N{pCU4DGx0CU90%4mqrDjy$f-^BbqeyQS5ck=<77!2wY}RL6}=w@ z2%-;os3;H4ON?AJI{3W1Di3rw#%^m;%%Xe^NNr1kqntUJtx7hVf(N)V_0df;*yJ52 z?=d#so<`I?eqPPJZsR{)ATjIr><)aH{5U{*uQIy0m>Ep!5mHvh3X|IaXU96ANWak} zu2_0C-=S+>$9q{ctX}h$@2jp@HA70#c3VOCTN}ZFMK{Zd__F3855|GVb?e7hFCNmWK|wJmcfzdkbZ?@g|H;I=_CFGL%z3*|}tUZB52E0DVYY zX+Ot&KD(zPak;Q*Yb1*3NuR!#=IFOqfLeNBqaSjOt%R8_u_Y;xB|B2ThgLlF+{|;( z>&4!4mD&c6Ay}m_IA2FX`iqvYvbOJmE9v_3>^Xpyfd8L%riH^aV=|sX`^`qA^p!I0 z$1Zk`*@5Oi%Bq9pHK)TaMpkOiG9|Vz8uHUw;R+3DxLSx`@f{|HnEkjkjGRXL!cM`3 zlxk>lgN^*l8Y*V@yj%u%PL9%T0+T)4=(R2ed@B*rOtYFRPd#oJZbLF3M^t~d11?vo zt)TN2NBxTO9nV{93+i}Nc{&F# z?s3;ZeYf?t<(!VG{0ed9>9p6PxYicxQb@lCs4X_+Hb9Z@2Hz7Bp3V62`A<3WMoRw< z)#KVONi6;^4?Nyr$)00yIeks|ZDVI_WTZmD{;9K*w$e!E*=yVW96_^s`ZWjp$ryB; zzKeIkJEF^Pu}J~OBYO{8pVdOp*(@IN=s{^ zy@@l_xd?l$P_DeC46DKGa*iOZt_M0k52u+=%53KO!FY0@JrLQmM&&~V=1q7ejpXzu-nfW}b0xBOJ=yZu5+*ASBt}qW9z>4m zW~bN2;SMS4>?tq#G&=|pJ=0{{NW#YT_?bmVbS3}(x{{*$sb37> zg_KgHv~o$UVrW7gK&}mQ;|7r+^WiKHR^~J|3Ib~5q-PskV*^uKl#n$Qin+-LJ6_^} zQ3^Tx^-2~uQUm`RdPtNruL6Y^^%(p?n73RKCtNtfoZqeZ=3fKOZipQNA84U;yxcy; zCMQ2{rHU4WZv}M{%-bK#0{2W_?L5Ur+B6QAr}ZO*IH=1R>M7ttZYTQN%VzQqj*6qGKRPe4mRYKlK;OxC3Wfyk zgLj~}(QA&I#KyvE_#%W#hfDs~!gwQ0r9!Q!eY;4d?}F`-$$3AQ$Od`GY2gjG_l=V< zn5(;-f^kY{RFoPLI#{2opI-@9nc*YCb`$_MwAMVnV4?}b6&}GnK!pxp+=!jwRr(1d zSEa-A{k7wY2>k5IcdG9x2b`>tx25K$R@m*v)v$2Bd0`Bd{^U^@IIb@Bj-<BV;*tEp#^e$r7)k7m6eqT{oyXe0GBk=QvsWR zFd?MPZ;g801ynDsgq?zpCW-tc11@T(opbzkrBeMQ?`p>E5wAA0My(D4$*|}JrAy6g zneyk0yXo0A8#uz3V(hq?O4?p_n5w-Q@CchnC;ImEfF6@)LMhGaXZA#719c!FIR`hQ z4h?q0ckS#j7r!BrZ#}78c9i)bqx>`8PI?*@1_3gpH?kfmdwz9wNdemJ7+~ zOMPd%_g5GAL#7K3O(MpZXA7^NVUy-eUfKS#blrV9D$D+=M+3?jPLx-OQpn^VX5Hx* z*n^Iou+2BcGoj2bG9ZqxJ&EN>gN=cU)I zs@<=7f}B-o)T4>9onGnoNBSKJ>Ig0qV*Bf~#GbpDPZh@d{S{6vyr9=I07ScmrGJJ1 ze!$H!WVfV2A$^HG2}?_~x=%h!C{=TLpA0!vU(Qs9Np&|q-;|$de|o8a-0e8dal*K~ zii}T#Ju615wfT?4E%V>zOr{LrJ)9*@h4z`|70d;D{tU3!5LN7w9=<_L4|xY<$8Gdp zSO}@cTSth*2h7@x$j_bA+CCPRpVz&o>T%&df5+$4nxk{}O01ieO#?NF6Xi+X=yp?P zN(wMiEVw)d9sm_y*A76%Q5;3i4tdfs@47g^F(k99sz8x^TPs_v#5Se-o9e@#1)K zq4Tj1#2}&t^vwf$djt`WLNz@lCHoi@OtU~gXOh^Llb3f2mQ=cH^1&;)-*NQ~=M`Du z;b}#m94R_@p$2BD9CyQ2V}1o z%UPiRQQHH>el=lj$|jA;8iplTzD=c0gkemLFd8&P+FA3tl32CuOGc1*W^e8T%W>D& zDrhMJsm_)D3fhWID9?RBHDIyPEC`@_qo9TgS^jJ3@BIa-&|gAa+(WyC%w0O^_m>d| zq~!RSp;CS&iBF&UR9-!mYuk3JD9x8HhJCWHP-u{sK#(DnfITHeYpC&S?W;J3Y?)J1 zG>rDJd4=>S6^0DRSmgt#kU0Y2`+5s#3zR_+q^3 zjP}NWQ(@A0O}Nh2V@}6znvxNO#xV>mESu|z`lRS4-d>BZ170Y+cbVbPJ@FuU(B66G zv5Xxh2@95-LkuOCa)-Q6T1C*(O&y!sKciH<52le&NK>E_NDPX{z>*cU!j^H*;P6_b z={5?Nw^+!hHmLsj#u-knF!C!e5!WtOJ_4u_lnd1eFyoA@#c4jetw=~xs%fKe4S17t zypGD}6;N3>9Fn2>Q6%5;i>b}D+K7dhCr1s>)Sz0@J>W~j3jhTARBL||3Te9DNChtP z$$+MFd0XLgb6_r9j;PGz`!xK;ZsVzb15-$Soxj&Mj-r0`9Qqrm_1m$57e|ari#@B4 zJ56H5IHWn3k|f;MZZ?Sq1H?l;Vtu7nHHWY1)-(miY^bR%(Y|>q_ZC5(b-z!RHJall zj(XSiB+GR@=KU5W$E|`Q4l>|(@M5H%6LFs!s8lOGe zm2;8gC>ZMHTSC1P-UWXSM2Z`HNp0H?U4BK!{L62zR(!}|IU!56E^}`kY@%Y-BvkG= z+&m5(tU*$BUkRl{6n9_b9qF((7R;<%B%R>*-AUlTt4TAOXUZsBdMG0W8ToGVy`n*x z4q0nLQ=UgL@x#rtI6V^Qq~knUQuj}MzEXYL&5RHmo&|iaT92X+{tZmH0Q`D9F)TUl<3Ue=6v(8X>x;$B|a-}r2Z8drb z-^q6OXQJMU=i+UK>&<^bkwD)Mkt5jc`ynNt-F;QI%eXH|nmv25N(7&u%3pNdsV;+1iz&As?xqKK^c4v~ zh1Q6n`<}R1CS1}zcIEj{yEqyjrV9-swouDwrtloDbcWTPW!{@3juVx3&Ea3;E_SOm zi`SwT?FK9Aj3*7MXI_=~SEZ+xX%<@*zSl-U1Ox%Wqt+)7USiaVQhkx{0Z&@F4E=RB zdF7SbUQcu*Ig`YsN|6TWnOF8P+2Kd)jtZ;~yOZX)TAdt6@aq@>OIb`$%D;S;p`m}i zHwxl;S`qVkx)cbB=X@w_JbB@Hu?L55*On#n-YsSU87*|@9p%U)4lXVx8ChwV5=c`A zTbTy^JSqTb{|}tDzwIaU|7;5gww4X&>zxaPz|(=j2af#du!pe}TiFVV^EE$EJMp_P z1F^v~K05%#x$*ie3^r02{RQJsjG&#nt!3@!!$7xxP}#h4oh8V~aI&mf)t0Q7eH!0z zqnbWpM$MrYJ)f;*s7TpKPJK3zA!^tINQnCV#DyfccS;T?^Nq33lPQR#ixrlpx6(gK z6qE}%-kh1M1^}SV+HH%M&<>F9E`5H@N#z$51T5K!es0tFDt4ERu3X9SdXO>aL0ZT% z3Nntsi0EQ76c`!GI9C?@^KVRirgTrXPFOa(eI05!FznJ27tg6V`&1)g*3JJVF!0>x zR{$NG6$IZ89&0pU@&@CD3 zfx__G!+S8mY9?@oxKX`?NcEdcnbOspxq0J+i&gO>gx;bl+x;Ny z^~Ye-e{bONS3-Z5Qb?%jGTOP8dR&~Q$k5)6Yp6a^DFczMTy|>J&gi{>t4ueDwml}u zXfUJA#k~r2*!Y4V?LV#E$4?{GOrXO9@fX~Isw(qOPfzRq#hsuF@Di>!NP$rbdaeV% ze2Ga;mXVZ11bLSt9G9v7OZEOb0HbL=OesqgNaaKHN?wo|VP+?~-*#~*OnE+brqf@n zo9PK2u5$Rkf9{!RpA+8QN0$7n>(fI8s|GCa?JYEUzWI9ITR|&%Xq9~zVOD=OKr4yM z&35yRcES89D}m;eU};V-hwj|dR?o*z*-J(3pLN>MV!?($z%^%fVCc`E`W&<*GAjY; z=>vIciAA(lj>{nmkHMya=;pqv9_b85SN~O+KXAk?--&sDU*d^N4pOt7=y46AI~=Bc z%B2xr3B`-1#vl-ir)n)9khxn~c$!PYh}6xIBl2yKYCQ%$UHao0JMRVI-`H42-{ZO6 zOE%_ZtZ8f}2t;OU&6YYzOXT7k#}wq*v`Ekk{+iGwzS z_2I&;_ZRSazZMl0xm*e;=od`$+~Gu7o1Q@>zT(`+=&QhgDKE_qz}nu-;Bp$YmHhC& zTzm5jUv!RTaR@45vNvldAZ2&-C!$*A>%OU8I|pR$a(3UU0+wW;~3hz?Ch0_r@^?uzCOq)LnVDKN;QS)Qj%qc&?CMPc*ciDWc23lZ)R{m zUK}=PTxi{%OG-&rOxItenfUTu5KvP6nD%`7U^$DJO-1E?+%x>^6lewQLB|LIvXm_0 zm#C1)$Vd&wj8>POvDZLM%nOznFimeFr39QwKto1=95$Y!4v9S8`Mp4eOwMifIS0#w z3(IJrzl3L*i3;t9zI7$Tr&_e=r}A;#Pi^i_f0b>jnR)F6`H(#HQ^SCPTBKI`_T9B)o8`PxB+#_-@5(CV^A<&$4!Nfj8%a5?2X4Ffpq4B4qz;1TEVf233kA1 z+ZarrU3Y->_%JakHt7uo3F~W0%0yS_>TVy9U-ZF7Y2hr*A)Q8in-^fJmF(vSIlKSu zyED-P1?1{Zpllgz=->ML;~I1q*@Pqpu-TLPJ784@P)`s@s{~52nwv8!D%fci(!jg? z?GY1MTTBn+M+^pdD{N$50S1VNjmF()RD7ULZbR%@%w+LeMuzDY7A)7Q`lCZaw$Amn zdQ4E!Nanq3HeJVn0LW-_Fuh49#|VWAA#Zd!x#&+<(g(j$&5{XB41$kf9RMSvuk=RW zt7m@-x<5YLdw(c^^b}sq4M^+#_=kaQEmH^yr2|qWYy*(yUerppnE14pwY{#@I{7(> zP(rDkM;-q@6W~F2q2GVcM(J&jY-)2NW zQ}M#fI=<1Qs+zjXR+s6%`!xRO~ zl4*p5?kjK@d4=&RDz#ZW@G3%{n{XRpZbCx|TScwkBT70vm-xn?qzsxVhwWnmS|AAO z1BWbic=qQTL#cF|E`rR*ARBTztw=D*8!3f~%|h&d2EZtDC}sax1Y(IL)&RKs-?0hA z{s8-XyE+{hO&|~{_J9Bo85KqDIf2^wY_PDnc>S{F@m`{&95x3;VQ@F8UZVfL#BLHl z)lbj$Nd((W_V^<5zww?Ir!NL?-Q-LWu=A8gJ6BBz*ep=M)*GbwRfolmjcFiwxr5Aj z?49?Fo>yYpe8{PH*BPK4R9k@`cnRSMj~7P-OKTT6npRODkAhAq1LrT$90Hj%%Ko|3 z`T-0N2sU0HG@cHI>n+An0t3I#RIlxeIV@k4YZiY@98-?@cxr_bXYCh`pNi8U6iP@w znBX^_0AEcrRiw6uFz%Py5n1gQ4(_n&v}K~gDY)IKAVl%T<()Kz6iE3w8bt4(6J)r> z#)gdJioH~7V2ka~;muyzQ~DMxL>C!RQF0^gIUY!$QT!fc%93`|>Nx#<(i7( zC#Ae?r<9P^c9(`@RTQ|lBk|RwLs@H^+|1POG;W!f-ccsvzndCs zr!LBMj>Uuy5QqQ6?#R=ddOOmcmw3H{1}BCjaZ8hVj(zPj6j-@{jReS?4vQ-);_mLe z016li_kMvViqn1;pA6D0ROI|H#sp3*UuV6xpkdp+p%Ca*uS$P_ELkV)$KKSolpW)%DUjO}^ACRugQP!AYiz$c&wXs4zgSZxSg#JcRFT=W;svHD6+T*D+H zZ;6QYJhp$jj3S|tu7My*#M%aD@JB=cHz!hnt{F&~!*<%}u2Cnjzfxi= zWzZf_QBnrL6l*Ff9Z%2%Vfg?}%~ggbXYVf zT!Mmx`{dZNyn7}@Mn{YlE2&Q4c_CBKzCdC|Wk%qsZq8SyajBU;k_N=WaY_4^Is0>8 z1}sdp2S8qhd1HWz1b7?6HkfJJZM_%LaHU|(wxv+5l zuHT&C3HsT))KW!%sM}u3!s}oKMW)1@bw~m1B)~9R%hINV^}fW*Wrq6D@ZOJR=C~@Q zd6a9+VVKrMQ<}fJ(6>7uE%o*Fo6n1F?Exf(T5x#*1bIh0g{31?Q@l$7V!nWQfJcHq zWAPk~WHYp<6)UKpa4^f51Du#4urbLQX}20G|G8gol${-Z6bD9l`#p zWIfFsQd5WmO~{|X1Bu}opf3E|=;e5|TSiW9Z*?Ab-(3KVF7Y zsWrgGdHN;VtdVG_s^PpyGow&c9RpAi++L2sw}CR1_4T)yxQkJh)`KUrNx0tvDg|Ao zxjg`zi;b=R-FJ|1?A_eJhNDS*jWXw@FC)My3~$u+PL19W>gCjYo&aOs91 zJ%LUO-2Hdc1s;7gIPnF0eW@UeO~E9%|I%KF&%azGls%6NzLycIhXVNRU;1||c%X{W zv#SHM&Q$QN7q*LwBN9XkN=H{e4F)SRyN{?9pr@lh&T*+V*-)U4m9*8q1CgP%Gjg+- z6Pc%X?TzqUgXCCdvgXa|a(Y}K#Islk;q4HyCF3ZiiOS6uVjbF^nWQ3+~YI<`1KcQa9oZ?YK>N|w&!&!kF6;%&%AFg z%53&bQ7rNw8z5`TZs$L|o3ugBwy`1C_vjo|XX1GZ3trBZ@Pf!=JSSHz9*5{sU?f=+ zu(`Qn_cgw;;DsMf>buuN1hV$0o3#zR$z$p3Uri%(KmHdCrghG(Qi~klJM%&2IyZ1k zN#bw+OI~`}(D1$|IzjcjPaKhkP*;44-! zh57=ugVff2DiVPaRN47O$KcyrH3kL-V5fE&m2}~1OKiUKn@t$v<*BiI_e*={Xwf0e zxyG$M;1=ouMm@*+QbPW14&D&$i;SIWhpi-V^qBhyUu`wU&by#5+aSxb$*60Ee-KH+ z8{Eyl^-0*#;k8ynG(?}};>ymtra51x_> zU9>(ygQQ(%mI(BLQKbzG{sOzg(1RZ9#;gA6j5S3fF=f32P+Ir<|HCsA$~J~w!#PsS7B!s(s)f8jqYoHfDlhdEnCYx`?2`7J^@9%|HJw3POq7py z)xO&^6ItDxo>&ZK)Txb0wQbhqnw~6}c(XlHLZ&#eKnJ3!ASkm}Vx>sU@rWS+K>bx( zdN?jh5VYL%2zrpZQ4=d}BEQS;cu>|W*ydYNBm&H}51`rup8cP|em>J?nfs5$AGxd1 zP+c?qJ&9&mPFGaUO+kC%yPQ=RbL0!UuKjV*z`#H-t#GYMy#!9@p!9tfMJ5t8V7dx4 zF8?<@6KsUcVcT;J^z5+b2h;c( zA0KXE$ay!ZXT(4%5AY#;O;3N)ys*+4K3#5%q+MgP4vyx@64-FbaDS#65DBoz$P~fc z=<%5B(H=}LttNk|@pqu0lP#@`NyBy8uu;>(yfK!yq%^c_tGr&f)89q1W zU`r&}sse^z7@C@z0Bm6gLlg%`ZC3=r>$P}brV$P1Vz=oT_EuomEkH^&F4xHlUyYFc z_sM*I%(ncVYH(%o1zh3=FCCHDJ>!2*Ta!vb8_&@cVzz|)8(4AM`4gyF3>ed%O zJ?EBuRX3x(PcQ#vwrQQQ?O#B$#;|oIaAb<>r2?-%=y!aXuOKeYKl}}kx$OAzxb6;C zpL`_$f?&N;k4NZ1NDIqsAC35wZ1_+b(ZQ;V`R8fVg@C?F?ct*oCX%2R00%W?zCASFZu=UIm_{ zyOT1R>lW{;S$p2`DSN6N4(eUoFPXjSrQD%}CKY?9!cT8*fiiB^{1faOxt{^c6cJoi z78WN9wpLah4+*`83zw>a=WpI=U`0n=whavp5mC+{hW&2Ko-aZBhpFbbWtEr5iggo( z`V1(3bAEoIXi4prlgT5l^XiS0fFQ4qJhAZfb+$U%=X}fivR6l;A<`_t!6gA=05@oH zbhIc!@G>!p?4_dC;A0cHYfRFvao}L z$zewn2QeQ_{pbtu_OIRvjg}AvwY0SG2s#New|94M-YqW=brW8@dJpN}%}(C3$-#k7 z=3zgUwI2d)Q5ZLFELa-GTX@V(EtJw26oCJ`PWy0}$*rqm2bnsz|6!pIa1-~jtW_rf zteFjEbgJ>oeH)W%Rv~N!Lo0v??Nl)FzeGErb$cB9Ng{Q968r)k)G7i$(17L+d>JWN z=V_mg-mjlwsDDNyOUus#X5zYjpNJ^IiyAx)*S`Pa10N?uXJ<>S&n6t~Q5feS-N108 zwUagRH+XPxYxKeT@%u&FXb7Sh_iHz{*G@r3BDV z`XkD{Tc;%O(NWOTgMv$ZqNZ0$it>IjzD6_{_YUosZfxi?*(LPQTM7$%LF%>y2N8a} z9x6nT5bq$O1nN;BPOE-N0#oreEk88!I`dYRT%HPNpzlcCKl1aWHQo%o*_$xDJ5KfA zpWxXHns9vIh$j-zk$N}%xZmoici1Zfx8S}=w!7)g$T=L`(t&tV%j8!S3a49gJ8p}} zE;1HffBhDZarYV^X0Gn^hmP&g?mV!8tl*-7(i%k|>+bkl-CY;0`fQ9CjS zENp<%uLxz*k#=(8%r%EK&0s6i%;VI>yC7K5f>|063%V&is!~#ZensuXT?$r2S64IH zUp?ZD==V-xnNn3Y-({n?PwpoNk4~zV7u;tp36n3nNB6nsAY|$0lt2@lKU8I7|A&7!zSLl zT7F+4by!t%2%OqjpuSOfQhhmVpE>-Ll$BsA63aPomez5#mgQX23~+yb zmX`y^Z!(1p!Cn|wO62ic5j=k0>O857)CwaP06WgJMH))>FYq0K0G&Bq;7@Iixqq}V z8sTcTDm6cgdOF8G6P;)j#9_8baOki|v@6wH1OIyOXt#Yg=(eJtKceM6IGk8A5gU{X`&R9%oWhi)YhUc%maSy4u(G2b1tqZZzDvhfR(~ZmJlm7VI}s zt5$ith*#=Oy(2vHyr$8$2H+eR+wmS&GhIA3grX_xUzw%wi6n)4&m-gMl+cM$TN4EN zk8ZC4OOp)%HW>gDJ+BRpOhaG@6G0-70C*Ti_=sTlBEx|cF2Ikw4-O4MsVEzExDNx@ zr2|m*KHP(AaQ<=HrnGSR_jj9MMDwBJ^=Po)IW_=b%)s02GiNv}xbaRyeEDZQZ@)5g z!{YidDtdZgFmS))SRP>GOqwV1Q+KQ7eGsNq)#v*IT;Au+-FVGvI#rw8ykn0FoiNcr zA;f9Tg0sK7+gA}Yb71=vhnV?KMU0lMcTH1?1oC3@+*UN&1OhWCzFgtIfC3Qs`L14A zDi(;|Ozlr*d;|vqG|{oP`qpPHg74Zueqv@~t!iS82fqq5(_l~#!@fhMszfG3aE<{7 z2e;W&VVbCYCCjHq(Xj%3=|5uvAV54a;u-HzYf@1%ZYzAiOB4`QVDBo`!x`@r_1dkY zTBF7d?-V!z3ByxiHqF(I{D2a^L!Qbj$)Q-11RU6<6#3oVU6}^sQ$)m*mB>e>^|OjZ zn;Rs5e}ABPCI+Sp86>Am)@2(QA*qr&ZrE)|S6%oblqK)&fE0Xz#Q)QCRGKF~-`QvoMV_EG1|Ksft_195O_J==XYQs}myF$suvZksA#jH)* zNln_VO~^%htv`{=aVsuq@^v>ZEKNPeNh%Tt=hO^~{fc93aVm<@)sgPlhIihuAWx4! zuSdNae_NSc^c(AbrZ=~j;yGYWQ?0p<1bwA0?RK_rOIth@&OBXCySz>t(&P}Mc05$p zc?s1ByENKZZoC&v8+y#}*VuW=LKbXXY4?G!alMPn0w2KY3@c}-*`UZA1iQilz#nFP zxG|h1M$GRN^5{O?J{h%;>(>OYZF|R5O{5P>zt3R8r*~OD$u$34W8uK?`gsRUI*c&V zs78m@r{Cv&cV#a(x(0;jvLY-kckGXG9vqLSTLQd6%oanNh^E&e$JzyYk4XRJ98`8@ zjE@NRn9mcm&WZ<<&$@z2G&+SejU8SKQ`4XyQqc~ewu>U>YX=m?q~v5nQ`3zISB|vi zM$7r_ee8r9B7nBg0o43_cao*rzV^5a_JsZpx`lgc@MvOUt`Yczh4-0DD-Adai@y2~ zLq|bGHss(1FkTUOd*&t#hwJdFl1a<;^~bZxVr?lctr_Ln*v>q4Tt!0MZl*)>9VdsR7T#b~j^T}VUlwZ>i3-ABXY%ax&N8`ZQ55vN&@ z$V+g|ET5F$sdcS1u;K=13J;y9xobSE{aKOeNa3@ZQ9j!>>Cx#Tcpz3zYJIKeYgZ;6Joyldc6drxld`XUZe9;ydG9ji`1KLlf{l{ z1`j`}EKNrZ_U%pm>$tkFC$|uNZd=a%`YkGL=C3b%<>@Av1(XbJya^wjS$l8J&Kobi z74-P81Z=!_Qt@U)1&X%1Fqr@mB#aP;Tp)oHt;pfv^?!*V_i*WU!ki+dJ6$gWY<<-mkzW z<*=Jt1SU*$2)k7nef@{-fM1Tq`OyKJD8Oz-_%x)<0R#ozHkI#}qSHOIrK$M1iRu>0 zEjPpIJo77Nf$`fKXON8Uuk+k?&W)KeoU730xN9to`kC47FzS+F#O~)cNS_V~8XVZ_ z5%;GngTWS3m4GJ<6o;ju{8V{4q@|PLle2Qh-Z&C`r`;cHtkKv`Ul70Zt_HUAe;P0o zooB{r7xV%KO!K%u?z{m!XbjE35#~$y8rwym-cxYCp7?>-JvuupDoJ;I<*GOP z!F|TkJ3_m_{G8hSf^$TJ_s`(F-9M!>E4kJ~oYwyrX>T1>Rn)bQf(S?>-5}i{-5}B_ z-Cfe%ARrymEg>x-ozmSPAl)r3ox)v5-}m=@zrXGs=5na@+< z^0602ULO>JJ;14|{@r+{c0Rz_Ttdxhm z@sXM;?6tAo5`gUWSW)94p}qEePZ1ojd|0O2!WzB7^7YF-RBTn+WV#iiZ7k7Vfr(-K zTl~-S#-9=@6O}aLLZ>rKzcz&CSO#`=tW|HP_I$T0w!-fp8Rjfj1muN)USVI<_+I4 zPCWJw-ebJ>_aYQ7+?2R%*g?&p-#5^6OC9CQBs&$II3Tw!EG$8TO-YYx=%(K+)c`ZxNAha%)ME#pH$G*lV4>l7~@KR1VWTEoHl{g;p{vdw{lpemaCu?$$kdpS!7SY6=RIX}ALsce?uHbH$p66|O-E#Huc6rv?kpXjX*x92 zDW&U3%KGw`_aYSp2T4mFya;8J*~7ExZuO{}iYFK1k`PFu498}OMXs9^6ztyF=~QWV zW|QGb?~zN7b-ikC$K|dFtR{dLquKjK3@=HiW1Z})(j9K$fH+>=6Pw0nS#t2Dq!y-K zSkA1-dtPWH*L;>WtHAo3jMWmCOhlkdU5Mqr%Vt?wXL!=7h;YJ;0KJt}a<2q)qJ!oI zz@DCh*EdZk=jkfbxVo28atZ#oY|azgQ@0=fjuFoUH>0AW;+B$q zS1=8`Q?pl%@htLrkzu6L&fRaqUvs!Y`9FRiy~uX8bTmd75Y{M#XP0yKWr3fv#Y+F< z(MpqI%)@3RAoWc+d!ir`g@!3F;b(C3`)^EN98aLlq1d=obf6*A>X2R(&=Je_V?x|0s z5hEq_1>-G4QbGbuWui~xZkBf=KqFUFkWpgxpgsF+YpUmT%i+)}>M}8$Q_#?{UK7e&rt<*UA|0JN{t2=}7C0L5#nNo~D}2H=e<>D8IKu*7*zF z#GJ~kZ*b-%g7qs-6znZCtt!0O^tKy)rHxG`^Es)<`5Dh090QkDN{BntFxpsGwwwpwM~_VWNj15H&pC*U*ivN=e!WJ%)u3n`OA62z208HnBdjWkFda z?2ddfS@=@xoyav?AjF@QThSI5@b&C2)5lk*WFIi;YXMESI@L4H{ zLNv0cfPo)7TQ;UBLC_D}daIy-3P|1r{#;B!RO^>O+ffT(V{J!m^Ub*OV%aoRUaoe{ z2_B(JRAiU<${^a6uBft0)@EkrGok}pdEg6{F>9NcS8*gm`*@`IdOgnxcNj-#^4$G@ zi(qA+*KRVCm>XhDo+A!&L-oDjaAUVEF7&Gn-d3U6#5IuQMa;~A>9R9 zRn3kQ*9f-*tmIz9SjAMmBYSVTPjwX5X%(=l)H(!iRl}QGHbwX0Szav^py$yoi*pYu zc6CzPHUHyEp9G>LKi%+9zay)Ntt-0U4vsGK?!z6qkwoEC)ikG)IdtXPNW-M|q!{b3 zUiDwpey8|Xzx7egur^BhXM207#y)3;vbUz>w3(ME-3)4K3h z#Z%(oZ$@1^=>B)ocM&u%3vu)E7E6WchF%>l_5+lU`sh_uObmn@R9RiUFcakR!6W@7 zrSd||v~FN{SOxuW1XKRn8v7X}QUr$<-T#kZ@$cC{{ zroSCx6~oH%Is8Etn+}6~Hpln=YVQVAVj+QNf#hE(CpgL96F3p$5fhuaxTpp|NGkxZ z7PI^-^rkCpEG*g=e@}gu{w@;IMh7{xUR#}#Iic{+Zem+OLm)7~3PfoCzlOcc-lS-N zVpaI$hM32g*M`gIIM%SS_6DMfy^OcJt7d}#?QDNl8aDx;4PID7G-JsTu`scC460XC<8(XN{n z*{=DB3*1L4xIq)rd%UNcm?tS9yK1IoZ(%{h#Ka`0pim9c_eB|@*NXg7sdKBL4p%t+bwp(Q}5uTUOYM~JhHj3fnn<0uge{&gh7KtwR! z@XDAl0soClkN82B!VsfKZsb`P4#sqAlov+Nl>+9lOx99Q4fCRC#(uY?qc9JY9q<58jTP|vE3$l6jGtCErpVb{My1vpUI z9^(acpkvizFb1}1^Jk@gj_wq6(e8+9P}WcHPjwGkF2C(9V8nKbhTENu(;jzs7QBH` z8qy{Tg86p1tof#ag|z!nr~W0~ot5)=>tP`r7uxf^7q<@Ep}()wO-(O0?Z0(TCw^%@ zA*=sJLPfk)-3Z!5_YMv=fm+k1O7`7P-Xd>6lmtb~%=}^cpk+OT&;$H<1B4?-0OiRD z5=)E!sCiy)?nl5TPMqrZKmpo|Afn;^^YdClm&J+`02<7{daDpkA}9mcS^$k2RBc1U z`Nfptc_-Qj2f8N6I#AKlLg<)nyW%vrut?Fi0etrp3kx!!K4tHBzX&}rGNP-!+R%2% z1fWC+LI8VM@^?LjVW3saaL&`2Ug1>ZlW~#smN{n238lX7+l<`obf`mTM44Jcdq)&A z`I(WjvKbjk>8j7X!`P78ctn^?Nv^UTuiGjhSdx=beR$AJhaRCG`Q6&-RMu|3JCqE+ zwgWz+e0wZ5?^AV6{RZ99m-0O9ClS)Y2n7j-5ZaPU%ns8qV{JkrK8&sE7tfzTs$4$D z&e@xQ#e5emW)9|*NN~g7hyV_Heck9|Cm95;3qyJX1wmx!U-CU&6bYYB%Cb0uY^oD@ zF{3<9rnL3Qb1(M*J`gGLH~`G~4W=aXr>7AMp+G<~1L~AMx5EZI<;}+%puG3Ds~42` zAdOgwmw+77Ztn!rL<|`InSAwY%u#^TrAdy*f`X(|COrT;PhJJ~@3c$wXe25hY)~_` zHPd){GgL}2m(d(N$wo6{n)stbU%8&|&fS*E`tj_UyDU;KtUL$o)ZlrHvL&p;27)?z z@j+1&Z|}^$02?*@uVclHW8%VIud8WohQOOUq~DxJRC$d_I1P@;#mtq5j4&xh;iJJ! zE;JytaWtypIc;*X+)wSCVf`|L>ZBzIx=;nc>j99onF53-ScL4nyn}~_jDRV)eRVuk z=;9Sn&jIGs)XeM@P|HIwL~Xg3kN}P4!)av8v1`R9r1tvB-iM+cz+!I!mtHT(s2f2E z0VFMiD~6<-6|8frIH?~~Q-R~VkhuwJoWIY8S1&Ng%c@0xGU7Ex(_orKS0te_q{6*0Gz2#)SBrrjTFXaLCWn2S-M>Zg;aSTwD@C zir5*f0q3<2Xjloz6WSthn%5Bs8`!T}0RR2<9CeDobNoC0FDEGx{y&b)`qIu5atUx~ z(OLU}>(V0r^&lWmLq79io54T{>%Zp^{~GhZK4@WXjs^SglP|SiS^`og6)drG6Ch;& zA4hN6o1Y2#)s@hjqHPyyrQiH>tk^Z`|8sdd>)8r}3fjN73&|J#(D@&yT;_YT9*X@x zSFi?}AF~wzM?@kZrJ;cf5UzqIOMoVdAGa)2nHX$kAlk^Hjvlf48qItWJ3f=}U(cZ6H?e z@y|UA&mZvb>8+3K`8RE?0uGzSkfMT5%ie|fb5@gjN*{&4^Sp_#y7H27I+{D=#ZvV| z=p8jfVwJw|rW>y_Y1mbsoO?TxK}u56U{b@4p_Re0U({iq*TV4ni5EMss47Uenb_No zcl6N<(Z+56ZJ|unzgsEOW;pxW3m^~47=Ul2P2i1V+i7Vg#rPYEey9n}XGD(a&Id1e zVUT0$jbP&i>#%Tes~Y?g3xhq&dW9A~GKpkd#T&~YQSU8p@;^l=zuI^H9LDn}N@3a% zRyjx8N$mqbXo15tNoN8FZI|Ff&Z$P^FR8@0rW-D%Z^$JM(KV41#26(QaVYjKeypxa zxL$1#!G-i{-tZF^nNSc#B}nNTiVr>y#~*OoG10>_eT|%?A2&_Eq7cp$+7~AJio8OE zJgPwew^{FUpdbu3qH^2I6Fp>z^uJgDSH(K&U-VT*6=(*{0TCSWCJZ@(!GAOzzA9(8)UuLbm>OnhL91JonZ#N`o5Up;1FN+1IkIs4hO^FyH#}duPO?0N%2tl!ZhtP+G()wN2RkaR>RyWJ{W&Z+m3KRbYB& zur^zvznk1X58*GaZ9Ch(;^6*a{d|sJEgV)VD0!M&W9@Unoz?utYlOpP@dDTpP11l5 zUw^A^Xo_D8Dy)tjw257*DyF|BHdo}Fr^I`Y z!rGw@7b2+f`%Bm)HXeCtXCS}qy{>u+w(V)9z+R=#&Ac`ja2ht)4IU0tT%4m9?`g7Z z7k}UE+!OAL=G6;ks#>U1bKCG7247G57x|C$de zvW*Sjvy|{vKqj+3umhP{yyJ^1TOA~R$s!Q`nqSW_c6=-~vH23YvO-IzOo;){8lcLia2EAwj(MRv zUxm#vi5dN4RyRnnD7h`)n9+%o{jEL$JR`>;0cB$yvbz>an;xdziDljhBIW(p(JG~P ztKuGva^AMg^%-8G(jCZ3_6bc-9qNb_^Y)u z+wZVnyhL?XGBE5;o|1bWc8jFYR7zku(y2bFKokZaQ918KYk8c@LS#}>fz#X?w(~CW z{nxbI-VX)J(in7@tkTpN`TnZ4*~iBLw;zhfu3P)k2kYkPtWaNm65lHx&0MXYvUiR4 zguHhe65iYQzGA4;yhep23_UXVG-a+T$vqBgq{vf;IM+&gXUiplguopy9uAqozr=dGzxx zw^3X2z3Zp-;_R5!heqb1BcyxArOPC|q!@CVE zaOi~}a!j5?6iMTP7G!mi)N6ZTIw06Rpe~oPV&nL|p=F!tVR`irafRQXgF5ap8vMLj z1I71@W6)DwI}b8^63mKRDq{M}gA(fM)NqDX<|cJe!wHBc#I@1mP%t+Ha5!)ZQ-m__ zn$+Mc2RQp#S^YKL;VC3wTQhYA;Rm==M~d_ESQO@GZl#H_T^otD4C(q_BF9R7TpuBy zf@QAAUD3Zl@DMsOZ4J?5~QM^-_3wgTH+D4b{2VWmvSP_uN+R>Y6-8gNHd zz$IYskra(GYv$P&AZw2fVe);hY$uR~SRFpK+L~f)h9X{m+}&0dye9HeUTr&Hz!ggy zhqTTC18+szOb;elkR<(pd$V+yeB#K$-&mWWCSZ=Ct&y&jnfk|85f>DSPW(kkA@uIU z+^AN*yX3E9#DwaoDPrE|7T>Jo$XB$r`!YD--QzQVQK92$eji|Egxl-EM-X>NZc^}U z>2_>8ah=ye)TFci`o&d1PCYZG(3oK`#||!P|JLiO_DJA*%xU6Xg0%P-lJ77BDS+D~eu=7=!{X626gh>N&!;M%Nt4;qL2FieG?A_vw3EvxI-@Lrf^ABO z!-xa3fq=0yAI~*BzWC215Inp%Tzkcmk# zp?ETYQ$ozzXB-J1XlxQRlLccsqZ+G-<<}ZoSr@Q2CZG%h{m|<8&K`ZXjMJ^z*UrgF zIS#!E?o)Jhma7L~B7y>;t;tlOJYr(lfLb?Y5?dvsuE!@&=VH|6z168|&^On_CH@Ci zRh$rSMK4hKnp`8h4lw{kWCLnlQJ7a6O0g#W=HtEDR>p>!((p|oz0I@@iY*(&Gb;eC6ahN1{~l#81g-w_<#UyL6W$j`m_RkG_`=VAs|Msd3-OniA z()_ReRY~i(2zfunS-1TNA_M_(U63-L|KCtkZ0ljB`ihC6E#4gn9zi|q`aRNs5-8jn zScZI%#u?DdDd2bC;5S?(bV&!nLwq}aZTx~%o?lv{PmS zf>#hYkN^CMbprZ`E$!?;YHoKwEIExbPAXQ4GA!ou$1hStYQY%9l*=gTgbAK4&$&8_ zh`l{Jx1_#PwZtis2IZ+8ikMdqk1wdDy&m-BEYzoVoH3BFl;+T>`5QxvixEQjWvj9# zsyljUk=X=Z_pZ(GeBuq}kcix!<>c&ifO#Ilt+L{JivMg%TW0ZCP)2kL%PE7MxzQQ zOx21xfhZ2Ww)R(NZE2DW`!@~)&&xP#Z{cWvd!FhL1@$qhUe~YnP!cJMe2)|@s;XoR zM22BaVOi}k*3)$KVX1l>tCu=%EYvZ;(v!BLXljql%6vAQsY@!smwH|*M~y*5j%o4X zs>=f@B^YMM>7>5`74SjZYrtV%_=GnMp$L!O+3M_>YwYU>o-`o~YtKgIf^^WMXPVK1> z`!7%i*XV={-%q#44KA7mN$SP4-_w>9eCIetghNSY6vB>m$K*T6K z{@$^94{hP}E?oQ;@6;YC!n+fB<@bjLPc29SM+_QXUk|>1X)X!+Iip-1|Mmi9MC3av z$-gDqRQVs9=G3ds%Es0OxD)~l#(R5vmjFZ$Jci#Ow+8c0S-A^*owftU3u=>Xt z-z5VZlk3Q(s4+CFt9KU3QjG|l3Gp0m@K@CWvz%gOs|1=FbpJ2g*g~H3E({_+0usdW zQk0q?sRR-lfP~{1Fe*UweL>e0IGF7>jDS7G%`pFScL_B4KvwkzVE(;VECDda(N;om zQcl75h3p4RTiZnk?c^A_mq(|VzoOAI6^u;z9Jp_OPxDlLZ5c9iE5JmvRLpJniUqx|enT=_;w>P$(ws^9i8t~ihHi+6SP;~61H<3;hX#Dnw z(VWGy{L;LyvNL)cjZkjWxPQ+z+jq2~u07Aj=aE_4R>8GxS%>?uuCPlSxoI)``o?d0 zz<@;n=V@_};^B5Y=io_yJXC*Ea(lLfGAt}ZoLdoH)}ie(#?ckZYukvmk=r(dpdML|hTkc!uBXpttIgPHkcYtS!1 z7!fX&PT}f4oglBZEsUr+Gb2}fA&;(uaBz5uw8q7|URw zbdv{3nSzO>uR00g&jtmNQ=q-YCMY;cxOyW2x*|NU<}K9f#r(H4{TFhU~!rI!2)tM9!HUJopC8zX2k|AfL-_cBz5>7+K z-B|V(qhu|I_glpKXIc&=dBnZmN|6-kf;&tEe;VwK~g6DR42qfh3 zdGaEN8FT2rmb+qBjk zzI9kX)1!{dfI4`uklV?=E{`MHq`_K2kqs`VIh1{m{Nh(ky3P}sQF~H5$tWdG2REu&=~olxi;$t@#Q9ZE->#!Z_h(g%y4T!B)4&`7OX5E z&_n?wSF7R_eKs(m1g_>xR5dit3s`)^A(W%Ry5-j9U$b(LMd3nec48paWfsxgJ{fx@ zCWKYmJf?FkN%kcvJL!z&z{MTXrrNEETJ|veS1*;;(AJNa`i>_U_np1yh*rcuVTZw( zsx&xr^Wz@G<>uUanXb=|er@p2ZG9u5b2i@e&1B`H^G^#@KA93Jk1N&*OGf#F>El+n z*5AnAVnS{!oIkZU#rB2D45;Rp(?d$(picw}Vh$6NlIUoGpwlM2x#wOXhmgm4dctk6 z&eY8Tp~COL)olL;mS!ShuZ(M9U!T3r1AFcM*<(42;j<^wC(gGEQ|w6DGe10Ly-4)x zZ8no#P;Iidvn=$f&yFvB%v`BRF1((-)Y4P$&BGZJ%@{-_cSMUW*m@g3@Gk1GCHWQ! zswn15>5B@|G9w12Zad@-j?T&~n**ETr9rW6-Wij|7jW>jXK*}*A%pgWeV%=45#g4a ztjT;{jvIu;`ZvvR23p)JI}#(N#Qg4R7}m_42gEeymd314)1e!H%IVqKsQm|ar~ncF z=xEf1g#}tBCRjrck5tfLhwcwbfM83bpw&n0z69L?swg_x4ozHuzdDUP>0^OHsxqCj zW~HuNkz8Lju0El9bqxw5(h*t|J58$qLQIWKpl5&t;%@o4F+I%e=Z2-XQ@bZhMCBNe zMrlamTJXekT&w?S1GoK4X{jtiD0W>)%Sc_zW4prdi%91!7RndVkH3W&EyZ zgi{{JFmSv4uIwx6W9!$e4l8wS>!WbObULz^*D=43F%8S(Ly0C0CCo&{%EL-aRHS6_ zGcgs&1GFRV`f%<*nrdsYd#xJ&Yi1i)hIk#NZ(buVT=T~~P49HN@lWWo0n=LHEWf%l zUCWo=A~C_hdN5^1@r|>+nNfE`v%vhy(#4DsKUZR4^Zn&a%dD?aaismUgmo=W;zh9p(nuTAu49NjUAp zIlx_2*GxJEFiB5nG{Y*^emo8*V@@(?LWUrD$^LFe0Av>)4foYz>nFgdQ)T-(6fqRq zR7taer!2$=(Wmat!53_EzawKmVH!Kb^*;8W)U*BOE3D=49&e^&- zMOYz-#ft>(WH5P1_`m)0bKdDxqR#%`sF}K|Y^5~y1AQ8mQ_ zUq>jd?qhu?*lx&A>=ES^H-?EEj+k9eFVJ037q8TXh7Tf0ED{ABoY9^PQS(%#h`fqb zdUJh2qMZ@Z_HQ>;W@m}mS(;?nu__X(6$Mfm4~z+k2&vRN)y2q>RTm8=k%2DcloH9(5y>gFhcm2IuhL@9y{JkxWyIFU*Y<6iTMxcgzapRh7%8CIEg%5FR)93`*LW!8xdEh(Yz zT4#mqw*A>LU!+)V_I<*_#kEEQlm?JPx0hLGV?CPxcn!SXiHUDbdpbV1V^$^lJJjVb zy-I__%1He1LM?P7{$>^iIK@EyO^f)E6?NUG_l?*VC;BDMyS11xKM--MtcY)5q`cl? z`Z7SO!YW?wbn2n|CU#f>e8ThS+fe@7)V>VzXMCYJaWz?K4Jz?dQa80;c`N#&_g%c+ zkU(z@F|*_ItNkOj3(7icv8^Ns`WRWdvpEaS?yzWGfY1JkFHMo6$ijUfY_n6pRB00GUohFk&hq zPEjJ#sM~tygOQLxGeg^JgF2RcDOEOr+v~Vz!17Ywz;;ZzH7UYXDM=?t*eXjn`y~KF z>d0y^!kR~2oe`CI?JSD+JQLqaY`~OH%inl)*RLuWt~-hl3f#=`_XFlOpr^j(){LF1 zVH-W5X#Rpouiss`GRx0v7scmSCfq8M^sc>ffAQ^nxC)IyLkQE1YoncXx9c$9V~oqq zpLO2HTA%cbx`#`q0|%yuhs#mxCdc{ro5>tPXOamc>-dH0S{#$AWMZajRKyC`I|7Zn zp{4eVpBQzgnaiN&6^JB+r=-c|<@*QTVC;Rux@1zY$?+=-eqihvD9U9dgdroz6<+Ua z@HXNtx00#3PklbHBB9d_rMAL)9P#Q|F}2&Qrkc4}IrQK=_?JbY2<|v=YfJT?1s9>n zIo#ilGNUOVi3nvGqKMZKN7>ebt?-!e0%9o`?YvMEU z12Tqw^@Vge+Fvg=_Zay#76Ke3(WdBLB<^Bp5|B_UZGLG+qj$Iays9pXk9`ZByUcWGTmE`sG;pRE{@iWtntz2-k z()mgKp`VN+L-pa3>xRZwW+e1l;+F34Tsyy+7XJiGbly&;hP>A6ZI23d z{zgzbOcXD@gGIKVy0sQ@`FkioN`(9{*Xekj6$K((6xSb9Ek8D1VNQUqq)s@0f6Z@E)oYZ_+}#J!*jq;AkYDtcpwoCG;sP1iZR*%3*k&m zMXX#!(z1d|UPWoz^!^2E4HIeD9o<(%qveG@J1Wq9Cborl0k_XsF14|4BMs?x$v(RU;Jr=Iuc)~^F+^Wr zq(e0`725v{E6L4Jl_Qq;grbEz*vNU)5=nWJ6^eD!_onq*P%bF^@2n1{ckS#7rn}w)ys)y{l7>mH%RRR`=0qI;ePYxqpQi#ZP%I| z|2kf*%#^Z~(*98J@gEdZ!+vAkSep-EaK1g}!*n!;3Vhz(+8rH5MzN#tUeB{+Dq#8r z9e<&=yF@f6)=vQ4 znZagrOM#=IHVIAkTFl)$KFTZ{uCyj<2+8Gi?FyDInqy-57nPPuC(hO6DmxVCTV%em zj1}$8obu+6#|yc)d!vqC_o!XUi-?sowd;hm9kYTxeGzs(xAY_bW=!>6S=Hi^b3#Ib zhD~r}cxWl}owmeBL z|M{M3`w^fnV{Z=z*fixv7+|NhO(rVnLm|2mccP^18Y(5*-dgh!j4o({H5 zw}|3*+IpcVaQYm=w}4FxNm0g?YNm^VzryZj1tBpyK%|05A3_^Zd2!9uu=LSLH@LM( zLHLd5B}X>FJGbz-aoLz zWY;r%>9YTDP6$D?!iwH2Jcrz}C(7m3RlFQEG(b=e1Ny%czj1EBw>JC!AZwlUOxDu{ zv14oPr~9p(r_gqcf|1p1_`n5b;_eg7c!s*Y&yv;{<`h!4&~g67#2!P9;EwxkV@+}q zs@3d(wKbrW2MNu;d}|;%RlaYV`T4Vnn_Dt~Y-OLZ^YafcEoEF~ws_I(c-(~6*dULe z{k|abovK+P%`!7FP0r5Lqz{jJG);~=89kdj*}=P8Ch~1h-}VixdAL>F;rY%w+TC4a zLzHP|Xq29_I{Mn>_s>)O9IeMQi^y)n)e7@@y!3*TRM2kclzHmaDl2?{ebT;m0sa*> z%bE@8l(_eOm^xN)YQHASUW9Ro_4BQaog5eHhQ>q{I!D98^-C6v)Czw)e)_XrA&yN& zPWX~6I5>Nq_x#EJ{$p~?Z_eAGS@dZ z*Wu4srH#w)XExMHk2H))RfOx6ancFR2@8W~LXvaMM7UFHE1QFpqsdW6Mo-W(97RM_ zMPjedPgCL9cQXJXEZ;0I+L(9w0iVeFIWp-DrA})pv(MGsLF>WI+Y!UUa)#dZx#6*1 zx*jpX4uaE4 zTIQPBg1@H1Yc?%H&&{*Ck_BcjY5B2YaHbX?xRIjB%4(g9Aa`d!q_+CEI`GoLgq|Oc zh2*LBk6GY@)P6GVLZ{Ne#_QMlWsKj1d@e6bO&u|T*D>`vhZ^{*t-1`g!298ReEIgkpU~vzc-C|*4pL#1A>@W%nTi9 zVBS1FRk?*U`<*)MnRBn!R!_duKzeDZ@coh;m2j@ zPeEaT=Bp*L?eLT#5q?JKyu6KM3eP^7k8%g)24V*T#6d(RPGkAYp&)@8J1kr=> z5Fmj=#_Jg6UR~m1Mu>q!YkxRHT3=sxIaQzeQh@;{NxkWx4-%x1upO^lS9z` z+br|V4wR-p8B#tCfprifl&a@V*M~BpE95{V`N#F(0Ljg@Sx=I3@A1)uWu5U^HNdaJ zRMMu7L}N9&mg#5y>;=5Hdt3iGdv<}t0Goac9Nws4`-g<2df1k;qW649%Y$dV*)Kh@ zD^vDy&=`=Kta`)`_0AcGuU7^P;Gs|%aEWzC`o6i5+j`%6-1aA)Swr!mGzCJlv~-NP z#t9JH=lmY!#KQP0LorF9WpDaRJkoP-&{g+LN-rGM$GkaEvJ9oYZYtIr@Ao8< zz`Y}74BCr)hg($=50-SZidCQzC^W9eo=x*%B2TP3VK>_+0rlD(-S^_BvM>_Puznj$ z-P@wdO^Zbd=XP64MM3=W>V9~1&Bl0q7Gl$j$Wu)MO^XM?w~g<2-;n5EX-H@qU4KvU zNbvYRmFX=hGL#UBU;T^32A;ceXR{T(qQtSDmY&{tZ?fPocaNBa#7wHeyLTdh7?&g_ zw6T!~4vl1Kr!B94^AyG5NVrhd)03B&&!uDY)R2SVHNmI0-<^i6HzW)0ldLdR8l4pP zf=kIqJ2@+Gxu?JPxhr{}bLlIUqNc44DZu3_R?fhv-8>7o|8VMH_e~wmkc?}nL&JMX z_nPWkVPqwMM|lDSuqun#Le9p9@pqTKN&07DA=(0|qvjA+$*YDynUn;9Gj@_O&p40B z{nD_o+7^f(g3!t0eUboFQIVa7hJePoQMa7yo}tOz2C@kU^czpW|Gfd$y_99E?G`R& zxHpbsx^)XAym^5)1NODwl+B2P0O7@p4jZo77nHRpVpsxUQVfVB3ho&pGn3o7o;-7{ z$68rl>w<2_!3uE{H&X^rVm>s}YA;_}6602hd`2Z|K}#8iNOlPSxxm!Wb%fQ>_cRMU zY2AvKrDb3+8A_z1q^90*-~j@+U8Zbxcjb5%-EEk#XymzT>xmHlY_s9y+hZFgofKxh zM!;dt1Nsf>Y9LW=ttdP=vzi({&(73*|RDWD%0CJi5!XE_0#l)+(H zhR?#Xw2IjM8!T^?nX}@tejWv*9uXM{gg{?0Fhs7c8QQh~abv`h%_D(4eqjIZPKm{| zmtTJ^$00wOO*{Sza+r*7(PIWQ1ESK>2w+@`4B9`8q`nRWb+4cIZQvY$!KoX7Iza@K z;rDn880G82Uz3Pw2T~tdz4m+b`2d7TskJn~5d3_u^Y>=bqZ+o~zJE`fqUVN>jg6g{ zoE)E+*aM)sj?K#+0$BtnU$7L>;}{1>L*u;U@8%2A8HeOsmd?P7oWAn4Uc$TX)c?s&7cRXc}=Rwo(3 ziHF?N(^DH~JY*g}8Zm9vo8A%>ukCzp-mgAhBax6^Btr#>#wKy_kl_qofLTQ7w?bf$%G>SJW5D!ByNpKKPm)V%uvzN#edQ=Rft&n_9@_EIJ-M2SiH?LdP$Xzk3D$@(HDROUp2Ck zOA1rwH7`j>#;8(sMZpL_{hIkkxa#*LxaxaNY~c6D^)oG_ll`XwVg%53+pv7_S`&agNeG#w!G+ArX;p^<8JG!Keb>mjqkchlQ z3PmyZuz`lWo96}SARq@=A%}o_97eC%?VGbcxHja{ppHfi1-X7CE{olCuo`f(_;q2t z)_G}JYzUI7sHJ#=lb+#~rfsY7RArfhaW4Ia=HqE{a%k{w@M{hZWlDjtJ`G5yG~~H3 zW%M~cs6oZXGQ$%dK$-;{ljeaC$oDBDV>PP;Q)>U+uR+tYlO8>M=dc=)xF_;xwxPpm zKcq8fI=#9GY<_>#M_;i!5oAeD}reFRf>EvFJ2o11mGf9JB8*qE~X!bZ+(E}J>1FCB04 zvHu%_TiWd;KZ?KtqRqd@QK*vme;eaQ#s71GurLlnU@rb0lQzIW{X3*;lz@k`7}?GC z8w2u&^9}X}i;EuK)Fw7`rVHa)f8st9$aWq2sL92-(XwzR&&_*IvsBZ(Olt|k$b7rS z0c=MxIxu)X;DiJC&PR2#lkI+ffI3_jNRBz4&z5O*C(@~;^1CyKq7qxJe;YPeHhpH< z_LOt9WuZXE#TGomcEtbkk40OoQCz}6x$8=*Az@!v-cyZ*Vr5+HjObGbe>Hfk8!u+tpf#{9l)`!5%7Ms&YqcueT9MMA`{WvN2Pbjo(S2uDC36>JiqQru)vm& zcJ%EL;!X;mXM1f#60Bq+bxp=^#Z01N{g>=B$(VNmf$iXTtM@m9dM1Dlz^VLZ>7Hax z<=vZKpRvozRKds`>AJYMT!uT2lMD?HLwj6KYoxK6Awsw`0WSo^I605;?nc>{_F};C zI1q6c1yK!7L}|sx5W|ZzD2GMKQ=!og%kf?f=TL-NPIOB#Jd+&b$jwvHjI-}I8n@^T zdT-Mm&8$%yYgDgEZH7(!rwoHlgnBqvGFViyAeMgeFnkq(6b8%KY8s<;z#=)IM zwainB6;)EMqDK4RP)o9zi-(WBQr;Cm06GqX0|SOXzPy2SwJo_!$IrZK1F27;H!)pWT9|Q7w z@;$`9OFw(1VxOK$^hTHNYXXl+Rh8$4WV*``Uy)lV1KbcudanT@U}_GIM9`rW2za7F z^JAXGrwu^gZB3;^AmK47z(sRg4pc%6f0l(~<;zoe7Q?`s@eDC0@{n2m6fplLL&nJ- zzSnG#kirpz*7b^?DUt+J*w97{5503P?sfhx_g!TVD;pgVlE??Ry<6!KEgVS;|FBcW z)RyGA3!6d~8383-(VpLwxm{4?zi^KYEv50_bxq3Q)g5;3dm2ecMM+aAswwBsCz%x_ zU~*<=h6`3gDWR2{9|S`2%IP4Q7-WCANd07V*HT59pP#`0fn*&@saqPc0SYJgE>xwy z_&L1N^lro^>Qi5qWc+?4@qmIsryYMjm1M%s=PdcbxfhvlpZkMG&$9*V3Q%su<9Lq_ zoGU%n5x*t!>}dtkb#tX58SOw%ypHJKu-0p?YW2u_zBDhqoVxv1f+B`01ihy2qxFg# z`?WE!1d|HBz+IY}o8ReQAI!#hA2)>pDtV~y?k5n0lQakzAf&ONZS|Uo-|OPN0aCbn zZ&q*qYuUY)U#{wa1pkhMn#s{0rqady=f}M=nJ_9|8?0e2NoaI#=J5FhWv!PD{z{p$ z1G-6(-4hkZmy%1pJz+-qg{V81ypEb@8mzXUmK2FmWtbxwGlunTJjYZOBl$s2eH%JZ zv3BBh6d|mMGA^6Xya)N=eAy6PpxCrhoCJcRsYi^92uf7-INMAqlZq&<_8)q6A7INbx-(rGFU zs}if4dr&jG70v{dpZGBQsU`%+$F^p1S?P%)s&^9JkPH6GaURe*2F;3>u7Lo%#t5X) zTtD4HwjcA=W?=gPtTR5J%U4ACdj%_2ba#2OscT-mI|bN;3f3u7?#MQ$cucFE1X`8R zUU@k3=G1UYhfESwRWF}_p4od{mqX(c?00x!k*GOezkal?Z*r`SS3rgPJi0?iOZ%=B z-7*veP($9XBnHIpUgS*-+?;N{#zSV*s(zj_TwpL* z_b+5UKqc8nBn?3&mhtfs@bvV2II{PHG3*I@+0)loKhMUj9Y0ceiz+dy)0ZLkB$X4C zQLAcRF;LL+QbKH!ac5MTd?^>=+P__s@b&XX^ISUa+OMZh-`N2N@s8 zSFZn41(RBwHg1@*S$rePm0*LZMVQo=JS)k08+JaQU?VpYZSpuKPRV)O;p90IO*}X` zRx@9%owxlj%_=o)byki85hnopN%@6^^?B+@s1eo5_?U#@qgE7buY%|2sXm+^Z86Ke zdNmos#Fm^mUmO))iy_E#Jx88oW+Nl}iVO07Kw@yyoG-iVfP(C+R|_H2IMRoymZmto z4>Nwbw~vwKWK@$8oUf9Ino*(t##}Eg_2pMK)`5P(I_T+xUjv}oZD7V=#&*ha%*yaE zhsz$sCb>_xE?GOWdV}Ty=GZ3ZzB5Lbz5bJyB%FFN8cZ1iO(iR(uk9^}bEl}=*P6#*fL7?HA*V`nmv&`ktkc)voC2H`@S1X2v3$!$@);1 zklkP`$u5kwLH4ol`}{t`^L>xscD%=X|2OVA#=U%&^E$8VI?to?uCA7a0q;(xM2;y(w^aE7c0iqtz@PD~C|AuZ&#d7#j|Z0k|)z7(VJtr|&0v+Rbn z_mc%ejdLtT78Vw|1QiH?&Lo48rLty_heM?<=FIFqbWP!EEFIgP=yndNbaM+gVJEoz zLrhLWNv14Mk|uAYuvaIG#?Z_&YW3fZm5u2)4QfCW+YP*{e&G!X&&#A}p{VAfns5L zx>Wy1$nXF2<d{v5Rz#^b_tQ74Zb?Zb>U3}`B-3XQ)7zmVBO}RSFnuMpgeTw% zy9(VF*1_yg@At~lNSXFN-Re=S=pCAmXOX?g;ApL>L*<*r6GainOg(-qV|Gg%y8jw9fJd)#6~nmoY61sUO{#4h;kxYlbvvi*r8(-L4P0&J)DU z?qMBu&lohZYVP8X((F`jXz@mqv-5*7Wb*|NPTqA zg;ITUW%7rOIpUgy-rtb79~19dZrg0ZXg0S?W9IUT3KvF-D41v;7BZ4xlww}MjHnpti@i2}v`rC$PxKyMLuq`9ORat% zE_+z{48hv<#>$y{6u2Id`p_*H?qMl%0mnjeN|QjO`>v z#QvH^ri=yAWt&I5JTk#)->#`1e9h!{P$+oVL9W5B>Xz@mbPKT@aqXE-E4NMQw=XV; z&pD-HB~S*grN%)=Us^7tox1rl?pFjQN%((@xD1vQo{5Owto1Va59rhP&52~{32JwU zc+_Kk_&MwF1@zl5{o*kiyY{}UgB+WuqLM+`DZ=(6!GmKgiOoNf#W%~m?~lIuf05bW zi8C^%u2X)D4Ad7$Qw$L5w$WNd0S{rayEVQ--mc<(gELZC+nJJP+85vT;9X-*b0*_n z^@V2-ChNHDO3v(#P508^7ZdT6WMTL|-gW^qef74hg6C`ZID>*k=lSN>)T;x*S)`oB zrNwW*7R(E~9UC`?5E&F3{2Vs^ybI(0s^`It_MQ<|l!)T4Az8j}`AD5d>czE)8w=0+ zr0v*Vd)jq&-y~U{5&G+@jOW$+%_6Vaz9hSqwFJw@mJQH{M5n5CQb;Xan2!#xNoI<> zpI_91rp)Q85OaIMok%tWfK|k*`Rh(kcOY;f>*@a6qcui73raw4DgO)#aIjqmLyC}K z9-0II$_h|e8Y!ZoAX~{PC@evds*za1O;<|CUe)R^r?l|-Cu7u;4(PEJ}f;3nh!R><_ky{ z0<{I`vFqxIlZdK;CZ*?T)z8nD)HJL3_;|I454iz!0!$1EAN;MDD(J2sElITBD0ZIL z{O!AE3}kRH*KoM;Dlz3S>Z_unPh_uG-5;bCPS(*oTcQzq_Hl&_fWz_u z_FX=pLtY{W3rAn1W)cqg^oeVQLb~P(f0(}lakp}`;cp)rBSlWfKZY)1hWVflh;Wpd zcCp9-xd-4jK9Xkzs`a{b^^FJZsg{7O#B~r>5dbDwg|Sj6Kz<-2D=Vwpa8SGzDEK}r zHY37eigKUkYC>v3Cp~cMefs?Q&-;wV&4l`%JnhW)$FkCFG@w6@jF4#qIwm=p88?Tc zCcmn|6FC)y^5};BsJ!xg-d%gi0U$6_kL}q}|Zz~VC zeMxBa2RhDxdfK^prrA)?hw&Y+d=0Mt;2si;8G?<`MyFVhmVv>K)@asLeiwsE_*K1v zcOWi=fMyyzP>iRS5r4<&Jhh{aqhT-940RR?_LaT59Dj(J;x963i>4Rk4N?T)>2CTM(&SS4)$hv$tJMpG>votZHy zf?Zr~EnC6hPp~)>4S%zu0=GLeV+o9I2)+vxFxWh>VuMU(AUT@s%fXm!B3J|v8X&&t z-3CY=G7glOjeK_ozZg};1FuCQ@Jqn0e5|K$dlo;S`09vlf8$rqv!t`JqQ=_q7_6?R zqm#Dn4IqG_Z{VYk3h5?wUK>EQCI&cs4JB6~W*;J)odFNP#mh?;fIXg*s^^*{6d?ey z;#nZ+0&E~oD_w!NSSo0{y>jOM1L({6@o@{3k3SHw;5VsFCX{u8%iMzy3=E`D1hyBn z=Mo&}fH?GRa zya&txNdQpIMvT3z5CJ0Ez`uNIEjpj0o`IqU^Q`+19W&}zZzC-g5NlD zqW2=mAAnfnh%Czo$nki9)uU?j=WS0wW<6dKBOxInxIsLY-?^f#tz9|c^uofzb1ub( zoQjG^LV_N=f=^1p-~&NDg~Y7qgFFN**YYznGs3{%;S^{YA%F@M#sL4#s)O((fl_KN zFg66EF}bWv9E?QG%9mikT_wC$g7u&$`0pYq8qF;&8}o|zsuP_^2kS-{ZgO7e@hkax zV)}7G-elB<^bJmc<@J4&IElwn9Gke#AskTHScWQnOTPCPgKqFS63>I zme)(z_Z2b_B6=_c00|H5Bzz_=sdPVN_fqOd-a6Agk+!3}oK=O>P$#1oV3FHi8PhjE zXKjD{WyCM(N}i#WxnjEnZ}126D|n9lns{Z_`8=YsTlkEs_q5?odpl%mYA>7K@G0Z& z=bJ&~|6yVUd^U!Y?V^3LizdYn$8={-!S}}D_~?IVUGX?NQW{tJqLYe}9(r*#VR%60ks!GjG|frCULeYSFfK6$rY^5nZv zs~Eq>rDU*oPQ$qMV$@Hx`3*KVT|6ndh;n%Q-Ed|ZGNuJb5n3}HtFuCuxbK`Y;#cl? z7)n$c2`cb!!Lc-SNTX_|_(c6xQQ@K=&9&Tj6dTZ+eu9NH4FTZ2~ET|6}byL%y_9o)$m5!Dd?JS|zDb&pvMJ;MY2_R7fWAmnHu8bwnRfxX;N|Im0s4JT38 z+iB|NJ=}|mj8c9h0bc1v>qX8x9v?qGS)U|2t-`bjy%X5Vj)HmfDJ)MP-`#(7BY~KZ zU2_%Vj9@7^Xj%Zu_8$%yK49tch!Z5uO|t|2Qb|0^^snRBM5U}tnPc0Wji|y8 zohlaBvVxJ*2$(4c{9~NZsq^*PqgRaj9~`o5@}|$nm)%G}#_m@2bNK0bA|&mt#6qXFSWOcCVH`BNcv?9#n<^Z9?c4*>%g=iPh^ij3%G`iVLp1 z(+nSXU-*?VmkPUv-1I>;$ex>%q&iXO_~`H{UJG5f#NK@q zmVk9y+jIYYDbm-H5B&W2_@K+^tk~`o=fAwd7i9D{|xfH0B`vKzTTzn7 zTSMU$it2V*FhNbuRLMI z)6uJ`7)&I^>DRg^_jV!*v09CEz9a{7BKwtA9HVm$n|jhoMY0+dW+cc5q5bXs>+`4s zp&LZ65`UefqrV)*Mv=5>`2zmM{Xs1NA;lQf3_A9~Ovo?5X4(@dpe2h~kO8E4291F2i(?gMZbt;4sApxim%!QFkACmL zNd#b#2~6@Iw}PYd{mYR0S}mj5Zw44xz=9%w;de%kqTE&MclqhLj9$%Z=eH>Hl z6PvI%9i-`z+t^Z5uz=|^$kbJOi8s`_|LKy`>gc{VM=joz5ihemmAKmWn+`M5{812Q zHm(PC_xB3Xme)8Iteuk)@~BDU5hRRN@QM)F>(+iXgN-H+x_0~}u4Sn*4`HgC{Hy%g zcZF}R4M&Cq2-@>)d&yW{`Z_ak0@ z35tZ6E=;aC^)W?{#^>0xh%e#|8>#3XY+>cGBDiSSQr%!{JG{*7Pav@C6?0k8It3DQ z#b%Af;1Lp$)6mQT{BGSCM4FYI{d#>;2_oq<{sUx47QOwwyktnos38CWhk+8_g!J@B zpzH+{6@zVsl8OpY)VG&+7+sZXQotO(JA^7IS_;-! z-wjwwB*u|(IEWOlvrw`6yJ)-oKugRsdmcQe@*iKF+%SFzd9z}dGm}UwXzHH)3dTOx zdi%F*Ck7f@r|{OuJ>U;&{5_G9&t*=H?L$h4k1Ea00EoKsN+G3VeDK)4F8ocFQo9ha*wh+mcw^f9e(ZHm%295!AxpK{l|VDsUQc-5a5 zVil&2b8S2vdP#Q{E33!dmGE<}O2h*)$_j_?{Ryhtob4-n> zQ8@^Sn~OH=nvNgO1xK=EpxgKD)yN^hetPYst)o(3|MGI5zml=cv z#^Qd3j_Jmb>I=+0`;r9vqBFhboq?yFY0?S6grgrM$bp&T(>3oz0mD{{Sov0ZeWO6I z>qts61OUD`?_5qq?KTY)%k)V(#(TpREsgx~y<$T4@xb8w7aa=j(TmJ2nxc`c96PA8 zCg+C&VuxR3$0v^sB{9C4LFTFUnpor2sTltu|EIx+_2{aC4%TubV=HmEMT^}l_Z8rh zcNG@+>fJ}Tst@_B-O@9%ytQrjEn+SPcUf;;xpE~9-U#zYXs8 z>#2m+LX$@vdAYa(+GE3jzP^%yq#fU z_|UGfrI!@q_VZ_%BDD_Ei>}5xgZ2BOpkA%F(NWS_yEra7$*03pHJ9?qXj+Ww4OXFp zu);5=DdzR-{>I?FApD#YZ&Q!7^P=*;G?|mrb)vI16%aAy{u4VWa3Pq@7 zQdOR9#@I8m6f-Txf6G1)b3tTl!!)NA7q>m+n4$+!i$f9&A$V_-MeQa==tVh$At+;Y zW!%us-pRRaO)T6B3IpXT7obo&CMGqY)e>FEa2k8q1PyM4+c%Qj{d8$s=nIEM#(ptU zXiuugSg3Hxc1HiI4A&Wm$#O-)eh<-@@FuiZq`i78pBcxO5DXJAEw;y3)$07F%YA^6 z?UzZu$ibUlio7&G>MOuj`;}1rm7bxjEWlCQ)Agw2wY)O*HuXOWc`=ofHOfwYe0y+^ zRcMExC`D-fV&b@>SmB!9K9{CFZ=jx zn2hT0Pu2}@ew@eSilsc(WAKykJH@232PkK^Kkz&I*_TajueFZ;bgJyNJ?xhwhKn?9 zzEVXV|L_cCdpQE90Z2HiWg4ezNfKgW9~7^?uI{BPS5!cXojpx6$8|sDL7Jkru5Req${hS%YPv4_4|li88}77< z-u%m37rtRE8vC|U*VS2V8rw<9py|}_(q6%PTRcL@x0JX^Xf9ude>v4vlo=pLA9L=I z(p)S@bPG!7Bg1ISutj8(fhEX#`=ako=7m;cR*1HU#L)y7ED;IWibzuGRix_j75L0 z7o?AVIs559;bDXj1m|!vc@cW7Oz{e0E}8;@2{6njH#~qw5a1TDrmyx1A8IBf?m^e) z4-|`{g2GFsZ1d!ccE1{*prLr-#<7*Qql&^=7S=mywl#MNNfpBJe*1H=8-!?}aw5mQ zTFPY|M&D^&x>hcwwcfo&##C;2$0Lb;P!SJrFa#BH_U;LJC*%I(WcbD>INX!I3!u;lc1aB?`e;9|t3=iJ_siE2V{l5?^`tFc++nMU?eccmkgE&`)XSWID@7CTY^Kwg>mJ%%#kV6eO@rMb(&}+& t5H!xMu#hN{a5~FXyO%2$r(tr0$79_41<9jC&=7F^bzf7Z@Sa)F{{p^TucQC~ From d1d22f346d251e2e7dc82f781e90d21b701a352c Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 2 Apr 2024 14:48:18 +0200 Subject: [PATCH 27/84] Add label selector (#32129) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_docs/blueprint/selectors.markdown | 38 ++++++++++++++++++++ source/images/blueprints/selector-label.png | Bin 0 -> 25411 bytes 2 files changed, 38 insertions(+) create mode 100644 source/images/blueprints/selector-label.png diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown index f636b302989..451d07d518e 100644 --- a/source/_docs/blueprint/selectors.markdown +++ b/source/_docs/blueprint/selectors.markdown @@ -35,6 +35,7 @@ The following selectors are currently available: - [Entity selector](#entity-selector) - [Floor selector](#floor-selector) - [Icon selector](#icon-selector) +- [Label selector](#label-selector) - [Language selector](#language-selector) - [Location selector](#location-selector) - [Media selector](#media-selector) @@ -886,6 +887,43 @@ placeholder: The output of this selector is a string containing the selected icon, for example: `mdi:bell`. +## Label selector + +The label selector shows a label finder that can pick labels. The value of the +input is the label ID. If `multiple` is set to `true`, the value is a list +of label IDs. + +![Screenshot of the label selector](/images/blueprints/selector-label.png) + +In its most basic form, this selector doesn't require any options. +It will show all labels. + +```yaml +label: +``` + +{% configuration text %} +multiple: + description: > + Allows selecting multiple labels. If set to `true`, the resulting value of + this selector will be a list instead of a single string value. + type: boolean + default: false + required: false +{% endconfiguration %} + +The output of this selector is the label ID, or (in case `multiple` is set to +`true`) a list of label IDs. + +```yaml +# Example label selector output result, when multiple is set to false +energy_saving + +# Example label selector output result, when multiple is set to true +- energy_saving +- christmas_decorations +``` + ## Language selector The language selector allows a user to pick a language from a list of languages. diff --git a/source/images/blueprints/selector-label.png b/source/images/blueprints/selector-label.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4e255e885660132145273c179ea6b68c2dad79 GIT binary patch literal 25411 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 Date: Tue, 2 Apr 2024 14:53:40 +0200 Subject: [PATCH 28/84] 2024.4: Update dev blogs links --- source/_posts/2024-04-03-release-20244.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_posts/2024-04-03-release-20244.markdown b/source/_posts/2024-04-03-release-20244.markdown index 07d8818bb22..5e815dd6ac6 100644 --- a/source/_posts/2024-04-03-release-20244.markdown +++ b/source/_posts/2024-04-03-release-20244.markdown @@ -564,6 +564,7 @@ changes and new features available for your integration: Be sure to follow our - [Climate entity auxiliary heater is deprecated](https://developers.home-assistant.io/blog/2024/03/10/climate-aux-heater-deprecated) - [Config Entries can now provide a reconfigure step](https://developers.home-assistant.io/blog/2024/03/21/config-entry-reconfigure-step) +- [Deprecate hass.helpers usage](https://developers.home-assistant.io/blog/2024/03/30/deprecate-hass-helpers/) - [Deprecating `async_run_job` and `async_add_job`](https://developers.home-assistant.io/blog/2024/03/13/deprecate_add_run_job) - [Integrations import in the executor to avoid blocking the event loop](https://developers.home-assistant.io/blog/2024/03/09/import_executor_default) - [New state timestamp State.last_reported](https://developers.home-assistant.io/blog/2024/03/20/state_reported_timestamp) From 2a10843458f716d71d7f09ee32c45157da406400 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 2 Apr 2024 15:01:28 +0200 Subject: [PATCH 29/84] 2024.4: Finish backward-incompatible changes --- .../_posts/2024-04-03-release-20244.markdown | 77 +++++++++++++------ 1 file changed, 52 insertions(+), 25 deletions(-) diff --git a/source/_posts/2024-04-03-release-20244.markdown b/source/_posts/2024-04-03-release-20244.markdown index 5e815dd6ac6..87800d49768 100644 --- a/source/_posts/2024-04-03-release-20244.markdown +++ b/source/_posts/2024-04-03-release-20244.markdown @@ -387,7 +387,7 @@ Home Assistant now requires Python 3.12 to run. You don’t have to do anything if you are using the Home Assistant Operating System, Home Assistant Container, or Home Assistant Supervised installation -method. In those cases, we handle this all for you. Your system has been +method. In those cases, we handle all of this for you. Your system has been using Python 3.12 for quite some time already. ([@frenck] - [#114220]) @@ -400,11 +400,11 @@ using Python 3.12 for quite some time already. {% details "AEMET OpenData" %} The AEMET OpenData integration previously created two entities for each -configured location, one entity which provided daily weather forecasts -and one entity which provided hourly forecasts. +configured location: one provided daily weather forecasts and the other hourly +forecasts. -The AEMET OpenData integration now only creates a single entity which -provides both daily and hourly weather forecasts. +The AEMET OpenData integration now only creates a single entity that provides +both daily and hourly weather forecasts. ([@gjohansson-ST] - [#110764]) ([documentation](/integrations/aemet)) @@ -437,7 +437,7 @@ Please update your automations and scripts accordingly. The non-functional `away` preset mode has been replaced with the correct `away_indefinitely` preset mode. -If any automation or script was depending on the `away` preset mode, +If any automation or script depends on the `away` preset mode, it needs to be updated. ([@alexsydell] - [#108636]) ([documentation](/integrations/ecobee)) @@ -450,10 +450,10 @@ it needs to be updated. {% details "Environment Canada" %} The Environment Canada integration previously created two entities for each -configured location, one entity which provided daily weather forecasts and -one entity which provided hourly forecasts. +configured location: one provided daily weather forecasts and the other hourly +forecasts. -The Environment Canada integration now only creates a single entity which +The Environment Canada integration now only creates a single entity that provides both daily and hourly weather forecasts. ([@gjohansson-ST] - [#112447]) ([documentation](/integrations/environment_canada)) @@ -465,11 +465,11 @@ provides both daily and hourly weather forecasts. {% details "National Weather Service (NWS)" %} -The National Weather Service integration previously created two entities -for each configured location, one entity which provided daily weather forecasts -and one entity which provided hourly forecasts. +The National Weather Service integration previously created two entities for each +configured location: one provided daily weather forecasts and the other hourly +forecasts. -The National Weather Service integration now only creates a single entity which +The National Weather Service integration now only creates a single entity that provides both daily and hourly weather forecasts. ([@gjohansson-ST] - [#112503]) ([documentation](/integrations/nws)) @@ -482,11 +482,10 @@ provides both daily and hourly weather forecasts. {% details "Met Éireann" %} The Met Éireann integration previously created two entities for each configured -location, one entity which provided daily weather forecasts and one entity which -provided hourly forecasts. +location: one provided daily weather forecasts and the other hourly forecasts. -The Met Éireann integration now only creates a single entity which provides -both daily and hourly weather forecasts. +The Met Éireann integration now only creates a single entity that provides both +daily and hourly weather forecasts. ([@gjohansson-ST] - [#112449]) ([documentation](/integrations/met_eireann)) @@ -495,10 +494,25 @@ both daily and hourly weather forecasts. {% enddetails %} +{% details "Met Office" %} + +The Met Office integration previously created two entities for each configured +location: one provided daily weather forecasts and the other hourly forecasts. + +The Met Office integration now only creates a single entity that provides both +daily and hourly weather forecasts. + +([@gjohansson-ST] - [#112452]) ([documentation](/integrations/metoffice)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#112452]: https://github.com/home-assistant/core/pull/112452 + +{% enddetails %} + {% details "Modbus" %} -The Modbus integration do not allow a configuration with the device only -(no entities), this will create an issue, and the entry will not be loaded. +The Modbus integration does not allow a configuration with the device only +(no entities); this will create an issue, and the entry will not be loaded. For the special cases (like some custom_components) where it is wanted, please add a dummy entity. @@ -513,15 +527,15 @@ please add a dummy entity. {% details "MQTT" %} Support for `brightness` is now assumed for `mqtt` lights with the `json` schema -unless only color modes `rgb`, `rgbw` or `rgbww` are supported. +unless only coelo modes `rgb`, `rgbw`, or `rgbww` are supported. -For light which only support color modes `rgb`, `rgbw` or `rgbww`, +For light which only support color modes `rgb`, `rgbw`, or `rgbww`, the `brightness` option flag can still be set to `false` if brightness is not supported, in this case brightness support is emulated in Home Assistant by scaling the RGBx-values. For all other color modes except `ColorMode.ONOFF`, it is assumed brightness is -supported and the `brightness` attribute will be included in the MQTT payload +supported, and the `brightness` attribute will be included in the MQTT payload when the `brightness` attribute is supplied to the `light.turn_on` service. ([@jbouwh] - [#111676]) ([documentation](/integrations/mqtt)) @@ -536,7 +550,7 @@ when the `brightness` attribute is supplied to the `light.turn_on` service. If you have a Nibe SMO 20 in your account, you will notice that some 550 entities are not provided by the integration. -You can safely remove these entities as they are not used by the integration. +You can safely remove these entities as the integration does not use them. ([@astrandb] - [#113493]) ([documentation](/integrations/myuplink)) @@ -548,8 +562,8 @@ You can safely remove these entities as they are not used by the integration. {% details "Waze Travel Time" %} The options `excl_filter` and `incl_filter` now filter for exact matches to -streetnames in the route. Previously only they only filtered on the short -description for the route. +street names in the route. Previously, they only filtered on the short +description of the route. ([@eifinger] - [#108613]) ([documentation](/integrations/waze_travel_time)) @@ -558,6 +572,19 @@ description for the route. {% enddetails %} +{% details "Weather" %} + +The previously deprecated `forecast` attribute of weather entities, has now been +removed. Use the [`weather.get_forecasts`](/integrations/weather#service-weatherget_forecasts) +service to get the forecast data instead. + +([@gjohansson-ST] - [#110761]) ([documentation](/integrations/metoffice)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#110761]: https://github.com/home-assistant/core/pull/110761 + +{% enddetails %} + If you are a custom integration developer and want to learn about breaking 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: From 18a5851638115b66f7cf063efd41ea249575eb2d Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Tue, 2 Apr 2024 17:19:14 +0200 Subject: [PATCH 30/84] Glossary: add term definition of floor (#32128) --- source/_data/glossary.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 9dae8f1e1bf..321d1b758eb 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -161,6 +161,14 @@ link: /docs/configuration/events/ aliases: - events +- term: Floor + definition: >- + A floor in Home Assistant is a logical grouping of areas that are meant to match the physical floors in your home. Devices & entities are not assigned to floors but to areas. A floor has properties such as: Floor ID, name, aliases (for use in assistants), an icon, and a floor level. Some of these properties are optional. The level number can be negative to reflect floors below the basement. + Floors can be used in automations and scripts as a target for actions. For example, to turn off all the lights on the downstairs floor when you go to bed. + excerpt: >- + A floor in Home Assistant is a logical grouping of areas that are meant to match the physical floors in your home. Devices & entities are not assigned to floors but to areas. Floors can be used in automations and scripts as a target for actions. For example, to turn off all the lights on the downstairs floor when you go to bed. + aliases: + - floors - term: Frontend definition: >- The frontend is a necessary component for the UI, it is also where you From 92b09cbb9f662019cd1b9b7fbcab037171b9d7f8 Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Tue, 2 Apr 2024 17:18:18 +0200 Subject: [PATCH 31/84] Glossary: add term label (#32130) --- source/_data/glossary.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 321d1b758eb..84f409c32b1 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -261,6 +261,13 @@ link: https://developers.home-assistant.io/docs/intent_builtin aliases: - Intents +- term: Label + definition: >- + Labels in Home Assistant allow grouping elements irrespective of their physical location or type. Labels can be assigned to areas, devices, entities, automations, scripts, and helpers. Labels can be used in automations and scripts as a target for actions and services. Labels can also be used to filter data. For example, you can filter the list of devices to show only devices with the label `heavy energy usage` or turn these devices off when there is not a lot of solar energy available. + excerpt: >- + Labels in Home Assistant allow grouping elements irrespective of their physical location or type. Labels can be assigned to areas, devices, entities, automations, scripts, and helpers. Labels can be used in automations and scripts as a target for actions and services. Labels can also be used to filter data. + aliases: + - labels - term: Lovelace definition: >- Lovelace is the original code name of the UI that is now known as From 7c316f1b0c99e62c623d1d204876f195ec0ebf91 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 2 Apr 2024 22:08:32 +0200 Subject: [PATCH 32/84] 2024.4: Finish new integrations section --- source/_posts/2024-04-03-release-20244.markdown | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/_posts/2024-04-03-release-20244.markdown b/source/_posts/2024-04-03-release-20244.markdown index 87800d49768..4c778e5fdf7 100644 --- a/source/_posts/2024-04-03-release-20244.markdown +++ b/source/_posts/2024-04-03-release-20244.markdown @@ -322,18 +322,20 @@ Possible candites for noteworthy from Frontend: We welcome the following new integrations in this release: - **[Fyta]**, added by [@dontinelli]
- Monitor your plants with Fyta, a smart plant sensor that measures light, temperature, humidity, and soil moisture. + Monitor your plants with Fyta, a smart plant sensor that measures light, + temperature, humidity, and soil moisture. - **[Motionblinds BLE]**, added by [@LennP]
Control your Bluetooth Low Energy Motionblinds motorized window coverings. - **[Ollama]**, added by [@synesthesiam]
- Ollama a fully local AI conversation platform that can be used to create custom voice assistants. + Ollama a fully local AI conversation platform that can be used to create + custom voice assistants. [@dontinelli]: https://github.com/dontinelli [@LennP]: https://github.com/LennP [@synesthesiam]: https://github.com/synesthesiam [Fyta]: /integrations/fyta [Motionblinds BLE]: /integrations/motionblinds_ble -[Ollama]: /integrations/ollama_conversation +[Ollama]: /integrations/ollama This release also has new virtual integration. Virtual integrations are stubs that are handled by other (existing) integrations to help with findability. From 83af1ff53b22534567a2373f6dcc72f91719b617 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 2 Apr 2024 23:02:08 +0200 Subject: [PATCH 33/84] 2024.4: Finish other noteworthy changes --- .../_posts/2024-04-03-release-20244.markdown | 70 ++++++++----------- 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/source/_posts/2024-04-03-release-20244.markdown b/source/_posts/2024-04-03-release-20244.markdown index 4c778e5fdf7..52c4eb5724b 100644 --- a/source/_posts/2024-04-03-release-20244.markdown +++ b/source/_posts/2024-04-03-release-20244.markdown @@ -266,56 +266,46 @@ noteworthy changes this release: - [@karwosts] has made some improvements to your Home Assistant user profile page, making it easier to navigate and find the settings you are looking for. Nice work! +- If you use a [sentence trigger] in your automation to trigger it using + [Assist]. The trigger will now include the `device_id` in its trigger data + allowing you to automate with. Thanks, [@synesthesiam]! - The [HomeWizard Energy] integration now support the newest generation of HomeWizard Energy Sockets! Thanks, [@DCSBL]! -- The information shown in the related items of the entity dialogs, but also - related information on device pages (like automations, scenes, scripts, etc.) - has been improved. It should now provide you with more relevant information. - We are now able to ship new releases of Home Assistant in waaay less time. Building and shipping Home Assistant for you, when down from 1.5-2 hours to just 20 minutes! 🚀 Thanks [@edenhaus]! - [Reolink] now supports PTZ patrol start/stop, package detection and controls to play quick reply messages. Thanks, [@starkillerOG]! -- We have brand new template functions available to list all the issues in +- We have brand new template functions available to list [all the issues] in your repairs dashboard. Thanks, [@RoboMagus]! +- If you prefer your wind speed sensors to be in Beaufort, you are in luck! + You can now change the unit of measurement to Beaufort. Thanks, [@fwestenberg]! +- The [Husqvarna Automower] integration development continues and now has + additional new entities; including sensors, select entities and a device + tracker Thanks, [@Thomas55555]! +- [@catsmanac] has added added sensor to monitor the battery storage attached + to your [Enphase Envoy]; it works with the energy dashboard! Nice! +- The [Xiaomi BLE] integration now supports locks and fingeprints readers! + Awesome, [@Ernst79]! -[@RoboMagus]: https://github.com/RoboMagus -[@karwosts]: https://github.com/karwosts -[Reolink]: /integrations/reolink -[@starkillerOG]: https://github.com/starkillerOG -[HomeWizard Energy]: /integrations/homewizard -[@edenhaus]: https://github.com/edenhaus +[@catsmanac]: https://github.com/catsmanac [@DCSBL]: https://github.com/DCSBL - -_Note to remove: Processed possible noteworthy up to PR #114278_ - -Possible candites for noteworthy from Core: - -- Add new fields from UniFi Protect v3 ([@AngellusMortis] - [#113631]) -- Add person tracking for UniFi Protect ([@AngellusMortis] - [#111289]) -- Add UniFi Protect service to remove privacy zones ([@AngellusMortis] - [#111292]) -- Add reconfigure step to config flow ([@gjohansson-ST] - [#108794]) -- Add reconfigure step to holiday ([@gjohansson-ST] - [#114057]) -- Add reconfigure flow to Axis integration ([@Kane610] - [#114067]) -- Add Locks to Xiaomi-BLE ([@Ernst79] - [#111156]) -- Move Ping binary sensor attributes to sensor entities ([@jpbede] - [#112004]) -- Add support for System Bridge service responses ([@timmo001] - [#100055]) -- Add Beaufort to wind_speed ([@fwestenberg] - [#105795]) -- Add button to homeworks ([@emontnemery] - [#112269]) -- Add device_id to sentence trigger and external conversation APIs ([@synesthesiam] - [#113094]) -- Add Ring Intercom support ([@cosimomeli] - [#109819]) -- Add binary sensor platform for Husqvarna Automower ([@Thomas55555] - [#113248]) -- Add device_tracker platform for husqvarna_automower ([@Thomas55555] - [#111403]) -- Add select platform to Husqvarna Automower ([@Thomas55555] - [#113816]) -- Add additional sensors to Teslemetry ([@Bre77] - [#112555]) -- Add JVC Projector Sensors ([@msavazzi] - [#108949]) -- Add additional buttons to OctoPrint ([@Xitee1] - [#103139]) -- Add Shelly RGB/RGBW profiles support ([@thecode] - [#113808]) -- Add home battery storage entities for enphase_envoy ([@catsmanac] - [#114015]) - -Possible candites for noteworthy from Frontend: - -* `conditional` & `entity-filter`: add ability to filter through `entity_id` & add `entity-filter` `conditional`'s conditions (#19182) @Quentame +[@edenhaus]: https://github.com/edenhaus +[@Ernst79]: https://github.com/Ernst79 +[@fwestenberg]: https://github.com/fwestenberg +[@karwosts]: https://github.com/karwosts +[@RoboMagus]: https://github.com/RoboMagus +[@starkillerOG]: https://github.com/starkillerOG +[@synesthesiam]: https://github.com/synesthesiam +[@Thomas55555]: https://github.com/Thomas55555 +[all the issues]: /docs/configuration/templating/#issues +[Assist]: /voice_control/ +[Enphase Envoy]: /integrations/enphase_envoy +[HomeWizard Energy]: /integrations/homewizard +[Husqvarna Automower]: /integrations/husqvarna_automower +[Reolink]: /integrations/reolink +[sentence trigger]: /docs/automation/trigger/#sentence-trigger +[Xiaomi BLE]: /integrations/xiaomi_ble ## New integrations From 742bef390ea9bb29828e95a42221f13bc4f22b13 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 2 Apr 2024 23:52:35 +0200 Subject: [PATCH 34/84] 2024.4: Commit current status --- .../_posts/2024-04-03-release-20244.markdown | 260 ++++++++++++++---- 1 file changed, 200 insertions(+), 60 deletions(-) diff --git a/source/_posts/2024-04-03-release-20244.markdown b/source/_posts/2024-04-03-release-20244.markdown index 52c4eb5724b..ae14b03ecd0 100644 --- a/source/_posts/2024-04-03-release-20244.markdown +++ b/source/_posts/2024-04-03-release-20244.markdown @@ -1,6 +1,6 @@ --- layout: post -title: "2024.4 Beta: Organize all the things!" +title: "2024.4: Organize all the things!" description: "The beta release notes for Home Assistant 2024.4" date: 2024-03-27 00:00:00 date_formatted: "April 3, 2024" @@ -48,11 +48,17 @@ Enjoy the (beta) release! -- [Organizing your Home Assistant](#organizing-your-home-assistant) -- [Improved user interface for tables](#improved-user-interface-for-tables) -- [Floors of your home](#floors-of-your-home) -- [Label anything](#label-anything) -- [Organize using categories](#organize-using-categories) +- [Home Assistant spring cleaning! 🧹 New ways to get your automations (and more) organized](#home-assistant-spring-cleaning--new-ways-to-get-your-automations-and-more-organized) +- [Upgraded tables!](#upgraded-tables) + - [A new toolbar](#a-new-toolbar) + - [Filter panel](#filter-panel) + - [Item grouping](#item-grouping) + - [Selection mode and batch actions](#selection-mode-and-batch-actions) +- [Three new ways to organize](#three-new-ways-to-organize) + - [Floors: Help Home Assistant understand your house](#floors-help-home-assistant-understand-your-house) + - [Labels: Tag everything any way you want](#labels-tag-everything-any-way-you-want) + - [Categories: Make each settings page easier to browse](#categories-make-each-settings-page-easier-to-browse) + - [Time to clean up your Home Assistant!](#time-to-clean-up-your-home-assistant) - [Map dashboard](#map-dashboard) - [Webpage dashboard](#webpage-dashboard) - [Define the columns in the section view](#define-the-columns-in-the-section-view) @@ -72,69 +78,167 @@ Don't forget to [join our release party live stream on YouTube](https://www.yout -## Organizing your Home Assistant +## Home Assistant spring cleaning! 🧹 New ways to get your automations (and more) organized By far, the most requested feature in Home Assistant history would be: + [_"Grouping Automations on frontend for organization"_](https://community.home-assistant.io/t/grouping-automations-on-frontend-for-organization/102771). We hear you! And today, in this release, we are going to give you tools to -organize your Home Assistant setup. We want to make it easier for everyone, not -just to organize, but also to view and find the things you need. +organize your Home Assistant setup, and we took it a few (well many) steps +further than just grouping automations! -However, we took it a few (well many) steps further than just grouping -automations. We are introducing 3 new organization structures to Home Assistant: +We are introducing 3 (yes, you’ve read it correctly. It’s three) organization +taxonomies, and we also revamped our entire table user interface plus a few +goodies along the way. -**[Floors](#floors)**, **[Labels](#labels)**, and **[Categories](#categories)**. - -We'll dive into each of these in a moment. First, let's talk about the brand -new user interface for tables. - -## Improved user interface for tables +## Upgraded tables! Adding more ways to organize your Home Assistant is great! But being able to easily view, filter and navigate information is just as important. To achieve this, we have re-designed ALL the tables in Home Assistant. -Each table has a search bar, allowing you to quickly find what you are -looking for, can be sorted by any column, and has a new look and feel. +For an admin interface, tables are essential for visualizing and managing +large datasets, and Home Assistant has many tables in its settings pages. +Previously, our UI provided the ability to search, sort, as well as filter +for a few aspects, but it was relatively barebones. -Tables now have the possibility to group rows, by for example, their entity -state, and can be filtered! The filters are very powerful and allow you to -only show the rows you are interested in, you could for example filter on -areas, but also on the new organization structures we are introducing today: -floors, labels, and categories. +Today, we are rolling out a revamped table UI that will be standardized across +all tables in the settings pages with new and improved features. -![CleanShot 2024-03-27 at 16 01 20](https://github.com/home-assistant/frontend/assets/5662298/3aed32c6-dcad-4474-9bbd-97e75e4f98cf) +### A new toolbar -## Floors of your home +As we are adding more features to the tables, we need to still keep the UI clean +and its features easy to find. Therefore, we added descriptive text to the +dropdown menus, and we standardized the look and feel of the toolbar buttons +and textboxes. Shiny! + +__TODO: Insert screenshot hightlighting the new top bar of our data tables__ + +### Filter panel + +Previously, our automations page allowed you to filter by areas, entities, +or devices, but only one at a time, and the filters were tucked away in +a dropdown menu, which meant you needed to click on a dropdown menu inside +a dropdown menu to filter by area. + +A new filter panel fixes these issues by providing a new dual pane user +interface that can let you check multiple filters across multiple filter +types on the left that stays put, and view the filtered results on the right. + +__TODO: Insert screenshot showing the filters active on the device automation +page.__ + +We also introduced multiple new filter types for each table. For example, +automations can now be filtered not only by areas, entities, or devices, they +can now also be filtered by used blueprints, labels, and categories +(more on these later!). + +We didn’t stop at just that page! The devices and entities pages now +also has a way to filter by not only state, but also by integrations +and by areas. Almost all tables now have useful new filters to help you +find what you are looking for. + +### Item grouping + +Browsing a list of hundreds of automations or thousands of entities can be +overwhelming. While filters can help narrow down the list, visually grouping +the items into smaller chunks make them much easier to browse. + +With the item grouping feature, we introduced a new dropdown menu to pick +how you’d like the items on the table to be grouped by. On the automations page, +you can group automations by its state - whether it is enabled or not - and +custom categories (more on that later!). On the Devices page, you can even group +them by manufacturers, areas, or integrations, which is really cool because +it makes the page much easier to browse and it gives you a new perspective +on how to organize your vast network of devices. + +__TODO: Insert screenshot showing grouping.__ + +### Selection mode and batch actions + +We removed the clutter of displaying a column of checkboxes by introducing +a new selection mode. When it is toggled on, checkboxes will appear, and you +can apply actions to all your selections with one click on the toolbar. + +__TODO: Screenshot pointing out the new "enter selection mode" button.__ + +It allows you to, for example, enable or disable multiple selected entities on +the entities page at once. This new paradigm us to introduce more batch +management actions in future. + +__TODO: Screenshot showing multiple selected items with bulk actions.__ + +## Three new ways to organize + +Upon reading through and ideating on the feature request thread on +[“Automation Grouping”](https://community.home-assistant.io/t/grouping-automations-on-frontend-for-organization/102771), +we realize that organization can be done in multiple ways for different purposes. + +We learned that users who are proficient in making automations have hundreds +of them, which makes locating a particular automation hard. They often had to +resort to using "hacks" such as emojis, bracketed “tags”, or numbering each +automation to get the sort order they wanted. They needed a way to easily +filter down and break down the giant list into more manageable chunks. + +We also noticed that users are stretching our areas feature beyond its +intended purpose. For example, some users would create “areas” such as +“3D printer”, “Christmas decorations” or even “Left side of my office desk”, +in order to group different devices and entities together under one +umbrella for dashboards or automations. + +As we are developing our new dashboards and voice commands, this poses a +big problem: We would be unable to provide specialized solutions if a dashboard +blueprint or automation blueprint cannot confidently assume the context of how +it would be used. We need something more specialized. + +Therefore, to balance the basic goal of providing a more digestible UI for +all users, the need for flexibility for our power users, and the future vision +of Home Assistant, we are introducing 3 new organization structures to +Home Assistant: + +**[Floors](#floors-help-home-assistant-understand-your-house)**, +**[Labels](#labels-tag-everything-any-way-you-want)**, +and **[Categories](#categories-make-each-settings-page-easier-to-browse)** + +### Floors: Help Home Assistant understand your house Let's talk about the new organization structures, starting with **floors**. -Currently, Home Assistant has {% term areas %}. Areas can be used to group your -devices per living space in your home (like the living room or kitchen). But -if you look at your home, you might have multiple floors with its own areas. +For Home Assistant to become a truly intelligent home automation platform, +it needs to understand context: Where exactly is a device? How does one area +relate to another? What is the space used for? -This is where **floors** come in. Floors are a new way to organize your areas -per level of floors in your home. The better Home Assistant known your home, -and how it is structured, the better it can help you. +Currently, Home Assistant has {% term areas %}. Areas are used to specify th +physical location or vicinity of your devices per living space in your home +(like the living room or kitchen). However, for some users living in standalone +houses, there might be multiple floors with their own areas. - +Floors are a new way to organize your areas per level of floors in your home. +The better Home Assistant knows your home, and how it is spatially structured, +the better it can help you. -You can use floors in your automations and script as a target for your -actions. For example, you can turn off all the lights on the downstairs floor -when you go to bed. For our power users, you can even use floors in your -templates to create more advanced automations. +__TODO: Screenshot show areas page with floors.__ -## Label anything +You can use floors in your {% term automations %} and {% term scripts %} as a +target for your actions or control them with your voice. For example, you can +turn off all the lights on the downstairs floor when you go to bed, or ask +[Assist](/voice_control/) to turn on the lights upstairs. -Floors and areas are great to represent your actual home, but what if you -have different needs? This is where **labels** 🏷️ come in! +For our power users, you can even use [floors in your templates](/docs/configuration/templating/#floors) +to create the most advanced and creative automations. + +### Labels: Tag everything any way you want + +Floors and areas are great to represent your actual home, but as everyone +has their own ways of organizing their home, everyone has their own ways +of organizing the Home Assistant, too! This is where **labels** 🏷️ come in! Labels is an organization structure that is completely up to you. You can -make as many labels with any naming structure your want and assign them to -basically anything in Home Assistant. You assign labels to area, devices, -entities, automations, scripts, helpers, you name it! You can even assign -multiple labels to the same thing. +make as many labels with any naming structure, in any color 🌈 you want and +assign them to basically anything in Home Assistant. You assign labels to +anything: areas, devices, entities, automations, scripts, helpers, you name it! +You can even assign multiple labels to the same thing. ![CleanShot 2024-03-27 at 08 46 10@2x](https://github.com/home-assistant/frontend/assets/5662298/582b75af-7352-4241-8bad-3a39873c99c6) @@ -150,29 +254,63 @@ More examples? You could create a label "🔒 Security" to label and control all your security-related devices and automations. Or, "🛌 Bedrooms" to label all your bedroom areas and control all the devices in those areas at once. -Do you have solar panels or home battery? Create a label "⚡️ Heavy Energy Usage" +Do you have solar panels or home batteries? Create a label "⚡️ Heavy Energy Usage" to label devices that consume a lot of energy, you could maybe switch them off when there is not enough battery or solar energy available. You decide how to use labels, and the possibilities are endless! And for our -power users, you guessed it, you can use labels in your templates. +power users, you guessed it, you can use [labels in your templates](/docs/configuration/templating/#labels). -## Organize using categories +### Categories: Make each settings page easier to browse -Last but not least, we are introducing **categories**. Categories can be used -to group things in for organization purposes and are specific for a certain -dashboard in Home Assistant. +Last but not least, we are introducing **categories**. Categories are designed +to be paired with the aforementioned [item grouping feature](#item-grouping), +and it can be used to group things visually that are specific for a certain +table in Home Assistant. -For example, you can create as many categories as you want on the automations -dashboards, and group your automations in those categories. You can then view -your automations grouped by those categories, or filter them by those categories. +This is great for those who have a particular way to display their entities by +separating them into multiple sections on a specific page. For example, on the +automations page, you can create categories that are only used for visually +grouping automations but nowhere else, like "Notifications" or “NFC tags”. You +can then view your automations grouped or filtered by those categories. - +__TODO: Show screenshot with automations grouped by categories__ As these categories are unique for each dashboard, you can have different sets of categories depending on the place you are organizing. This means -you can have different categories on the automations dashboard than on the -scene, scripts, or helpers dashboard. +you can have different categories on the automations page than on the +scene, scripts, or helpers settings page. + +### Time to clean up your Home Assistant! + +In summary, there are a total of 4 taxonomies for organizing your entities. +It sounds like a lot, but they all serve a distinct purpose. We are extending +and clarifying areas with floors, and we are introducing labels and categories +to make your automations and many other tables to look more organized +and to be more manageable. + +What’s next? Time to dig in! Here are a few steps we recommend you to take +action on in order to organize your Home Assistant better: + +- **Migrate to labels**: + - If you have been grouping automations with emojis and bracketed text, + you can now create labels for each of them. Labels can have icons to replace + the emojis you had before. + - For areas that aren’t really physical spaces, switching them to labels will + provide you more flexibility in organizing your entities. +- **Start using categories**: + If you have a favorite way of organizing a particular page, create those + categories and group the table by them. For example, you could create a + notification category for all your notification automations and put all + notification automations in that category. +- **Group your areas into floors**: + If you live in a multi-storey home, grouping areas into floors helps with + organizing the areas as well as making them more compatible with future + features. + +Last of all, to help us to help you to perfect the design of these new features, +we would love to hear your feedback and see how you use them! Please feel free +to share them in the comments below and discuss them in our community. ## Map dashboard @@ -186,7 +324,7 @@ With the introduction of the map dashboard, it mean you could add multiple map dashboards with different entities and settings, but you can also just remove the map if you don't want it. - +__TODO: Insert screenshot__ On upgrade Home Assistant will automatically migrate your existing map integration to a map dashboard. @@ -199,7 +337,7 @@ The webpage dashboard allows you to add and embed a webpage to your dashboard. This could be a webpage from the internet, but also a local webpage or a webpage from a local server. - +__TODO: Insert webpage dashboard screenshot__ This dashboard replaces the old iFrame panel (`iframe_panel`). If you have existing panels configured in your YAML configuration, Home Assistant will @@ -247,8 +385,9 @@ behavior of locks in our user interface to require you to confirm the action. ## Even more performance! Remember how we wrote last release that [Home Assistant now boots twice as fast](/blog/2024/03/06/release-20243/#home-assistant-boots-twice-as-fast)? -Well, [@bdraco] wasn't done yet. If you thought that was fast, you are in for -a treat! 🚀 The difference is, yet again, very noticable. +Well, [@bdraco] wasn't done yet and teamed up with [@balloob]. If you thought +previous release was fast, you are in for a treat! 🚀 The difference is, +yet again, very noticable. Besides streamlining what is loaded when at startup (and doing less loading), we have also adjusted the startup time tracking. It used to be that 1 buggy @@ -257,6 +396,7 @@ longer be the case, making this a more accurate representation of the actual startup time. [@bdraco]: https://github.com/bdraco +[@balloob]: https://github.com/balloob ## Other noteworthy changes From cb6f5465b3a7c3018f55a2cd606e68c576aff97e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:09:20 +0200 Subject: [PATCH 35/84] Bump sorbet-runtime from 0.5.11323 to 0.5.11327 (#32136) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d1416feb966..7a12b2883a4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -135,7 +135,7 @@ GEM rack-protection (= 4.0.0) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - sorbet-runtime (0.5.11323) + sorbet-runtime (0.5.11327) stringex (2.8.6) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) From 10c9b3ce3dee84061a3eb4700fdf20a2fa6189d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:13:32 +0200 Subject: [PATCH 36/84] Bump ruby-lsp from 0.15.0 to 0.16.0 (#32135) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index cf1fb5443bf..774b4a7c173 100644 --- a/Gemfile +++ b/Gemfile @@ -11,7 +11,7 @@ group :development do # > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189 gem 'sassc', '2.1.0' gem 'rubocop', '1.62.1' - gem 'ruby-lsp', '0.15.0' + gem 'ruby-lsp', '0.16.0' gem 'rackup', '2.1.0' end diff --git a/Gemfile.lock b/Gemfile.lock index 7a12b2883a4..c7c06055e5c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -115,7 +115,7 @@ GEM unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.31.2) parser (>= 3.3.0.4) - ruby-lsp (0.15.0) + ruby-lsp (0.16.0) language_server-protocol (~> 3.17.0) prism (>= 0.22.0, < 0.25) sorbet-runtime (>= 0.5.10782) @@ -161,7 +161,7 @@ DEPENDENCIES rackup (= 2.1.0) rake (= 13.2.0) rubocop (= 1.62.1) - ruby-lsp (= 0.15.0) + ruby-lsp (= 0.16.0) sass-globbing (= 1.1.5) sassc (= 2.1.0) sinatra (= 4.0.0) From 0ce7035773107a36b4a634c46395303afb2c4129 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 09:16:00 +0200 Subject: [PATCH 37/84] Bump public_suffix from 5.0.4 to 5.0.5 (#32134) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c7c06055e5c..35bbc1c482f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -83,7 +83,7 @@ GEM pathutil (0.16.2) forwardable-extended (~> 2.6) prism (0.24.0) - public_suffix (5.0.4) + public_suffix (5.0.5) racc (1.7.3) rack (3.0.10) rack-protection (4.0.0) From a0e97c941dd40d7294eda4c70eed2f0adbc951f3 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 3 Apr 2024 12:17:21 +0200 Subject: [PATCH 38/84] 2024.4: Finish textual content of release notes --- .../_posts/2024-04-03-release-20244.markdown | 296 ++++++++++-------- 1 file changed, 164 insertions(+), 132 deletions(-) diff --git a/source/_posts/2024-04-03-release-20244.markdown b/source/_posts/2024-04-03-release-20244.markdown index ae14b03ecd0..34391e43a63 100644 --- a/source/_posts/2024-04-03-release-20244.markdown +++ b/source/_posts/2024-04-03-release-20244.markdown @@ -84,9 +84,9 @@ By far, the most requested feature in Home Assistant history would be: [_"Grouping Automations on frontend for organization"_](https://community.home-assistant.io/t/grouping-automations-on-frontend-for-organization/102771). -We hear you! And today, in this release, we are going to give you tools to -organize your Home Assistant setup, and we took it a few (well many) steps -further than just grouping automations! +We hear you! Today, in this release, we are going to give you tools to organize +your Home Assistant setup, and we took it a few (well, many) steps further than +just grouping {% term automations %}! We are introducing 3 (yes, you’ve read it correctly. It’s three) organization taxonomies, and we also revamped our entire table user interface plus a few @@ -95,63 +95,63 @@ goodies along the way. ## Upgraded tables! Adding more ways to organize your Home Assistant is great! But being able to -easily view, filter and navigate information is just as important. To achieve +easily view, filter, and navigate information is just as important. To achieve this, we have re-designed ALL the tables in Home Assistant. For an admin interface, tables are essential for visualizing and managing -large datasets, and Home Assistant has many tables in its settings pages. -Previously, our UI provided the ability to search, sort, as well as filter -for a few aspects, but it was relatively barebones. +large datasets. Home Assistant has many tables in its settings pages. +Previously, our UI provided the ability to search, sort, and filter for a few +aspects, but it was relatively barebones. Today, we are rolling out a revamped table UI that will be standardized across all tables in the settings pages with new and improved features. ### A new toolbar -As we are adding more features to the tables, we need to still keep the UI clean -and its features easy to find. Therefore, we added descriptive text to the -dropdown menus, and we standardized the look and feel of the toolbar buttons -and textboxes. Shiny! +As we add more features to the tables, we need to keep the UI clean and its +features easy to find. Therefore, we added descriptive text to the dropdown +menus and standardized the look and feel of the toolbar buttons and text boxes. +Shiny! __TODO: Insert screenshot hightlighting the new top bar of our data tables__ ### Filter panel -Previously, our automations page allowed you to filter by areas, entities, -or devices, but only one at a time, and the filters were tucked away in -a dropdown menu, which meant you needed to click on a dropdown menu inside -a dropdown menu to filter by area. +Previously, our automations page allowed you to filter by {% term areas %}, +{% term entities %}, or {% term devices %}, but only one at a time, and the +filters were tucked away in a dropdown menu, which meant you needed to select +a dropdown menu inside a dropdown menu to filter by area. A new filter panel fixes these issues by providing a new dual pane user interface that can let you check multiple filters across multiple filter -types on the left that stays put, and view the filtered results on the right. +types on the left that stay put and view the filtered results on the right. __TODO: Insert screenshot showing the filters active on the device automation page.__ We also introduced multiple new filter types for each table. For example, -automations can now be filtered not only by areas, entities, or devices, they -can now also be filtered by used blueprints, labels, and categories -(more on these later!). +{% term automations %} can now be filtered not only by {% term areas %}, +{% term entities %} , or {% term devices %}, but also by used +{% term blueprints %}, labels, and categories (more on these later!). -We didn’t stop at just that page! The devices and entities pages now -also has a way to filter by not only state, but also by integrations -and by areas. Almost all tables now have useful new filters to help you -find what you are looking for. +We didn’t stop at just that page! The devices and entities pages now also have +a way to filter not only by state but also by integrations and areas. Almost all +tables now have useful new filters to help you find what you are looking for. ### Item grouping -Browsing a list of hundreds of automations or thousands of entities can be -overwhelming. While filters can help narrow down the list, visually grouping -the items into smaller chunks make them much easier to browse. +Browsing a list of hundreds of {% term automations %} or thousands of +{% term entities %} can be overwhelming. While filters can help narrow the list, +visually grouping the items into smaller chunks makes browsing easier. With the item grouping feature, we introduced a new dropdown menu to pick -how you’d like the items on the table to be grouped by. On the automations page, -you can group automations by its state - whether it is enabled or not - and -custom categories (more on that later!). On the Devices page, you can even group -them by manufacturers, areas, or integrations, which is really cool because -it makes the page much easier to browse and it gives you a new perspective -on how to organize your vast network of devices. +how you’d like the items on the table to be grouped. On the automations page, +you can group automations by their {% term state %} - whether enabled +or not - and custom categories (more on that later!). On the {% term devices %} +page, you can even group them by manufacturers, {% term areas %}, +or {% term integrations %}, which is really cool because it makes the page much +easier to browse. It gives you a new perspective on organizing your vast +network of devices. __TODO: Insert screenshot showing grouping.__ @@ -163,9 +163,9 @@ can apply actions to all your selections with one click on the toolbar. __TODO: Screenshot pointing out the new "enter selection mode" button.__ -It allows you to, for example, enable or disable multiple selected entities on -the entities page at once. This new paradigm us to introduce more batch -management actions in future. +It allows you to, for example, enable or disable multiple selected +{% term entities %} on the entities page at once. This new paradigm will allow +us to introduce more batch management actions in the future. __TODO: Screenshot showing multiple selected items with bulk actions.__ @@ -175,22 +175,22 @@ Upon reading through and ideating on the feature request thread on [“Automation Grouping”](https://community.home-assistant.io/t/grouping-automations-on-frontend-for-organization/102771), we realize that organization can be done in multiple ways for different purposes. -We learned that users who are proficient in making automations have hundreds -of them, which makes locating a particular automation hard. They often had to -resort to using "hacks" such as emojis, bracketed “tags”, or numbering each -automation to get the sort order they wanted. They needed a way to easily +We learned that users who are proficient in making {% term automations %} have +hundreds of them, which makes locating a particular automation hard. They often +had to resort to using "hacks" such as emojis, bracketed “tags”, or numbering +each automation to get the sort order they wanted. They needed a way to easily filter down and break down the giant list into more manageable chunks. We also noticed that users are stretching our areas feature beyond its -intended purpose. For example, some users would create “areas” such as -“3D printer”, “Christmas decorations” or even “Left side of my office desk”, -in order to group different devices and entities together under one -umbrella for dashboards or automations. +intended purpose. For example, some users would create “{% term areas %}” such +as “3D printer”, “Christmas decorations”, or even “Left side of my office desk”, +to group different {% term devices %} and {% term entities %} together under +one umbrella for dashboards or {% term automations %}. As we are developing our new dashboards and voice commands, this poses a big problem: We would be unable to provide specialized solutions if a dashboard -blueprint or automation blueprint cannot confidently assume the context of how -it would be used. We need something more specialized. +{% term blueprint %} or automation blueprint cannot confidently assume the context of +how it would be used. We need something more specialized. Therefore, to balance the basic goal of providing a more digestible UI for all users, the need for flexibility for our power users, and the future vision @@ -203,26 +203,28 @@ and **[Categories](#categories-make-each-settings-page-easier-to-browse)** ### Floors: Help Home Assistant understand your house -Let's talk about the new organization structures, starting with **floors**. +Let's talk about the new organizational structures, starting with **floors**. -For Home Assistant to become a truly intelligent home automation platform, -it needs to understand context: Where exactly is a device? How does one area -relate to another? What is the space used for? +To become a truly intelligent home automation platform, Home Assistant needs +to understand the context: Where exactly is a {% term device%}? How does one +{%term area %} relate to another? What is the space used for? -Currently, Home Assistant has {% term areas %}. Areas are used to specify th -physical location or vicinity of your devices per living space in your home -(like the living room or kitchen). However, for some users living in standalone -houses, there might be multiple floors with their own areas. +Currently, Home Assistant has {% term areas %}. Areas specify the physical +location or vicinity of your devices per living space in your home +(like the living room or kitchen). However, some users living in standalone +houses might have multiple floors with their own areas. -Floors are a new way to organize your areas per level of floors in your home. -The better Home Assistant knows your home, and how it is spatially structured, -the better it can help you. +{% term Floors %} are a new way to organize your areas per level of floors in +your home. The better Home Assistant knows your home and how it is spatially +structured, the better it can help you. Especially when it comes to future +features like generating dashboards, voice commands, and maybe even +AI-related features. __TODO: Screenshot show areas page with floors.__ You can use floors in your {% term automations %} and {% term scripts %} as a target for your actions or control them with your voice. For example, you can -turn off all the lights on the downstairs floor when you go to bed, or ask +turn off all the lights on the downstairs floor when you go to bed or ask [Assist](/voice_control/) to turn on the lights upstairs. For our power users, you can even use [floors in your templates](/docs/configuration/templating/#floors) @@ -230,33 +232,35 @@ to create the most advanced and creative automations. ### Labels: Tag everything any way you want -Floors and areas are great to represent your actual home, but as everyone -has their own ways of organizing their home, everyone has their own ways -of organizing the Home Assistant, too! This is where **labels** 🏷️ come in! +{% term Floors %} and {% term areas %} are great for representing your actual +home, but as everyone has their own ways of organizing their home, everyone +has their own ways of organizing the Home Assistant, too! +This is where **labels** 🏷️ come in! -Labels is an organization structure that is completely up to you. You can -make as many labels with any naming structure, in any color 🌈 you want and +Labels is an organizational structure that is completely up to you. You can +make as many labels with any naming structure, in any color 🌈 you want, and assign them to basically anything in Home Assistant. You assign labels to -anything: areas, devices, entities, automations, scripts, helpers, you name it! +anything: {% term areas %}, {% term devices %}, {% term entities %}, +{% term automations %}, {% term scripts %}, helpers, you name it! You can even assign multiple labels to the same thing. ![CleanShot 2024-03-27 at 08 46 10@2x](https://github.com/home-assistant/frontend/assets/5662298/582b75af-7352-4241-8bad-3a39873c99c6) Just like with floors, you can use labels in your automations and scripts as -a target for your actions. This gives you a lot of flexibility, not just in -organizing your Home Assistant, but also in automating your home! 🤯 +a target for your {% term actions %}. This gives you a lot of flexibility, +not just in organizing your Home Assistant, but also in automating your home! 🤯 For example, you could create a label "🎄 Christmas" to label all your -Christmas decorations during the holiday season. You can then use this label +Christmas decorations during the holiday season. You can then use this label to automate all of those decorations at once or to filter them in the new tables. More examples? You could create a label "🔒 Security" to label and control all -your security-related devices and automations. Or, "🛌 Bedrooms" to label -all your bedroom areas and control all the devices in those areas at once. +your security-related devices and automations. Or, "🛌 Bedrooms" to label all +your bedroom areas and simultaneously control all the devices in those areas. -Do you have solar panels or home batteries? Create a label "⚡️ Heavy Energy Usage" -to label devices that consume a lot of energy, you could maybe switch them -off when there is not enough battery or solar energy available. +Do you have solar panels or home batteries? Create a label "⚡️ Heavy energy usage" +to label devices that consume a lot of energy. You could switch them off when +there is not enough battery or solar energy available. You decide how to use labels, and the possibilities are endless! And for our power users, you guessed it, you can use [labels in your templates](/docs/configuration/templating/#labels). @@ -265,46 +269,47 @@ power users, you guessed it, you can use [labels in your templates](/docs/config Last but not least, we are introducing **categories**. Categories are designed to be paired with the aforementioned [item grouping feature](#item-grouping), -and it can be used to group things visually that are specific for a certain -table in Home Assistant. +and it can be used to group things visually specific to a certain table +in Home Assistant. -This is great for those who have a particular way to display their entities by -separating them into multiple sections on a specific page. For example, on the -automations page, you can create categories that are only used for visually -grouping automations but nowhere else, like "Notifications" or “NFC tags”. You -can then view your automations grouped or filtered by those categories. +This is great for those who have a particular way of displaying their +{% term entities %} by separating them into multiple sections on a specific page. +For example, on the {% term automations %} page, you can create categories only +used for visually grouping automations but nowhere else, like "Notifications" +or “NFC tags”. You can then view your automations grouped or filtered by +those categories. __TODO: Show screenshot with automations grouped by categories__ As these categories are unique for each dashboard, you can have different sets of categories depending on the place you are organizing. This means -you can have different categories on the automations page than on the -scene, scripts, or helpers settings page. +you can have different categories on the automations page than the +{% term scene %}, {% term scripts %}, or helpers settings page. ### Time to clean up your Home Assistant! In summary, there are a total of 4 taxonomies for organizing your entities. It sounds like a lot, but they all serve a distinct purpose. We are extending -and clarifying areas with floors, and we are introducing labels and categories -to make your automations and many other tables to look more organized -and to be more manageable. +and clarifying {% term areas %} with {% term floors %}, and we are introducing +{% term labels %} and categories to make your {% term automations %} and many +other tables to look more organized and to be more manageable. -What’s next? Time to dig in! Here are a few steps we recommend you to take -action on in order to organize your Home Assistant better: +What’s next? Time to dig in! Here are a few steps we recommend you take +action on to organize your Home Assistant better: - **Migrate to labels**: - If you have been grouping automations with emojis and bracketed text, - you can now create labels for each of them. Labels can have icons to replace - the emojis you had before. + you can now create labels for each. Labels can have icons to replace the + emojis you had before. - For areas that aren’t really physical spaces, switching them to labels will provide you more flexibility in organizing your entities. -- **Start using categories**: +- **Start using categories**: If you have a favorite way of organizing a particular page, create those categories and group the table by them. For example, you could create a notification category for all your notification automations and put all notification automations in that category. - **Group your areas into floors**: - If you live in a multi-storey home, grouping areas into floors helps with + If you live in a multi-story home, grouping areas into floors help with organizing the areas as well as making them more compatible with future features. @@ -314,28 +319,33 @@ to share them in the comments below and discuss them in our community. ## Map dashboard -Introducing a new dashboard type this release: The **map**! 🗺️ +Introducing a new dashboard this release: The **map**! 🗺️ -Now, you might think, "Hey, we already have a map in Home Assistant!" and you -are right. However, the map was an integration that was always there, and wasn't -providing the flexibility and features we wanted. +You might think, "Hey, we already have a map dashboard in Home Assistant!" +and you are right! However, the map was an integration that was always there +and didn't provide the flexibility and features that were wanted. -With the introduction of the map dashboard, it mean you could add multiple map -dashboards with different entities and settings, but you can also just remove -the map if you don't want it. +With the map dashboard's introduction, you could add multiple map dashboards +with different entities and configuration settings. For example, create a +dashboard to show the location of your family members, another to track your +car, and another to show the location of your pets. 🐶 __TODO: Insert screenshot__ -On upgrade Home Assistant will automatically migrate your existing map +On upgrade, Home Assistant will automatically migrate your existing map integration to a map dashboard. +You don't like having the map in your sidebar? Well, that is no longer a +problem. Since it is now a dashboard it means you can remove in the dashboard +settings. + ## Webpage dashboard -Another new dashboard type this release: The **webpage**! 🌐 +Another new dashboard for this release is the **webpage**! 🌐 The webpage dashboard allows you to add and embed a webpage to your dashboard. -This could be a webpage from the internet, but also a local webpage or a -webpage from a local server. +This could be a web page from the internet or a local web page from a local +machine or device like your router or NAS. __TODO: Insert webpage dashboard screenshot__ @@ -343,39 +353,55 @@ This dashboard replaces the old iFrame panel (`iframe_panel`). If you have existing panels configured in your YAML configuration, Home Assistant will automatically migrate them to the new webpage dashboard on upgrade. +Note that not every webpage can be embedded due to security restrictions that +some sites or pages have in place, enforced by your browser, that prevent +embedding them into a Home Assistant dashboard. + ## Define the columns in the section view -Last release, we [introduced the section view](/blog/2024/03/06/release-20243/#a-new-experimental-sections-view) +In the last release, we [introduced the section view](/blog/2024/03/06/release-20243/#a-new-experimental-sections-view) with drag and drop support. We are absolutely thrilled to see how many of you loved it! 🥰 Many thanks for all the feedback and suggestions! We are prioritizing them and are working on making the section view even better in the upcoming releases. -This release, based on your feedback, we have added the ability for you to -define the number of columns in the section view is using. +In this release, based on your feedback, we have added the ability for you to +define the maximum number of columns in the section view uses. This allows you +to limit the number of columns, regardless of the screen width on which you +are viewing your dashboard. ![CleanShot 2024-03-20 at 12 47 17](https://github.com/home-assistant/frontend/assets/5878303/eb35c689-ce64-4a28-bfb0-8f4410677397) ## Adding matter devices from other controllers -We have improved the way you can add Matter devices from other controllers to +In the [February release](/blog/2024/02/07/release-20242/#matter-diagnostics-and-actions), +we added support for sharing Matter devices tied to Home Assistant with other +Matter controllers. This release, we are making the other way around easier. + +We have improved how you can add Matter devices from other controllers to Home Assistant. When you add a Matter device to Home Assistant, it will now -ask you if you want to add a new Matter device, or if you want to add an -device that is already added to another controller (like Google or Apple Home). +ask you if you want to add a new Matter device or if you want to add a device +that is already added to another controller (like Google Home or Apple Home). ![CleanShot 2024-03-26 at 10 35 18](https://github.com/home-assistant/frontend/assets/5878303/16ff6c5f-e779-46b1-aafc-cfc9089a25b8) -If you choose to add a device that is already added to another controller, -Home Assistant will guide you through the process of doing that! +Suppose you choose to add a device that has already been added to another +controller. In that case, Home Assistant will guide you through how to +achieve this step by step. ![CleanShot 2024-03-26 at 10 35 35](https://github.com/home-assistant/frontend/assets/5878303/cef33fde-7129-4431-aa5a-7ea0aa929976) ## Lock behavior improvements -Unlatching a lock? We want to make sure you don't accidentally open the door -when you miss-clicked the button while not at home. We have improved the -behavior of locks in our user interface to require you to confirm the action. +Some smart locks have an open (or unlatching) mechanism that can be triggered +remotely. The door either pops out of the lock or can be opened by pushing +against the door. + +We want to ensure you don't accidentally open the door when you miss-clicked +the button (for example, while not at home 😬). Therefore, we have improved +the behavior of locks in our user interface by requiring you to confirm the +action.