2024.2: More voice, more icons, more integrations, more... everything!

Home Assistant Core 2024.2! 🥰

Undoubtedly, you’ve heard about last year’s “The Year of the Voice”. 2023 might be over, but we are definitely not done with voice yet! This release contains some very cool new features for voice.

Not just that, we’ve also launched a voice assistant contest that you could join, and I’m happy to inform you that we will have another voice-related live stream on 21 February 2024, at 12:00 PST / 21:00 CET: Chapter 6!

But there is more in this release besides voice! There’s drag ’n drop magic for our automation editor, and you can now update Zigbee devices directly from Home Assistant. We also have icons in more places 🤩, and quite a lot of new functionalities for Matter devices.

In general, contributions to our open-source project have been amazing this month. I’ve never seen so many contributed bug fixes, improvements, and new features in a single release. Like… 21 new integrations! This is, without a doubt, the largest release we’ve ever put out. A big shout-out to everyone who helped! ❤️

Enjoy the release!

../Frenck

Oh! And don’t forget Valentine’s Day is coming up! 😘

Don’t forget to join our release party live stream on YouTube 7 February 2024, at 12:00 PST / 21:00 CET!

Better drag & drop support for automations

Let’s start with some old-fashioned drag ’n drop magic! 🪄

As of this release, dragging and dropping triggers, conditions, and actions in the automation editor are always enabled. Previously, you had to explicitly enable re-ordering in the automation editor settings, but now, it is just always active.

But even more exciting is that you can now drag and drop elements into other nested elements! For example, you can now drag a condition into the condition of an if-then or choose action. 🤯

Screen recording showing you can now also drag and drop into nested elements in the automation editor.

Export data from the history dashboard

The following feature might be small, but it is a big deal for many. Home Assistant stores your data privately and locally; it is your data. To make this data more accessible, we’ve added a new feature to the history dashboard.

You can now download the data you are viewing in the history dashboard. This allows you to further analyze the data in, for example, Excel or to visualize it in other ways.

The button will export and download the data you currently view in the history dashboard as a CSV file.

Screenshot showing the new export button in the top right of the history dashboard.

Thanks for this one @balloob!

Improved error responses when using Assist

If you use Assist, our private voice assistant, you may have noticed that its responses were not meaningful when something was not understood.

Some of the errors encountered while using Assist can easily be fixed on your side by adding aliases to entities or areas, exposing entities to Assist, or assigning entities and devices to the correct areas.

So we are taking the first step to help you fix these errors: as of this release, Assist provides much better errors in case your intention is understood, but something else is missing (An unknown name, area, device class, or domain).

Screenshot showing the new errors Assist will return in case the intention is understood, but something else is missing.

Custom Assist responses in automations using the sentence trigger

Like almost every other component and feature of Home Assistant, Assist can be customized and extended to understand more sentences.

A few releases ago, we introduced a very simple way to extend what Assist understands: The sentence trigger in our automation engine.

Up until now, using a sentence trigger always led to the same Assist response: “Done”. In fact, the only way to define a custom response was to write complex custom sentences in YAML.

This release introduces a new action to set a custom response in your sentence-triggered automations directly inside the automation editor.

Screenshot showing how to build a custom response in our automation editor.

The response field accepts templates, so it can be used to build complex responses, for example, listing all your room temperatures.

Screenshot showing a custom response in Assist.

A very cool feature that might come in handy if you build an automation blueprint to submit as an entry for our voice assistant contest!

All known Assist devices

Last addition for voice, we’ve added a small additional page to give you an overview of all the Assist devices you have active in your Home. You can find this on the Assist configuration dashboard by selecting the new “Assist devices” button.

Screenshot showing a custom response in Assist.

Or, use this My Home Assistant button below to navigate to the voice assistants configuration dashboard:

Updating your Zigbee devices

ZHA (Zigbee Home Automation, our built-in Zigbee integration) now provides update entities to Home Assistant!

This means you can get notified when a device has a firmware update available, and you can trigger the update from Home Assistant!

Screenshot showing an Zigbee device connected via ZHA being updated.

Noticed the weird version numbers? Unfortunately, that is how version numbers in the Zigbee standard work and look. We haven’t figured out a way to translate them to something more human-readable format that matches what the manufacturer communicates.

Currently, it supports updating Inovelli, OSRAM/Ledvance, Sonoff, and ThirdReality devices, and we are looking at adding support for more brands in the future. Be aware, Zigbee is a slow protocol, and firmware updates can take a long time (sometimes hours).

Matter diagnostics and actions

Home Assistant works actively to provide the best support for Matter devices out of the box. To help with that, we have added more information and controls for your Matter devices in the UI.

On the device page of the Matter device in Home Assistant, we will now show additional diagnostic information about the device. This information can be used to troubleshoot issues with the device or when reporting issues. Some examples include the network type the device uses, its addresses, and IDs, device types and its connected fabrics.

Screenshots showing a matter device in the UI with additional diagnostic information. The other screenshots shows the overflow menu on the device, that provides more actions.

Besides more information, you can also take new actions on the device. For example, ping the device to check if it is available, force a full device interview to sync all its information, remove it from another controller, and even a new button to share your Matter device from Home Assistant with another Matter controller.

Screenshots the result of pinging a Matter device and sharing a Matter device with another controller.

Icons everywhere

We completely changed how Home Assistant handles icons under the hood. A big effort from many people, with almost… no change! That is right, almost everything looks just the same as before. 😁

We did make some improvements! For example, integrations can now provide icons for things like fan speeds or thermostat presets. Also, service call actions can now have their own icon as well:

Screenshots showing that each media player service, now has its own icons matching the action.

Areas now have icons too! You can set them in the area configuration. They show up in the area selectors and in the area dashboard itself (in case you didn’t upload a picture).

Screenshots the areas dashboard, with new icons used on each area.

Integrations with authentication issues are now shown in the repairs dashboards

When one of your integrations has authentication issues, Home Assistant will now report this in the repairs dashboard.

Previously, this was only visible on the integration dashboard, but now it shows up in the repairs dashboard, as this is the place where Home Assistant reports all issues with your system.

Screenshots showing a repair issue being raised for an integration that needs re-authentication.

Revamped Proximity integration

For this release, @mib1185 completely revamped our Proximity integration. In case you are unfamiliar with it, it allows you to monitor the proximity of persons to a particular zone. It provides information on how close one is to a zone and if they are traveling towards or away from it.

It is an extremely powerful tool for automations. It allows you to create automations based on the proximity of people. For example, if you are within a certain range from your home and traveling towards it, you could use Home Assistant to turn on the lights, open the garage door, turn up the heating, and start your favorite playlist in the living room. Welcome home! 🤗

The best part? This integration is now available to set up from the UI! Not just that, but it now uses normal sensor entities that we are all already familiar with. This will make automating and displaying the data a breeze!

Screenshots of a set up proximity integration, and the proximity of a person moving towards the home zone.

Thanks @mib1185! You did an outstanding job on this one!

If you are already using this integration, this change will come with the deprecation of the old entities. See our backwards-incompatible changes for more information.

Shipping on a new Python version

This release ships running on Python 3.12! In case you are wondering, what is that? Well, Python is the programming language Home Assistant is written in.

Why it matters? It provides many improvements to the foundation we are building Home Assistant on, most notably: It is faster! 🚀

Don’t worry! If you run the Home Assistant Operating System or are using the Home Assistant Container installation type: You won’t have to do anything, as we handle the upgrade to Python 3.12 for you. Just upgrade Home Assistant as you normally would, and you are good to go! 😎

Other noteworthy changes

There are many more improvements in this release; here are some of the other noteworthy changes this release:

  • @edenhaus improved how we handle errors in our form fields. We no longer show the technical coding gibberish that often showed up in the past. Nice!
  • When you change the type of a switch entity to, for example, a garage door entity, you will now have the option to invert its behavior. Thanks, @emontnemery!
  • The Ecovacs integration received lots of love from @edenhaus and now has support for many Deebot vacuum models with tons of entities to automate with. Nice job!
  • @mib1185 added automatic cleanups of old/unused refresh tokens 🧹. This means you will be logged out on a device that hasn’t used Home Assistant for 90 days. Clean and tidy!
  • The Tuya integration can now be set up directly using the Tuya Smart or Smart Life app. No more need for developer accounts or complicated procedures!
  • Using the utility meter integration on, for example, your solar inverter, which turns off at night? You can now set the sensor to always be available, even when the source entity is unavailable. Thanks, @dougiteixeira!
  • The TP-Link Smart Home integration now supports newer devices, including Tapo-branded devices! Awesome job @sdb9696, @bdraco, and @rytilahti!
  • @AngellusMortis added new sound event sensors introduced in UniFi Protect version 2.11 to the UniFi Protect integration. Nice!
  • Are you a Jinja templating Ninja? @TNTLarsn added a new bitwise_xor filter for you to use. Awesome!
  • The Google Generative AI Conversation allows using the new Gemini Pro models, including support for the Vision models. This allows you to use images in your prompts too! See an example in the screenshot down below. Super impressive, thanks @tronikos!

Screenshot showing Google Generative AI with the Gemini models describing what it sees in the image that was taken from the doorbell. In this case, a package that is being delivered. The Google Generative AI Conversation integration using the new Gemini Pro Vision models to describe what is seen on the doorbell camera.

New integrations

We welcome the following new integrations in this release:

This release also has a new virtual integration. Virtual integrations are stubs that are handled by other (existing) integrations to help with findability. The following virtual integrations have been added:

Integrations now available to set up from the UI

The following integrations are now available via the Home Assistant UI:

Release 2024.2.1 - February 9

Release 2024.2.2 - February 16

Release 2024.2.3 - February 22

Release 2024.2.4 - February 25

Release 2024.2.5 - February 27

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 is an excellent place to be at, and don’t forget to join our amazing forums.

Found a bug or issue? Please report it in our issue tracker, to get it fixed! Or, check our help page for guidance for more places you can go.

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.

Backward-incompatible changes

Authentication

We changed the way refresh tokens are handled. Refresh tokens are part of what keeps you logged in to Home Assistant.

Refresh tokens will be automatically deleted when unused. A refresh token is considered unused if it has not been used for a login within 90 days.

If your logged-in session hasn’t been used for 90 days, you will be logged out. You will need to log in again.

We recommend using Long-lived access tokens if you need a permanent token.

(@mib1185 - #108428) (documentation)

Blink

The options flow that gave the option to set a custom scan interval has been removed.

Adjustable scan interval is no longer allowed, but the option has had no effect on the integration since 2023.11.

You can use an automation as an alternative to create a custom polling rate (documentation). Updating one entity in a blink configuration will update all entities in each blink configuration.

(@mkmer - #106735) (documentation)


Update Wi-Fi diagnostic to match new API units - previously Blink reported RSSI dBm, now they report generic 0-5 for signal strength.

(@mkmer - #107539) (documentation)

Cisco Webex Teams

This integration has been disabled. The upstream libraries used by Home Assistant are not compatible with Python 3.12.

This compatibility issue has been reported upstream.

(@frenck - #108163) (documentation)

EZVIZ

The services ezviz.ptz, ezviz.sound_alarm, and alarm_sound have been moved to button and select entities in release 2023.8. Support for the deprecated services has now been completely removed.

If you are using these services in automations or scripts, you will need to update them to match this change.

(@jpbede - #107582) (documentation)

Google Generative AI Conversation

Any previous integration setups might have to be recreated or reconfigured with the new models/gemini-pro instead of the legacy models/chat-bison-001.

(@tronikos - #105789) (documentation)

HomeWizard Energy

The Gas meter ID sensor is removed and the meter ID is now shown as a serial number in the device info panel instead.

(@DCSBL - #100684) (documentation)

Honeywell Total Connect Comfort (US)

The preset mode was returning “unknown” rather than “none”. Any references to preset_mode may need to be updated.

(@mkmer - #108599) (documentation)

Huawei LTE

The services huawei_lte.clear_traffic_statistics and huawei_lte.reboot have been moved to button entities in release 2023.8. Support for the deprecated services has now been completely removed.

If you are using these services in automations or scripts, you will need to update them to match this change.

(@jpbede - #107578) (documentation)

JustNimbus

The following sensors have been removed from the JustNimbus integration since they’re no longer available through JustNimbus’ API:

  • Pump starts
  • Pump hours
  • Error code
  • Total replenished
  • Pump flow
  • Drink flow

The following sensors have been renamed:

  • Total saved (total_saved) -> Total saved (water_saved)
  • Total use (totver) -> Total use (water_used)
  • Maximum reservoir content (reservoir_content_max) -> Reservoir capacity (reservoir_capacity)

Automations or scripts using any of the removed or renamed entities should be updated. Once updated, the old entities can be safely removed.

(@kvanzuijlen - #99212) (documentation)

Litter-Robot

The services vacuum.turn_on and vacuum.turn_off were deprecated in 2023.11. Support for the deprecated services has now been completely removed.

If you are still using them, please adjust your automations and scripts and use vacuum.start and vacuum.stop instead.

(@jpbede - #107882) (documentation)

Lutron

The Lutron integration previously created fans as light entities. This has been changed to create actual fan entities instead.

If you have automations, scripts, scenes, or dashboards that used these light entities, you will need to update them to use the new fan entities.

(@wilburCforce - #107402) (documentation)

MELCloud

The daily energy sensors have been removed to prevent being throttled by the external API. This mostly affects ATW devices.

For ATA devices, this sensor is also removed. However, the total energy consumed (if your device supports that) remains available. The latter supports long-term statistics, providing insights into daily energy usage via the energy dashboard or statistic card.

(@vilppuvuorinen - #109832) (documentation)

Met Office

This integration has been disabled. The upstream libraries used by Home Assistant are not compatible with Python 3.12.

This compatibility issue has been reported upstream.

(@frenck - #108163) (documentation)

MQTT

MQTT sensor or binary_sensor configuration with an entity_category explicitly set to config will fail to set up. Maintainers should set the entity_category attribute to diagnostic or omit the config attribute.

Related developer blogpost

(@jbouwh - #107199) (documentation)


When an MQTT entity has a device name equal to the entity name or starts with the device name, this will no longer be corrected.

When entities like these are created, they will have device and entity names in the friendly name. Suppose the device name is omitted because it is the same as the entity name. In that case, the entity name attribute should be null in the JSON payload or YAML configuration.

Related developer blogpost

(@jbouwh - #107188) (documentation)


The support for MQTT vacuum entities with a legacy schema is removed after 6 months of deprecation. Users can use the state schema instead, which is now the default.

(@jbouwh - #107274) (documentation)

Proximity

The proximity entity (proximity.*) is deprecated and will be removed in 2024.8. It is superseded by sensor entities.

For each tracked person or device, one sensor for the distance and the direction of travel to/from the monitored zone is created. Further, for each Proximity configuration, one sensor that shows the nearest device or person and its distance and direction of travel to the monitored zone is created.

(@mib1185 - #108730) (documentation)

Renson

The start time of day and start time of night sensors have been replaced by time entities. If you used these sensors in automations or scripts, you will need to update them to use the new time entities.

(@jimmyd-be - #105031) (documentation)

RESTful Command

Call to RESTful command services will no longer silently fail and will raise an exception on, for example, timeout or decoding errors.

You could consider using continue_on_error for scripts and automations that use RESTful commands that are allowed to fail occasionally.

(@RoboMagus - #97208) (documentation)

Roborock

The service vacuum.start_pause was deprecated in 2023.8. Support for the deprecated service has now been completely removed.

If you are still using this service, please adjust your automations and scripts, to use vacuum.pause or vacuum.start instead.

(@jpbede - #107895) (documentation)

Sensors

Setting last_reset for entities with a state_class other than total is no longer supported. Please update your configuration if state_class is manually configured (for example, in templates or when using customize to override this attribute).

(@jpbede - #108391) (documentation)

Swiss public transport

The state value of the sensor is now a standardized timestamp. Further, all timestamps and durations in the additional fields are now also proper datetime/durations.

(@miaucl - [#12341064855]) (documentation)

TP-Link Smart Home

To prevent overloading the power strips, the energy data is now polled every 60 seconds. If you need to poll the data faster, please use an automation that calls the homeassistant.update_entity service.

(@bdraco - #104208) (documentation)

Traccar

The YAML configuration for the Traccar integration has been deprecated and will be removed in Home Assistant 2024.8.0. Your YAML configuration will be automatically imported to the new Traccar Server integration.

If you previously used the scan_interval option, this is not being imported. If you are in need of a custom polling interval, you can use an automation to define your own custom polling behavior. Learn more about that here.

(@ludeeus - #109226) (documentation)

Tuya

Tuya has provided an easier and improved login method for Home Assistant users.

Having a developer account with Tuya is no longer required; instead, you can scan a QR code with your Tuya Smart or Smart Life app to authenticate it with Home Assistant.

After updating to this release, Home Assistant will ask you to re-authenticate your Tuya Smart or Smart Life account using this new method.

(@frenck - #109155) (documentation)


The services vacuum.turn_on and vacuum.turn_off were deprecated in 2023.8. Support for the deprecated services has now been completely removed.

If still use them, please adjust your automations and scripts and use vacuum.start and vacuum.stop instead.

(@jpbede - #107896) (documentation)


Previously, Tuya would fall back to using the metric system if the temperature unit was not reported by a climate device. This behavior has been changed to use the default unit configured on your system instead.

(@DellanX - #108050) (documentation)

Webhooks

Since version 2023.7 you have been informed that the “local only” option of webhooks will become the default. With this release this change is now put into effect. Please, if needed, adjust your automation triggers.

(@jpbede - #107670) (documentation)

Withings

In withings, the unit of measurement of all duration-related sensors (for example, sleep, goal, and active time today) has been changed from measuring in seconds to measuring in either hours or minutes.

If you want to measure in a different unit, please change the preferred unit of measurement in the entity settings.

(@joostlek) (documentation)

Z-Wave

The default rounding of numeric sensors to two decimals has been removed.

We now let the device and driver decide what precision should be reported. This allows devices with greater precision to report accurately.

You can change the display precision in the UI for the sensor or use a template sensor if you want to change the precision.

(@MartinHjelmare - #107100) (documentation)


Set suggested precision to 0 decimals for voltage sensors with a native unit in V. This will uniform the display precision of voltage sensors where there otherwise seems to be a variety of precision reported from different devices.

If you want to change the precision, you can do that in the sensor options in the UI or with a template sensor.

(@MartinHjelmare - #107116) (documentation)


The Fan and Dry climate Preset modes have been removed after a period of deprecation. If you haven’t done so, you should update your automations or scripts to use the corresponding Dry and Fan HVAC modes instead.

(@jbouwh - #108124) (documentation)

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:

Farewell to the following

The following integrations are also no longer available as of this release:

  • Facebox has been removed. It is no longer possible to get API keys, and thus, it is no longer possible to use this integration. (@reedy - #107005)
  • Legrand Home+ Control has been removed as their API shut down in December. Use the Netatmo integration as an alternative to integrate your Legrand Home+ Control devices. (@jpbede - #107587)
  • Life360 has been removed. They are now actively blocking third-party access, including Home Assistant. The Home Assistant Companion app is a good and (above all) privacy-friendly alternative. (@pnbruckner - #107805)

All changes

Of course, there is a lot more in this release. You can find a list of all changes made here: Full changelog for Home Assistant Core 2024.2