diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 35a15793d0d..c0402933ed6 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
- uses: actions/checkout@v4.1.6
+ uses: actions/checkout@v4.1.7
- name: Setting up Node.js
uses: actions/setup-node@v4.0.2
with:
@@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
- uses: actions/checkout@v4.1.6
+ uses: actions/checkout@v4.1.7
- name: Setting up Node.js
uses: actions/setup-node@v4.0.2
with:
diff --git a/CODEOWNERS b/CODEOWNERS
index 2ea273452cc..6bfca80443b 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -21,6 +21,7 @@ source/_integrations/aep_ohio.markdown @tronikos
source/_integrations/aep_texas.markdown @tronikos
source/_integrations/agent_dvr.markdown @ispysoftware
source/_integrations/air_quality.markdown @home-assistant/core
+source/_integrations/airgradient.markdown @airgradienthq @joostlek
source/_integrations/airly.markdown @bieniu
source/_integrations/airnow.markdown @asymworks
source/_integrations/airq.markdown @Sibgatulin @dl2080
@@ -60,9 +61,11 @@ source/_integrations/application_credentials.markdown @home-assistant/core
source/_integrations/apprise.markdown @caronc
source/_integrations/aprilaire.markdown @chamberlain2007
source/_integrations/aprs.markdown @PhilRW
-source/_integrations/aranet.markdown @aschmitz @thecode
+source/_integrations/apsystems.markdown @mawoka-myblock @SonnenladenGmbH
+source/_integrations/aranet.markdown @aschmitz @thecode @anrijs
source/_integrations/arcam_fmj.markdown @elupus
source/_integrations/arris_tg2492lg.markdown @vanbalken
+source/_integrations/arve.markdown @ikalnyi
source/_integrations/aseko_pool_live.markdown @milanmeu
source/_integrations/assist_pipeline.markdown @balloob @synesthesiam
source/_integrations/asuswrt.markdown @kennedyshead @ollo69
@@ -192,7 +195,7 @@ 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 @sorted-bits @glodenox
+source/_integrations/dsmr_reader.markdown @sorted-bits @glodenox @erwindouna
source/_integrations/duotecno.markdown @cereal2nd
source/_integrations/duquesne_light.markdown @tronikos
source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @andarotajo
@@ -217,6 +220,7 @@ source/_integrations/emoncms.markdown @borpin
source/_integrations/emonitor.markdown @bdraco
source/_integrations/emulated_hue.markdown @bdraco @Tho85
source/_integrations/emulated_kasa.markdown @kbickar
+source/_integrations/energenie_power_sockets.markdown @gnumpi
source/_integrations/energie_vanons.markdown @klaasnicolaas
source/_integrations/energy.markdown @home-assistant/core
source/_integrations/energyzero.markdown @klaasnicolaas
@@ -311,9 +315,9 @@ source/_integrations/gree.markdown @cmroche
source/_integrations/greeneye_monitor.markdown @jkeljo
source/_integrations/group.markdown @home-assistant/core
source/_integrations/guardian.markdown @bachya
-source/_integrations/habitica.markdown @ASMfreaK @leikoilja
+source/_integrations/habitica.markdown @ASMfreaK @leikoilja @tr4nt0r
source/_integrations/hardware.markdown @home-assistant/core
-source/_integrations/harmony.markdown @ehendrix23 @bramkragten @bdraco @mkeesey @Aohzan
+source/_integrations/harmony.markdown @ehendrix23 @bdraco @mkeesey @Aohzan
source/_integrations/hassio.markdown @home-assistant/supervisor
source/_integrations/havana_shade.markdown @starkillerOG
source/_integrations/hdmi_cec.markdown @inytar
@@ -368,6 +372,7 @@ source/_integrations/image.markdown @home-assistant/core
source/_integrations/image_processing.markdown @home-assistant/core
source/_integrations/image_upload.markdown @home-assistant/core
source/_integrations/imap.markdown @jbouwh
+source/_integrations/imgw_pib.markdown @bieniu
source/_integrations/improv_ble.markdown @emontnemery
source/_integrations/incomfort.markdown @zxdavb
source/_integrations/indianamichiganpower.markdown @tronikos
@@ -390,6 +395,7 @@ source/_integrations/iperf3.markdown @rohankapoorcom
source/_integrations/ipma.markdown @dgomes
source/_integrations/iqvia.markdown @bachya
source/_integrations/irish_rail_transport.markdown @ttroy50
+source/_integrations/isal.markdown @bdraco
source/_integrations/islamic_prayer_times.markdown @engrbm87 @cpfair
source/_integrations/ismartwindow.markdown @starkillerOG
source/_integrations/iss.markdown @DurgNomis-drol
@@ -491,6 +497,7 @@ source/_integrations/modern_forms.markdown @wonderslug
source/_integrations/moehlenhoff_alpha2.markdown @j-a-n
source/_integrations/monessen.markdown @jeeftor
source/_integrations/monoprice.markdown @etsinko @OnFreund
+source/_integrations/monzo.markdown @jakemartin-icl
source/_integrations/moon.markdown @fabaff @frenck
source/_integrations/mopeka.markdown @bdraco
source/_integrations/motion_blinds.markdown @starkillerOG
@@ -674,6 +681,7 @@ source/_integrations/sabnzbd.markdown @shaiu @jpbede
source/_integrations/saj.markdown @fredericvl
source/_integrations/samsam.markdown @klaasnicolaas
source/_integrations/samsungtv.markdown @chemelli74 @epenet
+source/_integrations/sanix.markdown @tomaszsluszniak
source/_integrations/scene.markdown @home-assistant/core
source/_integrations/schedule.markdown @home-assistant/core
source/_integrations/schlage.markdown @dknowles2
@@ -725,7 +733,6 @@ source/_integrations/smart_blinds.markdown @starkillerOG
source/_integrations/smart_home.markdown @starkillerOG
source/_integrations/smart_meter_texas.markdown @grahamwetzler
source/_integrations/smarther.markdown @cgtobi
-source/_integrations/smartthings.markdown @andrewsayre
source/_integrations/smarttub.markdown @mdz
source/_integrations/smarty.markdown @z0mbieprocess
source/_integrations/smhi.markdown @gjohansson-ST
@@ -775,7 +782,7 @@ source/_integrations/switch.markdown @home-assistant/core
source/_integrations/switch_as_x.markdown @home-assistant/core
source/_integrations/switchbee.markdown @jafar-atili
source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
-source/_integrations/switchbot_cloud.markdown @SeraphicRav
+source/_integrations/switchbot_cloud.markdown @SeraphicRav @laurence-presland
source/_integrations/switcher_kis.markdown @thecode
source/_integrations/switchmate.markdown @danielhiversen @qiz-li
source/_integrations/symfonisk.markdown @jjlawren @peterager
@@ -806,7 +813,7 @@ source/_integrations/tfiac.markdown @fredrike @mellado
source/_integrations/thermobeacon.markdown @bdraco
source/_integrations/thermoplus.markdown @bdraco
source/_integrations/thermopro.markdown @bdraco @h3ss
-source/_integrations/thethingsnetwork.markdown @fabaff
+source/_integrations/thethingsnetwork.markdown @angelnu
source/_integrations/thread.markdown @home-assistant/core
source/_integrations/tibber.markdown @danielhiversen
source/_integrations/tile.markdown @bachya
diff --git a/Gemfile b/Gemfile
index e375ae53b78..909738d85e8 100644
--- a/Gemfile
+++ b/Gemfile
@@ -10,8 +10,8 @@ group :development do
gem 'stringex', '2.8.6'
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
gem 'sassc', '2.1.0'
- gem 'rubocop', '1.64.0'
- gem 'ruby-lsp', '0.16.7'
+ gem 'rubocop', '1.64.1'
+ gem 'ruby-lsp', '0.17.3'
gem 'rackup', '2.1.0'
end
@@ -23,7 +23,7 @@ group :jekyll_plugins do
end
gem 'sinatra', '4.0.0'
-gem 'nokogiri', '1.16.5'
+gem 'nokogiri', '1.16.6'
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library
diff --git a/Gemfile.lock b/Gemfile.lock
index b7c22b79108..cd20ad0bdbe 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -21,14 +21,14 @@ GEM
sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
- concurrent-ruby (1.2.3)
+ concurrent-ruby (1.3.3)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
- ffi (1.16.3)
+ ffi (1.17.0-x86_64-linux-gnu)
forwardable-extended (2.6.0)
- google-protobuf (4.27.0-x86_64-linux)
+ google-protobuf (4.27.1-x86_64-linux)
bigdecimal
rake (>= 13)
http_parser.rb (0.8.0)
@@ -72,22 +72,23 @@ GEM
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
+ logger (1.6.0)
mercenary (0.4.0)
multi_json (1.15.0)
mustermann (3.0.0)
ruby2_keywords (~> 0.0.1)
- nokogiri (1.16.5-x86_64-linux)
+ nokogiri (1.16.6-x86_64-linux)
racc (~> 1.4)
- parallel (1.24.0)
- parser (3.3.1.0)
+ parallel (1.25.1)
+ parser (3.3.3.0)
ast (~> 2.4.1)
racc
pathutil (0.16.2)
forwardable-extended (~> 2.6)
- prism (0.29.0)
- public_suffix (5.0.5)
+ prism (0.30.0)
+ public_suffix (5.1.0)
racc (1.8.0)
- rack (3.0.11)
+ rack (3.1.3)
rack-protection (4.0.0)
base64 (>= 0.1.0)
rack (>= 3.0.0, < 4)
@@ -101,11 +102,13 @@ GEM
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
ffi (~> 1.0)
+ rbs (3.5.1)
+ logger
regexp_parser (2.9.2)
- rexml (3.2.8)
- strscan (>= 3.0.9)
- rouge (4.2.1)
- rubocop (1.64.0)
+ rexml (3.3.0)
+ strscan
+ rouge (4.3.0)
+ rubocop (1.64.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
@@ -118,15 +121,16 @@ GEM
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.31.3)
parser (>= 3.3.1.0)
- ruby-lsp (0.16.7)
+ ruby-lsp (0.17.3)
language_server-protocol (~> 3.17.0)
- prism (>= 0.29.0, < 0.30)
+ prism (>= 0.29.0, < 0.31)
+ rbs (>= 3, < 4)
sorbet-runtime (>= 0.5.10782)
ruby-progressbar (1.13.0)
ruby2_keywords (0.0.5)
safe_yaml (1.0.5)
sass (3.4.25)
- sass-embedded (1.77.2-x86_64-linux-gnu)
+ sass-embedded (1.77.5-x86_64-linux-gnu)
google-protobuf (>= 3.25, < 5.0)
sass-globbing (1.1.5)
sass (>= 3.1)
@@ -138,7 +142,7 @@ GEM
rack-protection (= 4.0.0)
rack-session (>= 2.0.0, < 3)
tilt (~> 2.0)
- sorbet-runtime (0.5.11394)
+ sorbet-runtime (0.5.11435)
stringex (2.8.6)
strscan (3.1.0)
terminal-table (3.0.2)
@@ -161,11 +165,11 @@ DEPENDENCIES
jekyll-paginate (= 1.1.0)
jekyll-sitemap (= 1.4.0)
jekyll-toc (= 0.19.0)
- nokogiri (= 1.16.5)
+ nokogiri (= 1.16.6)
rackup (= 2.1.0)
rake (= 13.2.1)
- rubocop (= 1.64.0)
- ruby-lsp (= 0.16.7)
+ rubocop (= 1.64.1)
+ ruby-lsp (= 0.17.3)
sass-globbing (= 1.1.5)
sassc (= 2.1.0)
sinatra (= 4.0.0)
diff --git a/Rakefile b/Rakefile
index ab732ac3f4f..fbfc5959bd4 100644
--- a/Rakefile
+++ b/Rakefile
@@ -30,8 +30,6 @@ task :generate do
abort("Generating alerts data failed") unless success
success = system "rake version_data"
abort("Generating version data failed") unless success
- success = system "rake blueprint_exchange_data"
- abort("Generating blueprint exchange data failed") unless success
success = system "jekyll build"
abort("Generating site failed") unless success
if ENV["CONTEXT"] != 'production'
@@ -70,7 +68,6 @@ task :preview, :listen do |t, args|
system "rake analytics_data"
system "rake version_data"
system "rake alerts_data"
- system "rake blueprint_exchange_data"
jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll build -t --watch --incremental")
compassPid = Process.spawn("compass watch")
rackupPid = Process.spawn("rackup --port #{server_port} --host #{listen_addr}")
@@ -116,14 +113,3 @@ task :version_data do
file.write(JSON.generate(remote_data))
end
end
-
-desc "Download data from the blueprint exchange @ community.home-assistant.io"
-task :blueprint_exchange_data do
- uri = URI('https://community.home-assistant.io/c/blueprints-exchange/53/l/top.json?period=all')
-
- remote_data = JSON.parse(Net::HTTP.get(uri))
-
- File.open("#{source_dir}/_data/blueprint_exchange_data.json", "w") do |file|
- file.write(JSON.generate(remote_data['topic_list']['topics']))
- end
-end
diff --git a/_config.yml b/_config.yml
index 69d96996dc6..83377b6fbee 100644
--- a/_config.yml
+++ b/_config.yml
@@ -67,8 +67,6 @@ titlecase: true # Converts page and post titles to titlecase
collections:
integrations:
output: true
- examples:
- output: true
docs:
output: true
addons:
@@ -109,9 +107,9 @@ social:
# Home Assistant release details
current_major_version: 2024
-current_minor_version: 5
-current_patch_version: 5
-date_released: 2024-05-24
+current_minor_version: 6
+current_patch_version: 3
+date_released: 2024-06-15
# 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/package-lock.json b/package-lock.json
index 26e42344a5b..34fd16851c7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,7 +23,7 @@
"textlint": "^14.0.4",
"textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1",
- "textlint-rule-terminology": "^5.0.9"
+ "textlint-rule-terminology": "^5.0.13"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -1064,12 +1064,12 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -1443,9 +1443,9 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -6113,9 +6113,9 @@
}
},
"node_modules/textlint-rule-terminology": {
- "version": "5.0.9",
- "resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-5.0.9.tgz",
- "integrity": "sha512-+6z9J8plZEtJdnaWyj0qpPtQBKEW9dq+a9mfJzOA6ZseHycnvlQzD66toyLBgm4XoGUe8ZNabS0h/eVYvY7Yyw==",
+ "version": "5.0.13",
+ "resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-5.0.13.tgz",
+ "integrity": "sha512-1LONlbrn0fRhz/eCWPrnrxc5nz07NDjLLa4yiPm/hMtn/4Gi11R0lHbVgl+Ux6l8NC/a/NS5f6zQkJqqWy5bMw==",
"dev": true,
"dependencies": {
"lodash": "^4.17.15",
diff --git a/package.json b/package.json
index bdb002fdbfe..264b89cbafe 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
"textlint": "^14.0.4",
"textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1",
- "textlint-rule-terminology": "^5.0.9"
+ "textlint-rule-terminology": "^5.0.13"
},
"resolutions": {
"minimist": ">=1.2.5"
@@ -26,6 +26,6 @@
"scripts": {
"markdown:lint": "remark --quiet --frail .",
"textlint:all": "textlint source",
- "textlint": "textlint source/_examples source/_docs source/_faq source/_integrations source/_dashboards source/cloud source/getting-started source/hassio source/dashboards"
+ "textlint": "textlint source/_docs source/_faq source/_integrations source/_dashboards source/cloud source/getting-started source/hassio source/dashboards"
}
}
diff --git a/plugins/site_pages.rb b/plugins/site_pages.rb
new file mode 100644
index 00000000000..517f4571195
--- /dev/null
+++ b/plugins/site_pages.rb
@@ -0,0 +1,27 @@
+module Jekyll
+ class SitePagesGenerator < Jekyll::Generator
+ def generate(site)
+ all_pages = Array.new
+
+ site.collections.each do |name, collection|
+ all_pages.concat(collection.docs)
+ end
+
+ site.data["site_pages"] = all_pages
+ .concat(site.pages)
+ .concat(site.documents)
+ .map { |entry|
+ [
+ entry.url.to_s,
+ {
+ "title" => entry["title"],
+ "description" => entry["description"],
+ "url" => entry.url,
+ "relative_path" => entry.relative_path
+ }
+ ]
+ }
+ .to_h
+ end
+ end
+end
\ No newline at end of file
diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss
index 3af2fd05e58..37cc00450fa 100644
--- a/sass/custom/_paulus.scss
+++ b/sass/custom/_paulus.scss
@@ -490,6 +490,10 @@ article.listing {
box-shadow: none;
}
+ video {
+ max-width: 100%;
+ }
+
&>table,
&>.entry-content>table {
background-color: #f3fcf5;
diff --git a/source/_dashboards/button.markdown b/source/_dashboards/button.markdown
index c7eed878e8c..25183613562 100644
--- a/source/_dashboards/button.markdown
+++ b/source/_dashboards/button.markdown
@@ -128,7 +128,12 @@ type: button
entity: light.living_room
```
-Button card with a button name and a script that runs when card is tapped:
+Button card with a button name and a [script](/docs/scripts/) that runs when card is tapped:
+
+
+
+Screenshot of the button card with script service.
+
```yaml
type: button
@@ -141,7 +146,60 @@ tap_action:
entity_id: script.turn_off_lights
```
+Example of 4 buttons on a vertical stack card:
+
-
-Screenshot of the button card with script service.
+
+Screenshot of a vertical stack card with 4 buttons and an entity selector.
+
+The image shows a vertical stack card with 4 buttons arranged in a horizontal stack card and an entity selector. The buttons use the toggle action to run a script, for example, the Netflix script, which starts up the TV and opens Netflix. To learn how to create scripts, refer to [scripts](/docs/scripts/).
+
+```yaml
+cards:
+ - entities:
+ - entity: input_select.living_room_scene
+ name: Scene
+ show_header_toggle: false
+ type: entities
+ - type: horizontal-stack
+ cards:
+ - name: Watch Netflix
+ entity: script.netflix
+ type: button
+ tap_action:
+ action: toggle
+ hold_action:
+ action: more-info
+ show_name: true
+ show_icon: true
+ - name: Watch YouTube
+ entity: script.youtube
+ type: button
+ tap_action:
+ action: toggle
+ hold_action:
+ action: more-info
+ show_name: true
+ show_icon: true
+ - name: Wake PC
+ entity: script.wake_on_lan
+ type: button
+ tap_action:
+ action: toggle
+ icon: mdi:desktop-tower
+ show_name: true
+ show_icon: true
+ show_state: false
+ - name: Go to sleep
+ entity: script.sleep
+ type: button
+ tap_action:
+ action: toggle
+ icon: mdi:sleep
+ hold_action:
+ action: more-info
+ show_name: true
+ show_icon: true
+type: vertical-stack
+```
diff --git a/source/_dashboards/conditional.markdown b/source/_dashboards/conditional.markdown
index ead8ea37a11..276bad01362 100644
--- a/source/_dashboards/conditional.markdown
+++ b/source/_dashboards/conditional.markdown
@@ -6,6 +6,8 @@ description: The Conditional card displays another card based on conditions.
related:
- docs: /dashboards/cards/
title: Dashboard cards
+ - docs: /dashboards/cards/#show-or-hide-a-card-conditionally
+ title: Conditional settings on the card's visibility tab
---
The conditional card displays another card based on conditions.
@@ -15,6 +17,8 @@ The conditional card displays another card based on conditions.
{% include dashboard/edit_dashboard.md %}
Note that while editing the dashboard, the card will always be shown, so be sure to exit editing mode to test the conditions.
+The conditional card can still be used. However, it is now possible to define a setting to show or hide a card conditionally directly on each card type, on its [Visibility](/dashboards/cards/#show-or-hide-a-card-conditionally) tab.
+
Most options for this card can be configured via the user interface.
## YAML configuration
diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml
index 3e0dcb6c893..6993e422c47 100644
--- a/source/_data/glossary.yml
+++ b/source/_data/glossary.yml
@@ -562,7 +562,7 @@
uses its radio frequency (RF) radio to communicate with the Thread mesh
network. In case of Matter, the data that is forwarded is encrypted.
Examples of Thread border routers are the Nest Hub (2nd gen), the HomePod
- mini, and the Home Assistant SkyConnect together with the OpenThread Border
+ mini, and the Home Assistant Connect ZBT-1 together with the OpenThread Border
Router add-on.
link: /integrations/thread/#about-thread-border-routers
aliases:
diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown
index 0ac7b292c1a..dbee90a3ba9 100644
--- a/source/_docs/configuration.markdown
+++ b/source/_docs/configuration.markdown
@@ -40,11 +40,11 @@ File access depends on your [installation method](/installation/#advanced-instal
- [Configure file access on the Operating System](/common-tasks/os/#configuring-access-to-files):
- If you are unsure which option to choose, install the [file editor add-on](/common-tasks/os/#installing-and-using-the-file-editor-add-on).
- - Alternatively, use the [VS Code add-on](/common-tasks/os/#installing-and-using-the-visual-studio-code-vsc-add-on). This editor offers live syntax checking and auto-fill of various Home Assistant entities. But it looks more complex than the file editor.
+ - Alternatively, use the [Studio Code Server add-on](/common-tasks/os/#installing-and-using-the-visual-studio-code-vsc-add-on). This editor offers live syntax checking and auto-fill of various Home Assistant entities. But it looks more complex than the file editor.
- If you prefer to use a file editor on your computer, use the [Samba add-on](/common-tasks/os/#installing-and-using-the-samba-add-on).
- [Configure file access on Supervised](/common-tasks/supervised/#configuring-access-to-files):
- Using the [File editor add-on](/common-tasks/supervised/#installing-and-using-the-file-editor-add-on).
- - Using the [VS Code add-on](/common-tasks/supervised/#installing-and-using-the-visual-studio-code-vsc-add-on).
+ - Using the [Studio Code Server add-on](/common-tasks/supervised/#installing-and-using-the-visual-studio-code-vsc-add-on).
- Using the [Samba add-on](/common-tasks/supervised/#installing-and-using-the-samba-add-on).
2. To look up the path to your configuration directory, go to {% my system_health title="**Settings** > **System** > **Repairs**" %}.
@@ -87,4 +87,4 @@ For configuration changes to become effective, the configuration must be reloade
## Troubleshooting the configuration
-If you run into trouble while configuring Home Assistant, refer to the [configuration troubleshooting page](/docs/configuration/troubleshooting/) and the [`configuration.yaml` examples](/examples/#example-configurationyaml).
+If you run into trouble while configuring Home Assistant, refer to the [configuration troubleshooting page](/docs/configuration/troubleshooting/).
diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown
index d39bb0e3976..2e47158f0be 100644
--- a/source/_docs/configuration/customizing-devices.markdown
+++ b/source/_docs/configuration/customizing-devices.markdown
@@ -6,31 +6,35 @@ related:
- docs: /docs/configuration/
title: configuration.yaml file
- docs: /docs/configuration/troubleshooting/
+ - docs: /docs/organizing/labels/
---
-## Changing entity name and entity ID
+## Customizing an entity
-After adding a new device, the entity may not have a name and the automatically assigned entity ID might look very technical. If you like, you can use your own naming concept for devices.
+After adding a new device, you might find the automatically assigned entity ID too technical and the entity lacking a friendly name. You can personalize these elements to better fit your naming conventions or modify other attributes like the icon.
-To change the entity ID and friendly name of supported entities, follow these steps:
+To change entity attributes, follow these steps:
1. Go to {% my entities title="**Settings** > **Devices & services** > **Entities**" %} and select the entity from the list.
2. In the top right corner, select the cog icon.

-3. Enter the new name or the new entity ID.
- - For example, the entity ID here could be `light.bedroom_lightstrip_3`.
- - Do not change the domain of the entity - the part before the `.` (period).
- - You can use lowercase letters, numbers, and underscores.
- - The name must not start or end with an underscore.
+3. Enter or edit the attributes:
+ - For example, the entity ID here could be shortened to `binary_sensor.living_room_motion_1`.
+ - Do not change the domain of the entity - the part before the `.` (binary_sensor, in this example).
+ - You can use lowercase letters, numbers, and underscores.
+ - The ID must not start or end with an underscore.
+ - Enter or edit the friendly name.
+ - If needed, from the **Shown as** menu, you can select a different [device class](/integrations/homeassistant/#device-class).
+ - If you like, add a [label](/docs/organizing/labels/).

-4. Select **Update**.
+4. To apply the changes, select **Update**.
5. If you have used this entity in automations and scripts, you need to rename the entity ID there, too.
- Go to {% my automations title="**Settings** > **Automations & Scenes**" %} open the respective tab and find your automation or script.
- 
+### Customizing an entity in YAML
-If your entity is not supported, or you cannot customize what you need via this method, you need to edit the settings in your {% term "`configuration.yaml`" %} file. For a detailed description of the entity configuration variables and device class information, refer to the [Home Assistant Core integration documentation](/integrations/homeassistant/).
+If your entity is not supported, or you could not customize what you need via the user interface, you need to edit the settings in your {% term "`configuration.yaml`" %} file. For a detailed description of the entity configuration variables and [device class](/integrations/homeassistant/#device-class) information, refer to the [Home Assistant Core integration documentation](/integrations/homeassistant/).
diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown
index 582751ca0dd..4a4f9576d6e 100644
--- a/source/_docs/configuration/splitting_configuration.markdown
+++ b/source/_docs/configuration/splitting_configuration.markdown
@@ -4,8 +4,6 @@ description: "Splitting the configuration.yaml into several files."
related:
- docs: /docs/configuration/
title: configuration.yaml file
- - docs: /examples/#example-configurationyaml
- title: Example configuration files by the community
- docs: /docs/configuration/packages
title: Using packages to organize configuration files
---
@@ -14,7 +12,7 @@ So you've been using Home Assistant for a while now and your {% term "`configura
## Example configuration files for inspiration
-First off, several community members have sanitized (read: without API keys/passwords) versions of their configurations available for viewing. You can see a [list of example files here](/examples/#example-configurationyaml).
+First off, several community members have sanitized (read: without API keys/passwords) versions of their configurations available for viewing. You can see a [list of example configuration on GitHub](https://github.com/search?q=topic%3Ahome-assistant-config&type=Repositories).
As commenting code doesn't always happen, please read on to learn in detail how configuration files can be structured.
diff --git a/source/_docs/frontend.markdown b/source/_docs/frontend.markdown
index 12852b2891c..2b3cbcc678a 100644
--- a/source/_docs/frontend.markdown
+++ b/source/_docs/frontend.markdown
@@ -19,7 +19,3 @@ The frontend is built with [Polymer](https://www.polymer-project.org/).
## Icons
Home Assistant utilizes the community-driven [Material Design Icons](https://pictogrammers.com/library/mdi/) project for icons in the frontend. The [Icons section](/docs/frontend/icons/) has more information on how to use icons and suggest new ones.
-
-## Examples
-
-The [User Interface section](/examples/#user-interface) can give you some starting points to expand the frontend.
diff --git a/source/_docs/troubleshooting_general.markdown b/source/_docs/troubleshooting_general.markdown
index 859adac0b23..46fb8379d41 100644
--- a/source/_docs/troubleshooting_general.markdown
+++ b/source/_docs/troubleshooting_general.markdown
@@ -32,7 +32,7 @@ Recovery mode loads a minimum set of integrations to allow troubleshooting the c
You need to identify the issue in the configuration files and fix it there. The issue could be caused by something as simple as an invalid YAML file.
-- If you are running {% term "Home Assistant Operating System" %}, you can install an add-on such as VS code to edit the configuration file if needed.
+- If you are running {% term "Home Assistant Operating System" %}, you can install an add-on such as Studio Code Server to edit the configuration file if needed.
- If you are still logged in, you can [edit your configuration](/docs/configuration/#editing-configurationyaml).
- In the Home Assistant user interface, open the add-on you usually use and edit the configuration file.
- Restart Home Assistant.
diff --git a/source/_examples/configuration_yaml_by_DrJohnT.markdown b/source/_examples/configuration_yaml_by_DrJohnT.markdown
deleted file mode 100644
index 124a444f5d5..00000000000
--- a/source/_examples/configuration_yaml_by_DrJohnT.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by DrJohnT"
-description: "Velux windows, Drayton Wiser heating, Audio / Visual, lighting and humidity controlled fans"
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/DrJohnT/HomeAssistantPublicConfig
----
diff --git a/source/_examples/configuration_yaml_by_alok_saboo.markdown b/source/_examples/configuration_yaml_by_alok_saboo.markdown
deleted file mode 100644
index 9bfbf050aab..00000000000
--- a/source/_examples/configuration_yaml_by_alok_saboo.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by Alok Saboo"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/arsaboo/homeassistant-config
----
diff --git a/source/_examples/configuration_yaml_by_aneisch.markdown b/source/_examples/configuration_yaml_by_aneisch.markdown
deleted file mode 100644
index bb21829efee..00000000000
--- a/source/_examples/configuration_yaml_by_aneisch.markdown
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: "Configuration.yaml by aneisch"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/aneisch/home-assistant-config/
----
-
diff --git a/source/_examples/configuration_yaml_by_apocrathia.markdown b/source/_examples/configuration_yaml_by_apocrathia.markdown
deleted file mode 100644
index bf0fb8f529d..00000000000
--- a/source/_examples/configuration_yaml_by_apocrathia.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by Apocrathia"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/Apocrathia/home-assistant-config/
----
diff --git a/source/_examples/configuration_yaml_by_carlo_costanzo.markdown b/source/_examples/configuration_yaml_by_carlo_costanzo.markdown
deleted file mode 100644
index 407fb043c82..00000000000
--- a/source/_examples/configuration_yaml_by_carlo_costanzo.markdown
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: "Configuration.yaml by Carlo Costanzo"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/CCOSTAN/Home-AssistantConfig
----
-
diff --git a/source/_examples/configuration_yaml_by_cy1701.markdown b/source/_examples/configuration_yaml_by_cy1701.markdown
deleted file mode 100644
index d0ed0ca6217..00000000000
--- a/source/_examples/configuration_yaml_by_cy1701.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by cy1701"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/cy1701/Home-Assistant-Configuration
----
diff --git a/source/_examples/configuration_yaml_by_dannytsang.markdown b/source/_examples/configuration_yaml_by_dannytsang.markdown
deleted file mode 100644
index 84a3dcc7a4b..00000000000
--- a/source/_examples/configuration_yaml_by_dannytsang.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by dannytsang"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/dannytsang/homeassistant-config
----
diff --git a/source/_examples/configuration_yaml_by_geekofweek.markdown b/source/_examples/configuration_yaml_by_geekofweek.markdown
deleted file mode 100644
index 270eaf9aff7..00000000000
--- a/source/_examples/configuration_yaml_by_geekofweek.markdown
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: "Configuration.yaml by geekofweek"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/geekofweek/homeassistant
----
-
diff --git a/source/_examples/configuration_yaml_by_jimpower.markdown b/source/_examples/configuration_yaml_by_jimpower.markdown
deleted file mode 100644
index f603dd16b69..00000000000
--- a/source/_examples/configuration_yaml_by_jimpower.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by jimpower"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/JamesMcCarthy79/Home-Assistant-Config
----
diff --git a/source/_examples/configuration_yaml_by_jonathan_adams.markdown b/source/_examples/configuration_yaml_by_jonathan_adams.markdown
deleted file mode 100644
index a2199ae18e1..00000000000
--- a/source/_examples/configuration_yaml_by_jonathan_adams.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by Jonathan Adams"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/jonathanadams/Home-Assistant-Configuration
----
diff --git a/source/_examples/configuration_yaml_by_klaasnicolaas.markdown b/source/_examples/configuration_yaml_by_klaasnicolaas.markdown
deleted file mode 100644
index 51517847973..00000000000
--- a/source/_examples/configuration_yaml_by_klaasnicolaas.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by klaasnicolaas"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/klaasnicolaas/Student-homeassistant-config
----
diff --git a/source/_examples/configuration_yaml_by_mcaminiti.markdown b/source/_examples/configuration_yaml_by_mcaminiti.markdown
deleted file mode 100644
index 3eb06b2c74e..00000000000
--- a/source/_examples/configuration_yaml_by_mcaminiti.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by mcaminiti"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/mcaminiti/homeassistant
----
diff --git a/source/_examples/configuration_yaml_by_ntalekt.markdown b/source/_examples/configuration_yaml_by_ntalekt.markdown
deleted file mode 100644
index 95c4fe75962..00000000000
--- a/source/_examples/configuration_yaml_by_ntalekt.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by ntalekt"
-description: "Unifi, ZHA, Pentair, Tuya, Tasmota"
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/ntalekt/homeassistant
----
diff --git a/source/_examples/configuration_yaml_by_omerome83.markdown b/source/_examples/configuration_yaml_by_omerome83.markdown
deleted file mode 100644
index 52cd0e3f482..00000000000
--- a/source/_examples/configuration_yaml_by_omerome83.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by omerome83"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/omerome83/homeassistant
----
diff --git a/source/_examples/configuration_yaml_by_shortbloke.markdown b/source/_examples/configuration_yaml_by_shortbloke.markdown
deleted file mode 100644
index efba443af03..00000000000
--- a/source/_examples/configuration_yaml_by_shortbloke.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by Shortbloke"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/shortbloke/home_assistant_config
----
diff --git a/source/_examples/configuration_yaml_by_skalavala.markdown b/source/_examples/configuration_yaml_by_skalavala.markdown
deleted file mode 100644
index dde426b64b8..00000000000
--- a/source/_examples/configuration_yaml_by_skalavala.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by Mahasri Kalavala (@skalavala)"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/skalavala/mysmarthome
----
diff --git a/source/_examples/configuration_yaml_by_tinkerer.markdown b/source/_examples/configuration_yaml_by_tinkerer.markdown
deleted file mode 100644
index 80efdb9bafd..00000000000
--- a/source/_examples/configuration_yaml_by_tinkerer.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by Tinkerer"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/DubhAd/Home-AssistantConfig/
----
diff --git a/source/_examples/configuration_yaml_by_ubhits.markdown b/source/_examples/configuration_yaml_by_ubhits.markdown
deleted file mode 100644
index 915cc98a05e..00000000000
--- a/source/_examples/configuration_yaml_by_ubhits.markdown
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Configuration.yaml by ubhits (HA 'Steroids' Config)"
-description: ""
-ha_category: Example configuration.yaml
-ha_external_link: https://github.com/UbhiTS/ha-config-ataraxis
----
diff --git a/source/_examples/google_maps_card.markdown b/source/_examples/google_maps_card.markdown
deleted file mode 100644
index 10b06e9c4c8..00000000000
--- a/source/_examples/google_maps_card.markdown
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: "Show Google Maps as a card"
-description: "Example how to show a Google Map as a Google card."
-ha_category: User Interface
----
-
-Using the [generic camera platform] you can present any image on the internet as a camera. Starting release 0.27 these URLs can also be based on a template. This example uses this functionality to point a generic camera at the Google Maps static image API and pass in the location of a device.
-
-As of June 2018, Google has changed the API limits for static maps. You now need to have a Google Maps API key. Instructions for registering a key can be found [here](https://github.com/googlemaps/google-maps-services-python#api-keys). Replace `YOUR_API_KEY` with the key you registered.
-
-It also leverages the `limit_refetch_to_url_change` option to ensure that we do not make a lot of requests to the Google Maps API.
-
-{% raw %}
-
-```yaml
-# Example configuration.yaml entry.
-# Shows device_tracker.demo_paulus on a map.
-camera:
- name: Paulus
- platform: generic
- still_image_url: https://maps.googleapis.com/maps/api/staticmap?center={{ state_attr('device_tracker.demo_paulus', 'latitude') }},{{ state_attr('device_tracker.demo_paulus', 'longitude') }}&zoom=13&size=500x500&maptype=roadmap&markers=color:blue%7Clabel:P%7C{{ state_attr('device_tracker.demo_paulus', 'latitude') }},{{ state_attr('device_tracker.demo_paulus', 'longitude') }}&key=YOUR_API_KEY
- limit_refetch_to_url_change: true
-```
-
-{% endraw %}
-
-
-
-
-
-[generic camera platform]: /integrations/generic_ip_camera
diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html
index 5e7aa5c9a9f..c44c70668a4 100644
--- a/source/_includes/asides/docs_navigation.html
+++ b/source/_includes/asides/docs_navigation.html
@@ -12,7 +12,6 @@
- {% active_link /installation Installation %}
- {% active_link /getting-started Getting started & onboarding %}
- - {% active_link /dashboards Dashboards & views %}
- {% active_link /common-tasks/os/ Common tasks %}
-
{% active_link /docs/troubleshooting/ Troubleshooting installation
@@ -26,7 +25,8 @@
-
{% active_link /docs/frontend/ Frontend %}
- - {% active_link /docs/organizing/ Organizing %}
+ - {% active_link /dashboards Dashboards & views %}
+ - {% active_link /docs/organizing/ Organizing: areas, floors, labels, categories, ... %}
- {% active_link /docs/frontend/icons/ Icons%}
@@ -181,7 +181,7 @@
Home Assistant Yellow
-
- Home Assistant SkyConnect
+ Home Assistant Connect ZBT-1
diff --git a/source/_includes/asides/voice_navigation.html b/source/_includes/asides/voice_navigation.html
index 8df0b85b414..55d613f5eb2 100644
--- a/source/_includes/asides/voice_navigation.html
+++ b/source/_includes/asides/voice_navigation.html
@@ -22,7 +22,7 @@
{% active_link /voice_control/custom_sentences/ Custom sentences %}
{% active_link /voice_control/aliases/ Using aliases %}
{% active_link /voice_control/using_tts_in_automation/ Using Piper TTS in automations %}
- {% active_link /voice_control/assist_create_open_ai_personality/ Creating a personality with OpenAI %}
+ {% active_link /voice_control/assist_create_open_ai_personality/ Creating a personality with AI %}
diff --git a/source/_includes/common-tasks/backups.md b/source/_includes/common-tasks/backups.md
index ca181c1c687..27d37fe2b9f 100644
--- a/source/_includes/common-tasks/backups.md
+++ b/source/_includes/common-tasks/backups.md
@@ -103,7 +103,7 @@ You can use a backup during the onboarding process to restore your configuration
##### To restore a backup during onboarding
-1. If you are migrating to a new device and you had controllers or radios connected (such as a Z-Wave stick or SkyConnect):
+1. If you are migrating to a new device and you had controllers or radios connected (such as a Z-Wave stick or Connect ZBT-1):
- make sure to plug them into the new device.
2. After Home Assistant has been installed, on the welcome screen, select **Restore from backup**.
- Then, select **Upload backup**.
diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md
index e9af36c2a5c..7adfa27b438 100644
--- a/source/_includes/installation/operating_system.md
+++ b/source/_includes/installation/operating_system.md
@@ -140,7 +140,9 @@ To write the HAOS image to the boot medium on your x86-64 hardware, there are 2
### Method 2: Installing HAOS directly from a boot medium
+
Use this method only if Method 1 does not work for you.
+
#### Required material
@@ -205,15 +207,16 @@ Use this method only if Method 1 does not work for you.
*Select and copy the URL or use the "copy" button that appear when you hover it.*
5. Paste the URL into your browser to start the download.
-6. Select **Flash from file** and select the image you just downloaded.
+6. Extract the file you just downloaded.
+7. Select **Flash from file** and select the image you just extracted.
- Do not use **Flash from URL**. It does not work on some systems.

-7. **Select target**.
+8. **Select target**.

-8. Select the boot medium ({{site.installation.types[page.installation_type].installation_media}}) you want to use for your installation.
+9. Select the boot medium ({{site.installation.types[page.installation_type].installation_media}}) you want to use for your installation.

-9. Select **Flash!** to start writing the image.
+10. Select **Flash!** to start writing the image.
- If the operation fails, decompress the .xz file and try again.

- When Balena Etcher has finished writing the image, you will see a confirmation.
@@ -370,7 +373,7 @@ Minimum recommended assignments:
content: |
```bash
- virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk ,bus=sata --import --graphics none --boot uefi
+ virt-install --name haos --description "Home Assistant OS" --os-variant=generic --ram=4096 --vcpus=2 --disk ,bus=scsi --controller type=scsi,model=virtio-scsi --import --graphics none --boot uefi
```
@@ -391,7 +394,7 @@ Minimum recommended assignments:
You can recognize the Sonoff dongle at `Bus 003 Device 003`. So the command to install the VM will become:
```bash
- virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk
,bus=sata --import --graphics none --boot uefi --hostdev 003.003
+ virt-install --name haos --description "Home Assistant OS" --os-variant=generic --ram=4096 --vcpus=2 --disk ,bus=scsi --controller type=scsi,model=virtio-scsi --import --graphics none --boot uefi --hostdev 003.003
```
Note that this configuration (bus 003, device 003) is just an example, your dongle could be on another bus and/or with another device ID.
diff --git a/source/_includes/related.html b/source/_includes/related.html
index 81fd4ba91d0..65ffe151326 100644
--- a/source/_includes/related.html
+++ b/source/_includes/related.html
@@ -11,23 +11,19 @@
Related topics
- {% assign site_part = "pages,documents" | split: "," %}
{%- for related in related_topics -%}
- {%- for part in site_part -%}
- {%- for entry in site[part] -%}
{% assign computed = related.docs | split: "#" %}
+ {% assign target_url = computed[0] %}
+ {% assign target_page = site.data["site_pages"][target_url] %}
+ {% unless target_page == null %}
{% assign link_target = computed[1] %}
{% assign suggested_title = related.title | default: link_target | split: "-" | join: " " | capitalize %}
- {%- if computed[0] == entry.url -%}
-
-
- {{ suggested_title | default: entry.title}}
+
+ {{ suggested_title | default: target_page["title"]}}
- {% break %}{% break %}
- {%- endif -%}
- {%- endfor -%}
- {%- endfor -%}
+ {% endunless %}
{%- endfor -%}
diff --git a/source/_includes/site/header.html b/source/_includes/site/header.html
index f2cbb54b3d6..b318235c053 100644
--- a/source/_includes/site/header.html
+++ b/source/_includes/site/header.html
@@ -45,7 +45,6 @@
Integrations
- Examples
Blog
Need help?
diff --git a/source/_integrations/airgradient.markdown b/source/_integrations/airgradient.markdown
index e387d231644..ba8a2a12250 100644
--- a/source/_integrations/airgradient.markdown
+++ b/source/_integrations/airgradient.markdown
@@ -1,6 +1,6 @@
---
-title: Airgradient
-description: Instructions on how to setup Airgradient devices in Home Assistant.
+title: AirGradient
+description: Instructions on how to setup AirGradient devices in Home Assistant.
ha_category:
- Health
- Sensor
@@ -13,12 +13,17 @@ ha_codeowners:
ha_domain: airgradient
ha_platforms:
- sensor
- - select
-ha_integration_type: integration
+ha_integration_type: device
ha_zeroconf: true
---
-The Airgradient integration will fetch data from your [Airgradient devices](https://www.airgradient.com/).
+The AirGradient integration will fetch data from your [AirGradient devices](https://www.airgradient.com/).
+
+
+
+In order for the device to be set up or discovered by Home Assistant, the firmware version should be at least 3.1.1.
+
+
@@ -35,7 +40,7 @@ The integration will fetch data from each device. The following sensors are supp
- Carbon dioxide
- Humidity
- Nitrogen index
-- PM0.03 count
+- PM0.3 count
- PM1 density
- PM2.5 density
- PM10 density
@@ -51,4 +56,4 @@ The integration provides a few configuration entities to customize the device ex
The settings are only applied to the device when the configuration source is set to local.
The following entities are supported:
-- Display temperature unit
\ No newline at end of file
+- Display temperature unit
diff --git a/source/_integrations/alarmdecoder.markdown b/source/_integrations/alarmdecoder.markdown
index 1d88191a2fb..2faa1d6d50a 100644
--- a/source/_integrations/alarmdecoder.markdown
+++ b/source/_integrations/alarmdecoder.markdown
@@ -13,7 +13,7 @@ ha_platforms:
- alarm_control_panel
- binary_sensor
- sensor
-ha_integration_type: integration
+ha_integration_type: device
---
The **AlarmDecoder** {% term integration %} will allow Home Assistant users who own either a DSC or Honeywell alarm panel to leverage their alarm system and its sensors to provide Home Assistant with rich information about their homes. Connectivity between Home Assistant and the alarm panel is accomplished through a device produced by Nu Tech Software Solutions, known as the AlarmDecoder. The AlarmDecoder devices provide a serial, TCP/IP socket or USB interface to the alarm panel, where it emulates an alarm keypad.
diff --git a/source/_integrations/apsystems.markdown b/source/_integrations/apsystems.markdown
index d87e9a28703..4822d9a8a3c 100644
--- a/source/_integrations/apsystems.markdown
+++ b/source/_integrations/apsystems.markdown
@@ -11,6 +11,9 @@ ha_platforms:
- sensor
- number
ha_integration_type: device
+ha_codeowners:
+ - '@mawoka-myblock'
+ - '@SonnenladenGmbH'
---
The **APsystems** {% term integration %} allows you to read the data from your [APsystems EZ1](https://emea.apsystems.com/diy/ez1/) microinverter. It also allows you to set the output limit to any number between 30 and 800 watts.
diff --git a/source/_integrations/aranet.markdown b/source/_integrations/aranet.markdown
index ed7e0fa35dc..92001ff7a37 100644
--- a/source/_integrations/aranet.markdown
+++ b/source/_integrations/aranet.markdown
@@ -9,6 +9,7 @@ ha_iot_class: Local Push
ha_codeowners:
- '@aschmitz'
- '@thecode'
+ - '@anrijs'
ha_domain: aranet
ha_config_flow: true
ha_platforms:
diff --git a/source/_integrations/arve.markdown b/source/_integrations/arve.markdown
index d4d075086e3..ba4453187fa 100644
--- a/source/_integrations/arve.markdown
+++ b/source/_integrations/arve.markdown
@@ -5,14 +5,15 @@ ha_category:
- Environment
- Health
- Sensor
-ha_release: "2024.5"
+ha_release: '2024.5'
ha_iot_class: Cloud Polling
ha_codeowners:
- - "@ikalnyi"
+ - '@ikalnyi'
ha_domain: arve
ha_platforms:
- sensor
-ha_integration_type: hub
+ha_integration_type: integration
+ha_config_flow: true
---
The **Arve** {% term integration %} provides the ability to monitor real-life air quality data, as measured by your [Arve](https://www.arveair.com) device.
diff --git a/source/_integrations/aurora_abb_powerone.markdown b/source/_integrations/aurora_abb_powerone.markdown
index 8d4634c0c1d..cc1be66b23c 100644
--- a/source/_integrations/aurora_abb_powerone.markdown
+++ b/source/_integrations/aurora_abb_powerone.markdown
@@ -12,7 +12,7 @@ ha_domain: aurora_abb_powerone
ha_platforms:
- sensor
ha_config_flow: true
-ha_integration_type: integration
+ha_integration_type: device
---
This implements a direct RS485 connection to a solar inverter in the
diff --git a/source/_integrations/azure_data_explorer.markdown b/source/_integrations/azure_data_explorer.markdown
index 4925439ada0..ba37fd16494 100644
--- a/source/_integrations/azure_data_explorer.markdown
+++ b/source/_integrations/azure_data_explorer.markdown
@@ -70,7 +70,7 @@ There are a few differences between the **PAYG** and **Free** versions:
.create table ['
'] (entity_id: string, state: string, attributes: dynamic, last_changed: datetime, last_updated: datetime, context: dynamic)
// Creat a mapping from the incoming JSON to the table and columns just created (replace the name with the table name from the previous step)
-.create table [''] ingestion json mapping ['ha_json_mapping'] '[{"column":"entity_id","path":"$.entity_id"},{"column":"state","path":"$.state"},{"column":"attributes","path":"$.attributes"},{"column":"last_changed","path":"$.last_canged"},{"column":"last_updated","path":"$.last_updated"},{"column":"context","path":"$.context"}]'
+.create table [''] ingestion json mapping 'ha_json_mapping' '[{"column":"entity_id","path":"$.entity_id"},{"column":"state","path":"$.state"},{"column":"attributes","path":"$.attributes"},{"column":"last_changed","path":"$.last_canged"},{"column":"last_updated","path":"$.last_updated"},{"column":"context","path":"$.context"}]'
```
This is an example with a free cluster for reference:
@@ -82,7 +82,7 @@ This is an example with a free cluster for reference:
.create table ['raw'] (entity_id: string, state: string, attributes: dynamic, last_changed: datetime, last_updated: datetime, context: dynamic)
-.create table ['raw'] ingestion json mapping ['ha_json_mapping'] '[{"column":"entity_id","path":"$.entity_id"},{"column":"state","path":"$.state"},{"column":"attributes","path":"$.attributes"},{"column":"last_changed","path":"$.last_canged"},{"column":"last_updated","path":"$.last_updated"},{"column":"context","path":"$.context"}]'
+.create table ['raw'] ingestion json mapping 'ha_json_mapping' '[{"column":"entity_id","path":"$.entity_id"},{"column":"state","path":"$.state"},{"column":"attributes","path":"$.attributes"},{"column":"last_changed","path":"$.last_canged"},{"column":"last_updated","path":"$.last_updated"},{"column":"context","path":"$.context"}]'
```
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/discord.markdown b/source/_integrations/discord.markdown
index 2a1da612d6c..f5e2c9476f0 100644
--- a/source/_integrations/discord.markdown
+++ b/source/_integrations/discord.markdown
@@ -63,7 +63,29 @@ This channel or a user ID has to be used as the target when calling the notifica
{% include integrations/config_flow.md %}
-When adding the Discord integration you will be asked for an API Key. Enter the hidden **Token** of your bot to link your Discord integration to the bot you created and allow Home Assistant to send messages as that bot.
+When adding the Discord integration, you will be asked for an API Key. Enter the hidden **Token** of your bot to link your Discord integration to the bot you created and allow Home Assistant to send messages as that bot.
+
+## Set Message entry
+
+The `message` field treats all input as literal text, including quotation marks.
+
+For example: `message: Hello, world!` will appear exactly as is, while `message: "Hello, world!"` will include the quotation marks in the message.
+
+## Set Channel IDs as necessary
+
+The `target` field is for the channel IDs where the message should be sent. Accepted data type is `string` for a single channel or `string[]` for multiple channels.
+
+For example: `"someChannelID"` or `["someChannelID", "anotherChannelID"]`
+
+## Pinging users, roles, or linking to other channels in the same server
+
+You can use standard Discord methods to ping users, roles, and channels within the server.
+
+| Type | Format |
+| --------- | -------------- |
+| `User` | `<@userID>` |
+| `Role` | `<@&roleID>` |
+| `Channel` | `<#channelID>` |
## Discord service data
diff --git a/source/_integrations/dsmr_reader.markdown b/source/_integrations/dsmr_reader.markdown
index 2dc388f016f..e91215d9fd2 100644
--- a/source/_integrations/dsmr_reader.markdown
+++ b/source/_integrations/dsmr_reader.markdown
@@ -11,6 +11,7 @@ ha_release: 0.103
ha_codeowners:
- '@sorted-bits'
- '@glodenox'
+ - '@erwindouna'
ha_domain: dsmr_reader
ha_platforms:
- diagnostics
diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown
index 59e9ec390d7..c71d87898e7 100644
--- a/source/_integrations/ecobee.markdown
+++ b/source/_integrations/ecobee.markdown
@@ -36,7 +36,7 @@ The **ecobee** {% term integration %} lets you control and view sensor data from
You will need to obtain an API key from ecobee's [developer site](https://www.ecobee.com/developers/) to use this integration. To get the key, your thermostat must be registered on ecobee's website (which you likely would have already done while installing your thermostat). Once you have done that, perform the following steps.
-As of March 28th, 2024, ecobee is no longer accepting new developer subscriptions, and there is no ETA for when they will be allowed again. Existing developers are not affected.
+As of March 28th, 2024, ecobee is no longer accepting new developer subscriptions, nor are existing developer accounts able to create new API keys. There is no ETA for when they will be allowed again. Existing API keys will continue to function.
1. Click on the **Become a developer** link on the [developer site](https://www.ecobee.com/home/developer/loginDeveloper.jsp).
diff --git a/source/_integrations/energenie_power_sockets.markdown b/source/_integrations/energenie_power_sockets.markdown
index e01d8592720..ce5226f7f59 100644
--- a/source/_integrations/energenie_power_sockets.markdown
+++ b/source/_integrations/energenie_power_sockets.markdown
@@ -1,5 +1,5 @@
---
-title: Energenie Power-Sockets
+title: Energenie Power Sockets
description: Instructions on how to integrate Energenie Power-Strip switches into Home Assistant.
ha_category:
- Switch
@@ -10,7 +10,8 @@ ha_codeowners:
ha_domain: energenie_power_sockets
ha_platforms:
- switch
-ha_integration_type: integration
+ha_integration_type: device
+ha_config_flow: true
---
The **Energenie Power-Sockets** {% term integration %} allows you to include [Energenie USB Power-Sockets](https://energenie.com/item.aspx?id=7556&lang=de) into your Home Assistant setup.
diff --git a/source/_integrations/file.markdown b/source/_integrations/file.markdown
index 6fd9d713982..9eb1d11bf16 100644
--- a/source/_integrations/file.markdown
+++ b/source/_integrations/file.markdown
@@ -17,17 +17,19 @@ ha_integration_type: integration
related:
- docs: /docs/configuration/
title: Configuration file
+ha_config_flow: true
---
-The File integration allows to store notifications to a file or to set up a sensor based on a file's content.
-
+The File integration allows storing notifications in a file or setting up a sensor based on a file's content.
+
{% include integrations/config_flow.md %}
## Notifications
-Make sure that the file you want to use is added to the [allowlist_external_dirs](https://www.home-assistant.io/integrations/homeassistant/#allowlist_external_dirs). The file will be created if it doesn't exist. Add the path of your [configuration](/docs/configuration/) folder (e.g., `/config`) to save the file there. Setting the optional parameter `name` allows multiple notifiers to be created. Setting `timestamp` to `true` adds a timestamp to every entry.
+Make sure that the file you want to use is added to the [allowlist_external_dirs](https://www.home-assistant.io/integrations/homeassistant/#allowlist_external_dirs). The file will be created if it doesn't exist, but make sure the folder exists. Add the path of your [configuration](/docs/configuration/) folder (for example, `/config/file_notifications`) to save the file there. Setting `timestamp` to `true` adds a timestamp to every logged entry.
+After creating a config entry, you can change the entry name, the name of the notify entity, or the entity ID, if you prefer.
-To use notifications, please see the [getting started with automation page](/getting-started/automation/).
+To use notifications in automations or scripts, see the [getting started with automation page](/getting-started/automation/).
Use the `notify.send_message` entity service to store notification messages.
@@ -41,7 +43,7 @@ In this section you find some real-life examples of how to use this sensor.
#### Entries as JSON
-Assuming that the log file contains multiple values formatted as JSON like shown below:
+Assuming that the log file contains multiple values formatted as JSON as shown below:
```text
[...]
@@ -49,7 +51,7 @@ Assuming that the log file contains multiple values formatted as JSON like shown
{"temperature": 22, "humidity": 36}
```
-This would require the following settings extract the temperature:
+This would require the following settings to extract the temperature:
- Name: `Temperature`
- File path: `/home/user/.homeassistant/sensor.json`
@@ -58,7 +60,7 @@ This would require the following settings extract the temperature:
#### Entries as CSV
-Assuming the log file contains multiple values formatted as CSV like shown below:
+Assuming the log file contains multiple values formatted as CSV as shown below:
```text
timestamp,temperature,humidity
diff --git a/source/_integrations/fronius.markdown b/source/_integrations/fronius.markdown
index b88b13f87ef..0b28fc03714 100644
--- a/source/_integrations/fronius.markdown
+++ b/source/_integrations/fronius.markdown
@@ -11,6 +11,7 @@ ha_config_flow: true
ha_domain: fronius
ha_iot_class: Local Polling
ha_platforms:
+ - diagnostics
- sensor
ha_quality_scale: platinum
ha_dhcp: true
diff --git a/source/_integrations/fyta.markdown b/source/_integrations/fyta.markdown
index 74eaa15c24a..6ac688816e6 100644
--- a/source/_integrations/fyta.markdown
+++ b/source/_integrations/fyta.markdown
@@ -10,8 +10,10 @@ ha_codeowners:
- '@dontinelli'
ha_domain: fyta
ha_platforms:
+ - diagnostics
- sensor
ha_integration_type: hub
+ha_quality_scale: platinum
---
The **FYTA** {% term integration %} uses the open API of [FYTA](https://www.fyta.de) to obtain the data from your plant sensors and integrate these into Home Assistant.
diff --git a/source/_integrations/generic.markdown b/source/_integrations/generic.markdown
index 699278fd0c7..f85209c2108 100644
--- a/source/_integrations/generic.markdown
+++ b/source/_integrations/generic.markdown
@@ -12,7 +12,7 @@ ha_platforms:
ha_codeowners:
- '@davet2001'
ha_config_flow: true
-ha_integration_type: integration
+ha_integration_type: device
---
The `generic` camera platform allows you to integrate any IP camera or other URL into Home Assistant. Templates can be used to generate the URLs on the fly.
diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown
index 96b703728d2..2cc8115013c 100644
--- a/source/_integrations/google_generative_ai_conversation.markdown
+++ b/source/_integrations/google_generative_ai_conversation.markdown
@@ -1,5 +1,5 @@
---
-title: Google Generative AI Conversation
+title: Google Generative AI
description: Instructions on how to integrate Google Generative AI as a conversation agent
ha_category:
- Voice
@@ -10,6 +10,19 @@ ha_codeowners:
- '@tronikos'
ha_domain: google_generative_ai_conversation
ha_integration_type: service
+ha_quality_scale: platinum
+ha_platforms:
+ - conversation
+ - diagnostics
+related:
+ - docs: /voice_control/voice_remote_expose_devices/
+ title: Exposing entities to Assist
+ - docs: /voice_control/assist_create_open_ai_personality/
+ title: Create an AI personality
+ - url: https://aistudio.google.com/app/apikey
+ title: Google Generative AI API key
+ - url: https://ai.google.dev/
+ title: Google Generative AI
---
The Google Generative AI integration adds a conversation agent powered by [Google Generative AI](https://ai.google.dev/) in Home Assistant. It can optionally be allowed to control Home Assistant.
@@ -18,7 +31,7 @@ Controlling Home Assistant is done by providing the AI access to the Assist API
This integration does not integrate with [sentence triggers](/docs/automation/trigger/#sentence-trigger).
-This integration requires an API key to use, [which you can generate here](https://makersuite.google.com/app/apikey).
+This integration requires an API key to use, [which you can generate here](https://aistudio.google.com/app/apikey), and to be in one of the [available regions](https://ai.google.dev/gemini-api/docs/available-regions).
{% include integrations/config_flow.md %}
@@ -26,10 +39,10 @@ This integration requires an API key to use, [which you can generate here](https
The Google Generative AI API key is used to authenticate requests to the Google Generative AI API. To generate an API key take the following steps:
-- Visit the [API Keys page](https://makersuite.google.com/app/apikey) to retrieve the API key you'll use to configure the integration.
+- Visit the [API Keys page](https://aistudio.google.com/app/apikey) to retrieve the API key you'll use to configure the integration.
On the same page, you can see your plan: *free of charge* if the associated Google Cloud project doesn't have billing, or *pay-as-you-go* if the associated Google Cloud project has billing enabled.
-Comparison of the plans is available [here](https://ai.google.dev/pricing). The big differences are: free of charge is rate limited and free prompts/responses are used for product improvement.
+Comparison of the plans is available [at this pricing page](https://ai.google.dev/pricing). The major differences include: the free of charge plan is rate limited, free prompts/responses are used for product improvement, and the free plan is not available in all [regions](https://ai.google.dev/gemini-api/docs/available-regions).
{% include integrations/option_flow.md %}
{% configuration_basic %}
@@ -38,7 +51,7 @@ Instructions:
description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
Control Home Assistant:
- description: If the model is allowed to interact with Home Assistant
+ description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it.
Recommended settings:
description: If enabled, the recommended model and settings are chosen.
@@ -69,6 +82,12 @@ Safety settings:
{% endconfiguration_basic %}
+## Talking to Super Mario
+
+You can use an OpenAI Conversation integration to [talk to Super Mario and, if you want, have him control devices in your home](/voice_control/assist_create_open_ai_personality/).
+
+The tutorial is using OpenAI, but this could also be done with the Google Generative AI integration.
+
## Services
### Service `google_generative_ai_conversation.generate_content`
@@ -82,9 +101,9 @@ Safety settings:
Allows you to ask Gemini Pro or Gemini Pro Vision to generate content from a prompt consisting of text and optionally images.
This service populates [response data](/docs/scripts/service-calls#use-templates-to-handle-response-data) with the generated content.
-| Service data attribute | Optional | Description | Example |
-| ---------------------- | -------- | ---------------------------------------------- | ------------------- |
-| `prompt` | no | The prompt for generating the content. | Describe this image |
+| Service data attribute | Optional | Description | Example |
+| ---------------------- | -------- | ----------------------------------------------- | ------------------- |
+| `prompt` | no | The prompt for generating the content. | Describe this image |
| `image_filename` | yes | File names for images to include in the prompt. | /tmp/image.jpg |
{% raw %}
diff --git a/source/_integrations/harmony.markdown b/source/_integrations/harmony.markdown
index e89ddfb5a74..efe32137376 100644
--- a/source/_integrations/harmony.markdown
+++ b/source/_integrations/harmony.markdown
@@ -8,7 +8,6 @@ ha_release: 0.34
ha_config_flow: true
ha_codeowners:
- '@ehendrix23'
- - '@bramkragten'
- '@bdraco'
- '@mkeesey'
- '@Aohzan'
diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown
index c15bb6d6c33..0bbbd06d500 100644
--- a/source/_integrations/homeassistant.markdown
+++ b/source/_integrations/homeassistant.markdown
@@ -104,15 +104,15 @@ internal_url:
required: false
type: string
customize:
- description: "[Customize](#editing-the-entity-settings-in-yaml) entities."
+ description: "[Customize](#editing-entity-settings-in-yaml) entities."
required: false
type: string
customize_domain:
- description: "[Customize](#editing-the-entity-settings-in-yaml) all entities in a domain."
+ description: "[Customize](#editing-entity-settings-in-yaml) all entities in a domain."
required: false
type: string
customize_glob:
- description: "[Customize](#editing-the-entity-settings-in-yaml) entities matching a pattern."
+ description: "[Customize](#editing-entity-settings-in-yaml) entities matching a pattern."
required: false
type: string
allowlist_external_dirs:
@@ -191,7 +191,7 @@ initial_state:
### Device class
-A device class represents a group of device types. The way a specific device class is shown in the user interface depends on the platform that is using it. For example, binary sensor and cover both support the device class "window". While for the binary sensor the window can only be open or closed, for cover, a window can also be tilted. For a given platform, the device class controls how the device is shown in the user interface. For example: humidifier has two device classes, humidifier and dehumidifier. If the device class is set to `humidifier`, the UI shows **Humidifying**. If it is set to `dehumidifier`, it shows **Drying**.
+Devices classes categorize certain entities and influence how these are shown in the dashboard. Some device classes categorize by measurement type, such as sensors or binary sensors. Other device classes categorize into more specific types. For example, a cover can be a blind or a curtain. For a given platform, the device class influences what is shown in the user interface. For example: humidifier has two device classes, humidifier and dehumidifier. If the device class is set to `humidifier`, the UI shows **Humidifying**. If it is set to `dehumidifier`, it shows **Drying**.
Device class is currently supported by the following platforms:
diff --git a/source/_integrations/homeassistant_hardware.markdown b/source/_integrations/homeassistant_hardware.markdown
index 3b6df73fec2..d3546cd575d 100644
--- a/source/_integrations/homeassistant_hardware.markdown
+++ b/source/_integrations/homeassistant_hardware.markdown
@@ -1,6 +1,6 @@
---
title: Home Assistant Hardware
-description: Home Assistant Hardware provides functionality shared between Home Assistant Yellow and Home Assistant SkyConnect.
+description: Home Assistant Hardware provides functionality shared between Home Assistant Yellow and Home Assistant Connect ZBT-1.
ha_release: 2022.12
ha_category:
- Other
@@ -11,7 +11,7 @@ ha_integration_type: system
---
The Home Assistant Hardware integration provides functionality
-shared between Home Assistant Yellow and Home Assistant SkyConnect.
+shared between Home Assistant Yellow and Home Assistant Connect ZBT-1.
## Configuration
diff --git a/source/_integrations/homeassistant_sky_connect.markdown b/source/_integrations/homeassistant_sky_connect.markdown
index e4059a75725..28515e1e0f2 100644
--- a/source/_integrations/homeassistant_sky_connect.markdown
+++ b/source/_integrations/homeassistant_sky_connect.markdown
@@ -1,20 +1,20 @@
---
-title: Home Assistant SkyConnect
-description: Home Assistant SkyConnect provides hardware information for the hardware configuration page.
+title: Home Assistant Connect ZBT-1
+description: Home Assistant Connect ZBT-1 provides hardware information for the hardware configuration page.
ha_release: 2022.9
ha_category:
- Other
ha_codeowners:
- '@home-assistant/core'
ha_domain: homeassistant_sky_connect
-ha_integration_type: device
+ha_integration_type: hardware
ha_config_flow: true
---
-The Home Assistant SkyConnect integration provides hardware information for the hardware configuration page.
+The Home Assistant Connect ZBT-1 integration provides hardware information for the hardware configuration page.
-For documentation on the Home Assistant SkyConnect, please visit the [documentation page](https://skyconnect.home-assistant.io/documentation/).
-If you are looking to buy one, please visit the [product page](https://home-assistant.io/skyconnect)
+For documentation on the Home Assistant Connect ZBT-1, please visit the [documentation page](https://connectzbt1.home-assistant.io/documentation/).
+If you are looking to buy one, please visit the [product page](https://home-assistant.io/connectzbt1)
## Configuration
diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown
index cca8e9099de..958bf36cbb5 100644
--- a/source/_integrations/homekit_controller.markdown
+++ b/source/_integrations/homekit_controller.markdown
@@ -137,9 +137,9 @@ This section describes how to add it via Home Assistant's preferred {% term Thre
- **Thread network**: In order to use HomeKit over Thread, you need a working border router.
- Make sure your Home Assistant device is on the same network (LAN) as the border router.
- Make sure the {% term Thread %} network you'd like to use is known by Home Assistant and marked as **Preferred network** in the {% term Thread %} configuration.
- - If you have a Home Assistant Yellow or SkyConnect, you can enable multiprotocol to set up an Open Thread border router and with that a {% term Thread %} network.
- - Documentation on [enabling multiprotocol on Yellow](https://yellow.home-assistant.io/guides/enable-multiprotocol/)
- - Documentation on [enabling multiprotocol on SkyConnect](https://skyconnect.home-assistant.io/procedures/enable-multiprotocol/)
+ - If you have a Home Assistant Yellow or Connect ZBT-1, you can enable Thread to set up an Open Thread border router and with that a {% term Thread %} network.
+ - Documentation on [enabling Thread on Yellow](https://yellow.home-assistant.io/procedures/enable-thread/)
+ - Documentation on [enabling Thread on Connect ZBT-1](https://connectzbt1.home-assistant.io/procedures/enable-thread/)
#### To add a HomeKit device to a Thread network via Home Assistant
diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown
index 4a2e68a3035..6bf566d6c74 100644
--- a/source/_integrations/honeywell.markdown
+++ b/source/_integrations/honeywell.markdown
@@ -50,7 +50,33 @@ The climate platform integrates Honeywell US-based thermostats into Home Assista
All [climate services](/integrations/climate) are supported except set_swing_mode.
-There is a "known" issue related to setting the temperature from Home Assistant with some thermostats. If your instance receives errors when setting the temperature above or below some value, go to the Honeywell web page and set the temperature to the max or min for the mode you are using, then adjust from Home Assistant.
+Due to the instability of the Honeywell total connect system, service calls within automations should repeat until success similar to the following example:
+
+```yaml
+alias: "No one home"
+description: "Everyone has left home"
+trigger:
+ - platform: numeric_state
+ entity_id: zone.home
+ for:
+ minutes: 10
+ below: 1
+action:
+ - repeat:
+ sequence:
+ - service: climate.set_temperature
+ target:
+ entity_id: climate.stat
+ data:
+ temperature: 64
+ - delay:
+ minutes: 1
+ until:
+ - condition: state
+ entity_id: climate.stat
+ attribute: temperature
+ state: 64
+```
## Sensor
diff --git a/source/_integrations/http.markdown b/source/_integrations/http.markdown
index 954d3194552..485a8872393 100644
--- a/source/_integrations/http.markdown
+++ b/source/_integrations/http.markdown
@@ -215,6 +215,13 @@ $ curl -X GET -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
}
```
+To delete the sensor, send DELETE request with curl
+
+```bash
+$ curl -X DELETE -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
+ http://localhost:8123/api/states/binary_sensor.radio
+```
+
### Examples
In this section you'll find some real-life examples of how to use this sensor, besides `curl`, which was shown earlier.
diff --git a/source/_integrations/ibeacon.markdown b/source/_integrations/ibeacon.markdown
index 82d53391a0d..10a5879e614 100644
--- a/source/_integrations/ibeacon.markdown
+++ b/source/_integrations/ibeacon.markdown
@@ -75,7 +75,6 @@ To get the Estimated distance sensor to work, in most cases, it has to be calibr
- [Blue Charm Beacons BC08-MultiBeacon](https://bluecharmbeacons.com/product/blue-charm-beacons-bluetooth-ble-ibeacon-bc08-multibeacon-w-motion-sensor-and-button-trigger-ble-5-0/)
- Blue Charm Beacons BC037G-GeoPattern-iBeacon (discontinued)
- Blue Charm Beacons BC037S-SmoothPattern-iBeacon (discontinued)
-- [Chipolo ONE Spot](https://chipolo.net/de/products/chipolo-one-spot)
- [Blue SLIM ID](https://elainnovation.com/en/product/blue-slim-id-en/)
- [Feasycom FSC-BP103B](https://www.feasycom.com/bluetooth-ibeacon-da14531)
- [Feasycom FSC-BP104D](https://www.feasycom.com/dialog-da14531-bluetooth-low-energy-beacon)
diff --git a/source/_integrations/imgw_pib.markdown b/source/_integrations/imgw_pib.markdown
index ab0f45b25b6..4f0d769b0f5 100644
--- a/source/_integrations/imgw_pib.markdown
+++ b/source/_integrations/imgw_pib.markdown
@@ -11,8 +11,10 @@ ha_codeowners:
ha_domain: imgw_pib
ha_platforms:
- binary_sensor
+ - diagnostics
- sensor
-ha_integration_type: service
+ha_integration_type: integration
+ha_quality_scale: platinum
---
IMGW-PIB integration uses hydrological data from [Institute of Meteorology and Water Management - National Research Institute](https://hydro.imgw.pl) to present information about rivers and water reservoirs in Poland.
diff --git a/source/_integrations/intent_script.markdown b/source/_integrations/intent_script.markdown
index b12edae380a..95d68434607 100644
--- a/source/_integrations/intent_script.markdown
+++ b/source/_integrations/intent_script.markdown
@@ -11,6 +11,8 @@ ha_integration_type: integration
The `intent_script` integration allows users to configure actions and responses to intents. Intents can be fired by any integration that supports it. Examples are [Alexa](/integrations/alexa/) (Amazon Echo), [Dialogflow](/integrations/dialogflow/) (Google Assistant) and [Snips](/integrations/snips/).
+If you are using intent script with LLMs and have parameters, make sure to mention the parameters and their types in the description.
+
{% raw %}
```yaml
@@ -101,6 +103,7 @@ available in the `action_response` variable.
```yaml
conversation:
+ intents:
EventCountToday:
- "How many meetings do I have today?"
diff --git a/source/_integrations/isal.markdown b/source/_integrations/isal.markdown
index 6508d29ab6a..3ada3457a63 100644
--- a/source/_integrations/isal.markdown
+++ b/source/_integrations/isal.markdown
@@ -9,7 +9,7 @@ ha_codeowners:
ha_domain: isal
ha_integration_type: system
ha_quality_scale: internal
-ha_iot_class: Local Push
+ha_iot_class: Local Polling
---
[`zlib`](https://github.com/madler/zlib) is a bottleneck for [`aiohttp`](https://github.com/aio-libs/aiohttp), especially for WebSocket connections. [Intelligent Storage Acceleration](https://github.com/intel/isa-l), is used for accelerating [`aiohttp`](https://github.com/aio-libs/aiohttp) since it can [speed up](https://github.com/pycompression/python-isal/tree/develop/benchmark_scripts) compression as much as 5x.
@@ -23,4 +23,4 @@ If your system supports [`isal`](https://github.com/pycompression/python-isal),
```yaml
# Example configuration.yaml entry
isal:
-```
\ No newline at end of file
+```
diff --git a/source/_integrations/jewish_calendar.markdown b/source/_integrations/jewish_calendar.markdown
index fe1a0643a4b..124675e723d 100644
--- a/source/_integrations/jewish_calendar.markdown
+++ b/source/_integrations/jewish_calendar.markdown
@@ -12,6 +12,7 @@ ha_platforms:
- binary_sensor
- sensor
ha_integration_type: integration
+ha_config_flow: true
---
The Jewish Calendar (`jewish_calendar`) {% term integration %} displays various information related to the Jewish Calendar as various sensors.
diff --git a/source/_integrations/media_extractor.markdown b/source/_integrations/media_extractor.markdown
index dbc3fd1661d..2c4c6e745fe 100644
--- a/source/_integrations/media_extractor.markdown
+++ b/source/_integrations/media_extractor.markdown
@@ -13,6 +13,7 @@ ha_codeowners:
related:
- docs: /docs/configuration/
title: Configuration file
+ha_config_flow: true
---
The Media extractor {% term integration %} gets a stream URL and sends it to a media player entity. This integration can extract entity specific streams if configured accordingly.
diff --git a/source/_integrations/microbees.markdown b/source/_integrations/microbees.markdown
index 3cc8c4f1045..b0a3c005543 100644
--- a/source/_integrations/microbees.markdown
+++ b/source/_integrations/microbees.markdown
@@ -2,14 +2,14 @@
title: microBees
description: Instructions on how to integrate microBees devices into Home Assistant.
ha_category:
- - Switch
+ - Button
- Climate
- Cover
- - Button
- Cover
- Light
- Sensor
- Switch
+ - Switch
ha_release: 2024.3
ha_codeowners:
- '@microBeesTech'
@@ -17,11 +17,9 @@ ha_config_flow: true
ha_domain: microbees
ha_iot_class: Cloud Polling
ha_platforms:
- - switch
- - climate
- - cover
- binary_sensor
- button
+ - climate
- cover
- light
- sensor
diff --git a/source/_integrations/minecraft_server.markdown b/source/_integrations/minecraft_server.markdown
index 26299e28b12..20d4a2d30cd 100644
--- a/source/_integrations/minecraft_server.markdown
+++ b/source/_integrations/minecraft_server.markdown
@@ -6,7 +6,7 @@ ha_category:
- Binary sensor
- Sensor
ha_iot_class: Local Polling
-ha_quality_scale: gold
+ha_quality_scale: platinum
ha_config_flow: true
ha_codeowners:
- '@elmurato'
diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown
index 06941962629..7beb76bd1d1 100644
--- a/source/_integrations/modbus.markdown
+++ b/source/_integrations/modbus.markdown
@@ -1489,9 +1489,9 @@ switches:
coils:
description: "write_coils is called."
verify:
- description: "Read from Modbus device to verify fan.
+ description: "Read from Modbus device to verify switch.
If used without attributes, it uses the toggle register configuration.
- If omitted, no verification is done, but the state of the fan is set with each toggle."
+ If omitted, no verification is done, but the state of the switch is set with each toggle."
required: false
type: map
keys:
diff --git a/source/_integrations/monzo.markdown b/source/_integrations/monzo.markdown
index d41c1617919..20555203033 100644
--- a/source/_integrations/monzo.markdown
+++ b/source/_integrations/monzo.markdown
@@ -6,12 +6,12 @@ ha_category:
ha_release: 2024.6
ha_iot_class: Cloud Polling
ha_codeowners:
- - '@JakeMartin-ICL'
+ - '@jakemartin-icl'
ha_config_flow: true
ha_domain: monzo
-ha_homekit: true
ha_platforms:
- sensor
+ha_integration_type: integration
---
The **Monzo** {% term integration %} allows you to connect your Monzo bank accounts to Home Assistant.
diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown
index 11bee3cbaa6..dc038056424 100644
--- a/source/_integrations/mqtt.markdown
+++ b/source/_integrations/mqtt.markdown
@@ -217,7 +217,7 @@ MQTT Birth and Last Will messages can be customized or disabled from the UI. To
## Testing your setup
-The `mosquitto` broker package ships commandline tools (often as `*-clients` package) to send and receive MQTT messages. For sending test messages to a broker running on `localhost` check the example below:
+The `mosquitto` broker package ships command line tools (often as `*-clients` package) to send and receive MQTT messages. For sending test messages to a broker running on `localhost`, to can use [`mosquitto_pub`](https://mosquitto.org/man/mosquitto_pub-1.html), check the example below:
```bash
mosquitto_pub -h 127.0.0.1 -t homeassistant/switch/1/on -m "Switch is ON"
diff --git a/source/_integrations/nibe_heatpump.markdown b/source/_integrations/nibe_heatpump.markdown
index e9a814c6b35..69c60eda6a6 100644
--- a/source/_integrations/nibe_heatpump.markdown
+++ b/source/_integrations/nibe_heatpump.markdown
@@ -93,7 +93,7 @@ Home Assistant support connecting to Nibe heat pumps over Modbus over either TCP
#### TCP/IP
-The newer S-series pump exposes a built-in TCP Modbus server that can be used to communicate with the pump. To enable support for this integration, the pump must be connected to your local network and network (5.2 - Network settings) and Modbus (7.5.9 - Modbus TCP/IP) must be enabled. More details on the Modbus support in the pump can be found in Nibe document [M12676EN](https://assetstore.nibe.se/hcms/v2.4/entity/document/34499/storage/MDM0NDk5LzAvbWFzdGVy).
+The newer S-series pump exposes a built-in TCP Modbus server that can be used to communicate with the pump. To enable support for this integration, the pump must be connected to your local network and network (5.2 - Network settings) and Modbus (7.5.9 - Modbus TCP/IP) must be enabled. More details on the Modbus support in the pump can be found in Nibe document [M12676EN](https://www.nibe.eu/download/18.3db69dc1795e0d992c5722/1622634529178/Modbus%20S-series%20EN%20M12676EN-1.pdf).
- `tcp://[IP OR HOSTNAME]`
- `tcp://[IP OR HOSTNAME]:502`
diff --git a/source/_integrations/nws.markdown b/source/_integrations/nws.markdown
index cbf9d44fec9..85a89a9db78 100644
--- a/source/_integrations/nws.markdown
+++ b/source/_integrations/nws.markdown
@@ -12,6 +12,7 @@ ha_domain: nws
ha_quality_scale: platinum
ha_config_flow: true
ha_platforms:
+ - diagnostics
- sensor
- weather
ha_integration_type: integration
diff --git a/source/_integrations/ollama.markdown b/source/_integrations/ollama.markdown
index bbb3bbc7080..7ba8f9e947d 100644
--- a/source/_integrations/ollama.markdown
+++ b/source/_integrations/ollama.markdown
@@ -15,6 +15,8 @@ related:
title: Home Assistant Templating
- docs: /docs/automation/trigger/#sentence-trigger
title: Sentence trigger
+ha_platforms:
+ - conversation
---
The **Ollama** {% term integration %} adds a conversation agent in Home Assistant powered by a local [Ollama](https://ollama.com/) server.
diff --git a/source/_integrations/ondilo_ico.markdown b/source/_integrations/ondilo_ico.markdown
index aafdf106ef4..5c2d283a840 100644
--- a/source/_integrations/ondilo_ico.markdown
+++ b/source/_integrations/ondilo_ico.markdown
@@ -11,7 +11,7 @@ ha_codeowners:
ha_domain: ondilo_ico
ha_platforms:
- sensor
-ha_integration_type: integration
+ha_integration_type: hub
---
ICO by [Ondilo](https://ondilo.com/en/) is a small connected device that you simply drop into the pool or spa. ICO continuously analyzes the water quality of your pool/spa and notifies you via its application. ICO provides personalized recommendations so that you use the right products in the right proportions at the right time.
diff --git a/source/_integrations/openai_conversation.markdown b/source/_integrations/openai_conversation.markdown
index b33f4dc112f..ff65e7160f4 100644
--- a/source/_integrations/openai_conversation.markdown
+++ b/source/_integrations/openai_conversation.markdown
@@ -12,6 +12,15 @@ ha_domain: openai_conversation
ha_integration_type: service
ha_platforms:
- conversation
+related:
+ - docs: /voice_control/voice_remote_expose_devices/
+ title: Exposing entities to Assist
+ - docs: /voice_control/assist_create_open_ai_personality/
+ title: Create an AI personality
+ - url: https://platform.openai.com/account/api-keys
+ title: OpenAI API key
+ - url: https://www.openai.com
+ title: OpenAI
---
The OpenAI integration adds a conversation agent powered by [OpenAI](https://www.openai.com) in Home Assistant.
@@ -39,7 +48,7 @@ Instructions:
description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
Control Home Assistant:
- description: If the model is allowed to interact with Home Assistant
+ description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it.
Recommended settings:
description: If enabled, the recommended model and settings are chosen.
@@ -51,7 +60,7 @@ If you choose to not use the recommended settings, you can configure the followi
{% configuration_basic %}
Model:
- description: The GPT language model is used for text generation. You can find more details on the available models in the [OpenAI GPT-3 Documentation](https://platform.openai.com/docs/models/gpt-3), [OpenAI GPT-3.5 Documentation](https://platform.openai.com/docs/models/gpt-3-5), or [OpenAI GPT-4 and GPT-4 Turbo Documentation](https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo). The default is "gpt-3.5-turbo".
+ description: The GPT language model is used for text generation. You can find more details on the available models in the [OpenAI GPT-3.5 Turbo Documentation](https://platform.openai.com/docs/models/gpt-3-5-turbo), [OpenAI GPT-4 Turbo and GPT-4 Documentation](https://platform.openai.com/docs/models/gpt-4-turbo-and-gpt-4), or [GPT-4o Documentation](https://platform.openai.com/docs/models/gpt-4o). The default is "gpt-4o".
Maximum Tokens to Return in Response:
description: The maximum number of words or "tokens" that the AI model should generate in its completion of the prompt. For more information, see the [OpenAI Completion Documentation](https://platform.openai.com/docs/guides/completion/introduction).
@@ -66,7 +75,7 @@ Top P:
## Talking to Super Mario over the phone
-You can use an OpenAI Conversation integration to [talk to Super Mario over a classic landline phone](/voice_control/worlds-most-private-voice-assistant/).
+You can use an OpenAI Conversation integration to [talk to Super Mario and, if desired, have it control devices](/voice_control/assist_create_open_ai_personality/) in your home.
## Services
diff --git a/source/_integrations/openweathermap.markdown b/source/_integrations/openweathermap.markdown
index dcc484dd257..fd3d948f945 100644
--- a/source/_integrations/openweathermap.markdown
+++ b/source/_integrations/openweathermap.markdown
@@ -25,7 +25,7 @@ There is currently support for the following device types within Home Assistant:
- Sensor
- Weather
-You need an API key, it requires a [subscription](https://openweathermap.org/api/one-call-3). The subscription has a free tier with 1000 calls/day. Consider setting the limit on the OpenWeatherMap website to stay under the threshold where API usage incurs a cost.
+You need an API key, it requires a [subscription](https://openweathermap.org/api/one-call-3). The subscription has a free tier with 1000 calls/day. Consider setting the limit on the OpenWeatherMap website to stay under the threshold where API usage incurs a cost. This is done in the [Billing plans](https://home.openweathermap.org/subscriptions) page, under "Calls per day".
## ⚠️ Important Deprecation Notice
diff --git a/source/_integrations/otbr.markdown b/source/_integrations/otbr.markdown
index 1e5c5b07bc0..1ba8dccb7bf 100644
--- a/source/_integrations/otbr.markdown
+++ b/source/_integrations/otbr.markdown
@@ -13,10 +13,10 @@ ha_config_flow: true
The Open Thread Border Router integration allows calling an Open Thread Border Router's REST API from Python and via WebSocket.
-This integration is installed automatically when the **Open Thread Border Router** add-on is installed. For Home Assistant Yellow or SkyConnect refer to the following procedures:
+This integration is installed automatically when the **Open Thread Border Router** add-on is installed. For Home Assistant Yellow or Connect ZBT-1 refer to the following procedures:
- [Enabling Thread on Home Assistant Yellow](https://yellow.home-assistant.io/procedures/enable-thread/)
-- [Enabling Thread on Home Assistant SkyConnect](https://skyconnect.home-assistant.io/procedures/enable-thread/)
+- [Enabling Thread on Home Assistant Connect ZBT-1](https://connectzbt1.home-assistant.io/procedures/enable-thread/)
The integration is also installed automatically when enabling the experimental **Silicon Labs Multiprotocol** support.
diff --git a/source/_integrations/panasonic_viera.markdown b/source/_integrations/panasonic_viera.markdown
index bdd0be741f8..80a1dc2479e 100644
--- a/source/_integrations/panasonic_viera.markdown
+++ b/source/_integrations/panasonic_viera.markdown
@@ -166,5 +166,6 @@ The list with all known valid keys can be found [here](https://github.com/floria
- TX-P50GT30Y
- TX-P50GT60E
- TX-65HZ1000W
+- TX-65HZ1500
If your model is not on the list, give it a test. If everything works correctly, then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io/blob/current/source/_integrations/panasonic_viera.markdown).
diff --git a/source/_integrations/point.markdown b/source/_integrations/point.markdown
index 0561832e5d5..6aeb4b2aeb5 100644
--- a/source/_integrations/point.markdown
+++ b/source/_integrations/point.markdown
@@ -9,7 +9,7 @@ ha_category:
ha_release: 0.83
ha_config_flow: true
ha_iot_class: Cloud Polling
-ha_quality_scale: gold
+ha_quality_scale: silver
ha_codeowners:
- '@fredrike'
ha_domain: point
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index dce421996b8..12671cf5801 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -305,17 +305,16 @@ However, these cameras can work with this integration through an NVR in which th
## Initial setup
+### 1. Initializing and configuring camera credentials.
+
A brand new Reolink camera first needs to be connected to the network and initialized. During initialization, the credentials for the camera need to be set.
-There are several ways to achieve this.
+There are several ways to achieve this:
-### Connecting Reolink via app/client
+#### Connecting Reolink via app/client
-The recommended way is to use the [Reolink mobile app, Windows, or Mac client](https://reolink.com/software-and-manual/).
+The recommended way is to use the [Reolink mobile app, Windows, or Mac client](https://reolink.com/software-and-manual/), and follow the on-screen instructions.
-1. Follow the on-screen instructions.
-2. In Home Assistant, use the credentials you just configured in the Reolink app/client.
-
-### Connecting Reolink via a web browser
+#### Connecting Reolink via a web browser
When your camera has a LAN port (most Wi-Fi cameras also have a LAN port):
@@ -326,9 +325,8 @@ When your camera has a LAN port (most Wi-Fi cameras also have a LAN port):
- Go to **settings** (gear icon) > **Network** and fill in your Wi-Fi SSID and password.
- If you have both a 2.4 GHz and 5 GHz network, check your camera's user guide to see which operating frequency is supported.
- After that you can disconnect the LAN cable and the camera will automatically switch to the Wi-Fi connection.
- 5. Now set up the Reolink Home Assistant integration using the credentials you just specified.
-### QR code
+#### QR code
You can also connect a Wi-Fi camera using a self-made QR code. Once connected, follow the instructions under **Web browser**.
Create a QR code using ISO-8859-1 character encoding (not UTF-8) with the following XML string:
@@ -341,6 +339,14 @@ Normally, the digits are printed directly under the QR code. Alternatively, you
Then power up the camera while pointing it at the QR code. It takes about a minute to initialize, read the QR code, and connect to your Wi-Fi.
+### 2. Enabling HTTP/HTTPS ports
+
+Test if you can access the camera by its IP address in your browser `https://`. If you cannot, in the [windows or Mac](https://reolink.com/software-and-manual/) client ensure at least one of the HTTP/HTTPS ports are enabled under **Settings** > **Network** > **Advanced** > **Port Settings**. See [additional instructions](https://support.reolink.com/hc/en-us/articles/900004435763-How-to-Set-up-Reolink-Ports-Settings-via-Reolink-Client-New-Client-) on the Reolink site.
+
+### 3. Add integration in Home Assistant
+
+Set up the Reolink integration in Home Assistant using the credentials you set in step 1.
+
## Showing the camera in the dashboard
1. One way to show the camera in the dashboard is by using the picture glance card.
diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown
index 4cb8db3abc4..20983271ff5 100644
--- a/source/_integrations/roborock.markdown
+++ b/source/_integrations/roborock.markdown
@@ -156,7 +156,7 @@ We are working on adding a lot of features to the core integration. We have reve
### How can I clean a specific room?
We plan to make the process simpler in the future, but for now, it is a multi-step process.
1. Make sure to first name the rooms in the Roborock app; otherwise, they won't appear in the debug log.
-2. Go to {% my developer_call_service service="vacuum.send_command" title="**Developer Tools** > **Services** > **Roborock: Get maps**" %}. Select your vacuum as the entity. Note that room IDs and names are only updated on the currently selected map. If you don't see the rooms you expect, you should select the other map through your app or through the `load_multi_map` service.
+2. Go to {% my developer_call_service service="roborock.get_maps" title="**Developer Tools** > **Services** > **Roborock: Get maps**" %}. Select your vacuum as the entity. Note that room IDs and names are only updated on the currently selected map. If you don't see the rooms you expect, you should select the other map through your app or through the `load_multi_map` service.
You will get a response like this:
```json
vacuum.s7_roborock:
diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown
index a344ed2c84d..bb8bed2e9c2 100644
--- a/source/_integrations/samsungtv.markdown
+++ b/source/_integrations/samsungtv.markdown
@@ -333,6 +333,7 @@ KEY_MIC|
KEY_NINE_SEPERATE|
KEY_AUTO_FORMAT|AutoFormat
KEY_DNET|DNET
+KEY_MINUS|Minus
_______________
**Auto Arc Keys**
diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown
index d7efb8ebddc..e8b9a637cce 100644
--- a/source/_integrations/sensor.mqtt.markdown
+++ b/source/_integrations/sensor.mqtt.markdown
@@ -263,7 +263,7 @@ Payload: `1707294116`
To set the state of the sensor manually:
```bash
-mosquitto_pub -h 127.0.0.1 -u username -p some_password -t pump/timestamp_on -m '1707294116'
+mosquitto_pub -h 127.0.0.1 -p 1883 -u username -P some_password -t pump/timestamp_on -m '1707294116'
```
Make sure the IP address of your MQTT broker is used and that user credentials have been set up correctly.
diff --git a/source/_integrations/seventeentrack.markdown b/source/_integrations/seventeentrack.markdown
index 8b075ff352b..0d589bf4960 100644
--- a/source/_integrations/seventeentrack.markdown
+++ b/source/_integrations/seventeentrack.markdown
@@ -88,7 +88,7 @@ The `seventeentrack.get_packages` service allows you to query the 17track API fo
| `package_state` | yes | A list of the package states. |
```yaml
-# Example automation action to add a product to the cart by name.
+# Example automation action to retrieve packages with specific states from 17Track
- service: seventeentrack.get_packages
data:
config_entry_id: 2b4be47a1fa7c3764f14cf756dc98991
diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown
index ae676ba3cd8..53e329f020e 100644
--- a/source/_integrations/sonos.markdown
+++ b/source/_integrations/sonos.markdown
@@ -248,6 +248,30 @@ data:
enqueue: play
```
+Play all albums by a genre.
+
+```yaml
+service: media_player.play_media
+target:
+ entity_id: media_player.porch
+data:
+ media_content_type: genre
+ media_content_id: "A:GENRE/Classic%20Rock/"
+ enqueue: play
+```
+
+Play an imported playlist by using its title.
+
+```yaml
+service: media_player.play_media
+target:
+ entity_id: media_player.porch
+data:
+ media_content_type: playlist
+ media_content_id: S:/MyPlaylist
+ enqueue: play
+```
+
## Services
The Sonos integration makes various custom services available in addition to the [standard media player services](/integrations/media_player/#services).
diff --git a/source/_integrations/starlingbank.markdown b/source/_integrations/starlingbank.markdown
index e2b479e3467..fa3ea9e7a67 100644
--- a/source/_integrations/starlingbank.markdown
+++ b/source/_integrations/starlingbank.markdown
@@ -32,11 +32,13 @@ Once you have your own Starling bank account you will need to sign up for a Star
Once you've signed up:
-1. Head to the [Personal Access Section](https://developer.starlingbank.com/personal/token) of your developer account.
-2. Click "Create Token".
-3. Give your token a name e.g., "Home Assistant".
-4. Tick the permissions "account:read" and "balance:read". The others you can leave un-ticked.
-5. Click "Create" and make a note of the newly created token, you will need this for your Home Assistant configuration.
+1. Connect your personal Starling Bank account to your developer account. Head to [Personal Access Page](https://developer.starlingbank.com/personal) of your developer account.
+2. Follow the instructions to generate the QR code to scan within the Starling mobile app to authorize and link your bank account to the developer account.
+3. Head to the [Personal Access Section](https://developer.starlingbank.com/personal/token) of your developer account.
+4. Click "Create Token".
+5. Give your token a name, e.g., "Home Assistant".
+6. Tick the permissions "account:read" and "balance:read". The others you can leave un-ticked.
+7. Click "Create" and make a note of the newly created token, you will need this for your Home Assistant configuration.
## Configuration
diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown
index a05afa368f8..22f37ebc104 100644
--- a/source/_integrations/switchbot.markdown
+++ b/source/_integrations/switchbot.markdown
@@ -56,9 +56,9 @@ Some SwitchBot devices need to be configured within the app before being control
- [Contact Sensor (WoContact)](https://switch-bot.com/pages/switchbot-contact-sensor)
- [Curtain (WoCurtain)](https://switch-bot.com/pages/switchbot-curtain) (version 1 & 2)
- [Curtain 3 (WoCtn3)](https://switch-bot.com/pages/switchbot-curtain-3)
-- [Humidifier (WoHumi)](https://eu.switch-bot.com/products/switchbot-smart-humidifier)
+- Humidifier (WoHumi)
- Light Strip (WoStrip)
-- [Meter](https://switch-bot.com/pages/switchbot-meter)/[Meter Plus 70BB](https://switch-bot.com/pages/switchbot-meter-plus) (WoSensorTH)
+- [Meter](https://switch-bot.com/pages/switchbot-meter) / [Meter Plus](https://switch-bot.com/pages/switchbot-meter-plus) (WoSensorTH)
- [Indoor/Outdoor Meter](https://switch-bot.com/pages/switchbot-indoor-outdoor-thermo-hygrometer) (WoIOSensorTH)
- [Motion Sensor (WoPresence)](https://switch-bot.com/pages/switchbot-motion-sensor)
- Plug Mini (WoPlug), both the original (model W1901400) and HomeKit-enabled (model W1901401)
diff --git a/source/_integrations/switchbot_cloud.markdown b/source/_integrations/switchbot_cloud.markdown
index 2c718136c40..3bacae231bb 100644
--- a/source/_integrations/switchbot_cloud.markdown
+++ b/source/_integrations/switchbot_cloud.markdown
@@ -5,8 +5,8 @@ ha_category:
- Hub
- Plug
- Remote
- - Switch
- Sensor
+ - Switch
ha_release: '2023.10'
ha_iot_class: Cloud Polling
ha_codeowners:
@@ -15,10 +15,10 @@ ha_codeowners:
ha_domain: switchbot_cloud
ha_platforms:
- climate
- - switch
- sensor
+ - switch
ha_config_flow: true
-ha_integration_type: integration
+ha_integration_type: hub
---
The SwitchBot Cloud integration allows you to control SwitchBot [devices](https://www.switch-bot.com/) connected through the SwitchBot hub.
diff --git a/source/_integrations/tedee.markdown b/source/_integrations/tedee.markdown
index 700beb35710..e56c479960c 100644
--- a/source/_integrations/tedee.markdown
+++ b/source/_integrations/tedee.markdown
@@ -18,6 +18,7 @@ ha_codeowners:
- '@patrickhilker'
- '@zweckj'
ha_integration_type: integration
+ha_quality_scale: platinum
---
This integration interacts with your [Tedee](https://tedee.com) locks by communicating with the Tedee bridge through HTTP. The integration will communicate with your lock locally.
diff --git a/source/_integrations/tellduslive.markdown b/source/_integrations/tellduslive.markdown
index 550dfe47207..fff4e120dc7 100644
--- a/source/_integrations/tellduslive.markdown
+++ b/source/_integrations/tellduslive.markdown
@@ -11,7 +11,7 @@ ha_category:
ha_release: 0.11
ha_config_flow: true
ha_iot_class: Cloud Polling
-ha_quality_scale: gold
+ha_quality_scale: silver
ha_codeowners:
- '@fredrike'
ha_domain: tellduslive
diff --git a/source/_integrations/teslemetry.markdown b/source/_integrations/teslemetry.markdown
index dca66203a06..fadb630072d 100644
--- a/source/_integrations/teslemetry.markdown
+++ b/source/_integrations/teslemetry.markdown
@@ -6,14 +6,14 @@ ha_category:
- Button
- Car
- Climate
- - Device tracker
- Cover
+ - Device tracker
- Lock
- Media player
- Number
+ - Select
- Sensor
- Switch
- - Select
- Update
ha_release: 2024.2
ha_iot_class: Cloud Polling
@@ -26,8 +26,8 @@ ha_platforms:
- button
- climate
- cover
- - diagnostics
- device_tracker
+ - diagnostics
- lock
- media_player
- number
diff --git a/source/_integrations/thethingsnetwork.markdown b/source/_integrations/thethingsnetwork.markdown
index 747d68abff0..abe1fa04012 100644
--- a/source/_integrations/thethingsnetwork.markdown
+++ b/source/_integrations/thethingsnetwork.markdown
@@ -11,7 +11,8 @@ ha_codeowners:
ha_domain: thethingsnetwork
ha_platforms:
- sensor
-ha_integration_type: integration
+ha_integration_type: hub
+ha_config_flow: true
---
The `thethingsnetwork` {% term integration%} allows you to interact with the [The Things Network](https://www.thethingsnetwork.org) from within Home Assistant. This community-driven and open network supports [LoRaWAN](https://www.lora-alliance.org/) for long-range (~5 to 15 km) communication with low bandwidth (51 bytes/message). [Gateways](https://www.thethingsnetwork.org/docs/gateways/) transfer the received data from the sensors to The Things Network.
@@ -20,7 +21,7 @@ The Things Network supports various integrations to make the data available:
| The Things Network Integration | Home Assistant platform |
|---|---|
-| [MQTT](https://www.thethingsindustries.com/docs/integrations/mqtt) | [`MQTT`](integrations/mqtt) |
+| [MQTT](https://www.thethingsindustries.com/docs/integrations/mqtt) | [`MQTT`](/integrations/mqtt) |
| [Storage](https://www.thethingsindustries.com/docs/integrations/storage) | [`thethingsnetwork`](#setup) |
| [HTTP](https://www.thethingsindustries.com/docs/integrations/webhooks) | |
@@ -58,4 +59,3 @@ There is currently support for the following device types within Home Assistant:
## Sensor
All uplink messages decoded by The Things Network (including a `decoded_payload` entry) will be processes by this integration. Each field in `decoded_payload` will be added as a Home Assistant sensor entity.
-
diff --git a/source/_integrations/thread.markdown b/source/_integrations/thread.markdown
index 8cf79151132..590f18d8930 100644
--- a/source/_integrations/thread.markdown
+++ b/source/_integrations/thread.markdown
@@ -16,7 +16,7 @@ related:
- docs: /yellow/
title: Home Assistant Yellow - hub
- docs: /skyconnect/
- title: Home Assistant SkyConnect - Zigbee/Thread USB stick
+ title: Home Assistant Connect ZBT-1 - Zigbee/Thread USB stick
- docs: /integrations/matter/
title: Matter
- docs: /integrations/homekit_controller/
@@ -25,8 +25,8 @@ related:
title: Adding a Matter device to Home Assistant
- docs: /integrations/homekit_controller/#adding-a-homekit-device-through-thread
title: Adding an Apple HomeKit device through Thread
- - url: https://skyconnect.home-assistant.io/procedures/enable-thread/
- title: Enabling Thread on SkyConnect
+ - url: https://connectzbt1.home-assistant.io/procedures/enable-thread/
+ title: Enabling Thread on Connect ZBT-1
- url: https://yellow.home-assistant.io/procedures/enable-thread/
title: Enabling Thread on Yellow
---
@@ -97,9 +97,9 @@ These border routers may require an iPhone or Android phone for onboarding. What
#### Home Assistant
-Out of the box, Home Assistant SkyConnect and Yellow run Zigbee, not Thread. Currently, enabling Thread involves manual steps. The integration of the Home Assistant based Thread border router with Matter is work-in-progress.
+Out of the box, Home Assistant Connect ZBT-1 and Yellow run Zigbee, not Thread. Currently, enabling Thread involves manual steps. The integration of the Home Assistant based Thread border router with Matter is work-in-progress.
-- If you have a Home Assistant Yellow or SkyConnect, you can use their Thread radio. Follow these steps to [turn Home Assistant into a Thread border router](#turning-home-assistant-into-a-thread-border-router).
+- If you have a Home Assistant Yellow or Connect ZBT-1, you can use their Thread radio. Follow these steps to [turn Home Assistant into a Thread border router](#turning-home-assistant-into-a-thread-border-router).
#### Google
@@ -117,7 +117,7 @@ There are also other companies that provide devices with border router capabilit
## Turning Home Assistant into a Thread border router
-Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, SkyConnect, or another compatible radio.
+Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, Connect ZBT-1, or another compatible radio.
Find out if you already have Thread networks:
@@ -129,21 +129,21 @@ Find out if you already have Thread networks:
### Case 1: Making Home Assistant your first Thread network
-Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, SkyConnect, or another compatible radio and you do not have any third-party Thread networks present yet. This will automatically create a new Thread network with the name `ha-thread-xxxx`. The last for digits are a network-specific identifier (PAN ID).
+Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, Connect ZBT-1, or another compatible radio and you do not have any third-party Thread networks present yet. This will automatically create a new Thread network with the name `ha-thread-xxxx`. The last for digits are a network-specific identifier (PAN ID).
Note: To add Matter devices to this Thread network, an Android phone is required. Adding Matter devices to this Thread network using an iOS phone is not yet supported.
#### Prerequisites
-- Device with a Thread-capable radio, such as Home Assistant Yellow, SkyConnect, or another compatible radio
+- Device with a Thread-capable radio, such as Home Assistant Yellow, Connect ZBT-1, or another compatible radio
- Android phone
- No third-party Thread networks present
#### To make Home Assistant your first Thread network
-1. To enable Thread support on your Home Assistant Yellow or SkyConnect, you need to install the **OpenThread Border Router** add-on. Follow the corresponding procedure:
+1. To enable Thread support on your Home Assistant Yellow or Connect ZBT-1, you need to install the **OpenThread Border Router** add-on. Follow the corresponding procedure:
- [Enable Thread on Home Assistant Yellow](https://yellow.home-assistant.io/procedures/enable-thread/).
- - [Enable Thread on Home Assistant SkyConnect](https://skyconnect.home-assistant.io/procedures/enable-thread/).
+ - [Enable Thread on Home Assistant Connect ZBT-1](https://connectzbt1.home-assistant.io/procedures/enable-thread/).
2. Make sure the Home Assistant Thread network is defined as preferred network.
- This should happen automatically, but check to be sure.
@@ -162,7 +162,7 @@ Note: To add Matter devices to this Thread network, an Android phone is required
### Case 2: Creating a HA border router when there is an existing network
-Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, SkyConnect, or another compatible radio but you already have third-party Thread networks present. These steps will join the Home Assistant Thread border router with the existing Thread network.
+Follow these steps if you want to turn Home Assistant into a Thread border router using the Thread radio of Yellow, Connect ZBT-1, or another compatible radio but you already have third-party Thread networks present. These steps will join the Home Assistant Thread border router with the existing Thread network.

@@ -170,7 +170,7 @@ If you have both Google and Apple Thread networks present, decide which one you
#### Prerequisites
-- Device with a Thread-capable radio, such as Home Assistant Yellow, SkyConnect, or another compatible radio
+- Device with a Thread-capable radio, such as Home Assistant Yellow, Connect ZBT-1, or another compatible radio
- Third-party Thread network listed
- Android phone if you have a Google Thread network, iPhone if you have an Apple Thread network
@@ -190,9 +190,9 @@ Note: the steps and images here show the process with a Google Thread network. B

-5. To enable Thread support on your Home Assistant Yellow or SkyConnect, you need to install the **OpenThread Border Router** add-on. Follow the corresponding procedure:
+5. To enable Thread support on your Home Assistant Yellow or Connect ZBT-1, you need to install the **OpenThread Border Router** add-on. Follow the corresponding procedure:
- [Enable Thread on Home Assistant Yellow](https://yellow.home-assistant.io/procedures/enable-thread/).
- - [Enable Thread on Home Assistant SkyConnect](https://skyconnect.home-assistant.io/procedures/enable-thread/).
+ - [Enable Thread on Home Assistant Connect ZBT-1](https://connectzbt1.home-assistant.io/procedures/enable-thread/).
- **Result**: The network now shows as the preferred network, joined with the third-party network.

diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown
index 10b157114d5..68389b49637 100644
--- a/source/_integrations/utility_meter.markdown
+++ b/source/_integrations/utility_meter.markdown
@@ -12,6 +12,7 @@ ha_codeowners:
- '@dgomes'
ha_domain: utility_meter
ha_platforms:
+ - diagnostics
- select
- sensor
ha_integration_type: helper
diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown
index e8efc10c510..ca831ad2e0c 100644
--- a/source/_integrations/workday.markdown
+++ b/source/_integrations/workday.markdown
@@ -29,12 +29,11 @@ Check the [country list](https://github.com/dr-prodigy/python-holidays#available
{% include integrations/config_flow.md %}
-Days are specified as follows: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`.
-The keyword `holiday` is used for public holidays identified by the holidays module and holidays added by the `add_holidays` configuration option.
+The keyword "Holidays" is used for public holidays identified by the holidays module and holidays added by the "Add holidays" configuration option.
-Take note of the `holiday` keyword. Your first instinct might be to add it to the `exclude` configuration, thinking it means skipping the holidays. But it is meant to exclude the days in the holiday list from the workdays. So, when you exclude `holiday` and a workday falls on that day, that workday is excluded, and the sensor will be **off**. If you want every workday flagged with no regard to holidays, ensure that there is something in your `Excludes` configuration _other_ than `holiday`.
+Take note of the "Holidays" keyword. Your first instinct might be to add it to the "Excludes" configuration, thinking it means skipping the holidays. But it is meant to exclude the days in the holiday list from the workdays. So, when you exclude "Holidays" and a workday falls on that day, that workday is excluded, and the sensor will be **off**. If you want every workday flagged with no regard to holidays, ensure that there is something in your "Excludes" configuration _other_ than "Holidays".
diff --git a/source/_integrations/wyoming.markdown b/source/_integrations/wyoming.markdown
index 368342419b8..46f32a88321 100644
--- a/source/_integrations/wyoming.markdown
+++ b/source/_integrations/wyoming.markdown
@@ -9,7 +9,7 @@ ha_codeowners:
- '@balloob'
- '@synesthesiam'
ha_domain: wyoming
-ha_integration_type: integration
+ha_integration_type: service
ha_platforms:
- binary_sensor
- number
diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown
index cc458046c64..a66bbe450ca 100644
--- a/source/_integrations/zha.markdown
+++ b/source/_integrations/zha.markdown
@@ -73,15 +73,13 @@ In addition, it has support for "Zigbee groups" that enable native on-device gro
## Introduction
-ZHA {% term integration %} is a Zigbee gateway implementation that follows the standard Zigbee 3.0 specification (and earlier revisions). In Zigbee, there are three different device types: Zigbee Coordinator (ZC), Zigbee Router (ZR), and Zigbee End Device (ZED). A Zigbee network always has one (and no more) Zigbee Coordinator, however, a Zigbee network can have multiple Zigbee Routers and multiple Zigbee End Devices.
+This ZHA integration is a hardware-independent Zigbee gateway implementation that can replace most proprietary Zigbee gateways/bridges/hubs/controllers. Zigbee is a low-bandwidth communication protocol that relies on using small low-power digital radios to connect compatible devices to local Zigbee wireless private area networks. ZHA will create a single Zigbee network to which you can then pair/join most Zigbee-based devices that are made for home automation and lighting.
-A Zigbee Coordinator is the central device in a Zigbee network that manages and controls the network. It acts as a physical interface for the Zigbee wireless protocol, as well as being responsible for maintaining the Zigbee network topology and ensuring secure and efficient communication between Zigbee devices. Zigbee Router devices are mains-powered and will act as Zigbee signal repeaters within the Zigbee network mesh to extend its range and improve coverage, while Zigbee End Device devices are usually battery-operated sensors that will not act as Zigbee signal repeaters.
+Before installing the ZHA integration in Home Assistant, you need to connect a Zigbee Coordinator radio adapter that will connect to your Zigbee network. Those normally come in the form of a USB dongle that plugs directly into the same computer that is running your Home Assistant installation. The ZHA integration is compatible with many different "Zigbee Coordinator" adapters from various manufacturers. Be sure to [note the recommendations in the respective sections below before buying a Zigbee Coordinator](#compatible-hardware). A Zigbee network always needs to have one Zigbee Coordinator (it can never have more than one), and Zigbee devices can never be connected to more than a single Zigbee network, however, a Zigbee network can have multiple "Zigbee Router" devices and "Zigbee End Device" products.
-In the case of ZHA, the Zigbee Coordinator is a radio adapter or hardware module, that contains a microcontroller that runs the Zigbee protocol stack which the ZHA {% term integration %} uses to manage and communicate with a Zigbee network and its devices.
+Once ZHA has been set up with a Zigbee Coordinator it will automatically create a Zigbee network and you will be able to join/pair any Zigbee Router devices and Zigbee End Devices. With only a few [limitations](#limitations), most devices will join/pair directly regardless of brand and manufacturer. Technically almost all devices that are compliant with the official Zigbee specifications should offer interoperability, though a newer Zigbee Coordinator with support for later firmware often offers better compatibility with both new and older devices. Still, be aware that [all functionality might not always be supported or exposed for every device out-of-the-box](#knowing-which-devices-are-supported) as some devices that use manufacturer-specific extensions to add non-standard functions and features could sometimes need [device-specific code to fully work with ZHA](#how-to-add-support-for-new-and-unsupported-devices).
-Before installing the ZHA {% term integration %}, you will need to buy and connect a Zigbee Coordinator radio adapter or hardware module, those usually come in the form of a USB dongle that plugs directly into the computer that is running the Home Assistant installation. The ZHA {% term integration %} can work with many different "Zigbee Coordinator" adapters, however, be sure to read the respective sections below about compatible Zigbee radio adapters and hardware modules.
-
-Once ZHA has been set up and the Zigbee Coordinator radio adapter or module is configured, you will be able to directly join/pair any Zigbee device to the Zigbee network; regardless of the manufacturer and brand of that Zigbee-based product. Note, that while it is generally recommended to buy Zigbee 3.0 compliant devices as those should, in theory, offer greater interoperability, be sure of the sections about which devices are supported and exception handling.
+Note that because Zigbee relies on "mesh networking" technology it depends heavily on having [Zigbee Router devices](#using-router-devices-to-add-more-devices) to expand the network coverage and extend its size. These are always mains-powered devices that route messages to other devices that are located close to them within the Zigbee network mesh to improve the range and increase the total amount of devices you can add. You should therefore make sure that you add many Zigbee Router devices and not just Zigbee End Devices or else its network mesh connection routes will be limited due to the short range and poor wall penetration of Zigbee radio signals. It is highly recommended that you read and follow all the general tips below about [Zigbee interference avoidance and network range/coverage optimization)](#zigbee-interference-avoidance-and-network-rangecoverage-optimization).
## Compatible hardware
@@ -96,7 +94,7 @@ Some other Zigbee coordinator hardware may not support a firmware that is capabl
### Recommended Zigbee radio adapters and modules
- Silicon Labs EmberZNet based radios using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)
- - [Home Assistant SkyConnect](/skyconnect/) (EFR32MG21-based USB dongle)
+ - [Home Assistant Connect ZBT-1](/connectzbt1/) (EFR32MG21-based USB dongle)
- [Home Assistant Yellow](/yellow/) with integrated EFR32MG21 radio
- [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/)
- [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs-usb-adapter.html)/POPP ZB-Stick (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility))
diff --git a/source/_posts/2016-02-20-community-highlights.markdown b/source/_posts/2016-02-20-community-highlights.markdown
index 6d0b889f871..f13efefa414 100644
--- a/source/_posts/2016-02-20-community-highlights.markdown
+++ b/source/_posts/2016-02-20-community-highlights.markdown
@@ -9,7 +9,7 @@ categories: Community Video
og_image: /images/blog/2016-02-community-highlights/part-of-the-thing.png
---
-Home Assistant land has been busy and a lot of people have been creating awesome stuff. We've added [a cookbook section](/examples/) to the website full of examples how you can automate different things. Make sure you take a look and share your own recipes too!
+Home Assistant land has been busy and a lot of people have been creating awesome stuff.
### Home automation demo by Part of the Thing
diff --git a/source/_posts/2023-02-08-state-of-matter-and-thread.markdown b/source/_posts/2023-02-08-state-of-matter-and-thread.markdown
index bcf82a2fef5..ddb2ec5bf33 100644
--- a/source/_posts/2023-02-08-state-of-matter-and-thread.markdown
+++ b/source/_posts/2023-02-08-state-of-matter-and-thread.markdown
@@ -91,7 +91,7 @@ Home Assistant is about choice. You’re not limited to running it on official h
We created the [Home Assistant SkyConnect][skyconnect] to provide the missing smart home connectivity. It contains a chip from the same family as the Home Assistant Yellow. It is set out of the box to provide Zigbee. With the latest Home Assistant 2023.2 and when using Home Assistant OS, it is possible to turn your Home Assistant SkyConnect into a Thread border router. This can be done by enabling our experimental multiprotocol support in {% my hardware title="Settings -> Hardware" %} and by clicking Configure.
-
+
Home Assistant SkyConnect was introduced at the end of 2022 via our distributor network (hit “buy” on [our website][skyconnect]). Many distributors sold out right away but most should be receiving new stock soon.
diff --git a/source/_posts/2024-05-08-zwave-is-not-dead.markdown b/source/_posts/2024-05-08-zwave-is-not-dead.markdown
index f60eb8ec9d5..a2ebdc45583 100644
--- a/source/_posts/2024-05-08-zwave-is-not-dead.markdown
+++ b/source/_posts/2024-05-08-zwave-is-not-dead.markdown
@@ -3,7 +3,7 @@ layout: post
title: "Z-Wave is not dead"
description: "Z-Wave is alive and well, partly due to a strong community that is building new open-source resources."
date: 2024-05-08 00:00:01
-date_formatted: "May 08, 2024"
+date_formatted: "May 8, 2024"
author: Paulus Schoutsen
comments: true
categories: Z-Wave
diff --git a/source/_posts/2024-05-09-music-assistant-2.markdown b/source/_posts/2024-05-09-music-assistant-2.markdown
index 5866d2f2c79..0b6d8785b13 100644
--- a/source/_posts/2024-05-09-music-assistant-2.markdown
+++ b/source/_posts/2024-05-09-music-assistant-2.markdown
@@ -3,7 +3,7 @@ layout: post
title: "Music Assistant 2.0: Your Music, Your Players"
description: "Connecting multiple music libraries to almost any smart speaker."
date: 2024-05-09 00:00:01
-date_formatted: "May 09, 2024"
+date_formatted: "May 9, 2024"
author: Marcel van der Veldt
comments: true
categories: Music-Assistant
diff --git a/source/_posts/2024-06-05-release-20246.markdown b/source/_posts/2024-06-05-release-20246.markdown
new file mode 100644
index 00000000000..b59967029d1
--- /dev/null
+++ b/source/_posts/2024-06-05-release-20246.markdown
@@ -0,0 +1,993 @@
+---
+layout: post
+title: "2024.6: Dipping our toes in the world of AI using LLMs 🤖"
+description: "Control your home with an AI powered Assist, conditional sections and cards for your dashboards, amazing new media player commands, and so much more! 🚀"
+date: 2024-06-05 00:00:00
+date_formatted: "June 5, 2024"
+author: Franck Nijhof
+author_twitter: frenck
+comments: true
+categories:
+ - Release-Notes
+ - Core
+og_image: /images/blog/2024-06/social.png
+---
+
+
+
+Home Assistant Core 2024.6! 🎉
+
+Welcome to another loaded release of Home Assistant! Packed with many exciting
+new features, this month is most definitely one to remember.
+
+Let's talk about AI. AI might just as well be the talk of the century. These
+so-called [LLMs] most certainly open up a whole new world of possibilities.
+When we first introduced the OpenAI and Google AI conversation agents for Assist,
+one of the most requested features was the ability to control your home with it.
+
+Now for the big news:
+
+_**Well, as of today, you can control your home with an AI!**_ 🤖
+
+But there is a lot more to this release. Super simple media player commands,
+more data table improvements, tag entities, collapsible blueprint sections,
+and so much more!
+
+I’m personally most excited about the new features in the dashboarding area.
+Being able to conditionally show sections and cards is definitely a game-changer
+for my dashboards.
+
+Enjoy the release!
+
+../Frenck
+
+[LLMs]: https://en.wikipedia.org/wiki/Large_language_model
+
+
+
+- [Voice \& Assist](#voice--assist)
+ - [Dipping our toes in the world of AI using LLMs](#dipping-our-toes-in-the-world-of-ai-using-llms)
+ - [Improved media player commands](#improved-media-player-commands)
+- [Dashboards](#dashboards)
+ - [Show sections conditionally](#show-sections-conditionally)
+ - [Control visibility of cards](#control-visibility-of-cards)
+ - [Setting a dashboard background](#setting-a-dashboard-background)
+- [Data tables improvements](#data-tables-improvements)
+- [Integrations](#integrations)
+ - [New integrations](#new-integrations)
+ - [Noteworthy improvements to existing integrations](#noteworthy-improvements-to-existing-integrations)
+ - [Integrations reaching platinum quality level](#integrations-reaching-platinum-quality-level)
+ - [Now available to set up from the UI](#now-available-to-set-up-from-the-ui)
+ - [Farewell to the following](#farewell-to-the-following)
+- [Matter turns 1.3](#matter-turns-13)
+- [Other noteworthy changes](#other-noteworthy-changes)
+ - [Disabling expiration of login tokens](#disabling-expiration-of-login-tokens)
+ - [Tag entities!](#tag-entities)
+ - [Collapsible sections for blueprints!](#collapsible-sections-for-blueprints)
+- [Patch releases](#patch-releases)
+ - [2024.6.1 - June 7](#202461---june-7)
+ - [2024.6.2 - June 11](#202462---june-11)
+ - [2024.6.3 - June 15](#202463---june-15)
+- [Need help? Join the community!](#need-help-join-the-community)
+- [Backward-incompatible changes](#backward-incompatible-changes)
+- [All changes](#all-changes)
+
+Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=xMFC8yaVtpI)
+5 June 2024, at 20:00 GMT / 12:00 PST / 21:00 CEST!
+
+
+
+## Voice & Assist
+
+This month, we are continuing our work on improving Assist's out-of-the-box
+capabilities: Not only are we adding features that you would expect from a
+voice assistant, such as media control, but we are leap-frogging ahead with
+some new exciting developments and experimenting with AI! 🤖
+
+We will have more to announce during a soon-to-be-announced _Voice - Chapter 7_
+livestream on June the 26th! Keep an eye out for that! 🎙️
+
+### Dipping our toes in the world of AI using LLMs
+
+Our voice assistant's brain is called a _conversation agent_.
+It is responsible for understanding the intention behind the spoken command,
+performing an action, and generating a response.
+
+Since the beginning of our voice journey, we allowed you to switch your
+conversation agent for an LLM-based one. This led to some very funny experiments,
+such as our [infamous interview with Mario](https://www.youtube.com/watch?v=eLx8_NAqptk).
+
+Until now, these two worlds (our own Home Assistant conversation agent
+controlling your home and LLM-based conversation agents) did not overlap;
+it was impossible to control your home from an LLM-based conversation agent.
+
+Today, we’re happy to announce that we are closing this gap!
+
+
+
+When setting up an LLM-based conversation agent, you can decide to let
+your conversation agent control your home with a flick of a switch.
+
+
+
+With this new setting, LLM-based conversation agents can tap into our
+{% term intent %} system, which powers Assist. They also get access to every
+{% term entity %} exposed to Assist. That way, you control what your agents
+have access to.
+
+Tapping into our intent system is great because it works out of the box.
+LLM-based conversation agents can do everything that Assist can do.
+The added benefit is that they are capable of reasoning beyond words,
+which Assist was incapable of doing.
+
+For example, if you have a light called _"Webcam light"_ exposed in your
+_"office"_ area, you can give direct commands such as:
+
+> Turn on the office webcam light.
+
+That was also working with Assist previously, but you can also give more
+complex commands, such as:
+
+> I'm going to a meeting, can you please make sure people see my face?
+
+The agent will figure out the intention behind the words
+and call the correct intent on the matching exposed entities.
+
+{% details "What about custom intents?" %}
+
+Our intent system has been built from the start to be extensible.
+Custom integrations and even users can register their own intents.
+This allows you to guide the agent beyond what's capable out of the box.
+
+Here is an example of a custom intent that explains to the agent what
+to do when I leave my home.
+
+```yaml
+conversation:
+ intents:
+ LeaveHome:
+ - "Leave home"
+
+intent_script:
+ LeaveHome:
+ description: "Launch the leave home script. To be used when I am about to leave my home."
+ action:
+ - service: script.leave_home
+ data: {}
+ speech:
+ text: "Done"
+```
+
+With this YAML snippet added to my {% term "`configuration.yaml`" %}, if the
+agent understands that I am leaving home, it will not turn off what it thinks
+I want, it will run my `leave_home` script, which is precisely what
+I want it to do.
+
+{% enddetails %}
+
+This release makes it available for our [OpenAI] and [Google AI]
+{% term integrations %}. To make it easier to get started with LLMs,
+we have updated them with recommended model settings that strike the right
+balance between accuracy, speed, and cost. If you had them set up previously,
+we recommend enabling the recommended settings and emptying the instructions.
+
+Our recommended model settings perform equally well for voice assistant tasks.
+Google is 14x cheaper than OpenAI, but OpenAI is better at answering non-smart
+home questions. We are preparing a blog post with a deep dive into the research
+that went into this feature, coming soon™!
+
+Local LLMs have been supported via [the Ollama integration](/integrations/ollama/) since Home Assistant 2024.4. Ollama and the major open source LLM models are not tuned for tool calling, so this has to be built from scratch and was not done in time for this release. We're collaborating with NVIDIA to get this working – [they showed a prototype last week.](https://youtu.be/aq7QS9AtwE8?si=yZilHo4uDUCAQiqN)
+
+Thanks to everyone who contributed to this feature! [@shulyaka], [@tronikos],
+[@allenporter], [@synesthesiam], [@jlpouffier], and [@balloob]!
+
+[@allenporter]: https://github.com/allenporter
+[@balloob]: https://github.com/balloob
+[@jlpouffier]: https://github.com/jlpouffier
+[@shulyaka]: https://github.com/shulyaka
+[@synesthesiam]: https://github.com/synesthesiam
+[@tronikos]: https://github.com/tronikos
+[Google AI]: /components/google_generative_ai_conversation/
+[OpenAI]: /components/openai_conversation/
+
+### Improved media player commands
+
+We have introduced new media player {% term intents %} that allow you to do
+more while saying less. You can say the following voice commands to control
+media players in the same area as your Assist device:
+
+- _"Pause"_
+- _"Resume"_
+- _"Next"_
+- _"Set the volume to 50%"_
+
+Up until now, we have only proposed sentences targeting a specific entity by
+its name. Due to this limitation, these intents were not the most user-friendly,
+as the sentences were too long to say: _“Skip to the next song on the TV”_.
+
+We added two features to get to the smallest sentences possible. Context
+awareness makes our voice assistant aware of the devices in the same area as
+the satellite. We have also created a smart matching strategy that finds the
+right media player to target.
+
+For example, if you say “pause”, the voice assistant will automatically
+target the media player that is playing.
+
+
+
+Just ensure your voice assistant device is assigned to an area with an exposed
+media player, and you are good to go.
+
+## Dashboards
+
+Work has continued, making the dashboard customization and organization easier
+and more intuitive. This month, we are adding a new feature for our new sections
+and customization for backgrounds, which everyone in your home will enjoy.
+
+### Show sections conditionally
+
+We added a visibility option to the new [sections dashboard] feature. This
+amazing new feature allows you to hide or show a section based on certain
+conditions.
+
+For example, you may want to display only a section on mobile when you’re at
+home. Or, only show the switch to turn off kitchen lights when the kitchen lights
+are actually on. Maybe you have that one section only relevant to you or your
+partner, and you want to hide it from the kids.
+
+
+
+It uses the [same conditions as condition cards](/dashboards/conditional/#conditions-options),
+meaning you have a lot of flexibility in what you can do.
+
+[sections dashboard]: /dashboards/sections/
+
+### Control visibility of cards
+
+Wait, we didn't stop there! This same visibility feature is now also available
+for cards! Oh yes! 🚀
+
+
+
+You can now hide or show a card based on certain conditions. This allows you to
+create more dynamic dashboards that adapt to your needs. The big difference is
+that you don’t need a condition card to use this feature. It is available
+directly in the card configuration in the **Visibility** tab.
+
+### Setting a dashboard background
+
+[@Nezz] contributed a great new feature to our dashboarding UI: the ability to
+set a background image for your [dashboard](/dashboards)!
+
+Previously, this was only possible by editing YAML, but now you can do it
+directly from the UI. Even better, you can upload an image directly from your
+computer or provide a URL to one!
+
+
+
+_Photo: [Body of Water Between Green Leaf Trees] by [Ian Turnell](https://www.pexels.com/@samandgos/)._
+
+The same ability (to upload images directly from your computer) was added to
+the picture card, too! Thanks, [@karwosts], for that one!
+
+[@karwosts]: https://github.com/karwosts
+[@Nezz]: https://github.com/Nezz
+[Body of Water Between Green Leaf Trees]: https://www.pexels.com/photo/body-of-water-between-green-leaf-trees-709552/
+[Ian Turnell]: https://www.pexels.com/@samandgos/
+
+## Data tables improvements
+
+Like the [last release](/blog/2024/05/01/release-20245/#more-features-for-our-data-tables),
+this release keeps improving our data tables.
+
+When we [introduced data groupings](/blog/2024/04/03/release-20244/#item-grouping)
+in the tables, you asked for a way to collapse and expand those groupings,
+so we did in the last release! But then we quickly realized that it was not
+enough, and you wanted to be able to collapse and expand all groups at once.
+So, we did that for this release!
+
+
+
+We've also expanded the voice assistant expose data table to allow grouping
+by area and domain.
+
+Additionally, filters you've set in the data tables are now saved in your
+browser session. Meaning, if you navigate away from the page and come back, your
+filters will still be there. But! Each browser tab or window has its own session,
+meaning you can have different filters in different tabs or windows that are
+remembered for that specific tab or window.
+
+## Integrations
+
+Thanks to our community for keeping pace with the new {% term integrations %}
+and improvements to existing ones! You’re all awesome 🥰
+
+### New integrations
+
+We welcome the following new integrations in this release:
+
+- **[Airgradient]**, added by [@joostlek]
+ Provides air quality data from your local Airgradient device.
+- **[APsystems]**, added by [@mawoka-myblock]
+ Monitor your APsystems EZ1 microinverters.
+- **[Azure data explorer]**, added by [@kaareseras]
+ Forward events from Home Assistant to the Azure Data Explorer for analysis.
+- **[IMGW-PIB]**, added by [@bieniu]
+ Hydrological data from the Institute of Meteorology and
+ Water Management—National Research Institute provides information
+ about rivers and water reservoirs in Poland.
+- **[Intelligent Storage Acceleration]**, added by [@bdraco]
+ Intelligent Storage Acceleration Library (ISAL) is used to accelerate our
+ Home Assistant frontend. It is automatically enabled/activated.
+- **[Monzo]**, added by [@JakeMartin-ICL]
+ Connect your Monzo bank account to Home Assistant and get insights
+ into your account balance.
+
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@JakeMartin-ICL]: https://github.com/JakeMartin-ICL
+[@joostlek]: https://github.com/joostlek
+[@kaareseras]: https://github.com/kaareseras
+[@mawoka-myblock]: https://github.com/mawoka-myblock
+[Airgradient]: /integrations/airgradient
+[APsystems]: /integrations/apsystems
+[Azure data explorer]: /integrations/azure_data_explorer
+[IMGW-PIB]: /integrations/imgw_pib
+[Intelligent Storage Acceleration]: /integrations/isal
+[Monzo]: /integrations/monzo
+
+### Noteworthy improvements to existing integrations
+
+It is not just new {% term integrations %} that are added; existing
+integrations are also constantly improved. Here are some of the noteworthy
+changes to existing integrations:
+
+- Do you need a wireless device that can bridge a larger distance, like
+ kilometers? A [LoRa] device might be a good option. Thanks to [@angelnu]
+ we now have a working integration for [The Things Network].
+- [@starkillerOG] added support for PIR and battery sensors to the [Reolink]
+ integrations. Nice!
+- The [Teslemetry] integration has been expanded tremendously, adding new
+ platforms and features. Awesome job [@Bre77]!
+- Limited templates can now be used to disable {% term triggers %},
+ {% term conditions %}, and {% term actions %}. [@farmio] thought this might
+ be helpful for {% term blueprint %} creators.
+- [@Anrijs] added support for the [Aranet Radiation] devices to the
+ [Aranet] integration. Nice!
+- You can now set the cutting height of your [Husqvarna Automower] and there
+ are switches to make it stay out of certain zones. Thanks [@Thomas55555]!
+- [@thomaskistler] added flow and rain sensor support to the [Hydrawise]
+ integration. Great!
+- The [SwitchBot Cloud] integration now supports the [SwitchBot Meter],
+ [MeterPlus], and [Outdoor Meter]. Thanks [@laurence-presland]!
+
+[@angelnu]: https://github.com/angelnu
+[@Anrijs]: https://github.com/Anrijs
+[@Bre77]: https://github.com/Bre77
+[@farmio]: https://github.com/farmio
+[@laurence-presland]: https://github.com/laurence-presland
+[@starkillerOG]: https://github.com/starkillerOG
+[@Thomas55555]: https://github.com/Thomas55555
+[@thomaskistler]: https://github.com/thomaskistler
+[Aranet Radiation]: https://aranet.com/products/aranet-radiation-sensor
+[Aranet]: /integrations/aranet
+[Husqvarna Automower]: /integrations/husqvarna_automower
+[Hydrawise]: /integrations/hydrawise
+[LoRa]: https://en.wikipedia.org/wiki/LoRa
+[MeterPlus]: https://www.switch-bot.com/products/switchbot-meter-plus
+[Outdoor Meter]: https://www.switch-bot.com/products/switchbot-indoor-outdoor-thermo-hygrometer
+[Reolink]: /integrations/reolink
+[SwitchBot Cloud]: /integrations/switchbot_cloud
+[SwitchBot Meter]: https://www.switch-bot.com/products/switchbot-meter
+[Teslemetry]: /integrations/teslemetry
+[The Things Network]: /integrations/thethingsnetwork
+
+### Integrations reaching platinum quality level
+
+The following {% term integrations %} reached the platinum 🏆 level on our
+[integration quality scale](/docs/quality_scale). These integrations are
+the best of the best and give you an excellent out-of-the-box experience.
+
+- **[Fyta]**, done by [@dontinelli]
+- **[Google Generative AI]**, done by [@tronikos]
+- **[IMGW-PIB]**, done by [@bieniu]
+- **[Minecraft Server]**, done by [@elmurato]
+- **[tedee]**, done by [@zweckj]
+
+Congratulations to all the developers who worked on these integrations!
+
+[@bieniu]: https://github.com/bieniu
+[@dontinelli]: https://github.com/dontinelli
+[@elmurato]: https://github.com/elmurato
+[@tronikos]: https://github.com/tronikos
+[@zweckj]: https://github.com/zweckj
+[Fyta]: /integrations/fyta
+[Google Generative AI]: /integrations/google_generative_ai_conversation
+[IMGW-PIB]: /integrations/imgw_pib
+[Minecraft Server]: /integrations/minecraft_server
+[tedee]: /integrations/tedee
+
+### Now available to set up from the UI
+
+While most {% term integrations %} can be set up directly from the Home Assistant
+user interface, some were only available using YAML configuration. We keep moving
+more integrations to the UI, making them more accessible for everyone
+to set up and use.
+
+The following integrations are now available via the Home Assistant UI:
+
+- **[File]**, done by [@jbouwh]
+- **[Jewish Calendar]**, done by [@yuvalabou]
+- **[Media extractor]**, done by [@joostlek]
+- **[The Things Network]**, done by [@angelnu]
+
+[@angelnu]: https://github.com/angelnu
+[@jbouwh]: https://github.com/jbouwh
+[@joostlek]: https://github.com/joostlek
+[@yuvalabou]: https://github.com/yuvalabou
+[File]: /integrations/file
+[Jewish Calendar]: /integrations/jewish_calendar
+[Media extractor]: /integrations/media_extractor
+[The Things Network]: /integrations/thethingsnetwork
+
+### Farewell to the following
+
+The following {% term integrations %} are also no longer available as
+of this release:
+
+- **Ambiclimate** has been removed by [@gjohansson-ST]. Their services have been
+ terminated, effective March 31, 2024.
+
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[#116410]: https://github.com/home-assistant/core/pull/116410
+
+## Matter turns 1.3
+
+As one of the first in the industry, we proudly announce that Home Assistant
+is already based on the latest {% term Matter %} specification: Matter 1.3! 😎
+This updated version of the Matter SDK improves the reliability
+and compatibility of Matter devices.
+
+This release also improves and expands device support. Matter-based
+air purifiers and room air conditioner devices are now supported, thermostats
+and other climate devices had important fixes around set points, and updates
+to our discovery ensure that we can represent more data for most devices.
+
+A couple of Matter devices out there have so-called "custom clusters".
+Custom clusters are a standardized way for manufacturers to include
+non-standardized data. We want to support custom clusters, so we need
+to add support for each one individually.
+
+This release allows Home Assistant to be notified when the data of a custom
+cluster changes (instead of polling for it on an interval). This will reduce the
+network traffic and improve the performance of your Matter network,
+especially on bigger {% term Thread %} networks.
+
+## Other noteworthy changes
+
+There are many more improvements in this release; here are some of the other
+noteworthy changes this release:
+
+- A default code can now be set in the entity settings for every alarm control
+ panel {% term entities %}. Nice work [@gjohansson-ST]!
+- [@Troon] added a filter to our {% term templates %}: `add`. This filter allows
+ you to add a value similar to the existing `multiply`. Great!
+- A new action building block has been added to our {% term automations %} and
+ {% term scripts %} by [@surfingbytes] and [@frenck]: [Run sequence of actions].
+ This allows you to group multiple {% term actions %} together or run multiple
+ sequences of actions in [parallel].
+- Sensors can be [grouped] to calculate, for example, their sum or mean value.
+ Thanks to [@CoRfr], it is now possible to calculate the [standard deviation]
+ of a group of sensors. Cool!
+
+[@CoRfr]: https://github.com/CoRfr
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@surfingbytes]: https://github.com/surfingbytes
+[@Troon]: https://github.com/Troon
+[grouped]: /integrations/group
+[parallel]: /docs/scripts/#parallelizing-actions
+[Run sequence of actions]: /docs/scripts/#grouping-actions
+[standard deviation]: https://en.wikipedia.org/wiki/Standard_deviation
+
+### Disabling expiration of login tokens
+
+A few releases ago, we introduced the automatic expiration of logins. If a login
+session wasn't used for 90 days, it would expire and be automatically cleaned up.
+
+Some of you have expressed that you would like to disable this feature for
+various reasons. For example, because of a secondary holiday home one doesn’t
+regularly visit, or because of relatives who can only come over a few times
+a year. We added a new option to the user profile settings to disable
+the expiration of specific login tokens.
+
+
+
+You can find these token in your profile settings, under the **Security** tab.
+
+{% my profile badge %}
+
+### Tag entities!
+
+Home Assistant has had support for tags for a long time. The tags feature
+allowed NFC tags or QR codes to be used with Home Assistant, for example, to
+trigger {% term automations %}.
+
+However, tags were not real entities and, thus, not always as logical to use.
+With this release, [@gjohansson-ST] changed this!
+
+Tags are now normal {% term entities %} and can be used in {% term automations %},
+{% term scripts %}, {% term templates %}, and even be added to your
+your [dashboards](/dashboards)!
+
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+
+### Collapsible sections for blueprints!
+
+[@karwosts] makes an appearance again this release with another one of his QoL
+(Quality of Live) improvements. He added the ability to add collapsible sections
+to {% term blueprints %}. This allows blueprint creators to group configuration
+options together or hide advanced or less common options by default.
+
+
+
+ Each section can be collapsed or uncollapsed by clicking on the section header.
+
+
+Thanks [@karwosts]!
+
+Read more about blueprint input sections [in our documentation](/docs/blueprint/schema/#blueprint-input-sections).
+
+Looking for an interesting blueprint to get started? Check out the
+[Blueprints Exchange] on our community forum! There are great automation
+blueprints available.
+
+[@karwosts]: https://github.com/karwosts
+[Blueprints Exchange]: https://community.home-assistant.io/c/blueprints-exchange/53
+
+## Patch releases
+
+We will also release patch releases for Home Assistant 2024.6 in June. These
+patch releases only contain bug fixes. Our goal is to release a patch release
+every Friday.
+
+### 2024.6.1 - June 7
+
+- Update requests to 2.32.3 ([@cdce8p] - [#118868])
+- Prioritize literal text with name slots in sentence matching ([@synesthesiam] - [#118900])
+- Check if imap message text has a value instead of checking if its not None ([@engrbm87] - [#118901])
+- Fix flaky Google Assistant test ([@jpbede] - [#118914])
+- Revert "Bump orjson to 3.10.3 (#116945)" ([@bdraco] - [#118920])
+- Bump `imgw-pib` backend library to version `1.0.2` ([@bieniu] - [#118953])
+- Fix Alarm control panel not require code in several integrations ([@gjohansson-ST] - [#118961])
+- Bump python-holidays to 0.50 ([@gjohansson-ST] - [#118965])
+- Bump pydrawise to 2024.6.3 ([@dknowles2] - [#118977])
+- Bump `imgw-pib` library to version `1.0.4` ([@bieniu] - [#118978])
+- Fix unit of measurement for airgradient sensor ([@joostlek] - [#118981])
+- Fix exposure checks on some intents ([@synesthesiam] - [#118988])
+- Remove isal from after_dependencies in http ([@bdraco] - [#119000])
+- Hold connection lock in Shelly RPC reconnect ([@thecode] - [#119009])
+- Always have addon url in detached_addon_missing ([@mdegat01] - [#119011])
+- Increase test coverage for KNX Climate ([@farmio] - [#117903])
+- Fix KNX `climate.set_hvac_mode` not turning `on` ([@farmio] - [#119012])
+- Fix refactoring error in snmp switch ([@bdraco] - [#119028])
+- Fix remember_the_milk calling configurator async api from the wrong thread ([@bdraco] - [#119029])
+- Fix AirGradient name ([@joostlek] - [#119046])
+- Add type ignore comments ([@cdce8p] - [#119052])
+- Fix Azure Data Explorer strings ([@joostlek] - [#119067])
+
+[#117903]: https://github.com/home-assistant/core/pull/117903
+[#118400]: https://github.com/home-assistant/core/pull/118400
+[#118868]: https://github.com/home-assistant/core/pull/118868
+[#118900]: https://github.com/home-assistant/core/pull/118900
+[#118901]: https://github.com/home-assistant/core/pull/118901
+[#118914]: https://github.com/home-assistant/core/pull/118914
+[#118920]: https://github.com/home-assistant/core/pull/118920
+[#118953]: https://github.com/home-assistant/core/pull/118953
+[#118961]: https://github.com/home-assistant/core/pull/118961
+[#118965]: https://github.com/home-assistant/core/pull/118965
+[#118977]: https://github.com/home-assistant/core/pull/118977
+[#118978]: https://github.com/home-assistant/core/pull/118978
+[#118981]: https://github.com/home-assistant/core/pull/118981
+[#118988]: https://github.com/home-assistant/core/pull/118988
+[#119000]: https://github.com/home-assistant/core/pull/119000
+[#119009]: https://github.com/home-assistant/core/pull/119009
+[#119011]: https://github.com/home-assistant/core/pull/119011
+[#119012]: https://github.com/home-assistant/core/pull/119012
+[#119028]: https://github.com/home-assistant/core/pull/119028
+[#119029]: https://github.com/home-assistant/core/pull/119029
+[#119046]: https://github.com/home-assistant/core/pull/119046
+[#119052]: https://github.com/home-assistant/core/pull/119052
+[#119067]: https://github.com/home-assistant/core/pull/119067
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@cdce8p]: https://github.com/cdce8p
+[@dknowles2]: https://github.com/dknowles2
+[@engrbm87]: https://github.com/engrbm87
+[@farmio]: https://github.com/farmio
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@joostlek]: https://github.com/joostlek
+[@jpbede]: https://github.com/jpbede
+[@mdegat01]: https://github.com/mdegat01
+[@synesthesiam]: https://github.com/synesthesiam
+[@thecode]: https://github.com/thecode
+
+### 2024.6.2 - June 11
+
+- Fix statistic_during_period wrongly prioritizing ST statistics over LT ([@karwosts] - [#115291])
+- Bump pyElectra to 1.2.1 ([@rubeecube] - [#118958])
+- Update gardena library to 1.4.2 ([@elupus] - [#119010])
+- Calculate attributes when entity information available in Group sensor ([@gjohansson-ST] - [#119021])
+- Bump google-generativeai to 0.6.0 ([@tronikos] - [#119062])
+- Fix Azure data explorer ([@kaareseras] - [#119089])
+- Ensure multiple executions of a restart automation in the same event loop iteration are allowed ([@bdraco] - [#119100])
+- Fix control 4 on os 2 ([@adrum] - [#119104])
+- Properly handle escaped unicode characters passed to tools in Google Generative AI ([@tronikos] - [#119117])
+- Catch GoogleAPICallError in Google Generative AI ([@tronikos] - [#119118])
+- Bump aioshelly to 10.0.1 ([@thecode] - [#119123])
+- Bump aiowaqi to 3.1.0 ([@joostlek] - [#119124])
+- Ensure intent tools have safe names ([@balloob] - [#119144])
+- Fix workday timezone ([@TomBrien] - [#119148])
+- Bump py-synologydsm-api to 2.4.4 ([@mib1185] - [#119156])
+- Use more conservative timeout values in Synology DSM ([@mib1185] - [#119169])
+- Handle Shelly BLE errors during connect and disconnect ([@thecode] - [#119174])
+- Fix elgato light color detection ([@LapsTimeOFF] - [#119177])
+- Bump opower to 0.4.7 ([@tronikos] - [#119183])
+- Add fallback to entry_id when no mac address is retrieved in enigma2 ([@autinerd] - [#119185])
+- Fix envisalink alarm ([@gjohansson-ST] - [#119212])
+- Fixes crashes when receiving malformed decoded payloads ([@angelnu] - [#119216])
+- Fix Glances v4 network and container issues (glances-api 0.8.0) ([@wittypluck] - [#119226])
+- Bump python-roborock to 2.3.0 ([@ethemcemozkan] - [#119228])
+- Revert SamsungTV migration ([@epenet] - [#119234])
+- Always provide a currentArmLevel in Google assistant ([@elupus] - [#119238])
+- Remove myself as codeowner for unifiprotect ([@bdraco] - [#118824])
+- Switch unifiprotect lib to use uiprotect ([@bdraco] - [#119243])
+- Fix wrong arg name in Idasen Desk config flow ([@abmantis] - [#119247])
+- Fix climate on/off in nexia ([@bdraco] - [#119254])
+- Bump google-nest-sdm to 4.0.5 ([@allenporter] - [#119255])
+- Bump uiprotect to 0.4.0 ([@bdraco] - [#119256])
+- Improve workday test coverage ([@bdraco] - [#119259])
+- Fix persistence on OpenWeatherMap raised repair issue ([@frenck] - [#119289])
+- Bump uiprotect to 0.4.1 ([@bdraco] - [#119308])
+- Add more debug logging to Ping integration ([@jpbede] - [#119318])
+- Update frontend to 20240610.0 ([@bramkragten] - [#119320])
+- Fix statistic_during_period after core restart ([@emontnemery] - [#119323])
+- Fix AladdinConnect OAuth domain ([@swcloudgenie] - [#119336])
+- Bump `imgw-pib` backend library to version 1.0.5 ([@bieniu] - [#119360])
+
+[#115291]: https://github.com/home-assistant/core/pull/115291
+[#118400]: https://github.com/home-assistant/core/pull/118400
+[#118824]: https://github.com/home-assistant/core/pull/118824
+[#118958]: https://github.com/home-assistant/core/pull/118958
+[#119010]: https://github.com/home-assistant/core/pull/119010
+[#119021]: https://github.com/home-assistant/core/pull/119021
+[#119062]: https://github.com/home-assistant/core/pull/119062
+[#119089]: https://github.com/home-assistant/core/pull/119089
+[#119096]: https://github.com/home-assistant/core/pull/119096
+[#119100]: https://github.com/home-assistant/core/pull/119100
+[#119104]: https://github.com/home-assistant/core/pull/119104
+[#119117]: https://github.com/home-assistant/core/pull/119117
+[#119118]: https://github.com/home-assistant/core/pull/119118
+[#119123]: https://github.com/home-assistant/core/pull/119123
+[#119124]: https://github.com/home-assistant/core/pull/119124
+[#119144]: https://github.com/home-assistant/core/pull/119144
+[#119148]: https://github.com/home-assistant/core/pull/119148
+[#119156]: https://github.com/home-assistant/core/pull/119156
+[#119169]: https://github.com/home-assistant/core/pull/119169
+[#119174]: https://github.com/home-assistant/core/pull/119174
+[#119177]: https://github.com/home-assistant/core/pull/119177
+[#119183]: https://github.com/home-assistant/core/pull/119183
+[#119185]: https://github.com/home-assistant/core/pull/119185
+[#119212]: https://github.com/home-assistant/core/pull/119212
+[#119216]: https://github.com/home-assistant/core/pull/119216
+[#119226]: https://github.com/home-assistant/core/pull/119226
+[#119228]: https://github.com/home-assistant/core/pull/119228
+[#119234]: https://github.com/home-assistant/core/pull/119234
+[#119238]: https://github.com/home-assistant/core/pull/119238
+[#119243]: https://github.com/home-assistant/core/pull/119243
+[#119247]: https://github.com/home-assistant/core/pull/119247
+[#119254]: https://github.com/home-assistant/core/pull/119254
+[#119255]: https://github.com/home-assistant/core/pull/119255
+[#119256]: https://github.com/home-assistant/core/pull/119256
+[#119259]: https://github.com/home-assistant/core/pull/119259
+[#119289]: https://github.com/home-assistant/core/pull/119289
+[#119308]: https://github.com/home-assistant/core/pull/119308
+[#119318]: https://github.com/home-assistant/core/pull/119318
+[#119320]: https://github.com/home-assistant/core/pull/119320
+[#119323]: https://github.com/home-assistant/core/pull/119323
+[#119336]: https://github.com/home-assistant/core/pull/119336
+[#119360]: https://github.com/home-assistant/core/pull/119360
+[@LapsTimeOFF]: https://github.com/LapsTimeOFF
+[@TomBrien]: https://github.com/TomBrien
+[@abmantis]: https://github.com/abmantis
+[@adrum]: https://github.com/adrum
+[@allenporter]: https://github.com/allenporter
+[@angelnu]: https://github.com/angelnu
+[@autinerd]: https://github.com/autinerd
+[@balloob]: https://github.com/balloob
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bramkragten]: https://github.com/bramkragten
+[@elupus]: https://github.com/elupus
+[@emontnemery]: https://github.com/emontnemery
+[@epenet]: https://github.com/epenet
+[@ethemcemozkan]: https://github.com/ethemcemozkan
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@joostlek]: https://github.com/joostlek
+[@jpbede]: https://github.com/jpbede
+[@kaareseras]: https://github.com/kaareseras
+[@karwosts]: https://github.com/karwosts
+[@mib1185]: https://github.com/mib1185
+[@rubeecube]: https://github.com/rubeecube
+[@swcloudgenie]: https://github.com/swcloudgenie
+[@thecode]: https://github.com/thecode
+[@tronikos]: https://github.com/tronikos
+[@wittypluck]: https://github.com/wittypluck
+
+### 2024.6.3 - June 15
+
+- Make remaining time of timers available to LLMs ([@tronikos] - [#118696])
+- Bump uiprotect to 0.10.1 ([@bdraco] - [#119327])
+- Bump uiprotect to 0.13.0 ([@bdraco] - [#119344])
+- Bump uiprotect to 1.0.0 ([@bdraco] - [#119415])
+- Fix incorrect key name in unifiprotect options strings ([@bdraco] - [#119417])
+- Bump buieradar to 1.0.6 ([@mjj4791] - [#119433])
+- Bump uiprotect to v1.0.1 ([@ep1cman] - [#119436])
+- Bump uiprotect to 1.1.0 ([@bdraco] - [#119449])
+- Add loggers to gardena bluetooth ([@elupus] - [#119460])
+- Revert Use integration fallback configuration for tado water heater fallback ([@erwindouna] - [#119466])
+- Partially revert "Add more debug logging to Ping integration" ([@jpbede] - [#119487])
+- Revert "Revert Use integration fallback configuration for tado water fallback" ([@ethemcemozkan] - [#119526])
+- Fix error for Reolink snapshot streams ([@starkillerOG] - [#119572])
+- Bump uiprotect to 1.2.1 ([@bdraco] - [#119620])
+- Fix group enabled platforms are preloaded if they have alternative states ([@jbouwh] - [#119621])
+- Update frontend to 20240610.1 ([@piitaya] - [#119634])
+- Soften unifiprotect EA channel message ([@bdraco] - [#119641])
+- Bump goodwe to 0.3.6 ([@mletenay] - [#119646])
+- Bump uiprotect to 1.4.1 ([@bdraco] - [#119653])
+- Bump uiprotect to 1.6.0 ([@bdraco] - [#119661])
+- Fix alarm default code in concord232 ([@gjohansson-ST] - [#119691])
+- Bump uiprotect to 1.7.1 ([@bdraco] - [#119694])
+- Bump uiprotect to 1.7.2 ([@bdraco] - [#119705])
+- Bump ZHA dependencies ([@TheJulianJES] - [#119713])
+- Ensure UniFi Protect EA warning is not persistent ([@frenck] - [#119730])
+- Ensure workday issues are not persistent ([@frenck] - [#119732])
+
+[#118400]: https://github.com/home-assistant/core/pull/118400
+[#118696]: https://github.com/home-assistant/core/pull/118696
+[#119096]: https://github.com/home-assistant/core/pull/119096
+[#119327]: https://github.com/home-assistant/core/pull/119327
+[#119344]: https://github.com/home-assistant/core/pull/119344
+[#119376]: https://github.com/home-assistant/core/pull/119376
+[#119415]: https://github.com/home-assistant/core/pull/119415
+[#119417]: https://github.com/home-assistant/core/pull/119417
+[#119433]: https://github.com/home-assistant/core/pull/119433
+[#119436]: https://github.com/home-assistant/core/pull/119436
+[#119449]: https://github.com/home-assistant/core/pull/119449
+[#119460]: https://github.com/home-assistant/core/pull/119460
+[#119466]: https://github.com/home-assistant/core/pull/119466
+[#119487]: https://github.com/home-assistant/core/pull/119487
+[#119526]: https://github.com/home-assistant/core/pull/119526
+[#119572]: https://github.com/home-assistant/core/pull/119572
+[#119620]: https://github.com/home-assistant/core/pull/119620
+[#119621]: https://github.com/home-assistant/core/pull/119621
+[#119634]: https://github.com/home-assistant/core/pull/119634
+[#119641]: https://github.com/home-assistant/core/pull/119641
+[#119646]: https://github.com/home-assistant/core/pull/119646
+[#119653]: https://github.com/home-assistant/core/pull/119653
+[#119661]: https://github.com/home-assistant/core/pull/119661
+[#119691]: https://github.com/home-assistant/core/pull/119691
+[#119694]: https://github.com/home-assistant/core/pull/119694
+[#119705]: https://github.com/home-assistant/core/pull/119705
+[#119713]: https://github.com/home-assistant/core/pull/119713
+[#119730]: https://github.com/home-assistant/core/pull/119730
+[#119732]: https://github.com/home-assistant/core/pull/119732
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@bdraco]: https://github.com/bdraco
+[@elupus]: https://github.com/elupus
+[@ep1cman]: https://github.com/ep1cman
+[@erwindouna]: https://github.com/erwindouna
+[@ethemcemozkan]: https://github.com/ethemcemozkan
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@jbouwh]: https://github.com/jbouwh
+[@jpbede]: https://github.com/jpbede
+[@mjj4791]: https://github.com/mjj4791
+[@mletenay]: https://github.com/mletenay
+[@piitaya]: https://github.com/piitaya
+[@starkillerOG]: https://github.com/starkillerOG
+[@tronikos]: https://github.com/tronikos
+
+## Need help? Join the community!
+
+Home Assistant has a great community of users who are all more than willing
+to help each other out. So, join us!
+
+Our very active [Discord chat server](/join-chat) is an excellent place to be
+at, and don't forget to join our amazing [forums](https://community.home-assistant.io/).
+
+Found a bug or issue? Please report it in our [issue tracker](https://github.com/home-assistant/core/issues),
+to get it fixed! Or, check [our help page](/help) for guidance for more
+places you can go.
+
+Are you more into email? [Sign-up for our Building the Open Home Newsletter](/newsletter)
+to get the latest news about features, things happening in our community and
+other news about building an Open Home; straight into your inbox.
+
+## Backward-incompatible changes
+
+We do our best to avoid making changes to existing functionality that might
+unexpectedly impact your Home Assistant installation. Unfortunately, sometimes,
+it is inevitable.
+
+We always make sure to document these changes to make the transition as easy as
+possible for you. This release has the following backward-incompatible changes:
+
+{% details "Anova" %}
+
+The `State` and `Mode` entities for Anova devices have been changed to match the
+new protocol messaging. Any automations based on these entities will need to be
+updated.
+
+([@Lash-L] - [#109508]) ([documentation](/integrations/anova))
+
+[@Lash-L]: https://github.com/Lash-L
+[#109508]: https://github.com/home-assistant/core/pull/109508
+
+{% enddetails %}
+
+{% details "AVM FRITZ!Box Tools" %}
+
+The previously deprecated services `reboot`, `reconnect`, and `cleanup` have
+been removed. Please use the corresponding button entities instead.
+
+([@mib1185] - [#118108]) ([documentation](/integrations/fritz))
+
+[@mib1185]: https://github.com/mib1185
+[#118108]: https://github.com/home-assistant/core/pull/118108
+
+{% enddetails %}
+
+{% details "File" %}
+
+The notify services for the file integration now require that the file path
+is an allowed path. You should check the accessed file is in the
+[allowlist_external_dirs](/integrations/homeassistant/#allowlist_external_dirs)
+to ensure your automations keep working.
+
+([@jbouwh] - [#116861]) ([documentation](/integrations/file))
+
+[@jbouwh]: https://github.com/jbouwh
+[#116861]: https://github.com/home-assistant/core/pull/116861
+
+{% enddetails %}
+
+{% details "MQTT" %}
+
+MQTT Lock now supports the lock `open` and `opening` states. When a lock is used
+in `optimistic` mode, its state will become `open` instead of `unlocked` when
+it is opened.
+
+([@jbouwh] - [#117110]) ([documentation](/integrations/mqtt))
+
+[@jbouwh]: https://github.com/jbouwh
+[#117110]: https://github.com/home-assistant/core/pull/117110
+
+---
+
+The behavior on processing empty and `"None"` state payloads for MQTT entities
+has been made more predictable for `alarm_control_panel`, `climate`, `cover`,
+`device_tracker`, `lock`, `select`, `valve`, and `water_heater` items:
+
+- A "None" (string) for a state payload generally means the state
+ becomes `unknown`.
+- An empty payload is ignored.
+
+Previously, a "None" state could be considered invalid or ignored.
+
+([@jbouwh] - [#117813]) ([documentation](/integrations/mqtt))
+
+[@jbouwh]: https://github.com/jbouwh
+[#117813]: https://github.com/home-assistant/core/pull/117813
+
+{% enddetails %}
+
+{% details "OpenWeatherMap" %}
+
+Migration to the new library with support of OneCall API (3.0).
+
+OWM API v2.5 will be closed in June 2024. All OpenWeatherMap integrations must
+be migrated to mode (API) v3.0 to avoid service interruption.
+
+Before the migration, you must have an active subscription (be aware that
+subscription activation takes up to 2h). After the subscription is activated,
+users can migrate integrations to mode v3.0 via repair notification or manually
+via the integration configuration menu.
+
+The subscription has a free tier with 1000 calls/day. Consider setting the limit
+on the OpenWeatherMap website to stay under the threshold where API usage
+incurs a cost.
+
+[OpenWeatherMap official statement](https://openweathermap.org/one-call-transfer)
+
+([@freekode] - [#116870]) ([documentation](/integrations/openweathermap))
+
+[@freekode]: https://github.com/freekode
+[#116870]: https://github.com/home-assistant/core/pull/116870
+
+{% enddetails %}
+
+{% details "Synology DSM" %}
+
+The option to define a custom timeout has been removed. The timeout is set
+static to a sane value of 30 seconds.
+
+([@mib1185] - [#116815]) ([documentation](/integrations/synology_dsm))
+
+[@mib1185]: https://github.com/mib1185
+[#116815]: https://github.com/home-assistant/core/pull/116815
+
+{% enddetails %}
+
+{% details "Webmin" %}
+
+Duplicate entities may appear due to unique ID changes. The obsolete entities
+can be removed.
+
+([@autinerd] - [#113084]) ([documentation](/integrations/webmin))
+
+[@autinerd]: https://github.com/autinerd
+[#113084]: https://github.com/home-assistant/core/pull/113084
+
+{% enddetails %}
+
+{% details "World Air Quality Index (WAQI)" %}
+
+The state attributes of the WAQI air quality sensor have been removed.
+The attributes have been replaced by individual sensors; use these instead.
+
+([@joostlek] - [#116595]) ([documentation](/integrations/waqi))
+
+[@joostlek]: https://github.com/joostlek
+[#116595]: https://github.com/home-assistant/core/pull/116595
+
+{% enddetails %}
+
+{% details "Z-Wave" %}
+
+With this release, you will need to update your `zwave-js-server` instance.
+
+You must use `zwave-js-server` 1.35.0 or greater (schema 35).
+- If you use the Z-Wave JS add-on, you need at least version 0.5.0.
+- If you use the Z-Wave JS UI add-on, you need at least version [3.4.2](https://github.com/hassio-addons/addon-zwave-js-ui/releases/tag/v3.4.2).
+- If you use the Z-Wave JS UI Docker container, you need at least version [9.10.0](https://github.com/zwave-js/zwave-js-ui/releases/tag/v9.10.0).
+- If you run your own Docker container or some other installation method, you will need to update your zwave-js-server instance to at least 1.35.0.
+
+([@raman325] - [#117288]) ([documentation](/integrations/zwave_js))
+
+[@raman325]: https://github.com/raman325
+[#117288]: https://github.com/home-assistant/core/pull/117288
+
+{% enddetails %}
+
+If you are a custom integration developer and want to learn about changes and
+new features available for your integration: Be sure to follow our
+[developer blog][devblog]. The following are the most notable for this release:
+
+- [Alarm Control Panel Entity code validation](https://developers.home-assistant.io/blog/2024/05/22/alarm_control_panel_validation/)
+- [Changes in setup entity platforms with group integration](https://developers.home-assistant.io/blog/2024/05/10/group-integration)
+- [Exposing Home Assistant API to LLMs](https://developers.home-assistant.io/blog/2024/05/20/llm-api)
+- [Handling time zones without blocking the event loop](https://developers.home-assistant.io/blog/2024/05/19/fix_zoneinfo_blocking_io)
+- [How we managed to speed up our CI to save 168+ days of execution time per month](https://developers.home-assistant.io/blog/2024/05/09/improving-ci-test-execution)
+- [Improved typing for hass.data](https://developers.home-assistant.io/blog/2024/05/01/improved-hass-data-typing)
+- [LockEntity supports open/opening state](https://developers.home-assistant.io/blog/2024/05/10/lock-supports-open-state)
+- [Second phase of notify entity platform implementation](https://developers.home-assistant.io/blog/2024/05/03/notify-title)
+
+[devblog]: https://developers.home-assistant.io/blog/
+
+## All changes
+
+Of course, there is a lot more in this release. You can find a list of
+all changes made here: [Full changelog for Home Assistant Core 2024.6](/changelogs/core-2024.6)
diff --git a/source/_posts/2024-06-07-ai-agents-for-the-smart-home.markdown b/source/_posts/2024-06-07-ai-agents-for-the-smart-home.markdown
new file mode 100644
index 00000000000..9819726be4f
--- /dev/null
+++ b/source/_posts/2024-06-07-ai-agents-for-the-smart-home.markdown
@@ -0,0 +1,189 @@
+---
+layout: post
+title: "AI agents for the smart home"
+description: "AI is all the hype and everyone is adding it to everything. We did our research and decided to focus on enabling experimentation."
+date: 2024-06-07 00:00:01
+date_formatted: "June 7, 2024"
+author: Paulus Schoutsen
+comments: true
+categories: Assist
+og_image: /images/blog/2024-06-ai-agents-for-the-smart-home/art.jpg
+---
+
+
+Back in the day, the saying was _computers don't lie_. They were deterministic, zeros and ones executing the rules we gave them. With AI, this is the opposite. AI models hallucinate and their output cannot be completely trusted -- yet the current hype is to infuse AI into every product imaginable. Home Assistant doesn't jump on the latest hype, instead we focus on building a lasting and sustainable smart home. We do have thoughts on the subject, so let's talk about AI in the smart home.
+
+Home Assistant is uniquely positioned to be the smart home platform for AI. As part of [our Open Home values](https://www.openhomefoundation.org/), we believe users own their own data (a novel concept, we know) and that they can choose what happens with it. That's why Home Assistant stores all user data locally, including rich history, and it offers powerful APIs for anyone to build anything on top -- no constraints. Empowering our users with real control of their homes [is part of our DNA](/blog/2016/01/19/perfect-home-automation/#limit-the-impact-of-false-positives-and-negatives), and helps reduce the impact of false positives caused by hallucinations. All this makes Home Assistant the perfect foundation for anyone looking to build powerful AI-powered solutions for the smart home - something that is not possible with any of the other big platforms.
+
+As we have researched AI ([more about that below](#the-foundation-for-ai-experimentation-in-the-smart-home)), we concluded that there are currently no AI-powered solutions _yet_ that are worth it. Would you want a summary of your home at the top of your dashboard if it could be wrong, cost you money, or even [harm the planet](https://www.theguardian.com/commentisfree/article/2024/may/30/ugly-truth-ai-chatgpt-guzzling-resources-environment)?
+
+Instead, we are focussing our efforts on allowing anyone to play with AI in Home Assistant by making it easier to integrate it into existing workflows and run the models locally. To experiment with AI today, the latest release of Home Assistant allows you to connect and control devices with OpenAI or Google AI. For the local AI solutions of the future, we are working with NVIDIA, who have made amazing progress already. This will unleash the power of our community, our collective intelligence, to come up with creative use cases.
+
+Read more about our approach, how you can use AI today, and what the future holds. Or jump straight in and add [Google AI](/integrations/google_generative_ai_conversation/), [OpenAI](/integrations/openai_conversation/) to your Home Assistant installation (or [Ollama](/integrations/ollama) for local AI without the ability to control HA yet).
+
+_Huge thanks for contributing: [@shulyaka](https://github.com/Shulyaka), [@tronikos](https://github.com/tronikos), [@allenporter](https://github.com/allenporter), [@synesthesiam](https://github.com/synesthesiam), [@jlpouffier](https://github.com/jlpouffier) and [@balloob](https://github.com/balloob)._
+
+
+
+## The foundation for AI experimentation in the smart home
+
+We want it to be easy to use LLMs together with Home Assistant. Until now, Home Assistant has allowed you to configure [AI agents](#ai-agents) powered by LLMs that you could talk with, but the LLM could not control Home Assistant. That changed this week with the release of [Home Assistant 2024.6](/blog/2024/06/05/release-20246/), which empowered AI agents from Google Gemini and OpenAI ChatGPT to interact with your home. You can use this in Assist ([our voice assistant](/voice_control/)) or interact with agents in scripts and automations to make decisions or annotate data.
+
+Using agents in Assist allows you to tell Home Assistant what to do, without having to worry if that exact command sentence is understood. Even combining commands and referencing previous commands will work!
+
+And because this is _just_ Assist, it works on [Android](/blog/2023/07/20/year-of-the-voice-chapter-3/), [iOS](/blog/2024/05/22/companion-app-for-ios-20245-assist/#assist-on-ios), [classic landline phones](/voice_control/worlds-most-private-voice-assistant/), and [$13 voice satellites](/voice_control/thirteen-usd-voice-remote/) 😁
+
+
LLMs allow Assist to understand a wider variety of commands.
+
+The architecture that allows LLMs to control Home Assistant is, as one expects from us, fully customizable. The default API is based on Assist, focuses on voice control, and can be extended using intents [defined in YAML](/integrations/intent_script/) or [written in Python](https://developers.home-assistant.io/docs/intent_handling) ([examples below](#defining-the-api-for-llms)).
+
+The current API that we offer is just one approach, and depending on the LLM model used, it might not be the best one. That's why it is architected to allow custom integrations to [provide their own LLM APIs](https://developers.home-assistant.io/docs/core/llm/). This allows experimentation with different types of tasks, like creating automations. All LLM integrations in Home Assistant can be configured using any registered custom APIs.
+
+
The options screen for an AI agent allows you to pick the Home Assistant API that it has access to.
+
+The options screen for an AI agent allows you to pick the Home Assistant API that it has access to.
+
+## Cloud versus local
+
+Home Assistant currently offers two cloud LLM providers with various model options: Google and OpenAI. Both integrations ship with a recommended model that balances price, accuracy, and speed. Our recommended model for OpenAI is better at non-home related questions but Google's model is 14x cheaper, yet has similar voice assistant performance.
+
+We see the best results with cloud-based LLMs, as they are currently more powerful and easier to run compared to open source options. But local and open source LLMs are improving at a staggering rate. This is important because local AI is better for your privacy and, in the long term, your wallet. Local models also tend to be a lot smaller, which means a lot less electricity is used to run them.
+
+To improve local AI options for Home Assistant, we have been collaborating with NVIDIA's [Jetson AI Lab Research Group](https://www.jetson-ai-lab.com/research.html), and there has been tremendous progress. They have published text-to-speech and speech-to-text engines with [support for our Wyoming Protocol](https://github.com/dusty-nv/jetson-containers/tree/78159ca37d3195afdade81688e22a34cd7a89dbc/packages/smart-home/wyoming), added [support for Ollama to their Jetson platform](https://github.com/dusty-nv/jetson-containers/tree/dev/packages/llm/ollama) and just last week showed their progress on making a local Llama 3 model control Home Assistant:
+
+
+The first 5 minutes, Dustin shows his prototype of controlling Home Assistant using a local LLM.
+
+## What is AI?
+
+The current wave of AI hype evolves around large language models (LLMs), which are created by ingesting huge amounts of data. When you run these models, you give it text and it will predict the next words. If you give it a question as input, the generated next words will be the answer. To make it a bit smarter, AI companies will layer API access to other services on top, allowing the LLM to do mathematics or integrate web searches.
+
+One of the biggest benefits of large language models is that because it is trained on human language, you control it with human language. Want it to answer in the style of Super Mario? Just add "Answer like Super Mario" to your input text and it will work.
+
+There is a big downside to LLMs: because it works by predicting the next word, that prediction can be wrong and it will "hallucinate". Because it doesn't know any better, it will present its hallucination as the truth and it is up to the user to determine if that is correct. Until this problem is solved, any solution that we create needs to deal with this.
+
+Another downside is that depending on the AI model and where it runs, it can be very slow to generate an answer. This means that using an LLM to generate voice responses is currently either expensive or terribly slow. We cannot expect a user to wait 8 seconds for the light to be turned on when using their voice.
+
+## AI Agents
+
+Last January, the most upvoted article on HackerNews was about controlling Home Assistant using an LLM. [I commented on the story](https://news.ycombinator.com/item?id=38985152) to share our excitement for LLMs and the things we plan to do with it. In response to that comment, Nigel Nelson and Sean Huver, two ML engineers from the NVIDIA Holoscan team, reached out to share some of their experience to help Home Assistant. It evolved around AI agents.
+
+AI agents are programs that run independently. Users or other programs can interact with them to ask them to describe an image, answer a question, or control your home. In this case, the agents are powered by LLM models, and the way the agent responds is steered by instructions in natural language (English!).
+
+Nigel and Sean had experimented with AI being responsible for multiple tasks. Their tests showed that giving a single agent complicated instructions so it could handle multiple tasks confused the AI model. One didn't cut it, you need multiple AI agents responsible for one task each to do things right. If an incoming query can be handled by multiple agents, a selector agent approach ensures the query is sent to the right agent.
+
+
High level overview of the described agent framework.
+
+The NVIDIA engineers, as one expects from a company selling GPUs to run AI, were all about running LLMs locally. But they had a point: running LLMs locally removes the constraint on what one can do with LLMs. You start to consider different approaches if you don't have to be concerned about raking up a cloud bill in the thousands of dollars.
+
+For example, imagine we passed every state change in your house to an LLM. If the front door opens at night while everyone is home, is that suspicious? Creating a rule-based system for this is hard to get right for everyone, but an LLM might just do the trick.
+
+It was this conversation that led us to our current approach: In Home Assistant we want AI agents. Many AI agents.
+
+## Defining AI Agents
+
+As part of last year's [Year of the Voice](/blog/2022/12/20/year-of-voice/), we developed a conversation integration that allowed users to chat and talk with Home Assistant via conversation agents. Next to Home Assistant's conversation engine, which uses string matching, users could also pick LLM providers to talk to. These were our first AI agents.
+
+Set up [Google Generative AI](/integrations/google_generative_ai_conversation/), [OpenAI](/integrations/openai_conversation/), or [Ollama](/integrations/ollama/) and you end up with an AI agent represented as a conversation entity in Home Assistant. For each agent, the user is able to configure the LLM model and the instructions prompt. The prompt can be set to a template that is rendered on the fly, allowing users to share realtime information about their house with the LLM.
+
+The conversation entities can be included in an Assist Pipeline, our voice assistants. Or you can directly interact with them via services inside your automations and scripts.
+
+
+
+As a user, you are in control when your agents are invoked. This is possible by leveraging the beating heart of Home Assistant: the automation engine. You can write an automation, listen for a specific trigger, and then feed that information to the AI agent.
+
+The following example is based on an automation [originally shared by /u/Detz on the Home Assistant subreddit](https://www.reddit.com/r/homeautomation/comments/1at0re0/out_of_my_42_automations_this_is_my_best_one_by/). Every time the song changes on their media player, it will check if the band is a country band and if so, skip the song. The impact of hallucinations here is low, the user might end up listening to a country song or a non-country song is skipped.
+
+{% raw %}
+```python
+trigger:
+ - platform: state
+ entity_id: media_player.sonos_roam
+condition: '{{ trigger.to_state.state == "playing" }}'
+action:
+ - service: conversation.process
+ data:
+ agent_id: conversation.openai_mario_en
+ text: >-
+ You are passed the state of a media player and have to answer "yes" if
+ the song is country:
+ {{ trigger.to_state }}
+ response_variable: response
+ - if:
+ - condition: template
+ value_template: '{{ response.response.speech.plain.speech.lower().startswith("yes") }}'
+ then:
+ - service: media_player.media_next_track
+ target:
+ entity_id: '{{ trigger.entity_id }}'
+```
+{% endraw %}
+
+We've turned this automation into a blueprint that you can try yourself. It allows you to configure the criteria on when to skip the song.
+
+{% my blueprint_import badge blueprint_url="https://community.home-assistant.io/t/automatically-skip-songs-that-match-criteria/736522" description="View Blueprint" %}
+
+## Researching AI
+
+One of the weird things about LLMs is that it's opaque how they exactly work and their usefulness can differ greatly per task. Even the creators of the models need to run tests to understand what their new models are capable of. Given that our tasks are quite unique, we had to create our own reproducible benchmark to compare LLMs.
+
+To make this possible, Allen Porter created a [set of evaluation tools](https://github.com/allenporter/home-assistant-datasets?tab=readme-ov-file#home-assistant-datasets) including a new integration called ["Synthetic home"](https://github.com/allenporter/home-assistant-synthetic-home/tree/main). This integration allows us to launch a Home Assistant instance based on a definition in a YAML file. The file specifies the areas, the devices (including manufacturer/model) and their state. This allows us to test each LLM against the exact same Home Assistant state.
+
+
Results comparing a set of difficult sentences to control Home Assistant between Home Assistant's sentence matching, Google Gemini 1.5 Flash and OpenAI GPT-4o.
+
+We've used these tools extensively to fine tune the prompt and API that we give to LLMs to control Home Assistant. The reproducibility of these studies allows us to change something and repeat the test to see if we can generate better results. We are able to use this to test different prompts, different AI models and any other aspect.
+
+## Defining the API for LLMs
+
+Home Assistant has different API interfaces. We have the Home Assistant Python object, a WebSocket API, a REST API, and intents. We decided to base our LLM API on the intent system because it is our smallest API. Intents are used by our sentence-matching voice assistant and are limited to controlling devices and querying information. They don't bother with creating automations, managing devices, or other administrative tasks.
+
+Leveraging intents also meant that we already have a place in the UI where you can configure what entities are accessible, a test suite in many languages matching sentences to intent, and a baseline of what the LLM should be able to achieve with the API.
+
+
+
+Home Assistant already has different ways for you to define your own intents, allowing you to extend the Assist API to which LLMs have access. The first one is the [intent script integration](/integrations/intent_script/). Using YAML, users can define a script to run when the intent is invoked and use a template to define the response.
+
+{% raw %}
+```python
+intent_script:
+ EventCountToday:
+ action:
+ - service: calendar.get_events
+ target:
+ entity_id: calendar.my_calendar
+ data_template:
+ start_date_time: "{{ today_at('00:00') }}"
+ duration: { "hours": 24 }
+ response_variable: result
+ - stop: ""
+ response_variable: result
+ speech:
+ text: "{{ action_response['calendar.my_calendar'].events | length }} events"
+```
+{% endraw %}
+
+We haven't forgotten about custom components either. They can [register their own intents](https://developers.home-assistant.io/docs/intent_handling) or, even better, define their own API.
+
+### Custom integrations providing their own LLM APIs
+
+The built-in LLM API is focused on simplicity and being good at the things that it does. The larger the API surface, the easier AI models, especially the smaller ones, can get confused and invoke them incorrectly.
+
+Instead of one large API, we are aiming for many focused APIs. To ensure a higher success rate, an AI agent will only have access to one API at a time. Figuring out the best API for creating automations, querying the history, and maybe even creating dashboards will require experimentation. When all those APIs are in place, we can start playing with a selector agent that routes incoming requests to the right agent and API.
+
+To find out what APIs work best is a task we need to do as a community. That's why we have designed our API system in a way that [any custom component can provide them](https://developers.home-assistant.io/docs/core/llm/). When configuring an LLM that supports control of Home Assistant, users can pick any of the available APIs.
+
+Custom LLM APIs are written in Python. When a user talks to an LLM, the API is asked to give a collection of tools for the LLM to access, and a partial prompt that will be appended to the user prompt. The partial prompt can provide extra instructions for the LLM on when and how to use the tools.
+
+## Future research
+
+One thing we can do to improve AI in Home Assistant is wait. LLMs, both local and remotely accessible ones, are improving rapidly and new ones are released regularly (fun fact, I started writing this post before GPT4o and Gemini 1.5 were announced). Wait a couple of months and the new Llama, Gemini, or GPT release might unlock many new possibilities.
+
+We'll continue to collaborate with NVIDIA to enable more local AI functionalities. High on our list is making local LLM with function calling easily accessible to all Home Assistant users.
+
+There is also room for us to improve the local models we use. We want to explore fine-tuning a model for specific tasks like voice commands or area summarization. This would allow us to get away with much smaller models with better performance and reliability. And the best thing about our community? [People are already working on this](https://github.com/acon96/home-llm).
+
+We also want to see if we can use RAG to allow users to teach LLMs about personal items or people that they care about. Wouldn't it be great if Home Assistant could help you find your glasses?
+
+## Join us
+
+We hope that you're going to give our new AI tools a try and join us on [the forums](https://community.home-assistant.io/c/configuration/voice-assistant/49) and in the #voice-assistants channel on [our Discord server](/join-chat/). If you find something cool, share it with the community and let's find that killer use case!
diff --git a/source/_posts/2024-06-12-roadmap-2024h1.markdown b/source/_posts/2024-06-12-roadmap-2024h1.markdown
new file mode 100644
index 00000000000..8b0bf2abd78
--- /dev/null
+++ b/source/_posts/2024-06-12-roadmap-2024h1.markdown
@@ -0,0 +1,160 @@
+---
+layout: post
+title: "Roadmap 2024 Midyear Update: A home-approved smart home, peace of mind, and more!"
+description: "Our first detailed roadmap outlining the direction of the continued development of the Home Assistant project"
+date: 2024-06-12 00:00:01
+date_formatted: "June 12, 2024"
+author: Madelena Mak
+comments: true
+categories: Announcements Roadmap
+og_image: /images/blog/2024-06-roadmap-2024h1/banner.png
+---
+
+
+
+During our [State of the Open Home livestream](https://www.youtube.com/watch?v=oa__fLArsFk&t=7649s) in April, we presented our roadmaps for Home Assistant, open protocols, and Home Assistant Cloud. If you’re not sure what a roadmap is, or why we aren’t just listing features and dates - please read our intro to [Home Assistant Roadmaps](/blog/2024/06/12/roadmap-introduction).
+
+There has already been a lot of great discussion about these roadmaps in the community, and we would really like to encourage you to give your thoughts in the comments of this blog - as they will inform [how the roadmap evolves over time](/blog/2024/06/12/roadmap-introduction/#how-are-roadmaps-made).
+
+You can skip straight to the sections you’re most interested:
+
+* [Home Assistant: “A Home-Approved Smart Home”](#home-assistant-a-home-approved-smart-home)
+* [Home Assistant Cloud: “Peace of Mind”](#home-assistant-cloud-peace-of-mind)
+* [Open standards: “Certified Quality”](#open-standards-certified-quality)
+
+~ [Madelena](https://github.com/madelena) & [JLo](https://github.com/jlpouffier)
+
+_Big thanks to everyone who had given feedback to us throughout the entire process!_
+
+
+
+## Home Assistant: “A Home-Approved Smart Home”
+
+
+
+The mission of the Home Assistant project is to become the best smart home platform that embodies the Open Home vision (privacy, choice, sustainability), powered by a helpful open-source user community.
+
+A smart home platform should allow users to observe, control, automate, and anticipate the key functions within a home, which provides safety, security, comfort, convenience, personalization, and accessibility to its residents.
+
+Through our user research, we learned that while Home Assistant is a powerful platform for people who prioritize better privacy and customizability, we also found that adoption within their homes is another story. Our users have often gone to great pains to make Home Assistant easier to use for other members of their household, either by using another app as the user interface or hiding any visible traces of the platform altogether. We call the adoption of Home Assistant by other household members the [“Home Approval Factor”](https://newsletter.openhomefoundation.org/open-home-approval-factor/).
+
+Therefore, in the roadmap ahead for Home Assistant, we propose that our contributor community and us, the core maintainers, should focus our efforts on making Home Assistant more home-approved. This can be done by improving the touchpoints that all members of the household will interact with, such as automations, dashboards, and voice assistants, while maintaining the power and depth of the platform for our power users and admins. Our plan is divided into the following areas:
+
+### Dashboards
+
+We have been hard at work renovating our dashboards since last year. Moving forward, we are focused on making the dashboard user experience better for all users.
+
+#### Current priority: Make customization of dashboards easy and intuitive
+
+With the new Sections view layout, better tile cards, and our incredibly well-received [drag and drop](/blog/2024/03/04/dashboard-chapter-1/) 🐉, we have recently begun our work on making dashboard customization easy and intuitive. We aim to implement an intuitive and organized grid system for dashboards. We will need community contributions to update our current cards to fit the grid system.
+
+#### Next priority: Make default dashboards more useful and relevant
+
+Our current default dashboard gives our users two choices: Either list every entity the system is connected to or start from scratch. With dashboard blueprints, we know that we can make the default dashboards more useful than that. We will need your input to optimize them to display the most relevant information from the get-go.
+
+#### Later priority: Improve privacy in user, guest, and public access
+
+The inability to fine-tune access to Home Assistant by guests or other members of the family has been a pain point requested by many of our users. We want to investigate ways to mitigate this while improving the privacy of the household.
+
+### Voice assistants
+
+Since last year, we have built our voice assistant framework from scratch with our [“Year of the Voice”](/blog/2022/12/20/year-of-voice/) initiative. Now that the infrastructure is in place, we want to make sure that it will be usable for everyone (before the demise of Alexa and Google Assistant 😜).
+
+#### Current priority 1: Improve Assist capabilities out of the box
+
+Our [research has shown](https://community.home-assistant.io/t/poll-what-do-you-use-your-voice-assistant-for-what-do-you-expect-it-to-do-multiple-selections/693669) users are most interested in us improving out-of-the-box capabilities of Assist, for instance, timers, reminders, and music controls.
+
+#### Current priority 2: Make Assist easier to start with
+
+At the moment, there are several things you need to install or configure to get started with voice. We want to make it easier to set up and onboard. There are already some good hardware choices to start using voice, but we’re exploring building our voice satellite hardware to create a more plug-and-play experience.
+
+### Automations
+
+Automation is one of the cornerstones of the home automation industry. The ability to automate your home so that it does what you expect when you expect it is both fascinating and extremely rewarding for users, regardless of their experience level. Today, the automation engine of Home Assistant is one of the most powerful in the market. However, this comes at a cost: It is not the simplest to approach.
+
+#### Current priority 1: Make automations easier to organize
+
+As users grow their smart home, they will create more automation. Our automations are listed in a large table and can get easily disorganized as it grows. Earlier this year, we did a lot to improve the organization of automations, including [labels, filters, and categories](https://youtu.be/g3Xo0ArcMaY?si=OrqvNDASLFvyKhEs), which in return not only made automations easier to organize, but also almost every table in the Home Assistant settings.
+
+#### Current priority 2: Make automations easier to create
+
+While we made headway earlier this year in making automations easier to create, we need a more comprehensive effort with a full product development cycle of research, discovery, ideation, and validation to confidently make design and implementation decisions. As of now, many seemingly simple automations can be too complex to create and debug, and there is a lot of room for improvement. We foresee that when this opportunity is done, admins and housemates can easily create automations.
+
+* * *
+
+### Research
+
+To make informed product decisions, we need to base our work on solid research. Therefore, we have been building out our research capabilities, both in terms of user research and technology research.
+
+#### User research
+
+In order for all of us in our community to make the right product, design, and engineering decisions, we need all of us to have a clear picture of who our users really are. Last year, we did some initial research, mostly focused on dashboards. This year, we want to get the full picture with complete foundational research of our users.
+
+Secondly, of the three Open Home values, privacy, choice, and sustainability, while we have a pretty solid understanding of choice and some understanding of sustainability, the idea of privacy can benefit from more clarity. We want a better understanding of what privacy really means to a home and its residents.
+
+#### Technology research (R&D)
+
+Yes, large language models (LLMs) are a hot trend, but that’s not why we’re exploring them. We know there are very interesting problems they can solve in the home, and with the amount of data our users collect in their history, we believe that there is much power underneath Home Assistant yet to be unearthed and it is uniquely positioned to be the smart home platform for AI. [Our AI vision](/blog/2024/06/07/ai-agents-for-the-smart-home/) lays down the foundation for what we want to do with AI and LLMs next.
+
+In order to help AI make better decisions, we need a better understanding of the context of what each device actually is. To do so, we need to refine our information architecture. For instance, we recently rolled out floors helping Home Assistant better understand your house. This is no small task, but it could be vital in implementing better voice or even AI in the home.
+
+* * *
+
+## Home Assistant Cloud: “Peace of Mind”
+
+[Home Assistant Cloud](https://www.nabucasa.com/), powered by our commercial partner Nabu Casa brings, to the many, the hard-to-reach features of Home Assistant usually reserved for power users with expensive hardware at home, with no compromise on privacy.
+
+Currently, Home Assistant Cloud provides the simplest and safest way to access your Home Assistant instance anywhere in the world and connect to third-party cloud-connected voice assistants, like Google’s and Alexa’s offerings. Our newest ability added to Cloud is the ability to offload the resource-intensive tasks of speech-to-text and text-to-speech. This allows our users to have power-efficient hardware at home, like the Home Assistant Green, which uses three watts and performs tasks usually reserved for hundred-watt home servers.
+
+For the next phase of Home Assistant Cloud, we want to continue to build features that adhere to our mission, as stated above. The theme for the upcoming initiatives revolve around providing peace of mind for our users:
+
+#### Current priority: Hardening security
+
+We want to harden our security, providing more control for remote access and Two-Factor Authentication (2FA) for your Nabu Casa account.
+
+#### Next priority: Encrypted cloud backup
+This would allow users to have a more resilient installation of Home Assistant, so if your instance completely breaks down, it can be restored from the cloud.
+
+#### Later priority: Cloud monitoring
+
+If your Home Assistant instance goes down, we’ll be able to detect it and send an email notification. This will allow you to monitor your downtime, and hopefully avoid more of it in the future, keeping your whole family happy 😁.
+
+If you are currently a subscriber of Home Assistant Cloud, thank you again for your generous support of our project, and please let us know what we can do to improve our service. If you haven’t subscribed yet, you can check it out [here](https://nabucasa.com)!
+
+* * *
+
+## Open standards: “Certified Quality”
+
+We believe open standards are critical to providing choices for the future of the open home, and that is why we have put a lot of work into supporting current and emerging standards. They provide a way for manufacturers to provide broad compatibility, but they also provide peace of mind for users by ensuring the longevity of the devices.
+
+All our teams are currently working very hard on certification - we want to make sure all our open standards implementations are up to industry standards.
+
+### Zigbee
+For Zigbee, we already have a well-established hardware solution via our [Home Assistant Connect ZBT-1](/skyconnect/) (formerly known as the SkyConnect). We continue contributing code and refining ZHA and Zigpy, the software powering Zigbee in Home Assistant.
+
+### Matter
+
+#### Current priority 1: Certification
+
+Matter is served via our Matter Server, which is evolving with the standard, and we will continue to the first home automation system that adopts the latest Matter standards. Our Home Assistant Connect ZBT-1 hardware also supports this standard via its support of Matter over Thread.
+
+#### Current priority 2: Device Commissioning
+
+There are still some big challenges that need to be addressed like device commissioning, which is currently overly complex, and we’re working with the industry to improve this.
+
+### Z-Wave
+
+#### Current priority: Certification
+
+This year, we made several big announcements with our support of Z-Wave. We joined the Z-Wave Alliance in February this year and have been [working to improve our Z-Wave JS software](/blog/2024/05/08/zwave-is-not-dead).
+
+#### Next priority: Home Assistant Connect Hardware for Z-Wave
+
+To build the most seamless user experience for this protocol, we’re building our own Z-Wave stick to connect devices to Home Assistant. This new Z-Wave stick will join our Home Assistant Connect family of products.
+
+* * *
+
+## What’s next?
+Our roadmap is an open call for contributions in the product areas we are focusing on. It outlines what the core maintainers of the Home Assistant project will work on in the near future. This is a tool for our contributors and us, the project maintainers, to plan ahead for our collective future. As this is a living document, we will revisit and update our roadmap every half year.
+
+For more information on how the roadmaps were created and how you can contribute, please check out [this blog post here](/blog/2024/06/12/roadmap-introduction).
diff --git a/source/_posts/2024-06-12-roadmap-introduction.markdown b/source/_posts/2024-06-12-roadmap-introduction.markdown
new file mode 100644
index 00000000000..af4445704ab
--- /dev/null
+++ b/source/_posts/2024-06-12-roadmap-introduction.markdown
@@ -0,0 +1,113 @@
+---
+layout: post
+title: "A roadmap for Home Assistant"
+description: "Learn more about what we came up with the roadmap, what it entails, and how you can build upon it together!"
+date: 2024-06-12 00:00:00
+date_formatted: "June 12, 2024"
+author: Madelena Mak
+comments: true
+categories: Announcements Roadmap
+og_image: /images/blog/2024-06-roadmap-introduction/art.jpg
+---
+
+
Art by Clelia Rella
+
+During our [State of the Open Home livestream](https://www.youtube.com/watch?v=oa__fLArsFk&t=7649s), we presented the future of the open home with the announcement of our first roadmap.
+
+Over the past few years, we have begun the practice of giving a theme for the direction we wanted to take the Home Assistant project towards each year. Last year, we had the successful [Year of the Voice](/blog/2022/12/20/year-of-voice/), in which we built our voice assistant architecture from the ground up. And before that, we had “[Streamlining Experiences](/blog/2022/01/19/streamlining-experiences/)” where we took our first stab at improving the UX.
+
+Having a good set of goals allows us to focus our community and resources to build new projects rapidly together. With the Year of the Voice, we have attracted new contributors who are experts in wake words and voice technologies, translators of many languages, and hobbyists in building impressive one-of-a-kind voice assistants. We want to continue this success by laying out the strategy and direction for the continuous development of the Home Assistant project, and a product roadmap is a perfect tool for such a purpose.
+
+Our roadmap is an open call for contributions in the product areas we are focusing on. Unlike many public roadmaps of commercial products, this is not a marketing ploy to attract customers to buy into nebulous, unrealized future features. It is a tool for our contributors and us, the project maintainers, to plan ahead for our collective future.
+
+For this blog post, I’d like to detail how we came up with the roadmap, what it entails, and how you can build upon it together.
+
+~ Madelena
+
+
+
+## Where can I find the roadmap?
+
+Our roadmaps will be published in our blog in the [Roadmap category](/blog/categories/roadmap/), this allows the community to provide feedback and discuss our direction in the forums easily.
+
+Our first roadmap for midyear 2024, can be found [here](/blog/2024/06/12/roadmap-2024h1/).
+
+## What is a roadmap?
+
+### What it is
+
+A roadmap provides the general direction of where we want to take our projects next, aka the “North Star” ⭐.
+
+With existing products, it can be easy to operate on autopilot, especially when we are in a rhythm of building new features. Once in a while, it is important for us to understand the strategic context behind why we are doing what we are doing for our users, and figure out how we can get there in the long term.
+
+A conversation about our roadmap with our community and users is an opportunity for us to verify our understanding of your needs before actually spending time and resources building them. Ideally, if we had done an excellent job in our user research, then the roadmap should merely confirm what you need, and there should be no surprises.
+
+### What it is not
+
+We want to emphasize that this is **_not_ a list of upcoming features**, nor does it indicate the exact timeframe of when features will be built. We will not know the exact features we need to build until we have a good grasp of the problem encountered through user research. Usually, the closer the priority is, the clearer the picture is, and the more likely we know what features to build.
+
+## What is on our roadmap?
+
+Our roadmap has three major elements: initiatives, themes, and timeframes.
+
+### Initiatives
+
+Our roadmap contains the list of initiatives (also known as “product opportunities” for all you PM nerds) that we intend to work on, such as “making automations easier to organize”. They indicate the overall outcome that we want to achieve. Sometimes, there would be obvious features that we all know we should be working on, such as the most requested “drag and drop” feature in order to “make dashboards easier and more intuitive to customize and use”. Sometimes the answers aren’t as obvious, which is when user research would help us a great deal in providing clarity and helping us brainstorm solutions.
+
+### Themes
+
+These initiatives are organized by themes, usually in the different product areas of the Home Assistant project, or by the common goal that these initiatives would achieve. To coordinate our efforts, each of these themes are usually led and driven by the same group of maintainers composed of developers, designers, and a product owner, who are passionate about the subject matter. For example, I love dashboards and that’s my current focus, while [@JLo](https://github.com/jlpouffier) loves Assist and is making great strides in those areas with our contributors.
+
+### Timeframes
+
+Our timeframes are divided roughly into what’s current, next, and later priorities. We decided against using exact dates because, on the one hand, guaranteeing a due date on features we might not even need to build puts unnecessary pressure on our maintainers. On the other hand, we cannot predict if or when our contributors will make contributions to our top initiatives. In general, a current priority is about three months, next is another three months after what’s current is done, and so on.
+
+## How are roadmaps made?
+
+We want to make sure that this is an open source, open development, and open design process. So we, as the core project maintainers, will keep the dialog open to feedback and changes from our contributors and our community.
+
+For our first roadmap in midyear 2024, we worked hard for 7 months to build it from scratch in the following steps:
+
+1. **Foundation**: We make sure that our [founder’s vision](/blog/2016/01/19/perfect-home-automation/) of what the best Home Assistant can be is reflected fully in the North Star of the roadmap. We also agree upon the purpose of the roadmap.
+
+2. **Collective feedback**: After that, we met with the core project maintainers of various product areas, from frontend, voice, OS, documentation, open protocols, ESPHome, and more. We collected hundreds of problems that they know are the most concerning to our users and their ideas on how these problems can be solved. We also scoured and scanned through every top feature request on our forums and from previous Months of What the Heck. We collated them into one huge list of product issues we need to solve.
+
+3. **Prioritization**: We organized and categorized these issues into various initiatives that we can pursue. Finally, we prioritized all these initiatives by the number of potential users who could benefit from them, how big an impact they can make, how certain we are in the issue, or if research is needed before proceeding. The final result is then organized into the roadmap that you see now.
+
+A roadmap is a _living document_, and we intend to adjust our bearings and revisit it every half-year. For instance, when we improve initiatives to an adequate level or if the needs of our users and community change, we will move our resources to focus on the next important priorities.
+
+Our next update on the roadmap will be around late October to early November, after collecting your feedback from our infamous Month of What the Heck.
+
+## How to use our roadmap
+
+As I mentioned before, our roadmap is not a list of future features, but an open call for contributions in the product areas we are focusing on.
+
+If you would like to contribute to the Home Assistant project, I hope that our roadmap can provide you with ideas and guidance on what you can do. There are a number of ways you can support this journey. Let’s build the future of the Open Home together!
+
+- **Develop**: If you are a developer, of course you can contribute your code!
+
+ If you are an expert in the areas we are currently focused on in our roadmap, please feel free to reach out to us directly on [Discord](/join-chat). For example, if our current focus is to “improve voice assistant abilities out of the box” and if you were a wake word or LLM expert, that’s perfect! Please reach out and see where you can help.
+
+ If you know what you want to build, awesome! Be sure to check out our developer docs and learn about our [review process](https://developers.home-assistant.io/docs/review-process).
+
+ If you don’t have any ideas on what to code, please feel free to check out our [GitHub issues](https://github.com/home-assistant/core/issues) and our [top feature requests](https://community.home-assistant.io/c/feature-requests/13/l/latest?order=votes). You may also chat with other folks on Discord to find out what needs your help the most.
+
+- **Design**: If you are a product person or a designer, we need you! Many of our features and contributions need great product goals, research, and design that solve real problems. Help us brainstorm ideas and solutions for the problems we want to solve on our roadmap, or report any new unforeseen problems that you notice in our community.
+
+- **Participate in user research**: If you and your housemates or family are interested, we would love to have you as part of our user research pool. From time to time, we will send out surveys or invite users to user interviews. This allows us to get an objective understanding of our users and validate and test our assumptions. Sign up to be part of the [Home Assistant User Research Group](https://forms.clickup.com/2533032/f/2d9n8-12931/52N1KK00E9BXEW71TN).
+
+- **Guide our direction**: As already mentioned, we use our [Feature Request](https://community.home-assistant.io/c/feature-requests/) and [Month of What The Heck?](https://community.home-assistant.io/c/what-the-heck/56) forums to guide the creation and prioritization of the roadmap. The number of votes and the amount of thoughtful discussions and creative ideas matter, so please participate in the threads and help guide the direction of our project.
+
+And that’s all you need to know about our roadmaps! Thanks for reading! Looking forward to collaborating with you on the Home Assistant project soon!
+
+~ Madelena
+
+## FAQ
+
+#### 1. I want feature X!
+
+Sure thing, we hear you. If you really want feature X, can you tell us and everyone in our community more about it, such as, what problems will this feature solve? Better yet, is it a recurring problem you have noticed that will help many other people? Use cases, research, and various evidence help us all decide whether we will proceed with such a feature. Make some noise on our forums, submit it to our feature requests, and see if it resonates with others. Maybe a contributor can help you out if the need is strong enough
+
+#### 2. I think the Home Assistant project should go in direction Y.
+
+If you have a brilliant vision of what Home Assistant can become, please feel free to discuss them openly in the comments section of the roadmap, or post your thoughts on our forums. Our direction is determined by the collective needs of our users, guided by our Open Home values of privacy, choice, and sustainability. Any ideas that can benefit these areas may be considered to become part of our project vision.
diff --git a/source/_posts/2024-06-13-zbt1-annoucement.markdown b/source/_posts/2024-06-13-zbt1-annoucement.markdown
new file mode 100644
index 00000000000..fbe60beb77a
--- /dev/null
+++ b/source/_posts/2024-06-13-zbt1-annoucement.markdown
@@ -0,0 +1,39 @@
+---
+layout: post
+title: "Home Assistant SkyConnect becomes Connect ZBT-1"
+description: "The best way to add Zigbee to Home Assistant gets a new name and look."
+date: 2024-06-13 00:00:01
+date_formatted: "June 13, 2024"
+author: Andy Gill
+comments: true
+categories: Announcements
+og_image: /images/blog/2024-06-ZBT1/art.jpg
+---
+
+
+
+[Home Assistant Connect ZBT-1](/connectzbt1) is the new name for Home Assistant SkyConnect. Though it's a new name and look, they have the exact same hardware, capability, and support.
+
+We launched Home Assistant SkyConnect in late 2022, a device designed to be the easiest, most stable way to connect Zigbee and Home Assistant together. It also came with Thread connectivity support, which was (and still is) pretty groundbreaking at its price point. All these years later, it continues to receive strong support and is a community favorite.
+
+Home Assistant Connect ZBT-1 is the same great product we all know and love. Going forward, whenever we mention updates or features for Home Assistant Connect ZBT-1, this will also apply to Home Assistant SkyConnect-branded devices. Keep reading to learn why we changed the name.
+
+
+
+## Why change the name?
+
+At Home Assistant, we love open standards because they allow you to connect and control devices locally while offering broad compatibility and longevity. In [our roadmap](/blog/2024/06/12/roadmap-2024h1/#open-standards-certified-quality), we explained how we are improving our already strong support of open standards, and this name change is just one necessary step in that direction.
+
+We are working towards building a new line of Connect products, specifically we are working on an upcoming [Z-Wave Connect](/blog/2024/06/12/roadmap-2024h1/#z-wave) product. In future, if we see any product gaps with open standards, which require a more seamless and stable experience, they may join the Connect line.
+
+## What has changed?
+
+
Home Assistant Connect ZBT-1 packaging 🤤.
+
+As I said nothing has changed internally - the [listed specs](/connectzbt1) are identical. You do get new packaging, which we're pretty proud of. The device itself has been updated visually with our current logo and has the new ZBT-1 name.
+
+## Which one should I buy?
+
+Whichever is in stock, as they are the same. Retailers will continue to sell Home Assistant SkyConnect-branded devices while supplies last. Regardless of what you buy, you will still get the same long-term support, updates, plug-and-play experience, and great range.
+
+Learn more about where you can buy Home Assistant Connect ZBT-1 [here](/connectzbt1).
diff --git a/source/_redirects b/source/_redirects
index 5b30a5a2b51..157d74fc4db 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -253,6 +253,8 @@ layout: null
/docs/assist/using_voice_assistants_overview/ /voice_control/
/docs/assist/voice_remote_expose_devices/ /voice_control/voice_remote_expose_devices/
/docs/assist/voice_remote_local_assistant/ /voice_control/voice_remote_local_assistant/
+/skyconnect /connectzbt1#from-skyconnect
+
# Redirect for the QR Codes on the S3 Box
/s3-box-no-wifi /voice_control/troubleshooting_the_s3_box/#error-unable-to-connect-to-wi-fi
/s3-box-no-ha /voice_control/troubleshooting_the_s3_box/#error-no-home-assistant
@@ -389,6 +391,10 @@ layout: null
/common-tasks/supervised/#snapshots /common-tasks/supervised/#backups
/more-info/unsupported/container /more-info/unsupported/software
/integrations/zigbee /integrations/zha
+/examples /
+
+# Moved marketing pages / rebranding
+/skyconnect /connectzbt1
# Migrated Community Guides
/cookbook/apache_configuration https://community.home-assistant.io/t/reverse-proxy-with-apache/196942
diff --git a/source/changelogs/core-2024.6.markdown b/source/changelogs/core-2024.6.markdown
new file mode 100644
index 00000000000..f4aaef38ad1
--- /dev/null
+++ b/source/changelogs/core-2024.6.markdown
@@ -0,0 +1,3102 @@
+---
+title: Full changelog for Home Assistant Core 2024.6
+description: Detailed changelog for the Home Assistant Core 2024.6 release
+replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$
+---
+
+These are all the changes included in the Home Assistant Core 2024.6 release.
+
+For a summary in a more readable format:
+[Release notes blog for this release](/blog/2024/06/05/release-20246/).
+
+## All changes
+
+- Add all supported languages to Google Translate and remove unsupported ones ([@prabhjotsbhatia-ca] - [#107404])
+- Bump version to 2024.6.0dev0 ([@frenck] - [#116120])
+- Add play/pause functionality for Vizio Smartcast media_player entities ([@NasaGeek] - [#108896])
+- Bump actions/checkout from 4.1.3 to 4.1.4 (@dependabot - [#116147])
+- Bump actions/download-artifact from 4.1.6 to 4.1.7 (@dependabot - [#116148])
+- Update mypy to 1.10.0 ([@cdce8p] - [#116158])
+- Bump aioautomower to 2024.4.4 ([@Thomas55555] - [#116185])
+- Add support for Aranet radiation devices ([@Anrijs] - [#115239])
+- Bump dropmqttapi to 1.0.3 ([@pfrazer] - [#116179])
+- Use snapshots in Linear diagnostics tests ([@joostlek] - [#116169])
+- Add strict typing to husqvarna automower ([@Thomas55555] - [#115374])
+- Improve linear coordinator ([@joostlek] - [#116167])
+- Use existing monotonic timestamp on mqtt messages for debugging ([@jbouwh] - [#116196])
+- Reduce scope of JSON/XML test fixtures ([@emontnemery] - [#116197])
+- Bump ruff to 0.4.2 ([@autinerd] - [#116201])
+- Bump github/codeql-action from 3.25.2 to 3.25.3 (@dependabot - [#116209])
+- Fix flapping trafikverket tests ([@emontnemery] - [#116238])
+- Remove myself as codeowner for Harmony ([@bramkragten] - [#116241])
+- Simplify timezone setting in recorder test ([@emontnemery] - [#116220])
+- Reduce scope of bluetooth test fixtures ([@emontnemery] - [#116210])
+- Fix flapping recorder tests ([@emontnemery] - [#116239])
+- Reduce scope of ZHA test fixtures ([@emontnemery] - [#116208])
+- Add HA version to cache key ([@cdce8p] - [#116159])
+- Make freezegun find event.time_tracker_utcnow ([@emontnemery] - [#116284])
+- Avoid update call in entity state write if there is no customize data ([@bdraco] - [#116296])
+- Add a fast path for _stringify_state when state is already a str ([@bdraco] - [#116295])
+- Reduce number of time calls needed to write state ([@bdraco] - [#116297])
+- Increase the Hydrawise refresh frequency from 120s to 30s ([@dknowles2] - [#116298])
+- Use more shorthand attrs in emonitor ([@bdraco] - [#116307])
+- Unifi: enable statistics for PoE port power sensor ([@wittypluck] - [#116308])
+- Convert Linear to use a base entity ([@IceBotYT] - [#116133])
+- Add a cache to _verify_event_type_length_or_raise ([@bdraco] - [#116312])
+- Remove unneeded TYPE_CHECKING guard in core async_set ([@bdraco] - [#116311])
+- Make storage load tasks background tasks to avoid delaying shutdown ([@bdraco] - [#116332])
+- Refactor group setup ([@jbouwh] - [#116317])
+- Fix incorrect call to async_schedule_update_ha_state in command_line switch ([@bdraco] - [#116347])
+- Add test helper to remove device ([@epenet] - [#116234])
+- Speed up singleton decorator so it can be used more places ([@bdraco] - [#116292])
+- Fix incorrect call to async_schedule_update_ha_state in generic_hygrostat ([@bdraco] - [#116349])
+- Fix incorrect call to async_schedule_update_ha_state in manual_mqtt ([@bdraco] - [#116348])
+- Remove eager_start argument from internal _async_add_hass_job function ([@bdraco] - [#116310])
+- Avoid creating tasks to update universal media player ([@bdraco] - [#116350])
+- Bump total_connect_client to 2024.4 ([@austinmroczek] - [#116360])
+- Use built-in aiohttp timeout instead of asyncio.timeout in media_player ([@bdraco] - [#116364])
+- Reduce scope of test fixtures for the pylint plugin tests ([@emontnemery] - [#116207])
+- Add Button for TotalConnect ([@austinmroczek] - [#114530])
+- Add icons and translations to Habitica ([@tr4nt0r] - [#116204])
+- Update freezegun to 1.5.0 ([@cdce8p] - [#116375])
+- Update pytest-xdist to 3.6.1 ([@cdce8p] - [#116377])
+- Update pipdeptree to 2.19.0 ([@cdce8p] - [#116376])
+- Update respx to 0.21.1 ([@cdce8p] - [#116380])
+- Update uv to 0.1.39 ([@cdce8p] - [#116381])
+- Update types packages ([@cdce8p] - [#116382])
+- Small cleanups to climate entity feature compat ([@bdraco] - [#116361])
+- Add Ollama Conversation Agent Entity ([@allenporter] - [#116363])
+- Address late review in Honeywell ([@mkmer] - [#115702])
+- Fix typo in Switchbot cloud ([@joostlek] - [#116388])
+- Fix grammar in internal function comments ([@bdraco] - [#116387])
+- Add service to log all the current asyncio Tasks to the profiler ([@bdraco] - [#116389])
+- Report webOS media player state ([@rale] - [#113774])
+- Add error translations to AVM Fritz!Tools ([@mib1185] - [#116413])
+- Add Workarea cutting height to Husqvarna Automower ([@Thomas55555] - [#116115])
+- Revert "Remove strict connection" ([@edenhaus] - [#116416])
+- Add Open Home Foundation link ([@GuySie] - [#116405])
+- Update pytest to 8.2.0 ([@cdce8p] - [#116379])
+- Remove entity category "system" check from entity registry ([@gjohansson-ST] - [#116412])
+- Update fyta async_migrate_entry ([@dontinelli] - [#116433])
+- Store runtime data inside ConfigEntry ([@cdce8p] - [#115669])
+- Use remove_device helper in tests (2/2) ([@epenet] - [#116442])
+- Use remove_device helper in tests (1/2) ([@epenet] - [#116240])
+- Store runtime data in entry in Withings ([@joostlek] - [#116439])
+- Store runtime data in entry in onewire ([@epenet] - [#116450])
+- Add pydantic to skip-binary ([@bdraco] - [#116406])
+- Remove entity description mixin in NextDNS ([@bieniu] - [#116456])
+- Move Renault service registration ([@epenet] - [#116459])
+- Store runtime data in entry in renault ([@epenet] - [#116454])
+- Mock dwdwfsapi in all tests that use it ([@andarotajo] - [#116414])
+- Small performance improvements to ingress forwarding ([@bdraco] - [#116457])
+- Avoid netloc ipaddress re-encoding to construct ingress urls ([@bdraco] - [#116431])
+- Avoid re-encoding the message id as bytes for every event/state change ([@bdraco] - [#116460])
+- Bump pydantic constraint ([@AngellusMortis] - [#116401])
+- Bring sensibo to full coverage (again) ([@gjohansson-ST] - [#116469])
+- Store runtime data in entry in Ecovacs ([@edenhaus] - [#116445])
+- Make a copy of capability_attributes instead of making a new dict ([@bdraco] - [#116477])
+- Use websocket client to test device removal in Unifi ([@wittypluck] - [#116309])
+- Remove unused argument from DWD coordinator ([@joostlek] - [#116496])
+- Add IMGW-PIB integration ([@bieniu] - [#116468])
+- Workday only update once a day ([@gjohansson-ST] - [#116419])
+- Store GIOS runtime data in entry ([@bieniu] - [#116510])
+- Bump yalexs to 3.1.0 ([@bdraco] - [#116511])
+- Simplify MQTT mid handling ([@bdraco] - [#116522])
+- Reduce timestamp function call overhead in core states ([@bdraco] - [#116517])
+- Store runtime data inside the config entry in AVM Fritz!Smarthome ([@mib1185] - [#116523])
+- Add diagnostics platform to IMGW-PIB integration ([@bieniu] - [#116551])
+- Use runtime data in Yale Smart Alarm ([@gjohansson-ST] - [#116548])
+- Use runtime data for FritzBox Call Monitor ([@cdce8p] - [#116553])
+- Store runtime data inside the config entry in Tankerkoenig ([@mib1185] - [#116532])
+- Store runtime data inside the config entry in Proximity ([@mib1185] - [#116533])
+- Store runtime data inside the config entry in PegelOnline ([@mib1185] - [#116534])
+- Use config entry runtime data in Trafikverket Weather ([@gjohansson-ST] - [#116554])
+- Use config entry runtime data in Trafikverket Camera ([@gjohansson-ST] - [#116552])
+- Use config entry runtime data in Sensibo ([@gjohansson-ST] - [#116530])
+- Use config entry runtime data in Trafikverket Ferry ([@gjohansson-ST] - [#116557])
+- Use config entry runtime data in Trafikverket Train ([@gjohansson-ST] - [#116556])
+- Store runtime data in entry in Analytics Insights ([@joostlek] - [#116441])
+- Remove duplicate mid handling in MQTT ([@bdraco] - [#116531])
+- Improve tankerkoenig generic coordinator typing ([@cdce8p] - [#116560])
+- Improve airly generic coordinator typing ([@cdce8p] - [#116561])
+- Improve asuswrt decorator typing ([@cdce8p] - [#116563])
+- Improve fitbit generic coordinator typing ([@cdce8p] - [#116562])
+- Bump pydrawise to 2024.4.1 ([@dknowles2] - [#116449])
+- Address late review for Husqvarna Automower ([@Thomas55555] - [#116536])
+- Bump sigstore/cosign-installer from 3.4.0 to 3.5.0 (@dependabot - [#115399])
+- Bump codecov/codecov-action from 4.3.0 to 4.3.1 (@dependabot - [#116592])
+- Add shutter tilt support for Shelly Wave Shutter QNSH-001P10 ([@blob810] - [#116211])
+- Use runtime_data for acmeda ([@cdce8p] - [#116606])
+- Use runtime_data for airvisual_pro ([@cdce8p] - [#116607])
+- Use runtime_data for ambient_station ([@cdce8p] - [#116608])
+- Use entry.runtime_data in Fronius ([@farmio] - [#116604])
+- Use runtime_data for co2signal ([@cdce8p] - [#116612])
+- Use runtime_data for bond ([@cdce8p] - [#116611])
+- Use runtime_data for august ([@cdce8p] - [#116610])
+- Add `binary_sensor` platform to IMGW-PIB integration ([@bieniu] - [#116624])
+- Use runtime_data for airthings_ble ([@cdce8p] - [#116623])
+- Use runtime_data for airtouch5 ([@cdce8p] - [#116625])
+- Use runtime_data for aftership ([@cdce8p] - [#116618])
+- Cleanup removed MQTT broker settings ([@jbouwh] - [#116633])
+- Use runtime_data for airq ([@cdce8p] - [#116620])
+- Use runtime_data for airthings ([@cdce8p] - [#116622])
+- Use runtime_data for airnow ([@cdce8p] - [#116619])
+- Refactor group state logic ([@jbouwh] - [#116318])
+- Add vesync Vital 100S UK & EU Model mappings ([@JonDeeming] - [#115948])
+- Cleanup unused class attr for MQTT config flow ([@jbouwh] - [#116653])
+- Improve docstring on roborock image entity method ([@jbouwh] - [#116654])
+- Replace pyserial-asyncio with pyserial-asyncio-fast in serial ([@bdraco] - [#116636])
+- Fix flaky hassio test ([@emontnemery] - [#116658])
+- Cleanup MQTT sensor last_reset_topic config parameter a year after removal ([@jbouwh] - [#116657])
+- Add ecobee ventilator 20 min timer ([@marcolivierarsenault] - [#115969])
+- Migrate bluetooth to use the singleton helper ([@bdraco] - [#116629])
+- Clean up small changes from OpenAI conversation entity change ([@allenporter] - [#116395])
+- Convert history tests to use async API ([@emontnemery] - [#116447])
+- Drop pyserial-asyncio from zha ([@bdraco] - [#116638])
+- Add title feature to notify entity platform ([@jbouwh] - [#116426])
+- Bump `imgw_pib` to version 1.0.1 ([@bieniu] - [#116630])
+- Bump habluetooth to 3.0.1 ([@bdraco] - [#116663])
+- Move NAM Data Update Coordinator to the coordinator module ([@bieniu] - [#116686])
+- Fix fyta test warning ([@cdce8p] - [#116688])
+- Fix snapcast test warning ([@cdce8p] - [#116687])
+- Add test for HA stop to devolo Home Control ([@Shutgun] - [#116682])
+- Use `runtime_data` to store NextDNS data ([@bieniu] - [#116691])
+- Use ConfigEntry runtime_data in devolo Home Control ([@Shutgun] - [#116672])
+- EntityDescription doesn't need to be generic for NextDNS binary sensor and switch platforms ([@bieniu] - [#116697])
+- Convert sensor recorder tests to use async API ([@emontnemery] - [#116373])
+- Convert recorder entity registry tests to use async API ([@emontnemery] - [#116448])
+- Bump `nettigo-air-monitor` to version 3.0.1 ([@bieniu] - [#116699])
+- Cleanup OpenAI and Ollama conversation entities ([@allenporter] - [#116714])
+- Use ConfigEntry runtime_data in Discovergy ([@jpbede] - [#116671])
+- Use runtime_data in Axis integration ([@Kane610] - [#116729])
+- Fix active state mapping in wolflink ([@mtielen] - [#116659])
+- Fix UpdateCoordinator types in CoordinatorWeatherEntity constructor ([@kamiyo] - [#116747])
+- Bump ruff to 0.4.3 ([@autinerd] - [#116749])
+- Store runtime data inside the config entry in DWD ([@mib1185] - [#116764])
+- Store runtime data inside the config entry in Shelly ([@mib1185] - [#116763])
+- Improve CoordinatorWeatherEntity generic typing ([@cdce8p] - [#116760])
+- Update unique_id to string in Honeywell ([@mkmer] - [#116726])
+- Store BraviaTV data in config_entry.runtime_data ([@bieniu] - [#116778])
+- Move Brother DataUpdateCoordinator to the coordinator module ([@bieniu] - [#116772])
+- Store runtime data inside the config entry in Met.no ([@mib1185] - [#116767])
+- Store runtime data inside the config entry in Nextcloud ([@mib1185] - [#116790])
+- Store runtime data inside the config entry in SamsungTV ([@mib1185] - [#116787])
+- Store runtime data inside the config entry in OpenWeatherMap ([@mib1185] - [#116788])
+- Store runtime data inside the config entry in VLC telnet ([@mib1185] - [#116803])
+- Store runtime data inside the config entry in Speedtest.net ([@mib1185] - [#116802])
+- Store runtime data inside the config entry in Pi-Hole ([@mib1185] - [#116806])
+- Store runtime data inside the config entry in NUT ([@mib1185] - [#116771])
+- Store runtime data inside the config entry in Sun ([@mib1185] - [#116808])
+- Store runtime data inside the config entry in Local ToDo ([@mib1185] - [#116818])
+- Store runtime data inside the config entry in Certificate Expiry ([@mib1185] - [#116819])
+- Store runtime data inside the config entry in Bring ([@tr4nt0r] - [#116820])
+- Store runtime data inside the config entry in System Monitor ([@mib1185] - [#116816])
+- Store runtime data inside the config entry in Android TV Remote ([@mib1185] - [#116824])
+- Migrate properties to instance variables in NAM coordinator ([@bieniu] - [#116703])
+- Move Totalconnect coordinator to separate module ([@joostlek] - [#116368])
+- Correct stale docstring on mqtt config flow method ([@jbouwh] - [#116848])
+- Use parametrize in drop connect sensor tests ([@joostlek] - [#107078])
+- Increase test coverage for Total Connect ([@bieniu] - [#116851])
+- Bump tcc to 2024.5 ([@austinmroczek] - [#116827])
+- Add Sensor descriptions for Bosch SHC ([@joostlek] - [#116775])
+- Add update coordinator for Habitica integration ([@tr4nt0r] - [#116427])
+- Remove timeout option and set timeout static to 30 seconds in Synology DSM ([@mib1185] - [#116815])
+- Improve recorder and worker thread matching in RecorderPool ([@bdraco] - [#116886])
+- Replace utcnow().timestamp() with time.time() in auth_store ([@bdraco] - [#116879])
+- Refactor entity_platform polling to avoid double time fetch ([@bdraco] - [#116877])
+- Turn on thread safety checks in async_dispatcher_send ([@bdraco] - [#116867])
+- Keep august offline key up to date when it changes ([@bdraco] - [#116857])
+- Index auth token ids to avoid linear search ([@bdraco] - [#116583])
+- Switch out aiohttp-isal for aiohttp-fast-zlib to make isal optional ([@bdraco] - [#116814])
+- Abort Minecraft Server config flow if device is already configured ([@elmurato] - [#116852])
+- Store runtime data inside the config entry in AndroidTV ([@ollo69] - [#116895])
+- Bump Habitipy to 0.3.1 ([@tr4nt0r] - [#116378])
+- Bump bring-api to 0.7.1 ([@tr4nt0r] - [#115532])
+- Bump google-generativeai to v0.5.2 ([@tronikos] - [#116845])
+- Move thread safety check in issue_registry sooner ([@bdraco] - [#116899])
+- Only call conversation should_expose once ([@balloob] - [#116891])
+- Handle errors retrieving Ondilo data and bump ondilo to 0.5.0 ([@JeromeHXP] - [#115926])
+- Convert recorder init tests to use async API ([@emontnemery] - [#116918])
+- Store runtime data inside the config entry in AsusWrt ([@ollo69] - [#116889])
+- Reduce API calls to fetch Habitica tasks ([@tr4nt0r] - [#116897])
+- Add new sensors to IMGW-PIB integration ([@bieniu] - [#116631])
+- Add snapshot tests to Ondilo Ico ([@joostlek] - [#116929])
+- Convert recorder history tests to use async API ([@emontnemery] - [#116909])
+- Convert recorder statistics tests to use async API ([@emontnemery] - [#116925])
+- Simplify config entry check in SamsungTV ([@epenet] - [#116907])
+- Convert recorder util tests to use async API ([@emontnemery] - [#116926])
+- Convert recorder auto_repairs tests to use async API ([@emontnemery] - [#116927])
+- Fix search/replace mistake in recorder tests ([@emontnemery] - [#116933])
+- Store runtime data inside the config entry in Radio Browser ([@mib1185] - [#116821])
+- Small speed ups to async_get_integration ([@bdraco] - [#116900])
+- Set pH device class in Ondilo Ico ([@joostlek] - [#116930])
+- Fix wiz test warning ([@cdce8p] - [#116693])
+- Add dataclass to Ondilo Ico ([@joostlek] - [#116928])
+- Use runtime_data for elgato ([@cdce8p] - [#116614])
+- Remove deprecated WAQI state attributes ([@joostlek] - [#116595])
+- Use runtime_data for wled ([@cdce8p] - [#116615])
+- Use ConfigEntry runtime_data in TwenteMilieu ([@frenck] - [#116642])
+- AccuWeather tests refactoring ([@bieniu] - [#116923])
+- Allow the rounding to be optional in integral ([@elupus] - [#116884])
+- Store AccuWeather runtime data in config entry ([@bieniu] - [#116946])
+- Revert polling interval back to orginal value in Wolflink ([@mtielen] - [#116758])
+- Replace pylint protected-access with Ruff SLF001 ([@autinerd] - [#115735])
+- Snapshot Ondilo Ico devices ([@joostlek] - [#116932])
+- Handle exceptions in panic button for Yale Smart Alarm ([@gjohansson-ST] - [#116515])
+- Allow reconfiguration of integration sensor ([@elupus] - [#116740])
+- Remove ambiclimate integration ([@gjohansson-ST] - [#116410])
+- Use ConfigEntry runtime_data in devolo Home Network ([@Shutgun] - [#116694])
+- Correct formatting mqtt MQTT_DISCOVERY_DONE and MQTT_DISCOVERY_UPDATED message ([@jbouwh] - [#116947])
+- Bump orjson to 3.10.3 ([@bdraco] - [#116945])
+- Correct typo in MQTT translations ([@jbouwh] - [#116956])
+- Bump python-holidays to 0.48 ([@gjohansson-ST] - [#116951])
+- Make Idasen Desk react to bluetooth changes ([@abmantis] - [#115939])
+- Bump aioautomower to 2024.5.0 ([@Thomas55555] - [#116942])
+- Review AndroidTV decorator exception management ([@ollo69] - [#114133])
+- Upgrade to hdate 0.10.8 ([@SLaks] - [#116202])
+- Bump SQLAlchemy to 2.0.30 ([@bdraco] - [#116964])
+- Add HassDict implementation ([@cdce8p] - [#103844])
+- Add support for round-robin DNS ([@pemontto] - [#115218])
+- Fix flakey test in Husqvarna Automower ([@Thomas55555] - [#116981])
+- Update tqdm to 4.66.4 ([@cdce8p] - [#116984])
+- Replace pylint broad-except with Ruff BLE001 ([@autinerd] - [#116250])
+- Store Philips TV runtime data in config entry ([@bieniu] - [#116952])
+- Clean up Ondilo config flow ([@joostlek] - [#116931])
+- Update imports from alarm_control_panel ([@cdce8p] - [#117014])
+- Return raw API data for subaru device diagnostics ([@G-Two] - [#114119])
+- Use HassKey for registries ([@cdce8p] - [#117000])
+- Use HassKey for setup and bootstrap ([@cdce8p] - [#116998])
+- Use HassKey for helpers (2) ([@cdce8p] - [#117013])
+- Use HassKey for helpers (1) ([@cdce8p] - [#117012])
+- Improve energy platform typing ([@cdce8p] - [#117003])
+- Use HassKey for loader ([@cdce8p] - [#116999])
+- Only log loop client subscription log if log level is DEBUG ([@jbouwh] - [#117008])
+- Add SignificantChangeProtocol to improve platform typing ([@cdce8p] - [#117002])
+- Holiday update calendar once per day ([@gjohansson-ST] - [#116421])
+- Improve issue_registry event typing ([@cdce8p] - [#117023])
+- Add Tado reconfigure step ([@erwindouna] - [#115970])
+- Use entry runtime data on Filesize ([@gjohansson-ST] - [#116962])
+- Add Monzo integration ([@JakeMartin-ICL] - [#101731])
+- Use singleton helper for registries ([@bdraco] - [#117027])
+- Add MediaSourceProtocol to improve platform typing ([@cdce8p] - [#117001])
+- Add flow and rain sensor support to Hydrawise ([@thomaskistler] - [#116303])
+- Add climate temp ranges support for Airzone Cloud ([@Noltari] - [#115025])
+- Fix double executor in Filesize ([@gjohansson-ST] - [#117029])
+- Add Venstar HVAC stage sensor ([@jhollowe] - [#107510])
+- Store Airly runtime data in config entry ([@bieniu] - [#117031])
+- Store runtime data inside the config entry in Upnp ([@mib1185] - [#117030])
+- Store runtime data inside the config entry in Apple TV ([@mib1185] - [#117032])
+- Move thread safety in label_registry sooner ([@bdraco] - [#117026])
+- Fix capitalization in Monzo strings ([@joostlek] - [#117035])
+- Move thread safety in floor_registry sooner ([@bdraco] - [#117044])
+- Update eq3btsmart library dependency to 1.1.8 ([@EuleMitKeule] - [#117051])
+- Move thread safety check in category_registry sooner ([@bdraco] - [#117050])
+- Intent target matching and media player enhancements ([@synesthesiam] - [#115445])
+- Add service waze_travel_time.get_travel_times ([@eifinger] - [#108170])
+- Store runtime data inside the config entry in IPP ([@mib1185] - [#116765])
+- Set the quality scale to platinum for IMGW-PIB integration ([@bieniu] - [#116912])
+- Store Tractive data in `config_entry.runtime_data` ([@bieniu] - [#116781])
+- Use runtime_data in webmin ([@autinerd] - [#117058])
+- User eager task in github config flow ([@emontnemery] - [#117066])
+- Bump aiovodafone to 0.6.0 ([@chemelli74] - [#117064])
+- Apply late review on Synology DSM ([@mib1185] - [#117060])
+- Bump pylutron to 0.2.13 ([@joostlek] - [#117062])
+- Bump bleak to 0.22.0 ([@bdraco] - [#116955])
+- Convert Anova to cloud push ([@Lash-L] - [#109508])
+- Add an add template filter ([@Troon] - [#109884])
+- Correct state class of ecowitt hourly rain rate sensors ([@pantonvich] - [#110475])
+- Add `open` state to LockEntity ([@gjohansson-ST] - [#111968])
+- Fix nibe_heatpump climate for models without cooling support ([@tizianodeg] - [#114599])
+- Migrate baf to use config entry runtime_data ([@bdraco] - [#117081])
+- Add open and opening state support to MQTT lock ([@jbouwh] - [#117110])
+- Avoid storing Bluetooth scanner in hass.data ([@bdraco] - [#117074])
+- Migrate govee_ble to use config entry runtime_data ([@bdraco] - [#117076])
+- Avoid creating a task to clear the hass instance at test teardown ([@bdraco] - [#117103])
+- Avoid creating inner tasks to load storage ([@bdraco] - [#117099])
+- Speed up tests by making mock_get_source_ip session scoped ([@bdraco] - [#117096])
+- Migrate yalexs_ble to use config entry runtime_data ([@bdraco] - [#117082])
+- Migrate elkm1 to use config entry runtime_data ([@bdraco] - [#117077])
+- Bump python-roborock to 2.1.1 ([@Lash-L] - [#117078])
+- Export MQTT subscription helpers at integration level ([@jbouwh] - [#116150])
+- Enable Ruff RUF010 ([@autinerd] - [#115371])
+- Ignore Ruff SIM103 ([@autinerd] - [#115732])
+- Fix config entry _async_process_on_unload being called for forwarded platforms ([@bdraco] - [#117084])
+- Store runtime data inside the config entry in Tuya ([@mib1185] - [#116822])
+- Add test data for Zeo and Dyad devices to Roborock ([@Lash-L] - [#117054])
+- Add better testing to vacuum platform ([@Lash-L] - [#112523])
+- Use HassKey for importlib helper ([@cdce8p] - [#117116])
+- Move available property in BasePassiveBluetoothCoordinator to PassiveBluetoothDataUpdateCoordinator ([@bdraco] - [#117056])
+- Bump github/codeql-action from 3.25.3 to 3.25.4 (@dependabot - [#117127])
+- Add airgradient integration ([@joostlek] - [#114113])
+- Add base entity for Airgradient ([@joostlek] - [#117135])
+- Add screenlogic service tests ([@dieselrabbit] - [#116356])
+- Speed up test teardown when no config entries are loaded ([@bdraco] - [#117095])
+- Bump ruff to 0.4.4 ([@autinerd] - [#117154])
+- Raise ServiceValidationError in Nibe climate services ([@tizianodeg] - [#117171])
+- Improve base entity state in Vogel's MotionMount integration ([@RJPoelstra] - [#109043])
+- Add standard deviation calculation to group ([@CoRfr] - [#112076])
+- Refactor Teslemetry integration ([@Bre77] - [#112480])
+- Migrate file integration to config entry ([@jbouwh] - [#116861])
+- Add energy site coordinator to Teslemetry ([@Bre77] - [#117184])
+- Add ESPhome discovery via MQTT ([@Links2004] - [#116499])
+- Import TypedDict from typing ([@cdce8p] - [#117161])
+- Log some mqtt of the discovery logging at debug level ([@jbouwh] - [#117185])
+- Update media_player intent schema ([@Shulyaka] - [#116793])
+- Update SetPositionIntentHandler intent schema ([@Shulyaka] - [#116794])
+- Add update_without_throttle to ecobee number ([@marcolivierarsenault] - [#116504])
+- Fix File entry setup config parsing whole YAML config ([@jbouwh] - [#117206])
+- Ensure config entry setup lock is held when removing a config entry ([@bdraco] - [#117086])
+- Fix flakey sonos test teardown ([@bdraco] - [#117222])
+- Bump ical to 8.0.1 ([@allenporter] - [#117219])
+- Use async_get_loaded_integration in config_entries ([@bdraco] - [#117192])
+- Bump pyrainbird to 6.0.1 ([@allenporter] - [#117217])
+- Fix flakey advantage_air test ([@bdraco] - [#117224])
+- Only load translations for an integration once per test session ([@bdraco] - [#117118])
+- Add device class to Command Line cover ([@gjohansson-ST] - [#117183])
+- Prevent shutdown fault-log trace-back ([@systemcrash] - [#116735])
+- Speed up init and finish flow ([@bdraco] - [#117226])
+- Use MockConfigEntry in unifi tests ([@emontnemery] - [#117238])
+- Rename some runner tests ([@emontnemery] - [#117249])
+- Rename some translation helper tests ([@emontnemery] - [#117248])
+- Rename some rflink tests ([@emontnemery] - [#117247])
+- Rename some MQTT tests ([@emontnemery] - [#117246])
+- Sort asserts in config config_entries tests ([@emontnemery] - [#117244])
+- Bump homematicip to 1.1.1 ([@hahn-th] - [#117175])
+- Bump wolf-comm to 0.0.8 ([@mtielen] - [#117218])
+- Bump pyinsteon to 1.6.1 ([@teharris1] - [#117196])
+- Start using runtime_data for zwave_js ([@raman325] - [#117261])
+- Use mock_config_flow helper in config tests ([@emontnemery] - [#117245])
+- Use mock_config_flow helper in config_entries tests ([@emontnemery] - [#117241])
+- Use mock_config_flow helper in bootstrap tests ([@emontnemery] - [#117240])
+- Sort parameters to MockConfigEntry ([@emontnemery] - [#117239])
+- Add shared notify service migration repair helper ([@jbouwh] - [#117213])
+- Refactor V2C tests ([@joostlek] - [#117264])
+- Tweak config_entries tests ([@emontnemery] - [#117242])
+- Ensure config entry operations are always holding the lock ([@bdraco] - [#117214])
+- Fix docstring in Idasen Desk ([@abmantis] - [#117280])
+- Small speed up to setting up integrations and config entries ([@bdraco] - [#117278])
+- Use `MockConfigEntry` in hue tests ([@emontnemery] - [#117237])
+- Use a dictcomp to reconstruct DeviceInfo in the device_registry ([@bdraco] - [#117286])
+- Bump upcloud-api to 2.5.1 ([@scop] - [#117231])
+- Fix mimetypes doing blocking I/O in the event loop ([@bdraco] - [#117292])
+- Small speed ups to bootstrap tests ([@bdraco] - [#117285])
+- Improve bluetooth generic typing ([@cdce8p] - [#117157])
+- Spelling of controlling in mqtt valve tests ([@jbouwh] - [#117301])
+- Fix blocking I/O in the event loop to get MacOS system_info ([@bdraco] - [#117290])
+- Use entry runtime data in Teslemetry ([@Bre77] - [#117283])
+- Fix flume doing blocking I/O in the event loop ([@bdraco] - [#117293])
+- Fix import on File config entry and other improvements ([@jbouwh] - [#117210])
+- Fix typo in mqtt test name ([@jbouwh] - [#117305])
+- Migrate Tibber notify service ([@jbouwh] - [#116893])
+- Remove ConfigEntry runtime_data on unload ([@cdce8p] - [#117312])
+- Add test for radarr update failure ([@tkdrob] - [#116882])
+- Clean up aurora ([@joostlek] - [#117315])
+- Refactor asyncio loop protection to improve performance ([@bdraco] - [#117295])
+- Enable open protection in the event loop ([@bdraco] - [#117289])
+- Bump zwave-js-server-python to 0.56.0 ([@raman325] - [#117288])
+- Add camera recording service to blink ([@mback2k] - [#110612])
+- Improve error handling in Teslemetry ([@Bre77] - [#117336])
+- Add gh cli to dev container ([@balloob] - [#117321])
+- Fix typo and useless default in config_entries ([@emontnemery] - [#117346])
+- Implement runtime data for Plugwise ([@bouwew] - [#117172])
+- Remove migration of config entry data pre version 0.73 ([@emontnemery] - [#117345])
+- Alphabetize some parts of config_entries ([@emontnemery] - [#117347])
+- Remove options from FlowResult ([@emontnemery] - [#117351])
+- Add minor version + migration to config entry store ([@emontnemery] - [#117350])
+- Migrate File notify entity platform ([@jbouwh] - [#117215])
+- Implement support for SwitchBot Meter, MeterPlus, and Outdoor Meter ([@laurence-presland] - [#115522])
+- Support reconfigure flow in Nettigo Air Monitor integration ([@bieniu] - [#117318])
+- Update to arcam 1.5.2 ([@elupus] - [#117375])
+- Create helper for File config flow step handling ([@jbouwh] - [#117371])
+- Bump dbus-fast to 2.21.2 ([@bdraco] - [#117195])
+- Migrate restore_state to use the singleton helper ([@bdraco] - [#117385])
+- Pass loop to create_eager_task in loops from more coros ([@bdraco] - [#117390])
+- Import and cache supported feature enum flags only when needed ([@allenporter] - [#117270])
+- Use ConfigEntry runtime_data in Tailwind ([@frenck] - [#117404])
+- Update uv to 0.1.43 ([@cdce8p] - [#117405])
+- Update apprise to 1.8.0 ([@frenck] - [#117370])
+- Update types packages ([@cdce8p] - [#117407])
+- Use ConfigEntry runtime_data in advantage_air ([@epenet] - [#117408])
+- Bump github/codeql-action from 3.25.4 to 3.25.5 (@dependabot - [#117409])
+- Update gotailwind to 0.2.3 ([@frenck] - [#117402])
+- Use ConfigEntry runtime_data in aemet ([@epenet] - [#117411])
+- Use ConfigEntry runtime_data in agent_dvr ([@epenet] - [#117412])
+- Update pylint to 3.1.1 ([@cdce8p] - [#117416])
+- Move abode base entities to separate module ([@epenet] - [#117417])
+- Add climate platform to microBees ([@FedDam] - [#111152])
+- Add Viam image processing integration ([@HipsterBrown] - [#101786])
+- Speed up loading YAML ([@bdraco] - [#117388])
+- Update pytest warnings filter ([@cdce8p] - [#117413])
+- Allow templates for enabling automation triggers ([@farmio] - [#114458])
+- Add `knx.telegram` integration specific trigger; update KNX Interface device trigger ([@farmio] - [#107592])
+- Rename sharkiq coordinator module ([@epenet] - [#117429])
+- Use snapshot platform helper in Flexit bacnet ([@joostlek] - [#117428])
+- Move esphome coordinator to separate module ([@epenet] - [#117427])
+- Move abode service registration ([@epenet] - [#117418])
+- Adjust thread safety check messages to point to developer docs ([@bdraco] - [#117392])
+- Add diagnostic platform to utility_meter ([@dgomes] - [#114967])
+- Bump pyefergy to 22.5.0 ([@tkdrob] - [#117395])
+- Add context to `telegram_bot` events ([@Shulyaka] - [#109920])
+- Move evil_genius_labs coordinator to separate module ([@epenet] - [#117435])
+- Add ability to change heating programs for heat pumps in ViCare integration ([@CFenner] - [#110924])
+- Rename flo coordinator module ([@epenet] - [#117438])
+- Use integration fallback configuration for tado water heater fallback ([@ethemcemozkan] - [#111014])
+- Re-introduce webhook to tedee integration ([@zweckj] - [#110247])
+- Update SmartThings codeowners ([@andrewsayre] - [#117448])
+- Rename wemo coordinator module ([@epenet] - [#117437])
+- Add Assist timers ([@synesthesiam] - [#117199])
+- Refactor Linear tests ([@joostlek] - [#116336])
+- Pass device_id to intent handlers ([@synesthesiam] - [#117442])
+- Some minor cleanups in WLED ([@frenck] - [#117453])
+- Make UniFi use runtime data ([@Kane610] - [#117457])
+- Enable raising ConfigEntryAuthFailed on BMW coordinator init ([@rikroe] - [#116643])
+- Fix lying docstring in entity_platform ([@emontnemery] - [#117450])
+- Add PM10 sensor to AirNow ([@kamiyo] - [#117432])
+- Bump opower to 0.4.5 and use new account.id ([@c0mputerguru] - [#117330])
+- Bump youless_api to 1.1.1 ([@benvm] - [#117459])
+- Remove "device_id" slot from timers ([@synesthesiam] - [#117460])
+- Add water meter to Youless intergration ([@benvm] - [#117452])
+- Set integration type for aurora_abb_powerone ([@davet2001] - [#117462])
+- Separate Blue Current timestamp sensors ([@Floris272] - [#111942])
+- Fix brand ID for Rainforest Automation ([@cottsay] - [#113770])
+- Add integration for APsystems EZ1 microinverter ([@mawoka-myblock] - [#114531])
+- Fix intent_type type ([@balloob] - [#117469])
+- Improve thread safety check messages to better convey impact ([@bdraco] - [#117467])
+- Add websocket API to get list of recorded entities ([@bdraco] - [#92640])
+- Bump codecov/codecov-action from 4.3.1 to 4.4.0 (@dependabot - [#117472])
+- Split homeassistant_alerts constants and coordinator ([@epenet] - [#117475])
+- Rename gree coordinator module ([@epenet] - [#117474])
+- Add options flow to the airq integration ([@Sibgatulin] - [#109337])
+- Revert "Add Viam image processing integration" ([@emontnemery] - [#117477])
+- Revert "Bump opower to 0.4.5 and use new account.id" ([@frenck] - [#117476])
+- Rename add entities function in Aurora ([@joostlek] - [#117480])
+- Move ialarm coordinator to separate module ([@epenet] - [#117478])
+- Set integration type for generic ([@davet2001] - [#117464])
+- Add exception translations to System Bridge integration ([@timmo001] - [#112206])
+- Move gios coordinator to separate module ([@epenet] - [#117471])
+- Move idasen_desk coordinator to separate module ([@epenet] - [#117485])
+- Remove ignore-wrong-coordinator-module in pylint CI ([@epenet] - [#117479])
+- Rename mikrotik coordinator module ([@epenet] - [#117488])
+- Move melnor coordinator to separate module ([@epenet] - [#117486])
+- Move prusalink coordinators to separate module ([@epenet] - [#117495])
+- Move mill coordinator to separate module ([@epenet] - [#117493])
+- Move venstar coordinator to separate module ([@epenet] - [#117500])
+- Fix ghost events for Hue remotes ([@marcelveldt] - [#113047])
+- Android TV Remote: Support launching any app by its application ID/package name ([@tronikos] - [#116906])
+- Add Jellyfin audio_codec optionflow ([@d-ylee] - [#113036])
+- Improve error handing in kaiterra data retrieval when no aqi data is present ([@AnilDaoud] - [#112885])
+- Add alarm and connectivity binary_sensors to myuplink ([@astrandb] - [#111643])
+- Add select platform to Teslemetry ([@Bre77] - [#117422])
+- Post review comments on APsystems ([@mawoka-myblock] - [#117504])
+- Move vizio coordinator to separate module ([@epenet] - [#117498])
+- Move vallox coordinator to separate module ([@epenet] - [#117503])
+- Allow templates for enabling conditions ([@farmio] - [#117047])
+- Allow templates for enabling actions ([@farmio] - [#117049])
+- Add Reolink PIR entities ([@starkillerOG] - [#117507])
+- Add light platform to Linear garage door ([@IceBotYT] - [#111426])
+- Rename fritz coordinator module ([@epenet] - [#117440])
+- Do not register mqtt mock config flow with handlers ([@jpbede] - [#117521])
+- Set integration type for wyoming ([@balloob] - [#117519])
+- Fix the type of slot schema of intent handlers ([@balloob] - [#117520])
+- Add LLM tools ([@Shulyaka] - [#115464])
+- Don't prioritize "name" slot if it's a wildcard in default conversation agent ([@synesthesiam] - [#117518])
+- Bump bleak to 0.22.1 ([@bdraco] - [#117383])
+- Move google coordinator to separate module ([@epenet] - [#117473])
+- Add Webmin filesystem sensors ([@autinerd] - [#112660])
+- Move xbox coordinator to separate module ([@epenet] - [#117421])
+- Move switcher_kis coordinator to separate module ([@epenet] - [#117538])
+- Move gogogate2 coordinator to separate module ([@epenet] - [#117433])
+- Bump aioesphomeapi to 24.4.0 ([@gnumpi] - [#117543])
+- Bump adext to 0.4.3 ([@tichris0] - [#117496])
+- Move surepetcare coordinator to separate module ([@epenet] - [#117544])
+- Move upcloud coordinator to separate module ([@epenet] - [#117536])
+- Add functionality to Mastodon ([@thejeffreystone] - [#112862])
+- Only allow ethernet and wi-fi interfaces as unique ID in webmin ([@autinerd] - [#113084])
+- Improve ReloadServiceHelper typing ([@cdce8p] - [#117552])
+- Replace meaningless TypeVar usage ([@cdce8p] - [#117553])
+- Add Shelly motion sensor switch ([@chemelli74] - [#115312])
+- Move rainforest_eagle coordinator to separate module ([@epenet] - [#117556])
+- Move risco coordinator to separate module ([@epenet] - [#117549])
+- Improve recorder statistics error messages ([@dfaour] - [#113498])
+- Move pvpc coordinator to separate module ([@epenet] - [#117559])
+- Add area filter and rounded time to timers ([@synesthesiam] - [#117527])
+- Move pure_energie coordinator to separate module ([@epenet] - [#117560])
+- Update hass-nabucasa dependency to version 0.81.0 ([@ludeeus] - [#117568])
+- Use runtime data in Poolsense ([@joostlek] - [#117570])
+- Ensure gold and platinum integrations implement diagnostic ([@epenet] - [#117565])
+- Support reconfigure flow in Shelly integration ([@bieniu] - [#117525])
+- Refactor Poolsense config flow tests ([@joostlek] - [#117573])
+- Bump pyipp to 0.16.0 ([@ctalkington] - [#117583])
+- Add diagnostics for nws ([@MatthewFlamm] - [#117587])
+- Add Poolsense platform tests ([@joostlek] - [#117579])
+- Add Reolink battery entities ([@starkillerOG] - [#117506])
+- Use config entry runtime_data in nws ([@MatthewFlamm] - [#117593])
+- Mark HassJob target as Final ([@cdce8p] - [#117578])
+- Rework deCONZ services to load once and never unload ([@Kane610] - [#117592])
+- Remove old deCONZ entity cleanup ([@Kane610] - [#117590])
+- Rename openweathermap coordinator module ([@epenet] - [#117609])
+- Move opengarage coordinator to separate module ([@epenet] - [#117608])
+- Fix dlna_dmr task flood when player changes state ([@bdraco] - [#117606])
+- Bump actions/checkout from 4.1.4 to 4.1.6 (@dependabot - [#117612])
+- Fix Reolink battery translation_key unneeded ([@starkillerOG] - [#117616])
+- Bump pre-commit to 3.7.1 ([@epenet] - [#117619])
+- Rename hassio coordinator module ([@epenet] - [#117611])
+- Extract Monzo coordinator in separate module ([@joostlek] - [#117034])
+- Prevent `const.py` in coverage ignore list ([@epenet] - [#117625])
+- Update mypy-dev to 1.11.0a2 ([@cdce8p] - [#117630])
+- Use PEP 695 for simple type aliases ([@cdce8p] - [#117633])
+- Android TV Remote: Mention the TV will turn on in the reauth flow ([@tronikos] - [#117548])
+- Fix Tibber sensors state class ([@basbruss] - [#117085])
+- Move modern_forms coordinator to separate module ([@epenet] - [#117610])
+- Add snapshot tests to Balboa ([@joostlek] - [#117620])
+- Use PEP 695 type alias for ConfigEntry types ([@cdce8p] - [#117632])
+- Add snapshot tests to elmax ([@epenet] - [#117637])
+- Move elmax coordinator to separate module ([@epenet] - [#117425])
+- Fix icons and strings in Balboa ([@joostlek] - [#117618])
+- Adjust bootstrap script to use correct version of pre-commit ([@epenet] - [#117621])
+- Use PEP 695 for decorator typing (1) ([@cdce8p] - [#117638])
+- Use PEP 695 for decorator typing (3) ([@cdce8p] - [#117640])
+- Use PEP 695 for decorator typing (2) ([@cdce8p] - [#117639])
+- Move p1_monitor coordinator to separate module ([@epenet] - [#117562])
+- Add Google Gen AI Conversation Agent Entity ([@allenporter] - [#116362])
+- Bump pyduotecno to 2024.5.1 ([@Cereal2nd] - [#117643])
+- Fix Habitica doing blocking I/O in the event loop ([@tr4nt0r] - [#117647])
+- Add AlarmDecoder device info ([@tichris0] - [#117357])
+- Move tomorrowio coordinator to separate module ([@epenet] - [#117537])
+- Move philips_js coordinator to separate module ([@epenet] - [#117561])
+- Clean up some bad line wrapping in Hydrawise ([@dknowles2] - [#117671])
+- Add missing string `reconfigure_successful` for NAM reconfigure flow ([@bieniu] - [#117683])
+- Bump google-generativeai==0.5.4 ([@tronikos] - [#117680])
+- Use PEP 695 for decorator typing with type aliases (2) ([@cdce8p] - [#117663])
+- Use PEP 695 for decorator typing with type aliases (1) ([@cdce8p] - [#117662])
+- Use PEP 695 for function annotations (3) ([@cdce8p] - [#117660])
+- Use PEP 695 for function annotations (2) ([@cdce8p] - [#117659])
+- Use PEP 695 for function annotations (1) ([@cdce8p] - [#117658])
+- Improve YieldFixture typing ([@cdce8p] - [#117686])
+- Use PEP 695 for dispatcher helper typing ([@cdce8p] - [#117685])
+- Remove useless TypeVars ([@cdce8p] - [#117687])
+- Use generator expression in poolsense ([@joostlek] - [#117582])
+- Move plenticore coordinators to separate module ([@epenet] - [#117491])
+- Improve Monzo tests ([@joostlek] - [#117036])
+- Improve diagnostics in Teslemetry ([@Bre77] - [#117613])
+- Add `__pycache__` to gitignore ([@autinerd] - [#114056])
+- Refactor Aurora tests ([@joostlek] - [#117323])
+- Use remove_device helper in tasmota tests ([@epenet] - [#116617])
+- Allow manual delete of stale Renault vehicles ([@epenet] - [#116229])
+- Move entity definitions into own module in AVM Fritz!Tools ([@mib1185] - [#117701])
+- Add GitHub CoPilot to extensions devcontainer ([@balloob] - [#117699])
+- Remove AngellusMortis as code-owner Unifi Protect ([@balloob] - [#117708])
+- Avoid Shelly RPC reconnect during device shutdown ([@thecode] - [#117702])
+- Add API class to LLM helper ([@balloob] - [#117707])
+- Use SnmpEngine stored in hass.data by singleton in Brother integration ([@bieniu] - [#117043])
+- Bump PlexAPI to 4.15.13 ([@jjlawren] - [#117712])
+- Bump monzopy to 1.2.0 ([@JakeMartin-ICL] - [#117730])
+- Use reauth helper in devolo Home Network ([@Shutgun] - [#117736])
+- Bump aioshelly to 10.0.0 ([@thecode] - [#117728])
+- Use helper in Withings reauth ([@joostlek] - [#117727])
+- Use reauth helper in devolo Home Control ([@Shutgun] - [#117739])
+- Refactor tests for Brother integration ([@bieniu] - [#117377])
+- Bump pydiscovergy to 3.0.1 ([@jpbede] - [#117740])
+- LLM Tools support for Google Generative AI integration ([@Shulyaka] - [#117644])
+- Update elmax_api to v0.0.5 ([@albertogeniola] - [#117693])
+- Add turn_on to SamsungTV remote ([@epenet] - [#117403])
+- Fix missing type for mqtt websocket wrapper ([@bdraco] - [#117752])
+- Add setup time detail to diagnostics ([@bdraco] - [#117766])
+- Update pylint to 3.2.2 ([@cdce8p] - [#117770])
+- Move environment_canada coordinator to separate module ([@epenet] - [#117426])
+- Use PEP 695 for class annotations (1) ([@cdce8p] - [#117775])
+- Use PEP 695 for class annotations (2) ([@cdce8p] - [#117776])
+- Use PEP 695 for class annotations (4) ([@cdce8p] - [#117778])
+- Use PEP 695 for class annotations (3) ([@cdce8p] - [#117777])
+- Use PEP 695 for hass_dict annotations ([@cdce8p] - [#117779])
+- Use PEP 695 for covariant class annotations ([@cdce8p] - [#117780])
+- Fix blocking I/O in the event loop when loading timezones ([@bdraco] - [#117721])
+- Downgrade point quality scale to silver ([@epenet] - [#117783])
+- Downgrade tellduslive quality scale to silver ([@epenet] - [#117784])
+- Set integration_type to device for apsystems integration ([@mawoka-myblock] - [#117782])
+- Update mypy-dev to 1.11.0a3 ([@cdce8p] - [#117786])
+- Use PEP 695 misc ([@cdce8p] - [#117788])
+- Use PEP 695 for function annotations with scoping ([@cdce8p] - [#117787])
+- Enable UP040 ruff check ([@cdce8p] - [#117792])
+- Unpause media players that were paused outside voice ([@synesthesiam] - [#117575])
+- Use PEP 695 type alias in tests ([@cdce8p] - [#117797])
+- Remove quotes surrounding annotations ([@cdce8p] - [#117817])
+- Bump pynws to 1.8.1 for nws ([@MatthewFlamm] - [#117820])
+- Detect incorrect exception in forwarded platforms ([@bdraco] - [#117754])
+- Bump dbus-fast to 2.21.3 ([@bdraco] - [#117824])
+- Bump tesla-powerwall to 0.5.2 ([@bdraco] - [#117823])
+- Improve error message when template is rendered from wrong thread ([@bdraco] - [#117822])
+- Update scaffold templates to use runtime_data ([@cdce8p] - [#117819])
+- Improve zwave_js TypeVar usage ([@cdce8p] - [#117810])
+- Stop the nest subscriber on Home Assistant stop ([@allenporter] - [#117830])
+- Bump codecov/codecov-action from 4.4.0 to 4.4.1 (@dependabot - [#117836])
+- Refactor SamsungTV auth check ([@epenet] - [#117834])
+- Bump github/codeql-action from 3.25.5 to 3.25.6 (@dependabot - [#117835])
+- Tesla wall connector add sensors ([@bajansen] - [#117769])
+- Remove @ from codeowners when downloading diagnostics ([@bdraco] - [#117825])
+- Remove future import to fix broken typing.get_type_hints call ([@cdce8p] - [#117837])
+- Bump aioautomower to 2024.5.1 ([@Thomas55555] - [#117815])
+- Convert solax to use DataUpdateCoordinator ([@bdraco] - [#117767])
+- Use PEP 695 misc (2) ([@cdce8p] - [#117814])
+- Use uv instead of pip in development env ([@edenhaus] - [#113517])
+- Remove silver integrations from NO_DIAGNOSTICS ([@epenet] - [#117840])
+- Simplify samsungtv unload ([@epenet] - [#117838])
+- Small speed up to adding event bus listeners ([@bdraco] - [#117849])
+- Simplify service description cache logic ([@bdraco] - [#117846])
+- Cache area registry JSON serialize ([@bdraco] - [#117847])
+- Speed up async_get_loaded_integrations ([@bdraco] - [#117851])
+- Small speed up to logbook humanify ([@bdraco] - [#117854])
+- Add support for Glances v4 ([@wittypluck] - [#117664])
+- Add description to intent handlers and use in LLM helper ([@synesthesiam] - [#117864])
+- Add missing placeholder name to reauth ([@mkmer] - [#117869])
+- Address late feedback Google LLM ([@balloob] - [#117873])
+- Make Google AI model picker a dropdown ([@balloob] - [#117878])
+- Enable Ruff RET502 ([@autinerd] - [#115139])
+- Add `async_turn_on/off` methods for KNX climate entities ([@farmio] - [#117882])
+- Add data point type option to `knx.telegram` trigger ([@farmio] - [#117463])
+- Add value_template option to KNX expose ([@farmio] - [#117732])
+- Simplify and speed up mqtt_config_entry_enabled check ([@bdraco] - [#117886])
+- Fix mqtt timer churn ([@bdraco] - [#117885])
+- Reduce overhead to call get_mqtt_data ([@bdraco] - [#117887])
+- LLM Tools: Add device_id ([@Shulyaka] - [#117884])
+- Avoid creating tasks to subscribe to discovery in MQTT ([@bdraco] - [#117890])
+- LLM Tools support for OpenAI integration ([@Shulyaka] - [#117645])
+- Reduce overhead to validate mqtt topics ([@bdraco] - [#117891])
+- Support carbon dioxide and formaldehyde sensors in deCONZ ([@Kane610] - [#117877])
+- Small speed up to creating flows ([@bdraco] - [#117896])
+- Improve typing via hassfest serializer ([@jschlyter] - [#117382])
+- Add coordinator to SamsungTV ([@epenet] - [#117863])
+- Adjust conftest type hints ([@epenet] - [#117900])
+- Keep observation data valid for 60 min and retry with no data for nws ([@MatthewFlamm] - [#117109])
+- Add MAC cleanup to SamsungTV ([@epenet] - [#117906])
+- Adopt new runtime entry data model for AlarmDecoder ([@tichris0] - [#117856])
+- Refactor MQTT to replace get_mqtt_data with HassKey ([@bdraco] - [#117899])
+- Bump habluetooth to 3.1.0 ([@bdraco] - [#117905])
+- Remove duplicate code in SamsungTV ([@epenet] - [#117913])
+- Exclude modbus from diagnostics hassfest check ([@joostlek] - [#117855])
+- Fix performance regression with SignalType ([@cdce8p] - [#117920])
+- Add clear night to smhi ([@gjohansson-ST] - [#115998])
+- Use common title for reauth confirm in Whirlpool config flow ([@mkmer] - [#117924])
+- Google Generative AI: Handle response with empty parts in generate_content ([@tronikos] - [#117908])
+- Add switch for stay out zones in Husqvarna Automower ([@Thomas55555] - [#117809])
+- Fail if targeting all devices in the house in service intent handler ([@synesthesiam] - [#117930])
+- Speed up registry indices ([@bdraco] - [#117897])
+- Simplify SkyConnect setup flow ([@puddly] - [#117868])
+- Add lock to token validity check ([@joostlek] - [#117912])
+- Move nest diagnostic tests to use snapshots ([@allenporter] - [#117929])
+- Migrate issue registry to use singleton helper ([@bdraco] - [#117848])
+- Add available and state to SamsungTV remote ([@epenet] - [#117909])
+- Store runtime data inside the config entry in iBeacon ([@mib1185] - [#117936])
+- Add number entities for screenlogic values used in SI calc ([@dieselrabbit] - [#117812])
+- Send MEDIA_ANNOUNCE flag to ESPHome media_player ([@gnumpi] - [#116993])
+- Refactor shared mqtt schema's to new module ([@jbouwh] - [#117944])
+- Update LLM no tools message ([@balloob] - [#117935])
+- Refactor state_reported listener setup to avoid merge in async_fire_internal ([@bdraco] - [#117953])
+- Bump ruff to 0.4.5 ([@autinerd] - [#117958])
+- Allow to reconfigure integrations with `single_config_entry` set ([@jpbede] - [#117939])
+- Better handling of EADDRINUSE for Govee light ([@Galorhallen] - [#117943])
+- Add Azure data explorer ([@kaareseras] - [#68992])
+- Fix run-in-env script for not running in venv ([@farmio] - [#117961])
+- Simplify async_track_time_interval implementation ([@bdraco] - [#117956])
+- Bump airgradient to 0.4.1 ([@joostlek] - [#117963])
+- Improve fyta tests ([@dontinelli] - [#117661])
+- Cleanup pylint ignore ([@epenet] - [#117964])
+- Add snapshot tests to moehlenhoff_alpha2 ([@epenet] - [#117967])
+- Add switch platform to Teslemetry ([@Bre77] - [#117482])
+- Use SnapshotAssertion in rainmachine diagnostic tests ([@epenet] - [#117979])
+- Add snapshot platform tests to rainmachine ([@epenet] - [#117978])
+- Move rainmachine coordinator to separate module ([@epenet] - [#117983])
+- Fix turbojpeg init doing blocking I/O in the event loop ([@bdraco] - [#117971])
+- Cache serialize of manifest for loaded integrations ([@bdraco] - [#117965])
+- Deconz - Added trigger support for Aqara WB-R02D mini switch ([@agrauballe] - [#117917])
+- Bump to google-nest-sdm to 4.0.4 ([@allenporter] - [#117982])
+- Enable Switcher assume buttons for all devices ([@thecode] - [#117993])
+- Bump habluetooth to 3.1.1 ([@bdraco] - [#117992])
+- Add snapshot tests to omnilogic ([@epenet] - [#117986])
+- Move moehlenhoff_alpha2 coordinator to separate module ([@epenet] - [#117970])
+- Remove Switcher YAML import support ([@thecode] - [#117994])
+- Google gen updates ([@balloob] - [#117893])
+- Update codespell to 2.3.0 ([@cdce8p] - [#118001])
+- Add lock platform to Teslemetry ([@Bre77] - [#117344])
+- Remove unused snapshots [a-f] ([@Thomas55555] - [#117999])
+- Fix vallow test fixtures ([@cdce8p] - [#118003])
+- Move omnilogic coordinator to separate module ([@epenet] - [#118014])
+- Add binary sensor platform to Teslemetry ([@Bre77] - [#117230])
+- Switcher - use single_config_entry and register_discovery_flow in con… ([@thecode] - [#118000])
+- Add models to energy sites in Teslemetry ([@Bre77] - [#117419])
+- Add snapshot tests to plaato ([@epenet] - [#118017])
+- Daikin Aircon - Add strings and debug ([@kingy444] - [#116674])
+- Add sequence action for automations & scripts ([@frenck] - [#117690])
+- Move plaato coordinator to separate module ([@epenet] - [#118019])
+- Use snapshot in renault diagnostics tests ([@epenet] - [#118021])
+- Migrate OpenWeaterMap to new library (support API 3.0) ([@freekode] - [#116870])
+- Add logging to SamsungTV turn-on ([@epenet] - [#117962])
+- Update typing-extensions to 4.12.0 ([@cdce8p] - [#118020])
+- Avoid calling split_entity_id in event add/remove filters ([@bdraco] - [#118015])
+- Improve callable annotations ([@cdce8p] - [#118024])
+- Fix partial typing ([@cdce8p] - [#118022])
+- Update codespell ignore list ([@cdce8p] - [#118018])
+- Fix issue with device_class.capitalize() in point ([@fredrike] - [#117969])
+- Add missing Ecovacs life spans ([@Ulfmerbold2000] - [#117134])
+- Add snapshot tests to nuki ([@epenet] - [#117973])
+- Add error message to snapshot_platform helper ([@epenet] - [#117974])
+- Catch client connection error in Honeywell ([@mkmer] - [#117502])
+- Convert namedtuple to NamedTuple for smartthings ([@autinerd] - [#115395])
+- Refactor Husqvarna Automower ([@Thomas55555] - [#117938])
+- Move nuki coordinator to separate module ([@epenet] - [#117975])
+- Move TibberDataCoordinator to separate module ([@epenet] - [#118027])
+- Create bound callback_message_received method for handling mqtt callbacks ([@jbouwh] - [#117951])
+- Add Cover platform to Teslemetry ([@Bre77] - [#117340])
+- Remove duplicate tests in generic_thermostat ([@esciara] - [#105622])
+- Improve error logging on invalid MQTT entity state ([@jbouwh] - [#118006])
+- Add APRS object tracking ([@PhilRW] - [#113080])
+- Make co/co2 threshold configurable via entity_config ([@FWeinb] - [#112978])
+- Add config flow to Jewish Calendar ([@yuvalabou] - [#84464])
+- Add json cache to lovelace config ([@bdraco] - [#117843])
+- Improve annotation styling ([@cdce8p] - [#118032])
+- Use issue_registry fixture in core tests ([@epenet] - [#118042])
+- Update Rachio hose timer battery sensor ([@brg468] - [#118045])
+- Rename MQTT mixin classes ([@jbouwh] - [#118039])
+- Remove strict connection ([@edenhaus] - [#117933])
+- Use issue_registry fixture in component tests ([@epenet] - [#118041])
+- Change ZoneInfo to async_get_time_zone in fyta ([@dontinelli] - [#117996])
+- Add types to event tracker data ([@bdraco] - [#118010])
+- Exclude gold and platinum integrations from .coveragerc ([@epenet] - [#117563])
+- Fix intent helper test ([@synesthesiam] - [#118053])
+- Require registered device id for all timer intents ([@synesthesiam] - [#117946])
+- Remove unneeded asserts ([@balloob] - [#118056])
+- Update OpenAI defaults ([@balloob] - [#118059])
+- Allow llm API to render dynamic template prompt ([@balloob] - [#118055])
+- Add tests to Zeversolar integration ([@NECH2004] - [#117928])
+- Refactor mqtt callbacks for alarm_control_panel ([@jbouwh] - [#118037])
+- Refactor mqtt callbacks for cover ([@jbouwh] - [#118044])
+- Add activity type to appropriate RainMachine switches ([@bachya] - [#117875])
+- Significantly speed up single use callback dispatchers ([@bdraco] - [#117934])
+- Refactor mqtt callbacks for climate and water_heater ([@jbouwh] - [#118040])
+- Move recorder chunk utils to shared collection utils ([@jbouwh] - [#118065])
+- Consequently ignore empty MQTT state payloads and set state to `unknown` on "None" payload ([@jbouwh] - [#117813])
+- Split mqtt subscribe and unsubscribe calls to smaller chunks ([@jbouwh] - [#118035])
+- Avoid generating matchers that will never be used in MQTT ([@bdraco] - [#118068])
+- Avoid catch_log_exception overhead in MQTT for simple callbacks ([@bdraco] - [#118036])
+- Reduce duplicate code to handle mqtt message replies ([@bdraco] - [#118067])
+- Use defaultdict instead of setdefault in mqtt client ([@bdraco] - [#118070])
+- Fix lingering mqtt test ([@jbouwh] - [#118072])
+- Google Generative AI: add timeout to ensure we don't block HA startup ([@tronikos] - [#118066])
+- Add Google Generative AI safety settings ([@tronikos] - [#117679])
+- Add user name and location to the LLM assist prompt ([@Shulyaka] - [#118071])
+- Add device info to Google ([@balloob] - [#118074])
+- Speed up is_template_string by avoiding regex engine ([@bdraco] - [#118076])
+- Remove OrderedDict from entity_values as dict guarantees order on newer cpython ([@bdraco] - [#118081])
+- Speed up async_render_with_possible_json_value ([@bdraco] - [#118080])
+- Avoid template context manager overhead when template is already compiled ([@bdraco] - [#118079])
+- Remove unused code in template helper ([@bdraco] - [#118075])
+- Convert remaining mqtt attrs classes to dataclasses ([@bdraco] - [#118073])
+- Add device info to OpenAI ([@balloob] - [#118077])
+- Fix default Google AI prompt on initial setup ([@balloob] - [#118078])
+- Add no-API LLM prompt back to Google ([@balloob] - [#118082])
+- Add recommended model options to OpenAI ([@balloob] - [#118083])
+- Update Google safety defaults to match Google ([@balloob] - [#118084])
+- Flip prompts to put user prompt on top ([@balloob] - [#118085])
+- Bump velbusaio to 2024.5.1 ([@Cereal2nd] - [#118091])
+- Speed up removing MQTT subscriptions ([@bdraco] - [#118088])
+- Store runtime data inside the config entry in Spotify ([@mib1185] - [#117037])
+- Store runtime data inside the config entry in Forecast Solar ([@mib1185] - [#117033])
+- Adjust title of integration sensor ([@elupus] - [#116954])
+- Bump pyenvisalink version to 4.7 ([@allistermaguire] - [#118086])
+- Simplify mqtt discovery cooldown calculation ([@bdraco] - [#118095])
+- Migrate firmata to use async_unload_platforms ([@bdraco] - [#118098])
+- Migrate vera to use async_unload_platforms ([@bdraco] - [#118099])
+- Migrate zha to use async_unload_platforms ([@bdraco] - [#118100])
+- Migrate zwave_js to use async_unload_platforms ([@bdraco] - [#118101])
+- Switch mqtt to use async_unload_platforms ([@bdraco] - [#118097])
+- Store Switcher runtime data in config entry ([@thecode] - [#118054])
+- Small speed up to mqtt _async_queue_subscriptions ([@bdraco] - [#118094])
+- Allow Meraki API v2 or v2.1 ([@nopoz] - [#115828])
+- Freeze and fix plaato CI tests ([@jbouwh] - [#118103])
+- Use PEP 695 type alias for ConfigEntry type in Spotify ([@mib1185] - [#118106])
+- Add device tracker platform to Teslemetry ([@Bre77] - [#117341])
+- Use PEP 695 type alias for ConfigEntry type in Forecast Solar ([@mib1185] - [#118107])
+- Improve nws tests by centralizing and removing unneeded `patch`ing ([@MatthewFlamm] - [#118052])
+- Google Generative AI: 100% test coverage for conversation ([@tronikos] - [#118112])
+- Remove deprecated services from AVM Fritz!Box Tools ([@mib1185] - [#118108])
+- Add diagnostics support for Fronius ([@farmio] - [#117845])
+- Fix mqtt callback typing ([@cdce8p] - [#118104])
+- Add conversation agent debug tracing ([@allenporter] - [#118124])
+- Break long strings in LLM tools ([@Shulyaka] - [#118114])
+- Reach platinum level in Minecraft Server ([@elmurato] - [#105432])
+- Fix mqtt callback exception logging ([@jbouwh] - [#118138])
+- Rework mqtt callbacks for device_tracker ([@jbouwh] - [#118110])
+- Rework mqtt callbacks for fan ([@jbouwh] - [#118115])
+- Refactor mqtt callbacks for humidifier ([@jbouwh] - [#118116])
+- Refactor mqtt callbacks for lock ([@jbouwh] - [#118118])
+- Refactor mqtt callbacks for lawn_mower ([@jbouwh] - [#118117])
+- Refactor mqtt callbacks for update platform ([@jbouwh] - [#118131])
+- Refactor mqtt callbacks for siren ([@jbouwh] - [#118125])
+- Refactor mqtt callbacks for number ([@jbouwh] - [#118119])
+- Refactor mqtt callbacks for select platform ([@jbouwh] - [#118121])
+- Refactor mqtt callbacks for text ([@jbouwh] - [#118130])
+- Refactor mqtt callbacks for switch ([@jbouwh] - [#118127])
+- Refactor mqtt callbacks for vacuum ([@jbouwh] - [#118137])
+- Rework mqtt callbacks for camera, image and event ([@jbouwh] - [#118109])
+- Refactor mqtt callbacks for light basic, json and template schema ([@jbouwh] - [#118113])
+- Clean up Shelly unneccesary async_block_till_done calls ([@thecode] - [#118141])
+- Make mqtt internal subscription a normal function ([@bdraco] - [#118092])
+- Refactor mqtt callbacks for valve ([@jbouwh] - [#118140])
+- Clean up WebOS TV unneccesary async_block_till_done calls ([@thecode] - [#118142])
+- Remove code that is no longer used in mqtt ([@bdraco] - [#118143])
+- Bump aioswitcher to 3.4.3 ([@thecode] - [#118123])
+- Avoid constructing mqtt json attrs template if its not defined ([@bdraco] - [#118146])
+- Add button platform to Teslemetry ([@Bre77] - [#117227])
+- Add media player platform to Teslemetry ([@Bre77] - [#117394])
+- Bump py-sucks to 0.9.10 ([@mib1185] - [#118148])
+- Add number platform to Teslemetry ([@Bre77] - [#117470])
+- Clean up AVM Fritz!Box Tools unneccesary async_block_till_done call ([@mib1185] - [#118165])
+- Clean up PIhole unneccesary async_block_till_done call ([@mib1185] - [#118166])
+- Bump subarulink to 0.7.11 ([@G-Two] - [#117743])
+- Improve script disallowed recursion logging ([@bdraco] - [#118151])
+- Add update platform to Teslemetry ([@Bre77] - [#118145])
+- Fix parallel script execution in queued mode ([@bdraco] - [#118153])
+- Don't crash when firing event for timer for unregistered device ([@balloob] - [#118132])
+- Speed up template result parsing ([@bdraco] - [#118168])
+- Avoid expensive inspection of callbacks to setup mqtt subscriptions ([@bdraco] - [#118161])
+- Reduce duplicate publish code in mqtt ([@bdraco] - [#118163])
+- Fix unnecessary calls to update entity display_precision ([@bdraco] - [#118159])
+- Add render prompt method when no API selected ([@balloob] - [#118136])
+- Add repair for detached addon issues ([@mdegat01] - [#118064])
+- Add async_get_hass_or_none ([@bdraco] - [#118164])
+- Avoid constructing mqtt availability template objects when there is no template ([@bdraco] - [#118171])
+- Remove remove unreachable code in async_wait_for_mqtt_client ([@jbouwh] - [#118172])
+- Collapse websocket_api _state_diff into _state_diff_event ([@bdraco] - [#118170])
+- Use fixtures to setup UniFi config entries ([@Kane610] - [#118126])
+- Upgrade thethingsnetwork to v3 ([@angelnu] - [#113375])
+- Add Google Generative AI reauth flow ([@tronikos] - [#118096])
+- Move Jewish calendar constants to const file ([@tsvi] - [#118180])
+- Bump holidays to 0.49 ([@gjohansson-ST] - [#118181])
+- Simplify subscription mqtt entity platforms ([@jbouwh] - [#118177])
+- Simplify mqtt connection state dispatcher ([@bdraco] - [#118184])
+- Move sensor mqtt state update functions to bound methods ([@bdraco] - [#118188])
+- Simplify mqtt switch state message processor ([@bdraco] - [#118187])
+- Promote Google Generative AI to platinum quality ([@tronikos] - [#118158])
+- Fix mqtt switch types ([@bdraco] - [#118193])
+- Forward timer events to Wyoming satellites ([@synesthesiam] - [#118128])
+- Fix flaky test in Teslemetry ([@Bre77] - [#118196])
+- Avoid creating template objects in mqtt sensor if they are not configured ([@bdraco] - [#118194])
+- Standardize LLM instructions prompt ([@balloob] - [#118195])
+- Convert mqtt entity discovery to use callbacks ([@bdraco] - [#118200])
+- Pre-set the HassJob job_type cached_property if its known ([@bdraco] - [#118199])
+- Add (deep)copy support to read only dict ([@balloob] - [#118204])
+- Remove unneeded dispatcher in mqtt discovery ([@bdraco] - [#118205])
+- Teach Context about deepcopy ([@balloob] - [#118206])
+- Improve performance of verify_event_loop_thread ([@bdraco] - [#118198])
+- Remove unneeded time fetch in mqtt discovery ([@bdraco] - [#118208])
+- Add exposed entities to the Assist LLM API prompt ([@balloob] - [#118203])
+- Fix thundering herd of mqtt component setup tasks ([@bdraco] - [#118210])
+- Remove extra inner function for mqtt reload service ([@bdraco] - [#118211])
+- Create EventEntity for Folder Watcher ([@gjohansson-ST] - [#116526])
+- Use config entry runtime data in Scrape ([@gjohansson-ST] - [#118191])
+- Eagerly remove MQTT entities on reload ([@bdraco] - [#118213])
+- Remove legacy mqtt debug_info implementation ([@bdraco] - [#118212])
+- Fix mqtt chunk subscribe logging ([@bdraco] - [#118217])
+- Increase MQTT incoming buffer to 8MiB ([@bdraco] - [#118220])
+- Refactor Twitch tests ([@joostlek] - [#114330])
+- Remove translation and icon component path functions ([@bdraco] - [#118214])
+- Add config flow to Media Extractor ([@joostlek] - [#115717])
+- Remove platform setup from Jewish calendar ([@joostlek] - [#118226])
+- Bump bimmer_connected to 0.15.3 ([@rikroe] - [#118179])
+- Implement reconfigure step for enphase_envoy ([@catsmanac] - [#115781])
+- Try to read multiple packets in MQTT ([@bdraco] - [#118222])
+- Fix unique_id not being unique in HomeWizard ([@DCSBL] - [#117940])
+- Add key expiry disabled binary sensor to Tailscale ([@claha] - [#117667])
+- Bump yt-dlp to 2024.05.26 ([@joostlek] - [#118229])
+- Remove platform sensor from Jewish Calendar binary sensor ([@tsvi] - [#118231])
+- Add Fyta sensor tests ([@dontinelli] - [#117995])
+- Allow older vehicles to sleep in Teslemetry ([@Bre77] - [#117229])
+- Use area_registry fixture in component tests ([@epenet] - [#118236])
+- Fix XMPP giving up on first auth fail ([@shelvacu] - [#118224])
+- Enforce namespace import in components ([@epenet] - [#118218])
+- Bump `nettigo_air_monitor` to version 3.1.0 ([@bieniu] - [#118227])
+- Add quality scale (platinum) to tedee integration ([@zweckj] - [#106940])
+- Enforce namespace import in core ([@epenet] - [#118235])
+- Convert Feedreader to use an update coordinator ([@mib1185] - [#118007])
+- Add helper strings for myuplink application credentials ([@astrandb] - [#115349])
+- Migrate tedee to `entry.runtime_data` ([@zweckj] - [#118246])
+- Add diagnostics for fyta ([@dontinelli] - [#118234])
+- Add entry.runtime_data typing for Teslemetry ([@gjohansson-ST] - [#118253])
+- Add new lock states to tedee integration ([@zweckj] - [#117108])
+- Cleanup tag integration ([@gjohansson-ST] - [#118241])
+- Fix mqtt not publishing null payload payload to remove discovery ([@jbouwh] - [#118261])
+- Handle multiple function_call and text parts in Google Generative AI ([@tronikos] - [#118270])
+- Align max expected entities constant between modules ([@bdraco] - [#118102])
+- Make sure HassToggle and HassSetPosition have description ([@tronikos] - [#118267])
+- Bump aioesphomeapi to 24.5.0 ([@jesserockz] - [#118271])
+- LLM Assist API: Inline all exposed entities ([@balloob] - [#118273])
+- Rewrite flow handler to flow result conversion as a list comp ([@bdraco] - [#118269])
+- Make sure conversation entities have correct name in list output ([@balloob] - [#118272])
+- Fix freezing on HA startup when there are multiple Google Generative AI config entries ([@tronikos] - [#118282])
+- Fix rooms not being matched correctly in sharkiq.clean_room ([@benaclejames] - [#118277])
+- Add diagnostics to Google Generative AI ([@tronikos] - [#118262])
+- Migrate mqtt discovery subscribes to use internal helper ([@bdraco] - [#118279])
+- Mock llm prompts in test_default_prompt for Google Generative AI ([@tronikos] - [#118286])
+- Change strings to const in Jewish Calendar ([@tsvi] - [#118274])
+- Bump aiovlc to 0.3.2 ([@mib1185] - [#118258])
+- Fix flakey bootstrap test ([@bdraco] - [#118285])
+- Use entry.runtime_data in Tessie ([@Bre77] - [#118287])
+- Add additional Huawei LTE 5G sensors ([@scop] - [#108928])
+- Fix some typing errors in Bring integration ([@tr4nt0r] - [#115641])
+- Add DSMR Reader tests ([@erwindouna] - [#115808])
+- Migrate mqtt mixin async_added_to_hass inner functions to bound methods ([@bdraco] - [#118280])
+- Add diagnostics test to AndroidTV ([@ollo69] - [#117129])
+- Add Matter fan platform ([@lboue] - [#111212])
+- Bump reolink-aio to 0.8.11 ([@starkillerOG] - [#118294])
+- Fix Matter device ID for non-bridged composed device ([@marcelveldt] - [#118256])
+- Use registry fixtures in tests (tailscale) ([@epenet] - [#118301])
+- Add reconfigure step for vallox ([@slovdahl] - [#115915])
+- Use registry fixtures in tests (a-h) ([@epenet] - [#118288])
+- Use registry fixtures in tests (m-n) ([@epenet] - [#118291])
+- Use registry fixtures in tests (o-p) ([@epenet] - [#118292])
+- Use registry fixtures in scaffold ([@epenet] - [#118308])
+- Use registry fixtures in tests (t-u) ([@epenet] - [#118297])
+- Use registry fixtures in tests (r) ([@epenet] - [#118293])
+- Use registry fixtures in tests (v-y) ([@epenet] - [#118299])
+- Thread: Add more Thread vendor to brand mappings ([@Poshy163] - [#115888])
+- Use registry fixtures in tests (s) ([@epenet] - [#118295])
+- Add more supervisor info to system info panel ([@mdegat01] - [#115715])
+- Handle generic commands as area commands in the LLM Assist API ([@balloob] - [#118276])
+- Don't set 'assist in progess' flag on wake_word-end ([@chatziko] - [#113585])
+- Enforce namespace use for import conventions ([@epenet] - [#118215])
+- Bump intents and add tests for new error messages ([@synesthesiam] - [#118317])
+- Use registry fixtures in tests (z) ([@epenet] - [#118300])
+- Add more type hints to pylint plugin ([@epenet] - [#118319])
+- Add temperature slot to light turn on intent ([@synesthesiam] - [#118321])
+- Respect WyomingSatelliteMuteSwitch state on start ([@synesthesiam] - [#118320])
+- [esphome] Assist timers ([@jesserockz] - [#118275])
+- Raise UpdateFailed on fyta API error ([@dontinelli] - [#118318])
+- Add platforms to intent handlers ([@synesthesiam] - [#118328])
+- Speed up mqtt debug info on message callback ([@bdraco] - [#118303])
+- Filter timers more when pausing/unpausing ([@synesthesiam] - [#118331])
+- Mark sonos group update a background task ([@bdraco] - [#118333])
+- [esphome] 100% voice assistant test coverage ([@jesserockz] - [#118334])
+- Use None default for traccar server battery level sensor ([@ludeeus] - [#118324])
+- Several fixes for the Matter climate platform ([@marcelveldt] - [#118322])
+- Fix source_change not triggering an update ([@mj23000] - [#118312])
+- Update the recommended model for Google Gen AI ([@balloob] - [#118323])
+- Use del instead of pop in the entity platform remove ([@bdraco] - [#118337])
+- Replace pop calls with del where the result is discarded in mqtt ([@bdraco] - [#118338])
+- Replace pop calls with del where the result is discarded in entity ([@bdraco] - [#118340])
+- LLM Assist API to ignore intents if not needed for exposed entities or calling device ([@balloob] - [#118283])
+- Add Conversation command to timers ([@synesthesiam] - [#118325])
+- Tweak Assist LLM API prompt ([@balloob] - [#118343])
+- Small speed up to connecting dispatchers ([@bdraco] - [#118342])
+- Reduce the intent response data sent to LLMs ([@balloob] - [#118346])
+- Add cache to more complex entity filters ([@bdraco] - [#118344])
+- Improve websocket message coalescing to handle thundering herds better ([@bdraco] - [#118268])
+- Replace pop calls with del where the result is discarded in restore_state ([@bdraco] - [#118339])
+- Fix last_reported_timestamp not being updated when last_reported is changed ([@bdraco] - [#118341])
+- Use runtime_data in ping ([@jpbede] - [#118332])
+- Fix epic_games_store mystery game URL ([@Quentame] - [#118314])
+- Add smoke detector temperature to Yale Smart Alarm ([@gjohansson-ST] - [#116306])
+- Add august open action ([@m10x] - [#113795])
+- Add OSO Energy binary sensors ([@osohotwateriot] - [#117174])
+- Update zwave_js WS APIs for provisioning ([@raman325] - [#117400])
+- Improve typing for `calls` fixture in tests (a-l) ([@epenet] - [#118349])
+- Add ws endpoint to remove expiration date from refresh tokens ([@edenhaus] - [#117546])
+- Bump docker/login-action from 3.1.0 to 3.2.0 (@dependabot - [#118351])
+- Add Google assistant Gate device type ([@Bygood91] - [#118144])
+- Make Recorder dialect_name a cached_property ([@bdraco] - [#117922])
+- Rename calls fixture in calendar tests ([@epenet] - [#118353])
+- Rename calls fixture in mqtt tests ([@epenet] - [#118354])
+- Rename calls fixture in components tests ([@epenet] - [#118355])
+- Improve typing for `calls` fixture in tests (m-z) ([@epenet] - [#118350])
+- Adjust add-on installation error message ([@agners] - [#118309])
+- Rename service_calls fixture in template tests ([@epenet] - [#118358])
+- Add more tests to Yale Smart Alarm ([@gjohansson-ST] - [#116501])
+- Add DSMR Reader icons ([@erwindouna] - [#118329])
+- Add default code to alarm_control_panel ([@gjohansson-ST] - [#112540])
+- Discover new device at runtime in Plugwise ([@bouwew] - [#117688])
+- Allow MQTT device based auto discovery ([@jbouwh] - [#109030])
+- Extend image_upload to return the original image ([@Nezz] - [#116652])
+- Update pylaunches dependency to version 2.0.0 ([@ludeeus] - [#118362])
+- Set quality scale of fyta to platinum ([@dontinelli] - [#118307])
+- Fix issue when you have multiple Google Generative AI config entries and you remove one of them ([@tronikos] - [#118365])
+- Support in blueprint schema for input sections ([@karwosts] - [#110513])
+- Expose useful media player attributes to LLMs ([@tronikos] - [#118363])
+- Fix LLM tracing for Google Generative AI ([@tronikos] - [#118359])
+- Ask LLM to pass area name and domain ([@tronikos] - [#118357])
+- Default to gemini-1.5-flash-latest in Google Generative AI ([@tronikos] - [#118367])
+- Add LogCaptureFixture type hints in tests ([@epenet] - [#118372])
+- Add SnapshotAssertion type hints in tests ([@epenet] - [#118371])
+- Bump pyosoenergyapi to 1.1.4 ([@osohotwateriot] - [#118368])
+- Add AiohttpClientMocker type hints in tests ([@epenet] - [#118373])
+- Add ClientSessionGenerator type hints in tests ([@epenet] - [#118377])
+- Bump yt-dlp to 2024.05.27 ([@joostlek] - [#118378])
+- Add Android TV Remote debug logs to help with zeroconf issue ([@tronikos] - [#117960])
+- Rework and simplify the cleanup of orphan AVM Fritz!Tools entities ([@mib1185] - [#117706])
+- Convert unnecessary coroutines into functions ([@mj23000] - [#118311])
+- Bump ruff to 0.4.6 ([@autinerd] - [#118384])
+- Entity for Tags ([@gjohansson-ST] - [#115048])
+- Bump airgradient to 0.4.2 ([@joostlek] - [#118389])
+- Allow delayed commands to not have a device id ([@synesthesiam] - [#118390])
+- Bump frontend to 20240529.0 ([@bramkragten] - [#118392])
+- Bump Python Matter Server library to 6.1.0(b0) ([@marcelveldt] - [#118388])
+- Bump zha-quirks to 0.0.116 ([@TheJulianJES] - [#118393])
+- Add select entities to AirGradient ([@joostlek] - [#117136])
+- New official genie garage integration ([@swcloudgenie] - [#117020])
+- Add translation strings for Matter Fan presets ([@marcelveldt] - [#118401])
+- Fix light discovery for Matter dimmable plugin unit ([@marcelveldt] - [#118404])
+- Handle case where timer device id exists but is not registered (delayed command) ([@synesthesiam] - [#118410])
+- Ensure paho.mqtt.client is imported in the executor ([@bdraco] - [#118412])
+- Fix google_tasks doing blocking I/O in the event loop ([@bdraco] - [#118418])
+- Fix google_mail doing blocking I/O in the event loop ([@bdraco] - [#118421])
+- Fix workday doing blocking I/O in the event loop ([@bdraco] - [#118422])
+- Fix OpenWeatherMap migration ([@freekode] - [#118428])
+- Fix blocking I/O in the event loop in meteo_france ([@bdraco] - [#118429])
+- Bump opower to 0.4.6 ([@tronikos] - [#118434])
+- Fix google_mail doing blocking i/o in the event loop (take 2) ([@bdraco] - [#118441])
+- Add Total Volatile Organic Compounds (tVOC) matter discovery schema ([@kibergus] - [#116963])
+- Improve LLM prompt ([@tronikos] - [#118443])
+- Instruct LLM to not pass a list to the domain ([@tronikos] - [#118451])
+- Bump deebot-client to 7.3.0 ([@edenhaus] - [#118462])
+- Raise `ConfigEntryNotReady` when there is no `_id` in the Tractive data ([@bieniu] - [#118467])
+- Typo fix in media_extractor ([@lunmay] - [#118473])
+- Set enity_category to config for airgradient select entities ([@edenhaus] - [#118477])
+- Extend Matter sensor discovery schemas for Air Purifier / Air Quality devices ([@marcelveldt] - [#118483])
+- Mark Matter climate dry/fan mode support on Panasonic AC ([@marcelveldt] - [#118485])
+- Update frontend to 20240530.0 ([@bramkragten] - [#118489])
+- Adjustment of unit of measurement for light ([@dontinelli] - [#116695])
+- Add support for V2C Trydan 2.1.7 ([@dgomes] - [#117147])
+- Fix Jewish calendar unique id's ([@tsvi] - [#117985])
+- Log aiohttp error in rest_command ([@jpbede] - [#118453])
+- Fix evohome so it doesn't retrieve schedules unnecessarily ([@zxdavb] - [#118478])
+- Ignore the toggle intent ([@balloob] - [#118491])
+- Fix blocking call in holiday ([@gjohansson-ST] - [#118496])
+- Remove not needed hass object from Tag ([@gjohansson-ST] - [#118498])
+- Fix group platform dependencies ([@jbouwh] - [#118499])
+- Intent script: allow setting description and platforms ([@balloob] - [#118500])
+- Fix tado non-string unique id for device trackers ([@gjohansson-ST] - [#118505])
+- Fix key issue in config entry options in Openweathermap ([@gjohansson-ST] - [#118506])
+- Ignore deprecated open and close cover intents for LLMs ([@tronikos] - [#118515])
+- Fix LLMs asking which area when there is only one device ([@tronikos] - [#118518])
+- Improve LLM prompt ([@tronikos] - [#118520])
+- Fix unnecessary single quotes escaping in Google AI ([@tronikos] - [#118522])
+- Rename llm.ToolContext to llm.LLMContext ([@balloob] - [#118566])
+- Revert "Fix Tibber sensors state class" ([@basbruss] - [#118409])
+- Add Google Generative AI Conversation system prompt `user_name` and `llm_context` variables ([@Shulyaka] - [#118510])
+- Add typing for OpenAI client and fallout ([@zweckj] - [#118514])
+- Add OpenAI Conversation system prompt `user_name` and `llm_context` variables ([@Shulyaka] - [#118512])
+- Fix snmp doing blocking I/O in the event loop ([@bdraco] - [#118521])
+- Fix openweathermap config entry migration ([@bdraco] - [#118526])
+- Fix telegram doing blocking I/O in the event loop ([@luca-angemi] - [#118531])
+- Fix off_grid_vehicle_charging_reserve_percent in Teselemetry ([@Bre77] - [#118532])
+- Migrate openai_conversation to `entry.runtime_data` ([@zweckj] - [#118535])
+- Fix typo in OWM strings ([@joostlek] - [#118538])
+- Fix YAML deprecation breaking version in jewish calendar and media extractor ([@tsvi] - [#118546])
+- Fix KeyError in dlna_dmr SSDP config flow when checking existing config entries ([@chishm] - [#118549])
+- In Brother integration use SnmpEngine from SNMP integration ([@bieniu] - [#118554])
+- Add ability to replace connections in DeviceRegistry ([@epenet] - [#118555])
+- Fix openAI tool calls ([@balloob] - [#118577])
+- Ignore myuplink sensors without a description that provide non-numeric values ([@thytterdal] - [#115525])
+- Bump pyads to 3.4.0 ([@mrpasztoradam] - [#116934])
+- Update device connections in samsungtv ([@epenet] - [#118556])
+- Run ruff format for device registry ([@jpbede] - [#118582])
+- Avoid future exception during setup of Synology DSM ([@mib1185] - [#118583])
+- Stop instructing LLM to not pass the domain as a list ([@tronikos] - [#118590])
+- Add base prompt for LLMs ([@balloob] - [#118592])
+- Strip Google AI text responses ([@tronikos] - [#118593])
+- Use gemini-1.5-flash-latest in google_generative_ai_conversation.generate_content ([@tronikos] - [#118594])
+- Fix telegram bot send_document ([@luca-angemi] - [#118616])
+- Include a traceback for non-strict event loop blocking detection ([@bdraco] - [#118620])
+- Fix handling undecoded mqtt sensor payloads ([@jbouwh] - [#118633])
+- Fix incorrect placeholder in SharkIQ ([@joostlek] - [#118640])
+- Bump ZHA dependencies ([@puddly] - [#118658])
+- Fix entity state dispatching for Tag entities ([@gjohansson-ST] - [#118662])
+- Address late review comment in samsungtv ([@epenet] - [#118539])
+- Bump pydrawise to 2024.6.2 ([@dknowles2] - [#118608])
+- Automatically fill in slots based on LLM context ([@balloob] - [#118619])
+- Revert "Add websocket API to get list of recorded entities (#92640)" ([@bdraco] - [#118644])
+- Fixing device model compatibility issues. ([@matrixd2] - [#118686])
+- Bump python-roborock to 2.2.2 ([@piitaya] - [#118697])
+- Configure device in airgradient config flow ([@joostlek] - [#118699])
+- Disable both option in Airgradient select ([@joostlek] - [#118702])
+- Bump pyoverkiz to 1.13.11 ([@iMicknl] - [#118703])
+- Use ISO format when passing date to LLMs ([@tronikos] - [#118705])
+- Don't store tag_id in tag storage ([@emontnemery] - [#118707])
+- Remove unintended translation key from blink ([@mkmer] - [#118712])
+- Remove tag_id from tag store ([@emontnemery] - [#118713])
+- Address reviews comments in #117147 ([@dgomes] - [#118714])
+- Bump renault-api to 0.2.3 ([@epenet] - [#118718])
+- Tweak light service schema ([@emontnemery] - [#118720])
+- Rename Discovergy to inexogy ([@jpbede] - [#118724])
+- Resolve areas/floors to ids in intent_script ([@synesthesiam] - [#118734])
+- Update frontend to 20240603.0 ([@bramkragten] - [#118736])
+- Require firmware version 3.1.1 for airgradient ([@joostlek] - [#118744])
+- Remove dispatcher from Tag entity ([@balloob] - [#118671])
+- Harden evohome against failures to retrieve zone schedules ([@zxdavb] - [#118517])
+- Bump reolink-aio to 0.9.1 ([@starkillerOG] - [#118655])
+- Google Gen AI: Copy messages to avoid changing the trace data ([@balloob] - [#118745])
+- Revert "Allow MQTT device based auto discovery" ([@jbouwh] - [#118746])
+- Update OpenAI prompt on each interaction ([@balloob] - [#118747])
+- Bump intents to 2024.6.3 ([@synesthesiam] - [#118748])
+- Do not log mqtt origin info if the log level does not allow it ([@jbouwh] - [#118752])
+- Clean up exposed domains ([@synesthesiam] - [#118753])
+- Recover mqtt abbrevations optimizations ([@jbouwh] - [#118762])
+- Update hass-nabucasa to version 0.81.1 ([@ludeeus] - [#118768])
+- Bump airgradient to 0.4.3 ([@joostlek] - [#118776])
+- Initial cleanup for Aladdin connect ([@joostlek] - [#118777])
+- Use model from Aladdin Connect lib ([@joostlek] - [#118778])
+- Add coordinator to Aladdin Connect ([@joostlek] - [#118781])
+- Re-enable sensor platform for Aladdin Connect ([@joostlek] - [#118782])
+- Move Aladdin stale device removal to init module ([@joostlek] - [#118784])
+- Refactor fixture calling for BMW tests ([@rikroe] - [#118708])
+- Set lock state to unkown on BMW API error ([@rikroe] - [#118559])
+- Use snapshot_platform helper for BMW tests ([@rikroe] - [#118735])
+- Allow per-sensor unit conversion on BMW sensors ([@rikroe] - [#110272])
+- Fix calculation of Starlink sleep end setting ([@boswelja] - [#115507])
+- Fix updating options in Jewish Calendar ([@tsvi] - [#118643])
+- Include script description in LLM exposed entities ([@balloob] - [#118749])
+- Set unique id in aladdin connect config flow ([@joostlek] - [#118798])
+- Add missing FAN_ONLY mode to ccm15 ([@arturyak] - [#118804])
+- Check if Shelly `entry.runtime_data` is available ([@bieniu] - [#118805])
+- Bump Python Matter Server library to 6.1.0 ([@agners] - [#118806])
+- Update frontend to 20240604.0 ([@bramkragten] - [#118811])
+- Ensure name of task is logged for unhandled loop exceptions ([@bdraco] - [#118822])
+- Initialize the Sentry SDK within an import executor job to not block event loop ([@jpbede] - [#118830])
+- Fix Hydrawise sensor availability ([@PeteRager] - [#118669])
+- Conserve Reolink battery by not waking the camera on each update ([@starkillerOG] - [#118773])
+- Fix capitalization of protocols in Reolink option flow ([@frenck] - [#118839])
+- Fix the radio browser doing I/O in the event loop ([@balloob] - [#118842])
+- Bump python-roborock to 2.2.3 ([@ethemcemozkan] - [#118853])
+- Improve repair issue when notify service is still being used ([@jbouwh] - [#118855])
+- Fix TypeAliasType not callable in senz ([@cdce8p] - [#118872])
+- Update frontend to 20240605.0 ([@bramkragten] - [#118875])
+- Improve WS command validate_config ([@emontnemery] - [#118864])
+- Bump intents to 2024.6.5 ([@synesthesiam] - [#118890])
+- Replace slave by meter in v2c ([@edenhaus] - [#118893])
+
+## Release 2024.6.1 - June 7
+
+- Update requests to 2.32.3 ([@cdce8p] - [#118868])
+- Prioritize literal text with name slots in sentence matching ([@synesthesiam] - [#118900])
+- Check if imap message text has a value instead of checking if its not None ([@engrbm87] - [#118901])
+- Fix flaky Google Assistant test ([@jpbede] - [#118914])
+- Revert "Bump orjson to 3.10.3 (#116945)" ([@bdraco] - [#118920])
+- Bump `imgw-pib` backend library to version `1.0.2` ([@bieniu] - [#118953])
+- Fix Alarm control panel not require code in several integrations ([@gjohansson-ST] - [#118961])
+- Bump python-holidays to 0.50 ([@gjohansson-ST] - [#118965])
+- Bump pydrawise to 2024.6.3 ([@dknowles2] - [#118977])
+- Bump `imgw-pib` library to version `1.0.4` ([@bieniu] - [#118978])
+- Fix unit of measurement for airgradient sensor ([@joostlek] - [#118981])
+- Fix exposure checks on some intents ([@synesthesiam] - [#118988])
+- Remove isal from after_dependencies in http ([@bdraco] - [#119000])
+- Hold connection lock in Shelly RPC reconnect ([@thecode] - [#119009])
+- Always have addon url in detached_addon_missing ([@mdegat01] - [#119011])
+- Increase test coverage for KNX Climate ([@farmio] - [#117903])
+- Fix KNX `climate.set_hvac_mode` not turning `on` ([@farmio] - [#119012])
+- Fix refactoring error in snmp switch ([@bdraco] - [#119028])
+- Fix remember_the_milk calling configurator async api from the wrong thread ([@bdraco] - [#119029])
+- Fix AirGradient name ([@joostlek] - [#119046])
+- Add type ignore comments ([@cdce8p] - [#119052])
+- Fix Azure Data Explorer strings ([@joostlek] - [#119067])
+
+[#117903]: https://github.com/home-assistant/core/pull/117903
+[#118400]: https://github.com/home-assistant/core/pull/118400
+[#118868]: https://github.com/home-assistant/core/pull/118868
+[#118900]: https://github.com/home-assistant/core/pull/118900
+[#118901]: https://github.com/home-assistant/core/pull/118901
+[#118914]: https://github.com/home-assistant/core/pull/118914
+[#118920]: https://github.com/home-assistant/core/pull/118920
+[#118953]: https://github.com/home-assistant/core/pull/118953
+[#118961]: https://github.com/home-assistant/core/pull/118961
+[#118965]: https://github.com/home-assistant/core/pull/118965
+[#118977]: https://github.com/home-assistant/core/pull/118977
+[#118978]: https://github.com/home-assistant/core/pull/118978
+[#118981]: https://github.com/home-assistant/core/pull/118981
+[#118988]: https://github.com/home-assistant/core/pull/118988
+[#119000]: https://github.com/home-assistant/core/pull/119000
+[#119009]: https://github.com/home-assistant/core/pull/119009
+[#119011]: https://github.com/home-assistant/core/pull/119011
+[#119012]: https://github.com/home-assistant/core/pull/119012
+[#119028]: https://github.com/home-assistant/core/pull/119028
+[#119029]: https://github.com/home-assistant/core/pull/119029
+[#119046]: https://github.com/home-assistant/core/pull/119046
+[#119052]: https://github.com/home-assistant/core/pull/119052
+[#119067]: https://github.com/home-assistant/core/pull/119067
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@cdce8p]: https://github.com/cdce8p
+[@dknowles2]: https://github.com/dknowles2
+[@engrbm87]: https://github.com/engrbm87
+[@farmio]: https://github.com/farmio
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@joostlek]: https://github.com/joostlek
+[@jpbede]: https://github.com/jpbede
+[@mdegat01]: https://github.com/mdegat01
+[@synesthesiam]: https://github.com/synesthesiam
+[@thecode]: https://github.com/thecode
+
+## Release 2024.6.2 - June 11
+
+- Fix statistic_during_period wrongly prioritizing ST statistics over LT ([@karwosts] - [#115291])
+- Bump pyElectra to 1.2.1 ([@rubeecube] - [#118958])
+- Update gardena library to 1.4.2 ([@elupus] - [#119010])
+- Calculate attributes when entity information available in Group sensor ([@gjohansson-ST] - [#119021])
+- Bump google-generativeai to 0.6.0 ([@tronikos] - [#119062])
+- Fix Azure data explorer ([@kaareseras] - [#119089])
+- Ensure multiple executions of a restart automation in the same event loop iteration are allowed ([@bdraco] - [#119100])
+- Fix control 4 on os 2 ([@adrum] - [#119104])
+- Properly handle escaped unicode characters passed to tools in Google Generative AI ([@tronikos] - [#119117])
+- Catch GoogleAPICallError in Google Generative AI ([@tronikos] - [#119118])
+- Bump aioshelly to 10.0.1 ([@thecode] - [#119123])
+- Bump aiowaqi to 3.1.0 ([@joostlek] - [#119124])
+- Ensure intent tools have safe names ([@balloob] - [#119144])
+- Fix workday timezone ([@TomBrien] - [#119148])
+- Bump py-synologydsm-api to 2.4.4 ([@mib1185] - [#119156])
+- Use more conservative timeout values in Synology DSM ([@mib1185] - [#119169])
+- Handle Shelly BLE errors during connect and disconnect ([@thecode] - [#119174])
+- Fix elgato light color detection ([@LapsTimeOFF] - [#119177])
+- Bump opower to 0.4.7 ([@tronikos] - [#119183])
+- Add fallback to entry_id when no mac address is retrieved in enigma2 ([@autinerd] - [#119185])
+- Fix envisalink alarm ([@gjohansson-ST] - [#119212])
+- Fixes crashes when receiving malformed decoded payloads ([@angelnu] - [#119216])
+- Fix Glances v4 network and container issues (glances-api 0.8.0) ([@wittypluck] - [#119226])
+- Bump python-roborock to 2.3.0 ([@ethemcemozkan] - [#119228])
+- Revert SamsungTV migration ([@epenet] - [#119234])
+- Always provide a currentArmLevel in Google assistant ([@elupus] - [#119238])
+- Remove myself as codeowner for unifiprotect ([@bdraco] - [#118824])
+- Switch unifiprotect lib to use uiprotect ([@bdraco] - [#119243])
+- Fix wrong arg name in Idasen Desk config flow ([@abmantis] - [#119247])
+- Fix climate on/off in nexia ([@bdraco] - [#119254])
+- Bump google-nest-sdm to 4.0.5 ([@allenporter] - [#119255])
+- Bump uiprotect to 0.4.0 ([@bdraco] - [#119256])
+- Improve workday test coverage ([@bdraco] - [#119259])
+- Fix persistence on OpenWeatherMap raised repair issue ([@frenck] - [#119289])
+- Bump uiprotect to 0.4.1 ([@bdraco] - [#119308])
+- Add more debug logging to Ping integration ([@jpbede] - [#119318])
+- Update frontend to 20240610.0 ([@bramkragten] - [#119320])
+- Fix statistic_during_period after core restart ([@emontnemery] - [#119323])
+- Fix AladdinConnect OAuth domain ([@swcloudgenie] - [#119336])
+- Bump `imgw-pib` backend library to version 1.0.5 ([@bieniu] - [#119360])
+
+[#115291]: https://github.com/home-assistant/core/pull/115291
+[#118400]: https://github.com/home-assistant/core/pull/118400
+[#118824]: https://github.com/home-assistant/core/pull/118824
+[#118958]: https://github.com/home-assistant/core/pull/118958
+[#119010]: https://github.com/home-assistant/core/pull/119010
+[#119021]: https://github.com/home-assistant/core/pull/119021
+[#119062]: https://github.com/home-assistant/core/pull/119062
+[#119089]: https://github.com/home-assistant/core/pull/119089
+[#119096]: https://github.com/home-assistant/core/pull/119096
+[#119100]: https://github.com/home-assistant/core/pull/119100
+[#119104]: https://github.com/home-assistant/core/pull/119104
+[#119117]: https://github.com/home-assistant/core/pull/119117
+[#119118]: https://github.com/home-assistant/core/pull/119118
+[#119123]: https://github.com/home-assistant/core/pull/119123
+[#119124]: https://github.com/home-assistant/core/pull/119124
+[#119144]: https://github.com/home-assistant/core/pull/119144
+[#119148]: https://github.com/home-assistant/core/pull/119148
+[#119156]: https://github.com/home-assistant/core/pull/119156
+[#119169]: https://github.com/home-assistant/core/pull/119169
+[#119174]: https://github.com/home-assistant/core/pull/119174
+[#119177]: https://github.com/home-assistant/core/pull/119177
+[#119183]: https://github.com/home-assistant/core/pull/119183
+[#119185]: https://github.com/home-assistant/core/pull/119185
+[#119212]: https://github.com/home-assistant/core/pull/119212
+[#119216]: https://github.com/home-assistant/core/pull/119216
+[#119226]: https://github.com/home-assistant/core/pull/119226
+[#119228]: https://github.com/home-assistant/core/pull/119228
+[#119234]: https://github.com/home-assistant/core/pull/119234
+[#119238]: https://github.com/home-assistant/core/pull/119238
+[#119243]: https://github.com/home-assistant/core/pull/119243
+[#119247]: https://github.com/home-assistant/core/pull/119247
+[#119254]: https://github.com/home-assistant/core/pull/119254
+[#119255]: https://github.com/home-assistant/core/pull/119255
+[#119256]: https://github.com/home-assistant/core/pull/119256
+[#119259]: https://github.com/home-assistant/core/pull/119259
+[#119289]: https://github.com/home-assistant/core/pull/119289
+[#119308]: https://github.com/home-assistant/core/pull/119308
+[#119318]: https://github.com/home-assistant/core/pull/119318
+[#119320]: https://github.com/home-assistant/core/pull/119320
+[#119323]: https://github.com/home-assistant/core/pull/119323
+[#119336]: https://github.com/home-assistant/core/pull/119336
+[#119360]: https://github.com/home-assistant/core/pull/119360
+[@LapsTimeOFF]: https://github.com/LapsTimeOFF
+[@TomBrien]: https://github.com/TomBrien
+[@abmantis]: https://github.com/abmantis
+[@adrum]: https://github.com/adrum
+[@allenporter]: https://github.com/allenporter
+[@angelnu]: https://github.com/angelnu
+[@autinerd]: https://github.com/autinerd
+[@balloob]: https://github.com/balloob
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bramkragten]: https://github.com/bramkragten
+[@elupus]: https://github.com/elupus
+[@emontnemery]: https://github.com/emontnemery
+[@epenet]: https://github.com/epenet
+[@ethemcemozkan]: https://github.com/ethemcemozkan
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@joostlek]: https://github.com/joostlek
+[@jpbede]: https://github.com/jpbede
+[@kaareseras]: https://github.com/kaareseras
+[@karwosts]: https://github.com/karwosts
+[@mib1185]: https://github.com/mib1185
+[@rubeecube]: https://github.com/rubeecube
+[@swcloudgenie]: https://github.com/swcloudgenie
+[@thecode]: https://github.com/thecode
+[@tronikos]: https://github.com/tronikos
+[@wittypluck]: https://github.com/wittypluck
+
+## Release 2024.6.3 - June 15
+
+- Make remaining time of timers available to LLMs ([@tronikos] - [#118696])
+- Bump uiprotect to 0.10.1 ([@bdraco] - [#119327])
+- Bump uiprotect to 0.13.0 ([@bdraco] - [#119344])
+- Bump uiprotect to 1.0.0 ([@bdraco] - [#119415])
+- Fix incorrect key name in unifiprotect options strings ([@bdraco] - [#119417])
+- Bump buieradar to 1.0.6 ([@mjj4791] - [#119433])
+- Bump uiprotect to v1.0.1 ([@ep1cman] - [#119436])
+- Bump uiprotect to 1.1.0 ([@bdraco] - [#119449])
+- Add loggers to gardena bluetooth ([@elupus] - [#119460])
+- Revert Use integration fallback configuration for tado water heater fallback ([@erwindouna] - [#119466])
+- Partially revert "Add more debug logging to Ping integration" ([@jpbede] - [#119487])
+- Revert "Revert Use integration fallback configuration for tado water fallback" ([@ethemcemozkan] - [#119526])
+- Fix error for Reolink snapshot streams ([@starkillerOG] - [#119572])
+- Bump uiprotect to 1.2.1 ([@bdraco] - [#119620])
+- Fix group enabled platforms are preloaded if they have alternative states ([@jbouwh] - [#119621])
+- Update frontend to 20240610.1 ([@piitaya] - [#119634])
+- Soften unifiprotect EA channel message ([@bdraco] - [#119641])
+- Bump goodwe to 0.3.6 ([@mletenay] - [#119646])
+- Bump uiprotect to 1.4.1 ([@bdraco] - [#119653])
+- Bump uiprotect to 1.6.0 ([@bdraco] - [#119661])
+- Fix alarm default code in concord232 ([@gjohansson-ST] - [#119691])
+- Bump uiprotect to 1.7.1 ([@bdraco] - [#119694])
+- Bump uiprotect to 1.7.2 ([@bdraco] - [#119705])
+- Bump ZHA dependencies ([@TheJulianJES] - [#119713])
+- Ensure UniFi Protect EA warning is not persistent ([@frenck] - [#119730])
+- Ensure workday issues are not persistent ([@frenck] - [#119732])
+
+[#118400]: https://github.com/home-assistant/core/pull/118400
+[#118696]: https://github.com/home-assistant/core/pull/118696
+[#119096]: https://github.com/home-assistant/core/pull/119096
+[#119327]: https://github.com/home-assistant/core/pull/119327
+[#119344]: https://github.com/home-assistant/core/pull/119344
+[#119376]: https://github.com/home-assistant/core/pull/119376
+[#119415]: https://github.com/home-assistant/core/pull/119415
+[#119417]: https://github.com/home-assistant/core/pull/119417
+[#119433]: https://github.com/home-assistant/core/pull/119433
+[#119436]: https://github.com/home-assistant/core/pull/119436
+[#119449]: https://github.com/home-assistant/core/pull/119449
+[#119460]: https://github.com/home-assistant/core/pull/119460
+[#119466]: https://github.com/home-assistant/core/pull/119466
+[#119487]: https://github.com/home-assistant/core/pull/119487
+[#119526]: https://github.com/home-assistant/core/pull/119526
+[#119572]: https://github.com/home-assistant/core/pull/119572
+[#119620]: https://github.com/home-assistant/core/pull/119620
+[#119621]: https://github.com/home-assistant/core/pull/119621
+[#119634]: https://github.com/home-assistant/core/pull/119634
+[#119641]: https://github.com/home-assistant/core/pull/119641
+[#119646]: https://github.com/home-assistant/core/pull/119646
+[#119653]: https://github.com/home-assistant/core/pull/119653
+[#119661]: https://github.com/home-assistant/core/pull/119661
+[#119691]: https://github.com/home-assistant/core/pull/119691
+[#119694]: https://github.com/home-assistant/core/pull/119694
+[#119705]: https://github.com/home-assistant/core/pull/119705
+[#119713]: https://github.com/home-assistant/core/pull/119713
+[#119730]: https://github.com/home-assistant/core/pull/119730
+[#119732]: https://github.com/home-assistant/core/pull/119732
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@bdraco]: https://github.com/bdraco
+[@elupus]: https://github.com/elupus
+[@ep1cman]: https://github.com/ep1cman
+[@erwindouna]: https://github.com/erwindouna
+[@ethemcemozkan]: https://github.com/ethemcemozkan
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@jbouwh]: https://github.com/jbouwh
+[@jpbede]: https://github.com/jpbede
+[@mjj4791]: https://github.com/mjj4791
+[@mletenay]: https://github.com/mletenay
+[@piitaya]: https://github.com/piitaya
+[@starkillerOG]: https://github.com/starkillerOG
+[@tronikos]: https://github.com/tronikos
+
+[#101731]: https://github.com/home-assistant/core/pull/101731
+[#101786]: https://github.com/home-assistant/core/pull/101786
+[#103844]: https://github.com/home-assistant/core/pull/103844
+[#105432]: https://github.com/home-assistant/core/pull/105432
+[#105622]: https://github.com/home-assistant/core/pull/105622
+[#106940]: https://github.com/home-assistant/core/pull/106940
+[#107078]: https://github.com/home-assistant/core/pull/107078
+[#107404]: https://github.com/home-assistant/core/pull/107404
+[#107510]: https://github.com/home-assistant/core/pull/107510
+[#107592]: https://github.com/home-assistant/core/pull/107592
+[#108170]: https://github.com/home-assistant/core/pull/108170
+[#108896]: https://github.com/home-assistant/core/pull/108896
+[#108928]: https://github.com/home-assistant/core/pull/108928
+[#109030]: https://github.com/home-assistant/core/pull/109030
+[#109043]: https://github.com/home-assistant/core/pull/109043
+[#109337]: https://github.com/home-assistant/core/pull/109337
+[#109508]: https://github.com/home-assistant/core/pull/109508
+[#109884]: https://github.com/home-assistant/core/pull/109884
+[#109920]: https://github.com/home-assistant/core/pull/109920
+[#110247]: https://github.com/home-assistant/core/pull/110247
+[#110272]: https://github.com/home-assistant/core/pull/110272
+[#110475]: https://github.com/home-assistant/core/pull/110475
+[#110513]: https://github.com/home-assistant/core/pull/110513
+[#110612]: https://github.com/home-assistant/core/pull/110612
+[#110924]: https://github.com/home-assistant/core/pull/110924
+[#111014]: https://github.com/home-assistant/core/pull/111014
+[#111152]: https://github.com/home-assistant/core/pull/111152
+[#111212]: https://github.com/home-assistant/core/pull/111212
+[#111426]: https://github.com/home-assistant/core/pull/111426
+[#111643]: https://github.com/home-assistant/core/pull/111643
+[#111942]: https://github.com/home-assistant/core/pull/111942
+[#111968]: https://github.com/home-assistant/core/pull/111968
+[#112076]: https://github.com/home-assistant/core/pull/112076
+[#112206]: https://github.com/home-assistant/core/pull/112206
+[#112480]: https://github.com/home-assistant/core/pull/112480
+[#112523]: https://github.com/home-assistant/core/pull/112523
+[#112540]: https://github.com/home-assistant/core/pull/112540
+[#112660]: https://github.com/home-assistant/core/pull/112660
+[#112862]: https://github.com/home-assistant/core/pull/112862
+[#112885]: https://github.com/home-assistant/core/pull/112885
+[#112978]: https://github.com/home-assistant/core/pull/112978
+[#113036]: https://github.com/home-assistant/core/pull/113036
+[#113047]: https://github.com/home-assistant/core/pull/113047
+[#113080]: https://github.com/home-assistant/core/pull/113080
+[#113084]: https://github.com/home-assistant/core/pull/113084
+[#113375]: https://github.com/home-assistant/core/pull/113375
+[#113498]: https://github.com/home-assistant/core/pull/113498
+[#113517]: https://github.com/home-assistant/core/pull/113517
+[#113585]: https://github.com/home-assistant/core/pull/113585
+[#113770]: https://github.com/home-assistant/core/pull/113770
+[#113774]: https://github.com/home-assistant/core/pull/113774
+[#113795]: https://github.com/home-assistant/core/pull/113795
+[#114056]: https://github.com/home-assistant/core/pull/114056
+[#114113]: https://github.com/home-assistant/core/pull/114113
+[#114119]: https://github.com/home-assistant/core/pull/114119
+[#114133]: https://github.com/home-assistant/core/pull/114133
+[#114330]: https://github.com/home-assistant/core/pull/114330
+[#114458]: https://github.com/home-assistant/core/pull/114458
+[#114530]: https://github.com/home-assistant/core/pull/114530
+[#114531]: https://github.com/home-assistant/core/pull/114531
+[#114599]: https://github.com/home-assistant/core/pull/114599
+[#114967]: https://github.com/home-assistant/core/pull/114967
+[#115025]: https://github.com/home-assistant/core/pull/115025
+[#115048]: https://github.com/home-assistant/core/pull/115048
+[#115139]: https://github.com/home-assistant/core/pull/115139
+[#115218]: https://github.com/home-assistant/core/pull/115218
+[#115239]: https://github.com/home-assistant/core/pull/115239
+[#115312]: https://github.com/home-assistant/core/pull/115312
+[#115349]: https://github.com/home-assistant/core/pull/115349
+[#115371]: https://github.com/home-assistant/core/pull/115371
+[#115374]: https://github.com/home-assistant/core/pull/115374
+[#115395]: https://github.com/home-assistant/core/pull/115395
+[#115399]: https://github.com/home-assistant/core/pull/115399
+[#115445]: https://github.com/home-assistant/core/pull/115445
+[#115464]: https://github.com/home-assistant/core/pull/115464
+[#115507]: https://github.com/home-assistant/core/pull/115507
+[#115522]: https://github.com/home-assistant/core/pull/115522
+[#115525]: https://github.com/home-assistant/core/pull/115525
+[#115532]: https://github.com/home-assistant/core/pull/115532
+[#115641]: https://github.com/home-assistant/core/pull/115641
+[#115669]: https://github.com/home-assistant/core/pull/115669
+[#115702]: https://github.com/home-assistant/core/pull/115702
+[#115715]: https://github.com/home-assistant/core/pull/115715
+[#115717]: https://github.com/home-assistant/core/pull/115717
+[#115732]: https://github.com/home-assistant/core/pull/115732
+[#115735]: https://github.com/home-assistant/core/pull/115735
+[#115781]: https://github.com/home-assistant/core/pull/115781
+[#115808]: https://github.com/home-assistant/core/pull/115808
+[#115828]: https://github.com/home-assistant/core/pull/115828
+[#115888]: https://github.com/home-assistant/core/pull/115888
+[#115915]: https://github.com/home-assistant/core/pull/115915
+[#115926]: https://github.com/home-assistant/core/pull/115926
+[#115939]: https://github.com/home-assistant/core/pull/115939
+[#115948]: https://github.com/home-assistant/core/pull/115948
+[#115969]: https://github.com/home-assistant/core/pull/115969
+[#115970]: https://github.com/home-assistant/core/pull/115970
+[#115998]: https://github.com/home-assistant/core/pull/115998
+[#116115]: https://github.com/home-assistant/core/pull/116115
+[#116120]: https://github.com/home-assistant/core/pull/116120
+[#116133]: https://github.com/home-assistant/core/pull/116133
+[#116147]: https://github.com/home-assistant/core/pull/116147
+[#116148]: https://github.com/home-assistant/core/pull/116148
+[#116150]: https://github.com/home-assistant/core/pull/116150
+[#116158]: https://github.com/home-assistant/core/pull/116158
+[#116159]: https://github.com/home-assistant/core/pull/116159
+[#116167]: https://github.com/home-assistant/core/pull/116167
+[#116169]: https://github.com/home-assistant/core/pull/116169
+[#116179]: https://github.com/home-assistant/core/pull/116179
+[#116185]: https://github.com/home-assistant/core/pull/116185
+[#116196]: https://github.com/home-assistant/core/pull/116196
+[#116197]: https://github.com/home-assistant/core/pull/116197
+[#116201]: https://github.com/home-assistant/core/pull/116201
+[#116202]: https://github.com/home-assistant/core/pull/116202
+[#116204]: https://github.com/home-assistant/core/pull/116204
+[#116207]: https://github.com/home-assistant/core/pull/116207
+[#116208]: https://github.com/home-assistant/core/pull/116208
+[#116209]: https://github.com/home-assistant/core/pull/116209
+[#116210]: https://github.com/home-assistant/core/pull/116210
+[#116211]: https://github.com/home-assistant/core/pull/116211
+[#116220]: https://github.com/home-assistant/core/pull/116220
+[#116229]: https://github.com/home-assistant/core/pull/116229
+[#116234]: https://github.com/home-assistant/core/pull/116234
+[#116238]: https://github.com/home-assistant/core/pull/116238
+[#116239]: https://github.com/home-assistant/core/pull/116239
+[#116240]: https://github.com/home-assistant/core/pull/116240
+[#116241]: https://github.com/home-assistant/core/pull/116241
+[#116250]: https://github.com/home-assistant/core/pull/116250
+[#116284]: https://github.com/home-assistant/core/pull/116284
+[#116292]: https://github.com/home-assistant/core/pull/116292
+[#116295]: https://github.com/home-assistant/core/pull/116295
+[#116296]: https://github.com/home-assistant/core/pull/116296
+[#116297]: https://github.com/home-assistant/core/pull/116297
+[#116298]: https://github.com/home-assistant/core/pull/116298
+[#116303]: https://github.com/home-assistant/core/pull/116303
+[#116306]: https://github.com/home-assistant/core/pull/116306
+[#116307]: https://github.com/home-assistant/core/pull/116307
+[#116308]: https://github.com/home-assistant/core/pull/116308
+[#116309]: https://github.com/home-assistant/core/pull/116309
+[#116310]: https://github.com/home-assistant/core/pull/116310
+[#116311]: https://github.com/home-assistant/core/pull/116311
+[#116312]: https://github.com/home-assistant/core/pull/116312
+[#116317]: https://github.com/home-assistant/core/pull/116317
+[#116318]: https://github.com/home-assistant/core/pull/116318
+[#116332]: https://github.com/home-assistant/core/pull/116332
+[#116336]: https://github.com/home-assistant/core/pull/116336
+[#116347]: https://github.com/home-assistant/core/pull/116347
+[#116348]: https://github.com/home-assistant/core/pull/116348
+[#116349]: https://github.com/home-assistant/core/pull/116349
+[#116350]: https://github.com/home-assistant/core/pull/116350
+[#116356]: https://github.com/home-assistant/core/pull/116356
+[#116360]: https://github.com/home-assistant/core/pull/116360
+[#116361]: https://github.com/home-assistant/core/pull/116361
+[#116362]: https://github.com/home-assistant/core/pull/116362
+[#116363]: https://github.com/home-assistant/core/pull/116363
+[#116364]: https://github.com/home-assistant/core/pull/116364
+[#116368]: https://github.com/home-assistant/core/pull/116368
+[#116373]: https://github.com/home-assistant/core/pull/116373
+[#116375]: https://github.com/home-assistant/core/pull/116375
+[#116376]: https://github.com/home-assistant/core/pull/116376
+[#116377]: https://github.com/home-assistant/core/pull/116377
+[#116378]: https://github.com/home-assistant/core/pull/116378
+[#116379]: https://github.com/home-assistant/core/pull/116379
+[#116380]: https://github.com/home-assistant/core/pull/116380
+[#116381]: https://github.com/home-assistant/core/pull/116381
+[#116382]: https://github.com/home-assistant/core/pull/116382
+[#116387]: https://github.com/home-assistant/core/pull/116387
+[#116388]: https://github.com/home-assistant/core/pull/116388
+[#116389]: https://github.com/home-assistant/core/pull/116389
+[#116395]: https://github.com/home-assistant/core/pull/116395
+[#116401]: https://github.com/home-assistant/core/pull/116401
+[#116405]: https://github.com/home-assistant/core/pull/116405
+[#116406]: https://github.com/home-assistant/core/pull/116406
+[#116410]: https://github.com/home-assistant/core/pull/116410
+[#116412]: https://github.com/home-assistant/core/pull/116412
+[#116413]: https://github.com/home-assistant/core/pull/116413
+[#116414]: https://github.com/home-assistant/core/pull/116414
+[#116416]: https://github.com/home-assistant/core/pull/116416
+[#116419]: https://github.com/home-assistant/core/pull/116419
+[#116421]: https://github.com/home-assistant/core/pull/116421
+[#116426]: https://github.com/home-assistant/core/pull/116426
+[#116427]: https://github.com/home-assistant/core/pull/116427
+[#116431]: https://github.com/home-assistant/core/pull/116431
+[#116433]: https://github.com/home-assistant/core/pull/116433
+[#116439]: https://github.com/home-assistant/core/pull/116439
+[#116441]: https://github.com/home-assistant/core/pull/116441
+[#116442]: https://github.com/home-assistant/core/pull/116442
+[#116445]: https://github.com/home-assistant/core/pull/116445
+[#116447]: https://github.com/home-assistant/core/pull/116447
+[#116448]: https://github.com/home-assistant/core/pull/116448
+[#116449]: https://github.com/home-assistant/core/pull/116449
+[#116450]: https://github.com/home-assistant/core/pull/116450
+[#116454]: https://github.com/home-assistant/core/pull/116454
+[#116456]: https://github.com/home-assistant/core/pull/116456
+[#116457]: https://github.com/home-assistant/core/pull/116457
+[#116459]: https://github.com/home-assistant/core/pull/116459
+[#116460]: https://github.com/home-assistant/core/pull/116460
+[#116468]: https://github.com/home-assistant/core/pull/116468
+[#116469]: https://github.com/home-assistant/core/pull/116469
+[#116477]: https://github.com/home-assistant/core/pull/116477
+[#116496]: https://github.com/home-assistant/core/pull/116496
+[#116499]: https://github.com/home-assistant/core/pull/116499
+[#116501]: https://github.com/home-assistant/core/pull/116501
+[#116504]: https://github.com/home-assistant/core/pull/116504
+[#116510]: https://github.com/home-assistant/core/pull/116510
+[#116511]: https://github.com/home-assistant/core/pull/116511
+[#116515]: https://github.com/home-assistant/core/pull/116515
+[#116517]: https://github.com/home-assistant/core/pull/116517
+[#116522]: https://github.com/home-assistant/core/pull/116522
+[#116523]: https://github.com/home-assistant/core/pull/116523
+[#116526]: https://github.com/home-assistant/core/pull/116526
+[#116530]: https://github.com/home-assistant/core/pull/116530
+[#116531]: https://github.com/home-assistant/core/pull/116531
+[#116532]: https://github.com/home-assistant/core/pull/116532
+[#116533]: https://github.com/home-assistant/core/pull/116533
+[#116534]: https://github.com/home-assistant/core/pull/116534
+[#116536]: https://github.com/home-assistant/core/pull/116536
+[#116548]: https://github.com/home-assistant/core/pull/116548
+[#116551]: https://github.com/home-assistant/core/pull/116551
+[#116552]: https://github.com/home-assistant/core/pull/116552
+[#116553]: https://github.com/home-assistant/core/pull/116553
+[#116554]: https://github.com/home-assistant/core/pull/116554
+[#116556]: https://github.com/home-assistant/core/pull/116556
+[#116557]: https://github.com/home-assistant/core/pull/116557
+[#116560]: https://github.com/home-assistant/core/pull/116560
+[#116561]: https://github.com/home-assistant/core/pull/116561
+[#116562]: https://github.com/home-assistant/core/pull/116562
+[#116563]: https://github.com/home-assistant/core/pull/116563
+[#116583]: https://github.com/home-assistant/core/pull/116583
+[#116592]: https://github.com/home-assistant/core/pull/116592
+[#116595]: https://github.com/home-assistant/core/pull/116595
+[#116604]: https://github.com/home-assistant/core/pull/116604
+[#116606]: https://github.com/home-assistant/core/pull/116606
+[#116607]: https://github.com/home-assistant/core/pull/116607
+[#116608]: https://github.com/home-assistant/core/pull/116608
+[#116610]: https://github.com/home-assistant/core/pull/116610
+[#116611]: https://github.com/home-assistant/core/pull/116611
+[#116612]: https://github.com/home-assistant/core/pull/116612
+[#116614]: https://github.com/home-assistant/core/pull/116614
+[#116615]: https://github.com/home-assistant/core/pull/116615
+[#116617]: https://github.com/home-assistant/core/pull/116617
+[#116618]: https://github.com/home-assistant/core/pull/116618
+[#116619]: https://github.com/home-assistant/core/pull/116619
+[#116620]: https://github.com/home-assistant/core/pull/116620
+[#116622]: https://github.com/home-assistant/core/pull/116622
+[#116623]: https://github.com/home-assistant/core/pull/116623
+[#116624]: https://github.com/home-assistant/core/pull/116624
+[#116625]: https://github.com/home-assistant/core/pull/116625
+[#116629]: https://github.com/home-assistant/core/pull/116629
+[#116630]: https://github.com/home-assistant/core/pull/116630
+[#116631]: https://github.com/home-assistant/core/pull/116631
+[#116633]: https://github.com/home-assistant/core/pull/116633
+[#116636]: https://github.com/home-assistant/core/pull/116636
+[#116638]: https://github.com/home-assistant/core/pull/116638
+[#116642]: https://github.com/home-assistant/core/pull/116642
+[#116643]: https://github.com/home-assistant/core/pull/116643
+[#116652]: https://github.com/home-assistant/core/pull/116652
+[#116653]: https://github.com/home-assistant/core/pull/116653
+[#116654]: https://github.com/home-assistant/core/pull/116654
+[#116657]: https://github.com/home-assistant/core/pull/116657
+[#116658]: https://github.com/home-assistant/core/pull/116658
+[#116659]: https://github.com/home-assistant/core/pull/116659
+[#116663]: https://github.com/home-assistant/core/pull/116663
+[#116671]: https://github.com/home-assistant/core/pull/116671
+[#116672]: https://github.com/home-assistant/core/pull/116672
+[#116674]: https://github.com/home-assistant/core/pull/116674
+[#116682]: https://github.com/home-assistant/core/pull/116682
+[#116686]: https://github.com/home-assistant/core/pull/116686
+[#116687]: https://github.com/home-assistant/core/pull/116687
+[#116688]: https://github.com/home-assistant/core/pull/116688
+[#116691]: https://github.com/home-assistant/core/pull/116691
+[#116693]: https://github.com/home-assistant/core/pull/116693
+[#116694]: https://github.com/home-assistant/core/pull/116694
+[#116695]: https://github.com/home-assistant/core/pull/116695
+[#116697]: https://github.com/home-assistant/core/pull/116697
+[#116699]: https://github.com/home-assistant/core/pull/116699
+[#116703]: https://github.com/home-assistant/core/pull/116703
+[#116714]: https://github.com/home-assistant/core/pull/116714
+[#116726]: https://github.com/home-assistant/core/pull/116726
+[#116729]: https://github.com/home-assistant/core/pull/116729
+[#116735]: https://github.com/home-assistant/core/pull/116735
+[#116740]: https://github.com/home-assistant/core/pull/116740
+[#116747]: https://github.com/home-assistant/core/pull/116747
+[#116749]: https://github.com/home-assistant/core/pull/116749
+[#116758]: https://github.com/home-assistant/core/pull/116758
+[#116760]: https://github.com/home-assistant/core/pull/116760
+[#116763]: https://github.com/home-assistant/core/pull/116763
+[#116764]: https://github.com/home-assistant/core/pull/116764
+[#116765]: https://github.com/home-assistant/core/pull/116765
+[#116767]: https://github.com/home-assistant/core/pull/116767
+[#116771]: https://github.com/home-assistant/core/pull/116771
+[#116772]: https://github.com/home-assistant/core/pull/116772
+[#116775]: https://github.com/home-assistant/core/pull/116775
+[#116778]: https://github.com/home-assistant/core/pull/116778
+[#116781]: https://github.com/home-assistant/core/pull/116781
+[#116787]: https://github.com/home-assistant/core/pull/116787
+[#116788]: https://github.com/home-assistant/core/pull/116788
+[#116790]: https://github.com/home-assistant/core/pull/116790
+[#116793]: https://github.com/home-assistant/core/pull/116793
+[#116794]: https://github.com/home-assistant/core/pull/116794
+[#116802]: https://github.com/home-assistant/core/pull/116802
+[#116803]: https://github.com/home-assistant/core/pull/116803
+[#116806]: https://github.com/home-assistant/core/pull/116806
+[#116808]: https://github.com/home-assistant/core/pull/116808
+[#116814]: https://github.com/home-assistant/core/pull/116814
+[#116815]: https://github.com/home-assistant/core/pull/116815
+[#116816]: https://github.com/home-assistant/core/pull/116816
+[#116818]: https://github.com/home-assistant/core/pull/116818
+[#116819]: https://github.com/home-assistant/core/pull/116819
+[#116820]: https://github.com/home-assistant/core/pull/116820
+[#116821]: https://github.com/home-assistant/core/pull/116821
+[#116822]: https://github.com/home-assistant/core/pull/116822
+[#116824]: https://github.com/home-assistant/core/pull/116824
+[#116827]: https://github.com/home-assistant/core/pull/116827
+[#116845]: https://github.com/home-assistant/core/pull/116845
+[#116848]: https://github.com/home-assistant/core/pull/116848
+[#116851]: https://github.com/home-assistant/core/pull/116851
+[#116852]: https://github.com/home-assistant/core/pull/116852
+[#116857]: https://github.com/home-assistant/core/pull/116857
+[#116861]: https://github.com/home-assistant/core/pull/116861
+[#116867]: https://github.com/home-assistant/core/pull/116867
+[#116870]: https://github.com/home-assistant/core/pull/116870
+[#116877]: https://github.com/home-assistant/core/pull/116877
+[#116879]: https://github.com/home-assistant/core/pull/116879
+[#116882]: https://github.com/home-assistant/core/pull/116882
+[#116884]: https://github.com/home-assistant/core/pull/116884
+[#116886]: https://github.com/home-assistant/core/pull/116886
+[#116889]: https://github.com/home-assistant/core/pull/116889
+[#116891]: https://github.com/home-assistant/core/pull/116891
+[#116893]: https://github.com/home-assistant/core/pull/116893
+[#116895]: https://github.com/home-assistant/core/pull/116895
+[#116897]: https://github.com/home-assistant/core/pull/116897
+[#116899]: https://github.com/home-assistant/core/pull/116899
+[#116900]: https://github.com/home-assistant/core/pull/116900
+[#116906]: https://github.com/home-assistant/core/pull/116906
+[#116907]: https://github.com/home-assistant/core/pull/116907
+[#116909]: https://github.com/home-assistant/core/pull/116909
+[#116912]: https://github.com/home-assistant/core/pull/116912
+[#116918]: https://github.com/home-assistant/core/pull/116918
+[#116923]: https://github.com/home-assistant/core/pull/116923
+[#116925]: https://github.com/home-assistant/core/pull/116925
+[#116926]: https://github.com/home-assistant/core/pull/116926
+[#116927]: https://github.com/home-assistant/core/pull/116927
+[#116928]: https://github.com/home-assistant/core/pull/116928
+[#116929]: https://github.com/home-assistant/core/pull/116929
+[#116930]: https://github.com/home-assistant/core/pull/116930
+[#116931]: https://github.com/home-assistant/core/pull/116931
+[#116932]: https://github.com/home-assistant/core/pull/116932
+[#116933]: https://github.com/home-assistant/core/pull/116933
+[#116934]: https://github.com/home-assistant/core/pull/116934
+[#116942]: https://github.com/home-assistant/core/pull/116942
+[#116945]: https://github.com/home-assistant/core/pull/116945
+[#116946]: https://github.com/home-assistant/core/pull/116946
+[#116947]: https://github.com/home-assistant/core/pull/116947
+[#116951]: https://github.com/home-assistant/core/pull/116951
+[#116952]: https://github.com/home-assistant/core/pull/116952
+[#116954]: https://github.com/home-assistant/core/pull/116954
+[#116955]: https://github.com/home-assistant/core/pull/116955
+[#116956]: https://github.com/home-assistant/core/pull/116956
+[#116962]: https://github.com/home-assistant/core/pull/116962
+[#116963]: https://github.com/home-assistant/core/pull/116963
+[#116964]: https://github.com/home-assistant/core/pull/116964
+[#116981]: https://github.com/home-assistant/core/pull/116981
+[#116984]: https://github.com/home-assistant/core/pull/116984
+[#116993]: https://github.com/home-assistant/core/pull/116993
+[#116998]: https://github.com/home-assistant/core/pull/116998
+[#116999]: https://github.com/home-assistant/core/pull/116999
+[#117000]: https://github.com/home-assistant/core/pull/117000
+[#117001]: https://github.com/home-assistant/core/pull/117001
+[#117002]: https://github.com/home-assistant/core/pull/117002
+[#117003]: https://github.com/home-assistant/core/pull/117003
+[#117008]: https://github.com/home-assistant/core/pull/117008
+[#117012]: https://github.com/home-assistant/core/pull/117012
+[#117013]: https://github.com/home-assistant/core/pull/117013
+[#117014]: https://github.com/home-assistant/core/pull/117014
+[#117020]: https://github.com/home-assistant/core/pull/117020
+[#117023]: https://github.com/home-assistant/core/pull/117023
+[#117026]: https://github.com/home-assistant/core/pull/117026
+[#117027]: https://github.com/home-assistant/core/pull/117027
+[#117029]: https://github.com/home-assistant/core/pull/117029
+[#117030]: https://github.com/home-assistant/core/pull/117030
+[#117031]: https://github.com/home-assistant/core/pull/117031
+[#117032]: https://github.com/home-assistant/core/pull/117032
+[#117033]: https://github.com/home-assistant/core/pull/117033
+[#117034]: https://github.com/home-assistant/core/pull/117034
+[#117035]: https://github.com/home-assistant/core/pull/117035
+[#117036]: https://github.com/home-assistant/core/pull/117036
+[#117037]: https://github.com/home-assistant/core/pull/117037
+[#117043]: https://github.com/home-assistant/core/pull/117043
+[#117044]: https://github.com/home-assistant/core/pull/117044
+[#117047]: https://github.com/home-assistant/core/pull/117047
+[#117049]: https://github.com/home-assistant/core/pull/117049
+[#117050]: https://github.com/home-assistant/core/pull/117050
+[#117051]: https://github.com/home-assistant/core/pull/117051
+[#117054]: https://github.com/home-assistant/core/pull/117054
+[#117056]: https://github.com/home-assistant/core/pull/117056
+[#117058]: https://github.com/home-assistant/core/pull/117058
+[#117060]: https://github.com/home-assistant/core/pull/117060
+[#117062]: https://github.com/home-assistant/core/pull/117062
+[#117064]: https://github.com/home-assistant/core/pull/117064
+[#117066]: https://github.com/home-assistant/core/pull/117066
+[#117074]: https://github.com/home-assistant/core/pull/117074
+[#117076]: https://github.com/home-assistant/core/pull/117076
+[#117077]: https://github.com/home-assistant/core/pull/117077
+[#117078]: https://github.com/home-assistant/core/pull/117078
+[#117081]: https://github.com/home-assistant/core/pull/117081
+[#117082]: https://github.com/home-assistant/core/pull/117082
+[#117084]: https://github.com/home-assistant/core/pull/117084
+[#117085]: https://github.com/home-assistant/core/pull/117085
+[#117086]: https://github.com/home-assistant/core/pull/117086
+[#117095]: https://github.com/home-assistant/core/pull/117095
+[#117096]: https://github.com/home-assistant/core/pull/117096
+[#117099]: https://github.com/home-assistant/core/pull/117099
+[#117103]: https://github.com/home-assistant/core/pull/117103
+[#117108]: https://github.com/home-assistant/core/pull/117108
+[#117109]: https://github.com/home-assistant/core/pull/117109
+[#117110]: https://github.com/home-assistant/core/pull/117110
+[#117116]: https://github.com/home-assistant/core/pull/117116
+[#117118]: https://github.com/home-assistant/core/pull/117118
+[#117127]: https://github.com/home-assistant/core/pull/117127
+[#117129]: https://github.com/home-assistant/core/pull/117129
+[#117134]: https://github.com/home-assistant/core/pull/117134
+[#117135]: https://github.com/home-assistant/core/pull/117135
+[#117136]: https://github.com/home-assistant/core/pull/117136
+[#117147]: https://github.com/home-assistant/core/pull/117147
+[#117154]: https://github.com/home-assistant/core/pull/117154
+[#117157]: https://github.com/home-assistant/core/pull/117157
+[#117161]: https://github.com/home-assistant/core/pull/117161
+[#117171]: https://github.com/home-assistant/core/pull/117171
+[#117172]: https://github.com/home-assistant/core/pull/117172
+[#117174]: https://github.com/home-assistant/core/pull/117174
+[#117175]: https://github.com/home-assistant/core/pull/117175
+[#117183]: https://github.com/home-assistant/core/pull/117183
+[#117184]: https://github.com/home-assistant/core/pull/117184
+[#117185]: https://github.com/home-assistant/core/pull/117185
+[#117192]: https://github.com/home-assistant/core/pull/117192
+[#117195]: https://github.com/home-assistant/core/pull/117195
+[#117196]: https://github.com/home-assistant/core/pull/117196
+[#117199]: https://github.com/home-assistant/core/pull/117199
+[#117206]: https://github.com/home-assistant/core/pull/117206
+[#117210]: https://github.com/home-assistant/core/pull/117210
+[#117213]: https://github.com/home-assistant/core/pull/117213
+[#117214]: https://github.com/home-assistant/core/pull/117214
+[#117215]: https://github.com/home-assistant/core/pull/117215
+[#117217]: https://github.com/home-assistant/core/pull/117217
+[#117218]: https://github.com/home-assistant/core/pull/117218
+[#117219]: https://github.com/home-assistant/core/pull/117219
+[#117222]: https://github.com/home-assistant/core/pull/117222
+[#117224]: https://github.com/home-assistant/core/pull/117224
+[#117226]: https://github.com/home-assistant/core/pull/117226
+[#117227]: https://github.com/home-assistant/core/pull/117227
+[#117229]: https://github.com/home-assistant/core/pull/117229
+[#117230]: https://github.com/home-assistant/core/pull/117230
+[#117231]: https://github.com/home-assistant/core/pull/117231
+[#117237]: https://github.com/home-assistant/core/pull/117237
+[#117238]: https://github.com/home-assistant/core/pull/117238
+[#117239]: https://github.com/home-assistant/core/pull/117239
+[#117240]: https://github.com/home-assistant/core/pull/117240
+[#117241]: https://github.com/home-assistant/core/pull/117241
+[#117242]: https://github.com/home-assistant/core/pull/117242
+[#117244]: https://github.com/home-assistant/core/pull/117244
+[#117245]: https://github.com/home-assistant/core/pull/117245
+[#117246]: https://github.com/home-assistant/core/pull/117246
+[#117247]: https://github.com/home-assistant/core/pull/117247
+[#117248]: https://github.com/home-assistant/core/pull/117248
+[#117249]: https://github.com/home-assistant/core/pull/117249
+[#117261]: https://github.com/home-assistant/core/pull/117261
+[#117264]: https://github.com/home-assistant/core/pull/117264
+[#117270]: https://github.com/home-assistant/core/pull/117270
+[#117278]: https://github.com/home-assistant/core/pull/117278
+[#117280]: https://github.com/home-assistant/core/pull/117280
+[#117283]: https://github.com/home-assistant/core/pull/117283
+[#117285]: https://github.com/home-assistant/core/pull/117285
+[#117286]: https://github.com/home-assistant/core/pull/117286
+[#117288]: https://github.com/home-assistant/core/pull/117288
+[#117289]: https://github.com/home-assistant/core/pull/117289
+[#117290]: https://github.com/home-assistant/core/pull/117290
+[#117292]: https://github.com/home-assistant/core/pull/117292
+[#117293]: https://github.com/home-assistant/core/pull/117293
+[#117295]: https://github.com/home-assistant/core/pull/117295
+[#117301]: https://github.com/home-assistant/core/pull/117301
+[#117305]: https://github.com/home-assistant/core/pull/117305
+[#117312]: https://github.com/home-assistant/core/pull/117312
+[#117315]: https://github.com/home-assistant/core/pull/117315
+[#117318]: https://github.com/home-assistant/core/pull/117318
+[#117321]: https://github.com/home-assistant/core/pull/117321
+[#117323]: https://github.com/home-assistant/core/pull/117323
+[#117330]: https://github.com/home-assistant/core/pull/117330
+[#117336]: https://github.com/home-assistant/core/pull/117336
+[#117340]: https://github.com/home-assistant/core/pull/117340
+[#117341]: https://github.com/home-assistant/core/pull/117341
+[#117344]: https://github.com/home-assistant/core/pull/117344
+[#117345]: https://github.com/home-assistant/core/pull/117345
+[#117346]: https://github.com/home-assistant/core/pull/117346
+[#117347]: https://github.com/home-assistant/core/pull/117347
+[#117350]: https://github.com/home-assistant/core/pull/117350
+[#117351]: https://github.com/home-assistant/core/pull/117351
+[#117357]: https://github.com/home-assistant/core/pull/117357
+[#117370]: https://github.com/home-assistant/core/pull/117370
+[#117371]: https://github.com/home-assistant/core/pull/117371
+[#117375]: https://github.com/home-assistant/core/pull/117375
+[#117377]: https://github.com/home-assistant/core/pull/117377
+[#117382]: https://github.com/home-assistant/core/pull/117382
+[#117383]: https://github.com/home-assistant/core/pull/117383
+[#117385]: https://github.com/home-assistant/core/pull/117385
+[#117388]: https://github.com/home-assistant/core/pull/117388
+[#117390]: https://github.com/home-assistant/core/pull/117390
+[#117392]: https://github.com/home-assistant/core/pull/117392
+[#117394]: https://github.com/home-assistant/core/pull/117394
+[#117395]: https://github.com/home-assistant/core/pull/117395
+[#117400]: https://github.com/home-assistant/core/pull/117400
+[#117402]: https://github.com/home-assistant/core/pull/117402
+[#117403]: https://github.com/home-assistant/core/pull/117403
+[#117404]: https://github.com/home-assistant/core/pull/117404
+[#117405]: https://github.com/home-assistant/core/pull/117405
+[#117407]: https://github.com/home-assistant/core/pull/117407
+[#117408]: https://github.com/home-assistant/core/pull/117408
+[#117409]: https://github.com/home-assistant/core/pull/117409
+[#117411]: https://github.com/home-assistant/core/pull/117411
+[#117412]: https://github.com/home-assistant/core/pull/117412
+[#117413]: https://github.com/home-assistant/core/pull/117413
+[#117416]: https://github.com/home-assistant/core/pull/117416
+[#117417]: https://github.com/home-assistant/core/pull/117417
+[#117418]: https://github.com/home-assistant/core/pull/117418
+[#117419]: https://github.com/home-assistant/core/pull/117419
+[#117421]: https://github.com/home-assistant/core/pull/117421
+[#117422]: https://github.com/home-assistant/core/pull/117422
+[#117425]: https://github.com/home-assistant/core/pull/117425
+[#117426]: https://github.com/home-assistant/core/pull/117426
+[#117427]: https://github.com/home-assistant/core/pull/117427
+[#117428]: https://github.com/home-assistant/core/pull/117428
+[#117429]: https://github.com/home-assistant/core/pull/117429
+[#117432]: https://github.com/home-assistant/core/pull/117432
+[#117433]: https://github.com/home-assistant/core/pull/117433
+[#117435]: https://github.com/home-assistant/core/pull/117435
+[#117437]: https://github.com/home-assistant/core/pull/117437
+[#117438]: https://github.com/home-assistant/core/pull/117438
+[#117440]: https://github.com/home-assistant/core/pull/117440
+[#117442]: https://github.com/home-assistant/core/pull/117442
+[#117448]: https://github.com/home-assistant/core/pull/117448
+[#117450]: https://github.com/home-assistant/core/pull/117450
+[#117452]: https://github.com/home-assistant/core/pull/117452
+[#117453]: https://github.com/home-assistant/core/pull/117453
+[#117457]: https://github.com/home-assistant/core/pull/117457
+[#117459]: https://github.com/home-assistant/core/pull/117459
+[#117460]: https://github.com/home-assistant/core/pull/117460
+[#117462]: https://github.com/home-assistant/core/pull/117462
+[#117463]: https://github.com/home-assistant/core/pull/117463
+[#117464]: https://github.com/home-assistant/core/pull/117464
+[#117467]: https://github.com/home-assistant/core/pull/117467
+[#117469]: https://github.com/home-assistant/core/pull/117469
+[#117470]: https://github.com/home-assistant/core/pull/117470
+[#117471]: https://github.com/home-assistant/core/pull/117471
+[#117472]: https://github.com/home-assistant/core/pull/117472
+[#117473]: https://github.com/home-assistant/core/pull/117473
+[#117474]: https://github.com/home-assistant/core/pull/117474
+[#117475]: https://github.com/home-assistant/core/pull/117475
+[#117476]: https://github.com/home-assistant/core/pull/117476
+[#117477]: https://github.com/home-assistant/core/pull/117477
+[#117478]: https://github.com/home-assistant/core/pull/117478
+[#117479]: https://github.com/home-assistant/core/pull/117479
+[#117480]: https://github.com/home-assistant/core/pull/117480
+[#117482]: https://github.com/home-assistant/core/pull/117482
+[#117485]: https://github.com/home-assistant/core/pull/117485
+[#117486]: https://github.com/home-assistant/core/pull/117486
+[#117488]: https://github.com/home-assistant/core/pull/117488
+[#117491]: https://github.com/home-assistant/core/pull/117491
+[#117493]: https://github.com/home-assistant/core/pull/117493
+[#117495]: https://github.com/home-assistant/core/pull/117495
+[#117496]: https://github.com/home-assistant/core/pull/117496
+[#117498]: https://github.com/home-assistant/core/pull/117498
+[#117500]: https://github.com/home-assistant/core/pull/117500
+[#117502]: https://github.com/home-assistant/core/pull/117502
+[#117503]: https://github.com/home-assistant/core/pull/117503
+[#117504]: https://github.com/home-assistant/core/pull/117504
+[#117506]: https://github.com/home-assistant/core/pull/117506
+[#117507]: https://github.com/home-assistant/core/pull/117507
+[#117518]: https://github.com/home-assistant/core/pull/117518
+[#117519]: https://github.com/home-assistant/core/pull/117519
+[#117520]: https://github.com/home-assistant/core/pull/117520
+[#117521]: https://github.com/home-assistant/core/pull/117521
+[#117525]: https://github.com/home-assistant/core/pull/117525
+[#117527]: https://github.com/home-assistant/core/pull/117527
+[#117536]: https://github.com/home-assistant/core/pull/117536
+[#117537]: https://github.com/home-assistant/core/pull/117537
+[#117538]: https://github.com/home-assistant/core/pull/117538
+[#117543]: https://github.com/home-assistant/core/pull/117543
+[#117544]: https://github.com/home-assistant/core/pull/117544
+[#117546]: https://github.com/home-assistant/core/pull/117546
+[#117548]: https://github.com/home-assistant/core/pull/117548
+[#117549]: https://github.com/home-assistant/core/pull/117549
+[#117552]: https://github.com/home-assistant/core/pull/117552
+[#117553]: https://github.com/home-assistant/core/pull/117553
+[#117556]: https://github.com/home-assistant/core/pull/117556
+[#117559]: https://github.com/home-assistant/core/pull/117559
+[#117560]: https://github.com/home-assistant/core/pull/117560
+[#117561]: https://github.com/home-assistant/core/pull/117561
+[#117562]: https://github.com/home-assistant/core/pull/117562
+[#117563]: https://github.com/home-assistant/core/pull/117563
+[#117565]: https://github.com/home-assistant/core/pull/117565
+[#117568]: https://github.com/home-assistant/core/pull/117568
+[#117570]: https://github.com/home-assistant/core/pull/117570
+[#117573]: https://github.com/home-assistant/core/pull/117573
+[#117575]: https://github.com/home-assistant/core/pull/117575
+[#117578]: https://github.com/home-assistant/core/pull/117578
+[#117579]: https://github.com/home-assistant/core/pull/117579
+[#117582]: https://github.com/home-assistant/core/pull/117582
+[#117583]: https://github.com/home-assistant/core/pull/117583
+[#117587]: https://github.com/home-assistant/core/pull/117587
+[#117590]: https://github.com/home-assistant/core/pull/117590
+[#117592]: https://github.com/home-assistant/core/pull/117592
+[#117593]: https://github.com/home-assistant/core/pull/117593
+[#117606]: https://github.com/home-assistant/core/pull/117606
+[#117608]: https://github.com/home-assistant/core/pull/117608
+[#117609]: https://github.com/home-assistant/core/pull/117609
+[#117610]: https://github.com/home-assistant/core/pull/117610
+[#117611]: https://github.com/home-assistant/core/pull/117611
+[#117612]: https://github.com/home-assistant/core/pull/117612
+[#117613]: https://github.com/home-assistant/core/pull/117613
+[#117616]: https://github.com/home-assistant/core/pull/117616
+[#117618]: https://github.com/home-assistant/core/pull/117618
+[#117619]: https://github.com/home-assistant/core/pull/117619
+[#117620]: https://github.com/home-assistant/core/pull/117620
+[#117621]: https://github.com/home-assistant/core/pull/117621
+[#117625]: https://github.com/home-assistant/core/pull/117625
+[#117630]: https://github.com/home-assistant/core/pull/117630
+[#117632]: https://github.com/home-assistant/core/pull/117632
+[#117633]: https://github.com/home-assistant/core/pull/117633
+[#117637]: https://github.com/home-assistant/core/pull/117637
+[#117638]: https://github.com/home-assistant/core/pull/117638
+[#117639]: https://github.com/home-assistant/core/pull/117639
+[#117640]: https://github.com/home-assistant/core/pull/117640
+[#117643]: https://github.com/home-assistant/core/pull/117643
+[#117644]: https://github.com/home-assistant/core/pull/117644
+[#117645]: https://github.com/home-assistant/core/pull/117645
+[#117647]: https://github.com/home-assistant/core/pull/117647
+[#117658]: https://github.com/home-assistant/core/pull/117658
+[#117659]: https://github.com/home-assistant/core/pull/117659
+[#117660]: https://github.com/home-assistant/core/pull/117660
+[#117661]: https://github.com/home-assistant/core/pull/117661
+[#117662]: https://github.com/home-assistant/core/pull/117662
+[#117663]: https://github.com/home-assistant/core/pull/117663
+[#117664]: https://github.com/home-assistant/core/pull/117664
+[#117667]: https://github.com/home-assistant/core/pull/117667
+[#117671]: https://github.com/home-assistant/core/pull/117671
+[#117679]: https://github.com/home-assistant/core/pull/117679
+[#117680]: https://github.com/home-assistant/core/pull/117680
+[#117683]: https://github.com/home-assistant/core/pull/117683
+[#117685]: https://github.com/home-assistant/core/pull/117685
+[#117686]: https://github.com/home-assistant/core/pull/117686
+[#117687]: https://github.com/home-assistant/core/pull/117687
+[#117688]: https://github.com/home-assistant/core/pull/117688
+[#117690]: https://github.com/home-assistant/core/pull/117690
+[#117693]: https://github.com/home-assistant/core/pull/117693
+[#117699]: https://github.com/home-assistant/core/pull/117699
+[#117701]: https://github.com/home-assistant/core/pull/117701
+[#117702]: https://github.com/home-assistant/core/pull/117702
+[#117706]: https://github.com/home-assistant/core/pull/117706
+[#117707]: https://github.com/home-assistant/core/pull/117707
+[#117708]: https://github.com/home-assistant/core/pull/117708
+[#117712]: https://github.com/home-assistant/core/pull/117712
+[#117721]: https://github.com/home-assistant/core/pull/117721
+[#117727]: https://github.com/home-assistant/core/pull/117727
+[#117728]: https://github.com/home-assistant/core/pull/117728
+[#117730]: https://github.com/home-assistant/core/pull/117730
+[#117732]: https://github.com/home-assistant/core/pull/117732
+[#117736]: https://github.com/home-assistant/core/pull/117736
+[#117739]: https://github.com/home-assistant/core/pull/117739
+[#117740]: https://github.com/home-assistant/core/pull/117740
+[#117743]: https://github.com/home-assistant/core/pull/117743
+[#117752]: https://github.com/home-assistant/core/pull/117752
+[#117754]: https://github.com/home-assistant/core/pull/117754
+[#117766]: https://github.com/home-assistant/core/pull/117766
+[#117767]: https://github.com/home-assistant/core/pull/117767
+[#117769]: https://github.com/home-assistant/core/pull/117769
+[#117770]: https://github.com/home-assistant/core/pull/117770
+[#117775]: https://github.com/home-assistant/core/pull/117775
+[#117776]: https://github.com/home-assistant/core/pull/117776
+[#117777]: https://github.com/home-assistant/core/pull/117777
+[#117778]: https://github.com/home-assistant/core/pull/117778
+[#117779]: https://github.com/home-assistant/core/pull/117779
+[#117780]: https://github.com/home-assistant/core/pull/117780
+[#117782]: https://github.com/home-assistant/core/pull/117782
+[#117783]: https://github.com/home-assistant/core/pull/117783
+[#117784]: https://github.com/home-assistant/core/pull/117784
+[#117786]: https://github.com/home-assistant/core/pull/117786
+[#117787]: https://github.com/home-assistant/core/pull/117787
+[#117788]: https://github.com/home-assistant/core/pull/117788
+[#117792]: https://github.com/home-assistant/core/pull/117792
+[#117797]: https://github.com/home-assistant/core/pull/117797
+[#117809]: https://github.com/home-assistant/core/pull/117809
+[#117810]: https://github.com/home-assistant/core/pull/117810
+[#117812]: https://github.com/home-assistant/core/pull/117812
+[#117813]: https://github.com/home-assistant/core/pull/117813
+[#117814]: https://github.com/home-assistant/core/pull/117814
+[#117815]: https://github.com/home-assistant/core/pull/117815
+[#117817]: https://github.com/home-assistant/core/pull/117817
+[#117819]: https://github.com/home-assistant/core/pull/117819
+[#117820]: https://github.com/home-assistant/core/pull/117820
+[#117822]: https://github.com/home-assistant/core/pull/117822
+[#117823]: https://github.com/home-assistant/core/pull/117823
+[#117824]: https://github.com/home-assistant/core/pull/117824
+[#117825]: https://github.com/home-assistant/core/pull/117825
+[#117830]: https://github.com/home-assistant/core/pull/117830
+[#117834]: https://github.com/home-assistant/core/pull/117834
+[#117835]: https://github.com/home-assistant/core/pull/117835
+[#117836]: https://github.com/home-assistant/core/pull/117836
+[#117837]: https://github.com/home-assistant/core/pull/117837
+[#117838]: https://github.com/home-assistant/core/pull/117838
+[#117840]: https://github.com/home-assistant/core/pull/117840
+[#117843]: https://github.com/home-assistant/core/pull/117843
+[#117845]: https://github.com/home-assistant/core/pull/117845
+[#117846]: https://github.com/home-assistant/core/pull/117846
+[#117847]: https://github.com/home-assistant/core/pull/117847
+[#117848]: https://github.com/home-assistant/core/pull/117848
+[#117849]: https://github.com/home-assistant/core/pull/117849
+[#117851]: https://github.com/home-assistant/core/pull/117851
+[#117854]: https://github.com/home-assistant/core/pull/117854
+[#117855]: https://github.com/home-assistant/core/pull/117855
+[#117856]: https://github.com/home-assistant/core/pull/117856
+[#117863]: https://github.com/home-assistant/core/pull/117863
+[#117864]: https://github.com/home-assistant/core/pull/117864
+[#117868]: https://github.com/home-assistant/core/pull/117868
+[#117869]: https://github.com/home-assistant/core/pull/117869
+[#117873]: https://github.com/home-assistant/core/pull/117873
+[#117875]: https://github.com/home-assistant/core/pull/117875
+[#117877]: https://github.com/home-assistant/core/pull/117877
+[#117878]: https://github.com/home-assistant/core/pull/117878
+[#117882]: https://github.com/home-assistant/core/pull/117882
+[#117884]: https://github.com/home-assistant/core/pull/117884
+[#117885]: https://github.com/home-assistant/core/pull/117885
+[#117886]: https://github.com/home-assistant/core/pull/117886
+[#117887]: https://github.com/home-assistant/core/pull/117887
+[#117890]: https://github.com/home-assistant/core/pull/117890
+[#117891]: https://github.com/home-assistant/core/pull/117891
+[#117893]: https://github.com/home-assistant/core/pull/117893
+[#117896]: https://github.com/home-assistant/core/pull/117896
+[#117897]: https://github.com/home-assistant/core/pull/117897
+[#117899]: https://github.com/home-assistant/core/pull/117899
+[#117900]: https://github.com/home-assistant/core/pull/117900
+[#117905]: https://github.com/home-assistant/core/pull/117905
+[#117906]: https://github.com/home-assistant/core/pull/117906
+[#117908]: https://github.com/home-assistant/core/pull/117908
+[#117909]: https://github.com/home-assistant/core/pull/117909
+[#117912]: https://github.com/home-assistant/core/pull/117912
+[#117913]: https://github.com/home-assistant/core/pull/117913
+[#117917]: https://github.com/home-assistant/core/pull/117917
+[#117920]: https://github.com/home-assistant/core/pull/117920
+[#117922]: https://github.com/home-assistant/core/pull/117922
+[#117924]: https://github.com/home-assistant/core/pull/117924
+[#117928]: https://github.com/home-assistant/core/pull/117928
+[#117929]: https://github.com/home-assistant/core/pull/117929
+[#117930]: https://github.com/home-assistant/core/pull/117930
+[#117933]: https://github.com/home-assistant/core/pull/117933
+[#117934]: https://github.com/home-assistant/core/pull/117934
+[#117935]: https://github.com/home-assistant/core/pull/117935
+[#117936]: https://github.com/home-assistant/core/pull/117936
+[#117938]: https://github.com/home-assistant/core/pull/117938
+[#117939]: https://github.com/home-assistant/core/pull/117939
+[#117940]: https://github.com/home-assistant/core/pull/117940
+[#117943]: https://github.com/home-assistant/core/pull/117943
+[#117944]: https://github.com/home-assistant/core/pull/117944
+[#117946]: https://github.com/home-assistant/core/pull/117946
+[#117951]: https://github.com/home-assistant/core/pull/117951
+[#117953]: https://github.com/home-assistant/core/pull/117953
+[#117956]: https://github.com/home-assistant/core/pull/117956
+[#117958]: https://github.com/home-assistant/core/pull/117958
+[#117960]: https://github.com/home-assistant/core/pull/117960
+[#117961]: https://github.com/home-assistant/core/pull/117961
+[#117962]: https://github.com/home-assistant/core/pull/117962
+[#117963]: https://github.com/home-assistant/core/pull/117963
+[#117964]: https://github.com/home-assistant/core/pull/117964
+[#117965]: https://github.com/home-assistant/core/pull/117965
+[#117967]: https://github.com/home-assistant/core/pull/117967
+[#117969]: https://github.com/home-assistant/core/pull/117969
+[#117970]: https://github.com/home-assistant/core/pull/117970
+[#117971]: https://github.com/home-assistant/core/pull/117971
+[#117973]: https://github.com/home-assistant/core/pull/117973
+[#117974]: https://github.com/home-assistant/core/pull/117974
+[#117975]: https://github.com/home-assistant/core/pull/117975
+[#117978]: https://github.com/home-assistant/core/pull/117978
+[#117979]: https://github.com/home-assistant/core/pull/117979
+[#117982]: https://github.com/home-assistant/core/pull/117982
+[#117983]: https://github.com/home-assistant/core/pull/117983
+[#117985]: https://github.com/home-assistant/core/pull/117985
+[#117986]: https://github.com/home-assistant/core/pull/117986
+[#117992]: https://github.com/home-assistant/core/pull/117992
+[#117993]: https://github.com/home-assistant/core/pull/117993
+[#117994]: https://github.com/home-assistant/core/pull/117994
+[#117995]: https://github.com/home-assistant/core/pull/117995
+[#117996]: https://github.com/home-assistant/core/pull/117996
+[#117999]: https://github.com/home-assistant/core/pull/117999
+[#118000]: https://github.com/home-assistant/core/pull/118000
+[#118001]: https://github.com/home-assistant/core/pull/118001
+[#118003]: https://github.com/home-assistant/core/pull/118003
+[#118006]: https://github.com/home-assistant/core/pull/118006
+[#118007]: https://github.com/home-assistant/core/pull/118007
+[#118010]: https://github.com/home-assistant/core/pull/118010
+[#118014]: https://github.com/home-assistant/core/pull/118014
+[#118015]: https://github.com/home-assistant/core/pull/118015
+[#118017]: https://github.com/home-assistant/core/pull/118017
+[#118018]: https://github.com/home-assistant/core/pull/118018
+[#118019]: https://github.com/home-assistant/core/pull/118019
+[#118020]: https://github.com/home-assistant/core/pull/118020
+[#118021]: https://github.com/home-assistant/core/pull/118021
+[#118022]: https://github.com/home-assistant/core/pull/118022
+[#118024]: https://github.com/home-assistant/core/pull/118024
+[#118027]: https://github.com/home-assistant/core/pull/118027
+[#118032]: https://github.com/home-assistant/core/pull/118032
+[#118035]: https://github.com/home-assistant/core/pull/118035
+[#118036]: https://github.com/home-assistant/core/pull/118036
+[#118037]: https://github.com/home-assistant/core/pull/118037
+[#118039]: https://github.com/home-assistant/core/pull/118039
+[#118040]: https://github.com/home-assistant/core/pull/118040
+[#118041]: https://github.com/home-assistant/core/pull/118041
+[#118042]: https://github.com/home-assistant/core/pull/118042
+[#118044]: https://github.com/home-assistant/core/pull/118044
+[#118045]: https://github.com/home-assistant/core/pull/118045
+[#118052]: https://github.com/home-assistant/core/pull/118052
+[#118053]: https://github.com/home-assistant/core/pull/118053
+[#118054]: https://github.com/home-assistant/core/pull/118054
+[#118055]: https://github.com/home-assistant/core/pull/118055
+[#118056]: https://github.com/home-assistant/core/pull/118056
+[#118059]: https://github.com/home-assistant/core/pull/118059
+[#118064]: https://github.com/home-assistant/core/pull/118064
+[#118065]: https://github.com/home-assistant/core/pull/118065
+[#118066]: https://github.com/home-assistant/core/pull/118066
+[#118067]: https://github.com/home-assistant/core/pull/118067
+[#118068]: https://github.com/home-assistant/core/pull/118068
+[#118070]: https://github.com/home-assistant/core/pull/118070
+[#118071]: https://github.com/home-assistant/core/pull/118071
+[#118072]: https://github.com/home-assistant/core/pull/118072
+[#118073]: https://github.com/home-assistant/core/pull/118073
+[#118074]: https://github.com/home-assistant/core/pull/118074
+[#118075]: https://github.com/home-assistant/core/pull/118075
+[#118076]: https://github.com/home-assistant/core/pull/118076
+[#118077]: https://github.com/home-assistant/core/pull/118077
+[#118078]: https://github.com/home-assistant/core/pull/118078
+[#118079]: https://github.com/home-assistant/core/pull/118079
+[#118080]: https://github.com/home-assistant/core/pull/118080
+[#118081]: https://github.com/home-assistant/core/pull/118081
+[#118082]: https://github.com/home-assistant/core/pull/118082
+[#118083]: https://github.com/home-assistant/core/pull/118083
+[#118084]: https://github.com/home-assistant/core/pull/118084
+[#118085]: https://github.com/home-assistant/core/pull/118085
+[#118086]: https://github.com/home-assistant/core/pull/118086
+[#118088]: https://github.com/home-assistant/core/pull/118088
+[#118091]: https://github.com/home-assistant/core/pull/118091
+[#118092]: https://github.com/home-assistant/core/pull/118092
+[#118094]: https://github.com/home-assistant/core/pull/118094
+[#118095]: https://github.com/home-assistant/core/pull/118095
+[#118096]: https://github.com/home-assistant/core/pull/118096
+[#118097]: https://github.com/home-assistant/core/pull/118097
+[#118098]: https://github.com/home-assistant/core/pull/118098
+[#118099]: https://github.com/home-assistant/core/pull/118099
+[#118100]: https://github.com/home-assistant/core/pull/118100
+[#118101]: https://github.com/home-assistant/core/pull/118101
+[#118102]: https://github.com/home-assistant/core/pull/118102
+[#118103]: https://github.com/home-assistant/core/pull/118103
+[#118104]: https://github.com/home-assistant/core/pull/118104
+[#118106]: https://github.com/home-assistant/core/pull/118106
+[#118107]: https://github.com/home-assistant/core/pull/118107
+[#118108]: https://github.com/home-assistant/core/pull/118108
+[#118109]: https://github.com/home-assistant/core/pull/118109
+[#118110]: https://github.com/home-assistant/core/pull/118110
+[#118112]: https://github.com/home-assistant/core/pull/118112
+[#118113]: https://github.com/home-assistant/core/pull/118113
+[#118114]: https://github.com/home-assistant/core/pull/118114
+[#118115]: https://github.com/home-assistant/core/pull/118115
+[#118116]: https://github.com/home-assistant/core/pull/118116
+[#118117]: https://github.com/home-assistant/core/pull/118117
+[#118118]: https://github.com/home-assistant/core/pull/118118
+[#118119]: https://github.com/home-assistant/core/pull/118119
+[#118121]: https://github.com/home-assistant/core/pull/118121
+[#118123]: https://github.com/home-assistant/core/pull/118123
+[#118124]: https://github.com/home-assistant/core/pull/118124
+[#118125]: https://github.com/home-assistant/core/pull/118125
+[#118126]: https://github.com/home-assistant/core/pull/118126
+[#118127]: https://github.com/home-assistant/core/pull/118127
+[#118128]: https://github.com/home-assistant/core/pull/118128
+[#118130]: https://github.com/home-assistant/core/pull/118130
+[#118131]: https://github.com/home-assistant/core/pull/118131
+[#118132]: https://github.com/home-assistant/core/pull/118132
+[#118136]: https://github.com/home-assistant/core/pull/118136
+[#118137]: https://github.com/home-assistant/core/pull/118137
+[#118138]: https://github.com/home-assistant/core/pull/118138
+[#118140]: https://github.com/home-assistant/core/pull/118140
+[#118141]: https://github.com/home-assistant/core/pull/118141
+[#118142]: https://github.com/home-assistant/core/pull/118142
+[#118143]: https://github.com/home-assistant/core/pull/118143
+[#118144]: https://github.com/home-assistant/core/pull/118144
+[#118145]: https://github.com/home-assistant/core/pull/118145
+[#118146]: https://github.com/home-assistant/core/pull/118146
+[#118148]: https://github.com/home-assistant/core/pull/118148
+[#118151]: https://github.com/home-assistant/core/pull/118151
+[#118153]: https://github.com/home-assistant/core/pull/118153
+[#118158]: https://github.com/home-assistant/core/pull/118158
+[#118159]: https://github.com/home-assistant/core/pull/118159
+[#118161]: https://github.com/home-assistant/core/pull/118161
+[#118163]: https://github.com/home-assistant/core/pull/118163
+[#118164]: https://github.com/home-assistant/core/pull/118164
+[#118165]: https://github.com/home-assistant/core/pull/118165
+[#118166]: https://github.com/home-assistant/core/pull/118166
+[#118168]: https://github.com/home-assistant/core/pull/118168
+[#118170]: https://github.com/home-assistant/core/pull/118170
+[#118171]: https://github.com/home-assistant/core/pull/118171
+[#118172]: https://github.com/home-assistant/core/pull/118172
+[#118177]: https://github.com/home-assistant/core/pull/118177
+[#118179]: https://github.com/home-assistant/core/pull/118179
+[#118180]: https://github.com/home-assistant/core/pull/118180
+[#118181]: https://github.com/home-assistant/core/pull/118181
+[#118184]: https://github.com/home-assistant/core/pull/118184
+[#118187]: https://github.com/home-assistant/core/pull/118187
+[#118188]: https://github.com/home-assistant/core/pull/118188
+[#118191]: https://github.com/home-assistant/core/pull/118191
+[#118193]: https://github.com/home-assistant/core/pull/118193
+[#118194]: https://github.com/home-assistant/core/pull/118194
+[#118195]: https://github.com/home-assistant/core/pull/118195
+[#118196]: https://github.com/home-assistant/core/pull/118196
+[#118198]: https://github.com/home-assistant/core/pull/118198
+[#118199]: https://github.com/home-assistant/core/pull/118199
+[#118200]: https://github.com/home-assistant/core/pull/118200
+[#118203]: https://github.com/home-assistant/core/pull/118203
+[#118204]: https://github.com/home-assistant/core/pull/118204
+[#118205]: https://github.com/home-assistant/core/pull/118205
+[#118206]: https://github.com/home-assistant/core/pull/118206
+[#118208]: https://github.com/home-assistant/core/pull/118208
+[#118210]: https://github.com/home-assistant/core/pull/118210
+[#118211]: https://github.com/home-assistant/core/pull/118211
+[#118212]: https://github.com/home-assistant/core/pull/118212
+[#118213]: https://github.com/home-assistant/core/pull/118213
+[#118214]: https://github.com/home-assistant/core/pull/118214
+[#118215]: https://github.com/home-assistant/core/pull/118215
+[#118217]: https://github.com/home-assistant/core/pull/118217
+[#118218]: https://github.com/home-assistant/core/pull/118218
+[#118220]: https://github.com/home-assistant/core/pull/118220
+[#118222]: https://github.com/home-assistant/core/pull/118222
+[#118224]: https://github.com/home-assistant/core/pull/118224
+[#118226]: https://github.com/home-assistant/core/pull/118226
+[#118227]: https://github.com/home-assistant/core/pull/118227
+[#118229]: https://github.com/home-assistant/core/pull/118229
+[#118231]: https://github.com/home-assistant/core/pull/118231
+[#118234]: https://github.com/home-assistant/core/pull/118234
+[#118235]: https://github.com/home-assistant/core/pull/118235
+[#118236]: https://github.com/home-assistant/core/pull/118236
+[#118241]: https://github.com/home-assistant/core/pull/118241
+[#118246]: https://github.com/home-assistant/core/pull/118246
+[#118253]: https://github.com/home-assistant/core/pull/118253
+[#118256]: https://github.com/home-assistant/core/pull/118256
+[#118258]: https://github.com/home-assistant/core/pull/118258
+[#118261]: https://github.com/home-assistant/core/pull/118261
+[#118262]: https://github.com/home-assistant/core/pull/118262
+[#118267]: https://github.com/home-assistant/core/pull/118267
+[#118268]: https://github.com/home-assistant/core/pull/118268
+[#118269]: https://github.com/home-assistant/core/pull/118269
+[#118270]: https://github.com/home-assistant/core/pull/118270
+[#118271]: https://github.com/home-assistant/core/pull/118271
+[#118272]: https://github.com/home-assistant/core/pull/118272
+[#118273]: https://github.com/home-assistant/core/pull/118273
+[#118274]: https://github.com/home-assistant/core/pull/118274
+[#118275]: https://github.com/home-assistant/core/pull/118275
+[#118276]: https://github.com/home-assistant/core/pull/118276
+[#118277]: https://github.com/home-assistant/core/pull/118277
+[#118279]: https://github.com/home-assistant/core/pull/118279
+[#118280]: https://github.com/home-assistant/core/pull/118280
+[#118282]: https://github.com/home-assistant/core/pull/118282
+[#118283]: https://github.com/home-assistant/core/pull/118283
+[#118285]: https://github.com/home-assistant/core/pull/118285
+[#118286]: https://github.com/home-assistant/core/pull/118286
+[#118287]: https://github.com/home-assistant/core/pull/118287
+[#118288]: https://github.com/home-assistant/core/pull/118288
+[#118291]: https://github.com/home-assistant/core/pull/118291
+[#118292]: https://github.com/home-assistant/core/pull/118292
+[#118293]: https://github.com/home-assistant/core/pull/118293
+[#118294]: https://github.com/home-assistant/core/pull/118294
+[#118295]: https://github.com/home-assistant/core/pull/118295
+[#118297]: https://github.com/home-assistant/core/pull/118297
+[#118299]: https://github.com/home-assistant/core/pull/118299
+[#118300]: https://github.com/home-assistant/core/pull/118300
+[#118301]: https://github.com/home-assistant/core/pull/118301
+[#118303]: https://github.com/home-assistant/core/pull/118303
+[#118307]: https://github.com/home-assistant/core/pull/118307
+[#118308]: https://github.com/home-assistant/core/pull/118308
+[#118309]: https://github.com/home-assistant/core/pull/118309
+[#118311]: https://github.com/home-assistant/core/pull/118311
+[#118312]: https://github.com/home-assistant/core/pull/118312
+[#118314]: https://github.com/home-assistant/core/pull/118314
+[#118317]: https://github.com/home-assistant/core/pull/118317
+[#118318]: https://github.com/home-assistant/core/pull/118318
+[#118319]: https://github.com/home-assistant/core/pull/118319
+[#118320]: https://github.com/home-assistant/core/pull/118320
+[#118321]: https://github.com/home-assistant/core/pull/118321
+[#118322]: https://github.com/home-assistant/core/pull/118322
+[#118323]: https://github.com/home-assistant/core/pull/118323
+[#118324]: https://github.com/home-assistant/core/pull/118324
+[#118325]: https://github.com/home-assistant/core/pull/118325
+[#118328]: https://github.com/home-assistant/core/pull/118328
+[#118329]: https://github.com/home-assistant/core/pull/118329
+[#118331]: https://github.com/home-assistant/core/pull/118331
+[#118332]: https://github.com/home-assistant/core/pull/118332
+[#118333]: https://github.com/home-assistant/core/pull/118333
+[#118334]: https://github.com/home-assistant/core/pull/118334
+[#118337]: https://github.com/home-assistant/core/pull/118337
+[#118338]: https://github.com/home-assistant/core/pull/118338
+[#118339]: https://github.com/home-assistant/core/pull/118339
+[#118340]: https://github.com/home-assistant/core/pull/118340
+[#118341]: https://github.com/home-assistant/core/pull/118341
+[#118342]: https://github.com/home-assistant/core/pull/118342
+[#118343]: https://github.com/home-assistant/core/pull/118343
+[#118344]: https://github.com/home-assistant/core/pull/118344
+[#118346]: https://github.com/home-assistant/core/pull/118346
+[#118349]: https://github.com/home-assistant/core/pull/118349
+[#118350]: https://github.com/home-assistant/core/pull/118350
+[#118351]: https://github.com/home-assistant/core/pull/118351
+[#118353]: https://github.com/home-assistant/core/pull/118353
+[#118354]: https://github.com/home-assistant/core/pull/118354
+[#118355]: https://github.com/home-assistant/core/pull/118355
+[#118357]: https://github.com/home-assistant/core/pull/118357
+[#118358]: https://github.com/home-assistant/core/pull/118358
+[#118359]: https://github.com/home-assistant/core/pull/118359
+[#118362]: https://github.com/home-assistant/core/pull/118362
+[#118363]: https://github.com/home-assistant/core/pull/118363
+[#118365]: https://github.com/home-assistant/core/pull/118365
+[#118367]: https://github.com/home-assistant/core/pull/118367
+[#118368]: https://github.com/home-assistant/core/pull/118368
+[#118371]: https://github.com/home-assistant/core/pull/118371
+[#118372]: https://github.com/home-assistant/core/pull/118372
+[#118373]: https://github.com/home-assistant/core/pull/118373
+[#118377]: https://github.com/home-assistant/core/pull/118377
+[#118378]: https://github.com/home-assistant/core/pull/118378
+[#118384]: https://github.com/home-assistant/core/pull/118384
+[#118388]: https://github.com/home-assistant/core/pull/118388
+[#118389]: https://github.com/home-assistant/core/pull/118389
+[#118390]: https://github.com/home-assistant/core/pull/118390
+[#118392]: https://github.com/home-assistant/core/pull/118392
+[#118393]: https://github.com/home-assistant/core/pull/118393
+[#118401]: https://github.com/home-assistant/core/pull/118401
+[#118404]: https://github.com/home-assistant/core/pull/118404
+[#118409]: https://github.com/home-assistant/core/pull/118409
+[#118410]: https://github.com/home-assistant/core/pull/118410
+[#118412]: https://github.com/home-assistant/core/pull/118412
+[#118418]: https://github.com/home-assistant/core/pull/118418
+[#118421]: https://github.com/home-assistant/core/pull/118421
+[#118422]: https://github.com/home-assistant/core/pull/118422
+[#118428]: https://github.com/home-assistant/core/pull/118428
+[#118429]: https://github.com/home-assistant/core/pull/118429
+[#118434]: https://github.com/home-assistant/core/pull/118434
+[#118441]: https://github.com/home-assistant/core/pull/118441
+[#118443]: https://github.com/home-assistant/core/pull/118443
+[#118451]: https://github.com/home-assistant/core/pull/118451
+[#118453]: https://github.com/home-assistant/core/pull/118453
+[#118462]: https://github.com/home-assistant/core/pull/118462
+[#118467]: https://github.com/home-assistant/core/pull/118467
+[#118473]: https://github.com/home-assistant/core/pull/118473
+[#118477]: https://github.com/home-assistant/core/pull/118477
+[#118478]: https://github.com/home-assistant/core/pull/118478
+[#118483]: https://github.com/home-assistant/core/pull/118483
+[#118485]: https://github.com/home-assistant/core/pull/118485
+[#118489]: https://github.com/home-assistant/core/pull/118489
+[#118491]: https://github.com/home-assistant/core/pull/118491
+[#118496]: https://github.com/home-assistant/core/pull/118496
+[#118498]: https://github.com/home-assistant/core/pull/118498
+[#118499]: https://github.com/home-assistant/core/pull/118499
+[#118500]: https://github.com/home-assistant/core/pull/118500
+[#118505]: https://github.com/home-assistant/core/pull/118505
+[#118506]: https://github.com/home-assistant/core/pull/118506
+[#118510]: https://github.com/home-assistant/core/pull/118510
+[#118512]: https://github.com/home-assistant/core/pull/118512
+[#118514]: https://github.com/home-assistant/core/pull/118514
+[#118515]: https://github.com/home-assistant/core/pull/118515
+[#118517]: https://github.com/home-assistant/core/pull/118517
+[#118518]: https://github.com/home-assistant/core/pull/118518
+[#118520]: https://github.com/home-assistant/core/pull/118520
+[#118521]: https://github.com/home-assistant/core/pull/118521
+[#118522]: https://github.com/home-assistant/core/pull/118522
+[#118526]: https://github.com/home-assistant/core/pull/118526
+[#118531]: https://github.com/home-assistant/core/pull/118531
+[#118532]: https://github.com/home-assistant/core/pull/118532
+[#118535]: https://github.com/home-assistant/core/pull/118535
+[#118538]: https://github.com/home-assistant/core/pull/118538
+[#118539]: https://github.com/home-assistant/core/pull/118539
+[#118546]: https://github.com/home-assistant/core/pull/118546
+[#118549]: https://github.com/home-assistant/core/pull/118549
+[#118554]: https://github.com/home-assistant/core/pull/118554
+[#118555]: https://github.com/home-assistant/core/pull/118555
+[#118556]: https://github.com/home-assistant/core/pull/118556
+[#118559]: https://github.com/home-assistant/core/pull/118559
+[#118566]: https://github.com/home-assistant/core/pull/118566
+[#118577]: https://github.com/home-assistant/core/pull/118577
+[#118582]: https://github.com/home-assistant/core/pull/118582
+[#118583]: https://github.com/home-assistant/core/pull/118583
+[#118590]: https://github.com/home-assistant/core/pull/118590
+[#118592]: https://github.com/home-assistant/core/pull/118592
+[#118593]: https://github.com/home-assistant/core/pull/118593
+[#118594]: https://github.com/home-assistant/core/pull/118594
+[#118608]: https://github.com/home-assistant/core/pull/118608
+[#118616]: https://github.com/home-assistant/core/pull/118616
+[#118619]: https://github.com/home-assistant/core/pull/118619
+[#118620]: https://github.com/home-assistant/core/pull/118620
+[#118633]: https://github.com/home-assistant/core/pull/118633
+[#118640]: https://github.com/home-assistant/core/pull/118640
+[#118643]: https://github.com/home-assistant/core/pull/118643
+[#118644]: https://github.com/home-assistant/core/pull/118644
+[#118655]: https://github.com/home-assistant/core/pull/118655
+[#118658]: https://github.com/home-assistant/core/pull/118658
+[#118662]: https://github.com/home-assistant/core/pull/118662
+[#118669]: https://github.com/home-assistant/core/pull/118669
+[#118671]: https://github.com/home-assistant/core/pull/118671
+[#118686]: https://github.com/home-assistant/core/pull/118686
+[#118697]: https://github.com/home-assistant/core/pull/118697
+[#118699]: https://github.com/home-assistant/core/pull/118699
+[#118702]: https://github.com/home-assistant/core/pull/118702
+[#118703]: https://github.com/home-assistant/core/pull/118703
+[#118705]: https://github.com/home-assistant/core/pull/118705
+[#118707]: https://github.com/home-assistant/core/pull/118707
+[#118708]: https://github.com/home-assistant/core/pull/118708
+[#118712]: https://github.com/home-assistant/core/pull/118712
+[#118713]: https://github.com/home-assistant/core/pull/118713
+[#118714]: https://github.com/home-assistant/core/pull/118714
+[#118718]: https://github.com/home-assistant/core/pull/118718
+[#118720]: https://github.com/home-assistant/core/pull/118720
+[#118724]: https://github.com/home-assistant/core/pull/118724
+[#118734]: https://github.com/home-assistant/core/pull/118734
+[#118735]: https://github.com/home-assistant/core/pull/118735
+[#118736]: https://github.com/home-assistant/core/pull/118736
+[#118744]: https://github.com/home-assistant/core/pull/118744
+[#118745]: https://github.com/home-assistant/core/pull/118745
+[#118746]: https://github.com/home-assistant/core/pull/118746
+[#118747]: https://github.com/home-assistant/core/pull/118747
+[#118748]: https://github.com/home-assistant/core/pull/118748
+[#118749]: https://github.com/home-assistant/core/pull/118749
+[#118752]: https://github.com/home-assistant/core/pull/118752
+[#118753]: https://github.com/home-assistant/core/pull/118753
+[#118762]: https://github.com/home-assistant/core/pull/118762
+[#118768]: https://github.com/home-assistant/core/pull/118768
+[#118773]: https://github.com/home-assistant/core/pull/118773
+[#118776]: https://github.com/home-assistant/core/pull/118776
+[#118777]: https://github.com/home-assistant/core/pull/118777
+[#118778]: https://github.com/home-assistant/core/pull/118778
+[#118781]: https://github.com/home-assistant/core/pull/118781
+[#118782]: https://github.com/home-assistant/core/pull/118782
+[#118784]: https://github.com/home-assistant/core/pull/118784
+[#118798]: https://github.com/home-assistant/core/pull/118798
+[#118804]: https://github.com/home-assistant/core/pull/118804
+[#118805]: https://github.com/home-assistant/core/pull/118805
+[#118806]: https://github.com/home-assistant/core/pull/118806
+[#118811]: https://github.com/home-assistant/core/pull/118811
+[#118822]: https://github.com/home-assistant/core/pull/118822
+[#118830]: https://github.com/home-assistant/core/pull/118830
+[#118839]: https://github.com/home-assistant/core/pull/118839
+[#118842]: https://github.com/home-assistant/core/pull/118842
+[#118853]: https://github.com/home-assistant/core/pull/118853
+[#118855]: https://github.com/home-assistant/core/pull/118855
+[#118864]: https://github.com/home-assistant/core/pull/118864
+[#118872]: https://github.com/home-assistant/core/pull/118872
+[#118875]: https://github.com/home-assistant/core/pull/118875
+[#118890]: https://github.com/home-assistant/core/pull/118890
+[#118893]: https://github.com/home-assistant/core/pull/118893
+[#68992]: https://github.com/home-assistant/core/pull/68992
+[#84464]: https://github.com/home-assistant/core/pull/84464
+[#92640]: https://github.com/home-assistant/core/pull/92640
+[@AngellusMortis]: https://github.com/AngellusMortis
+[@AnilDaoud]: https://github.com/AnilDaoud
+[@Anrijs]: https://github.com/Anrijs
+[@Bre77]: https://github.com/Bre77
+[@Bygood91]: https://github.com/Bygood91
+[@CFenner]: https://github.com/CFenner
+[@Cereal2nd]: https://github.com/Cereal2nd
+[@CoRfr]: https://github.com/CoRfr
+[@DCSBL]: https://github.com/DCSBL
+[@EuleMitKeule]: https://github.com/EuleMitKeule
+[@FWeinb]: https://github.com/FWeinb
+[@FedDam]: https://github.com/FedDam
+[@Floris272]: https://github.com/Floris272
+[@G-Two]: https://github.com/G-Two
+[@Galorhallen]: https://github.com/Galorhallen
+[@GuySie]: https://github.com/GuySie
+[@HipsterBrown]: https://github.com/HipsterBrown
+[@IceBotYT]: https://github.com/IceBotYT
+[@JakeMartin-ICL]: https://github.com/JakeMartin-ICL
+[@JeromeHXP]: https://github.com/JeromeHXP
+[@JonDeeming]: https://github.com/JonDeeming
+[@Kane610]: https://github.com/Kane610
+[@Lash-L]: https://github.com/Lash-L
+[@Links2004]: https://github.com/Links2004
+[@MatthewFlamm]: https://github.com/MatthewFlamm
+[@NECH2004]: https://github.com/NECH2004
+[@NasaGeek]: https://github.com/NasaGeek
+[@Nezz]: https://github.com/Nezz
+[@Noltari]: https://github.com/Noltari
+[@PeteRager]: https://github.com/PeteRager
+[@PhilRW]: https://github.com/PhilRW
+[@Poshy163]: https://github.com/Poshy163
+[@Quentame]: https://github.com/Quentame
+[@RJPoelstra]: https://github.com/RJPoelstra
+[@SLaks]: https://github.com/SLaks
+[@Shulyaka]: https://github.com/Shulyaka
+[@Shutgun]: https://github.com/Shutgun
+[@Sibgatulin]: https://github.com/Sibgatulin
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@Thomas55555]: https://github.com/Thomas55555
+[@Troon]: https://github.com/Troon
+[@Ulfmerbold2000]: https://github.com/Ulfmerbold2000
+[@abmantis]: https://github.com/abmantis
+[@agners]: https://github.com/agners
+[@agrauballe]: https://github.com/agrauballe
+[@albertogeniola]: https://github.com/albertogeniola
+[@allenporter]: https://github.com/allenporter
+[@allistermaguire]: https://github.com/allistermaguire
+[@andarotajo]: https://github.com/andarotajo
+[@andrewsayre]: https://github.com/andrewsayre
+[@angelnu]: https://github.com/angelnu
+[@arturyak]: https://github.com/arturyak
+[@astrandb]: https://github.com/astrandb
+[@austinmroczek]: https://github.com/austinmroczek
+[@autinerd]: https://github.com/autinerd
+[@bachya]: https://github.com/bachya
+[@bajansen]: https://github.com/bajansen
+[@balloob]: https://github.com/balloob
+[@basbruss]: https://github.com/basbruss
+[@bdraco]: https://github.com/bdraco
+[@benaclejames]: https://github.com/benaclejames
+[@benvm]: https://github.com/benvm
+[@bieniu]: https://github.com/bieniu
+[@blob810]: https://github.com/blob810
+[@boswelja]: https://github.com/boswelja
+[@bouwew]: https://github.com/bouwew
+[@bramkragten]: https://github.com/bramkragten
+[@brg468]: https://github.com/brg468
+[@c0mputerguru]: https://github.com/c0mputerguru
+[@catsmanac]: https://github.com/catsmanac
+[@cdce8p]: https://github.com/cdce8p
+[@chatziko]: https://github.com/chatziko
+[@chemelli74]: https://github.com/chemelli74
+[@chishm]: https://github.com/chishm
+[@claha]: https://github.com/claha
+[@cottsay]: https://github.com/cottsay
+[@ctalkington]: https://github.com/ctalkington
+[@d-ylee]: https://github.com/d-ylee
+[@davet2001]: https://github.com/davet2001
+[@dfaour]: https://github.com/dfaour
+[@dgomes]: https://github.com/dgomes
+[@dieselrabbit]: https://github.com/dieselrabbit
+[@dknowles2]: https://github.com/dknowles2
+[@dontinelli]: https://github.com/dontinelli
+[@edenhaus]: https://github.com/edenhaus
+[@eifinger]: https://github.com/eifinger
+[@elmurato]: https://github.com/elmurato
+[@elupus]: https://github.com/elupus
+[@emontnemery]: https://github.com/emontnemery
+[@epenet]: https://github.com/epenet
+[@erwindouna]: https://github.com/erwindouna
+[@esciara]: https://github.com/esciara
+[@ethemcemozkan]: https://github.com/ethemcemozkan
+[@farmio]: https://github.com/farmio
+[@fredrike]: https://github.com/fredrike
+[@freekode]: https://github.com/freekode
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@gnumpi]: https://github.com/gnumpi
+[@hahn-th]: https://github.com/hahn-th
+[@iMicknl]: https://github.com/iMicknl
+[@jbouwh]: https://github.com/jbouwh
+[@jesserockz]: https://github.com/jesserockz
+[@jhollowe]: https://github.com/jhollowe
+[@jjlawren]: https://github.com/jjlawren
+[@joostlek]: https://github.com/joostlek
+[@jpbede]: https://github.com/jpbede
+[@jschlyter]: https://github.com/jschlyter
+[@kaareseras]: https://github.com/kaareseras
+[@kamiyo]: https://github.com/kamiyo
+[@karwosts]: https://github.com/karwosts
+[@kibergus]: https://github.com/kibergus
+[@kingy444]: https://github.com/kingy444
+[@laurence-presland]: https://github.com/laurence-presland
+[@lboue]: https://github.com/lboue
+[@luca-angemi]: https://github.com/luca-angemi
+[@ludeeus]: https://github.com/ludeeus
+[@lunmay]: https://github.com/lunmay
+[@m10x]: https://github.com/m10x
+[@marcelveldt]: https://github.com/marcelveldt
+[@marcolivierarsenault]: https://github.com/marcolivierarsenault
+[@matrixd2]: https://github.com/matrixd2
+[@mawoka-myblock]: https://github.com/mawoka-myblock
+[@mback2k]: https://github.com/mback2k
+[@mdegat01]: https://github.com/mdegat01
+[@mib1185]: https://github.com/mib1185
+[@mj23000]: https://github.com/mj23000
+[@mkmer]: https://github.com/mkmer
+[@mrpasztoradam]: https://github.com/mrpasztoradam
+[@mtielen]: https://github.com/mtielen
+[@nopoz]: https://github.com/nopoz
+[@ollo69]: https://github.com/ollo69
+[@osohotwateriot]: https://github.com/osohotwateriot
+[@pantonvich]: https://github.com/pantonvich
+[@pemontto]: https://github.com/pemontto
+[@pfrazer]: https://github.com/pfrazer
+[@piitaya]: https://github.com/piitaya
+[@prabhjotsbhatia-ca]: https://github.com/prabhjotsbhatia-ca
+[@puddly]: https://github.com/puddly
+[@rale]: https://github.com/rale
+[@raman325]: https://github.com/raman325
+[@rikroe]: https://github.com/rikroe
+[@scop]: https://github.com/scop
+[@shelvacu]: https://github.com/shelvacu
+[@slovdahl]: https://github.com/slovdahl
+[@starkillerOG]: https://github.com/starkillerOG
+[@swcloudgenie]: https://github.com/swcloudgenie
+[@synesthesiam]: https://github.com/synesthesiam
+[@systemcrash]: https://github.com/systemcrash
+[@teharris1]: https://github.com/teharris1
+[@thecode]: https://github.com/thecode
+[@thejeffreystone]: https://github.com/thejeffreystone
+[@thomaskistler]: https://github.com/thomaskistler
+[@thytterdal]: https://github.com/thytterdal
+[@tichris0]: https://github.com/tichris0
+[@timmo001]: https://github.com/timmo001
+[@tizianodeg]: https://github.com/tizianodeg
+[@tkdrob]: https://github.com/tkdrob
+[@tr4nt0r]: https://github.com/tr4nt0r
+[@tronikos]: https://github.com/tronikos
+[@tsvi]: https://github.com/tsvi
+[@wittypluck]: https://github.com/wittypluck
+[@yuvalabou]: https://github.com/yuvalabou
+[@zweckj]: https://github.com/zweckj
+[@zxdavb]: https://github.com/zxdavb
+[abode docs]: /integrations/abode/
+[accuweather docs]: /integrations/accuweather/
+[acmeda docs]: /integrations/acmeda/
+[ads docs]: /integrations/ads/
+[advantage_air docs]: /integrations/advantage_air/
+[aemet docs]: /integrations/aemet/
+[aftership docs]: /integrations/aftership/
+[agent_dvr docs]: /integrations/agent_dvr/
+[airgradient docs]: /integrations/airgradient/
+[airly docs]: /integrations/airly/
+[airnow docs]: /integrations/airnow/
+[airq docs]: /integrations/airq/
+[airthings docs]: /integrations/airthings/
+[airthings_ble docs]: /integrations/airthings_ble/
+[airtouch5 docs]: /integrations/airtouch5/
+[airvisual_pro docs]: /integrations/airvisual_pro/
+[airzone_cloud docs]: /integrations/airzone_cloud/
+[aladdin_connect docs]: /integrations/aladdin_connect/
+[alarm_control_panel docs]: /integrations/alarm_control_panel/
+[alarmdecoder docs]: /integrations/alarmdecoder/
+[ambiclimate docs]: /integrations/ambiclimate/
+[ambient_station docs]: /integrations/ambient_station/
+[analytics_insights docs]: /integrations/analytics_insights/
+[androidtv docs]: /integrations/androidtv/
+[androidtv_remote docs]: /integrations/androidtv_remote/
+[anova docs]: /integrations/anova/
+[apple_tv docs]: /integrations/apple_tv/
+[apprise docs]: /integrations/apprise/
+[aprs docs]: /integrations/aprs/
+[apsystems docs]: /integrations/apsystems/
+[aranet docs]: /integrations/aranet/
+[arcam_fmj docs]: /integrations/arcam_fmj/
+[asuswrt docs]: /integrations/asuswrt/
+[august docs]: /integrations/august/
+[aurora docs]: /integrations/aurora/
+[aurora_abb_powerone docs]: /integrations/aurora_abb_powerone/
+[auth docs]: /integrations/auth/
+[axis docs]: /integrations/axis/
+[azure_data_explorer docs]: /integrations/azure_data_explorer/
+[baf docs]: /integrations/baf/
+[balboa docs]: /integrations/balboa/
+[bang_olufsen docs]: /integrations/bang_olufsen/
+[blink docs]: /integrations/blink/
+[blue_current docs]: /integrations/blue_current/
+[blueprint docs]: /integrations/blueprint/
+[bluetooth docs]: /integrations/bluetooth/
+[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/
+[bthome docs]: /integrations/bthome/
+[calendar docs]: /integrations/calendar/
+[camera docs]: /integrations/camera/
+[ccm15 docs]: /integrations/ccm15/
+[cert_expiry docs]: /integrations/cert_expiry/
+[climate docs]: /integrations/climate/
+[cloud docs]: /integrations/cloud/
+[co2signal docs]: /integrations/co2signal/
+[command_line docs]: /integrations/command_line/
+[config docs]: /integrations/config/
+[conversation docs]: /integrations/conversation/
+[cover docs]: /integrations/cover/
+[daikin docs]: /integrations/daikin/
+[deconz docs]: /integrations/deconz/
+[demo docs]: /integrations/demo/
+[devolo_home_control docs]: /integrations/devolo_home_control/
+[devolo_home_network docs]: /integrations/devolo_home_network/
+[dhcp docs]: /integrations/dhcp/
+[diagnostics docs]: /integrations/diagnostics/
+[discovergy docs]: /integrations/discovergy/
+[dlna_dmr docs]: /integrations/dlna_dmr/
+[dnsip docs]: /integrations/dnsip/
+[drop_connect docs]: /integrations/drop_connect/
+[dsmr_reader docs]: /integrations/dsmr_reader/
+[duotecno docs]: /integrations/duotecno/
+[dwd_weather_warnings docs]: /integrations/dwd_weather_warnings/
+[ecobee docs]: /integrations/ecobee/
+[ecovacs docs]: /integrations/ecovacs/
+[ecowitt docs]: /integrations/ecowitt/
+[efergy docs]: /integrations/efergy/
+[elgato docs]: /integrations/elgato/
+[elkm1 docs]: /integrations/elkm1/
+[elmax docs]: /integrations/elmax/
+[emonitor docs]: /integrations/emonitor/
+[energy docs]: /integrations/energy/
+[enphase_envoy docs]: /integrations/enphase_envoy/
+[environment_canada docs]: /integrations/environment_canada/
+[envisalink docs]: /integrations/envisalink/
+[epic_games_store docs]: /integrations/epic_games_store/
+[eq3btsmart docs]: /integrations/eq3btsmart/
+[esphome docs]: /integrations/esphome/
+[evil_genius_labs docs]: /integrations/evil_genius_labs/
+[evohome docs]: /integrations/evohome/
+[feedreader docs]: /integrations/feedreader/
+[file docs]: /integrations/file/
+[filesize docs]: /integrations/filesize/
+[firmata docs]: /integrations/firmata/
+[fitbit docs]: /integrations/fitbit/
+[flexit_bacnet docs]: /integrations/flexit_bacnet/
+[flo docs]: /integrations/flo/
+[flume docs]: /integrations/flume/
+[folder_watcher docs]: /integrations/folder_watcher/
+[forecast_solar docs]: /integrations/forecast_solar/
+[fritz docs]: /integrations/fritz/
+[fritzbox docs]: /integrations/fritzbox/
+[fritzbox_callmonitor docs]: /integrations/fritzbox_callmonitor/
+[fronius docs]: /integrations/fronius/
+[frontend docs]: /integrations/frontend/
+[fyta docs]: /integrations/fyta/
+[generic docs]: /integrations/generic/
+[generic_hygrostat docs]: /integrations/generic_hygrostat/
+[generic_thermostat docs]: /integrations/generic_thermostat/
+[gios docs]: /integrations/gios/
+[github docs]: /integrations/github/
+[glances docs]: /integrations/glances/
+[gogogate2 docs]: /integrations/gogogate2/
+[google docs]: /integrations/google/
+[google_assistant docs]: /integrations/google_assistant/
+[google_generative_ai_conversation docs]: /integrations/google_generative_ai_conversation/
+[google_mail docs]: /integrations/google_mail/
+[google_tasks docs]: /integrations/google_tasks/
+[google_translate docs]: /integrations/google_translate/
+[govee_ble docs]: /integrations/govee_ble/
+[govee_light_local docs]: /integrations/govee_light_local/
+[gree docs]: /integrations/gree/
+[group docs]: /integrations/group/
+[guardian docs]: /integrations/guardian/
+[habitica docs]: /integrations/habitica/
+[harmony docs]: /integrations/harmony/
+[hassio docs]: /integrations/hassio/
+[hdmi_cec docs]: /integrations/hdmi_cec/
+[history docs]: /integrations/history/
+[holiday docs]: /integrations/holiday/
+[homeassistant docs]: /integrations/homeassistant/
+[homeassistant_alerts docs]: /integrations/homeassistant_alerts/
+[homeassistant_sky_connect docs]: /integrations/homeassistant_sky_connect/
+[homekit docs]: /integrations/homekit/
+[homematicip_cloud docs]: /integrations/homematicip_cloud/
+[homewizard docs]: /integrations/homewizard/
+[honeywell docs]: /integrations/honeywell/
+[http docs]: /integrations/http/
+[huawei_lte docs]: /integrations/huawei_lte/
+[hue docs]: /integrations/hue/
+[husqvarna_automower docs]: /integrations/husqvarna_automower/
+[hydrawise docs]: /integrations/hydrawise/
+[ialarm docs]: /integrations/ialarm/
+[ibeacon docs]: /integrations/ibeacon/
+[idasen_desk docs]: /integrations/idasen_desk/
+[image_upload docs]: /integrations/image_upload/
+[imgw_pib docs]: /integrations/imgw_pib/
+[input_datetime docs]: /integrations/input_datetime/
+[insteon docs]: /integrations/insteon/
+[integration docs]: /integrations/integration/
+[intent docs]: /integrations/intent/
+[intent_script docs]: /integrations/intent_script/
+[ipp docs]: /integrations/ipp/
+[iqvia docs]: /integrations/iqvia/
+[isal docs]: /integrations/isal/
+[jellyfin docs]: /integrations/jellyfin/
+[jewish_calendar docs]: /integrations/jewish_calendar/
+[kaiterra docs]: /integrations/kaiterra/
+[kitchen_sink docs]: /integrations/kitchen_sink/
+[knx docs]: /integrations/knx/
+[kostal_plenticore docs]: /integrations/kostal_plenticore/
+[lamarzocco docs]: /integrations/lamarzocco/
+[launch_library docs]: /integrations/launch_library/
+[light docs]: /integrations/light/
+[linear_garage_door docs]: /integrations/linear_garage_door/
+[local_calendar docs]: /integrations/local_calendar/
+[local_todo docs]: /integrations/local_todo/
+[lock docs]: /integrations/lock/
+[logbook docs]: /integrations/logbook/
+[lovelace docs]: /integrations/lovelace/
+[luftdaten docs]: /integrations/luftdaten/
+[lutron docs]: /integrations/lutron/
+[manual_mqtt docs]: /integrations/manual_mqtt/
+[mastodon docs]: /integrations/mastodon/
+[matter docs]: /integrations/matter/
+[media_extractor docs]: /integrations/media_extractor/
+[media_player docs]: /integrations/media_player/
+[media_source docs]: /integrations/media_source/
+[melnor docs]: /integrations/melnor/
+[meraki docs]: /integrations/meraki/
+[met docs]: /integrations/met/
+[meteo_france docs]: /integrations/meteo_france/
+[metoffice docs]: /integrations/metoffice/
+[microBees docs]: /integrations/microBees/
+[mikrotik docs]: /integrations/mikrotik/
+[mill docs]: /integrations/mill/
+[minecraft_server docs]: /integrations/minecraft_server/
+[modern_forms docs]: /integrations/modern_forms/
+[moehlenhoff_alpha2 docs]: /integrations/moehlenhoff_alpha2/
+[monzo docs]: /integrations/monzo/
+[motionmount docs]: /integrations/motionmount/
+[mqtt docs]: /integrations/mqtt/
+[myuplink docs]: /integrations/myuplink/
+[nam docs]: /integrations/nam/
+[nest docs]: /integrations/nest/
+[nextcloud docs]: /integrations/nextcloud/
+[nextdns docs]: /integrations/nextdns/
+[nibe_heatpump docs]: /integrations/nibe_heatpump/
+[notify docs]: /integrations/notify/
+[nuki docs]: /integrations/nuki/
+[number docs]: /integrations/number/
+[nut docs]: /integrations/nut/
+[nws docs]: /integrations/nws/
+[ollama docs]: /integrations/ollama/
+[omnilogic docs]: /integrations/omnilogic/
+[onboarding docs]: /integrations/onboarding/
+[ondilo_ico docs]: /integrations/ondilo_ico/
+[onewire docs]: /integrations/onewire/
+[openai_conversation docs]: /integrations/openai_conversation/
+[opengarage docs]: /integrations/opengarage/
+[openweathermap docs]: /integrations/openweathermap/
+[opower docs]: /integrations/opower/
+[osoenergy docs]: /integrations/osoenergy/
+[overkiz docs]: /integrations/overkiz/
+[p1_monitor docs]: /integrations/p1_monitor/
+[pegel_online docs]: /integrations/pegel_online/
+[philips_js docs]: /integrations/philips_js/
+[pi_hole docs]: /integrations/pi_hole/
+[ping docs]: /integrations/ping/
+[plaato docs]: /integrations/plaato/
+[plex docs]: /integrations/plex/
+[plugwise docs]: /integrations/plugwise/
+[point docs]: /integrations/point/
+[poolsense docs]: /integrations/poolsense/
+[powerwall docs]: /integrations/powerwall/
+[profiler docs]: /integrations/profiler/
+[proximity docs]: /integrations/proximity/
+[prusalink docs]: /integrations/prusalink/
+[pure_energie docs]: /integrations/pure_energie/
+[pvpc_hourly_pricing docs]: /integrations/pvpc_hourly_pricing/
+[rachio docs]: /integrations/rachio/
+[radarr docs]: /integrations/radarr/
+[radio_browser docs]: /integrations/radio_browser/
+[rainbird docs]: /integrations/rainbird/
+[rainforest_eagle docs]: /integrations/rainforest_eagle/
+[rainmachine docs]: /integrations/rainmachine/
+[recorder docs]: /integrations/recorder/
+[renault docs]: /integrations/renault/
+[reolink docs]: /integrations/reolink/
+[repairs docs]: /integrations/repairs/
+[rest_command docs]: /integrations/rest_command/
+[rflink docs]: /integrations/rflink/
+[risco docs]: /integrations/risco/
+[roborock docs]: /integrations/roborock/
+[rtsp_to_webrtc docs]: /integrations/rtsp_to_webrtc/
+[samsungtv docs]: /integrations/samsungtv/
+[scrape docs]: /integrations/scrape/
+[screenlogic docs]: /integrations/screenlogic/
+[script docs]: /integrations/script/
+[sensibo docs]: /integrations/sensibo/
+[sensor docs]: /integrations/sensor/
+[sentry docs]: /integrations/sentry/
+[senz docs]: /integrations/senz/
+[serial docs]: /integrations/serial/
+[sharkiq docs]: /integrations/sharkiq/
+[shelly docs]: /integrations/shelly/
+[smartthings docs]: /integrations/smartthings/
+[smhi docs]: /integrations/smhi/
+[snapcast docs]: /integrations/snapcast/
+[snmp docs]: /integrations/snmp/
+[solax docs]: /integrations/solax/
+[sonos docs]: /integrations/sonos/
+[speedtestdotnet docs]: /integrations/speedtestdotnet/
+[spotify docs]: /integrations/spotify/
+[sql docs]: /integrations/sql/
+[starlink docs]: /integrations/starlink/
+[subaru docs]: /integrations/subaru/
+[sun docs]: /integrations/sun/
+[surepetcare docs]: /integrations/surepetcare/
+[switchbot_cloud docs]: /integrations/switchbot_cloud/
+[switcher_kis docs]: /integrations/switcher_kis/
+[synology_dsm docs]: /integrations/synology_dsm/
+[system_bridge docs]: /integrations/system_bridge/
+[systemmonitor docs]: /integrations/systemmonitor/
+[tado docs]: /integrations/tado/
+[tag docs]: /integrations/tag/
+[tailscale docs]: /integrations/tailscale/
+[tailwind docs]: /integrations/tailwind/
+[tankerkoenig docs]: /integrations/tankerkoenig/
+[tasmota docs]: /integrations/tasmota/
+[tedee docs]: /integrations/tedee/
+[telegram_bot docs]: /integrations/telegram_bot/
+[tellduslive docs]: /integrations/tellduslive/
+[template docs]: /integrations/template/
+[tesla_wall_connector docs]: /integrations/tesla_wall_connector/
+[teslemetry docs]: /integrations/teslemetry/
+[tessie docs]: /integrations/tessie/
+[thethingsnetwork docs]: /integrations/thethingsnetwork/
+[thread docs]: /integrations/thread/
+[tibber docs]: /integrations/tibber/
+[tolo docs]: /integrations/tolo/
+[tomorrowio docs]: /integrations/tomorrowio/
+[totalconnect docs]: /integrations/totalconnect/
+[traccar_server docs]: /integrations/traccar_server/
+[tractive docs]: /integrations/tractive/
+[trafikverket_camera docs]: /integrations/trafikverket_camera/
+[trafikverket_ferry docs]: /integrations/trafikverket_ferry/
+[trafikverket_train docs]: /integrations/trafikverket_train/
+[trafikverket_weatherstation docs]: /integrations/trafikverket_weatherstation/
+[tuya docs]: /integrations/tuya/
+[twentemilieu docs]: /integrations/twentemilieu/
+[twitch docs]: /integrations/twitch/
+[unifi docs]: /integrations/unifi/
+[unifiprotect docs]: /integrations/unifiprotect/
+[universal docs]: /integrations/universal/
+[upcloud docs]: /integrations/upcloud/
+[upnp docs]: /integrations/upnp/
+[utility_meter docs]: /integrations/utility_meter/
+[v2c docs]: /integrations/v2c/
+[vacuum docs]: /integrations/vacuum/
+[vallox docs]: /integrations/vallox/
+[velbus docs]: /integrations/velbus/
+[venstar docs]: /integrations/venstar/
+[vera docs]: /integrations/vera/
+[vesync docs]: /integrations/vesync/
+[viam docs]: /integrations/viam/
+[vicare docs]: /integrations/vicare/
+[vizio docs]: /integrations/vizio/
+[vlc_telnet docs]: /integrations/vlc_telnet/
+[vodafone_station docs]: /integrations/vodafone_station/
+[waqi docs]: /integrations/waqi/
+[water_heater docs]: /integrations/water_heater/
+[waze_travel_time docs]: /integrations/waze_travel_time/
+[weather docs]: /integrations/weather/
+[webmin docs]: /integrations/webmin/
+[webostv docs]: /integrations/webostv/
+[websocket_api docs]: /integrations/websocket_api/
+[wemo docs]: /integrations/wemo/
+[whirlpool docs]: /integrations/whirlpool/
+[withings docs]: /integrations/withings/
+[wiz docs]: /integrations/wiz/
+[wled docs]: /integrations/wled/
+[wolflink docs]: /integrations/wolflink/
+[workday docs]: /integrations/workday/
+[wyoming docs]: /integrations/wyoming/
+[xbox docs]: /integrations/xbox/
+[xiaomi_ble docs]: /integrations/xiaomi_ble/
+[xmpp docs]: /integrations/xmpp/
+[yale_smart_alarm docs]: /integrations/yale_smart_alarm/
+[yalexs_ble docs]: /integrations/yalexs_ble/
+[yolink docs]: /integrations/yolink/
+[youless docs]: /integrations/youless/
+[youtube docs]: /integrations/youtube/
+[zamg docs]: /integrations/zamg/
+[zeversolar docs]: /integrations/zeversolar/
+[zha docs]: /integrations/zha/
+[zodiac docs]: /integrations/zodiac/
+[zone docs]: /integrations/zone/
+[zwave_js docs]: /integrations/zwave_js/
\ No newline at end of file
diff --git a/source/skyconnect/index.html b/source/connectzbt1/index.html
similarity index 87%
rename from source/skyconnect/index.html
rename to source/connectzbt1/index.html
index b2766ed1d63..8bf225bef4e 100644
--- a/source/skyconnect/index.html
+++ b/source/connectzbt1/index.html
@@ -1,14 +1,14 @@
---
layout: landingpage
-title: "Home Assistant SkyConnect"
+title: "Home Assistant Connect ZBT-1"
description: "Best way to add Zigbee and Thread to Home Assistant"
date: 2022-10-05
-tagline: Home Assistant SkyConnect
+tagline: Home Assistant Connect ZBT-1
tagline_wide: false
-og_image: /images/skyconnect/skyconnect-cover.png
-hero_image: /images/skyconnect/skyconnect_horizontal.png
+og_image: /images/connectzbt1/connectzbt1-cover.jpg
+hero_image: /images/connectzbt1/connectzbt1_horizontal.png
frontpage: true
-frontpage_image: /images/skyconnect/skyconnect-cover.png
+frontpage_image: /images/connectzbt1/connectzbt1-cover.jpg
---