diff --git a/CODEOWNERS b/CODEOWNERS index a0e19853f5c..1f48d53b984 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -132,7 +132,6 @@ source/_integrations/crownstone.markdown @Crownstone @RicArch97 source/_integrations/cups.markdown @fabaff source/_integrations/dacia.markdown @epenet source/_integrations/daikin.markdown @fredrike -source/_integrations/darksky.markdown @fabaff source/_integrations/debugpy.markdown @frenck source/_integrations/deconz.markdown @Kane610 source/_integrations/default_config.markdown @home-assistant/core @@ -197,6 +196,7 @@ source/_integrations/epson.markdown @pszafer source/_integrations/epsonworkforce.markdown @ThaStealth source/_integrations/eq3btsmart.markdown @rytilahti source/_integrations/escea.markdown @lazdavila +source/_integrations/esera_onewire.markdown @garbled1 @epenet source/_integrations/esphome.markdown @OttoWinter @jesserockz source/_integrations/eufylife_ble.markdown @bdr99 source/_integrations/evil_genius_labs.markdown @balloob @@ -376,7 +376,7 @@ source/_integrations/light.markdown @home-assistant/core source/_integrations/linux_battery.markdown @fabaff source/_integrations/litejet.markdown @joncar source/_integrations/litterrobot.markdown @natekspencer @tkdrob -source/_integrations/livisi.markdown @StefanIacobLivisi +source/_integrations/livisi.markdown @StefanIacobLivisi @planbnet source/_integrations/local_calendar.markdown @allenporter source/_integrations/local_ip.markdown @issacg source/_integrations/lock.markdown @home-assistant/core @@ -447,7 +447,7 @@ source/_integrations/network.markdown @home-assistant/core source/_integrations/nexia.markdown @bdraco source/_integrations/nexity.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/nextbus.markdown @vividboarder -source/_integrations/nextcloud.markdown @meichthys +source/_integrations/nextcloud.markdown @mib1185 source/_integrations/nextdns.markdown @bieniu source/_integrations/nfandroidtv.markdown @tkdrob source/_integrations/nibe_heatpump.markdown @elupus @@ -471,7 +471,7 @@ source/_integrations/nut.markdown @bdraco @ollo69 source/_integrations/nutrichef.markdown @bdraco source/_integrations/nws.markdown @MatthewFlamm @kamiyo source/_integrations/nzbget.markdown @chriscla -source/_integrations/obihai.markdown @dshokouhi +source/_integrations/obihai.markdown @dshokouhi @ejpenney source/_integrations/octoprint.markdown @rfleming71 source/_integrations/ohmconnect.markdown @robbiet480 source/_integrations/ombi.markdown @larssont @@ -531,6 +531,7 @@ source/_integrations/qbittorrent.markdown @geoffreylagaisse source/_integrations/qingping.markdown @bdraco @skgsergio source/_integrations/qld_bushfire.markdown @exxamalte source/_integrations/qnap_qsw.markdown @Noltari +source/_integrations/quadrafire.markdown @jeeftor source/_integrations/quantum_gateway.markdown @cisasteelersfan source/_integrations/qvr_pro.markdown @oblogic7 source/_integrations/qwikswitch.markdown @kellerza @@ -599,7 +600,7 @@ source/_integrations/senz.markdown @milanmeu source/_integrations/serial.markdown @fabaff source/_integrations/seven_segments.markdown @fabaff source/_integrations/sfr_box.markdown @epenet -source/_integrations/sharkiq.markdown @JeffResc @funkybunch @AritroSaha10 +source/_integrations/sharkiq.markdown @JeffResc @funkybunch source/_integrations/shell_command.markdown @home-assistant/core source/_integrations/shelly.markdown @balloob @bieniu @thecode @chemelli74 @bdraco source/_integrations/shodan.markdown @fabaff @@ -630,6 +631,7 @@ source/_integrations/smarttub.markdown @mdz source/_integrations/smarty.markdown @z0mbieprocess source/_integrations/smhi.markdown @gjohansson-ST source/_integrations/sms.markdown @ocalvo +source/_integrations/snapcast.markdown @luar123 source/_integrations/snooz.markdown @AustinBrunkhorst source/_integrations/solaredge.markdown @frenck source/_integrations/solaredge_local.markdown @drobtravels @scheric @@ -651,7 +653,7 @@ source/_integrations/squeezebox.markdown @rajlaud source/_integrations/srp_energy.markdown @briglx source/_integrations/starline.markdown @anonym-tsk source/_integrations/starlink.markdown @boswelja -source/_integrations/statistics.markdown @fabaff @ThomDietrich +source/_integrations/statistics.markdown @ThomDietrich source/_integrations/steam_online.markdown @tkdrob source/_integrations/steamist.markdown @bdraco source/_integrations/stiebel_eltron.markdown @fucm @@ -695,7 +697,6 @@ source/_integrations/thermoplus.markdown @bdraco source/_integrations/thermopro.markdown @bdraco source/_integrations/thethingsnetwork.markdown @fabaff source/_integrations/thread.markdown @home-assistant/core -source/_integrations/threshold.markdown @fabaff source/_integrations/tibber.markdown @danielhiversen source/_integrations/tile.markdown @bachya source/_integrations/tilt_ble.markdown @apt-itude @@ -738,7 +739,8 @@ source/_integrations/vallox.markdown @andre-richter @slovdahl @viiru- source/_integrations/velbus.markdown @Cereal2nd @brefra source/_integrations/velux.markdown @Julius2342 source/_integrations/venstar.markdown @garbled1 -source/_integrations/verisure.markdown @frenck +source/_integrations/verisure.markdown @frenck @niro1987 +source/_integrations/vermont_castings.markdown @jeeftor source/_integrations/versasense.markdown @flamm3blemuff1n source/_integrations/version.markdown @ludeeus source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey @@ -747,6 +749,7 @@ source/_integrations/vilfo.markdown @ManneW source/_integrations/vivotek.markdown @HarlemSquirrel source/_integrations/vizio.markdown @raman325 source/_integrations/vlc_telnet.markdown @rodripf @MartinHjelmare +source/_integrations/voice_assistant.markdown @balloob @synesthesiam source/_integrations/volumio.markdown @OnFreund source/_integrations/volvooncall.markdown @molobrakos source/_integrations/vulcan.markdown @Antoni-Czaplicki @@ -771,7 +774,7 @@ source/_integrations/withings.markdown @vangorra source/_integrations/wiz.markdown @sbidy source/_integrations/wled.markdown @frenck source/_integrations/wolflink.markdown @adamkrol93 -source/_integrations/workday.markdown @fabaff +source/_integrations/workday.markdown @fabaff @gjohansson-ST source/_integrations/worldclock.markdown @fabaff source/_integrations/ws66i.markdown @ssaenger source/_integrations/xbox.markdown @hunterjm diff --git a/_config.yml b/_config.yml index e288df3da69..c86f15642e1 100644 --- a/_config.yml +++ b/_config.yml @@ -109,9 +109,9 @@ social: # Home Assistant release details current_major_version: 2023 -current_minor_version: 3 -current_patch_version: 6 -date_released: 2023-03-22 +current_minor_version: 4 +current_patch_version: 0 +date_released: 2023-04-05 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 9aaed950818..2e48f0bf1a0 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -63,19 +63,19 @@ Jinja supports a set of language extensions that add new functionality to the la To improve the experience of writing Jinja templates, we have enabled the following extensions: -* [Loop Controls](https://jinja.palletsprojects.com/en/3.0.x/extensions/#loop-controls) (`break` and `continue`) +- [Loop Controls](https://jinja.palletsprojects.com/en/3.0.x/extensions/#loop-controls) (`break` and `continue`) ### Reusing Templates -You can write reusable Jinja templates by adding them to a `custom_jinja` folder under your +You can write reusable Jinja templates by adding them to a `custom_templates` folder under your configuration directory. All template files must have the `.jinja` extension and be less than 5MiB. Templates in this folder will be loaded at startup. To reload the templates without -restarting Home Assistant, invoke the `homeassistant.reload_custom_jinja` service. +restarting Home Assistant, invoke the `homeassistant.reload_custom_templates` service. Once the templates are loaded, Jinja [includes](https://jinja.palletsprojects.com/en/3.0.x/templates/#include) and [imports](https://jinja.palletsprojects.com/en/3.0.x/templates/#import) will work -using `config/custom_jinja` as the base directory. +using `config/custom_templates` as the base directory. -For example, you might define a macro in a template in `config/custom_jinja/formatter.jinja`: +For example, you might define a macro in a template in `config/custom_templates/formatter.jinja`: {% raw %} diff --git a/source/_includes/integrations/config_flow.md b/source/_includes/integrations/config_flow.md index 3d0c39967a5..4eefb28af57 100644 --- a/source/_includes/integrations/config_flow.md +++ b/source/_includes/integrations/config_flow.md @@ -16,7 +16,7 @@ away. {% details "Manual configuration steps" %} {% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf or page.ha_mqtt %} -If there wasn't any discovered automatically, don't worry! You can set up a +If it wasn't discovered automatically, don't worry! You can set up a manual integration entry: {% else %} If the above My button doesn't work, you can also perform the following steps diff --git a/source/_integrations/edl21.markdown b/source/_integrations/edl21.markdown index 1198593a81a..8b3205861b5 100644 --- a/source/_integrations/edl21.markdown +++ b/source/_integrations/edl21.markdown @@ -8,7 +8,8 @@ ha_release: 0.107 ha_domain: edl21 ha_platforms: - sensor -ha_integration_type: integration +ha_integration_type: hub +ha_config_flow: true --- The `edl21` integration lets you read German EDL21 smart meters using [SML](https://de.wikipedia.org/wiki/Smart_Message_Language) from Home Assistant. diff --git a/source/_integrations/esera_onewire.markdown b/source/_integrations/esera_onewire.markdown index 15b6386ff03..5ede478d2e5 100644 --- a/source/_integrations/esera_onewire.markdown +++ b/source/_integrations/esera_onewire.markdown @@ -1,6 +1,6 @@ --- title: ESERA 1-Wire -description: Instructions on how to integrate ESERA 1-Wire sensors into Home Assistant. +description: Connect and control your ESERA 1-Wire devices using the 1-Wire integration ha_category: - DIY ha_domain: esera_onewire diff --git a/source/_integrations/frontier_silicon.markdown b/source/_integrations/frontier_silicon.markdown index dbc0c884a47..7df6014cf04 100644 --- a/source/_integrations/frontier_silicon.markdown +++ b/source/_integrations/frontier_silicon.markdown @@ -89,4 +89,4 @@ This renders the usage of [UNDOK] almost impossible for these older devices, as [MD 87466]: https://www.conrad.com/p/medion-p83302-md-87466-internet-kitchen-radio-dab-fm-aux-internet-radio-dlna-compatible-white-1434428 [Radio 3sixty (2019)]: https://teufel.de/radio-3sixty-2019-105437000 [SIRD 14 C2 (archived website)]: https://web.archive.org/web/20191011141311/https://www.silvercrest-multiroom.de/produkte/stereo-internet-radio/ -[Roberts Stream 94i]: https://www.robertsradio.com/en-gb/stream-94i \ No newline at end of file +[Roberts Stream 94i]: https://www.robertsradio.com/en-gb/stream-94i diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index 58085970eec..74175fa4c64 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -29,14 +29,14 @@ Reload all YAML configuration that can be reloaded without restarting Home Assis It calls the `reload` service on all domains that have it available. Additionally, it reloads the core configuration (equivalent to calling -`homeassistant.reload_core_config`), themes (`frontend.reload_themes`), and custom Jinja (`homeassistant.reload_custom_jinja`). +`homeassistant.reload_core_config`), themes (`frontend.reload_themes`), and custom Jinja (`homeassistant.reload_custom_templates`). Prior to reloading, a basic configuration check is performed. If that fails, the reload will not be performed and will raise an error. -### Service `homeassistant.reload_custom_jinja` +### Service `homeassistant.reload_custom_templates` -Reload all Jinja templates in the `config/custom_jinja` directory. Changes to these templates +Reload all Jinja templates in the `config/custom_templates` directory. Changes to these templates will take effect the next time an importing template is rendered. ### Service `homeassistant.reload_config_entry` diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown index 7a769bb4daa..bab39c40ff0 100644 --- a/source/_integrations/imap.markdown +++ b/source/_integrations/imap.markdown @@ -180,4 +180,4 @@ template: {% endraw %} -By making small changes to the regular expressions defined above, a similar structure can parse other types of data out of the body text of other emails. \ No newline at end of file +By making small changes to the regular expressions defined above, a similar structure can parse other types of data out of the body text of other emails. diff --git a/source/_integrations/litejet.markdown b/source/_integrations/litejet.markdown index 14aa49a501e..616093d57f4 100644 --- a/source/_integrations/litejet.markdown +++ b/source/_integrations/litejet.markdown @@ -16,7 +16,8 @@ ha_platforms: - switch ha_codeowners: - '@joncar' -ha_integration_type: integration +ha_integration_type: hub +ha_quality_scale: platinum --- LiteJet is a centralized lighting system that predates most home automation technology. All lights and wall switches are wired to a central panel. This central panel has a serial port interface that allows a computer to control the system via LiteJet's third party protocol. Home Assistant integrates the LiteJet 3rd party protocol and allows you to get the status and control the connected lights. This integration also supports the Centralite Elegance and Centralite Jetstream. diff --git a/source/_integrations/livisi.markdown b/source/_integrations/livisi.markdown index 39325440605..aab54aef6a9 100644 --- a/source/_integrations/livisi.markdown +++ b/source/_integrations/livisi.markdown @@ -10,6 +10,7 @@ ha_release: 2022.12 ha_config_flow: true ha_codeowners: - '@StefanIacobLivisi' + - '@planbnet' ha_domain: livisi ha_platforms: - binary_sensor diff --git a/source/_integrations/local_calendar.markdown b/source/_integrations/local_calendar.markdown index d222b0f6e63..265abf7d241 100644 --- a/source/_integrations/local_calendar.markdown +++ b/source/_integrations/local_calendar.markdown @@ -9,6 +9,7 @@ ha_config_flow: true ha_domain: local_calendar ha_platforms: - calendar + - diagnostics ha_codeowners: - '@allenporter' ha_integration_type: integration diff --git a/source/_integrations/nextcloud.markdown b/source/_integrations/nextcloud.markdown index ea4aaf85cfb..9589b82a639 100644 --- a/source/_integrations/nextcloud.markdown +++ b/source/_integrations/nextcloud.markdown @@ -9,7 +9,7 @@ ha_release: 0.108 ha_domain: nextcloud ha_config_flow: true ha_codeowners: - - '@meichthys' + - '@mib1185' ha_platforms: - binary_sensor - sensor diff --git a/source/_integrations/nuki.markdown b/source/_integrations/nuki.markdown index 8ea85db0c10..e9accbf5268 100644 --- a/source/_integrations/nuki.markdown +++ b/source/_integrations/nuki.markdown @@ -4,7 +4,7 @@ description: Instructions on how to integrate a Nuki Smart Lock devices. ha_category: - Lock ha_release: 0.38 -ha_iot_class: Local Push +ha_iot_class: Local Polling ha_codeowners: - '@pschmitt' - '@pvizeli' diff --git a/source/_integrations/obihai.markdown b/source/_integrations/obihai.markdown index 64eae59afa5..a7bd5328d3e 100644 --- a/source/_integrations/obihai.markdown +++ b/source/_integrations/obihai.markdown @@ -11,6 +11,7 @@ ha_codeowners: - '@ejpenney' ha_domain: obihai ha_platforms: + - button - sensor ha_integration_type: integration --- diff --git a/source/_integrations/prosegur.markdown b/source/_integrations/prosegur.markdown index 9575f3dbdc3..850c06e4930 100644 --- a/source/_integrations/prosegur.markdown +++ b/source/_integrations/prosegur.markdown @@ -12,6 +12,8 @@ ha_domain: prosegur ha_config_flow: true ha_platforms: - alarm_control_panel + - camera + - diagnostics ha_integration_type: integration --- @@ -30,4 +32,3 @@ There is currently support for the following device types within Home Assistant: ### Service `camera.request_image` This service will have Prosegur cloud service "Request image" from your local camera. This service should only be called seldom, as Prosegur tends to throttle this service for long periods of time, resulting in errors for both this integration and your Prosegur mobile application. - diff --git a/source/_integrations/qbittorrent.markdown b/source/_integrations/qbittorrent.markdown index 1b67f69b98e..60010a3df09 100644 --- a/source/_integrations/qbittorrent.markdown +++ b/source/_integrations/qbittorrent.markdown @@ -11,7 +11,7 @@ ha_codeowners: - '@geoffreylagaisse' ha_platforms: - sensor -ha_integration_type: integration +ha_integration_type: service --- The `qbittorrent` platform allows you to monitor your downloads with [qBittorrent](https://www.qbittorrent.org/) from within Home Assistant and setup automations based on the information. diff --git a/source/_integrations/quadrafire.markdown b/source/_integrations/quadrafire.markdown index 568767d6bdb..34629ce95c1 100644 --- a/source/_integrations/quadrafire.markdown +++ b/source/_integrations/quadrafire.markdown @@ -1,6 +1,6 @@ --- -title: "Quadra-Fire" -description: Connect and control your Monessen fireplace using the IntelliFire integration +title: Quadra-Fire +description: Connect and control your Quadra-Fire devices using the IntelliFire integration ha_category: - Binary Sensor - Climate @@ -13,9 +13,10 @@ ha_domain: quadrafire ha_integration_type: virtual ha_supporting_domain: intellifire ha_supporting_integration: IntelliFire -ha_release: 2022.3 +ha_release: 2022.2 ha_codeowners: - '@jeeftor' +ha_config_flow: true ha_platforms: - binary_sensor - climate @@ -25,6 +26,7 @@ ha_platforms: - sensor - switch ha_iot_class: Local Polling +ha_dhcp: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index e9c650cd731..e403324f7a6 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -12,8 +12,13 @@ ha_codeowners: ha_config_flow: true ha_platforms: - binary_sensor + - button - camera + - light - number + - select + - siren + - switch - update ha_integration_type: integration ha_dhcp: true diff --git a/source/_integrations/snapcast.markdown b/source/_integrations/snapcast.markdown index e453596d904..5fac754680c 100644 --- a/source/_integrations/snapcast.markdown +++ b/source/_integrations/snapcast.markdown @@ -10,6 +10,8 @@ ha_config_flow: true ha_platforms: - media_player ha_integration_type: integration +ha_codeowners: + - '@luar123' --- The Snapcast integration allows you to control [Snapcast](https://github.com/badaix/snapcast) from Home Assistant. diff --git a/source/_integrations/solaredge.markdown b/source/_integrations/solaredge.markdown index 3cdb077aba5..6818f8548a0 100644 --- a/source/_integrations/solaredge.markdown +++ b/source/_integrations/solaredge.markdown @@ -25,4 +25,3 @@ The SolarEdge Monitoring API has a daily rate limit of 300 requests. In order to {% include integrations/config_flow.md %} - diff --git a/source/_integrations/starlink.markdown b/source/_integrations/starlink.markdown index ba26ea55308..cc27a0d9570 100644 --- a/source/_integrations/starlink.markdown +++ b/source/_integrations/starlink.markdown @@ -16,6 +16,7 @@ ha_domain: starlink ha_platforms: - binary_sensor - button + - diagnostics - sensor - switch ha_integration_type: integration diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown index 79d927ae29a..1029f8e1d83 100644 --- a/source/_integrations/sun.markdown +++ b/source/_integrations/sun.markdown @@ -11,6 +11,8 @@ ha_iot_class: Calculated ha_domain: sun ha_config_flow: true ha_integration_type: integration +ha_platforms: + - sensor --- The sun integration will use the location as diff --git a/source/_integrations/threshold.markdown b/source/_integrations/threshold.markdown index b6f18c12efb..997fb974043 100644 --- a/source/_integrations/threshold.markdown +++ b/source/_integrations/threshold.markdown @@ -8,8 +8,6 @@ ha_category: ha_iot_class: Local Polling ha_release: 0.34 ha_quality_scale: internal -ha_codeowners: - - '@fabaff' ha_domain: threshold ha_config_flow: true ha_platforms: diff --git a/source/_integrations/tplink_omada.markdown b/source/_integrations/tplink_omada.markdown index 73d5ddb0db9..e4970b47859 100644 --- a/source/_integrations/tplink_omada.markdown +++ b/source/_integrations/tplink_omada.markdown @@ -3,6 +3,7 @@ title: TP-Link Omada description: Instructions on integrating TP-Link Omada SDN networking devices to Home Assistant. ha_category: - Hub + - Update ha_release: 2023.3 ha_iot_class: Local Polling ha_config_flow: true @@ -11,6 +12,7 @@ ha_codeowners: ha_domain: tplink_omada ha_platforms: - switch + - update ha_integration_type: hub --- diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown index d3fa2ed9664..020021a5a2b 100644 --- a/source/_integrations/verisure.markdown +++ b/source/_integrations/verisure.markdown @@ -14,6 +14,7 @@ ha_iot_class: Cloud Polling ha_domain: verisure ha_codeowners: - '@frenck' + - '@niro1987' ha_platforms: - alarm_control_panel - binary_sensor diff --git a/source/_integrations/vermont_castings.markdown b/source/_integrations/vermont_castings.markdown index 4b92e9d6471..1379e291f13 100644 --- a/source/_integrations/vermont_castings.markdown +++ b/source/_integrations/vermont_castings.markdown @@ -1,6 +1,6 @@ --- -title: "Vermont Castings" -description: Connect and control your Vermont Casings fireplace using the IntelliFire integration +title: Vermont Castings +description: Connect and control your Vermont Castings devices using the IntelliFire integration ha_category: - Binary Sensor - Climate @@ -13,9 +13,10 @@ ha_domain: vermont_castings ha_integration_type: virtual ha_supporting_domain: intellifire ha_supporting_integration: IntelliFire -ha_release: 2022.3 +ha_release: 2022.2 ha_codeowners: - '@jeeftor' +ha_config_flow: true ha_platforms: - binary_sensor - climate @@ -25,6 +26,7 @@ ha_platforms: - sensor - switch ha_iot_class: Local Polling +ha_dhcp: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown index 2df61cc8bf3..d4ece32357e 100644 --- a/source/_integrations/vesync.markdown +++ b/source/_integrations/vesync.markdown @@ -14,6 +14,7 @@ ha_codeowners: - '@thegardenmonkey' ha_domain: vesync ha_platforms: + - diagnostics - fan - light - sensor diff --git a/source/_integrations/voice_assistant.markdown b/source/_integrations/voice_assistant.markdown index 9e895a982f6..3c4e803adcc 100644 --- a/source/_integrations/voice_assistant.markdown +++ b/source/_integrations/voice_assistant.markdown @@ -5,12 +5,12 @@ ha_category: - Voice ha_iot_class: Local Push ha_release: '2023.4' -ha_config_flow: false ha_codeowners: - '@balloob' - '@synesthesiam' ha_domain: voice_assistant ha_integration_type: integration +ha_quality_scale: internal --- The Voice Assistant integration contains logic for running *pipelines*, which perform the common steps of a voice assistant like [Assist](/docs/assist/). diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index 62912fcad03..f8f1a12b3ed 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -9,6 +9,7 @@ ha_release: 0.41 ha_quality_scale: internal ha_codeowners: - '@fabaff' + - '@gjohansson-ST' ha_domain: workday ha_platforms: - binary_sensor diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index 8453024e2dd..8656bf34625 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -44,18 +44,56 @@ ha_integration_type: hub ha_zeroconf: true --- -This integration allows you to control a Z-Wave network via the [Z-Wave JS](https://zwave-js.github.io/node-zwave-js/#/) driver. +The Z-Wave integration allows you to control a Z-Wave network via the [Z-Wave JS](https://zwave-js.github.io/node-zwave-js/#/) driver. -To Run Z-Wave you will need a [Supported Z-Wave dongle](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules), a running Z-Wave JS server (using only **one** of the add-ons or installation methods described below), and the Z-Wave integration. +## Overview -{% include integrations/config_flow.md %} +To run a Z-Wave network, you need the following elements: -If you run Home Assistant Container, Home Assistant Core, or you don't want to use the built-in Z-Wave JS Server add-on, please see the [advanced installation instructions](#advanced-installation-instructions). +* A [supported Z-Wave controller](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules). First-time user? For recommendations on what to buy, go [here](integrations/zwave_js/#which-z-wave-controller-should-i-buy). +* A running Z-Wave JS server. +* An installed Z-Wave integration in Home Assistant. -For new installations, network security keys will be automatically generated for you. If this Z-Wave stick has already been paired with secure devices, you need to enter the previously used network key as the S0 network key. S2 security keys will be automatically generated for you. Make sure that you keep a backup of these keys in a safe place in case you need to move your Z-Wave stick to another device. +## Setting up a Z-Wave JS server + +The easiest way to get started is by using the built-in Z-Wave JS add-on in Home Assistant. + +For other ways to setup a Z-Wave server, refer to the [advanced installation instructions](#advanced-installation-instructions). + +Follow these steps: + +1. Open the Home Assistant user interface. +1. Plug the Z-Wave dongle into the device running Home Assistant. + * Most likely, your dongle will be recognized automatically. On the user interface, you will be asked if you want to set up this device with the Z-Wave JS add-on. Select **Submit**. + * If your dongle is not recognized, follow these steps: + +{% details "Manual setup steps" %} +Use this My button: + +{% my config_flow_start badge domain="zwave_js" %}, or follow these steps: + +* Browse to your Home Assistant instance. +* In the sidebar click on _**{% my config icon %}**_. +* From the configuration menu select: _**{% my integrations %}**_. +* In the bottom right, click on the + _**{% my config_flow_start icon domain="zwave_js" %}**_ button. +* From the list, search and select _**"Z-Wave"**_. +* Follow the instructions on screen to complete the set up. + +{% enddetails %} + +3. Wait for the installation to complete. +1. You are prompted for network security keys. + * If you are using Z-Wave for the first time, leave all the fields empty and select **Submit**. The system will generate network security keys for you. + * If this Z-Wave dongle has already been paired with secure devices, you need to enter the previously used network key as the S0 network key. S2 security keys will be automatically generated for you. + * Make sure that you keep a backup of these keys in a safe place in case you need to move your Z-Wave dongle to another device. Copy and paste them somewhere safe. +1. Wait for the Z-Wave JS add-on to start up. +1. Once the installation is complete, the **Device info** of the Z-Wave controller is shown. + * You successfully installed the Z-Wave integration and the Z-Wave JS add-on. + * You can now add devices to the Z-Wave network.

-While your Z-Wave mesh is permanently stored on your stick, the additional metadata is not. When the Z-Wave integration starts up the first time, it will interview your entire Z-Wave network. Depending on the number of devices paired with the Z-Wave stick, this can take a while. You can speed up this process by manually waking up your battery-powered devices. Most of the time this is a press on the button on those devices (see their manual). It is not necessary to exclude/re-include devices from the mesh. +While your Z-Wave mesh is permanently stored on your dongle, the additional metadata is not. When the Z-Wave integration starts up the first time, it will interview your entire Z-Wave network. Depending on the number of devices paired with the Z-Wave dongle, this can take a while. You can speed up this process by manually waking up your battery-powered devices. Most of the time, this is a button press on those devices (see their manual). It is not necessary to exclude and re-include devices from the mesh.

## Services @@ -64,14 +102,14 @@ While your Z-Wave mesh is permanently stored on your stick, the additional metad This service will update a configuration parameter. To update multiple partial parameters in a single call, use the `zwave_js.bulk_set_partial_config_parameters` service. -| Service Data Attribute | Required | Description | -|------------------------ |----------- |------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `device_id` | no | Device ID (or list of device IDs) to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `parameter` | yes | The parameter number or the name of the property. The name of the property is case sensitive. | -| `bitmask` | no | The bitmask for a partial parameter in hex (0xff) or decimal (255) format. If the name of the parameter is provided, this is not needed. | -| `value` | yes | The target value for the parameter as the integer value or the state label. The state label is case sensitive. | +| Service Data Attribute | Required | Description | +|------------------------ |----------- |------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Entity (or list of entities) to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `device_id` | no | Device ID (or list of device IDs) to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `parameter` | yes | The parameter number or the name of the property. The name of the property is case sensitive. | +| `bitmask` | no | The bitmask for a partial parameter in hex (0xff) or decimal (255) format. If the name of the parameter is provided, this is not needed. | +| `value` | yes | The target value for the parameter as the integer value or the state label. The state label is case sensitive. | #### Examples of setting a single parameter value @@ -117,13 +155,13 @@ data: This service will bulk set multiple partial configuration parameters. Be warned that correctly using this service requires advanced knowledge of Z-Wave to use correctly. -| Service Data Attribute | Required | Description | -|------------------------ |----------- |------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `device_id` | no | Device ID (or list of device IDs) to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `area_id` | no | Area ID (or list of area IDs) for devices/entities to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `parameter` | yes | The parameter number of the property. The name of the property is case sensitive. | -| `value` | yes | Either the raw integer value that you want to set for the entire parameter, or a dictionary where the keys are either the bitmasks (in integer or hex form) or the partial parameter name and the values are the value you want to set on each partial (either the integer value or a named state when applicable). Note that when using a dictionary, and bitmasks that are not provided will be set to their currently cached values. | +| Service Data Attribute | Required | Description | +|------------------------ |----------- |------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Entity (or list of entities) to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `device_id` | no | Device ID (or list of device IDs) to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `parameter` | yes | The parameter number of the property. The name of the property is case sensitive. | +| `value` | yes | Either the raw integer value that you want to set for the entire parameter, or a dictionary where the keys are either the bitmasks (in integer or hex form) or the partial parameter name and the values are the value you want to set on each partial (either the integer value or a named state when applicable). Note that when using a dictionary, and bitmasks that are not provided will be set to their currently cached values. | #### Examples of bulk setting partial parameter values @@ -206,58 +244,58 @@ data: This service will refresh the value(s) for an entity. This service will generate extra traffic on your Z-Wave network and should be used sparingly. Updates from devices on battery may take some time to be received. -| Service Data Attribute | Required | Description | -|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | yes | Entity or list of entities to refresh values for. | -| `refresh_all_values` | no | Whether all values should be refreshed. If `false`, only the primary value will be refreshed. If `true`, all watched values will be refreshed. | +| Service Data Attribute | Required | Description | +|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | yes | Entity or list of entities to refresh values for. | +| `refresh_all_values` | no | Whether all values should be refreshed. If `false`, only the primary value will be refreshed. If `true`, all watched values will be refreshed. | ### Service `zwave_js.set_value` This service will set a value on a Z-Wave device. It is for advanced use cases where you need to modify the state of a node and can't do it using native Home Assistant entity functionality. Be warned that correctly using this service requires advanced knowledge of Z-Wave. The service provides minimal validation and blindly calls the Z-Wave JS API, so if you are having trouble using it, it is likely because you are providing an incorrect value somewhere. To set a config parameter, you should use the `zwave_js.set_config_parameter` or `zwave_js.bulk_set_partial_config_parameters` services instead of this one. -| Service Data Attribute | Required | Description | -|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `device_id` | no | Device ID (or list of device IDs) to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `command_class` | yes | ID of Command Class that you want to set the value for. | -| `property` | yes | ID of Property that you want to set the value for. | -| `property_key` | no | ID of Property Key that you want to set the value for. | -| `endpoint` | no | ID of Endpoint that you want to set the value for. | -| `value` | yes | The new value that you want to set. | -| `options` | no | Set value options map. Refer to the Z-Wave JS documentation for more information on what options can be set. | -| `wait_for_result` | no | Boolean that indicates whether or not to wait for a response from the node. If not included in the payload, the integration will decide whether to wait or not. If set to `true`, note that the service call can take a while if setting a value on an asleep battery device. | +| Service Data Attribute | Required | Description | +|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Entity (or list of entities) to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `device_id` | no | Device ID (or list of device IDs) to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `command_class` | yes | ID of Command Class that you want to set the value for. | +| `property` | yes | ID of Property that you want to set the value for. | +| `property_key` | no | ID of Property Key that you want to set the value for. | +| `endpoint` | no | ID of Endpoint that you want to set the value for. | +| `value` | yes | The new value that you want to set. | +| `options` | no | Set value options map. Refer to the Z-Wave JS documentation for more information on what options can be set. | +| `wait_for_result` | no | Boolean that indicates whether or not to wait for a response from the node. If not included in the payload, the integration will decide whether to wait or not. If set to `true`, note that the service call can take a while if setting a value on an asleep battery device. | ### Service `zwave_js.multicast_set_value` This service will set a value on multiple Z-Wave devices using multicast. It is for advanced use cases where you need to set the same value on multiple nodes simultaneously. Be warned that correctly using this service requires advanced knowledge of Z-Wave. The service provides minimal validation beyond what is necessary to properly call the Z-Wave JS API, so if you are having trouble using it, it is likely because you are providing an incorrect value somewhere. -| Service Data Attribute | Required | Description | -|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | -| `device_id` | no | Device ID (or list of device IDs) to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | -| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | +| Service Data Attribute | Required | Description | +|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Entity (or list of entities) to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | +| `device_id` | no | Device ID (or list of device IDs) to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | | `broadcast` | no | Boolean that indicates whether you want the message to be broadcast to all nodes on the network. If you have only one Z-Wave network configured, you do not need to provide a `device_id` or `entity_id` when this is set to true. When you have multiple Z-Wave networks configured, you MUST provide at least one `device_id` or `entity_id` so the service knows which network to target. | -| `command_class` | yes | ID of Command Class that you want to set the value for. | -| `property` | yes | ID of Property that you want to set the value for. | -| `property_key` | no | ID of Property Key that you want to set the value for. | -| `endpoint` | no | ID of Endpoint that you want to set the value for. | -| `value` | yes | The new value that you want to set. | -| `options` | no | Set value options map. Refer to the Z-Wave JS documentation for more information on what options can be set. | +| `command_class` | yes | ID of Command Class that you want to set the value for. | +| `property` | yes | ID of Property that you want to set the value for. | +| `property_key` | no | ID of Property Key that you want to set the value for. | +| `endpoint` | no | ID of Endpoint that you want to set the value for. | +| `value` | yes | The new value that you want to set. | +| `options` | no | Set value options map. Refer to the Z-Wave JS documentation for more information on what options can be set. | ### Service `zwave_js.invoke_cc_api` Call this service to use the Command Class API directly. In most cases, the `zwave_js.set_value` service will accomplish what you need to, but some Command Classes have API commands that can't be accessed via that service. Refer to the [Z-Wave JS Command Class documentation](https://zwave-js.github.io/node-zwave-js/#/api/CCs/index) for the available APIs and arguments. Be sure to know what you are doing when calling this service. -| Service Data Attribute | Required | Description | -|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the primary value endpoint will be used for each entity. | -| `device_id` | no | Device ID (or list of device IDs) to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the root endpoint (0) will be used for each device. | -| `area_id` | no | Area ID (or list of area IDs) for devices/entities to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the root endpoint (0) will be used for each `zwave_js` device in the area. | -| `command_class` | yes | ID of Command Class that you want to set the value for. | -| `endpoint` | no | The endpoint to call the CC API against. | -| `method_name` | yes | The name of the method that is being called from the CC API. | -| `parameters` | yes | A list of parameters to pass to the CC API method. | +| Service Data Attribute | Required | Description | +|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Entity (or list of entities) to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the primary value endpoint will be used for each entity. | +| `device_id` | no | Device ID (or list of device IDs) to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the root endpoint (0) will be used for each device. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the root endpoint (0) will be used for each `zwave_js` device in the area. | +| `command_class` | yes | ID of Command Class that you want to set the value for. | +| `endpoint` | no | The endpoint to call the CC API against. | +| `method_name` | yes | The name of the method that is being called from the CC API. | +| `parameters` | yes | A list of parameters to pass to the CC API method. | ### Service `zwave_js.reset_meter` @@ -335,6 +373,7 @@ These are notification events fired by devices using the Notification command cl These are notification events fired by devices using the Multilevel Switch command class. There are events for start level change and stop level change. These would typically be used in a device like the Aeotec Nano Dimmer with an external switch to respond to long button presses. ##### Start Level Change + ```json { "domain": "zwave_js", @@ -350,6 +389,7 @@ These are notification events fired by devices using the Multilevel Switch comma ``` ##### Stop Level Change + ```json { "domain": "zwave_js", @@ -415,9 +455,9 @@ Due to some devices not following the Z-Wave Specification, there are scenarios The following devices currently support this event: -| Make | Model | Entity Domain | -|----------------- |---------------------------------- |--------------- | -| Vision Security | ZL7432 In Wall Dual Relay Switch | `switch` | +| Make | Model | Entity Domain | +|----------------- |---------------------------------- |--------------- | +| Vision Security | ZL7432 In Wall Dual Relay Switch | `switch` | Value Updated example: @@ -557,28 +597,28 @@ All of these features can be accessed either in the Z-Wave integration configura The following features can be accessed from the integration configuration panel: -- **Add device:** Allows you to pre-provision a SmartStart device or start the inclusion process for adding a new device to your network. -- **Remove device:** Starts the exclusion process for removing a device from your network. -- **Heal network:** Forces your network to rediscover routes to the controller from each device. This is useful when devices or the controller have moved to a new location, or if you are having significant problems with your network, but it also generates a lot of network traffic and should be used sparingly. -- **Third party data opt-in/out:** Allows you to opt-in or out of telemetry that the zwave-js project collects to help inform development decisions, influence manufacturers, etc. This telemetry is disabled by default and has to be opted in to be activated. -- **[Controller statistics](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot):** Provides statistics about communication between the controller and other devices, allowing you to troubleshoot your network's RF quality. +* **Add device:** Allows you to pre-provision a SmartStart device or start the inclusion process for adding a new device to your network. +* **Remove device:** Starts the exclusion process for removing a device from your network. +* **Heal network:** Forces your network to rediscover routes to the controller from each device. This is useful when devices or the controller have moved to a new location, or if you are having significant problems with your network, but it also generates a lot of network traffic and should be used sparingly. +* **Third-party data opt-in/out:** Allows you to opt-in or out of telemetry that the Z-Wave JS project collects to help inform development decisions, influence manufacturers, etc. This telemetry is disabled by default and has to be opted in to be activated. +* **[Controller statistics](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot):** Provides statistics about communication between the controller and other devices, allowing you to troubleshoot your network's RF quality. ### Device Panel The following features can be accessed from the device panel of a Z-Wave device: -- **Configure:** Provides an easy way to look up and update configuration parameters for the device. While there is an existing service for setting configuration parameter values, this UI may sometimes be quicker to use for one off changes. -- **Re-interview:** Forces the device to go through the interview process again so that zwave-js can discover all of its capabilities. Can be helpful if you don't see all the expected entities for your device. -- **Heal:** Forces the device to rediscover its optimal route back to the controller. Use this if you think you are experiencing unexpected delays or RF issues with your device. Your device may be less responsive during this process. -- **Remove failed:** Forces the controller to remove the device from the controller. Can be used when a device has failed and it can't go through the normal exclusion process. -- **[Statistics](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot):** Provides statistics about communication between this device and the controller, allowing you to troubleshoot RF issues with the device. -- **Update firmware:** Updates a device's firmware using a manually uploaded firmware file. Only some devices support this feature (controllers and devices with the Firmware Update Metadata Command Class). +* **Configure:** Provides an easy way to look up and update configuration parameters for the device. While there is an existing service for setting configuration parameter values, this UI may sometimes be quicker to use for one off changes. +* **Re-interview:** Forces the device to go through the interview process again so that zwave-js can discover all of its capabilities. Can be helpful if you don't see all the expected entities for your device. +* **Heal:** Forces the device to rediscover its optimal route back to the controller. Use this if you think you are experiencing unexpected delays or RF issues with your device. Your device may be less responsive during this process. +* **Remove failed:** Forces the controller to remove the device from the controller. Can be used when a device has failed and it can't go through the normal exclusion process. +* **[Statistics](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot):** Provides statistics about communication between this device and the controller, allowing you to troubleshoot RF issues with the device. +* **Update firmware:** Updates a device's firmware using a manually uploaded firmware file. Only some devices support this feature (controllers and devices with the Firmware Update Metadata Command Class). ## Advanced installation instructions If you are using Home Assistant Container, Home Assistant Core, or you don't want to use the built-in Z-Wave JS Server add-on, you will need to run the Z-Wave JS server yourself, to which the Z-Wave integration will connect. -### Running [Z-Wave JS Server](https://github.com/zwave-js/zwave-js-server). +### Running [Z-Wave JS Server](https://github.com/zwave-js/zwave-js-server) This application provides the connection between your Z-Wave USB stick and Home Assistant. The Home Assistant Z-Wave integration connects to this server via a websocket connection. You need to run this Z-Wave JS server before you can use the integration. @@ -654,10 +694,10 @@ Some Z-Wave USB sticks can be auto-discovered, which can simplify the Z-Wave set | Device | Identifier | Vendor | | -------| ---------- | ------ | -| Aeotec Z-Stick Gen5+ | 0658:0200 | https://aeotec.com/products/aeotec-z-stick-gen5/ | -| Nortek HUSBZB-1 | 10C4:8A2A | https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/ | -| Zooz ZST10 | 10C4:EA60 | https://www.getzooz.com/zooz-zst10-s2-stick/ | -| Z-WaveMe UZB | 0658:0200 | https://z-wave.me/products/uzb/ | +| Aeotec Z-Stick Gen5+ | 0658:0200 | | +| Nortek HUSBZB-1 | 10C4:8A2A | | +| Zooz ZST10 | 10C4:EA60 | | +| Z-WaveMe UZB | 0658:0200 | | Additional devices may be discoverable, however only devices that have been confirmed discoverable are listed above. @@ -767,9 +807,9 @@ Your device might not send automatic status updates to the controller. While the Z-Wave does not automatically poll devices on a regular basis. Polling can quickly lead to network congestion and should be used very sparingly and only where necessary. -- We provide a `zwave_js.refresh_value` service to allow you to manually poll a value, for example from an automation that only polls a device when there is motion in that same room. If you **really** need polling, you can enable this in Z-Wave JS UI but not in the official add-on. +* We provide a `zwave_js.refresh_value` service to allow you to manually poll a value, for example from an automation that only polls a device when there is motion in that same room. If you **really** need polling, you can enable this in Z-Wave JS UI but not in the official add-on. -- Z-Wave JS UI allows you to configure scheduled polling on a per-value basis, which you can use to keep certain values updated. It also allows you to poll individual values on-demand from your automations, which should be preferred over blindly polling all the time if possible. +* Z-Wave JS UI allows you to configure scheduled polling on a per-value basis, which you can use to keep certain values updated. It also allows you to poll individual values on-demand from your automations, which should be preferred over blindly polling all the time if possible.
Polling should only be used as a last resort. You must use it with care and accept the negative impact on your network. Z-Wave is a very low speed network and poll requests can easily flood your network and slow down your commands. diff --git a/source/_posts/2023-04-05-release-20234.markdown b/source/_posts/2023-04-05-release-20234.markdown new file mode 100644 index 00000000000..a822ab34653 --- /dev/null +++ b/source/_posts/2023-04-05-release-20234.markdown @@ -0,0 +1,1064 @@ +--- +layout: post +title: "2023.4: Custom template macros, and many more new entity dialogs!" +description: "New tile card features for alarms & fans. Create your own reusable Jinja2 template macros. Brand new entity information dialogs for covers, fans, and alarms. And even more database scalability improvements!" +date: 2023-04-05 00:00:00 +date_formatted: "April 5, 2023" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2023-04/social.png +--- + + + +Home Assistant Core 2023.4! 🎉 + +The spring (release) is here! And do we have some fine new features for you +to play with this upcoming easter weekend! 🐰 + +I'm thrilled to see more of those new entity dialogs coming in this release. +They look beautiful and work exceptionally well from the mobile app. There is +even an added bonus of new Tile card features! But... + +Oh boy, do I love the new ability to make your own Jinja2 template macros in +this release. It is mind-blowing! The best thing about them, it makes them +easily shareable as well! Can't wait to see what you all come up with! + +Happy Easter! 🐣 and enjoy the release! + +../Frenck + + + +- [New dialogs for alarm, cover, and fan entities](#new-dialogs-for-alarm-cover-and-fan-entities) +- [New features for the Tile card](#new-features-for-the-tile-card) +- [Macros for your templates](#macros-for-your-templates) +- [More new templating features](#more-new-templating-features) +- [Database scalability](#database-scalability) +- [New selector capabilities](#new-selector-capabilities) +- [Translating entities](#translating-entities) +- [Other noteworthy changes](#other-noteworthy-changes) +- [New Integrations](#new-integrations) +- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui) +- [Need help? Join the community!](#need-help-join-the-community) +- [Breaking Changes](#breaking-changes) +- [Farewell to the following](#farewell-to-the-following) +- [All changes](#all-changes) + +Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=IGnCGDaXR0M) +5 April 2023, at 12:00 PDT / 21:00 CEST! + + + +## New dialogs for alarm, cover, and fan entities + +[The previous release](/blog/2023/03/01/release-20233/#new-dialogs-for-lights-switches-and-siren-entities) +brought in new entity dialogs for lights, switches, and sirens; it seems +many of you really liked it! + +So, this release [@piitaya] kept on trucking, implementing the designs +by [@matthiasdebaat], bringing the same new clean and neat UI in entity dialogs +for alarm control panels, covers, and fans! + +### Covers + +First up, covers! For covers, there are many variants, doors, windows, curtains, +blinds, shutters, etc. Not just that, some can be controlled by how far they +are open/closed, and others can only be opened and closed. + +This is no problem for the new dialogs. They will adjust to the capabilities +your cover has: + +Screenshots showing the new cover entity information dialogs. + +The one on the left is interesting, as the first slider controls how far down +the blinds are. Notice how it slides in from the top! The slider directly next +to it controls the tilt. Nice! + +### Fans + +Next up, the fan entities. The UI experience shown in the dialog will +automatically adjust to the capabilities of the fan you are controlling, just +like with covers. + +Screenshots showing the new fan entity information dialogs. + +Depending on the number of speed steps your fan has, the dialog will +automatically adjust the UI. In case it has four speed steps or less, it will +show the speed buttons as on the left screenshot. Otherwise, it will use the +slider shown on the most right screenshot. + +### Alarm control panels + +Lastly, the alarm control panel entities. They are a bit different compared +to others as, more often, these require one to input a code to arm or disarm +the alarm. + +

+Screenrecording showing the new alarm control panel entity information dialogs work with the pin-input. +This is how arming and disarming an alarm now looks like. +


+ +When needed, the pin-pad will pop up! A nice finishing touch is the neat little +animation is shown during the process of arming and disarming the alarm. + +[@matthiasdebaat]: https://github.com/matthiasdebaat +[@piitaya]: https://github.com/piitaya + +## New features for the Tile card + +The [Tile card][tile] has two new features: Fan speed & Alarm mode. + +Both look and feel similar to the new entity dialogs from above, making the look +and feel, nice and consistent. Take a look; aren't they beautiful? + +Screenshots the new fan speed feature for tile cards. + +Like the new fan entity dialog, the fan speed feature will show buttons if there +are 4 speeds or less; in all other cases, it will use the slider. If the fan +can only be turned on/off, like the fan in the middle in the above screenshot, +the regular tile can be used. + +The alarm mode feature allows quickly setting your alarm in a different state. +The feature provides the option to select which modes are shown as buttons in +the card. + +Screenshots the new alarm mode feature for tile cards. + +Just like with the new entity dialog, the pin pad will pop up once a code entry +is needed and even the nice little animation is there. 🤩 + +[tile]: https://www.home-assistant.io/dashboards/tile/ + +## Macros for your templates + +If you are an advanced Home Assistant user, you most likely will be familiar +with Home Assistant's templating language: Jinja2. It allows you to do amazing +powerful things in your templates. However, if you have lots of them, you +often end up repeating similar logic everywhere! + +[@depoll] to the rescue! He found a way to add the ability to centrally define +your own Jinja2 macros and import and use them anywhere in Home Assistant! 🤯 + +To support this, Home Assistant now has a new `custom_templates` folder, where +you can store your macros. For example, assume this file +`/config/custom_templates/tools.jinja`: + +{% raw %} + +```jinja +{% macro answer_question(entity_id) %} + +Is the {{ state_attr(entity_id, 'friendly_name') }} on? +{{ (states(entity_id) == 'on') | iif('Yes', 'No') }}! + +{% endmacro %} +``` + +{% endraw %} + +This macro `answer_question` will ask and answer a question based on a given +entity ID. You can now import and use this macro anywhere in Home Assistant. +For example: + +{% raw %} + +```jinja +{% from 'tools.jinja' import answer_question %} +{{ answer_question('light.kitchen') }} +``` + +{% endraw %} + +Which will output: + +```text +Is the kitchen light on? +Yes! +``` + +An fantastic contribution! Thank you, [@depoll]! + +[Reusing templates documentation](/docs/configuration/templating/#reusing-templates) + +[@depoll]: https://github.com/depoll + +## More new templating features + +As if the reusability of your macros wasn't good enough already, there +is much more templating goodness in this release! + +Thanks, [@depoll], [@ehendrix23], [@petro31], and [@rokam], for these amazing +additions down below! ❤️ + +### Adjusted behavior of `relative_time` and `today_at` + +[@Petro31] adjust the behavior for template entities using the `relative_time` +and `today_at` template functions to update their state once a minute. Nice! + +### New `is_hidden_entity` function + +The brand new `is_hidden_entity` function was added by [@depoll], which can tell +if a given entity has been marked "hidden" or not. This function also works +as a test. Cool! + +This example returns a list of all entities in the kitchen area that are not +hidden. + +{% raw %} + +```jinja +{{ area_entities('kitchen') | reject('is_hidden_entity') | list }} +``` + +{% endraw %} + +### New `areas` function + +Talking about areas, [@rokam] added an `areas` function, which returns a list +of all areas you have! + +A simplistic example: + +{% raw %} + +```jinja +{{ areas() }} +``` + +{% endraw %} + +### Added `break` and `continue` for use in for loops + +[@depoll] added support for `break` and `continue` in for loops, which allows +short-circuiting those loops, allowing you to make them more efficient. + +{% raw %} + +```jinja +{%- for value in range(10) %} + {%- if value == 1 -%} + {%- continue -%} + {%- elif value == 3 -%} + {%- break -%} + {%- endif -%} + {{ value }} +{%- endfor -%} +``` + +{% endraw %} + +## New `has_value` function + +Lastly, [@ehendrix23] added a requested template function from the Month of +"What the Heck?!": `has_value`. The `has_value` function can also be used as +test and can filter out entities currently in an `unavailable` or `unknown` +state. + +You could use this conditionally, like so: + +{% raw %} + +```jinja +{% if has_value('sensor.train_departure_time') %} + The train leaves at {{ states('sensor.train_departure_time') }} +{% endif %} +``` + +{% endraw %} + +Or, maybe list all entities from the living room that currently have no state +value: + +{% raw %} + +```jinja +{{ area_entities('living_room') | reject('has_value') | list }} +``` + +{% endraw %} + +[@depoll]: https://github.com/depoll +[@ehendrix23]: https://github.com/ehendrix23 +[@petro31]: https://github.com/Petro31 +[@rokam]: https://github.com/rokam + +## Database scalability + +As your smart home grows and you add more devices, this means more data to keep +track of. This release includes significant advancements to the recorder +database design to help Home Assistant scale. + +This version has a new database format that reduces the space needed to store +history for your devices. This change comes with a few benefits: + +- Smaller (deduplication), less disk usage +- Reduced disk IO (SD-card lifetime improvements) +- Reduced CPU-usage 📉 +- Quicker startup 🏎️ +- Faster history graphs and logbook +- Reduced latency in the entire system which means less waiting from the time + you hit a button until an action completes 🚀 +- Home Assistant now keeps history when renaming entities 🤘 + +If you are accessing the database directly, check out the [Data Science Portal](https://data.home-assistant.io/) +and the [SQL Integration](/integrations/sql/) for updated example queries. + +It may take a while to complete background data migration, depending on the size +of your stored data. To ensure Home Assistant keeps history when renaming an +entity, wait 24 hours after upgrading before renaming. + +## New selector capabilities + +[Selectors](/docs/blueprint/selectors) are user inputs for the user interface +that drive things like [Blueprints](/get-blueprints). A new selector for use +in Blueprints has been added by [@emontnemery] and [@piitaya]: The constant selector. + +The constant selector provides an optional input, which returns a fixed value +(the constant) when enabled, otherwise doesn't provide any value at all. + +Example use in a Blueprint: + +```yaml +example: + name: Constant selector example + selector: + constant: + label: Enabled + value: true +``` + +Which results in the following: + +

+A screenshot showing the new constant selector. +When checked, the selector returns the set value. +

+ +Also improved are the device and entity filters on the [Area], +[Entity], [Device], and [Target] selectors. Previously, you could filter with a +single set of conditions; now, you can pass in a list of filters. + +If you are building Blueprints, this can be really helpful if a user should +be able to select one of multiple different devices. + +An example, this selector allows you to select the battery sensor of +either a Philips Hue RWL020 (US) or RWL021 (EU) remote in your Blueprint. + +```yaml +device: + filter: + - integration: deconz + manufacturer: Philips + model: RWL020 + - integration: deconz + manufacturer: Philips + model: RWL021 + entity: + - domain: sensor + device_class: battery +``` + +[@emontnemery]: https://github.com/emontnemery +[@piitaya]: https://github.com/piitaya +[area]: /docs/blueprint/selectors/#area-selector +[device]: /docs/blueprint/selectors/#device-selector +[entity]: /docs/blueprint/selectors/#entity-selector +[target]: /docs/blueprint/selectors/#target-selector + +## Translating entities + +Over the past releases, we’ve been slowly extending translation support in more +places in Home Assistant. This release completes support for translating +entities! + +This includes the entities' names, their attributes, and translations of +the attribute values. These translations will be visible on your dashboards, +dialogs, automation editors, etc. Pretty much all places displaying them. + +Integrations have to explicitly add support for these. Quite a few integrations +have done so in this release, but we expect many to follow in the upcoming +releases. + +## Other noteworthy changes + +There are much more easter bunnies in this release; here are some of the other +noteworthy changes this release: + +- [@ArturoGuerra] added support for locks to [Matter]! Nice! +- The new light entity dialog (introduced last release) now better supports + white mode. Thanks, [@piitaya]! +- [@emontnemery] added energy storage and volume storage device classes; these + will allow differentiating between, for example, consumed energy versus stored + energy in a battery. +- [@starkillerOG] is rocking the [Reolink] integration. It now provides button, + switch, siren, select, number, and light entities for all kinds of things you + Reolink cameras and doorbells can do. Awesome! +- The [Universal Media Player] now supports browsing media! Thanks, [@Drafteed]! +- The [Supervisor] integration now provides sensors containing the + Home Assistant Core and Supervisor's stats. Thanks, [@ludeeus]! +- The [Spotify] integration now supports podcasts! Nice [@BTMorton]! +- [LIVISI Smart Home] now supports climate devices, switches (PSSO, ISS, + and ISS2), and window sensors (WDS). Thanks [@StefanIacobLivisi] & [@planbnet]! +- [ESPHome] now supports pairing Bluetooth devices. Nice work [@bdraco] & [@jagheterfredrik]! +- [@MarkGodwin] extended the [TP-Link Omada] integration to support update + entities; awesome! +- All `sun.sun` entity attributes are now also available as sensors, much + easier to use, thanks [@gjohansson-ST]! +- Covers with the door device class, now appear as actual doors in [HomeKit], + nice [@Dexwell]! +- [@loongyh] did something similar for [Google Assistant]. Covers with the + window device class now show up as actual windows. Thanks! +- The [SQL] integration now supports settings device and state classes, thanks [@gjohansson-ST]! +- [@teharris1] added support for the new [Insteon] i3 device, cool! + +[@arturoguerra]: https://github.com/ArturoGuerra +[@bdraco]: https://github.com/bdraco +[@btmorton]: https://github.com/BTMorton +[@dexwell]: https://github.com/Dexwell +[@drafteed]: https://github.com/Drafteed +[@emontnemery]: https://github.com/emontnemery +[@gjohansson-st]: https://github.com/gjohansson-ST +[@jagheterfredrik]: https://github.com/jagheterfredrik +[@loongyh]: https://github.com/loongyh +[@ludeeus]: https://github.com/ludeeus +[@markgodwin]: https://github.com/MarkGodwin +[@piitaya]: https://github.com/piitaya +[@planbnet]: https://github.com/planbnet +[@starkillerog]: https://github.com/starkillerOG +[@stefaniacoblivisi]: https://github.com/StefanIacobLivisi +[@teharris1]: https://github.com/teharris1 +[esphome]: /integrations/esphome +[google assistant]: /integrations/google_assistant +[homekit]: /integrations/homekit +[insteon]: /integrations/insteon +[livisi smart home]: /integrations/livisi +[matter]: /integrations/matter +[reolink]: /integrations/reolink +[spotify]: /integrations/spotify +[sql]: /integrations/sql +[supervisor]: /integrations/hassio +[tp-link omada]: /integrations/tplink_omada +[universal media player]: /integrations/universal + +## New Integrations + +This release has no new integrations, but does provide a couple of new virtual +integrations. Virtual integrations are stubs handled by other (existing) +integrations to help with findability. These are new: + +- **[ESERA 1-Wire]** provided by [1-Wire], added by [@jrieger] +- **[HomeSeer]** works with [Z-Wave], added by [@b-uwe] +- **[Quadra-Fire]** provided by [IntelliFire], added by [@jeeftor] +- **[Vermont Castings]** provided by [IntelliFire], added by [@jeeftor] + +[@b-uwe]: https://github.com/b-uwe +[@jeeftor]: https://github.com/jeeftor +[@jrieger]: https://github.com/jrieger +[1-wire]: /integrations/one +[esera 1-wire]: /integrations/esera_onewire +[homeseer]: /integrations/homeseer +[intellifire]: /integrations/intellifire +[quadra-fire]: /integrations/quadrafire +[vermont castings]: /integrations/vermont_castings +[z-wave]: /integrations/zwave_js + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- **[EDL21]**, done by [@StephanU] +- **[Frontier Silicon]**, done by [@wlcrs] +- **[Nextcloud]**, done by [@mib1185] +- **[Obihai]**, done by [@ejpenney] + +[@ejpenney]: https://github.com/allenejpenneyorter +[@mib1185]: https://github.com/mib1185 +[@stephanu]: https://github.com/StephanU +[@wlcrs]: https://github.com/wlcrs +[edl21]: /integrations/edl21 +[frontier silicon]: /integrations/frontier_silicon +[nextcloud]: /integrations/nextcloud +[obihai]: /integrations/obihai + +## 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. + +## Breaking Changes + +{% details "Aladdin Connect" %} + +The previously deprecated YAML configuration of the Aladdin Connect integration +has been removed. + +Aladdin Connect is now configured via the UI, any existing YAML configuration +has been imported in previous releases and can now be safely removed from +your YAML configuration files. + +([@epenet] - [#88694]) ([documentation](/integrations/aladdin_connect)) + +[@epenet]: https://github.com/epenet +[#88694]: https://github.com/home-assistant/core/pull/88694 + +{% enddetails %} + +{% details "AVM FRITZ!Box Tools" %} + +The binary sensor providing available firmware updates has been deprecated +since 2022.5 and is now removed. Use the new `update` entity instead. + +([@mib1185] - [#89940]) ([documentation](/integrations/fritz)) + +[@mib1185]: https://github.com/mib1185 +[#89940]: https://github.com/home-assistant/core/pull/89940 + +{% enddetails %} + +{% details "Bluetooth" %} + +This change only affects Home Assistant instances running directly on +MacOS (not inside a virtual machine). + +Any integration or device previously set up using a UUID Bluetooth +address will need to be deleted and recreated. + +([@bdraco] - [#89926]) ([documentation](/integrations/bluetooth)) + +[@bdraco]: https://github.com/bdraco +[#89926]: https://github.com/home-assistant/core/pull/89926 + +{% enddetails %} + +{% details "Calendar" %} + +The `calendar.create_event` service now enforces that start and end dates are +exclusive. This has always been part of the specification but was not clearly +documented and enforced. + +([@allenporter] - [#89533]) ([documentation](/integrations/calendar)) + +[@allenporter]: https://github.com/allenporter +[#89533]: https://github.com/home-assistant/core/pull/89533 + +{% enddetails %} + +{% details "DSMR Reader" %} + +The previously deprecated YAML configuration of the DSMR Reader integration +has been removed. + +DSMR Reader is now configured via the UI, any existing YAML configuration +has been imported in previous releases and can now be safely removed from +your YAML configuration files. + +([@frenck] - [#89239]) ([documentation](/integrations/dsmr_reader)) + +[@frenck]: https://github.com/frenck +[#89239]: https://github.com/home-assistant/core/pull/89239 + +{% enddetails %} + +{% details "GIOŚ" %} + +AQI sensor state values are now in English, and the user interface will +display their translation for the selected language. If you have been using +this sensor in your automations and scripts, you'll need to adjust these for +this change. + +([@bieniu] - [#89044]) ([documentation](/integrations/gios)) + +[@bieniu]: https://github.com/bieniu +[#89044]: https://github.com/home-assistant/core/pull/89044 + +--- + +The `name` and `station` sensor state attributes have been removed because +they are static data that do not describe the state of the entity. + +The `index` sensor state attribute has been migrated to a separate entity, +for example, `sensor.home_no2_index`. + +([@bieniu] - [#89389]) ([documentation](/integrations/gios)) + +[@bieniu]: https://github.com/bieniu +[#89389]: https://github.com/home-assistant/core/pull/89389 + +{% enddetails %} + +{% details "Groups - Notify" %} + +The behavior of passing parameters to service calls targeting notification +groups has changed. + +**Current behavior**: `data` mappings configured in the **service** override +mappings configured in the **action**. + +**New behavior**: `data` mappings configured in the **action** override +mappings configured in the **service**. + +([@arychj] - [#90253]) ([documentation](/integrations/group)) + +[@arychj]: https://github.com/arychj +[#90253]: https://github.com/home-assistant/core/pull/90253 + +{% enddetails %} + +{% details "Home Connect" %} + +Not really a breaking change, but as of now, only program entities are +created for the programs your device supports. You might need to manually remove +old/existing entities that are no longer provided. + +([@stickpin] - [#88801]) ([documentation](/integrations/home_connect)) + +[@stickpin]: https://github.com/stickpin +[#88801]: https://github.com/home-assistant/core/pull/88801 + +{% enddetails %} + +{% details "IMAP" %} + +The previously deprecated YAML configuration of the IMAP integration +has been removed. + +IMAP is now configured via the UI, any existing YAML configuration +has been imported in previous releases and can now be safely removed from +your YAML configuration files. + +([@jbouwh] - [#89981]) ([documentation](/integrations/imap)) + +[@jbouwh]: https://github.com/jbouwh +[#89981]: https://github.com/home-assistant/core/pull/89981 + +{% enddetails %} + +{% details "Landis+Gyr Heat Meter" %} + +The conversion to MWh and the corresponding MWh-entities have been removed. + +To resolve the breaking change : + +- If you make use of any of `sensor.heat_meter_heat_usage` or + `sensor.heat_meter_heat_previous_year` for automations, scripts, etc., + you can replace these with the GJ-entities `sensor.heat_meter_heat_usage_gj` + and `sensor.heat_meter_heat_previous_year_gj`. +- If applicable, in the energy dashboard, replace `sensor.heat_meter_heat_usage` + with `sensor.heat_meter_heat_usage_gj`. Note that the energy dashboard will + still convert to MWh or kWh, therefore resulting in the same values as before. + +([@vpathuis] - [#89522]) ([documentation](/integrations/landisgyr_heat_meter)) + +[@vpathuis]: https://github.com/vpathuis +[#89522]: https://github.com/home-assistant/core/pull/89522 + +{% enddetails %} + +{% details "Logbook" %} + +Logbook will be unavailable until the database schema migration completes. +Logbook script and automation traces from previous runs of Home Assistant +will be unavailable until background data migration is completed following +the schema migration. + +([@bdraco] - [#88942] [#89465]) ([documentation](/integrations/logbook)) + +[@bdraco]: https://github.com/bdraco +[#88942]: https://github.com/home-assistant/core/pull/88942 +[#89465]: https://github.com/home-assistant/core/pull/89465 + +--- + +Automation and script traces that include state change events recorded with +Home Assistant 2022.5.x or older will no longer display context information +for these events in the logbook tab. + +([@bdraco] - [#89945]) ([documentation](/integrations/logbook)) + +[@bdraco]: https://github.com/bdraco +[#89945]: https://github.com/home-assistant/core/pull/89945 + +{% enddetails %} + +{% details "MySensors" %} + +- The MySensors notify platform has been removed. It's been deprecated since + 2023.2.0. It's been replaced by a text entity platform. +- You should update any automations or scripts that use the `notify.mysensors*` + service to instead use the `text.set_value` service and the corresponding + text entity as a target. +- The MySensors IR `switch` entity, corresponding to an `S_IR` child with + `V_SEND` value, has been removed. This entity hasb been deprecated since + 2023.2.0. It's been replaced by a `remote` entity. +- You should update any automations or scripts that use the `mysensors.send_ir_code` + service to instead use the `remote.send_command` service and the corresponding + `remote` entity as a target. Similar changes should be made for actions using + the `switch.turn_on` and `switch_turn_off` services targeting the removed + IR `switch` entities. Replace these with `remote.turn_on` and `remote.turn_off` + services and `remote` entity targets. + +([@MartinHjelmare] - [#90402] [#90403]) ([documentation](/integrations/mysensors)) + +[@martinhjelmare]: https://github.com/MartinHjelmare +[#90402]: https://github.com/home-assistant/core/pull/90402 +[#90403]: https://github.com/home-assistant/core/pull/90403 + +{% enddetails %} + +{% details "Moon" %} + +The previously deprecated YAML configuration of the Moon integration +has been removed. + +Moon is now configured via the UI, any existing YAML configuration +has been imported in previous releases and can now be safely removed from +your YAML configuration files. + +([@frenck] - [#89161]) ([documentation](/integrations/moon)) + +[@frenck]: https://github.com/frenck +[#89161]: https://github.com/home-assistant/core/pull/89161 + +{% enddetails %} + +{% details "MQTT" %} + +The `tls_version` configuration parameter (deprecated June 2020) has been +removed. All other MQTT broker settings have been moved to the UI before. + +When the `tls_version` setting is still in your YAML configuration, MQTT will +not start up. + +[@jbouwh]: https://github.com/jbouwh +[#88674]: https://github.com/home-assistant/core/pull/88674 + +--- + +The previously deprecated MQTT broker YAML configuration has been removed. + +The MQTT broker is now configured via the UI, any existing MQTT broker YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@jbouwh] - [#87987]) ([documentation](/integrations/mqtt)) + +[@jbouwh]: https://github.com/jbouwh +[#87987]: https://github.com/home-assistant/core/pull/87987 + +{% enddetails %} + +{% details "Nextcloud" %} + +The option to define your own scan interval has been removed, data is now +updated every 60 seconds. + +([@mib1185] - [#89396]) ([documentation](/integrations/nextcloud)) + +[@mib1185]: https://github.com/mib1185 +[#89396]: https://github.com/home-assistant/core/pull/89396 + +{% enddetails %} + +{% details "OpenAI Conversation" %} + +Your previously selected model has been reset to the new +and cheaper GPT 3.5 model. + +([@balloob] - [#90423]) ([documentation](/integrations/openai_conversation)) + +[@balloob]: https://github.com/balloob +[#90423]: https://github.com/home-assistant/core/pull/90423 + +--- + +The built-in `areas` variable is no longer overwritten and is now the same as +`areas` in every template. The new default template is now: + +{% raw %} + +```jinja +This smart home is controlled by Home Assistant. + +An overview of the areas and the devices in this smart home: +{%- for area in areas() %} + {%- set area_info = namespace(printed=false) %} + {%- for device in area_devices(area) -%} + {%- if not device_attr(device, "disabled_by") and not device_attr(device, "entry_type") and device_attr(device, "name") %} + {%- if not area_info.printed %} + +{{ area_name(area) }}: + {%- set area_info.printed = true %} + {%- endif %} +- {{ device_attr(device, "name") }}{% if device_attr(device, "model") and (device_attr(device, "model") | string) not in (device_attr(device, "name") | string) %} ({{ device_attr(device, "model") }}){% endif %} + {%- endif %} + {%- endfor %} +{%- endfor %} + +Answer the user's questions about the world truthfully. + +If the user wants to control a device, reject the request and suggest using the Home Assistant app. +``` + +{% endraw %} + +([@balloob] - [#90481]) ([documentation](/integrations/openai_conversation)) + +[@balloob]: https://github.com/balloob +[#90481]: https://github.com/home-assistant/core/pull/90481 + +{% enddetails %} + +{% details "Overkiz" %} + +The `open` and `close` commands for the` io:CyclicGarageOpenerIOComponent device` +Have been removed, see [this issue](https://github.com/iMicknl/ha-tahoma/issues/146) +for more details on this device. + +To sum up, this device is a garage door but cannot be exposed as such within +Home Assistant. There is no state returned and no clear open and close command. + +Only one command is available: `cycle`. A `button` is a perfect fit for this +use case and remove all confusion; this button entity has been added this +release. + +([@tetienne] - [#89043]) ([documentation](/integrations/overkiz)) + +[@tetienne]: https://github.com/tetienne +[#89043]: https://github.com/home-assistant/core/pull/89043 + +{% enddetails %} + +{% details "Pushbullet" %} + +The previously deprecated YAML configuration of the Pushbullet integration +has been removed. + +Pushbullet is now configured via the UI, any existing YAML configuration +has been imported in previous releases and can now be safely removed from +your YAML configuration files. + +([@gjohansson-ST] - [#90285]) ([documentation](/integrations/pushbullet)) + +[@gjohansson-st]: https://github.com/gjohansson-ST +[#90285]: https://github.com/home-assistant/core/pull/90285 + +{% enddetails %} + +{% details "Radio Thermostat" %} + +The previously deprecated YAML configuration of the Radio Thermostat integration +has been removed. + +Radio Thermostat is now configured via the UI, any existing YAML configuration +has been imported in previous releases and can now be safely removed from +your YAML configuration files. + +([@gjohansson-ST] - [#90284]) ([documentation](/integrations/radiotherm)) + +[@gjohansson-st]: https://github.com/gjohansson-ST +[#90284]: https://github.com/home-assistant/core/pull/90284 + +{% enddetails %} + +{% details "Recorder" %} + +Oversized events with data larger than 32KiB are no longer recorded +to avoid overloading the database and polluting the memory cache. + +([@bdraco] - [#90747]) ([documentation](/integrations/recorder)) + +[@bdraco]: https://github.com/bdraco +[#90747]: https://github.com/home-assistant/core/pull/90747 + +{% enddetails %} + +{% details "Scrape" %} + +The previously deprecated YAML configuration of the Scrape integration +has been removed. + +Scrape is now configured via the UI, any existing YAML configuration +has been imported in previous releases and can now be safely removed from +your YAML configuration files. + +([@gjohansson-ST] - [#90272]) ([documentation](/integrations/scrape)) + +[@gjohansson-st]: https://github.com/gjohansson-ST +[#90272]: https://github.com/home-assistant/core/pull/90272 + +{% enddetails %} + +{% details "Season" %} + +The previously deprecated YAML configuration of the Season integration +has been removed. + +Season is now configured via the UI, any existing YAML configuration +has been imported in previous releases and can now be safely removed from +your YAML configuration files. + +([@frenck] - [#89166]) ([documentation](/integrations/season)) + +[@frenck]: https://github.com/frenck +[#89166]: https://github.com/home-assistant/core/pull/89166 + +{% enddetails %} + +{% details "Tasmota" %} + +Tasmota `sensor` no longer sets the `force_update` flag to True. + +Tasmota `binary_sensor` no longer sets the `force_update` flag to True, except +for `binary_sensor` mapped to a Tasmota switch with switchmode set to 13 or 14. + +([@DerEnderKeks] - [#85943]) ([documentation](/integrations/tasmota)) + +[@derenderkeks]: https://github.com/DerEnderKeks +[#85943]: https://github.com/home-assistant/core/pull/85943 + +{% enddetails %} + +{% details "Templates" %} + +The `relative_time` and `today_at` template functions and filters are no +longer supported in limited templates. + +([@Petro31] - [#86815]) + +[@petro31]: https://github.com/Petro31 +[#86815]: https://github.com/home-assistant/core/pull/86815 + +--- + +Enumerating states using templates are no longer sorted by +`entity_id` by default, as it was computationally expensive. + +To restore the original behavior, a `sort` filter can be added to any +existing template using the below example: + +{% raw %} + +```jinja +{% for state in states | sort(attribute='entity_id') %} +``` + +{% endraw %} + +[@bdraco]: https://github.com/bdraco +[#90608]: https://github.com/home-assistant/core/pull/90608 + +{% enddetails %} + +{% details "Threshold" %} + +The behavior of the threshold binary sensor has changed: + +- The threshold binary sensor's state is reset to `unknown` when the monitored + sensor's state is unknown, unavailable, or not a valid float. +- When the monitored sensor's state is first valid, or when it's valid + after being `unknown`, `unavailable`, or not a valid float: + - Initialize a threshold sensor with only a lower threshold to state `off`, + with the `position` attribute set to `above`. + - Initialize a threshold sensor with only a upperthreshold to state `off`, + with the `position` attribute set to `below`. + - Initialize a threshold sensor with only an upper and a lower threshold + to state `on`, with the `position` attribute set to `in_range`. + +([@emontnemery] - [#88978]) ([documentation](/integrations/threshold)) + +[@emontnemery]: https://github.com/emontnemery +[#88978]: https://github.com/home-assistant/core/pull/88978 + +{% enddetails %} + +{% details "Twente Milieu" %} + +The end-date for garbage collection events on the calendar entity, will now +be one day later compared to the start date. This is because in calendaring, +the end-date is exclusive. + +([@bobvandevijver] - [#89028]) ([documentation](/integrations/twentemilieu)) + +[@bobvandevijver]: https://github.com/bobvandevijver +[#89028]: https://github.com/home-assistant/core/pull/89028 + +{% enddetails %} + +{% details "Volvo On Call" %} + +The previously deprecated YAML configuration of the Volvo On Call integration +has been removed. + +Volvo On Call is now configured via the UI, any existing YAML configuration +has been imported in previous releases and can now be safely removed from +your YAML configuration files. + +([@gjohansson-ST] - [#90288]) ([documentation](/integrations/volvooncall)) + +[@gjohansson-st]: https://github.com/gjohansson-ST +[#90288]: https://github.com/home-assistant/core/pull/90288 + +{% enddetails %} + +{% details "Z-Wave" %} + +With this release, you will need to update your `zwave-js-server` instance. +You must use `zwave-js-server` 1.27.0 or greater (schema 27). + +- If you use the `Z-Wave JS` add-on, you need at least version `0.1.77`. +- If you use the `Z-Wave JS UI` add-on, you need at least version `1.8.1`. +- If you use the `Z-Wave JS UI` Docker container, you need at least version `8.11.1`. +- 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.27.0`. + +([@raman325] - [#90212]) ([documentation](/integrations/zwave_js)) + +[@raman325]: https://github.com/raman325 +[#90212]: https://github.com/home-assistant/core/pull/90212 + +{% enddetails %} + +If you are a custom integration developer and want to learn about breaking +changes and new features available for your integration: Be sure to follow our +[developer blog][devblog]. The following are the most notable for this release: + +- [Calendar best practices](https://developers.home-assistant.io/blog/2023/03/28/calendar_best_practices) +- [Deprecating Polymer](https://developers.home-assistant.io/blog/2023/04/04/deprecating_polymer) +- [Translating the name and attributes of entities](https://developers.home-assistant.io/blog/2023/03/27/entity_name_translations) + +[devblog]: https://developers.home-assistant.io/blog/ + +## Farewell to the following + +The following integrations are also no longer available as of this release: + +- **Dark Sky** has been removed. Apple acquired Dark Sky, and the API has now + been shut down. ([@gjohansson-ST] - [#90322]) +- **Magicseaweed** has been removed. Magicseedweed no longer provides API keys + to users. Additionally, the integration is no longer in a functional state. + ([@gjohansson-ST] - [#90277]) + +[@gjohansson-st]: https://github.com/gjohansson-ST +[#90277]: https://github.com/home-assistant/core/pull/90277 +[#90322]: https://github.com/home-assistant/core/pull/90322 + +## 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 2023.4](/changelogs/core-2023.4) diff --git a/source/changelogs/core-2023.4.markdown b/source/changelogs/core-2023.4.markdown new file mode 100644 index 00000000000..92101a87d23 --- /dev/null +++ b/source/changelogs/core-2023.4.markdown @@ -0,0 +1,2231 @@ +--- +title: Full Changelog for Home Assistant Core 2023.4 +description: Detailed changelog for the Home Assistant Core 2023.4 release +--- + +These are all the changes included in the Home Assistant Core 2023.4 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2023/04/05/release-20234/). + +## Full Changelog + +- Bump version to 2023.4.0dev0 ([@frenck] - [#88630]) +- Use json_loads_object in alexa ([@epenet] - [#88610]) +- Browse media support in universal media player ([@Drafteed] - [#85668]) +- Update pre-commit to 3.1.0 ([@frenck] - [#88657]) +- Update apprise to 1.3.0 ([@frenck] - [#88658]) +- Modernize Twentemilieu tests ([@frenck] - [#88640]) +- Include binary_sensor in default Assist exposed domains ([@synesthesiam] - [#88682]) +- Enable jinja loop controls (break/continue) ([@depoll] - [#88625]) +- Modernize uptime tests ([@frenck] - [#88636]) +- Allow conditions to be implemented in platforms ([@emontnemery] - [#88509]) +- Switch samsungtv to use async_timeout to avoid task creation ([@bdraco] - [#88679]) +- Change statistics component ownership ([@ThomDietrich] - [#88692]) +- Use async_timeout in integrations ([@epenet] - [#88697]) +- Bump aiolivisi to 0.0.16 ([@StefanIacobLivisi] - [#88700]) +- Improve type hint in webostv trigger ([@epenet] - [#88599]) +- Use strict typing for LiteJet integration ([@joncar] - [#88629]) +- Pass `assumed_state` property in universal media player ([@Drafteed] - [#87846]) +- Use DataUpdateCoordinator for islamic_prayer_times ([@engrbm87] - [#73893]) +- Simplify adding unifi entities ([@Kane610] - [#88571]) +- Avoiding testing implementation details in apcupsd tests ([@yuxincs] - [#88772]) +- Add ISY994 services to set and delete lock codes ([@shbatm] - [#88754]) +- Add device HmIP-DLD ([@hahn-th] - [#83380]) +- Unblock JSON CI by fixing improperly indented JSON in test fixture ([@puddly] - [#88803]) +- Add Camera platform to Prosegur ([@dgomes] - [#76428]) +- Use a background task for LIFX discovery ([@balloob] - [#88820]) +- Add climate state translations to Overkiz integration ([@iMicknl] - [#88809]) +- Bump pyoverkiz to 1.7.6 ([@iMicknl] - [#88808]) +- Bump actions/checkout from 3.1.0 to 3.3.0 (@dependabot - [#88824]) +- Bump actions/setup-python from 4.3.0 to 4.5.0 (@dependabot - [#88823]) +- Add support for LIVISI climate devices ([@StefanIacobLivisi] - [#86691]) +- Add state_class to qbittorent sensors ([@landaisbenj] - [#88829]) +- Prepare for refactoring of MQTT related tests ([@jbouwh] - [#88557]) +- Add missing mock in brunt config flow tests ([@epenet] - [#88834]) +- Add missing mock in cert_expiry config flow tests ([@epenet] - [#88835]) +- Add missing mock in abode config flow tests ([@epenet] - [#88828]) +- Use snapshots in blueprint import tests ([@balloob] - [#88843]) +- Cleanup YAML import in aladdin_connect ([@epenet] - [#88694]) +- Improve helper integration scaffold ([@avee87] - [#88713]) +- Add filter options to entity and device selectors ([@piitaya] - [#87536]) +- Add gas sensor to BTHome ([@Ernst79] - [#88770]) +- LIVISI climate device improvement ([@StefanIacobLivisi] - [#88844]) +- Add Config Flow to Obihai ([@ejpenney] - [#88627]) +- Change string to enum in SomfyThermostat ([@iMicknl] - [#88813]) +- Support ValveHeatingTemperatureInterface in Overkiz integration ([@iMicknl] - [#88804]) +- Adding Obihai codeowner ([@ejpenney] - [#88856]) +- Prosegur late review comments ([@dgomes] - [#88859]) +- Adjust AddEntitiesCallback import (part 1) ([@epenet] - [#88870]) +- Add stop charge button to renault integration ([@rodriguestiago0] - [#88003]) +- Also set `hass.config_entries` when `mock_hass_config` fixture is used ([@jbouwh] - [#88669]) +- Add WS command weather/convertible_units ([@emontnemery] - [#85681]) +- Add human readable name for Livisi climate devices ([@planbnet] - [#88891]) +- Add myself to codeowners of Livisi integration ([@planbnet] - [#88900]) +- Add missing mock in overkiz config flow tests ([@epenet] - [#88899]) +- Sort unit lists sent to frontend ([@emontnemery] - [#88898]) +- Fix typo in thread ([@emontnemery] - [#88916]) +- Adjust core test to avoid lingering task ([@epenet] - [#88918]) +- Add missing mock in webostv config flow tests ([@epenet] - [#88913]) +- Add number + sensor device class energy storage ([@emontnemery] - [#88310]) +- Add state class to Aurora ([@djtimca] - [#88938]) +- Use ulid-transform for constructing ulids ([@bdraco] - [#88939]) +- Store source entity in switch_as_x entity options ([@emontnemery] - [#88914]) +- Adjust issue_registry imports ([@epenet] - [#88878]) +- Adjust registry access in conversation ([@epenet] - [#88879]) +- Adjust registry access in tests root ([@epenet] - [#88880]) +- Adjust registry access in intent ([@epenet] - [#88881]) +- Adjust registry access in scripts ([@epenet] - [#88884]) +- Adjust registry access in Google Assistant ([@epenet] - [#88883]) +- Adjust registry access in openai_conversation ([@epenet] - [#88882]) +- Adjust AddEntitiesCallback import (part 2) ([@epenet] - [#88873]) +- Add diagnostics to VeSync ([@chuckdeal97] - [#86350]) +- Add ZWaveDiscoverySchema for Merten 507801 ([@willmakenoise] - [#88342]) +- Use json_loads_object in arwn ([@epenet] - [#88611]) +- Use load_json_object in fitbit ([@epenet] - [#88585]) +- Adjust entity registry access in core platforms ([@epenet] - [#88944]) +- Adjust entity registry access in integrations (1) ([@epenet] - [#88946]) +- Adjust entity registry access in integrations (2) ([@epenet] - [#88947]) +- Adjust entity registry access in integrations (3) ([@epenet] - [#88948]) +- Fix lingering reload task in notion reauth ([@bdraco] - [#88949]) +- Adjust entity registry access in tests (1) ([@epenet] - [#88950]) +- Add missing mock in notion tests ([@epenet] - [#88951]) +- Fix lingering task in timeout test ([@epenet] - [#88953]) +- Fix lingering task in entity_platform test ([@epenet] - [#88957]) +- Don't create new venv if script/setup is run from within a venv ([@emontnemery] - [#88906]) +- Add number + sensor device class volume storage ([@emontnemery] - [#88312]) +- Add dynamic unit of measurement support for Overkiz sensor ([@tetienne] - [#80490]) +- Use UnitOfVolumeFlowRate in huisbaasje and plugwise ([@epenet] - [#88967]) +- Adjust entity registry access in tests (3) ([@epenet] - [#88964]) +- Add missing mock in esphome tests ([@epenet] - [#88923]) +- Disable gc in-between energy sensor tests ([@emontnemery] - [#88593]) +- Adjust entity registry access in tests (2) ([@epenet] - [#88960]) +- Adjust entity registry access in helper tests ([@epenet] - [#88965]) +- Add `current` sensor for Shelly RPC devices ([@bieniu] - [#88863]) +- Obihai config flow fixes ([@ejpenney] - [#88853]) +- Drop codeowner from threshold integration ([@emontnemery] - [#88973]) +- Improve threshold binary sensor tests ([@emontnemery] - [#88972]) +- Adjust entity registry access in homekit tests ([@epenet] - [#88959]) +- Yaml use dict ([@balloob] - [#88977]) +- Enable RUFF ICN001 for registries ([@epenet] - [#88875]) +- Clean up unused and deprecated TLS version setting on MQTT client ([@jbouwh] - [#88674]) +- Bump ulid-transform to 0.4.0 ([@bdraco] - [#88982]) +- Add config flow to EDL21 ([@StephanU] - [#87655]) +- Refactor WLED binary sensor test ([@frenck] - [#88579]) +- Fix flaky energy tests ([@emontnemery] - [#89026]) +- Add Turn On and Turn Off for Advantage Air climate platform ([@Bre77] - [#88684]) +- Nuki: show actual device model in device registry ([@Savjee] - [#89017]) +- Re-enable Ruff D411 ([@epenet] - [#89035]) +- Fix lingering task in debounce tests ([@epenet] - [#89019]) +- Add matching on quirk_classes to zha ([@gmsoft-tuxicoman] - [#87653]) +- Remove unused constant ([@raman325] - [#89071]) +- Add Obihai reboot button ([@ejpenney] - [#88849]) +- Adjust xiaomi_ble tests ([@epenet] - [#89078]) +- Move Cycle command from cover to button ([@tetienne] - [#89043]) +- Adjust docstrings for ruff D404 ([@epenet] - [#89077]) +- Adjust docstring on hassfest generated files ([@epenet] - [#89080]) +- Set Protocol inheritance on EnergyPlatform ([@epenet] - [#89079]) +- Enable ruff D404 ([@epenet] - [#89093]) +- Add missing Edl21 sensor 1-0:0.0.0\*255 ([@StephanU] - [#87389]) +- Updating Intellifire Naming scheme ([@jeeftor] - [#88666]) +- Refactor Livisi Switch and Climate to inherit from a common base class ([@planbnet] - [#89085]) +- Revert Intellifire breaking change from #88666 ([@cgarwood] - [#89110]) +- Add day to event end to correct TwenteMilieu event timespan ([@bobvandevijver] - [#89028]) +- Refactor WLED button tests ([@frenck] - [#88580]) +- Refactor WLED diagnostic tests ([@frenck] - [#88581]) +- Bump subarulink to 0.7.5 ([@G-Two] - [#89162]) +- Clean up import/migration repair in LaMetric ([@frenck] - [#89153]) +- Cleanup plex config flow tests ([@epenet] - [#88991]) +- Bump pyvizio to 0.1.60 ([@raman325] - [#89160]) +- Bump `brother` and `pysnmplib` backend libraries ([@bieniu] - [#89100]) +- Bump aiodiscover to 1.4.14 ([@bdraco] - [#89174]) +- Pass a helpful name when creating common asyncio tasks in core ([@bdraco] - [#89171]) +- Bump youless api version to v1.0.1 ([@gjong] - [#89117]) +- Bump overkiz dependency to 1.7.7 ([@iMicknl] - [#89163]) +- Add Reolink button platform ([@starkillerOG] - [#88687]) +- Bump reolink-aio to 0.5.3 ([@starkillerOG] - [#89145]) +- Bump pyroon to 0.1.4 ([@pavoni] - [#89124]) +- Revert "Replace Fitbit weight SensorStateClass measurement with total" ([@sw-carlos-cristobal] - [#89126]) +- Add support for Livisi PSSO, ISS and ISS2 switch devices ([@planbnet] - [#89140]) +- Unpin pandas for Python 3.11 ([@cdce8p] - [#89033]) +- Update link to opencv in image_process log message ([@GeoffState] - [#89008]) +- Add support for Spotify podcasts ([@BTMorton] - [#87671]) +- Detect newly connected clients in jellyfin ([@ctalkington] - [#89168]) +- Add repeat to roon media player ([@pavoni] - [#88851]) +- Remove deprecated Moon YAML configuration ([@frenck] - [#89161]) +- Raise ValueError on date parsing of MQTT sensor with invalid date format ([@jbouwh] - [#89036]) +- Remove deprecated Season YAML configuration ([@frenck] - [#89166]) +- Add device_class and state_class to sql ([@gjohansson-ST] - [#85418]) +- Hive add ability to delete device ([@KJonline] - [#80838]) +- Reolink add switch platform ([@starkillerOG] - [#87943]) +- Add Reolink siren platform ([@starkillerOG] - [#88217]) +- Bump bthome to 2.8.0 ([@Ernst79] - [#89192]) +- Reolink add select platform ([@starkillerOG] - [#87946]) +- Refactor WLED switch tests ([@frenck] - [#89197]) +- Update coverage to 7.2.1 ([@frenck] - [#89196]) +- Update sentry-sdk to 1.16.0 ([@frenck] - [#89193]) +- Update watchdog to 2.3.1 ([@frenck] - [#89190]) +- Update pytest to 7.2.2 ([@frenck] - [#89179]) +- Refactor WLED number tests ([@frenck] - [#88582]) +- Fix lingering tasks in KNX tests ([@farmio] - [#89201]) +- Test coverage for Tibber config flow ([@ztamas83] - [#89088]) +- Add device info to edl21 ([@StephanU] - [#89070]) +- Revert "Add device info to edl21" ([@frenck] - [#89217]) +- Split reauth tests in plex ([@epenet] - [#89212]) +- Refresh homeassistant_alerts when components are loaded ([@emontnemery] - [#76049]) +- Sync tado zones after updating climate preset ([@fpfuetsch] - [#79715]) +- Move mock_setup_entry to conftest ([@epenet] - [#88484]) +- Update zwave_js README with contributor instructions ([@raman325] - [#89158]) +- Use mock_setup_entry fixture in melnor ([@epenet] - [#89226]) +- Reolink add new number entities ([@starkillerOG] - [#87932]) +- Add Reolink light platform ([@starkillerOG] - [#88619]) +- Catch exceptions and add logging when writing states on MQTT entities ([@jbouwh] - [#89091]) +- Add type hints to ps4 media player ([@epenet] - [#89236]) +- Allow loading UniFi entities on config options change ([@Kane610] - [#88762]) +- Add comment about Reolink Floodlight turn on brightness ([@starkillerOG] - [#89234]) +- Bump ruff to 0.0.253 ([@epenet] - [#89211]) +- Reolink extend DHCP discovery ([@starkillerOG] - [#89238]) +- Update pylint to 2.16.4 ([@cdce8p] - [#89240]) +- Bump `gios` library to version 3.1.0 ([@bieniu] - [#89044]) +- Improve reolink generic typing ([@cdce8p] - [#88786]) +- Add support for bluetooth pairing in esphome ([@bdraco] - [#88603]) +- Add HomeKit Door accessory type ([@Dexwell] - [#80741]) +- Update systembridgeconnector to 3.4.8 ([@timmo001] - [#79732]) +- Fail CI on lingering tasks ([@epenet] - [#88905]) +- Cleanup expected_lingering_tasks in knx ([@epenet] - [#89279]) +- Remove deprecated DSMR Reader YAML configuration ([@frenck] - [#89239]) +- Bump ruff to 0.0.254 ([@epenet] - [#89273]) +- Drop deepcopy of manual mqtt alarm control panel config ([@emontnemery] - [#89287]) +- Drop deepcopy of manual alarm control panel config ([@emontnemery] - [#89286]) +- Drop deepcopy of intent_script config ([@emontnemery] - [#89285]) +- Drop deepcopy of Alexa config ([@emontnemery] - [#89284]) +- Remove unittest.TestCase from service helper tests ([@emontnemery] - [#89283]) +- Reolink test init 100% ([@starkillerOG] - [#89112]) +- Rename hass context variable ([@emontnemery] - [#89302]) +- Fix missing f-string in async_listen ([@bdraco] - [#89336]) +- Use a filter for the PersonStorageCollection EVENT_ENTITY_REGISTRY_UPDATED listener ([@bdraco] - [#89335]) +- Bump pybalboa to 1.0.1 ([@natekspencer] - [#89310]) +- Improve gios generic typing ([@cdce8p] - [#89321]) +- Add missing mock in brother config flow tests ([@epenet] - [#89354]) +- Add missing mock in axis config flow tests ([@epenet] - [#89365]) +- Add missing mock in azure event hub config flow tests ([@epenet] - [#89355]) +- Add missing mock in atag config flow tests ([@epenet] - [#89356]) +- Add missing mock in amber config flow tests ([@epenet] - [#89358]) +- Add missing mock in airvisual config flow tests ([@epenet] - [#89359]) +- Add missing mock in agent_dvr config flow tests ([@epenet] - [#89361]) +- Add missing mock in airvisual_pro config flow tests ([@epenet] - [#89362]) +- Add missing mock in airq config flow tests ([@epenet] - [#89364]) +- Add missing mock in aemet config flow tests ([@epenet] - [#89360]) +- Add names to the config entry setup and shutdown tasks ([@bdraco] - [#89309]) +- Use an event filter for event triggers ([@bdraco] - [#89339]) +- Improve event filters to reject earlier ([@bdraco] - [#89337]) +- Fix lingering tasks in plex ([@epenet] - [#89282]) +- Update pylint to 2.17.0 ([@cdce8p] - [#89377]) +- Move Landis+Gyr sensor descriptions to sensor platform ([@vpathuis] - [#89382]) +- Pass hass instance when validating templates ([@emontnemery] - [#89242]) +- Bump pyfritzhome to 0.6.8 and add support for Non-Color-Bulbs ([@parliament119] - [#89141]) +- Add require_admin decorator to otbr WS API ([@emontnemery] - [#89385]) +- Bump SharkIQ to 1.0.2 ([@funkybunch] - [#89346]) +- Avoid falling back to listening for all states when a template render raises an exception ([@bdraco] - [#89392]) +- Remove lingering timer related to camera ([@Kane610] - [#89394]) +- Add WS API for getting an OTBR's extended address ([@emontnemery] - [#89384]) +- Add loggers to gdacs manifest file ([@exxamalte] - [#89338]) +- Fix missing f-string in filterable_job ([@bdraco] - [#89340]) +- Migrate integration_platform helper to use async_get_integrations ([@bdraco] - [#89303]) +- Bump aiosomecomfort to 0.0.14 ([@mkmer] - [#89393]) +- Update SharkIQ code owners ([@funkybunch] - [#89388]) +- Better log message for KNX expose conversion error ([@farmio] - [#89400]) +- Update mypy to 1.1.1 ([@cdce8p] - [#89268]) +- Reduce overhead to store context ids in the database ([@bdraco] - [#88942]) +- Simplify LivisiEntity inheritance ([@planbnet] - [#89424]) +- Add hostname to DHCP discovery title ([@starkillerOG] - [#89426]) +- Avoid unnecessary Task in debouncer ([@epenet] - [#89370]) +- Add review-process link to PR template ([@epenet] - [#89430]) +- Add quadrafire virtual integration for Intellifire ([@jeeftor] - [#89316]) +- Parse attribute reports for ZHA select entity ([@TheJulianJES] - [#89418]) +- Revert Transmission entities name changes ([@avee87] - [#89409]) +- Update logbook queries for SADeprecationWarning ([@bdraco] - [#87108]) +- Add missing mock in buienradar config flow tests ([@epenet] - [#89420]) +- Add missing mock in braviatv config flow tests ([@epenet] - [#89419]) +- Disable some less commonly used starlink entities by default ([@boswelja] - [#87869]) +- Add missing mock in coronavirus config flow tests ([@epenet] - [#89428]) +- Add vermont_castings virtual integration for Intellifire ([@jeeftor] - [#89317]) +- Add DSL prefix to SFRBox ADSL sensors ([@epenet] - [#89276]) +- Add Hardkernel ODROID-M1 ([@agners] - [#89431]) +- Update actions/cache to 3.3.0 ([@cdce8p] - [#89438]) +- Add missing mock in gree config flow tests ([@epenet] - [#89450]) +- Add missing mock in fibaro config flow tests ([@epenet] - [#89440]) +- Add missing mock in filesize config flow tests ([@epenet] - [#89441]) +- Add missing mock in freedompro config flow tests ([@epenet] - [#89442]) +- Add stats sensors for core and supervisor ([@ludeeus] - [#89455]) +- Add device info to edl21 ([@StephanU] - [#89327]) +- Xiaomi Air Purifier S2 illuminance sensor support ([@kirill578] - [#89208]) +- Fix missing debouncer cancel in update coordinator ([@epenet] - [#89383]) +- Add list areas function to template ([@rokam] - [#88441]) +- Add missing mock in guardian config flow tests ([@epenet] - [#89451]) +- Add Ruth and Stephen voices to AWS Polly ([@szechyjs] - [#89344]) +- Add device class to ZHA Xiaomi plug "consumer connected" sensor ([@TheJulianJES] - [#89476]) +- Add unconfigured flag to thread discovery data ([@emontnemery] - [#89230]) +- Add config flow to frontier_silicon ([@wlcrs] - [#64365]) +- Add type hints to tests ([@epenet] - [#89497]) +- Bump pytest-sugar to 0.9.6 ([@epenet] - [#89500]) +- Bump pytest-xdist to 3.2.0 ([@epenet] - [#89501]) +- Bump home-assistant/builder from 2022.11.0 to 2023.03.0 (@dependabot - [#89485]) +- Fix lingering timer in device registry ([@epenet] - [#89422]) +- Landis+Gyr move coordinator to own file ([@vpathuis] - [#89433]) +- Add missing mock in landisgyr config flow tests ([@epenet] - [#89513]) +- Add missing mock in lacrosse_view config flow tests ([@epenet] - [#89512]) +- Add missing mock in kmtronic config flow tests ([@epenet] - [#89511]) +- Add missing mock in jellyfin config flow tests ([@epenet] - [#89510]) +- Add FTTH and WAN info to SFR box diagnostics ([@epenet] - [#89492]) +- Await block till done inside patched config entry in tests ([@balloob] - [#89515]) +- Make client tracker use common UniFi entity class ([@Kane610] - [#84942]) +- Refactor logbook data to use a dataclass ([@bdraco] - [#89534]) +- Remove unused code in RecorderRuns.entity_ids ([@bdraco] - [#89526]) +- UniFi library controls add/update signalling ([@Kane610] - [#89525]) +- Deduplicate event_types in the events table ([@bdraco] - [#89465]) +- Move legacy database queries and models to prepare for schema v38 ([@bdraco] - [#89532]) +- Refactor recorder tests to use recorder history API ([@bdraco] - [#89565]) +- Fix flux_led set time to not happen during DST switch ([@bdraco] - [#89559]) +- Add some more typing to screenlogic ([@bdraco] - [#88522]) +- Simplify command_line sensor tests ([@emontnemery] - [#89576]) +- Convert device_sun_light_trigger test fixture to async ([@emontnemery] - [#89578]) +- Support translating entity names ([@emontnemery] - [#88242]) +- Strict typing threshold ([@gjohansson-ST] - [#82786]) +- Improve screenlogic generic typing ([@cdce8p] - [#89587]) +- Fix lingering tasks in google_wifi tests ([@bdraco] - [#89571]) +- Deduplicate entity_id in the states table ([@bdraco] - [#89557]) +- Bump rflink to 0.0.65 for python 3.11 ([@bdraco] - [#89601]) +- Fix old indices never being removed with PostgreSQL ([@bdraco] - [#89599]) +- Add Update entities to TP-Link Omada integration ([@MarkGodwin] - [#89562]) +- Generate large history responses in the executor ([@bdraco] - [#89606]) +- Mark database sessions that do not write data as read_only ([@bdraco] - [#89600]) +- Improve reliability of context id migration ([@bdraco] - [#89609]) +- Add support for window device class to google assistant ([@loongyh] - [#89564]) +- Fix history_stats test failing during DST ([@bdraco] - [#89589]) +- Switch underlying history stats calculation to use seconds ([@bdraco] - [#77857]) +- Code quality update for EDL21 ([@StephanU] - [#89561]) +- Bump pysml to 0.0.9 ([@StephanU] - [#89603]) +- Bump actions/cache from 3.3.0 to 3.3.1 (@dependabot - [#89617]) +- Adjust Tuya entity naming ([@dougiteixeira] - [#89616]) +- Drop duplicated indices from recorder database schema ([@bdraco] - [#89613]) +- Use SnapshotAssertion in SFR sensor tests ([@epenet] - [#89619]) +- Refactor Command line binary sensor to inherit TemplateEntity ([@gjohansson-ST] - [#81212]) +- Refactor Command line cover to inherit TemplateEntity ([@gjohansson-ST] - [#81214]) +- Add an in-memory-preloading loader for Jinja imports ([@depoll] - [#88850]) +- Bump flipr-api to 1.5.0 ([@cnico] - [#89598]) +- Add ESERA 1-Wire virtual integration ([@jrieger] - [#89487]) +- Use repair issue when port enable fails in Reolink ([@starkillerOG] - [#89591]) +- Add support for dual lens cameras in Reolink ([@starkillerOG] - [#89554]) +- Improve typing in climate.py ([@Swamp-Ig] - [#89577]) +- Use SnapshotAssertion in SFR binary sensor tests ([@epenet] - [#89624]) +- Correct naming of some otbr tests ([@emontnemery] - [#89631]) +- Fix `intellifire` name property ([@emontnemery] - [#89632]) +- Improve warnings in mqtt light messages ([@anotherthomas] - [#89552]) +- Address late review comments for frontier_silicon config flow ([@twalcari] - [#89507]) +- Use SnapshotAssertion in SFR button tests ([@epenet] - [#89633]) +- Add sensors for supervisor host ([@ludeeus] - [#89461]) +- Bump python-otbr-api to 1.0.9 ([@emontnemery] - [#89637]) +- Include extended address in thread discovery data ([@emontnemery] - [#89640]) +- Bump pybravia to 0.3.2 ([@NickBorgers] - [#89635]) +- Refactor Command line sensor to inherit TemplateSensor ([@gjohansson-ST] - [#81222]) +- Add is_hidden_entity test for Jinja templates ([@depoll] - [#89011]) +- Bump reolink-aio to 0.5.5 ([@starkillerOG] - [#89646]) +- Make OTBR add newly created dataset to thread credential store ([@emontnemery] - [#89645]) +- Use C-Extension for sqlalchemy ([@pvizeli] - [#89661]) +- Add silent option for DynamicShutter (ogp:Shutter) in Overkiz ([@iMicknl] - [#89164]) +- Bump ulid-transform to 0.4.2 ([@bdraco] - [#89666]) +- Force binary build of sqlalchemy wheels ([@bdraco] - [#89658]) +- Remove incorrect state class for System Bridge sensors ([@timmo001] - [#89655]) +- Handle ConnectionClosedException from System Bridge ([@timmo001] - [#89654]) +- Use otbr domain as dataset source ([@emontnemery] - [#89653]) +- Default to recorder db for SQL integration ([@gjohansson-ST] - [#85436]) +- Handle bytes data in sql sensors ([@bdraco] - [#89169]) +- Increase timeout for coolmaster with swing ([@amitfin] - [#87573]) +- Move nextcloud constants ([@epenet] - [#89679]) +- Add index to event_type and entity_id ([@bdraco] - [#89676]) +- Execute sql queries in the database executor when using the recorder database ([@bdraco] - [#89673]) +- Debounce and group MQTT subscriptions ([@jbouwh] - [#88862]) +- Remove duplicate code in nextcloud ([@epenet] - [#89681]) +- Update entity names to capitalize first word only for System Bridge ([@timmo001] - [#89688]) +- Add websocket command to set preferred thread dataset ([@bramkragten] - [#89700]) +- Add WS command for connecting OTBR to a known Thread network ([@emontnemery] - [#89692]) +- Move local calendar text fixtures to conftest.py ([@allenporter] - [#89674]) +- Improve hass_ws_client type hint in tests ([@epenet] - [#89703]) +- Add water sensor to bthome ([@Ernst79] - [#89595]) +- Add typing to statistics results ([@bdraco] - [#89118]) +- Tweak OTBR tests ([@emontnemery] - [#89694]) +- Reduce size of load query to prime event_types and states_meta at startup ([@bdraco] - [#89677]) +- Add diagnostics to Starlink ([@boswelja] - [#86328]) +- Add additional CalendarEvent validation ([@allenporter] - [#89533]) +- Fix infinite loop in sun.sun ([@Swamp-Ig] - [#89723]) +- Fix filtered purge not removing newer events ([@bdraco] - [#89721]) +- Fix additional typing in local calendar tests ([@allenporter] - [#89704]) +- Migrate EventData management to a table manager ([@bdraco] - [#89716]) +- Bump ruff to 0.0.256 ([@epenet] - [#89734]) +- Add turn_on trigger to Samsung TV ([@epenet] - [#89018]) +- Reolink auto quick reply ([@starkillerOG] - [#89656]) +- Make StatesMetaManager thread-safe when an entity_id is fully deleted from the database and than re-added ([@bdraco] - [#89732]) +- Add modbus hvac\_\* write registers ([@janiversen] - [#89695]) +- Make CalendarEntityFeature an IntFlag ([@emontnemery] - [#89733]) +- Address late feedback for SamsungTV ([@epenet] - [#89751]) +- Bump aiolivisi to 0.0.19 ([@StefanIacobLivisi] - [#89752]) +- Bump ical to 4.5.0 ([@allenporter] - [#89744]) +- Add type hints to update coordinator tests ([@epenet] - [#89748]) +- Fix NMBS IndexError ([@PatrickGlesner] - [#89698]) +- Add WAN information to SFR Box ([@epenet] - [#89678]) +- Avoid lingering timers in update coordinator tests ([@epenet] - [#89749]) +- Use `SensorDeviceClass.ENUM` and add state attributes translations in Shelly integration ([@bieniu] - [#89660]) +- Reolink check firmware ([@starkillerOG] - [#88903]) +- Abort Hue config flow if bridge can not be reached ([@marcelveldt] - [#88893]) +- Fix hassio cleanup when addon in uninstalled ([@emontnemery] - [#89756]) +- Move calculation of current value into lib in Fritz!SmartHome ([@mib1185] - [#89150]) +- Improve type hints in condition helper tests ([@epenet] - [#89754]) +- Avoid rounding Starlink sensor data & instead allow configurable precision ([@boswelja] - [#89486]) +- Cache remote app list for vizio TVs ([@raman325] - [#89003]) +- Add keep_days to recorder.purge_entities ([@bdraco] - [#89726]) +- Bump pyblackbird to 0.6 for py3.11 ([@bdraco] - [#89719]) +- Update xknx to 2.7.0 ([@farmio] - [#89765]) +- Remove asyncio.coroutine workarounds ([@bdraco] - [#88560]) +- Migrate StateAttributes to use a table manager ([@bdraco] - [#89760]) +- Fix logbook tests failing because time was not url encoded correctly ([@bdraco] - [#89770]) +- Migrate States to use a table manager ([@bdraco] - [#89769]) +- Small cleanups to recorder history ([@bdraco] - [#89774]) +- Avoid lingering timer on script shutdown ([@epenet] - [#89753]) +- Bump actions/checkout from 3.3.0 to 3.4.0 (@dependabot - [#89778]) +- Fix lingering timer in config entries test ([@epenet] - [#89787]) +- Add type hints to root tests ([@epenet] - [#89785]) +- Fix SFR Box diagnostics ([@epenet] - [#89783]) +- Add type hints to helper tests ([@epenet] - [#89784]) +- Add device class for Landis+Gyr GJ energy sensor ([@vpathuis] - [#89522]) +- Drop unused Google entity settings from cloud ([@emontnemery] - [#89786]) +- Restructure translations for entity components ([@frenck] - [#89702]) +- Add Pushsafer notify parameters ([@appzer] - [#89555]) +- Fix lingering timer in collection helper tests ([@epenet] - [#89793]) +- Add support for constant selector ([@emontnemery] - [#89573]) +- Mqtt prepare test base part1 ([@jbouwh] - [#89796]) +- Add filters to climate and light service descriptions ([@emontnemery] - [#86162]) +- Fix typo in docstr ([@jbouwh] - [#89804]) +- Fix lingering timer in condition tests ([@epenet] - [#89807]) +- Fix lingering timer in event sun tests ([@epenet] - [#89808]) +- Add state attribute translations for calendars ([@frenck] - [#89811]) +- Add state attribute translations for alarm control panel ([@frenck] - [#89809]) +- Add state attribute translations for covers ([@frenck] - [#89812]) +- Add missing state translations for Lock entities ([@frenck] - [#89795]) +- Add state attribute translations for device trackers ([@frenck] - [#89810]) +- Add pre-defined entity name translations ([@frenck] - [#89792]) +- Cleanup get_local_ip in global conftest ([@epenet] - [#89826]) +- Fix lingering timer in bootstrap tests ([@epenet] - [#89790]) +- Voice assistant integration with pipelines ([@synesthesiam] - [#89822]) +- Add freezer to known test fixtures in pylint ([@epenet] - [#89825]) +- Add state attribute translations for locks ([@frenck] - [#89820]) +- Fix lingering timer in event helper tests ([@epenet] - [#89819]) +- Add state attribute translations for fans ([@frenck] - [#89816]) +- Add state attribute translations for automations ([@frenck] - [#89815]) +- Change light white service call attribute to accept True ([@emontnemery] - [#89803]) +- Add local calendar diagnostics platform ([@allenporter] - [#89776]) +- Reduce latency to find stats metadata ([@bdraco] - [#89824]) +- Bump aiobafi6 to 0.8.0 ([@jfroy] - [#89840]) +- Add native_step to baf ([@bdraco] - [#89780]) +- Reduce number of tasks created by compiling missing statistics ([@bdraco] - [#89835]) +- Add tmpdir to known fixtures in pylint ([@epenet] - [#89844]) +- Mark recorder system_health session read_only ([@bdraco] - [#89842]) +- Ensure MockEntityPlatform shuts down after tests ([@epenet] - [#89849]) +- Fix EntityComponent lingering timer in helper tests ([@epenet] - [#89801]) +- Refactor entity manager code in geo_json_events integration ([@exxamalte] - [#89847]) +- Fix misstype translation reference keynames ([@lunmay] - [#89855]) +- Bump hass-nabucasa to 0.61.1 ([@MartinHjelmare] - [#89864]) +- Drop flake8 in favor of Ruff ([@frenck] - [#89863]) +- Upgrade pytest-xdist to 3.2.1 ([@frenck] - [#89857]) +- Drop pyupgrade in favor of Ruff ([@frenck] - [#89865]) +- Add state attribute translations for Number ([@frenck] - [#89881]) +- Add translations for Geolocation ([@frenck] - [#89880]) +- Add translations for Image processing ([@frenck] - [#89879]) +- Improve/extend state translations for Alarm Control Panel ([@frenck] - [#89872]) +- Bump screenlogicpy to v0.8.2 ([@dieselrabbit] - [#89832]) +- Drop autoflake in favor of Ruff ([@frenck] - [#89874]) +- Ensure all recorder session executes use retries or the execute helper ([@bdraco] - [#89888]) +- Add type hints to plex data ([@epenet] - [#89221]) +- Refactor imap coordinator ([@jbouwh] - [#89759]) +- Add state attribute translations for media players ([@frenck] - [#89821]) +- Use json_loads_object util in backup ([@bdraco] - [#89895]) +- Remove the old ix_states_event_id index if its no longer being used ([@bdraco] - [#89901]) +- Fix some I/O in the event loop during backup ([@bdraco] - [#89894]) +- Add state (attribute) translations for Text ([@frenck] - [#89898]) +- Add state attribute translations for Weather ([@frenck] - [#89897]) +- Small cleanups to writing entity state ([@bdraco] - [#89890]) +- Add state attribute translations for Sensor ([@frenck] - [#89896]) +- Add state attribute translations for light ([@frenck] - [#89818]) +- Add Landis+Gyr poll on restart ([@vpathuis] - [#89644]) +- Change README demo to demo.home-assistant.io subdomain ([@djessemoody] - [#89921]) +- Adjust "Lovelace" to "Dashboards" ([@wrt54g] - [#89927]) +- Fix lingering timer in config entry flow tests ([@epenet] - [#89853]) +- Fix ssl context being recreated frequently in httpx ([@bdraco] - [#89932]) +- Update media state via telnet in `denonavr` integration ([@ol-iver] - [#89788]) +- Add KNX interface device with diagnostic entities ([@farmio] - [#89213]) +- Adjust eventloop -> event loop spelling ([@djessemoody] - [#89931]) +- Avoid database executor job to fetch statistic metadata on cache hit ([@bdraco] - [#89960]) +- Guard against selecting all invalid entity_ids in history ([@bdraco] - [#89929]) +- Fix cpu thrashing during purge after all legacy events were removed ([@bdraco] - [#89923]) +- Remove legacy event lookups from logbook ([@bdraco] - [#89945]) +- Remove unneeded lambda_stmt in place add in statistics ([@bdraco] - [#89943]) +- Set unique on StatesMeta and EventTypes database tables ([@bdraco] - [#89971]) +- Avoid joining states_meta for statistics queries ([@bdraco] - [#89941]) +- Retain history when renaming an entity_id ([@bdraco] - [#89963]) +- Shield Reolink webhook callback from cancelation ([@starkillerOG] - [#89798]) +- Rewrite the calendar trigger to fix potential bugs ([@allenporter] - [#89918]) +- Fix statistics schema auto repair when there is bad data ([@bdraco] - [#89903]) +- Fix statistics schema µs precision auto repair being ineffective ([@bdraco] - [#89902]) +- Bump zeroconf to 0.47.4 ([@bdraco] - [#89973]) +- Fail CI on lingering timers ([@epenet] - [#89292]) +- Update django github references to main instead of master branch. ([@djessemoody] - [#89951]) +- Bump bluetooth deps for bleak 0.20 ([@bdraco] - [#89925]) +- Remove deprecated binary update sensor from AVM FRITZ!Box Tools ([@mib1185] - [#89940]) +- Use bluetooth address instead of uuid on MacOS ([@bdraco] - [#89926]) +- Refactor constants in geo_json_events integration ([@exxamalte] - [#89912]) +- Extend attribute state translations for Camera ([@frenck] - [#89876]) +- Adjust state class of Toon monetary sensors ([@frenck] - [#89985]) +- Use default rounding/presentation mechanism for upnp ([@StevenLooman] - [#89954]) +- Remove yaml import from imap integration ([@jbouwh] - [#89981]) +- Add user_input as suggested value in imap config flow ([@jbouwh] - [#89982]) +- Rollback the session after performing stats schema validation ([@bdraco] - [#89904]) +- Mark LiteJet as Platinum integration ([@joncar] - [#88623]) +- Filter out duplicate updates in esphome state dispatch ([@bdraco] - [#89779]) +- Add FTTH information to SFR Box ([@epenet] - [#89781]) +- Introduce a delay between update entity calls ([@raman325] - [#89737]) +- Add door lock device type to matter integration ([@ArturoGuerra] - [#89277]) +- Add mqtt common tests for availability (part2) ([@jbouwh] - [#89805]) +- Fix websocket back pressure bottleneck ([@bdraco] - [#89905]) +- Add support for new Insteon i3 devcies ([@teharris1] - [#89892]) +- Deprecate YAML in SamsungTV ([@epenet] - [#89743]) +- Prepare MQTT common tests part4 ([@jbouwh] - [#90023]) +- Add state translations for Siren entities ([@frenck] - [#89994]) +- Prepare MQTT common tests part3 ([@jbouwh] - [#90022]) +- Update the calendar trigger based on PR feedback ([@allenporter] - [#90017]) +- Enable inheritance checks on ExtraStoredData ([@epenet] - [#90021]) +- Improve humidifier type hints in integrations ([@epenet] - [#90030]) +- Improve media_player type hints in integrations ([@epenet] - [#90029]) +- Improve sensor type hints in integrations ([@epenet] - [#90031]) +- Improve native_value type hints in integrations ([@epenet] - [#90033]) +- Improve notify type hints in integrations ([@epenet] - [#90034]) +- Improve light type hints in integrations ([@epenet] - [#90035]) +- Add attribute state translations for oscillating fans ([@frenck] - [#89990]) +- Add state translations for Select entities ([@frenck] - [#89995]) +- Add state translations for all day calendar attribute ([@frenck] - [#89988]) +- Improve type hints in tuya vacuum ([@epenet] - [#90041]) +- Correct typing of pymodbus in modbus ([@janiversen] - [#90039]) +- Improve switch and climate type hints in integrations ([@epenet] - [#90040]) +- Guess media type when cast is playing media without media type ([@emontnemery] - [#90048]) +- Only publish mqtt_statestream when MQTT is started ([@jbouwh] - [#89833]) +- Improve type hints in zha fan ([@epenet] - [#90042]) +- Fix fritzbox TypedDict definition ([@epenet] - [#90043]) +- Improve type hints in rachio switch ([@epenet] - [#90050]) +- Fix missing length on context id and incorrect precision with MariaDB (dev only fix) ([@bdraco] - [#90058]) +- Add translations for Counter ([@frenck] - [#89989]) +- Bump reolink-aio to 0.5.6 ([@starkillerOG] - [#90059]) +- Fix translation string for fan oscillation ([@dougiteixeira] - [#90045]) +- Use has_template property from lib in Fritz!SmartHome ([@mib1185] - [#89152]) +- Update twentemilieu to 1.0.0 ([@frenck] - [#90071]) +- Refactor WLED select tests ([@frenck] - [#89219]) +- Make recorder migration column types for each dialect constants ([@bdraco] - [#90072]) +- Break out statistics repairs into a `auto_repairs` modules ([@bdraco] - [#90068]) +- Add TTS to pipelines ([@synesthesiam] - [#90004]) +- Fix generating statistics for time periods smaller than we can measure ([@bdraco] - [#90069]) +- Rename recorder run_history to table_managers.recorder_runs_manager ([@bdraco] - [#90070]) +- Implement data update coordinator for nextcloud ([@mib1185] - [#89652]) +- Prepare MQTT platorm tests part1 ([@jbouwh] - [#90051]) +- YoLink flexfob support ([@matrixd2] - [#90027]) +- Update hass-nabucasa to 0.62.0 ([@balloob] - [#90085]) +- Change error handling in async_process_play_media_url ([@emontnemery] - [#90052]) +- Allow passing binary to the WS connection ([@balloob] - [#89882]) +- Add test helper mock_config_flow ([@emontnemery] - [#90103]) +- Update OTRB config entry if REST API port has changed ([@emontnemery] - [#90101]) +- ZHA network settings API ([@puddly] - [#88564]) +- Update pvo to 1.0.0 ([@frenck] - [#90109]) +- Fix islamic_prayer_times setup ([@emontnemery] - [#90122]) +- Update wled to 0.16.0 ([@frenck] - [#90120]) +- Try to load integration before starting option flow ([@emontnemery] - [#90111]) +- Bump ulid-transform to 0.5.1 ([@bdraco] - [#90123]) +- Deduplicate multiprotocol addon helper ([@emontnemery] - [#90102]) +- Fix switch_as_x entity naming ([@emontnemery] - [#89992]) +- Add schema auto repairs for states tables ([@bdraco] - [#90083]) +- Turn AVM FRITZ!Box Tools sensors into coordinator entities ([@mib1185] - [#89953]) +- Bump PyJWT to 2.6.0 ([@bdraco] - [#90134]) +- Fix index not being dropped on postgresql databases with a schema prefix ([@bdraco] - [#90144]) +- Add auto repairs for events schema ([@bdraco] - [#90136]) +- Cache decode of JWT tokens ([@bdraco] - [#90013]) +- Use rel_url for looking up frontend panels ([@bdraco] - [#90149]) +- Add health mode to gree integration ([@solazs] - [#89764]) +- Simplify some multi pan code ([@emontnemery] - [#90135]) +- Bump bimmer_connected to 0.13.0 ([@rikroe] - [#90127]) +- Bump pyrympro to 0.0.7 ([@OnFreund] - [#90118]) +- Bump actions/stale from 7.0.0 to 8.0.0 (@dependabot - [#90155]) +- Tweak multiprotocol tests ([@emontnemery] - [#90163]) +- Update powerwall strings for newer models ([@bdraco] - [#90151]) +- Adjust scaffold docstring ([@epenet] - [#90157]) +- Use snapshot test for Landis+Gyr ([@vpathuis] - [#90126]) +- Add codeowner Workday ([@gjohansson-ST] - [#90167]) +- Add constants file for Brottsplatskartan ([@gjohansson-ST] - [#90165]) +- Add constants file to workday ([@gjohansson-ST] - [#90168]) +- Update pydantic to 1.10.7 ([@cdce8p] - [#90164]) +- Remove unecessary variable in control4 ([@nalin29] - [#90176]) +- Improve logging for unavailable sonos hosts ([@PeteRager] - [#90172]) +- Add Landis+Gyr missing device class ([@vpathuis] - [#90182]) +- Bump pyControl4 to 1.1.0 ([@nalin29] - [#90115]) +- Cleanup some leftovers for Landis+Gyr ([@vpathuis] - [#90183]) +- Prepare MQTT platform tests part2 ([@jbouwh] - [#90105]) +- Prepare MQTT platform tests part3 ([@jbouwh] - [#90106]) +- Prepare MQTT platform tests part4 ([@jbouwh] - [#90107]) +- Prepare MQTT platform tests part8 ([@jbouwh] - [#90132]) +- Prepare MQTT platform tests part9 ([@jbouwh] - [#90133]) +- Add speech to text over binary websocket to pipeline ([@synesthesiam] - [#90082]) +- Fix missing mock in islamic_prayer_times ([@epenet] - [#90178]) +- Avoid calling the http access logging when logging is disabled ([@bdraco] - [#90152]) +- Fix recorder attribute excludes not being effective until after startup ([@bdraco] - [#90198]) +- Remove async_response from websocket apis where nothing was being awaited ([@bdraco] - [#90204]) +- Fix refactoring error in states/events context id migration ([@bdraco] - [#90193]) +- Small cleanups to logbook statement generator ([@bdraco] - [#90200]) +- Add icons for qbittorrent speed sensors ([@chrisx8] - [#90203]) +- Fix httpx client creating a new ssl context with each client (memory leak) ([@bdraco] - [#90191]) +- Prepare MQTT platform tests part5 ([@jbouwh] - [#90108]) +- Prepare MQTT platform tests part6 ([@jbouwh] - [#90129]) +- Prepare MQTT platform tests part7 ([@jbouwh] - [#90130]) +- Use helper on tests MQTT fan platform ([@jbouwh] - [#90196]) +- Rename create_api_object to be private ([@nalin29] - [#90187]) +- Remove incorrect parametrize decorator ([@jbouwh] - [#90219]) +- Rework UniFi wireless client "wired bug" logic ([@Kane610] - [#89757]) +- Remove duplicate code in livisi coordinator ([@planbnet] - [#90227]) +- Bump actions/checkout from 3.4.0 to 3.5.0 (@dependabot - [#90215]) +- Move qbittorrent constants to const.py ([@chrisx8] - [#90201]) +- Add a faster query for get_last_state_changes when the number of states is 1 ([@bdraco] - [#90211]) +- Add livisi window sensor (WDS) ([@planbnet] - [#90220]) +- Subclass aiohttp requests to use json helper ([@bdraco] - [#90214]) +- Use the json load helper in a few more incoming web requests ([@bdraco] - [#90194]) +- Bump aiounifi to v45 ([@Kane610] - [#90250]) +- Add missing type hints to tests ([@epenet] - [#90218]) +- Improve browse_media type hints in media player ([@epenet] - [#90060]) +- Refactor Gree switch to use EntityDescription ([@jeeftor] - [#90143]) +- Check for empty lists in KNX address configuration ([@farmio] - [#90249]) +- Allow passing an optional name to async_track_time_interval ([@bdraco] - [#90244]) +- Add location field to calendar create_event service supported by Google Calendar and Local Calendar ([@luca-angemi] - [#90098]) +- Update vehicle to 1.0.0 ([@frenck] - [#90189]) +- Bump sqlalchemy to 2.0.7 ([@bdraco] - [#90256]) +- Add Re-Auth to bmw_connected_drive ([@rikroe] - [#90251]) +- Add entity name translations to Elgato ([@frenck] - [#89629]) +- Remove platform yaml radiotherm ([@gjohansson-ST] - [#90284]) +- Add sensor platform to Sun ([@gjohansson-ST] - [#81045]) +- Bump bleak-retry-connector to 3.0.2 ([@bdraco] - [#90279]) +- Remove Magicseaweed ([@gjohansson-ST] - [#90277]) +- Bump bleak to 0.20.1 ([@bdraco] - [#90282]) +- Remove pushbullet platform yaml import ([@gjohansson-ST] - [#90285]) +- Remove Volvooncall integration yaml import ([@gjohansson-ST] - [#90288]) +- Strict typing of UniFi integration ([@Kane610] - [#90278]) +- Adjust IntFlag handling in syrupy ([@epenet] - [#90223]) +- Adjust pylint plugin for components fixtures ([@epenet] - [#90217]) +- Use SnapshotAssertion in bmw_connected_drive tests ([@rikroe] - [#90128]) +- Adjust pylint plugin for return type inheritance ([@epenet] - [#90046]) +- Update Verisure package to 2.6.1 ([@niro1987] - [#89318]) +- Use SnapshotAssertion in gree switch tests ([@epenet] - [#90222]) +- Adjust targets type hint in notify platform ([@epenet] - [#90062]) +- Improve get_browse_image type hints in media player ([@epenet] - [#90057]) +- Fix pylint plugin for tuple[float, float] returns ([@epenet] - [#90047]) +- Add WLED IP as a sensor ([@a-baturin] - [#90241]) +- Implement config flow for nextcloud ([@mib1185] - [#89396]) +- [Issue template] Point to health page for version info ([@igorsantos07] - [#80708]) +- Update pipdeptree to 2.7.0 ([@frenck] - [#90312]) +- Fix Todoist end date for all day event ([@boralyl] - [#89837]) +- Bump ical to 4.5.1 and set PRODID for home assistant in local calendar ics ([@allenporter] - [#90291]) +- Bump ihcsdk to 2.8.5 ([@dingusdk] - [#90266]) +- Set qbittorrent integration_type to service ([@chrisx8] - [#90236]) +- Improve onewire test coverage ([@epenet] - [#90184]) +- Add milliseconds as valid duration sensor unit ([@raman325] - [#90018]) +- Apply late review comments from #89396 in Nextcloud ([@mib1185] - [#90327]) +- Add last trip time attribute to Verisure binary sensors ([@skrynklarn] - [#89944]) +- Bump cryptography to 40.0.1 ([@bdraco] - [#90326]) +- Bump aioesphomeapi to 13.6.0 ([@bdraco] - [#90330]) +- Upgrade netgear_lte third-party library to v0.0.15 ([@amelchio] - [#90324]) +- Fix sql doing I/O in the event loop at startup ([@bdraco] - [#90335]) +- Clean up voice assistant integration ([@balloob] - [#90239]) +- Remove deprecated platform yaml in Scrape ([@gjohansson-ST] - [#90272]) +- Cleanup name assignment imap sensor ([@jbouwh] - [#90306]) +- Add support for clearing the on device GATT cache to esphome ([@bdraco] - [#90318]) +- Use lambda in gree switch ([@epenet] - [#90316]) +- Use SnapshotAssertion in gree climate tests ([@epenet] - [#90339]) +- Adjust tts default_options type hints ([@epenet] - [#90053]) +- Revert "Fix NMBS IndexError" ([@PatrickGlesner] - [#90346]) +- Reolink add auto tracking entities ([@starkillerOG] - [#90063]) +- Bump reolink-aio to 0.5.7 ([@starkillerOG] - [#90344]) +- Add option flow for imap integration ([@jbouwh] - [#89914]) +- Bump python-holidays to 0.21.13 ([@jgoguen] - [#89724]) +- Bump zwave-js-server-python to 0.47.0 ([@raman325] - [#90212]) +- Fix pylint plugin for binary websocket ([@epenet] - [#90351]) +- Remove incorrect ignore in pylint plugin ([@epenet] - [#90024]) +- Rewrite tts tests ([@emontnemery] - [#90355]) +- Bump lifx dependencies ([@Djelibeybi] - [#90345]) +- Move Proxmox VE constants ([@dougiteixeira] - [#90357]) +- Remove unreachable continue statement in imap push coordinator ([@jbouwh] - [#90361]) +- Use entity name translations in Verisure ([@frenck] - [#90362]) +- Fix `quirk_class_validator` in ZHA unit tests ([@javicalle] - [#90140]) +- Filter out ASCII tab or newline from input URLs ([@frenck] - [#90348]) +- Add "stream" to default_config ([@tsbernar] - [#90153]) +- Add state translations for Script entities ([@frenck] - [#90354]) +- Improve tts test coverage ([@emontnemery] - [#90370]) +- Clean dead code from matter ([@MartinHjelmare] - [#90369]) +- Add RestoreEntity pylint checks to all platforms ([@epenet] - [#90020]) +- Add reauth flow to dormakaba dkey ([@emontnemery] - [#90225]) +- Fail CI if codecov upload fails ([@frenck] - [#90363]) +- Cleanup command_line ([@gjohansson-ST] - [#90268]) +- Fix generic_hygrostat error at startup ([@Shulyaka] - [#88764]) +- Support toggling debug logging for custom components ([@jbergler] - [#90340]) +- Add state translations for helpers ([@frenck] - [#90356]) +- Refactor matter device entity value conversion ([@MartinHjelmare] - [#90368]) +- Workday cleanup ([@gjohansson-ST] - [#90267]) +- Bump aiodiscover to 1.4.15 ([@bdraco] - [#90383]) +- Bump nextcloudmonitor to 1.4.0 ([@mib1185] - [#90372]) +- Bump proxmoxer to 2.0.1 in Proxmox VE ([@dougiteixeira] - [#90378]) +- Improve airq handling of DeviceInfo ([@Sibgatulin] - [#90232]) +- Set default value for some Fronius entities ([@farmio] - [#89475]) +- Add lru stats to the profiler integration ([@bdraco] - [#90388]) +- Refactor GIOS sensor platform ([@bieniu] - [#89389]) +- Turn AVM FRITZ!Box Tools binary sensors into coordinator entities ([@mib1185] - [#89955]) +- Handle uncaught exceptions during update in Aladdin_connect ([@mkmer] - [#89889]) +- Add Mikrotik WifiWave2 ([@lcosmin] - [#89711]) +- Allow reloading iZone config entry ([@Swamp-Ig] - [#89572]) +- Add SharkIQ EU region support ([@funkybunch] - [#89349]) +- Add phase information to YouLess ([@gjong] - [#89255]) +- Improve threshold binary sensor ([@emontnemery] - [#88978]) +- Display only supported Home Connect appliance programs ([@stickpin] - [#88801]) +- Add re-auth support to philips_js ([@elupus] - [#88774]) +- Add a calendar entity to Ridwell ([@bachya] - [#88108]) +- Look up todoist collaborators only when adding new task ([@boralyl] - [#87957]) +- Add product calculation to Group sensor ([@gjohansson-ST] - [#87373]) +- Bump pychromecast to 13.0.6 ([@emontnemery] - [#90390]) +- Remove dependency on async_setup from mqtt integration ([@jbouwh] - [#87987]) +- Redact secret zwave values in diagnostics ([@raman325] - [#90389]) +- Improve Proxmox VE type hints ([@dougiteixeira] - [#90359]) +- Use shorthand attributes in IHC ([@dingusdk] - [#90350]) +- Speed up profiler lru test ([@bdraco] - [#90395]) +- Add callback support to nuki ([@pree] - [#88346]) +- Display unit of elevation in met config flow ([@chrisx8] - [#88283]) +- Fix ridwell tests ([@epenet] - [#90401]) +- Fix setting color + brightness of Tuya lights ([@BNolet] - [#88470]) +- Use slots for recorder tasks to reduce memory ([@bdraco] - [#90387]) +- Update calendar to always request start/end dates in local time rather than UTC ([@allenporter] - [#90386]) +- Make OTBR use same channel as ZHA ([@emontnemery] - [#88546]) +- Add encoding configuration setting to REST and Scape ([@olivierouellet] - [#90254]) +- Add device info to Nextcloud integration ([@mib1185] - [#90328]) +- Bump python-bsblan to 0.5.11 ([@liudger] - [#90377]) +- Fix benign typo in discovery flow helper ([@bdraco] - [#90396]) +- Fix envoy last_seven_days_energy\* state class ([@jmuf] - [#84528]) +- Remove mysensors notify ([@MartinHjelmare] - [#90402]) +- Remove lru_cache on websocket \_state_diff ([@bdraco] - [#90392]) +- Fix NMBS IndexError ([@PatrickGlesner] - [#90365]) +- Update transmission up/down speed values ([@gapple] - [#88528]) +- TP-Link Omada update entities code review feedback ([@MarkGodwin] - [#89668]) +- Remove mysensors ir switch ([@MartinHjelmare] - [#90403]) +- Have octoprint camera respect verify_ssl configuration ([@rfleming71] - [#90384]) +- Add support for select entities in velbus ([@Cereal2nd] - [#87568]) +- Refactor Tado to use entity descriptions and new naming style ([@avee87] - [#75750]) +- Add HTML support for Google Mail messages ([@tkdrob] - [#87201]) +- Fix Notify Group payload data mis-merge ([@arychj] - [#90253]) +- Improve airq test coverage ([@Sibgatulin] - [#90192]) +- Add panel brightness control for Litter-Robot 4 ([@natekspencer] - [#86269]) +- Add minutely updates to relative_time and today_at template functions ([@Petro31] - [#86815]) +- Don't rely on the demo integration in voice_assistant tests ([@emontnemery] - [#90405]) +- Add rest encoding test ([@epenet] - [#90404]) +- Replace comments with docstring in ColorMode enum ([@epenet] - [#90408]) +- Add brand for HomeSeer ([@b-uwe] - [#90066]) +- Disable esphome stopping a cover if the cover doesn't support stopping ([@amomchilov] - [#80104]) +- Add switch tests for devolo_home_control ([@Shutgun] - [#80154]) +- Add tests to Lidarr ([@tkdrob] - [#79610]) +- Add basic tests for temper USB temperature sensor integration ([@davet2001] - [#80220]) +- Simplify qbittorrent sensor class init ([@chrisx8] - [#90411]) +- Add has_value function/test to Jinja2 template ([@ehendrix23] - [#79550]) +- Add periodically resetting meter option to utility meter ([@Wesley-Vos] - [#88446]) +- Add connected relayer region to system health ([@ludeeus] - [#90410]) +- Blebox cover tilt ([@riokuu] - [#85515]) +- Don't use force_update for Tasmota sensors ([@DerEnderKeks] - [#85943]) +- Update zwave-me-ws version to 0.3.6 ([@lawfulchaos] - [#90233]) +- Refactor ZHA binary sensors to read from zigpy cache ([@TheJulianJES] - [#89481]) +- Add DataUpdateCoordinator to the Todoist integration ([@boralyl] - [#89836]) +- Ensure filters are generated inside the lambda locks ([@bdraco] - [#90418]) +- Implement imap_content event for imap integration ([@jbouwh] - [#90242]) +- Check webhook url is reachable in Reolink ([@starkillerOG] - [#89585]) +- Catch somecomfort error in Honeywell ([@mkmer] - [#90425]) +- Add header with parsed date to imap event data ([@jbouwh] - [#90422]) +- Rework recorder filters to avoid caching mistakes ([@bdraco] - [#90419]) +- Write protect entity options ([@emontnemery] - [#90185]) +- Add goodwe sensors for apparent/reactive pwr ([@mletenay] - [#87940]) +- Add sqlalchemy LRUs to the profiler lru service ([@bdraco] - [#90428]) +- Add binding of IKEA Matter Switch cluster in ZHA ([@MattWestb] - [#89623]) +- Bump onvif-zeep-async to 1.2.3 ([@bdraco] - [#90382]) +- Bump ZHA quirks to 0.0.95 ([@dmulcahey] - [#90435]) +- Add Aqara E1 thermostat entities to ZHA ([@TheJulianJES] - [#90158]) +- Add Aqara smoke sensor entities to ZHA ([@TheJulianJES] - [#90159]) +- Migrate ssdp to config_flow for frontier_silicon ([@wlcrs] - [#89496]) +- Remove unused types argument in statistics query generation ([@bdraco] - [#90431]) +- Reduce cache key size for queries that only need single columns ([@bdraco] - [#90430]) +- OpenAI to use GPT3.5 ([@balloob] - [#90423]) +- Fix unbound variable in sql when session setup fails ([@bdraco] - [#90439]) +- Isolate the sql integration with a separate query cache ([@bdraco] - [#90438]) +- Fix data issue for energyzero during midnight ([@klaasnicolaas] - [#90433]) +- Fix data issue for easyEnergy during midnight ([@klaasnicolaas] - [#90434]) +- Bump yalexs-ble to 2.1.13 ([@bdraco] - [#90442]) +- Limit observations requested for NWS ([@MatthewFlamm] - [#90137]) +- Add new sensors to airq ([@Sibgatulin] - [#90413]) +- Reolink improve config flow login ([@starkillerOG] - [#90036]) +- Fix goodwe export limit unit on single phase DT inverters ([@mletenay] - [#90427]) +- Make abort_entries_match available in options flow ([@epenet] - [#90406]) +- Bump home-assistant-intents to 2023.3.29 ([@balloob] - [#90459]) +- Bump python-matter-server to 3.2.0 ([@marcelveldt] - [#90457]) +- Add verify ssl option to nextcloud ([@mib1185] - [#90462]) +- Bump zwave-js-server-python to 0.47.1 ([@raman325] - [#90464]) +- Update frontend to 20230329.0 ([@bramkragten] - [#90461]) +- Allow resetting filters for waze_travel_time ([@eifinger] - [#88253]) +- Add re-auth flow to nextcloud ([@mib1185] - [#90472]) +- Rename custom_jinja to custom_templates ([@emontnemery] - [#90473]) +- Use auth token in Ezviz ([@RenierM26] - [#54663]) +- Add missing strings in frontier_silicon ([@wlcrs] - [#90446]) +- Bump reolink-aio to 0.5.8 ([@starkillerOG] - [#90467]) +- Add entity name translations for devolo Home Network ([@Shutgun] - [#90471]) +- Bump yalexs-ble to 2.1.14 ([@bdraco] - [#90474]) +- Add missing strings to sensor integration ([@epenet] - [#90475]) +- Correctly load ZHA settings from API when integration is not running ([@puddly] - [#90476]) +- Fix filesize doing blocking I/O in the event loop ([@bdraco] - [#90479]) +- OpenAI to rely on built-in `areas` variable ([@balloob] - [#90481]) +- Include channel in response to WS thread/list_datasets ([@emontnemery] - [#90493]) +- Fix for is_hidden_entity when using it in select, selectattr, reject, and rejectattr ([@Petro31] - [#90512]) +- Unregister webhook when registering webhook with nuki fials ([@balloob] - [#90514]) +- Add a device to the sun ([@frenck] - [#90517]) +- Migrate old ZHA IasZone sensor state to zigpy cache ([@TheJulianJES] - [#90508]) +- Update frontend to 20230330.0 ([@bramkragten] - [#90524]) +- Add entity name translations to LaMetric ([@frenck] - [#90538]) +- Fix migration when encountering a NULL entity_id/event_type ([@bdraco] - [#90542]) +- Handle garbage in the context_id column during migration ([@bdraco] - [#90544]) +- Bump ZHA dependencies ([@puddly] - [#90547]) +- Allow removal of sensor settings in scrape ([@epenet] - [#90412]) +- Make sonos activity check a background task ([@bdraco] - [#90553]) +- Add arming/disarming state to Verisure ([@frenck] - [#90577]) +- Raise on invalid (dis)arm code in manual alarm ([@frenck] - [#90579]) +- Tweak yalexs_ble translations ([@emontnemery] - [#90582]) +- Raise on invalid (dis)arm code in manual mqtt alarm ([@frenck] - [#90584]) +- Bump reolink-aio to 0.5.9 ([@starkillerOG] - [#90590]) +- Update frontend to 20230331.0 ([@bramkragten] - [#90594]) +- Fix ZHA definition error on received command ([@puddly] - [#90602]) +- Perform an energy scan when downloading ZHA diagnostics ([@puddly] - [#90605]) +- Bump zwave-js-server-python to 0.47.3 ([@raman325] - [#90606]) +- Avoid sorting domain/all states in templates ([@bdraco] - [#90608]) +- Only limit stats to started add-ons ([@ludeeus] - [#90611]) +- Small speed up to \_collection_changed ([@bdraco] - [#90621]) +- Bump zeroconf to 0.51.0 ([@bdraco] - [#90622]) +- Fix Rest switch init was not retrying if unreachable at setup ([@aschor] - [#90627]) +- Fix mqtt device_tracker is not reloading yaml ([@jbouwh] - [#90639]) +- Update frontend to 20230401.0 ([@bramkragten] - [#90646]) +- Update goodwe library to v0.2.30 ([@mletenay] - [#90607]) +- Add entity name translations to Brother ([@bieniu] - [#90634]) +- Add object source logger to profiler ([@bdraco] - [#90650]) +- Add entity name translations to GIOS ([@bieniu] - [#90655]) +- Add entity name translations to Airly ([@bieniu] - [#90656]) +- Bump zeroconf to 0.52.0 ([@bdraco] - [#90660]) +- Add entity name translations for Nest sensors ([@Nardol] - [#90677]) +- Fix frontend test ([@balloob] - [#90679]) +- Bump zeroconf to 0.53.0 ([@bdraco] - [#90682]) +- Fix default sensor entity name for PM1 ([@bieniu] - [#90684]) +- Fix memory churn in state templates ([@bdraco] - [#90685]) +- Remove Darksky integration ([@gjohansson-ST] - [#90322]) +- Use entity name translations in Fronius ([@farmio] - [#90463]) +- Raise repair issue if OTBR and ZHA are on different channels ([@emontnemery] - [#90494]) +- Correct handling if WIFI combine suffix is "None" ([@N3rdix] - [#90528]) +- Add entity name translations to Plugwise ([@frenck] - [#90537]) +- Add entity name translations to Switchbot ([@Nardol] - [#90600]) +- Bump env_canada to v0.5.30 ([@michaeldavie] - [#90644]) +- Ensure system log does not raise while processing logger messages ([@bdraco] - [#90652]) +- Add entity name translations to NAM ([@bieniu] - [#90681]) +- Use the default entity names in Airly ([@bieniu] - [#90693]) +- Use entity name translations in 1-wire ([@epenet] - [#90696]) +- Use entity name translations in Renault ([@epenet] - [#90697]) +- Use entity name translations in SFR Box ([@epenet] - [#90698]) +- Fix ha version in EDL21 deprecation warning ([@StephanU] - [#90699]) +- Use the default entity names in GIOS ([@bieniu] - [#90700]) +- Add entity name translations to BraviaTV ([@bieniu] - [#90702]) +- Add entity name translations to AVM Fritz!Tools ([@mib1185] - [#90703]) +- Add entity name translations to Synology DSM ([@mib1185] - [#90706]) +- Add entity name translations to AVM Fritz!SmartHome ([@mib1185] - [#90707]) +- Add entity name translations to NUT ([@mib1185] - [#90709]) +- Fix Livisi climate min/max temperature ([@planbnet] - [#90712]) +- Add entity name translations to Pi-hole ([@mib1185] - [#90713]) +- Fix translation of status binary sensor in PI-Hole ([@mib1185] - [#90719]) +- Fix missing battery sensors for SimpliSafe locks ([@bachya] - [#90722]) +- Bump pychromecast to 13.0.7 ([@emontnemery] - [#90724]) +- Add entity name translations to Luftdaten ([@mib1185] - [#90725]) +- Add entity name translations to sun ([@mib1185] - [#90732]) +- Update frontend to 20230403.0 ([@bramkragten] - [#90735]) +- Fix bluetooth_le_tracker reporting devices Home when they leave ([@ProtoxiDe22] - [#90641]) +- Add entity name translations to SMS ([@mib1185] - [#90727]) +- Add entity name translations to Tractive ([@bieniu] - [#90738]) +- SharkIQ Hotfix - Handle current installations by using default `REGION` ([@funkybunch] - [#90741]) +- Add entity name translations to NextDNS ([@bieniu] - [#90743]) +- Bump zeroconf to 0.54.0 ([@bdraco] - [#90744]) +- Prevent overly large event data from being stored in the database ([@bdraco] - [#90747]) +- Restore state for ZHA OnOff binary sensors ([@TheJulianJES] - [#90749]) +- Bump aiohomekit to 2.6.3 ([@bdraco] - [#90752]) +- Add render count to templates repr ([@bdraco] - [#90753]) +- Fix frontend test again ([@balloob] - [#90754]) +- Update template environment from the event loop ([@emontnemery] - [#90758]) +- Fix recovering imap connection triggers re-auth ([@jbouwh] - [#90762]) +- Add async_write_ha_state to Reolink select ([@starkillerOG] - [#90764]) +- Address late review for NextDNS entity name translations ([@bieniu] - [#90771]) +- Add Warning in the issue registry if a HTTPS webhook is used for Nuki ([@pree] - [#90718]) +- Add translations for Nuki entity name and battery critical state attribute ([@Nardol] - [#90772]) +- Add entity name translations to Broadlink sensors ([@Nardol] - [#90783]) +- Fix BLEDevice not getting updated when details change for remote scanners ([@bdraco] - [#90815]) +- Bump aioesphomeapi to 10.6.1 ([@bdraco] - [#90816]) +- Master RAS zone ([@Swamp-Ig] - [#90825]) +- Suppress imap logging on reconnect and presume state ([@jbouwh] - [#90826]) +- Add entity name translations to prusalink entities ([@piitaya] - [#90833]) +- Support entity name translation in DSMR Reader component ([@Glodenox] - [#90836]) +- Adjust async_track_time_interval name argument ([@epenet] - [#90838]) +- Bump frontend to 20230405.0 ([@bramkragten] - [#90841]) +- Adjust OTBR channel conflict URL ([@emontnemery] - [#90847]) + +[#54663]: https://github.com/home-assistant/core/pull/54663 +[#64365]: https://github.com/home-assistant/core/pull/64365 +[#73893]: https://github.com/home-assistant/core/pull/73893 +[#75750]: https://github.com/home-assistant/core/pull/75750 +[#76049]: https://github.com/home-assistant/core/pull/76049 +[#76428]: https://github.com/home-assistant/core/pull/76428 +[#77857]: https://github.com/home-assistant/core/pull/77857 +[#79550]: https://github.com/home-assistant/core/pull/79550 +[#79610]: https://github.com/home-assistant/core/pull/79610 +[#79715]: https://github.com/home-assistant/core/pull/79715 +[#79732]: https://github.com/home-assistant/core/pull/79732 +[#80104]: https://github.com/home-assistant/core/pull/80104 +[#80154]: https://github.com/home-assistant/core/pull/80154 +[#80220]: https://github.com/home-assistant/core/pull/80220 +[#80490]: https://github.com/home-assistant/core/pull/80490 +[#80708]: https://github.com/home-assistant/core/pull/80708 +[#80741]: https://github.com/home-assistant/core/pull/80741 +[#80838]: https://github.com/home-assistant/core/pull/80838 +[#81045]: https://github.com/home-assistant/core/pull/81045 +[#81212]: https://github.com/home-assistant/core/pull/81212 +[#81214]: https://github.com/home-assistant/core/pull/81214 +[#81222]: https://github.com/home-assistant/core/pull/81222 +[#82786]: https://github.com/home-assistant/core/pull/82786 +[#83380]: https://github.com/home-assistant/core/pull/83380 +[#84528]: https://github.com/home-assistant/core/pull/84528 +[#84942]: https://github.com/home-assistant/core/pull/84942 +[#85418]: https://github.com/home-assistant/core/pull/85418 +[#85436]: https://github.com/home-assistant/core/pull/85436 +[#85515]: https://github.com/home-assistant/core/pull/85515 +[#85668]: https://github.com/home-assistant/core/pull/85668 +[#85681]: https://github.com/home-assistant/core/pull/85681 +[#85943]: https://github.com/home-assistant/core/pull/85943 +[#86162]: https://github.com/home-assistant/core/pull/86162 +[#86269]: https://github.com/home-assistant/core/pull/86269 +[#86328]: https://github.com/home-assistant/core/pull/86328 +[#86350]: https://github.com/home-assistant/core/pull/86350 +[#86691]: https://github.com/home-assistant/core/pull/86691 +[#86815]: https://github.com/home-assistant/core/pull/86815 +[#87108]: https://github.com/home-assistant/core/pull/87108 +[#87201]: https://github.com/home-assistant/core/pull/87201 +[#87373]: https://github.com/home-assistant/core/pull/87373 +[#87389]: https://github.com/home-assistant/core/pull/87389 +[#87536]: https://github.com/home-assistant/core/pull/87536 +[#87568]: https://github.com/home-assistant/core/pull/87568 +[#87573]: https://github.com/home-assistant/core/pull/87573 +[#87653]: https://github.com/home-assistant/core/pull/87653 +[#87655]: https://github.com/home-assistant/core/pull/87655 +[#87671]: https://github.com/home-assistant/core/pull/87671 +[#87846]: https://github.com/home-assistant/core/pull/87846 +[#87869]: https://github.com/home-assistant/core/pull/87869 +[#87932]: https://github.com/home-assistant/core/pull/87932 +[#87940]: https://github.com/home-assistant/core/pull/87940 +[#87943]: https://github.com/home-assistant/core/pull/87943 +[#87946]: https://github.com/home-assistant/core/pull/87946 +[#87957]: https://github.com/home-assistant/core/pull/87957 +[#87987]: https://github.com/home-assistant/core/pull/87987 +[#88003]: https://github.com/home-assistant/core/pull/88003 +[#88108]: https://github.com/home-assistant/core/pull/88108 +[#88217]: https://github.com/home-assistant/core/pull/88217 +[#88242]: https://github.com/home-assistant/core/pull/88242 +[#88253]: https://github.com/home-assistant/core/pull/88253 +[#88283]: https://github.com/home-assistant/core/pull/88283 +[#88310]: https://github.com/home-assistant/core/pull/88310 +[#88312]: https://github.com/home-assistant/core/pull/88312 +[#88342]: https://github.com/home-assistant/core/pull/88342 +[#88346]: https://github.com/home-assistant/core/pull/88346 +[#88441]: https://github.com/home-assistant/core/pull/88441 +[#88446]: https://github.com/home-assistant/core/pull/88446 +[#88470]: https://github.com/home-assistant/core/pull/88470 +[#88484]: https://github.com/home-assistant/core/pull/88484 +[#88509]: https://github.com/home-assistant/core/pull/88509 +[#88522]: https://github.com/home-assistant/core/pull/88522 +[#88528]: https://github.com/home-assistant/core/pull/88528 +[#88546]: https://github.com/home-assistant/core/pull/88546 +[#88557]: https://github.com/home-assistant/core/pull/88557 +[#88560]: https://github.com/home-assistant/core/pull/88560 +[#88564]: https://github.com/home-assistant/core/pull/88564 +[#88571]: https://github.com/home-assistant/core/pull/88571 +[#88579]: https://github.com/home-assistant/core/pull/88579 +[#88580]: https://github.com/home-assistant/core/pull/88580 +[#88581]: https://github.com/home-assistant/core/pull/88581 +[#88582]: https://github.com/home-assistant/core/pull/88582 +[#88585]: https://github.com/home-assistant/core/pull/88585 +[#88593]: https://github.com/home-assistant/core/pull/88593 +[#88599]: https://github.com/home-assistant/core/pull/88599 +[#88603]: https://github.com/home-assistant/core/pull/88603 +[#88610]: https://github.com/home-assistant/core/pull/88610 +[#88611]: https://github.com/home-assistant/core/pull/88611 +[#88619]: https://github.com/home-assistant/core/pull/88619 +[#88623]: https://github.com/home-assistant/core/pull/88623 +[#88625]: https://github.com/home-assistant/core/pull/88625 +[#88627]: https://github.com/home-assistant/core/pull/88627 +[#88629]: https://github.com/home-assistant/core/pull/88629 +[#88630]: https://github.com/home-assistant/core/pull/88630 +[#88636]: https://github.com/home-assistant/core/pull/88636 +[#88640]: https://github.com/home-assistant/core/pull/88640 +[#88657]: https://github.com/home-assistant/core/pull/88657 +[#88658]: https://github.com/home-assistant/core/pull/88658 +[#88666]: https://github.com/home-assistant/core/pull/88666 +[#88669]: https://github.com/home-assistant/core/pull/88669 +[#88674]: https://github.com/home-assistant/core/pull/88674 +[#88679]: https://github.com/home-assistant/core/pull/88679 +[#88682]: https://github.com/home-assistant/core/pull/88682 +[#88684]: https://github.com/home-assistant/core/pull/88684 +[#88687]: https://github.com/home-assistant/core/pull/88687 +[#88692]: https://github.com/home-assistant/core/pull/88692 +[#88694]: https://github.com/home-assistant/core/pull/88694 +[#88697]: https://github.com/home-assistant/core/pull/88697 +[#88700]: https://github.com/home-assistant/core/pull/88700 +[#88713]: https://github.com/home-assistant/core/pull/88713 +[#88754]: https://github.com/home-assistant/core/pull/88754 +[#88762]: https://github.com/home-assistant/core/pull/88762 +[#88764]: https://github.com/home-assistant/core/pull/88764 +[#88770]: https://github.com/home-assistant/core/pull/88770 +[#88772]: https://github.com/home-assistant/core/pull/88772 +[#88774]: https://github.com/home-assistant/core/pull/88774 +[#88786]: https://github.com/home-assistant/core/pull/88786 +[#88801]: https://github.com/home-assistant/core/pull/88801 +[#88803]: https://github.com/home-assistant/core/pull/88803 +[#88804]: https://github.com/home-assistant/core/pull/88804 +[#88808]: https://github.com/home-assistant/core/pull/88808 +[#88809]: https://github.com/home-assistant/core/pull/88809 +[#88813]: https://github.com/home-assistant/core/pull/88813 +[#88820]: https://github.com/home-assistant/core/pull/88820 +[#88823]: https://github.com/home-assistant/core/pull/88823 +[#88824]: https://github.com/home-assistant/core/pull/88824 +[#88828]: https://github.com/home-assistant/core/pull/88828 +[#88829]: https://github.com/home-assistant/core/pull/88829 +[#88834]: https://github.com/home-assistant/core/pull/88834 +[#88835]: https://github.com/home-assistant/core/pull/88835 +[#88843]: https://github.com/home-assistant/core/pull/88843 +[#88844]: https://github.com/home-assistant/core/pull/88844 +[#88849]: https://github.com/home-assistant/core/pull/88849 +[#88850]: https://github.com/home-assistant/core/pull/88850 +[#88851]: https://github.com/home-assistant/core/pull/88851 +[#88853]: https://github.com/home-assistant/core/pull/88853 +[#88856]: https://github.com/home-assistant/core/pull/88856 +[#88859]: https://github.com/home-assistant/core/pull/88859 +[#88862]: https://github.com/home-assistant/core/pull/88862 +[#88863]: https://github.com/home-assistant/core/pull/88863 +[#88870]: https://github.com/home-assistant/core/pull/88870 +[#88873]: https://github.com/home-assistant/core/pull/88873 +[#88875]: https://github.com/home-assistant/core/pull/88875 +[#88878]: https://github.com/home-assistant/core/pull/88878 +[#88879]: https://github.com/home-assistant/core/pull/88879 +[#88880]: https://github.com/home-assistant/core/pull/88880 +[#88881]: https://github.com/home-assistant/core/pull/88881 +[#88882]: https://github.com/home-assistant/core/pull/88882 +[#88883]: https://github.com/home-assistant/core/pull/88883 +[#88884]: https://github.com/home-assistant/core/pull/88884 +[#88891]: https://github.com/home-assistant/core/pull/88891 +[#88893]: https://github.com/home-assistant/core/pull/88893 +[#88898]: https://github.com/home-assistant/core/pull/88898 +[#88899]: https://github.com/home-assistant/core/pull/88899 +[#88900]: https://github.com/home-assistant/core/pull/88900 +[#88903]: https://github.com/home-assistant/core/pull/88903 +[#88905]: https://github.com/home-assistant/core/pull/88905 +[#88906]: https://github.com/home-assistant/core/pull/88906 +[#88913]: https://github.com/home-assistant/core/pull/88913 +[#88914]: https://github.com/home-assistant/core/pull/88914 +[#88916]: https://github.com/home-assistant/core/pull/88916 +[#88918]: https://github.com/home-assistant/core/pull/88918 +[#88923]: https://github.com/home-assistant/core/pull/88923 +[#88938]: https://github.com/home-assistant/core/pull/88938 +[#88939]: https://github.com/home-assistant/core/pull/88939 +[#88942]: https://github.com/home-assistant/core/pull/88942 +[#88944]: https://github.com/home-assistant/core/pull/88944 +[#88946]: https://github.com/home-assistant/core/pull/88946 +[#88947]: https://github.com/home-assistant/core/pull/88947 +[#88948]: https://github.com/home-assistant/core/pull/88948 +[#88949]: https://github.com/home-assistant/core/pull/88949 +[#88950]: https://github.com/home-assistant/core/pull/88950 +[#88951]: https://github.com/home-assistant/core/pull/88951 +[#88953]: https://github.com/home-assistant/core/pull/88953 +[#88957]: https://github.com/home-assistant/core/pull/88957 +[#88959]: https://github.com/home-assistant/core/pull/88959 +[#88960]: https://github.com/home-assistant/core/pull/88960 +[#88964]: https://github.com/home-assistant/core/pull/88964 +[#88965]: https://github.com/home-assistant/core/pull/88965 +[#88967]: https://github.com/home-assistant/core/pull/88967 +[#88972]: https://github.com/home-assistant/core/pull/88972 +[#88973]: https://github.com/home-assistant/core/pull/88973 +[#88977]: https://github.com/home-assistant/core/pull/88977 +[#88978]: https://github.com/home-assistant/core/pull/88978 +[#88982]: https://github.com/home-assistant/core/pull/88982 +[#88991]: https://github.com/home-assistant/core/pull/88991 +[#89003]: https://github.com/home-assistant/core/pull/89003 +[#89008]: https://github.com/home-assistant/core/pull/89008 +[#89011]: https://github.com/home-assistant/core/pull/89011 +[#89017]: https://github.com/home-assistant/core/pull/89017 +[#89018]: https://github.com/home-assistant/core/pull/89018 +[#89019]: https://github.com/home-assistant/core/pull/89019 +[#89026]: https://github.com/home-assistant/core/pull/89026 +[#89028]: https://github.com/home-assistant/core/pull/89028 +[#89033]: https://github.com/home-assistant/core/pull/89033 +[#89035]: https://github.com/home-assistant/core/pull/89035 +[#89036]: https://github.com/home-assistant/core/pull/89036 +[#89043]: https://github.com/home-assistant/core/pull/89043 +[#89044]: https://github.com/home-assistant/core/pull/89044 +[#89070]: https://github.com/home-assistant/core/pull/89070 +[#89071]: https://github.com/home-assistant/core/pull/89071 +[#89077]: https://github.com/home-assistant/core/pull/89077 +[#89078]: https://github.com/home-assistant/core/pull/89078 +[#89079]: https://github.com/home-assistant/core/pull/89079 +[#89080]: https://github.com/home-assistant/core/pull/89080 +[#89085]: https://github.com/home-assistant/core/pull/89085 +[#89088]: https://github.com/home-assistant/core/pull/89088 +[#89091]: https://github.com/home-assistant/core/pull/89091 +[#89093]: https://github.com/home-assistant/core/pull/89093 +[#89100]: https://github.com/home-assistant/core/pull/89100 +[#89110]: https://github.com/home-assistant/core/pull/89110 +[#89112]: https://github.com/home-assistant/core/pull/89112 +[#89117]: https://github.com/home-assistant/core/pull/89117 +[#89118]: https://github.com/home-assistant/core/pull/89118 +[#89124]: https://github.com/home-assistant/core/pull/89124 +[#89126]: https://github.com/home-assistant/core/pull/89126 +[#89140]: https://github.com/home-assistant/core/pull/89140 +[#89141]: https://github.com/home-assistant/core/pull/89141 +[#89145]: https://github.com/home-assistant/core/pull/89145 +[#89150]: https://github.com/home-assistant/core/pull/89150 +[#89152]: https://github.com/home-assistant/core/pull/89152 +[#89153]: https://github.com/home-assistant/core/pull/89153 +[#89158]: https://github.com/home-assistant/core/pull/89158 +[#89160]: https://github.com/home-assistant/core/pull/89160 +[#89161]: https://github.com/home-assistant/core/pull/89161 +[#89162]: https://github.com/home-assistant/core/pull/89162 +[#89163]: https://github.com/home-assistant/core/pull/89163 +[#89164]: https://github.com/home-assistant/core/pull/89164 +[#89166]: https://github.com/home-assistant/core/pull/89166 +[#89168]: https://github.com/home-assistant/core/pull/89168 +[#89169]: https://github.com/home-assistant/core/pull/89169 +[#89171]: https://github.com/home-assistant/core/pull/89171 +[#89174]: https://github.com/home-assistant/core/pull/89174 +[#89179]: https://github.com/home-assistant/core/pull/89179 +[#89190]: https://github.com/home-assistant/core/pull/89190 +[#89192]: https://github.com/home-assistant/core/pull/89192 +[#89193]: https://github.com/home-assistant/core/pull/89193 +[#89196]: https://github.com/home-assistant/core/pull/89196 +[#89197]: https://github.com/home-assistant/core/pull/89197 +[#89201]: https://github.com/home-assistant/core/pull/89201 +[#89208]: https://github.com/home-assistant/core/pull/89208 +[#89211]: https://github.com/home-assistant/core/pull/89211 +[#89212]: https://github.com/home-assistant/core/pull/89212 +[#89213]: https://github.com/home-assistant/core/pull/89213 +[#89217]: https://github.com/home-assistant/core/pull/89217 +[#89219]: https://github.com/home-assistant/core/pull/89219 +[#89221]: https://github.com/home-assistant/core/pull/89221 +[#89226]: https://github.com/home-assistant/core/pull/89226 +[#89230]: https://github.com/home-assistant/core/pull/89230 +[#89234]: https://github.com/home-assistant/core/pull/89234 +[#89236]: https://github.com/home-assistant/core/pull/89236 +[#89238]: https://github.com/home-assistant/core/pull/89238 +[#89239]: https://github.com/home-assistant/core/pull/89239 +[#89240]: https://github.com/home-assistant/core/pull/89240 +[#89242]: https://github.com/home-assistant/core/pull/89242 +[#89255]: https://github.com/home-assistant/core/pull/89255 +[#89268]: https://github.com/home-assistant/core/pull/89268 +[#89273]: https://github.com/home-assistant/core/pull/89273 +[#89276]: https://github.com/home-assistant/core/pull/89276 +[#89277]: https://github.com/home-assistant/core/pull/89277 +[#89279]: https://github.com/home-assistant/core/pull/89279 +[#89282]: https://github.com/home-assistant/core/pull/89282 +[#89283]: https://github.com/home-assistant/core/pull/89283 +[#89284]: https://github.com/home-assistant/core/pull/89284 +[#89285]: https://github.com/home-assistant/core/pull/89285 +[#89286]: https://github.com/home-assistant/core/pull/89286 +[#89287]: https://github.com/home-assistant/core/pull/89287 +[#89292]: https://github.com/home-assistant/core/pull/89292 +[#89302]: https://github.com/home-assistant/core/pull/89302 +[#89303]: https://github.com/home-assistant/core/pull/89303 +[#89309]: https://github.com/home-assistant/core/pull/89309 +[#89310]: https://github.com/home-assistant/core/pull/89310 +[#89316]: https://github.com/home-assistant/core/pull/89316 +[#89317]: https://github.com/home-assistant/core/pull/89317 +[#89318]: https://github.com/home-assistant/core/pull/89318 +[#89321]: https://github.com/home-assistant/core/pull/89321 +[#89327]: https://github.com/home-assistant/core/pull/89327 +[#89335]: https://github.com/home-assistant/core/pull/89335 +[#89336]: https://github.com/home-assistant/core/pull/89336 +[#89337]: https://github.com/home-assistant/core/pull/89337 +[#89338]: https://github.com/home-assistant/core/pull/89338 +[#89339]: https://github.com/home-assistant/core/pull/89339 +[#89340]: https://github.com/home-assistant/core/pull/89340 +[#89344]: https://github.com/home-assistant/core/pull/89344 +[#89346]: https://github.com/home-assistant/core/pull/89346 +[#89349]: https://github.com/home-assistant/core/pull/89349 +[#89354]: https://github.com/home-assistant/core/pull/89354 +[#89355]: https://github.com/home-assistant/core/pull/89355 +[#89356]: https://github.com/home-assistant/core/pull/89356 +[#89358]: https://github.com/home-assistant/core/pull/89358 +[#89359]: https://github.com/home-assistant/core/pull/89359 +[#89360]: https://github.com/home-assistant/core/pull/89360 +[#89361]: https://github.com/home-assistant/core/pull/89361 +[#89362]: https://github.com/home-assistant/core/pull/89362 +[#89364]: https://github.com/home-assistant/core/pull/89364 +[#89365]: https://github.com/home-assistant/core/pull/89365 +[#89370]: https://github.com/home-assistant/core/pull/89370 +[#89377]: https://github.com/home-assistant/core/pull/89377 +[#89382]: https://github.com/home-assistant/core/pull/89382 +[#89383]: https://github.com/home-assistant/core/pull/89383 +[#89384]: https://github.com/home-assistant/core/pull/89384 +[#89385]: https://github.com/home-assistant/core/pull/89385 +[#89388]: https://github.com/home-assistant/core/pull/89388 +[#89389]: https://github.com/home-assistant/core/pull/89389 +[#89392]: https://github.com/home-assistant/core/pull/89392 +[#89393]: https://github.com/home-assistant/core/pull/89393 +[#89394]: https://github.com/home-assistant/core/pull/89394 +[#89396]: https://github.com/home-assistant/core/pull/89396 +[#89400]: https://github.com/home-assistant/core/pull/89400 +[#89409]: https://github.com/home-assistant/core/pull/89409 +[#89418]: https://github.com/home-assistant/core/pull/89418 +[#89419]: https://github.com/home-assistant/core/pull/89419 +[#89420]: https://github.com/home-assistant/core/pull/89420 +[#89422]: https://github.com/home-assistant/core/pull/89422 +[#89424]: https://github.com/home-assistant/core/pull/89424 +[#89426]: https://github.com/home-assistant/core/pull/89426 +[#89428]: https://github.com/home-assistant/core/pull/89428 +[#89430]: https://github.com/home-assistant/core/pull/89430 +[#89431]: https://github.com/home-assistant/core/pull/89431 +[#89433]: https://github.com/home-assistant/core/pull/89433 +[#89438]: https://github.com/home-assistant/core/pull/89438 +[#89440]: https://github.com/home-assistant/core/pull/89440 +[#89441]: https://github.com/home-assistant/core/pull/89441 +[#89442]: https://github.com/home-assistant/core/pull/89442 +[#89450]: https://github.com/home-assistant/core/pull/89450 +[#89451]: https://github.com/home-assistant/core/pull/89451 +[#89455]: https://github.com/home-assistant/core/pull/89455 +[#89461]: https://github.com/home-assistant/core/pull/89461 +[#89465]: https://github.com/home-assistant/core/pull/89465 +[#89475]: https://github.com/home-assistant/core/pull/89475 +[#89476]: https://github.com/home-assistant/core/pull/89476 +[#89481]: https://github.com/home-assistant/core/pull/89481 +[#89485]: https://github.com/home-assistant/core/pull/89485 +[#89486]: https://github.com/home-assistant/core/pull/89486 +[#89487]: https://github.com/home-assistant/core/pull/89487 +[#89492]: https://github.com/home-assistant/core/pull/89492 +[#89496]: https://github.com/home-assistant/core/pull/89496 +[#89497]: https://github.com/home-assistant/core/pull/89497 +[#89500]: https://github.com/home-assistant/core/pull/89500 +[#89501]: https://github.com/home-assistant/core/pull/89501 +[#89507]: https://github.com/home-assistant/core/pull/89507 +[#89510]: https://github.com/home-assistant/core/pull/89510 +[#89511]: https://github.com/home-assistant/core/pull/89511 +[#89512]: https://github.com/home-assistant/core/pull/89512 +[#89513]: https://github.com/home-assistant/core/pull/89513 +[#89515]: https://github.com/home-assistant/core/pull/89515 +[#89522]: https://github.com/home-assistant/core/pull/89522 +[#89525]: https://github.com/home-assistant/core/pull/89525 +[#89526]: https://github.com/home-assistant/core/pull/89526 +[#89532]: https://github.com/home-assistant/core/pull/89532 +[#89533]: https://github.com/home-assistant/core/pull/89533 +[#89534]: https://github.com/home-assistant/core/pull/89534 +[#89552]: https://github.com/home-assistant/core/pull/89552 +[#89554]: https://github.com/home-assistant/core/pull/89554 +[#89555]: https://github.com/home-assistant/core/pull/89555 +[#89557]: https://github.com/home-assistant/core/pull/89557 +[#89559]: https://github.com/home-assistant/core/pull/89559 +[#89561]: https://github.com/home-assistant/core/pull/89561 +[#89562]: https://github.com/home-assistant/core/pull/89562 +[#89564]: https://github.com/home-assistant/core/pull/89564 +[#89565]: https://github.com/home-assistant/core/pull/89565 +[#89571]: https://github.com/home-assistant/core/pull/89571 +[#89572]: https://github.com/home-assistant/core/pull/89572 +[#89573]: https://github.com/home-assistant/core/pull/89573 +[#89576]: https://github.com/home-assistant/core/pull/89576 +[#89577]: https://github.com/home-assistant/core/pull/89577 +[#89578]: https://github.com/home-assistant/core/pull/89578 +[#89585]: https://github.com/home-assistant/core/pull/89585 +[#89587]: https://github.com/home-assistant/core/pull/89587 +[#89589]: https://github.com/home-assistant/core/pull/89589 +[#89591]: https://github.com/home-assistant/core/pull/89591 +[#89595]: https://github.com/home-assistant/core/pull/89595 +[#89598]: https://github.com/home-assistant/core/pull/89598 +[#89599]: https://github.com/home-assistant/core/pull/89599 +[#89600]: https://github.com/home-assistant/core/pull/89600 +[#89601]: https://github.com/home-assistant/core/pull/89601 +[#89603]: https://github.com/home-assistant/core/pull/89603 +[#89606]: https://github.com/home-assistant/core/pull/89606 +[#89609]: https://github.com/home-assistant/core/pull/89609 +[#89613]: https://github.com/home-assistant/core/pull/89613 +[#89616]: https://github.com/home-assistant/core/pull/89616 +[#89617]: https://github.com/home-assistant/core/pull/89617 +[#89619]: https://github.com/home-assistant/core/pull/89619 +[#89623]: https://github.com/home-assistant/core/pull/89623 +[#89624]: https://github.com/home-assistant/core/pull/89624 +[#89629]: https://github.com/home-assistant/core/pull/89629 +[#89631]: https://github.com/home-assistant/core/pull/89631 +[#89632]: https://github.com/home-assistant/core/pull/89632 +[#89633]: https://github.com/home-assistant/core/pull/89633 +[#89635]: https://github.com/home-assistant/core/pull/89635 +[#89637]: https://github.com/home-assistant/core/pull/89637 +[#89640]: https://github.com/home-assistant/core/pull/89640 +[#89644]: https://github.com/home-assistant/core/pull/89644 +[#89645]: https://github.com/home-assistant/core/pull/89645 +[#89646]: https://github.com/home-assistant/core/pull/89646 +[#89652]: https://github.com/home-assistant/core/pull/89652 +[#89653]: https://github.com/home-assistant/core/pull/89653 +[#89654]: https://github.com/home-assistant/core/pull/89654 +[#89655]: https://github.com/home-assistant/core/pull/89655 +[#89656]: https://github.com/home-assistant/core/pull/89656 +[#89658]: https://github.com/home-assistant/core/pull/89658 +[#89660]: https://github.com/home-assistant/core/pull/89660 +[#89661]: https://github.com/home-assistant/core/pull/89661 +[#89666]: https://github.com/home-assistant/core/pull/89666 +[#89668]: https://github.com/home-assistant/core/pull/89668 +[#89673]: https://github.com/home-assistant/core/pull/89673 +[#89674]: https://github.com/home-assistant/core/pull/89674 +[#89676]: https://github.com/home-assistant/core/pull/89676 +[#89677]: https://github.com/home-assistant/core/pull/89677 +[#89678]: https://github.com/home-assistant/core/pull/89678 +[#89679]: https://github.com/home-assistant/core/pull/89679 +[#89681]: https://github.com/home-assistant/core/pull/89681 +[#89688]: https://github.com/home-assistant/core/pull/89688 +[#89692]: https://github.com/home-assistant/core/pull/89692 +[#89694]: https://github.com/home-assistant/core/pull/89694 +[#89695]: https://github.com/home-assistant/core/pull/89695 +[#89698]: https://github.com/home-assistant/core/pull/89698 +[#89700]: https://github.com/home-assistant/core/pull/89700 +[#89702]: https://github.com/home-assistant/core/pull/89702 +[#89703]: https://github.com/home-assistant/core/pull/89703 +[#89704]: https://github.com/home-assistant/core/pull/89704 +[#89711]: https://github.com/home-assistant/core/pull/89711 +[#89716]: https://github.com/home-assistant/core/pull/89716 +[#89719]: https://github.com/home-assistant/core/pull/89719 +[#89721]: https://github.com/home-assistant/core/pull/89721 +[#89723]: https://github.com/home-assistant/core/pull/89723 +[#89724]: https://github.com/home-assistant/core/pull/89724 +[#89726]: https://github.com/home-assistant/core/pull/89726 +[#89732]: https://github.com/home-assistant/core/pull/89732 +[#89733]: https://github.com/home-assistant/core/pull/89733 +[#89734]: https://github.com/home-assistant/core/pull/89734 +[#89737]: https://github.com/home-assistant/core/pull/89737 +[#89743]: https://github.com/home-assistant/core/pull/89743 +[#89744]: https://github.com/home-assistant/core/pull/89744 +[#89748]: https://github.com/home-assistant/core/pull/89748 +[#89749]: https://github.com/home-assistant/core/pull/89749 +[#89751]: https://github.com/home-assistant/core/pull/89751 +[#89752]: https://github.com/home-assistant/core/pull/89752 +[#89753]: https://github.com/home-assistant/core/pull/89753 +[#89754]: https://github.com/home-assistant/core/pull/89754 +[#89756]: https://github.com/home-assistant/core/pull/89756 +[#89757]: https://github.com/home-assistant/core/pull/89757 +[#89759]: https://github.com/home-assistant/core/pull/89759 +[#89760]: https://github.com/home-assistant/core/pull/89760 +[#89764]: https://github.com/home-assistant/core/pull/89764 +[#89765]: https://github.com/home-assistant/core/pull/89765 +[#89769]: https://github.com/home-assistant/core/pull/89769 +[#89770]: https://github.com/home-assistant/core/pull/89770 +[#89774]: https://github.com/home-assistant/core/pull/89774 +[#89776]: https://github.com/home-assistant/core/pull/89776 +[#89778]: https://github.com/home-assistant/core/pull/89778 +[#89779]: https://github.com/home-assistant/core/pull/89779 +[#89780]: https://github.com/home-assistant/core/pull/89780 +[#89781]: https://github.com/home-assistant/core/pull/89781 +[#89783]: https://github.com/home-assistant/core/pull/89783 +[#89784]: https://github.com/home-assistant/core/pull/89784 +[#89785]: https://github.com/home-assistant/core/pull/89785 +[#89786]: https://github.com/home-assistant/core/pull/89786 +[#89787]: https://github.com/home-assistant/core/pull/89787 +[#89788]: https://github.com/home-assistant/core/pull/89788 +[#89790]: https://github.com/home-assistant/core/pull/89790 +[#89792]: https://github.com/home-assistant/core/pull/89792 +[#89793]: https://github.com/home-assistant/core/pull/89793 +[#89795]: https://github.com/home-assistant/core/pull/89795 +[#89796]: https://github.com/home-assistant/core/pull/89796 +[#89798]: https://github.com/home-assistant/core/pull/89798 +[#89801]: https://github.com/home-assistant/core/pull/89801 +[#89803]: https://github.com/home-assistant/core/pull/89803 +[#89804]: https://github.com/home-assistant/core/pull/89804 +[#89805]: https://github.com/home-assistant/core/pull/89805 +[#89807]: https://github.com/home-assistant/core/pull/89807 +[#89808]: https://github.com/home-assistant/core/pull/89808 +[#89809]: https://github.com/home-assistant/core/pull/89809 +[#89810]: https://github.com/home-assistant/core/pull/89810 +[#89811]: https://github.com/home-assistant/core/pull/89811 +[#89812]: https://github.com/home-assistant/core/pull/89812 +[#89815]: https://github.com/home-assistant/core/pull/89815 +[#89816]: https://github.com/home-assistant/core/pull/89816 +[#89818]: https://github.com/home-assistant/core/pull/89818 +[#89819]: https://github.com/home-assistant/core/pull/89819 +[#89820]: https://github.com/home-assistant/core/pull/89820 +[#89821]: https://github.com/home-assistant/core/pull/89821 +[#89822]: https://github.com/home-assistant/core/pull/89822 +[#89824]: https://github.com/home-assistant/core/pull/89824 +[#89825]: https://github.com/home-assistant/core/pull/89825 +[#89826]: https://github.com/home-assistant/core/pull/89826 +[#89832]: https://github.com/home-assistant/core/pull/89832 +[#89833]: https://github.com/home-assistant/core/pull/89833 +[#89835]: https://github.com/home-assistant/core/pull/89835 +[#89836]: https://github.com/home-assistant/core/pull/89836 +[#89837]: https://github.com/home-assistant/core/pull/89837 +[#89840]: https://github.com/home-assistant/core/pull/89840 +[#89842]: https://github.com/home-assistant/core/pull/89842 +[#89844]: https://github.com/home-assistant/core/pull/89844 +[#89847]: https://github.com/home-assistant/core/pull/89847 +[#89849]: https://github.com/home-assistant/core/pull/89849 +[#89853]: https://github.com/home-assistant/core/pull/89853 +[#89855]: https://github.com/home-assistant/core/pull/89855 +[#89857]: https://github.com/home-assistant/core/pull/89857 +[#89863]: https://github.com/home-assistant/core/pull/89863 +[#89864]: https://github.com/home-assistant/core/pull/89864 +[#89865]: https://github.com/home-assistant/core/pull/89865 +[#89872]: https://github.com/home-assistant/core/pull/89872 +[#89874]: https://github.com/home-assistant/core/pull/89874 +[#89876]: https://github.com/home-assistant/core/pull/89876 +[#89879]: https://github.com/home-assistant/core/pull/89879 +[#89880]: https://github.com/home-assistant/core/pull/89880 +[#89881]: https://github.com/home-assistant/core/pull/89881 +[#89882]: https://github.com/home-assistant/core/pull/89882 +[#89888]: https://github.com/home-assistant/core/pull/89888 +[#89889]: https://github.com/home-assistant/core/pull/89889 +[#89890]: https://github.com/home-assistant/core/pull/89890 +[#89892]: https://github.com/home-assistant/core/pull/89892 +[#89894]: https://github.com/home-assistant/core/pull/89894 +[#89895]: https://github.com/home-assistant/core/pull/89895 +[#89896]: https://github.com/home-assistant/core/pull/89896 +[#89897]: https://github.com/home-assistant/core/pull/89897 +[#89898]: https://github.com/home-assistant/core/pull/89898 +[#89901]: https://github.com/home-assistant/core/pull/89901 +[#89902]: https://github.com/home-assistant/core/pull/89902 +[#89903]: https://github.com/home-assistant/core/pull/89903 +[#89904]: https://github.com/home-assistant/core/pull/89904 +[#89905]: https://github.com/home-assistant/core/pull/89905 +[#89912]: https://github.com/home-assistant/core/pull/89912 +[#89914]: https://github.com/home-assistant/core/pull/89914 +[#89918]: https://github.com/home-assistant/core/pull/89918 +[#89921]: https://github.com/home-assistant/core/pull/89921 +[#89923]: https://github.com/home-assistant/core/pull/89923 +[#89925]: https://github.com/home-assistant/core/pull/89925 +[#89926]: https://github.com/home-assistant/core/pull/89926 +[#89927]: https://github.com/home-assistant/core/pull/89927 +[#89929]: https://github.com/home-assistant/core/pull/89929 +[#89931]: https://github.com/home-assistant/core/pull/89931 +[#89932]: https://github.com/home-assistant/core/pull/89932 +[#89940]: https://github.com/home-assistant/core/pull/89940 +[#89941]: https://github.com/home-assistant/core/pull/89941 +[#89943]: https://github.com/home-assistant/core/pull/89943 +[#89944]: https://github.com/home-assistant/core/pull/89944 +[#89945]: https://github.com/home-assistant/core/pull/89945 +[#89951]: https://github.com/home-assistant/core/pull/89951 +[#89953]: https://github.com/home-assistant/core/pull/89953 +[#89954]: https://github.com/home-assistant/core/pull/89954 +[#89955]: https://github.com/home-assistant/core/pull/89955 +[#89960]: https://github.com/home-assistant/core/pull/89960 +[#89963]: https://github.com/home-assistant/core/pull/89963 +[#89971]: https://github.com/home-assistant/core/pull/89971 +[#89973]: https://github.com/home-assistant/core/pull/89973 +[#89981]: https://github.com/home-assistant/core/pull/89981 +[#89982]: https://github.com/home-assistant/core/pull/89982 +[#89985]: https://github.com/home-assistant/core/pull/89985 +[#89988]: https://github.com/home-assistant/core/pull/89988 +[#89989]: https://github.com/home-assistant/core/pull/89989 +[#89990]: https://github.com/home-assistant/core/pull/89990 +[#89992]: https://github.com/home-assistant/core/pull/89992 +[#89994]: https://github.com/home-assistant/core/pull/89994 +[#89995]: https://github.com/home-assistant/core/pull/89995 +[#90004]: https://github.com/home-assistant/core/pull/90004 +[#90013]: https://github.com/home-assistant/core/pull/90013 +[#90017]: https://github.com/home-assistant/core/pull/90017 +[#90018]: https://github.com/home-assistant/core/pull/90018 +[#90020]: https://github.com/home-assistant/core/pull/90020 +[#90021]: https://github.com/home-assistant/core/pull/90021 +[#90022]: https://github.com/home-assistant/core/pull/90022 +[#90023]: https://github.com/home-assistant/core/pull/90023 +[#90024]: https://github.com/home-assistant/core/pull/90024 +[#90027]: https://github.com/home-assistant/core/pull/90027 +[#90029]: https://github.com/home-assistant/core/pull/90029 +[#90030]: https://github.com/home-assistant/core/pull/90030 +[#90031]: https://github.com/home-assistant/core/pull/90031 +[#90033]: https://github.com/home-assistant/core/pull/90033 +[#90034]: https://github.com/home-assistant/core/pull/90034 +[#90035]: https://github.com/home-assistant/core/pull/90035 +[#90036]: https://github.com/home-assistant/core/pull/90036 +[#90039]: https://github.com/home-assistant/core/pull/90039 +[#90040]: https://github.com/home-assistant/core/pull/90040 +[#90041]: https://github.com/home-assistant/core/pull/90041 +[#90042]: https://github.com/home-assistant/core/pull/90042 +[#90043]: https://github.com/home-assistant/core/pull/90043 +[#90045]: https://github.com/home-assistant/core/pull/90045 +[#90046]: https://github.com/home-assistant/core/pull/90046 +[#90047]: https://github.com/home-assistant/core/pull/90047 +[#90048]: https://github.com/home-assistant/core/pull/90048 +[#90050]: https://github.com/home-assistant/core/pull/90050 +[#90051]: https://github.com/home-assistant/core/pull/90051 +[#90052]: https://github.com/home-assistant/core/pull/90052 +[#90053]: https://github.com/home-assistant/core/pull/90053 +[#90057]: https://github.com/home-assistant/core/pull/90057 +[#90058]: https://github.com/home-assistant/core/pull/90058 +[#90059]: https://github.com/home-assistant/core/pull/90059 +[#90060]: https://github.com/home-assistant/core/pull/90060 +[#90062]: https://github.com/home-assistant/core/pull/90062 +[#90063]: https://github.com/home-assistant/core/pull/90063 +[#90066]: https://github.com/home-assistant/core/pull/90066 +[#90068]: https://github.com/home-assistant/core/pull/90068 +[#90069]: https://github.com/home-assistant/core/pull/90069 +[#90070]: https://github.com/home-assistant/core/pull/90070 +[#90071]: https://github.com/home-assistant/core/pull/90071 +[#90072]: https://github.com/home-assistant/core/pull/90072 +[#90082]: https://github.com/home-assistant/core/pull/90082 +[#90083]: https://github.com/home-assistant/core/pull/90083 +[#90085]: https://github.com/home-assistant/core/pull/90085 +[#90098]: https://github.com/home-assistant/core/pull/90098 +[#90101]: https://github.com/home-assistant/core/pull/90101 +[#90102]: https://github.com/home-assistant/core/pull/90102 +[#90103]: https://github.com/home-assistant/core/pull/90103 +[#90105]: https://github.com/home-assistant/core/pull/90105 +[#90106]: https://github.com/home-assistant/core/pull/90106 +[#90107]: https://github.com/home-assistant/core/pull/90107 +[#90108]: https://github.com/home-assistant/core/pull/90108 +[#90109]: https://github.com/home-assistant/core/pull/90109 +[#90111]: https://github.com/home-assistant/core/pull/90111 +[#90115]: https://github.com/home-assistant/core/pull/90115 +[#90118]: https://github.com/home-assistant/core/pull/90118 +[#90120]: https://github.com/home-assistant/core/pull/90120 +[#90122]: https://github.com/home-assistant/core/pull/90122 +[#90123]: https://github.com/home-assistant/core/pull/90123 +[#90126]: https://github.com/home-assistant/core/pull/90126 +[#90127]: https://github.com/home-assistant/core/pull/90127 +[#90128]: https://github.com/home-assistant/core/pull/90128 +[#90129]: https://github.com/home-assistant/core/pull/90129 +[#90130]: https://github.com/home-assistant/core/pull/90130 +[#90132]: https://github.com/home-assistant/core/pull/90132 +[#90133]: https://github.com/home-assistant/core/pull/90133 +[#90134]: https://github.com/home-assistant/core/pull/90134 +[#90135]: https://github.com/home-assistant/core/pull/90135 +[#90136]: https://github.com/home-assistant/core/pull/90136 +[#90137]: https://github.com/home-assistant/core/pull/90137 +[#90140]: https://github.com/home-assistant/core/pull/90140 +[#90143]: https://github.com/home-assistant/core/pull/90143 +[#90144]: https://github.com/home-assistant/core/pull/90144 +[#90149]: https://github.com/home-assistant/core/pull/90149 +[#90151]: https://github.com/home-assistant/core/pull/90151 +[#90152]: https://github.com/home-assistant/core/pull/90152 +[#90153]: https://github.com/home-assistant/core/pull/90153 +[#90155]: https://github.com/home-assistant/core/pull/90155 +[#90157]: https://github.com/home-assistant/core/pull/90157 +[#90158]: https://github.com/home-assistant/core/pull/90158 +[#90159]: https://github.com/home-assistant/core/pull/90159 +[#90163]: https://github.com/home-assistant/core/pull/90163 +[#90164]: https://github.com/home-assistant/core/pull/90164 +[#90165]: https://github.com/home-assistant/core/pull/90165 +[#90167]: https://github.com/home-assistant/core/pull/90167 +[#90168]: https://github.com/home-assistant/core/pull/90168 +[#90172]: https://github.com/home-assistant/core/pull/90172 +[#90176]: https://github.com/home-assistant/core/pull/90176 +[#90178]: https://github.com/home-assistant/core/pull/90178 +[#90182]: https://github.com/home-assistant/core/pull/90182 +[#90183]: https://github.com/home-assistant/core/pull/90183 +[#90184]: https://github.com/home-assistant/core/pull/90184 +[#90185]: https://github.com/home-assistant/core/pull/90185 +[#90187]: https://github.com/home-assistant/core/pull/90187 +[#90189]: https://github.com/home-assistant/core/pull/90189 +[#90191]: https://github.com/home-assistant/core/pull/90191 +[#90192]: https://github.com/home-assistant/core/pull/90192 +[#90193]: https://github.com/home-assistant/core/pull/90193 +[#90194]: https://github.com/home-assistant/core/pull/90194 +[#90196]: https://github.com/home-assistant/core/pull/90196 +[#90198]: https://github.com/home-assistant/core/pull/90198 +[#90200]: https://github.com/home-assistant/core/pull/90200 +[#90201]: https://github.com/home-assistant/core/pull/90201 +[#90203]: https://github.com/home-assistant/core/pull/90203 +[#90204]: https://github.com/home-assistant/core/pull/90204 +[#90211]: https://github.com/home-assistant/core/pull/90211 +[#90212]: https://github.com/home-assistant/core/pull/90212 +[#90214]: https://github.com/home-assistant/core/pull/90214 +[#90215]: https://github.com/home-assistant/core/pull/90215 +[#90217]: https://github.com/home-assistant/core/pull/90217 +[#90218]: https://github.com/home-assistant/core/pull/90218 +[#90219]: https://github.com/home-assistant/core/pull/90219 +[#90220]: https://github.com/home-assistant/core/pull/90220 +[#90222]: https://github.com/home-assistant/core/pull/90222 +[#90223]: https://github.com/home-assistant/core/pull/90223 +[#90225]: https://github.com/home-assistant/core/pull/90225 +[#90227]: https://github.com/home-assistant/core/pull/90227 +[#90232]: https://github.com/home-assistant/core/pull/90232 +[#90233]: https://github.com/home-assistant/core/pull/90233 +[#90236]: https://github.com/home-assistant/core/pull/90236 +[#90239]: https://github.com/home-assistant/core/pull/90239 +[#90241]: https://github.com/home-assistant/core/pull/90241 +[#90242]: https://github.com/home-assistant/core/pull/90242 +[#90244]: https://github.com/home-assistant/core/pull/90244 +[#90249]: https://github.com/home-assistant/core/pull/90249 +[#90250]: https://github.com/home-assistant/core/pull/90250 +[#90251]: https://github.com/home-assistant/core/pull/90251 +[#90253]: https://github.com/home-assistant/core/pull/90253 +[#90254]: https://github.com/home-assistant/core/pull/90254 +[#90256]: https://github.com/home-assistant/core/pull/90256 +[#90266]: https://github.com/home-assistant/core/pull/90266 +[#90267]: https://github.com/home-assistant/core/pull/90267 +[#90268]: https://github.com/home-assistant/core/pull/90268 +[#90272]: https://github.com/home-assistant/core/pull/90272 +[#90277]: https://github.com/home-assistant/core/pull/90277 +[#90278]: https://github.com/home-assistant/core/pull/90278 +[#90279]: https://github.com/home-assistant/core/pull/90279 +[#90282]: https://github.com/home-assistant/core/pull/90282 +[#90284]: https://github.com/home-assistant/core/pull/90284 +[#90285]: https://github.com/home-assistant/core/pull/90285 +[#90288]: https://github.com/home-assistant/core/pull/90288 +[#90291]: https://github.com/home-assistant/core/pull/90291 +[#90306]: https://github.com/home-assistant/core/pull/90306 +[#90312]: https://github.com/home-assistant/core/pull/90312 +[#90316]: https://github.com/home-assistant/core/pull/90316 +[#90318]: https://github.com/home-assistant/core/pull/90318 +[#90322]: https://github.com/home-assistant/core/pull/90322 +[#90324]: https://github.com/home-assistant/core/pull/90324 +[#90326]: https://github.com/home-assistant/core/pull/90326 +[#90327]: https://github.com/home-assistant/core/pull/90327 +[#90328]: https://github.com/home-assistant/core/pull/90328 +[#90330]: https://github.com/home-assistant/core/pull/90330 +[#90335]: https://github.com/home-assistant/core/pull/90335 +[#90339]: https://github.com/home-assistant/core/pull/90339 +[#90340]: https://github.com/home-assistant/core/pull/90340 +[#90344]: https://github.com/home-assistant/core/pull/90344 +[#90345]: https://github.com/home-assistant/core/pull/90345 +[#90346]: https://github.com/home-assistant/core/pull/90346 +[#90348]: https://github.com/home-assistant/core/pull/90348 +[#90350]: https://github.com/home-assistant/core/pull/90350 +[#90351]: https://github.com/home-assistant/core/pull/90351 +[#90354]: https://github.com/home-assistant/core/pull/90354 +[#90355]: https://github.com/home-assistant/core/pull/90355 +[#90356]: https://github.com/home-assistant/core/pull/90356 +[#90357]: https://github.com/home-assistant/core/pull/90357 +[#90359]: https://github.com/home-assistant/core/pull/90359 +[#90361]: https://github.com/home-assistant/core/pull/90361 +[#90362]: https://github.com/home-assistant/core/pull/90362 +[#90363]: https://github.com/home-assistant/core/pull/90363 +[#90365]: https://github.com/home-assistant/core/pull/90365 +[#90368]: https://github.com/home-assistant/core/pull/90368 +[#90369]: https://github.com/home-assistant/core/pull/90369 +[#90370]: https://github.com/home-assistant/core/pull/90370 +[#90372]: https://github.com/home-assistant/core/pull/90372 +[#90377]: https://github.com/home-assistant/core/pull/90377 +[#90378]: https://github.com/home-assistant/core/pull/90378 +[#90382]: https://github.com/home-assistant/core/pull/90382 +[#90383]: https://github.com/home-assistant/core/pull/90383 +[#90384]: https://github.com/home-assistant/core/pull/90384 +[#90386]: https://github.com/home-assistant/core/pull/90386 +[#90387]: https://github.com/home-assistant/core/pull/90387 +[#90388]: https://github.com/home-assistant/core/pull/90388 +[#90389]: https://github.com/home-assistant/core/pull/90389 +[#90390]: https://github.com/home-assistant/core/pull/90390 +[#90392]: https://github.com/home-assistant/core/pull/90392 +[#90395]: https://github.com/home-assistant/core/pull/90395 +[#90396]: https://github.com/home-assistant/core/pull/90396 +[#90401]: https://github.com/home-assistant/core/pull/90401 +[#90402]: https://github.com/home-assistant/core/pull/90402 +[#90403]: https://github.com/home-assistant/core/pull/90403 +[#90404]: https://github.com/home-assistant/core/pull/90404 +[#90405]: https://github.com/home-assistant/core/pull/90405 +[#90406]: https://github.com/home-assistant/core/pull/90406 +[#90408]: https://github.com/home-assistant/core/pull/90408 +[#90410]: https://github.com/home-assistant/core/pull/90410 +[#90411]: https://github.com/home-assistant/core/pull/90411 +[#90412]: https://github.com/home-assistant/core/pull/90412 +[#90413]: https://github.com/home-assistant/core/pull/90413 +[#90418]: https://github.com/home-assistant/core/pull/90418 +[#90419]: https://github.com/home-assistant/core/pull/90419 +[#90422]: https://github.com/home-assistant/core/pull/90422 +[#90423]: https://github.com/home-assistant/core/pull/90423 +[#90425]: https://github.com/home-assistant/core/pull/90425 +[#90427]: https://github.com/home-assistant/core/pull/90427 +[#90428]: https://github.com/home-assistant/core/pull/90428 +[#90430]: https://github.com/home-assistant/core/pull/90430 +[#90431]: https://github.com/home-assistant/core/pull/90431 +[#90433]: https://github.com/home-assistant/core/pull/90433 +[#90434]: https://github.com/home-assistant/core/pull/90434 +[#90435]: https://github.com/home-assistant/core/pull/90435 +[#90438]: https://github.com/home-assistant/core/pull/90438 +[#90439]: https://github.com/home-assistant/core/pull/90439 +[#90442]: https://github.com/home-assistant/core/pull/90442 +[#90446]: https://github.com/home-assistant/core/pull/90446 +[#90457]: https://github.com/home-assistant/core/pull/90457 +[#90459]: https://github.com/home-assistant/core/pull/90459 +[#90461]: https://github.com/home-assistant/core/pull/90461 +[#90462]: https://github.com/home-assistant/core/pull/90462 +[#90463]: https://github.com/home-assistant/core/pull/90463 +[#90464]: https://github.com/home-assistant/core/pull/90464 +[#90467]: https://github.com/home-assistant/core/pull/90467 +[#90471]: https://github.com/home-assistant/core/pull/90471 +[#90472]: https://github.com/home-assistant/core/pull/90472 +[#90473]: https://github.com/home-assistant/core/pull/90473 +[#90474]: https://github.com/home-assistant/core/pull/90474 +[#90475]: https://github.com/home-assistant/core/pull/90475 +[#90476]: https://github.com/home-assistant/core/pull/90476 +[#90479]: https://github.com/home-assistant/core/pull/90479 +[#90481]: https://github.com/home-assistant/core/pull/90481 +[#90493]: https://github.com/home-assistant/core/pull/90493 +[#90494]: https://github.com/home-assistant/core/pull/90494 +[#90508]: https://github.com/home-assistant/core/pull/90508 +[#90512]: https://github.com/home-assistant/core/pull/90512 +[#90514]: https://github.com/home-assistant/core/pull/90514 +[#90517]: https://github.com/home-assistant/core/pull/90517 +[#90524]: https://github.com/home-assistant/core/pull/90524 +[#90528]: https://github.com/home-assistant/core/pull/90528 +[#90537]: https://github.com/home-assistant/core/pull/90537 +[#90538]: https://github.com/home-assistant/core/pull/90538 +[#90542]: https://github.com/home-assistant/core/pull/90542 +[#90544]: https://github.com/home-assistant/core/pull/90544 +[#90547]: https://github.com/home-assistant/core/pull/90547 +[#90553]: https://github.com/home-assistant/core/pull/90553 +[#90577]: https://github.com/home-assistant/core/pull/90577 +[#90579]: https://github.com/home-assistant/core/pull/90579 +[#90582]: https://github.com/home-assistant/core/pull/90582 +[#90584]: https://github.com/home-assistant/core/pull/90584 +[#90590]: https://github.com/home-assistant/core/pull/90590 +[#90594]: https://github.com/home-assistant/core/pull/90594 +[#90600]: https://github.com/home-assistant/core/pull/90600 +[#90602]: https://github.com/home-assistant/core/pull/90602 +[#90605]: https://github.com/home-assistant/core/pull/90605 +[#90606]: https://github.com/home-assistant/core/pull/90606 +[#90607]: https://github.com/home-assistant/core/pull/90607 +[#90608]: https://github.com/home-assistant/core/pull/90608 +[#90611]: https://github.com/home-assistant/core/pull/90611 +[#90621]: https://github.com/home-assistant/core/pull/90621 +[#90622]: https://github.com/home-assistant/core/pull/90622 +[#90627]: https://github.com/home-assistant/core/pull/90627 +[#90634]: https://github.com/home-assistant/core/pull/90634 +[#90639]: https://github.com/home-assistant/core/pull/90639 +[#90641]: https://github.com/home-assistant/core/pull/90641 +[#90644]: https://github.com/home-assistant/core/pull/90644 +[#90646]: https://github.com/home-assistant/core/pull/90646 +[#90650]: https://github.com/home-assistant/core/pull/90650 +[#90652]: https://github.com/home-assistant/core/pull/90652 +[#90655]: https://github.com/home-assistant/core/pull/90655 +[#90656]: https://github.com/home-assistant/core/pull/90656 +[#90660]: https://github.com/home-assistant/core/pull/90660 +[#90677]: https://github.com/home-assistant/core/pull/90677 +[#90679]: https://github.com/home-assistant/core/pull/90679 +[#90681]: https://github.com/home-assistant/core/pull/90681 +[#90682]: https://github.com/home-assistant/core/pull/90682 +[#90684]: https://github.com/home-assistant/core/pull/90684 +[#90685]: https://github.com/home-assistant/core/pull/90685 +[#90693]: https://github.com/home-assistant/core/pull/90693 +[#90696]: https://github.com/home-assistant/core/pull/90696 +[#90697]: https://github.com/home-assistant/core/pull/90697 +[#90698]: https://github.com/home-assistant/core/pull/90698 +[#90699]: https://github.com/home-assistant/core/pull/90699 +[#90700]: https://github.com/home-assistant/core/pull/90700 +[#90702]: https://github.com/home-assistant/core/pull/90702 +[#90703]: https://github.com/home-assistant/core/pull/90703 +[#90706]: https://github.com/home-assistant/core/pull/90706 +[#90707]: https://github.com/home-assistant/core/pull/90707 +[#90709]: https://github.com/home-assistant/core/pull/90709 +[#90712]: https://github.com/home-assistant/core/pull/90712 +[#90713]: https://github.com/home-assistant/core/pull/90713 +[#90718]: https://github.com/home-assistant/core/pull/90718 +[#90719]: https://github.com/home-assistant/core/pull/90719 +[#90722]: https://github.com/home-assistant/core/pull/90722 +[#90724]: https://github.com/home-assistant/core/pull/90724 +[#90725]: https://github.com/home-assistant/core/pull/90725 +[#90727]: https://github.com/home-assistant/core/pull/90727 +[#90732]: https://github.com/home-assistant/core/pull/90732 +[#90735]: https://github.com/home-assistant/core/pull/90735 +[#90738]: https://github.com/home-assistant/core/pull/90738 +[#90741]: https://github.com/home-assistant/core/pull/90741 +[#90743]: https://github.com/home-assistant/core/pull/90743 +[#90744]: https://github.com/home-assistant/core/pull/90744 +[#90747]: https://github.com/home-assistant/core/pull/90747 +[#90749]: https://github.com/home-assistant/core/pull/90749 +[#90752]: https://github.com/home-assistant/core/pull/90752 +[#90753]: https://github.com/home-assistant/core/pull/90753 +[#90754]: https://github.com/home-assistant/core/pull/90754 +[#90758]: https://github.com/home-assistant/core/pull/90758 +[#90762]: https://github.com/home-assistant/core/pull/90762 +[#90764]: https://github.com/home-assistant/core/pull/90764 +[#90771]: https://github.com/home-assistant/core/pull/90771 +[#90772]: https://github.com/home-assistant/core/pull/90772 +[#90783]: https://github.com/home-assistant/core/pull/90783 +[#90815]: https://github.com/home-assistant/core/pull/90815 +[#90816]: https://github.com/home-assistant/core/pull/90816 +[#90825]: https://github.com/home-assistant/core/pull/90825 +[#90826]: https://github.com/home-assistant/core/pull/90826 +[#90833]: https://github.com/home-assistant/core/pull/90833 +[#90836]: https://github.com/home-assistant/core/pull/90836 +[#90838]: https://github.com/home-assistant/core/pull/90838 +[#90841]: https://github.com/home-assistant/core/pull/90841 +[#90847]: https://github.com/home-assistant/core/pull/90847 +[@arturoguerra]: https://github.com/ArturoGuerra +[@bnolet]: https://github.com/BNolet +[@btmorton]: https://github.com/BTMorton +[@bre77]: https://github.com/Bre77 +[@cereal2nd]: https://github.com/Cereal2nd +[@derenderkeks]: https://github.com/DerEnderKeks +[@dexwell]: https://github.com/Dexwell +[@djelibeybi]: https://github.com/Djelibeybi +[@drafteed]: https://github.com/Drafteed +[@ernst79]: https://github.com/Ernst79 +[@g-two]: https://github.com/G-Two +[@geoffstate]: https://github.com/GeoffState +[@glodenox]: https://github.com/Glodenox +[@kjonline]: https://github.com/KJonline +[@kane610]: https://github.com/Kane610 +[@markgodwin]: https://github.com/MarkGodwin +[@martinhjelmare]: https://github.com/MartinHjelmare +[@mattwestb]: https://github.com/MattWestb +[@matthewflamm]: https://github.com/MatthewFlamm +[@n3rdix]: https://github.com/N3rdix +[@nardol]: https://github.com/Nardol +[@nickborgers]: https://github.com/NickBorgers +[@onfreund]: https://github.com/OnFreund +[@patrickglesner]: https://github.com/PatrickGlesner +[@peterager]: https://github.com/PeteRager +[@petro31]: https://github.com/Petro31 +[@protoxide22]: https://github.com/ProtoxiDe22 +[@renierm26]: https://github.com/RenierM26 +[@savjee]: https://github.com/Savjee +[@shulyaka]: https://github.com/Shulyaka +[@shutgun]: https://github.com/Shutgun +[@sibgatulin]: https://github.com/Sibgatulin +[@stefaniacoblivisi]: https://github.com/StefanIacobLivisi +[@stephanu]: https://github.com/StephanU +[@stevenlooman]: https://github.com/StevenLooman +[@swamp-ig]: https://github.com/Swamp-Ig +[@thejulianjes]: https://github.com/TheJulianJES +[@thomdietrich]: https://github.com/ThomDietrich +[@wesley-vos]: https://github.com/Wesley-Vos +[@a-baturin]: https://github.com/a-baturin +[@agners]: https://github.com/agners +[@allenporter]: https://github.com/allenporter +[@amelchio]: https://github.com/amelchio +[@amitfin]: https://github.com/amitfin +[@amomchilov]: https://github.com/amomchilov +[@anotherthomas]: https://github.com/anotherthomas +[@appzer]: https://github.com/appzer +[@arychj]: https://github.com/arychj +[@aschor]: https://github.com/aschor +[@avee87]: https://github.com/avee87 +[@b-uwe]: https://github.com/b-uwe +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@bobvandevijver]: https://github.com/bobvandevijver +[@boralyl]: https://github.com/boralyl +[@boswelja]: https://github.com/boswelja +[@bramkragten]: https://github.com/bramkragten +[@cdce8p]: https://github.com/cdce8p +[@cgarwood]: https://github.com/cgarwood +[@chrisx8]: https://github.com/chrisx8 +[@chuckdeal97]: https://github.com/chuckdeal97 +[@cnico]: https://github.com/cnico +[@ctalkington]: https://github.com/ctalkington +[@davet2001]: https://github.com/davet2001 +[@depoll]: https://github.com/depoll +[@dgomes]: https://github.com/dgomes +[@dieselrabbit]: https://github.com/dieselrabbit +[@dingusdk]: https://github.com/dingusdk +[@djessemoody]: https://github.com/djessemoody +[@djtimca]: https://github.com/djtimca +[@dmulcahey]: https://github.com/dmulcahey +[@dougiteixeira]: https://github.com/dougiteixeira +[@ehendrix23]: https://github.com/ehendrix23 +[@eifinger]: https://github.com/eifinger +[@ejpenney]: https://github.com/ejpenney +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@epenet]: https://github.com/epenet +[@exxamalte]: https://github.com/exxamalte +[@farmio]: https://github.com/farmio +[@fpfuetsch]: https://github.com/fpfuetsch +[@frenck]: https://github.com/frenck +[@funkybunch]: https://github.com/funkybunch +[@gapple]: https://github.com/gapple +[@gjohansson-st]: https://github.com/gjohansson-ST +[@gjong]: https://github.com/gjong +[@gmsoft-tuxicoman]: https://github.com/gmsoft-tuxicoman +[@hahn-th]: https://github.com/hahn-th +[@imicknl]: https://github.com/iMicknl +[@igorsantos07]: https://github.com/igorsantos07 +[@janiversen]: https://github.com/janiversen +[@javicalle]: https://github.com/javicalle +[@jbergler]: https://github.com/jbergler +[@jbouwh]: https://github.com/jbouwh +[@jeeftor]: https://github.com/jeeftor +[@jfroy]: https://github.com/jfroy +[@jgoguen]: https://github.com/jgoguen +[@jmuf]: https://github.com/jmuf +[@joncar]: https://github.com/joncar +[@jrieger]: https://github.com/jrieger +[@kirill578]: https://github.com/kirill578 +[@klaasnicolaas]: https://github.com/klaasnicolaas +[@landaisbenj]: https://github.com/landaisbenj +[@lawfulchaos]: https://github.com/lawfulchaos +[@lcosmin]: https://github.com/lcosmin +[@liudger]: https://github.com/liudger +[@loongyh]: https://github.com/loongyh +[@luca-angemi]: https://github.com/luca-angemi +[@ludeeus]: https://github.com/ludeeus +[@lunmay]: https://github.com/lunmay +[@marcelveldt]: https://github.com/marcelveldt +[@matrixd2]: https://github.com/matrixd2 +[@mib1185]: https://github.com/mib1185 +[@michaeldavie]: https://github.com/michaeldavie +[@mkmer]: https://github.com/mkmer +[@mletenay]: https://github.com/mletenay +[@nalin29]: https://github.com/nalin29 +[@natekspencer]: https://github.com/natekspencer +[@niro1987]: https://github.com/niro1987 +[@ol-iver]: https://github.com/ol-iver +[@olivierouellet]: https://github.com/olivierouellet +[@parliament119]: https://github.com/parliament119 +[@pavoni]: https://github.com/pavoni +[@piitaya]: https://github.com/piitaya +[@planbnet]: https://github.com/planbnet +[@pree]: https://github.com/pree +[@puddly]: https://github.com/puddly +[@pvizeli]: https://github.com/pvizeli +[@raman325]: https://github.com/raman325 +[@rfleming71]: https://github.com/rfleming71 +[@rikroe]: https://github.com/rikroe +[@riokuu]: https://github.com/riokuu +[@rodriguestiago0]: https://github.com/rodriguestiago0 +[@rokam]: https://github.com/rokam +[@shbatm]: https://github.com/shbatm +[@skrynklarn]: https://github.com/skrynklarn +[@solazs]: https://github.com/solazs +[@starkillerog]: https://github.com/starkillerOG +[@stickpin]: https://github.com/stickpin +[@sw-carlos-cristobal]: https://github.com/sw-carlos-cristobal +[@synesthesiam]: https://github.com/synesthesiam +[@szechyjs]: https://github.com/szechyjs +[@teharris1]: https://github.com/teharris1 +[@tetienne]: https://github.com/tetienne +[@timmo001]: https://github.com/timmo001 +[@tkdrob]: https://github.com/tkdrob +[@tsbernar]: https://github.com/tsbernar +[@twalcari]: https://github.com/twalcari +[@vpathuis]: https://github.com/vpathuis +[@willmakenoise]: https://github.com/willmakenoise +[@wlcrs]: https://github.com/wlcrs +[@wrt54g]: https://github.com/wrt54g +[@yuxincs]: https://github.com/yuxincs +[@ztamas83]: https://github.com/ztamas83 +[abode docs]: /integrations/abode/ +[advantage_air docs]: /integrations/advantage_air/ +[aemet docs]: /integrations/aemet/ +[agent_dvr docs]: /integrations/agent_dvr/ +[airly docs]: /integrations/airly/ +[airq docs]: /integrations/airq/ +[airvisual docs]: /integrations/airvisual/ +[airvisual_pro docs]: /integrations/airvisual_pro/ +[aladdin_connect docs]: /integrations/aladdin_connect/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alexa docs]: /integrations/alexa/ +[amazon_polly docs]: /integrations/amazon_polly/ +[amberelectric docs]: /integrations/amberelectric/ +[apcupsd docs]: /integrations/apcupsd/ +[application_credentials docs]: /integrations/application_credentials/ +[apprise docs]: /integrations/apprise/ +[arwn docs]: /integrations/arwn/ +[atag docs]: /integrations/atag/ +[august docs]: /integrations/august/ +[aurora docs]: /integrations/aurora/ +[automation docs]: /integrations/automation/ +[axis docs]: /integrations/axis/ +[azure_event_hub docs]: /integrations/azure_event_hub/ +[backup docs]: /integrations/backup/ +[baf docs]: /integrations/baf/ +[balboa docs]: /integrations/balboa/ +[bayesian docs]: /integrations/bayesian/ +[binary_sensor docs]: /integrations/binary_sensor/ +[blackbird docs]: /integrations/blackbird/ +[blebox docs]: /integrations/blebox/ +[blueprint docs]: /integrations/blueprint/ +[bluetooth docs]: /integrations/bluetooth/ +[bluetooth_le_tracker docs]: /integrations/bluetooth_le_tracker/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[braviatv docs]: /integrations/braviatv/ +[broadlink docs]: /integrations/broadlink/ +[brother docs]: /integrations/brother/ +[brottsplatskartan docs]: /integrations/brottsplatskartan/ +[brunt docs]: /integrations/brunt/ +[bsblan docs]: /integrations/bsblan/ +[bthome docs]: /integrations/bthome/ +[buienradar docs]: /integrations/buienradar/ +[caldav docs]: /integrations/caldav/ +[calendar docs]: /integrations/calendar/ +[camera docs]: /integrations/camera/ +[cast docs]: /integrations/cast/ +[cert_expiry docs]: /integrations/cert_expiry/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[command_line docs]: /integrations/command_line/ +[control4 docs]: /integrations/control4/ +[conversation docs]: /integrations/conversation/ +[coolmaster docs]: /integrations/coolmaster/ +[coronavirus docs]: /integrations/coronavirus/ +[cover docs]: /integrations/cover/ +[darksky docs]: /integrations/darksky/ +[default_config docs]: /integrations/default_config/ +[deluge docs]: /integrations/deluge/ +[demo docs]: /integrations/demo/ +[denonavr docs]: /integrations/denonavr/ +[device_automation docs]: /integrations/device_automation/ +[device_sun_light_trigger docs]: /integrations/device_sun_light_trigger/ +[device_tracker docs]: /integrations/device_tracker/ +[devolo_home_control docs]: /integrations/devolo_home_control/ +[devolo_home_network docs]: /integrations/devolo_home_network/ +[dhcp docs]: /integrations/dhcp/ +[discovery docs]: /integrations/discovery/ +[dormakaba_dkey docs]: /integrations/dormakaba_dkey/ +[dsmr_reader docs]: /integrations/dsmr_reader/ +[easyenergy docs]: /integrations/easyenergy/ +[edl21 docs]: /integrations/edl21/ +[efergy docs]: /integrations/efergy/ +[eight_sleep docs]: /integrations/eight_sleep/ +[elgato docs]: /integrations/elgato/ +[energy docs]: /integrations/energy/ +[energyzero docs]: /integrations/energyzero/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[environment_canada docs]: /integrations/environment_canada/ +[esera_onewire docs]: /integrations/esera_onewire/ +[esphome docs]: /integrations/esphome/ +[ezviz docs]: /integrations/ezviz/ +[fan docs]: /integrations/fan/ +[fibaro docs]: /integrations/fibaro/ +[file docs]: /integrations/file/ +[filesize docs]: /integrations/filesize/ +[filter docs]: /integrations/filter/ +[fitbit docs]: /integrations/fitbit/ +[fivem docs]: /integrations/fivem/ +[flipr docs]: /integrations/flipr/ +[flux_led docs]: /integrations/flux_led/ +[folder_watcher docs]: /integrations/folder_watcher/ +[forked_daapd docs]: /integrations/forked_daapd/ +[freedompro docs]: /integrations/freedompro/ +[fritz docs]: /integrations/fritz/ +[fritzbox docs]: /integrations/fritzbox/ +[fronius docs]: /integrations/fronius/ +[frontend docs]: /integrations/frontend/ +[frontier_silicon docs]: /integrations/frontier_silicon/ +[fully_kiosk docs]: /integrations/fully_kiosk/ +[gdacs docs]: /integrations/gdacs/ +[generic_hygrostat docs]: /integrations/generic_hygrostat/ +[geo_json_events docs]: /integrations/geo_json_events/ +[geo_location docs]: /integrations/geo_location/ +[gios docs]: /integrations/gios/ +[goodwe docs]: /integrations/goodwe/ +[google docs]: /integrations/google/ +[google_assistant docs]: /integrations/google_assistant/ +[google_mail docs]: /integrations/google_mail/ +[google_wifi docs]: /integrations/google_wifi/ +[gree docs]: /integrations/gree/ +[group docs]: /integrations/group/ +[guardian docs]: /integrations/guardian/ +[hardkernel docs]: /integrations/hardkernel/ +[hassio docs]: /integrations/hassio/ +[history docs]: /integrations/history/ +[history_stats docs]: /integrations/history_stats/ +[hive docs]: /integrations/hive/ +[hlk_sw16 docs]: /integrations/hlk_sw16/ +[home_connect docs]: /integrations/home_connect/ +[homeassistant docs]: /integrations/homeassistant/ +[homeassistant_alerts docs]: /integrations/homeassistant_alerts/ +[homeassistant_hardware docs]: /integrations/homeassistant_hardware/ +[homeassistant_sky_connect docs]: /integrations/homeassistant_sky_connect/ +[homeassistant_yellow docs]: /integrations/homeassistant_yellow/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[honeywell docs]: /integrations/honeywell/ +[http docs]: /integrations/http/ +[hue docs]: /integrations/hue/ +[huisbaasje docs]: /integrations/huisbaasje/ +[iaqualink docs]: /integrations/iaqualink/ +[ihc docs]: /integrations/ihc/ +[image_processing docs]: /integrations/image_processing/ +[imap docs]: /integrations/imap/ +[insteon docs]: /integrations/insteon/ +[intellifire docs]: /integrations/intellifire/ +[intent docs]: /integrations/intent/ +[intent_script docs]: /integrations/intent_script/ +[islamic_prayer_times docs]: /integrations/islamic_prayer_times/ +[isy994 docs]: /integrations/isy994/ +[izone docs]: /integrations/izone/ +[jellyfin docs]: /integrations/jellyfin/ +[keymitt_ble docs]: /integrations/keymitt_ble/ +[kmtronic docs]: /integrations/kmtronic/ +[knx docs]: /integrations/knx/ +[kodi docs]: /integrations/kodi/ +[kostal_plenticore docs]: /integrations/kostal_plenticore/ +[lacrosse_view docs]: /integrations/lacrosse_view/ +[lametric docs]: /integrations/lametric/ +[landisgyr_heat_meter docs]: /integrations/landisgyr_heat_meter/ +[lidarr docs]: /integrations/lidarr/ +[lifx docs]: /integrations/lifx/ +[light docs]: /integrations/light/ +[litejet docs]: /integrations/litejet/ +[litterrobot docs]: /integrations/litterrobot/ +[livisi docs]: /integrations/livisi/ +[local_calendar docs]: /integrations/local_calendar/ +[lock docs]: /integrations/lock/ +[logbook docs]: /integrations/logbook/ +[logger docs]: /integrations/logger/ +[luftdaten docs]: /integrations/luftdaten/ +[lutron_caseta docs]: /integrations/lutron_caseta/ +[magicseaweed docs]: /integrations/magicseaweed/ +[manual docs]: /integrations/manual/ +[manual_mqtt docs]: /integrations/manual_mqtt/ +[matter docs]: /integrations/matter/ +[media_player docs]: /integrations/media_player/ +[melnor docs]: /integrations/melnor/ +[met docs]: /integrations/met/ +[metoffice docs]: /integrations/metoffice/ +[mikrotik docs]: /integrations/mikrotik/ +[modbus docs]: /integrations/modbus/ +[modem_callerid docs]: /integrations/modem_callerid/ +[moon docs]: /integrations/moon/ +[mqtt docs]: /integrations/mqtt/ +[mqtt_statestream docs]: /integrations/mqtt_statestream/ +[mysensors docs]: /integrations/mysensors/ +[nam docs]: /integrations/nam/ +[nest docs]: /integrations/nest/ +[netgear_lte docs]: /integrations/netgear_lte/ +[nextcloud docs]: /integrations/nextcloud/ +[nextdns docs]: /integrations/nextdns/ +[nissan_leaf docs]: /integrations/nissan_leaf/ +[nmbs docs]: /integrations/nmbs/ +[notify docs]: /integrations/notify/ +[notion docs]: /integrations/notion/ +[nuki docs]: /integrations/nuki/ +[number docs]: /integrations/number/ +[nut docs]: /integrations/nut/ +[nws docs]: /integrations/nws/ +[obihai docs]: /integrations/obihai/ +[octoprint docs]: /integrations/octoprint/ +[onewire docs]: /integrations/onewire/ +[onvif docs]: /integrations/onvif/ +[openai_conversation docs]: /integrations/openai_conversation/ +[opencv docs]: /integrations/opencv/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[otbr docs]: /integrations/otbr/ +[overkiz docs]: /integrations/overkiz/ +[p1_monitor docs]: /integrations/p1_monitor/ +[person docs]: /integrations/person/ +[philips_js docs]: /integrations/philips_js/ +[pi_hole docs]: /integrations/pi_hole/ +[ping docs]: /integrations/ping/ +[plex docs]: /integrations/plex/ +[plugwise docs]: /integrations/plugwise/ +[powerwall docs]: /integrations/powerwall/ +[profiler docs]: /integrations/profiler/ +[prosegur docs]: /integrations/prosegur/ +[proxmoxve docs]: /integrations/proxmoxve/ +[prusalink docs]: /integrations/prusalink/ +[ps4 docs]: /integrations/ps4/ +[pushbullet docs]: /integrations/pushbullet/ +[pushsafer docs]: /integrations/pushsafer/ +[pvoutput docs]: /integrations/pvoutput/ +[qbittorrent docs]: /integrations/qbittorrent/ +[quadrafire docs]: /integrations/quadrafire/ +[rachio docs]: /integrations/rachio/ +[radiotherm docs]: /integrations/radiotherm/ +[rdw docs]: /integrations/rdw/ +[recorder docs]: /integrations/recorder/ +[renault docs]: /integrations/renault/ +[reolink docs]: /integrations/reolink/ +[repairs docs]: /integrations/repairs/ +[rest docs]: /integrations/rest/ +[rflink docs]: /integrations/rflink/ +[ridwell docs]: /integrations/ridwell/ +[roku docs]: /integrations/roku/ +[roon docs]: /integrations/roon/ +[rympro docs]: /integrations/rympro/ +[samsungtv docs]: /integrations/samsungtv/ +[scrape docs]: /integrations/scrape/ +[screenlogic docs]: /integrations/screenlogic/ +[script docs]: /integrations/script/ +[season docs]: /integrations/season/ +[select docs]: /integrations/select/ +[sensor docs]: /integrations/sensor/ +[sentry docs]: /integrations/sentry/ +[sfr_box docs]: /integrations/sfr_box/ +[sharkiq docs]: /integrations/sharkiq/ +[shelly docs]: /integrations/shelly/ +[simplisafe docs]: /integrations/simplisafe/ +[siren docs]: /integrations/siren/ +[sms docs]: /integrations/sms/ +[snmp docs]: /integrations/snmp/ +[sonos docs]: /integrations/sonos/ +[spotify docs]: /integrations/spotify/ +[sql docs]: /integrations/sql/ +[squeezebox docs]: /integrations/squeezebox/ +[starlink docs]: /integrations/starlink/ +[statistics docs]: /integrations/statistics/ +[stt docs]: /integrations/stt/ +[subaru docs]: /integrations/subaru/ +[sun docs]: /integrations/sun/ +[switch_as_x docs]: /integrations/switch_as_x/ +[switchbot docs]: /integrations/switchbot/ +[synology_dsm docs]: /integrations/synology_dsm/ +[system_bridge docs]: /integrations/system_bridge/ +[system_log docs]: /integrations/system_log/ +[tado docs]: /integrations/tado/ +[tasmota docs]: /integrations/tasmota/ +[temper docs]: /integrations/temper/ +[text docs]: /integrations/text/ +[thread docs]: /integrations/thread/ +[threshold docs]: /integrations/threshold/ +[tibber docs]: /integrations/tibber/ +[todoist docs]: /integrations/todoist/ +[toon docs]: /integrations/toon/ +[tplink docs]: /integrations/tplink/ +[tplink_omada docs]: /integrations/tplink_omada/ +[trace docs]: /integrations/trace/ +[tractive docs]: /integrations/tractive/ +[transmission docs]: /integrations/transmission/ +[tts docs]: /integrations/tts/ +[tuya docs]: /integrations/tuya/ +[twentemilieu docs]: /integrations/twentemilieu/ +[unifi docs]: /integrations/unifi/ +[unifiprotect docs]: /integrations/unifiprotect/ +[universal docs]: /integrations/universal/ +[upnp docs]: /integrations/upnp/ +[uptime docs]: /integrations/uptime/ +[utility_meter docs]: /integrations/utility_meter/ +[velbus docs]: /integrations/velbus/ +[verisure docs]: /integrations/verisure/ +[vermont_castings docs]: /integrations/vermont_castings/ +[version docs]: /integrations/version/ +[vesync docs]: /integrations/vesync/ +[vizio docs]: /integrations/vizio/ +[voice_assistant docs]: /integrations/voice_assistant/ +[volvooncall docs]: /integrations/volvooncall/ +[waze_travel_time docs]: /integrations/waze_travel_time/ +[weather docs]: /integrations/weather/ +[webostv docs]: /integrations/webostv/ +[websocket_api docs]: /integrations/websocket_api/ +[wled docs]: /integrations/wled/ +[workday docs]: /integrations/workday/ +[xiaomi_ble docs]: /integrations/xiaomi_ble/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yalexs_ble docs]: /integrations/yalexs_ble/ +[yolink docs]: /integrations/yolink/ +[youless docs]: /integrations/youless/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zwave_js docs]: /integrations/zwave_js/ +[zwave_me docs]: /integrations/zwave_me/ diff --git a/source/images/blog/2023-04/entity-dialog-alarms.gif b/source/images/blog/2023-04/entity-dialog-alarms.gif new file mode 100644 index 00000000000..1422d9b979b Binary files /dev/null and b/source/images/blog/2023-04/entity-dialog-alarms.gif differ diff --git a/source/images/blog/2023-04/entity-dialog-covers.png b/source/images/blog/2023-04/entity-dialog-covers.png new file mode 100644 index 00000000000..d994f92bc4d Binary files /dev/null and b/source/images/blog/2023-04/entity-dialog-covers.png differ diff --git a/source/images/blog/2023-04/entity-dialog-fans.png b/source/images/blog/2023-04/entity-dialog-fans.png new file mode 100644 index 00000000000..a5d8aed21e3 Binary files /dev/null and b/source/images/blog/2023-04/entity-dialog-fans.png differ diff --git a/source/images/blog/2023-04/social.png b/source/images/blog/2023-04/social.png new file mode 100644 index 00000000000..de2c56e76b2 Binary files /dev/null and b/source/images/blog/2023-04/social.png differ diff --git a/source/images/blog/2023-04/tile-alarms.png b/source/images/blog/2023-04/tile-alarms.png new file mode 100644 index 00000000000..9b1d928cf81 Binary files /dev/null and b/source/images/blog/2023-04/tile-alarms.png differ diff --git a/source/images/blog/2023-04/tile-fans.png b/source/images/blog/2023-04/tile-fans.png new file mode 100644 index 00000000000..9d9c0026450 Binary files /dev/null and b/source/images/blog/2023-04/tile-fans.png differ