2022.5: Streamlining settings

Comments

Home Assistant Core 2022.5!

And, as often said: “All things seem possible in May!”. Well, possibilities we have for you this last month of spring.

The most visible thing this release is the next iteration of the settings menu, of which the result, to me personally, makes tons of sense. It took me a bit to get used to, but honestly I like it! 🤩

Meanwhile, at Nabu Casa, they released annual subscriptions for Home Assistant Cloud worldwide (except for Canada, the UK, and the EU, they will follow soon with local currency support).

I’m also very excited to present you with a whole lot of new powerful automations and scripts features! Some for the UI, but there are some real game changers in there that our YAML community will love! 🤖

Enjoy the release!

../Frenck

Reorganized settings menu

A couple of releases ago, we started reorganizing the configuration menu, and this release is bringing the next big step in that reorganization.

The goal is to have everything in a single logical place, and after user tests and many discussions in frontend and UX channels, this is what the menu now looks like:

Screenshot showing the new configuration menu structure

Most notably, it’s been renamed from “Configuration” to “Settings”, and we have a brand new “System” submenu (shown on the right in the above screenshot).

Are you running Home Assistant OS? The Supervisor has been fully merged into the settings menu to provide a seamless/unified experience. It removes weirdness like having a network section in one menu and the Supervisor section.

Blueprints moved to the automations & scenes section, and by popular request: Helpers have moved to the devices & services page.

YAML configuration tools have a new home in the developer tools, a more logical place for YAML configuration checks and reloading.

You might notice some of the new menu items are fairly empty. For those menus, like “Storage” and “Hardware”, we have more content planned soon!

Just to be sure, we have added a list of changes to the backward-incompatible changes section; please check those out in case you are missing something.

Find entities even quicker than before

Looking to access that one entity quickly? But it isn’t on your dashboard?

The Quick Bar helps with that; just press e anywhere you are in Home Assistant. This release adds a quick search button to the dashboards as well, so you can look up and access any entity you need, even when it is not on your current dashboard.

Screenshot showing the new quick search button

To conserve space, the search is not shown on mobile devices; but is available via the overflow menu (the three dots in the top right).

New automation & script features

This release is packed with new automation & script features! Some have been added to the UI, and others are advanced features that are only available when using YAML.

One thing almost all these changes have in common: They have been requested and voted for by the community in our Feature Requests forum.

If-then

When we introduced the Choose action, our goal was to provide a structure that allowed for other action sequences selectively based on conditions.

While this structure is very flexible and extensive, there was still a desire for an if-then(-else) structure that is small, simple, compact, and clean. This release brings you just that.

The new if-then action is available via YAML and via the UI using automations and scripts editors.

Screenshot showing If-then

More information can be found in the scripts documentation.

Calendar trigger

@allenporter gave the Calendar integration (and the Google Calendars integration) lots of love. In the process, a new Calendar trigger was added, which is available for use in your automations.

Screenshot showing the new calendar trigger in the UI The new calendar trigger is available in the automation editor.

This brand new trigger is slightly more flexible than the (previously only other option) state trigger. It is available for automations in YAML as well, and the trigger provides lots of trigger variables you can use in your templates.

More information can be found in the Calendar integration documentation.

For each

We had several options available to repeat a group of actions. For example, repeating based on a count, while a condition passes, or until a condition passes.

These are very powerful, but repeating a sequence for each item in a list was also requested and voted for. This release adds: For each.

This is an advanced feature and is only available for use in automations written manually in YAML. Here is an example that sends out two notifications in different languages:

repeat:
  for_each:
    - language: English
      message: Hello World
    - language: Dutch
      message: Hallo Wereld
  sequence:
    - service: notify.phone
      data:
        title: "Message in {{ repeat.item.language }}"
        message: "{{ repeat.item.message }}!"

Each item in the list will be run against a sequence of actions, and the item is available as a variable you can use in your templates. The items you can provide to for_each can be mappings, lists of just strings, and even complex templates that provide a list as a result.

More information can be found in the scripts documentation.

Disable any trigger, condition, or action

Sometimes, you may want to disable a specific trigger, action, or condition, whether this is for testing, a temporary workaround, or any other reason.

In YAML, you’d comment out parts of your automation, but if you wanted to do that in the UI, the only option you have is to delete it from the automation or script.

In this release, we added support for disabling a trigger, action, or condition; without the need for removing it or commenting it out! A disabled trigger won’t fire, a disabled condition always passes, and a disabled action is skipped.

Screenshot showing a disabled condition in a UI automation

More information can be found in the disabled Triggers, Conditions, and Actions documentation.

Continue on error

An automation runs a sequence of actions. One of the questions we often see/read/get is: “If one of the actions fails, why does the whole automation stop?”

Good question! To answer this, we have added: Continue on error.

It allows specific steps in an automation or script sequence to fail without interrupting the rest of the sequence.

This advanced feature is currently only available for automations and scripts written in YAML. The following example shows an automation action that will always run the second action, even if the first action fails with an error:

action:
  - alias: "If this one fails..."
    continue_on_error: true
    service: notify.super_unreliable_service_provider
    data:
      message: "I'm going to error out..."

  - alias: "This one will still run!"
    service: persistent_notification.create
    data:
      title: "Hi there!"
      message: "I'm fine..."

More information can be found in the scripts documentation.

Stopping a script or automation

You can now stop a script or automation halfway using the Stop action. Combined with the previously mentioned new If-then action, this can be used to stop an automation or script conditionally.

For example, this can be helpful if you want just part of an automation to run when you are home and run it at full when you are away.

This feature is available both via the UI and YAML.

Screenshot showing the new stop action

More information can be found in the scripts documentation

Parallelizing actions

This release introduces a highly advanced feature that provides a way to parallelize actions.

By default, all actions in Home Assistant run sequentially. This means the next action is only started after the current action has been completed.

Running in serial is not always needed, for example, if the sequence of actions doesn’t rely on each other and order doesn’t matter. For those cases, the parallel action can be used to run the actions in the sequence in parallel, meaning all the actions are started simultaneously.

automation:
  - trigger:
      - platform: state
        entity_id: binary_sensor.motion
        to: "on"
    action:
      - parallel:
          - service: notify.person1
            data:
              message: "These messages are sent at the same time!"
          - service: notify.person2
            data:
              message: "These messages are sent at the same time!"

This feature is partly available via the UI; however, as said: This is quite a powerful and advanced feature, and it comes with caveats. Be sure to check out the script documentation on parallelizing actions before deciding to use it.

Using a single state trigger for multiple entities

If you write automations in YAML, you are probably already aware of the ability to trigger on multiple entities in a single trigger; it has been around for quite some time.

And now also available in the UI. A small addition that might help you cut down the length of your UI-managed automations.

Screenshot showing multiple entites in a single trigger from the UI.

Trigger on not matching to/from states

This is a YAML only feature we have added to the state triggers: Triggering on not matching to/from states. Yes, you read that correctly. When it not matches it triggers.

Instead of from, you can now use not_from and instead of to, you can now use not_to. This example trigger will only trigger if the state was previously not “unavailable” or “unknown”:

trigger:
  - platform: state
    entity_id: light.living_room
    not_from:
      - "unavailable"
      - "unknown"
    to: "on"

More information can be found on the state condition documentation.

Shorthand notation for logical conditions

A neat little YAML feature @thomasloven added can make your YAML-based automations and scripts looks significantly cleaner.

Logical conditions (also known as and, or, not) now have a shorthand notation. Some example pseudo code to show them all:

or:
  - <condition>
  - and:
    - <condition>
    - <condition>
  - not:
    - <condition>

In the above <condition>, of course, needs to be replaced with an actual condition, but the short new syntax of or, and, and not is clearly visible.

More information can be found on the condition documentation.

Gauge card segment colors

An excellent addition by @Netzwerkfehler is the ability to freely define the number of segments, and their colors, of the gauge card!

Screenshot of the gauge card with multiple colored segments. Screenshot of the gauge card with multiple colored segments.

Helpful if you’d like to define upper and lower sensor limits on your gauge, as shown in the example above. The configuration example used for the above screenshot can be found in the Gauge Card documentation.

Database optimizations

The last release focused on reducing the size of the database and optimizing the writing of data to the database.

While there are some additional optimizations in this release to further reduce the amount of data that needs to be written, in this release, we focused on how often data is read from the database and optimizing its scale for larger setups.

This release is for you if you have many sensors generating statistics, as compiling statistics now takes 30-100x less time.

Are you using the History Stats integration? The number of database queries needed for most sensors with a fixed start time is 99% less.

We have made additional improvements to the history APIs to speed up retrieving from the database, reducing API response times by 15-35% on average.

Finally, we have reduced the memory used during database migrations to smooth future migrations and are now automatically repacking your database once a month to keep things tidy.

Update entity updates

In the previous release, we introduced update entities. It was a well-received concept, and we added a couple of improvements to it.

Almost all feedback we got involved “Skipping an update”-related functionality. Can I unskip an update? How to see which updates I have skipped?

To help with these, we added a dedicated settings menu for updates. It provides an overview of all pending updates and provides the ability to view updates you have previously skipped.

Screenshot showing the new updates page in the settings menu

Skipped updates can now be “unskipped” again too! This works in the same way as skipping an update but can also be done in automations using this new service.

Two new integrations have implemented update entities this release:

And finally, if you’d like to receive update notifications: The “Update notifications” Blueprint by @mdegat01 has been getting quite some attention in the community this month!

Insteon control panel

In case you have missed it, the US smart home company Insteon went out of business and shut down its cloud services.

Read more about it in our dedicated blog post.

As Home Assistant works with Insteon locally, we have seen quite a few new users joining our community; so:

👋 Hello, dear Insteon user. We have a new control panel for you!

Screenshot showing the new Insteon control panel The new Insteon control panel allows you to manage your Insteon devices.

This new control panel allows you to manage your Insteon device from Home Assistant directly, just like you would have done previously with the Insteon application.

Thanks for you hard work on this Tom Harris!

Template selector

A new selector is added: The Template selector.

This new selector can be used in, for example, Blueprints, scripts fields, or in a (custom) integration. It provides a nice code editor with Jinja syntax highlighting and entity auto-completion.

We have deployed it in the automations and scripts editor too! So, you now get this editor when editing your template conditions or wait for template actions in the UI.

Screenshot showing the template editor

Other noteworthy changes

There is much more juice in this release; here are some of the other noteworthy changes this release:

  • Every script now automatically gets a unique ID, which means you can edit their name, icon and assign them to areas straight from the UI! Thanks, @frenck!
  • If you run the Z-Wave JS server manually in, for example, a Docker container, it will now be automatically discovered on your network. Thanks @raman325!
  • Template entities now have a this variable available, which is a reference to the state of the template entity itself. Awesome work @akloeckner and @emontnemery!
  • Running Home Assistant Core or Container? @frenck added the backup.create service to the backup integration allowing you to create an automation to create backups on a schedule.
  • @sisimomo added Markdown support to Blueprint input descriptions, allowing you to add links to, for example, documentation in your Blueprints.
  • The Shelly integration now supports authentication for the second generation devices, thanks @thecode!
  • State conditions with multiple entities can now also match if any of the entities match the condition (instead of all), thanks @frenck!
  • Sonos now has a favorites sensor so that you can access and use your favorites in your automations, scripts, and templates. Thanks @jjlawren!
  • @dmulcahey added support for configuring the power-on state of devices that have this configuration option to ZHA. Nice!
  • Sensors now have a new device class available: “duration”. Thanks, @bdraco!
  • The output of Media Selector can now be directly used with play media service calls in your Blueprints. Awesome, @emontnemery!
  • @raman325 added frontend support for Sirens, so you can actually turn one on from the UI. 🚨 Alarming news @raman325!
  • @frenck added a persons attribute to zones, which indicates who is currently in a zone.
  • When customizing the device class / “Show as” of an entity in the UI, you can now set it to nothing/empty as well. Thanks, @zsarnett!
  • @rdfurman Added support to the Honeywell Total Connect Comfort (US) integration for outdoor sensors. Awesome!
  • Philips TV now provides a switch to turn on/off the “Ambilight+Hue” syncing (if your TV model supports that). Thanks, @bramstroker!

New Integrations

We welcome the following new integrations this release:

Integrations now available to set up from the UI

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

Release 2022.5.1 - May 5

Release 2022.5.2 - May 6

Release 2022.5.3 - May 8

Release 2022.5.4 - May 12

Release 2022.5.5 - May 18

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

Below is a listing of the breaking change for this release, per subject or integration. Click on one of those to read more about the breaking change for that specific item.

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:

  • Arlo has been removed. It was in a broken state for a long time caused by authentication changes upstream. (@anaisbetts - #70330)
  • Digital Loggers has been removed. It relied on web scraping, which is not allowed for a Home Assistant Core integration. (@tkdrob - #69939)
  • Updater was previously deprecated and has been removed. Use the Version and Analytics integrations as a replacement. (@frenck - #68981)

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 2022.5