Home Assistant Core 2023.2! 🎉
This release covers the first month of development of 2023, and it is setting one heck of a high bar for the rest of the year! 😅
Undoubtedly, the most spectacular features are related to the first chapter of Year of the Voice. 🎙️ It is hard to sum up all of this in this release blog, so I’m not even going to try doing it in this introduction, but holy mother of smart homes: this is exciting stuff! 😮
My personal favorite this release: huge steps into an even tighter integration with our amazing sister project: ESPHome. Creating and maintaining your own secure DIY IoT devices just became a lot easier.
And since we are talking about awesomeness, have you noticed the large amount of logos in the release image above? So many new integrations! 🤩
Enjoy the release!
PS: Just a reminder that valentine’s day is coming up. Be sure to share the love! ❤️
- Meet: Assist!
- Streaming history
- Grouping sensors
- Now even tighter integrated with ESPHome
- Other noteworthy changes
- New Integrations
- Integrations now available to set up from the UI
- Release 2023.2.1 - February 2
- Release 2023.2.2 - February 4
- Release 2023.2.3 - February 7
- Release 2023.2.4 - February 13
- Release 2023.2.5 - February 15
- Need help? Join the community!
- Backward-incompatible changes
- Farewell to the following
- All changes
Don’t forget to join our release party live stream on YouTube 1 February 2023, at 12:00 PST / 21:00 CET!
It’s Home Assistant’s Year of the Voice, and it’s our goal to let users control Home Assistant in their own language. Together with the Home Assistant community, we have been hard at work building the foundation for this.
Today we like you to meet:
We believe technology is meant to be played with, and projects should be usable as soon as possible. Together with the community, we can then iterate and refine. That’s why today, we’re delivering a basic experience supporting a stunning 22! languages that work with Assist.
Go ahead, it is enabled by default; just tap the new Assist icon at the top right of your dashboard to start using it.
Oh, and we are also releasing some fun stuff we’ve cooked up along the way! Read more about Assist and other released voice features in the Chapter 1: Assist blogpost and a video presentation (including live demos) on YouTube.
History cards now update live! We now stream the state changes while they are happening and update the graphs in real-time 😲
These history cards now show live power usage, while I'm brewing a cup of coffee.
But this isn’t just limited to history cards, your history dashboard is now live too!
As a result of this all, we can now write less frequently to the database in our recorder. It took years of changes to get us to this point (thanks @bdraco 🙏). It greatly reduces resource usage and increases storage lifetimes significantly. The previously introduced live logbook and now the live history were the last pieces that made this possible.
As a side-effect, it should also resolve the authentication errors some people experienced re-opening the iOS companion app when using history cards.
This feature is a revised, improved, and more logical version of the “Min/Max” integration / “Combine the state of several sensors” helper. It is likely we are going to replace those with this new sensor group in the future.
Compared to those previously mentioned methods, the sensor groups have the additional options to hide their member entities and the option to ignore sensors that currently are not in a numeric state (i.e., currently “unavailable” or “unknown”).
ESPHome already works really well with Home Assistant. Yet, this release makes it even better!
If you are using the ESPHome add-on, we have some great improvements for you. The add-on and Home Assistant will now communicate with each other, bringing in many new features.
When you set up a new device in ESPHome and next add it to Home Assistant, they will be able to exchange encryption keys. Removing the need for you to find, copy & paste those. Just a single click and the setup is done! 🚀
But that is not all. What is really mind-blowing, is that the ESPHome integration will now provide update entities when using the add-on!
Right now, the update entities will only indicate if a device needs updating. However, when the next major release of ESPHome (2023.2) becomes available, it will support updating them too! Yes, at that point, you can update your ESPHome devices directly from Home Assistant and even automate it!
Also, ESPHome is deprecating the old password-based authentication for its API in favor of the more secure encryption key. If one of your ESPHome devices is still using a plain password, Home Assistant will notify you by creating an issue in your Repairs dashboard.
We’ve also prepared for the next release of ESPHome (2023.2), in which you can add a friendly, more human name to your ESPHome devices. Home Assistant will pick those up, making your ESPHome devices look better out-of-the-box!
There is much more juice in this release; here are some of the other noteworthy changes this release:
- You can now add aliases to your areas too! Our new Assist feature leverages this.
- Got an energy sensor in
Wh, but you’d like it to be
kWh? You can now change the units of energy sensors in the entity settings.
- Each entity in the frontend has its own color, which is based on the current entity state. We now have officially added support for themes to customize these.
- The most awesome integration of all, got even better. @Lash-L added support for the battery state of your Oral-B toothbrush!
- The automations & scripts UI now support selecting other entities for above/below in the numeric state conditions & triggers. Thanks, @karwosts!
- The Reolink integration now supports FLV streams, cameras can be discovered on the network, but more importantly: binary sensors! For things like motion, person, vehicle detection, and… Doorbell presses! Thanks, @starkillerOG!
- There is now a service that allows for the creation of calendar events. So, you can now automate events to be added to your calendars! Amazing, @allenporter!
- When selecting multiple entities from a list in the UI, it will now exclude already added entities. No more accidentally added duplicates! Thanks, @piitaya!
- @Kane610 added PoE power sensors to the UniFi Network integrations, nice!
- The Tile card now has a vertical option! Great, @TheZoker!
- Jellyfin now works with TV shows in the media browser. Thanks, @j-stienstra!
- We have bumped the CHIP/Matter SDK version used by our Matter implementation to 188.8.131.52, which contains many fixes.
- From the Month of “What the heck?”: Old-style groups can now remove entities
from the group using the
group.setservice. Thanks, @gjohansson-ST!
- You might have noticed a Thread and an Open Thread Border Router integration being added to this release. These are currently not for active use but for initial early development.
- The experimental multi-pan feature has been enabled again. Allowing to run both Zigbee and Thread using the single radio found in both Home Assistant Yellow and Home Assistant SkyConnect.
- The following integrations now reached a Platinum level on the integration quality scale:
We welcome the following new integrations in this release:
Everything but the Kitchen Sink, added by @emontnemery
This is a test integration, which provides various odd and obscure entities. It can be helpful for development purposes, but generally no use otherwise.
This release also has some new virtual integrations. Virtual integrations are stubs that are handled by other (existing) integrations to help with findability. These are new:
- ANWB Energie provided by EnergyZero, added by @klaasnicolaas
- Energie VanOns provided by EnergyZero, added by @klaasnicolaas
- Mijndomein Energie provided by EnergyZero, added by @klaasnicolaas
- Fire TV provided by Android TV, added by @jrieger
The following integrations are now available via the Home Assistant UI:
- Support ISY994 Z-Wave motorized blinds as cover (@shbatm - #87102) (isy994 docs)
- Bump reolink_aio to 0.3.1 (@starkillerOG - #87118) (reolink docs)
- Bump reolink-aio to 0.3.2 (@starkillerOG - #87121) (reolink docs)
- Fix invalid state class in renault (@epenet - #87135) (renault docs)
- Add missing converters to recorder statistics (@epenet - #87137) (recorder docs)
- Add missing supported features to Z-Wave.Me siren (@lawfulchaos - #87141) (zwave_me docs)
- Reolink unsubscribe webhook when first refresh fails (@starkillerOG - #87147) (reolink docs)
- Fix statistics graphs not loading with data_rate, electric_current, voltage, information, and unitless units (@bdraco - #87202) (recorder docs)
- Add Reauth config flow to honeywell (@mkmer - #86170) (honeywell docs)
- Bump AIOSomecomfort to 0.0.6 (@mkmer - #87203) (honeywell docs)
- Update frontend to 20230202.0 (@bramkragten - #87208) (frontend docs)
- Bump py-synologydsm-api to 2.1.1 (@mib1185 - #87211) (synology_dsm docs)
- Fix disabled condition within an automation action (@karliemeads - #87213) (breaking-change)
- Add missing mopeka translations (@bdraco - #87421) (mopeka docs)
- Fix call values in Aussie Broadband (@Bre77 - #87229) (aussie_broadband docs)
- Handle failed Sonos subscriptions better (@jjlawren - #87240) (sonos docs)
- Filesize timestamp remove state class (@gjohansson-ST - #87247) (filesize docs)
- Bump reolink-aio to 0.3.4 (@starkillerOG - #87272) (reolink docs)
- Fix volume state class in renault (@epenet - #87280) (renault docs)
- Bump sfrbox-api to 0.0.6 (@epenet - #87281) (sfr_box docs)
- Extend state class sensor warnings with expected values (@frenck - #87294) (sensor docs)
- Fix incorrect description in sensor group config flow (@frenck - #87298) (group docs)
- Don’t override icon in sensor group when device class is set (@frenck - #87304) (group docs)
- Fix Bravia TV refreshing zero volume level (@Drafteed - #87318) (braviatv docs)
- Fixed parser for zeversolar hardware version M10 (@kvanzuijlen - #87319) (zeversolar docs)
- Fix code format issue in Yale Smart Alarm (@gjohansson-ST - #87323) (yale_smart_alarm docs)
- Bump py-synologydsm-api to 2.1.2 (@mib1185 - #87324) (synology_dsm docs)
- Bump oralb-ble to 0.17.2 (@Lash-L - #87355) (oralb docs)
- Update pylutron-caseta to 0.18.1 (@mdonoughe - #87361) (lutron_caseta docs)
- Fix exception when trying to poll a HomeKit device over Thread with no active encryption context (@Jc2k - #87379) (homekit_controller docs)
- Fix Ruuvi Gateway data being ignored when system is not using UTC time (@akx - #87384) (ruuvi_gateway docs)
- Fix state class in Enphase Envoy (@vpathuis - #87397) (enphase_envoy docs)
- Ignore invalid zeroconf names from devices with broken firmwares (@bdraco - #87414) (zeroconf docs)
- Disable mopeka accelerometer sensors by default (@bdraco - #87420) (mopeka docs)
- Bump aiohomekit to 2.4.6 (@bdraco - #87427) (homekit_controller docs)
- Update black to 23.1.0 (@frenck - #87188)
- Speed up purge time with newer MariaDB versions (@bdraco - #87409) (recorder docs)
- Add missing name field to emulated_hue config (@gregoryhaynes - #87456) (emulated_hue docs)
- Bump lupupy to 0.2.7 (@majuss - #87469) (lupusec docs)
- Bump py-synologydsm-api to 2.1.4 (@mib1185 - #87471) (synology_dsm docs)
- Disable uptime sensor by default in Unifi (@tkdrob - #87484) (unifi docs)
- Add the correct loggers to velbus manifest.json (@Cereal2nd - #87488) (velbus docs)
- Fix recorder run history during schema migration and startup (@bdraco - #87492) (recorder docs)
- Bump xiaomi-ble to 0.16.1 (@Ernst79 - #87496) (xiaomi_ble docs)
- Bump jaraco.abode to 3.3.0 (@zim514 - #87498) (abode docs)
- Bump bimmer_connected to 0.12.1 (@rikroe - #87506) (bmw_connected_drive docs)
- Add LD2410BLE support for new firmware version (@bencorrado - #87507) (ld2410_ble docs)
- Bump env_canada to 0.5.28 (@michaeldavie - #87509) (environment_canada docs)
- Optimize history.get_last_state_changes query (@bdraco - #87554) (recorder docs)
- OpenAI: Ignore devices without a name (@balloob - #87558) (openai_conversation docs)
- Bump oralb-ble to 0.17.4 (@Lash-L - #87570) (oralb docs)
- Fix matter remove config entry device (@MartinHjelmare - #87571) (matter docs)
- Fix indent on slow_range_in_select for MySQL/MariaDB (@bdraco - #87581) (recorder docs)
- Fix LD2410 BLE detection with passive scans (@bdraco - #87584) (ld2410_ble docs)
- Bump inkbird-ble to 0.5.6 (@bdraco - #87590) (inkbird docs)
- Bump sensorpro-ble to 0.5.3 (@bdraco - #87591) (sensorpro docs)
- Bump thermopro-ble to 0.4.5 (@bdraco - #87592) (thermopro docs)
- Bump bluemaestro-ble to 0.2.3 (@bdraco - #87594) (bluemaestro docs)
- Bump sensorpush-ble to 1.5.5 (@bdraco - #87595) (sensorpush docs)
- Improve rainbird device reliability by sending requests serially (@allenporter - #87603) (rainbird docs)
- Do not return cached values for entity states in emulated_hue (@Tho85 - #87642) (emulated_hue docs)
- Bump pyrainbird to 2.0.0 (@allenporter - #86851) (rainbird docs)
- Bump PyISY to 3.1.13, check portal for network buttons (@shbatm - #87650) (isy994 docs)
- Netgear ssdp discovery abort if no serial (@starkillerOG - #87532) (netgear docs)
- Reolink unregistered webhook on unexpected error (@starkillerOG - #87538) (reolink docs)
- Correct sensor restore entity in modbus (@janiversen - #87563) (modbus docs)
- Upgrading volvooncall to 0.10.2 (@Gollam - #87572) (volvooncall docs)
- Keep sleepy xiaomi-ble devices that don’t broadcast regularly available (@Ernst79 - #87654) (xiaomi_ble docs)
- Bump oralb-ble to 0.17.5 (@Lash-L - #87657) (oralb docs)
- Bump cryptography to 39.0.1 for CVE-2023-23931 (@bdraco - #87658)
- Bump yalexs_ble to 1.12.12 to fix reconnect when services fail to resolve (@bdraco - #87664) (august docs) (yalexs_ble docs)
- Fix bad battery sense in ambient_station (@jpettitt - #87668) (ambient_station docs)
- Bump reolink-aio to 0.4.0 (@starkillerOG - #87733) (reolink docs)
- Bump aiolifx to 0.8.9 (@Djelibeybi - #87790) (lifx docs)
- Ensure recorder still shuts down if the final commit fails (@bdraco - #87799) (recorder docs)
- Bump pyipma to 3.0.6 (@dgomes - #87867) (ipma docs)
- Fix unbound variable in Group sensor (@gjohansson-ST - #87878) (group docs)
- Retrigger Bluetooth discovery when calling async_rediscover_address (@bdraco - #87884) (bluetooth docs)
- Fix iaqualink exception handling after switch to httpx (@flz - #87898) (iaqualink docs)
- Bump aioesphomeapi to 13.3.1 (@bdraco - #87969) (esphome docs)
- Update tibber lib 0.26.13 (@Danielhiversen - #88018) (tibber docs)
pyopenuvto 2023.02.0 (@bachya - #88039) (openuv docs)
- Honeywell disable detergent level by default (@mkmer - #88040) (whirlpool docs)
- Bump AIOAladdinConnect 0.1.56 (@mkmer - #88041) (aladdin_connect docs)
- Handle device reg fields not being valid data in openai conversion (@balloob - #88047) (openai_conversation docs)
- Bump pyoctoprintapi to 0.1.11 (@rfleming71 - #88052) (octoprint docs)
- Fixed float number validation in sensor component (@gertjanstulp - #88074) (sensor docs)
- Statistics component fix device_class for incremental source sensors (@ThomDietrich - #88096) (statistics docs)
- Update orjson to resolve segmentation fault during JSON serialisation (@mgjbroadbent - #88119)
- Blebox fix thermobox reporting wrong state (@riokuu - #88169) (blebox docs)
- Bump reolink-aio to 0.4.2 (@starkillerOG - #88175) (reolink docs)
- Bump python-matter-server to 2.1.0 (@marcelveldt - #88192) (matter docs)
Home Assistant has a great community of users who are all more than willing to help each other out. So, join us!
Are you more into email? Sign-up for our Building the Open Home 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.
Python 3.9 support has previously been deprecated and has now been removed. Home Assistant now requires Python 3.10 to run.
If you are using Home Assistant OS, Home Assistant Container, or Home Assistant Supervised installation method, you don’t have to do anything. In those cases, we handle this all for you.
Your system has been using Python 3.10 for quite some time already.
If you are using MariaDB with Home Assistant recorder, please make sure
10.8.4 (depending on which major
release you are using). If you are using the MariaDB core add-on,
make sure to update it to the latest version:
Older versions of MariaDB suffer from a significant performance regression when retrieving history data or purging the database.
If the language in the Home Assistant settings is set to Polish, the language
description attributes of the CAQI entity will change
from English to Polish.
If you are using these in your automations or scripts, you might need to adjust them to match this change.
The state values of the Fitbit sensor entities will change to remove any
thousands delimiters. For example,
1,500 will become
If you’re using the state of these entities in automations or scripts, you need to update them to handle the new state format.
The IoTAWatt integration no longer provides sensors with the “Accumulated” suffix. The accumulated sensors have been introduced to support net energy export/import metering.
Newer versions of IoTaWatt provide “Integrators”, which allow achieving the same more efficiently and with higher accuracy.
You should configure Integrators to calculate the net energy export and import.
The Matter integration now requires running Matter Server version
If you’re using the Matter Server add-on to run the Matter Server,
you will need version
3.0.0 of the add-on.
We had to change our vendor ID in the add-on; as a result, all devices need to be recommissioned.
The states of air quality sensors have been standardized to match Home Assistant core rules. This affects two states of the sensors that NAM can provide:
very low, which now became
very high, which now became
If you used those states directly in your automations, scripts, or templates; you would need to adjust those to match these changes.
The previously deprecated YAML configuration of the Pi-hole integration has been removed.
Pi-hole 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.
The extra state attribute “Domains blocked” has been removed from all sensors. It is already exposed as its own dedicated sensor.
If you used the state attribute in your automations or scripts, you would need to adjust them to use the dedicated sensor instead.
Rainbird is now configured via the UI, and configuration from YAML has been imported automatically.
However, there are a few notable changes:
- Custom per zone overrides for irrigation time are no longer supported.
- The Rain delay
binary_sensorthat duplicates the Rain delay time
sensorhas been removed. You should move all uses to the
sensorvalue and check for a non-zero value to get equivalent behavior.
- The Rain
sensorthat duplicates the Rain
binary_sensorhas been removed. You may check the
binary_sensorstate to get equivalent behavior.
Also, the way the “Rain Delay” is managed has changed. The Rain Delay, which
pauses irrigation for a specified number of days, is now managed with a
entity which can be controlled directly from the UI.
The existing service call
rainbird.set_rain_delay and the Raindelay sensor
have been deprecated. Any existing automations or scripts that make service
rainbird.set_rain_delay will need to be replaced with a call
number.set_value. Additionally, the existing service call was updated to
require an integration entry configuration since it previously had undefined
behavior, so it is recommended to move directly to the new number service call.
The recorder’s default commit interval has been increased to 5 seconds to reduce disk I/O and increase storage longevity.
As the history and logbook integrations both support live streaming, which avoids the need to read the database after the initial sync, there is no remaining core functionality that needs a lower commit interval.
commit_interval can be adjusted
to a lower value in the event an integration has not been updated to watch for
events instead of reading the database and needs to read the database sooner.
Sony Bravia TV media players no longer have fake (assumed)
states, and those are replaced with the
If you have automations or scripts that use the
please update them to be compatible with this change.
source_list no longer contains a list of applications and TV channels.
Apps and channels have been separated from the input list and moved
to the Media Browser.
If you have automations or scripts that use
switch apps or channels on the Bravia TV, the automations need to be
updated to use
media_player.play_media service instead.
The options flow has been removed from the integration, as the only
ignored_sources was no longer relevant
and incompatible with this change.
The previously deprecated YAML configuration of the Spain electricity hourly pricing (PVPC) integration has been removed.
Spain electricity hourly pricing (PVPC) 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.
The swing modes of Tado have changed. This is to standardize with other integrations, and so it can support translations.
ONbecame the lowercase
OFFbecame the lowercase
If you used these swing modes in your automations or scripts, you might need to adjust those to this change.
ISY/IoX Variables have been moved from
sensor entities to
sensor entities are deprecated and will be removed in a future
isy994.set_variable service has been deprecated in favor of using
number entities to directly set the variable values.
Please update any dashboards, scripts, and automations that may be using these entities or service.
Entities for INSTEON Aux Properties and Device Communication Errors have been removed for nodes that are not the main (load) node.
On Level and Ramp Rate sensors have been removed for non-dimmable (non-
devices. Only load devices receive communication error updates and only
dimmable devices support
The other entities were previously added but did not receive valid states from the ISY or end-devices. These sensors were disabled by default.
The raw state/option values of the Yamaha MusicCast zone sleep
have been standardized to match Home Assistant core rules.
The following states/options have been changed
120 min, which now became
90 min, which now became
60 min, which now became
30 min, which now became
If you used those states/options directly in your automations, scripts, or templates; you will need to adjust those to match these changes.
The previously deprecated YAML configuration of the Zentralanstalt für Meteorologie und Geodynamik (ZAMG) integration has been removed.
Zentralanstalt für Meteorologie und Geodynamik (ZAMG) 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.
AnalogInput sensor entities for certain Xiaomi plugs have been removed
Properly working “Active power” and “Summation delivered” sensors are available to replace the older entities. These newer sensor entities can also be used in Home Assistant Energy dashboard.
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. The following are the most notable for this release:
- Bluetooth updates for 2023.2 and later
- Cover intents deprecated
- Database schema v32 updates
- Future proofing the Conversation integration
- Sensor entity can now do rounding of numerical values
The following integrations are also no longer available as of this release:
- Almond has been removed. It is in a non-working state, and the services have been shut down.
- OpenALPR Local was previously deprecated and has now been removed. It doesn’t work correctly and has no usage, according to our public analytics.
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.2