2024.12: Scene you in 2025! šŸŽ„

Home Assistant 2024.12! šŸŽ„

Holidays are coming, and it is time for the last release of the year! šŸŽ‰

2024 has been a crazy year for Home Assistant. Not just in terms of features like drag-and-drop dashboards, organization capabilities like labels, and the countless improvements to our voice efforts. But also the founding of the Open Home Foundation, and even more in the growth of our lovely community as weā€™ve risen up to become the #1 open source project on GitHub! ā¤ļø

However, the year ainā€™t over yet! This month, we want to learn about all your ā€œWhat the heck?!ā€ moments with Home Assistant. Tell us about any little annoyances, bugs, ideas, or suggestions. You can read all about it in the WTH announcement blog, or join the conversation on our WTH forums!

Honestly, the biggest announcement of the year has yet to come thoughā€¦ šŸ¤« Iā€™m pretty sure it is voice hardware related. šŸ˜‰ So make sure you arenā€™t missing the live stream on 19 December! šŸ“ŗ You will not be disappointed! šŸŽ

Before you check out everything in this release, I just want to close this year with a big thank you to every single person in our community, which includes you!

Thank you for using Home Assistant! ā¤ļø

Happy holidays! And for the last time in 2024: Enjoy the release!

../Frenck

Improved scene editor experience

ScenesScenes capture the states you want certain entities to be. For example, a scene can specify that light A should be turned on and light B should be bright red. [Learn more] are a great way to set the mood in your home. They allow you to capture the state of your devices at a specific moment and restore it later, using a button on your dashboard, an automation, or even a voice command.

One of the common frustrations with editing scenes in Home Assistant is that it would immediately activate and apply the scene if you opened the scene editor. Not the best experience if you are doing some midnight tinkering and accidentally activate a scene that turns on all the lights in the house, waking up everyone. šŸ˜…

@karwosts & @marcinbauer85 to the rescue! šŸ¦øā€ā™‚ļø As of this release, the scene editor has two modes. A review mode and an edit mode.

The improved scene editor now has a preview mode, which is shown in this screenshot.

The ā€œreview modeā€ is how your scene will open, and it will show you the scene as it is currently set up, but it will not apply it. You can then switch to the ā€œedit modeā€; only then will the scene activate, allowing you to adjust the actual scenery and snapshot it again once you are happy with the changes.

Additionally, if you preferĀ YAMLYAML is a human-readable data serialization language. It is used to store and transmit data in a structured format. In Home Assistant, YAML is used for configuration, for example in the configuration.yaml or automations.yaml files. [Learn more], you can edit scenes directly from the scene editor by selecting ā€œEdit in YAMLā€ from the three-dotted overflow menu in the top right corner.

Voice

It has almost been two years since we started our journey into building our very own open source voice assistants, with the goal of letting users control Home Assistant in their own language.

Today, we are getting even closer to the finish line. Not just with the features that ship in this release, but you might have heard about our voice hardware that is coming soonā€¦

With some help from Santa šŸŽ… and his elves, we have prepared a product launch YouTube live stream on 19 December 2024, at 20:00 GMT / 12:00 PT / 21:00 CET!

Curious? Be sure to join the live stream, hit like šŸ‘, subscribe to our channel, and the little bell šŸ”” to get notified when we go live! You really donā€™t want to miss this one!

But before we get there, letā€™s dive into the features that ship in this release!

Let your voice assistant fall back to an LLM-based agent

Exactly 6 months ago, we bridged the gap between our default conversation agent and the wonderful (and scary) world of LLMs. We allowed you to experiment and let an LLM-based conversation agent control your home instead of relying on our built-in sentences.

This choice was an interesting first step. LLMs are generally much better at interpreting natural language and more knowledgeable about the world than our default agent. However, they are often slow and/or expensive. And letā€™s face it: Even if the demos are cool, 90% of the commands we say in our homes are simple: ā€œTurn this onā€ or ā€œTurn that offā€.

Today, weā€™re finally allowing users to mix these worlds. Starting from this release, you can set up a voice assistant that targets our fast, community-driven conversation agent first and only falls back to an LLM-based agent if no matches are found.

Dialog showing the Assist pipeline configuration, showing the new option to prefer handling commands locally.

This allows you to mix the pros of both worlds with almost none of the cons.

Specific known commands will be processed locally and extremely fast, and the power of an LLM will only be used for more complex queries that Home Assistant does not natively understand.

Language leaders are accelerating the pace

It is no secret: our voice hardware will be revealed on 19 December 2024. Language leaders have already got their hands on the device, and are working extremely hard to polish support for their language.

The number of contributions to ourĀ intents repositoryĀ (where we store the supported sentences) skyrocketed during the last month, which we all truly appreciate. More and more languages are becoming usable or even complete! You can follow the progressĀ here.

We wonā€™t list them all, but rest assured, someone is likely working hard to ensure your native language works seamlessly, so you can use it comfortably at home.

A faster voice experience

Our default conversation agent was built from the ground up to match a sentence to its underlying intention extremely fast and on cheap hardware.

Release after release, we added more use cases and sentences to Home Assistant, and our sentence-matching logic became slower and slower. In some languages, a non-matching sentence could take more than 15 seconds to process!

This release adds a lot of love to this matching logic; we completely reengineered the way we match sentences. On top of that, language leaders spent some time reducing the complexity of their sentences. Some languages saw a 99% reduction in the number of possible combinations!

The results speak for themselves:

Revised Integration Quality Scale

The Integration Quality Scale (IQS) is a way we classify the ā€œqualityā€ of an integration. It gives users an idea of what to expect from an integration. You might have noticed our IQS indicator listed on each integration documentation page.

The scale was initially introduced in 2018 and aimed more at the technical side and code of an integration back then. Over the years, it didnā€™t really evolve with the rest of Home Assistant and the general expectations of our community. It was time for a change!

Over the last few months, we have worked with the community to revise and improve the scale. Involving not just our community developers but also documentation writers, user experience designers, and anyone interested in the community.

As a result, the new Integration Quality Scale is not just focused on the code but even more on the overall user experience. It is now a more holistic view of the integration, and we hope it will help everyone make better decisions about what to use in their homes.

The integration quality scale is also shown in the Home Assistant UI now. The image shows the HomeWizard Energy integration scoring platinum on the new integration quality scale.

We now have a total of 4 scaled tiers:

  • šŸ„‰ Bronze: The new minimum set of requirements weā€™ve set for new integrations.
  • šŸ„ˆ Silver: Ensuring reliability and robustness of integrations.
  • šŸ„‡ Gold: Ensuring a gold standard user experience, including documentation.
  • šŸ† Platinum: The epitome of quality, supreme code quality, and optimal performance.

We also have four additional (non-scaled) special tiers:

  • ā“Ā NoĀ score: For integrations that are not yet scored against the new scale.
  • šŸ Ā Internal For integrations Home Assistant itself uses, like the automation engine.
  • šŸ’¾Ā Legacy For older integrations that canā€™t be set up through the UI.
  • šŸ“¦Ā Custom For custom integrations, as we canā€™t score those.

You can read all about these tiers, what they have been designed for, and a summary of their characteristics on our dedicated Integration Quality Scale page.

We sincerely hope this new scale will not just help our users, but also our community developers to understand what is expected by providing a clear path to improving their integrations. To help with that, we have now extensively documented every rule and requirement for each tier in our developer documentation.

Integrations

Thanks to our community for keeping pace with the new integrationsIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] and improvements to existing ones! Youā€™re all awesome. šŸ„°

New integrations

We welcome the following new integrations in this release:

Noteworthy improvements to existing integrations

It is not just new integrationsIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] that have been added; existing integrations are also being constantly improved. Here are some of the noteworthy changes to existing integrations:

Other noteworthy changes

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

  • @jpbede added a download snapshot button to the camera entity information dialog. Super nice! Thanks!
  • The UI now displays durations using a timer format (like 03:26:00) in natural language (3h 26min). Thanks @piitaya!
  • Support for new units of measurement has been added:
    • Units for area sizes (and conversions between metric and US). Thanks @mikey0000!
    • @jschlyter has added support for MW, GW, TW, GWh, and TWh. Nice!
    • ĀµV has been added as a unit of electric potential. Thanks @tr4nt0r!
    • Lastly, mL/s has been added as a unit of volume flow rate. Thanks @zweckj!
  • If you are editing an automation using YAML via our UI and you make a mistakeā€¦ you will now actually see the parsing error message in the UI. This is really helpful! Thanks, @karwosts!

Translations for units of measurement

Over the last few years, we have been working hard to make every little bit of Home Assistant accessible for everyone by providing translations for every part of the system. šŸŒ

However, we still have some edge cases, where we are not able to provide translations for everything. One of those edge cases is the units of measurement. šŸ“

Although units do not need translation (likeĀ Ā°CĀ orĀ kWh) in most cases, many sensors in a home might use specific and non-standardized units. For example, a sensor that measures the number of ā€œpeopleā€ in a home or one that tells you how many ā€œmoviesā€ are in your collection.

So, suppose you now have a sensor with a custom measurement unit, like the amount of ā€œmoviesā€ in your collection. In that case, integrations can now provide translations for those units. šŸŽ‰

Several integrations have already added translations for their units, including Jellyfin, Lyrion Music Server, Transmission, Pi-hole, QBitTorrent, NextDNS, Mastodon, and Mealie!

Weā€™ve upgraded to Python 3.13

The Python logo; Home Assistant now runs on top of Python latest 3.13 update

This release comes packaged with Python 3.13! šŸ

Wondering what that means? Python is the programming language that powers Home Assistant behind the scenes.

Why does it matter? Every new Python release brings improvements that we can tap intoā€”better performance, fewer bugs, and a smoother developer experience for our contributors. Plus, Python 3.13 offers a speed boost to Home Assistant overallā€”whatā€™s not to love? šŸš€

Running Home Assistant OS or using the Home Assistant Container? No sweatā€”weā€™ve got you covered. The upgrade to Python 3.13 is handled automatically. Just update Home Assistant as usual, and youā€™re good to go.

Easy, right? šŸ˜Ž

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

We do our best to avoid making changes to existing functionality that might unexpectedly impact your Home Assistant installation. Unfortunately, sometimes, it is inevitable.

We always make sure to document these changes to make the transition as easy as possible for you. This release has the following backward-incompatible changes:

Brother Printer

The unit of measurement for pages changed from p to pages.

This could potentially break use cases if it was used in templates where a state with a unit is used, such asĀ states('sensor.pages', with_unit=True).

(@bieniu - #131275) (documentation)

Ecovacs

Ecovacs devices not recognized by the library will no longer use the fallback vacuum. Instead, the device will not be added to Home Assistant, and a warning log will created.

(@edenhaus - #131525) (documentation)

Glances

The previously deprecated Glances v2 API has been removed. Upgrade to v3 or higher to continue using the integration.

(@gjohansson-ST - #131427) (documentation)

History Stats

After this change,Ā history_statsĀ in timeĀ orĀ ratioĀ mode will only count definitively known time-based recorded data.

Prior to this change, if the start of the time window was earlier than the oldest datapoint in the recorder, history_stats would count time using the assumption that an entity was in the first state it found since the beginning of time. This could lead to wild overcalculations when a switch was turned on after a long period of inactivity, and history_stats would assume it had always been on and calculate a huge value based on that.

(@karwosts - #126271) (documentation)

Jewish Calendar

To support Rosh Chodesh this creates a breaking change as the holiday sensor will return ā€œChanukah, Rosh Chodeshā€ when both of those days fall on the same date. If you have an automation expecting the ā€œChanukahā€ value, you must update it.

(@tsvi - #130456) (documentation)

QNAP

The QNAP sensors will no longer have the following extra state attributes:

  • memory_free
  • memory_percent_used
  • memory_size
  • memory_used
  • network_err
  • network_link_status
  • network_max_speed
  • network_rx
  • network_tx
  • status
  • system_temp
  • uptime
  • volume_percentage_used
  • volume_size_free
  • volume_size_total
  • volume_size_used

These extra state attributes were deprecated in Home Assistant 2024.6 and have now been removed. If you are using this in your automation or script, use the separate available sensors instead.

(@jbouwh - #130310) (documentation)

Spotify

The Spotify audio feature sensors have been removed since Spotify removed access for them, starting 27 November.

Additionally, featured and category playlists have been removed from the Spotify media browser since Spotify deprecated the API, starting on 27 November.

(@joostlek - #131754 #131758) (documentation)

Statistics

Previously the attributes of the entity states of the Statistics integration were only provided when they had a non None value. This has now changed so the attributes are always provided even with None values. You might need to modify your automations or scripts depending on whether these attributes are present or not.

(@gjohansson-ST - #129353) (documentation)

Stookwijzer

The Stookwijzer sensor has migrated to the new API provided by Atlas Leefomgeving. As a result, the reported states are slightly different.

Old versus new:

  • Blue (blauw) -> Yellow (code_yellow)
  • Orange (oranje) -> Orange (code_orange)
  • Red (rood) -> Red (code_red)

If you use the Stookwijzer sensor in your automations or scripts, you might need to adjust those for this change.

(@frenck - #131567) (documentation)

Templates

The this template variable which is available in some templatable helpers was previously based on the new state instead of the current state.

The change affects the following integrations, if templates use the this variable. The user might have to update their templates to reflect the above change using the value variable instead, which holds the new value.

  • command_line
  • rest
  • scrape
  • snmp
  • sql

(@gjohansson-ST - #130135)

Z-Wave

With this release, you will need to update your zwave-js-server instance. You must use zwave-js-server 1.39.0 or greater (schema 39).

  • If you use the Z-Wave JS add-on, you need at least version 0.9.0.
  • If you use the Z-Wave JS UI add-on, you need at least version 3.17.0.
  • If you use the Z-Wave JS UI Docker container, you need at least version 9.26.0.
  • If you run your own Docker container or some other installation method, you will need to update your zwave-js-server instance to at least 1.39.0.

(@MindFreeze - #129482) (documentation)

If you are a custom integration developer and want to learn about changes and new features available for your integration: Be sure to follow our developer blog. The following are the most notable for this release:

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.12