---
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)
- [Release 2023.4.1 - April 6](#release-202341---april-6)
- [Release 2023.4.2 - April 8](#release-202342---april-8)
- [Release 2023.4.3 - April 12](#release-202343---april-12)
- [Release 2023.4.4 - April 13](#release-202344---april-13)
- [Release 2023.4.5 - April 17](#release-202345---april-17)
- [Release 2023.4.6 - April 21](#release-202346---april-21)
- [Need help? Join the community!](#need-help-join-the-community)
- [Backward-incompatible changes](#backward-incompatible-changes)
- [Farewell to the following](#farewell-to-the-following)
- [All changes](#all-changes)
Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=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:
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.
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.
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?
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.
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:
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
## Release 2023.4.1 - April 6
- Handle Uncaught exceptions in async_update Honeywell ([@mkmer] - [#90746]) ([honeywell docs])
- Bump fritzconnection to 1.12.0 ([@saschaabraham] - [#90799]) ([fritz docs]) ([fritzbox_callmonitor docs])
- Fix issue with Insteon All-Link Database loading ([@teharris1] - [#90858]) ([insteon docs])
- Generate a seperate log message per dumped object for profiler.dump_log_objects ([@bdraco] - [#90867]) ([profiler docs])
- Add constraint for websockets to <11.0 ([@bdraco] - [#90868])
- Add MariaDB deadlock retry wrapper to database timestamp column migrations ([@bdraco] - [#90880]) ([recorder docs])
- Migrate entity unique ids in PI-Hole ([@mib1185] - [#90883]) ([pi_hole docs])
- Fix missing bluetooth client wrapper in bleak_retry_connector ([@bdraco] - [#90885]) ([bluetooth docs])
- Bump ulid-transform 0.6.0 ([@bdraco] - [#90888])
- Guard against invalid ULIDs in contexts while recording events ([@bdraco] - [#90889]) ([recorder docs])
- Fix entity_id migration query failing with MySQL 8.0.30 ([@bdraco] - [#90895]) ([recorder docs])
- Bump `simplisafe-python` to 2023.04.0 ([@bachya] - [#90896]) ([simplisafe docs])
- Bump aiodiscover to 1.4.16 ([@bdraco] - [#90903]) ([dhcp docs])
- Return empty available programs list if an appliance is off during initial configuration ([@stickpin] - [#90905]) ([home_connect docs])
- Handle NoURLAvailableError in Nuki component ([@pree] - [#90927]) ([nuki docs])
- Update frontend to 20230406.1 ([@bramkragten] - [#90951]) ([frontend docs])
- Fix flaky test in vesync ([@epenet] - [#90921]) ([vesync docs])
- Bump `aioambient` to 2022.10.0 ([@bachya] - [#90940]) ([ambient_station docs])
- Bump reolink-aio to 0.5.10 ([@starkillerOG] - [#90963]) ([reolink docs])
- Avoid writing state to all esphome entities at shutdown ([@bdraco] - [#90555]) ([esphome docs])
- Fix state being cleared on disconnect with deep sleep esphome devices ([@bdraco] - [#90925]) ([esphome docs])
- Coerce previously persisted local calendars to have valid durations ([@allenporter] - [#90970]) ([local_calendar docs])
- Bump gcal_sync to 4.1.3 ([@allenporter] - [#90968]) ([google docs])
- Fix error after losing an imap connection ([@jbouwh] - [#90966]) ([imap docs])
- Fix command_template sensor value_template not being used if json_attributes set ([@gadgetchnnel] - [#90603]) ([command_line docs])
- Fix verisure autolock ([@heiparta] - [#90960]) ([verisure docs])
[#90555]: https://github.com/home-assistant/core/pull/90555
[#90603]: https://github.com/home-assistant/core/pull/90603
[#90855]: https://github.com/home-assistant/core/pull/90855
[#90925]: https://github.com/home-assistant/core/pull/90925
[#90956]: https://github.com/home-assistant/core/pull/90956
[#90960]: https://github.com/home-assistant/core/pull/90960
[#90966]: https://github.com/home-assistant/core/pull/90966
[#90968]: https://github.com/home-assistant/core/pull/90968
[#90970]: https://github.com/home-assistant/core/pull/90970
[@allenporter]: https://github.com/allenporter
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@frenck]: https://github.com/frenck
[@gadgetchnnel]: https://github.com/gadgetchnnel
[@heiparta]: https://github.com/heiparta
[@jbouwh]: https://github.com/jbouwh
[actiontec docs]: /integrations/actiontec/
[advantage_air docs]: /integrations/advantage_air/
[airly docs]: /integrations/airly/
[command_line docs]: /integrations/command_line/
[esphome docs]: /integrations/esphome/
[google docs]: /integrations/google/
[imap docs]: /integrations/imap/
[local_calendar docs]: /integrations/local_calendar/
[verisure docs]: /integrations/verisure/
[#90921]: https://github.com/home-assistant/core/pull/90921
[@epenet]: https://github.com/epenet
[ambient_station docs]: /integrations/ambient_station/
[reolink docs]: /integrations/reolink/
[@bachya]: https://github.com/bachya
[@starkillerOG]: https://github.com/starkillerOG
[#90746]: https://github.com/home-assistant/core/pull/90746
[#90799]: https://github.com/home-assistant/core/pull/90799
[#90855]: https://github.com/home-assistant/core/pull/90855
[#90858]: https://github.com/home-assistant/core/pull/90858
[#90867]: https://github.com/home-assistant/core/pull/90867
[#90868]: https://github.com/home-assistant/core/pull/90868
[#90880]: https://github.com/home-assistant/core/pull/90880
[#90883]: https://github.com/home-assistant/core/pull/90883
[#90885]: https://github.com/home-assistant/core/pull/90885
[#90888]: https://github.com/home-assistant/core/pull/90888
[#90889]: https://github.com/home-assistant/core/pull/90889
[#90895]: https://github.com/home-assistant/core/pull/90895
[#90896]: https://github.com/home-assistant/core/pull/90896
[#90903]: https://github.com/home-assistant/core/pull/90903
[#90905]: https://github.com/home-assistant/core/pull/90905
[#90927]: https://github.com/home-assistant/core/pull/90927
[#90951]: https://github.com/home-assistant/core/pull/90951
[@bachya]: https://github.com/bachya
[@bdraco]: https://github.com/bdraco
[@bramkragten]: https://github.com/bramkragten
[@frenck]: https://github.com/frenck
[@mib1185]: https://github.com/mib1185
[@mkmer]: https://github.com/mkmer
[@pree]: https://github.com/pree
[@saschaabraham]: https://github.com/saschaabraham
[@stickpin]: https://github.com/stickpin
[@teharris1]: https://github.com/teharris1
[actiontec docs]: /integrations/actiontec/
[advantage_air docs]: /integrations/advantage_air/
[airly docs]: /integrations/airly/
[bluetooth docs]: /integrations/bluetooth/
[dhcp docs]: /integrations/dhcp/
[fritz docs]: /integrations/fritz/
[fritzbox_callmonitor docs]: /integrations/fritzbox_callmonitor/
[frontend docs]: /integrations/frontend/
[home_connect docs]: /integrations/home_connect/
[honeywell docs]: /integrations/honeywell/
[insteon docs]: /integrations/insteon/
[nuki docs]: /integrations/nuki/
[pi_hole docs]: /integrations/pi_hole/
[profiler docs]: /integrations/profiler/
[recorder docs]: /integrations/recorder/
[simplisafe docs]: /integrations/simplisafe/
## Release 2023.4.2 - April 8
- Fix NMBS AttributeError ([@PatrickGlesner] - [#90525]) ([nmbs docs])
- Bump websockets constraint to 11.0.1+ ([@bdraco] - [#90901]) ([ambient_station docs]) ([vallox docs])
- Raise an issue for legacy SQL queries that will cause full table scans ([@bdraco] - [#90971]) ([sql docs])
- Resume entity id post migration after a restart ([@bdraco] - [#90973]) ([recorder docs])
- Bump vallox-websocket-api to 3.2.1 ([@bdraco] - [#90980]) ([vallox docs])
- Bump `aioambient` to 2023.04.0 ([@bachya] - [#90991]) ([ambient_station docs])
- Bump roombapy to 1.6.8 ([@joostlek] - [#91012]) ([roomba docs])
- Delay utility_meter until HA has started ([@dgomes] - [#91017]) ([utility_meter docs])
- Make sure upnp-router is also initialized when first seen through an advertisement ([@StevenLooman] - [#91037]) ([upnp docs])
- Bump ZHA quirks lib ([@dmulcahey] - [#91054]) ([zha docs])
- Fix Smartthings acceleration sensor in ZHA ([@dmulcahey] - [#91056]) ([zha docs])
- Bump zeroconf to 0.55.0 ([@bdraco] - [#90987]) ([zeroconf docs])
- Bump zeroconf to 0.56.0 ([@bdraco] - [#91060]) ([zeroconf docs])
- Make location optional in google calendar create service ([@allenporter] - [#91061]) ([google docs])
- Bump gcal_sync to 4.1.4 ([@allenporter] - [#91062]) ([google docs])
- Bump subarulink to 0.7.6 ([@G-Two] - [#91064]) ([subaru docs])
- Bump env_canada to v0.5.31 ([@michaeldavie] - [#91094]) ([environment_canada docs])
- Fix context_user_id round trip when calling to_native ([@bdraco] - [#91098]) ([recorder docs])
- Bump flux_led to 0.28.37 ([@bdraco] - [#91099]) ([flux_led docs])
- Make the device_tracker more forgiving when passed an empty ip address string ([@bdraco] - [#91101]) ([device_tracker docs])
[#90525]: https://github.com/home-assistant/core/pull/90525
[#90855]: https://github.com/home-assistant/core/pull/90855
[#90901]: https://github.com/home-assistant/core/pull/90901
[#90956]: https://github.com/home-assistant/core/pull/90956
[#90971]: https://github.com/home-assistant/core/pull/90971
[#90973]: https://github.com/home-assistant/core/pull/90973
[#90980]: https://github.com/home-assistant/core/pull/90980
[#90987]: https://github.com/home-assistant/core/pull/90987
[#90991]: https://github.com/home-assistant/core/pull/90991
[#91012]: https://github.com/home-assistant/core/pull/91012
[#91017]: https://github.com/home-assistant/core/pull/91017
[#91037]: https://github.com/home-assistant/core/pull/91037
[#91054]: https://github.com/home-assistant/core/pull/91054
[#91056]: https://github.com/home-assistant/core/pull/91056
[#91060]: https://github.com/home-assistant/core/pull/91060
[#91061]: https://github.com/home-assistant/core/pull/91061
[#91062]: https://github.com/home-assistant/core/pull/91062
[#91064]: https://github.com/home-assistant/core/pull/91064
[#91094]: https://github.com/home-assistant/core/pull/91094
[#91098]: https://github.com/home-assistant/core/pull/91098
[#91099]: https://github.com/home-assistant/core/pull/91099
[#91101]: https://github.com/home-assistant/core/pull/91101
[@G-Two]: https://github.com/G-Two
[@PatrickGlesner]: https://github.com/PatrickGlesner
[@StevenLooman]: https://github.com/StevenLooman
[@allenporter]: https://github.com/allenporter
[@bachya]: https://github.com/bachya
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@dgomes]: https://github.com/dgomes
[@dmulcahey]: https://github.com/dmulcahey
[@frenck]: https://github.com/frenck
[@joostlek]: https://github.com/joostlek
[@michaeldavie]: https://github.com/michaeldavie
[actiontec docs]: /integrations/actiontec/
[advantage_air docs]: /integrations/advantage_air/
[airly docs]: /integrations/airly/
[ambient_station docs]: /integrations/ambient_station/
[device_tracker docs]: /integrations/device_tracker/
[environment_canada docs]: /integrations/environment_canada/
[flux_led docs]: /integrations/flux_led/
[google docs]: /integrations/google/
[nmbs docs]: /integrations/nmbs/
[recorder docs]: /integrations/recorder/
[roomba docs]: /integrations/roomba/
[sql docs]: /integrations/sql/
[subaru docs]: /integrations/subaru/
[upnp docs]: /integrations/upnp/
[utility_meter docs]: /integrations/utility_meter/
[vallox docs]: /integrations/vallox/
[zeroconf docs]: /integrations/zeroconf/
[zha docs]: /integrations/zha/
## Release 2023.4.3 - April 12
- Fix configuring Flo instances ([@amattas] - [#90990]) ([flo docs])
- Fall back to polling if webhook cannot be registered on Nuki ([@pree] - [#91013]) ([nuki docs])
- Track availability of source sensor in utility meter ([@dgomes] - [#91035]) ([utility_meter docs])
- Bump aiopyarr to 23.4.0 ([@tkdrob] - [#91110]) ([sonarr docs]) ([radarr docs]) ([lidarr docs])
- Bump env_canada to 0.5.32 ([@michaeldavie] - [#91126]) ([environment_canada docs])
- Relax calendar event validation to allow existing zero duration events ([@allenporter] - [#91129]) ([google docs]) ([calendar docs]) ([caldav docs])
- Bump ulid-transform to 0.6.3 ([@bdraco] - [#91133])
- Fix false positive in SQL sensor full table scan check ([@bdraco] - [#91134]) ([sql docs])
- Reolink config flow fix custom port when USE_HTTPS not selected ([@starkillerOG] - [#91137]) ([reolink docs])
- Fix all day event coercion logic ([@allenporter] - [#91169]) ([calendar docs]) ([local_calendar docs])
- Reduce startup time for System Bridge integration ([@timmo001] - [#91171]) ([system_bridge docs])
- Cleanup ZHA from Zigpy deprecated property removal ([@dmulcahey] - [#91180]) ([zha docs])
- Bump `pytile` to 2023.04.0 ([@bachya] - [#91191]) ([tile docs])
- Flush conversation name cache when an entity is renamed ([@emontnemery] - [#91214]) ([conversation docs])
- Update frontend to 20230411.0 ([@bramkragten] - [#91219]) ([frontend docs])
- Fix switch_as_x name ([@emontnemery] - [#91232]) ([switch_as_x docs])
- Update Inovelli Blue Series switch support in ZHA ([@codyhackw] - [#91254]) ([zha docs])
- Bump ZHA dependencies ([@puddly] - [#91291]) ([zha docs])
- Restore use of local timezone for MariaDB/MySQL in SQL integration ([@bdraco] - [#91313]) ([recorder docs]) ([sql docs])
- Google Assistant SDK: Fix broadcast command for Portuguese ([@tronikos] - [#91293]) ([google_assistant_sdk docs])
- Remove codecov from Python test requirements ([@frenck] - [#91295])
[#91293]: https://github.com/home-assistant/core/pull/91293
[#91295]: https://github.com/home-assistant/core/pull/91295
[@frenck]: https://github.com/frenck
[@tronikos]: https://github.com/tronikos
[google_assistant_sdk docs]: /integrations/google_assistant_sdk/
[#90855]: https://github.com/home-assistant/core/pull/90855
[#90956]: https://github.com/home-assistant/core/pull/90956
[#90990]: https://github.com/home-assistant/core/pull/90990
[#91013]: https://github.com/home-assistant/core/pull/91013
[#91035]: https://github.com/home-assistant/core/pull/91035
[#91110]: https://github.com/home-assistant/core/pull/91110
[#91111]: https://github.com/home-assistant/core/pull/91111
[#91126]: https://github.com/home-assistant/core/pull/91126
[#91129]: https://github.com/home-assistant/core/pull/91129
[#91133]: https://github.com/home-assistant/core/pull/91133
[#91134]: https://github.com/home-assistant/core/pull/91134
[#91137]: https://github.com/home-assistant/core/pull/91137
[#91169]: https://github.com/home-assistant/core/pull/91169
[#91171]: https://github.com/home-assistant/core/pull/91171
[#91180]: https://github.com/home-assistant/core/pull/91180
[#91191]: https://github.com/home-assistant/core/pull/91191
[#91214]: https://github.com/home-assistant/core/pull/91214
[#91219]: https://github.com/home-assistant/core/pull/91219
[#91232]: https://github.com/home-assistant/core/pull/91232
[#91254]: https://github.com/home-assistant/core/pull/91254
[#91291]: https://github.com/home-assistant/core/pull/91291
[#91313]: https://github.com/home-assistant/core/pull/91313
[@allenporter]: https://github.com/allenporter
[@amattas]: https://github.com/amattas
[@bachya]: https://github.com/bachya
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@bramkragten]: https://github.com/bramkragten
[@codyhackw]: https://github.com/codyhackw
[@dgomes]: https://github.com/dgomes
[@dmulcahey]: https://github.com/dmulcahey
[@emontnemery]: https://github.com/emontnemery
[@frenck]: https://github.com/frenck
[@michaeldavie]: https://github.com/michaeldavie
[@pree]: https://github.com/pree
[@puddly]: https://github.com/puddly
[@starkillerOG]: https://github.com/starkillerOG
[@timmo001]: https://github.com/timmo001
[@tkdrob]: https://github.com/tkdrob
[actiontec docs]: /integrations/actiontec/
[advantage_air docs]: /integrations/advantage_air/
[airly docs]: /integrations/airly/
[caldav docs]: /integrations/caldav/
[calendar docs]: /integrations/calendar/
[conversation docs]: /integrations/conversation/
[environment_canada docs]: /integrations/environment_canada/
[flo docs]: /integrations/flo/
[frontend docs]: /integrations/frontend/
[google docs]: /integrations/google/
[lidarr docs]: /integrations/lidarr/
[local_calendar docs]: /integrations/local_calendar/
[nuki docs]: /integrations/nuki/
[radarr docs]: /integrations/radarr/
[recorder docs]: /integrations/recorder/
[reolink docs]: /integrations/reolink/
[sonarr docs]: /integrations/sonarr/
[sql docs]: /integrations/sql/
[switch_as_x docs]: /integrations/switch_as_x/
[system_bridge docs]: /integrations/system_bridge/
[tile docs]: /integrations/tile/
[utility_meter docs]: /integrations/utility_meter/
[zha docs]: /integrations/zha/
## Release 2023.4.4 - April 13
- Bump python-homewizard-energy to 2.0.1 ([@DCSBL] - [#91097]) ([homewizard docs]) (dependency)
- Bump aiolifx to 0.8.10 ([@bdraco] - [#91324]) ([lifx docs]) (dependency)
- Update frontend to 20230411.1 ([@bramkragten] - [#91344]) ([frontend docs])
[#90855]: https://github.com/home-assistant/core/pull/90855
[#90956]: https://github.com/home-assistant/core/pull/90956
[#91097]: https://github.com/home-assistant/core/pull/91097
[#91111]: https://github.com/home-assistant/core/pull/91111
[#91316]: https://github.com/home-assistant/core/pull/91316
[#91324]: https://github.com/home-assistant/core/pull/91324
[#91344]: https://github.com/home-assistant/core/pull/91344
[@DCSBL]: https://github.com/DCSBL
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@bramkragten]: https://github.com/bramkragten
[@frenck]: https://github.com/frenck
[actiontec docs]: /integrations/actiontec/
[advantage_air docs]: /integrations/advantage_air/
[airly docs]: /integrations/airly/
[frontend docs]: /integrations/frontend/
[homewizard docs]: /integrations/homewizard/
[lifx docs]: /integrations/lifx/
## Release 2023.4.5 - April 17
- Add SetSynchronizationPoint fallback to onvif ([@GrumpyMeow] - [#86400]) ([onvif docs])
- Fix SharkIQ token expiration ([@funkybunch] - [#89357]) ([sharkiq docs])
- Reolink prevent ONVIF push being lost due to ConnectionResetError ([@starkillerOG] - [#91070]) ([reolink docs])
- Add missing mock in sharkiq tests ([@epenet] - [#91325]) ([sharkiq docs])
- Tado set_water_heater_timer should use water_heater domain ([@rich-kettlewell] - [#91364]) ([tado docs])
- Fix listener running in foreground for System Bridge integration ([@timmo001] - [#91391]) ([system_bridge docs])
- Bump onvif-zeep-async to 1.2.5 ([@bdraco] - [#91399]) ([onvif docs])
- Fix attribute reporting config failures in ZHA ([@puddly] - [#91403]) ([zha docs])
- Save Thread dataset store when changing preferred dataset ([@emontnemery] - [#91411]) ([thread docs])
- Bump env_canada to v0.5.33 ([@michaeldavie] - [#91468]) ([environment_canada docs])
- Fix creating onvif pull point subscriptions when InitialTerminationTime is required ([@bdraco] - [#91470]) ([onvif docs]) (dependency)
- Bump onvif-zeep-async to 1.2.11 ([@bdraco] - [#91472]) ([onvif docs]) (dependency)
- Handle a few more transient onvif errors ([@bdraco] - [#91473]) ([onvif docs])
- Reolink ONVIF move read to primary callback ([@starkillerOG] - [#91478]) ([reolink docs])
- Fix onvif failing to reload ([@bdraco] - [#91482]) ([onvif docs])
- Resolve issue with switchbot blind tilt devices getting stuck in opening/closing state ([@BTMorton] - [#91495]) ([switchbot docs]) (dependency)
- Fix state mapping in fibaro climate ([@rappenze] - [#91505]) ([fibaro docs])
- Bump unifiprotect to 4.8.1 ([@AngellusMortis] - [#91522]) ([unifiprotect docs]) (dependency)
[#86400]: https://github.com/home-assistant/core/pull/86400
[#89357]: https://github.com/home-assistant/core/pull/89357
[#90855]: https://github.com/home-assistant/core/pull/90855
[#90956]: https://github.com/home-assistant/core/pull/90956
[#91070]: https://github.com/home-assistant/core/pull/91070
[#91111]: https://github.com/home-assistant/core/pull/91111
[#91316]: https://github.com/home-assistant/core/pull/91316
[#91325]: https://github.com/home-assistant/core/pull/91325
[#91356]: https://github.com/home-assistant/core/pull/91356
[#91364]: https://github.com/home-assistant/core/pull/91364
[#91391]: https://github.com/home-assistant/core/pull/91391
[#91399]: https://github.com/home-assistant/core/pull/91399
[#91403]: https://github.com/home-assistant/core/pull/91403
[#91411]: https://github.com/home-assistant/core/pull/91411
[#91468]: https://github.com/home-assistant/core/pull/91468
[#91470]: https://github.com/home-assistant/core/pull/91470
[#91472]: https://github.com/home-assistant/core/pull/91472
[#91473]: https://github.com/home-assistant/core/pull/91473
[#91478]: https://github.com/home-assistant/core/pull/91478
[#91482]: https://github.com/home-assistant/core/pull/91482
[#91495]: https://github.com/home-assistant/core/pull/91495
[#91505]: https://github.com/home-assistant/core/pull/91505
[#91522]: https://github.com/home-assistant/core/pull/91522
[@AngellusMortis]: https://github.com/AngellusMortis
[@BTMorton]: https://github.com/BTMorton
[@GrumpyMeow]: https://github.com/GrumpyMeow
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@emontnemery]: https://github.com/emontnemery
[@epenet]: https://github.com/epenet
[@frenck]: https://github.com/frenck
[@funkybunch]: https://github.com/funkybunch
[@michaeldavie]: https://github.com/michaeldavie
[@puddly]: https://github.com/puddly
[@rappenze]: https://github.com/rappenze
[@rich-kettlewell]: https://github.com/rich-kettlewell
[@starkillerOG]: https://github.com/starkillerOG
[@timmo001]: https://github.com/timmo001
[actiontec docs]: /integrations/actiontec/
[advantage_air docs]: /integrations/advantage_air/
[airly docs]: /integrations/airly/
[environment_canada docs]: /integrations/environment_canada/
[fibaro docs]: /integrations/fibaro/
[frontend docs]: /integrations/frontend/
[homewizard docs]: /integrations/homewizard/
[lifx docs]: /integrations/lifx/
[onvif docs]: /integrations/onvif/
[reolink docs]: /integrations/reolink/
[sharkiq docs]: /integrations/sharkiq/
[switchbot docs]: /integrations/switchbot/
[system_bridge docs]: /integrations/system_bridge/
[tado docs]: /integrations/tado/
[thread docs]: /integrations/thread/
[unifiprotect docs]: /integrations/unifiprotect/
[zha docs]: /integrations/zha/
## Release 2023.4.6 - April 21
- Add a guard against selecting all entities in `state_changes_during_period` ([@bdraco] - [#91585]) ([recorder docs])
- Fix tasks with no due date from not triggering `on` calendar state. ([@boralyl] - [#91196]) ([todoist docs])
- Fix Insteon thermostat issue ([@teharris1] - [#91568]) ([insteon docs])
- Handle UnsupportedError in HomeWizard ([@DCSBL] - [#91608]) ([homewizard docs])
- Bump renault-api to 0.1.13 ([@epenet] - [#91609]) ([renault docs])
- Handle long format context UUIDs during migration ([@bdraco] - [#91657]) ([recorder docs])
- Bump aioshelly to 5.3.2 ([@thecode] - [#91679]) ([shelly docs])
- Fallback to generating a new ULID on migraiton if context is missing or invalid ([@bdraco] - [#91704]) ([recorder docs])
- Bump python-songpal dependency ([@rytilahti] - [#91708]) ([songpal docs])
- Do not wait for mqtt at startup mqtt_statestream ([@jbouwh] - [#91721]) ([mqtt_statestream docs])
- Bump pylitterbot to 2023.4.0 ([@natekspencer] - [#91759]) ([litterrobot docs])
- Bump pysml to 0.0.10 ([@StephanU] - [#91773]) ([edl21 docs])
- Relax the constraint that events must have a consistent timezone for start/end ([@allenporter] - [#91788]) ([google docs]) ([calendar docs])
- Disallow uploading files to bypass the media dirs ([@balloob] - [#91817]) ([media_source docs])
[#90855]: https://github.com/home-assistant/core/pull/90855
[#90956]: https://github.com/home-assistant/core/pull/90956
[#91111]: https://github.com/home-assistant/core/pull/91111
[#91196]: https://github.com/home-assistant/core/pull/91196
[#91316]: https://github.com/home-assistant/core/pull/91316
[#91356]: https://github.com/home-assistant/core/pull/91356
[#91544]: https://github.com/home-assistant/core/pull/91544
[#91568]: https://github.com/home-assistant/core/pull/91568
[#91585]: https://github.com/home-assistant/core/pull/91585
[#91608]: https://github.com/home-assistant/core/pull/91608
[#91609]: https://github.com/home-assistant/core/pull/91609
[#91657]: https://github.com/home-assistant/core/pull/91657
[#91679]: https://github.com/home-assistant/core/pull/91679
[#91704]: https://github.com/home-assistant/core/pull/91704
[#91708]: https://github.com/home-assistant/core/pull/91708
[#91721]: https://github.com/home-assistant/core/pull/91721
[#91759]: https://github.com/home-assistant/core/pull/91759
[#91773]: https://github.com/home-assistant/core/pull/91773
[#91788]: https://github.com/home-assistant/core/pull/91788
[#91817]: https://github.com/home-assistant/core/pull/91817
[@DCSBL]: https://github.com/DCSBL
[@StephanU]: https://github.com/StephanU
[@allenporter]: https://github.com/allenporter
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@boralyl]: https://github.com/boralyl
[@epenet]: https://github.com/epenet
[@frenck]: https://github.com/frenck
[@jbouwh]: https://github.com/jbouwh
[@natekspencer]: https://github.com/natekspencer
[@rytilahti]: https://github.com/rytilahti
[@teharris1]: https://github.com/teharris1
[@thecode]: https://github.com/thecode
[actiontec docs]: /integrations/actiontec/
[advantage_air docs]: /integrations/advantage_air/
[airly docs]: /integrations/airly/
[calendar docs]: /integrations/calendar/
[edl21 docs]: /integrations/edl21/
[frontend docs]: /integrations/frontend/
[google docs]: /integrations/google/
[homewizard docs]: /integrations/homewizard/
[insteon docs]: /integrations/insteon/
[lifx docs]: /integrations/lifx/
[litterrobot docs]: /integrations/litterrobot/
[media_source docs]: /integrations/media_source/
[mqtt_statestream docs]: /integrations/mqtt_statestream/
[recorder docs]: /integrations/recorder/
[renault docs]: /integrations/renault/
[shelly docs]: /integrations/shelly/
[songpal docs]: /integrations/songpal/
[todoist docs]: /integrations/todoist/
## Need help? Join the community!
Home Assistant has a great community of users who are all more than willing
to help each other out. So, join us!
Our very active [Discord chat server](/join-chat) is an excellent place to be
at, and don't forget to join our amazing [forums](https://community.home-assistant.io/).
Found a bug or issue? Please report it in our [issue tracker](https://github.com/home-assistant/core/issues),
to get it fixed! Or, check [our help page](/help) for guidance for more
places you can go.
Are you more into email? [Sign-up for our Building the Open Home Newsletter](/newsletter)
to get the latest news about features, things happening in our community and
other news about building an Open Home; straight into your inbox.
## Backward-incompatible changes
{% details "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" %}
In order to obtain an up-to-date list of compatible programs for your appliances, it will be necessary to reconfigure the integration.
Please note that due to limitations on the Home Connect side, it is important to have your appliances **Turned on** during the reconfiguration process.
This action is a one-time requirement.
([@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)