Ooh boy, time flew this release cycle; it is time for 0.114 already!

Personally, I’m hardly even done implementing all automation features added
in the previous release. 😅

Ever since our Lovelace UI started as a beta, back in 2018, one of the most
requested features – arguably – is a dark mode. No wonder, as a dark mode is
added to software everywhere nowadays.

This release adds dark mode! @bramkragten didn’t stop there and added
color pickers for the main theme colors as well. I looked forward having it,
an easy way of having a bit of theming, without the need for themes.

This is by far the most noticeable feature of this release, mainly because it
is immediately apparent after the upgrade.

Meanwhile, the beta Open Z-Wave integration picks up speed in terms of
contributions, reports, fixes and improvements. I’ve been using it already,
and I love it. My Z-Wave network has never been better and more stable.
If you haven’t tried it yet, I would highly recommend doing so. There is a nice
community guide
on how to test it without switching over.

Besides the listing below, 0.114 may feel a bit “empty”, however, it isn’t.
It is packed with little things and fixes. The “All changes” section is
definitely worth a look this release.

Enjoy the release.


Dark mode and theme color pickers

We now have official support for dark mode. 🎉

We detect if your device is in dark mode; if that is the case, our default theme
will go dark. You can override the automatic switching between dark and light
theme in your profile.

Furthermore, you can now also select the primary and accent color for the
default theme. We calculate all other colors to make sure everything matches
and is readable.

Screenshot of the new dark mode theme settings
Screenshot of the new dark mode and theme settings.

So if you upgrade to Home Assistant 0.114, you are using the default theme
and your device is set to a dark mode; Please be aware that after upgrading,
you will get a dark theme by default in that case.

Also, when picking colors, make sure you choose a primary color that is
readable on both a light and dark background. For now, this is just a local
setting and has to be applied to every device.

For custom themes, there is a new option on the set_theme service call,
mode: 'dark'; this allows to set a theme that will be used when your device
is in dark mode.

Lastly, when using the set_theme service, the settings are now persistent
across restarts. So if you have an automation that calls set_theme on startup,
you don’t need it anymore. 😉

Automation & Scripts updates

In Home Assistant 0.113 we added tons of new
features to automations and scripts. This release contains some fixes for issues
discovered and reported, but also adds some smaller new features to extend it
even more.

First of all, the repeat and choose actions are now available when creating
automations or scripts via the UI.

Screenshot of the new automation features available in the UI
Screenshot of the new automation features available in the UI.

Sub-second precision has been extended and is now available in all
time-related notations. For example, you can now use 2.5 seconds/hours/minutes
or even use it in full time notations: 23:59:59.999.

The automation.turn_off service now accepts a stop_actions data parameter.
By default, when turning off an automation, any currently running automation
will be stopped. This new option allows you to turn off an automation
and optionally leave any currently active actions running.

Lastly, a small shortcut has been added to the time trigger, which now accepts
multiple time values.

  - alias: Example with multiple time values in a single time trigger
      - platform: time
          - "05:00:00"
          - "06:00:00"
          - "10:00:00"

Open Z-Wave (beta)

The Open Z-Wave (beta) integration is coming along nicely and others are
started helping out as well! A shout out to
@firstof9, @RobBie1221 and
@tradiuz for jumping in and helping out this release.

Some additional information is added to the UI for Open Z-Wave, you can now
see device information right from the device page and shows information like
the Z-Wave Node ID and other information about your Z-Wave device.

Screenshot of Z-Wave device information available in the UI
Screenshot of Z-Wave device information available in the UI.

Furthermore, RGB color support has been added to lights, and bugs have been
fixed using color temperatures and dimming. 💡

Lastly, unnecessary polling of devices has been reduced.

Yet another round of performance improvements

Did we tell you that @bdraco is unstoppable in his saga to improve the
performance and stability of Home Assistant? His train just keeps going!

0.114 is no exception and a lot of smaller performance and stability
improvements are made again.

A bit technical, maybe, but here is a small overview of the changes:

  • The internal device & entity registries are now indexed, and thus faster.
  • Setting up groups at startup is more efficient.
  • Reloading YAML configurations or checking your configuration is now quicker.
  • A context accompanies every event in Home Assistant (every trigger,
    automation, … has a “triggered by what and who”). These contexts are now
    created faster, which makes everything faster.
  • Tracking time pattern triggers are now scheduled on our event loop, which
    is far more efficient.
  • Processing of system logs is taken out of the main program loop, so it doesn’t
    interfere with things Home Assistant does for you.

Finally, if, for any reason, corruption is detected in the Home Assistant
recorder database (SQLite), the old database is moved and a new, fresh database
is created. This prevents issues during startup.

Honestly, the above isn’t even complete. 😅 Thanks @bdraco!

Share Diagnostics & Crash reports

With Supervisor 231, shipped with Home Assistant 0.114, we added a new option on
the System panel, to share diagnostics and crash reports with us anonymously.
This will allow us to find and fix problems.

The shared information is only accessible to the Home Assistant Core team and
will not be shared with others. The data does not include any private or
sensitive information and you can disable it in settings at any time you want.

This option is by default, of course, disabled. So, if you want to help to
project out, consider enabling this option in the Supervisor panel.

This service is sponsored by Sentry.io – Thanks a lot!

Other noteworthy changes

New Integrations

Six new integrations added this release:

New Platforms

The following integration got support for a new platform:

Integrations now available to set up from the UI

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

If you need help…

…don’t hesitate to use our very active forums or join us for a little chat.

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

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


The default sqlite database (home-assistant_v2.db) is now validated on startup
and if corruption is detected, the database is renamed to
home-assistant_v2.db.corrupt.{ISOTIME} and startup proceeds with a fresh

(@bdraco#37949) (recorder docs)

Google Assistant

A sync will be required for source selection to work after this update. The
keyword to select source will also have changed from “Set mode on TV to..”
to “Set input on TV to..”

(@elupus#35753) (google_assistant docs)


Due to the new 2FA endpoint, the YAML configuration is no longer supported.

In addition, due to some API changes, if you are upgrading from a previous
version, you will need to navigate to the integration page at startup and
re-configure Blink.

Your username and password will be imported, but you need to submit a 2FA token
(emailed to you by Blink) in order to continue setting up the integration.

(@fronzbot#38027) (blink docs)


TensorFlow has been upgraded to TensorFlow 2.

TensorFlow 1 object detection models are not compatible with TensorFlow 2,
therefore you’ll will need to walk through the setup documentation again and
choose a new model from the Model Zoo.

(@hunterjm#38384) (tensorflow docs)


A switch has been added to the Pi-hole integration. Because of the switch being
added, the pi_hole.enable service is removed.

The pi_hole.disable service remains in order to support disabling the service
for a given amount of time, but now it relies on the switch entity id instead
of the name set by the user, so the name field is removed.

With this change, a switch entity switch.pi_hole will be added if you
set up the integration with an API key and default name (Pi-hole).

Now, you can use switch.turn_on and switch.turn_off to enable and disable
the Pi-hole service permanently. To disable the service for a given time,
use pi_hole.disable with entity_id: switch.pi_hole and duration: 00:00:15.
To target all Pi-hole services, use entity_id: all.

(@shenxn#35605) (pi_hole docs)


The Volumio integration is now configured through the UI. If you previously had
it in configuration.yaml, please remove it and configure through the
Integrations panel.

(@OnFreund#38252) (discovery docs) (volumio docs)

Honeywell Total Connect Comfort (evohome)

The hvac_action() property has been removed from Evohome zones as this data
was inaccurate – the algorithm used to provide this data was not
reliable, and there is no reasonable hope for a satisfactory alternative.

You will have no indication if a zone is actively calling for heat
(CURRENT_HVAC_*), nor if the heat source is currently active. However,
you will continue to have the hvac_mode() property, which will indicate if the
heating is enabled, or not (HVAC_MODE_*).

This will be most obvious by the absence of this information in the UI.

There is no intervention required for this breaking change.

(@zxdavb#38244) (evohome docs)


The unique id is being updated for existing sensors. You will need to clean up
the stale entity from the entity registry via the GUI.

(@ChrisMandich#38138) (flume docs)


The meteo_france integration moved from a web scraping architecture to a
API-based architecture. With this major refactor the following change could

  • The thunder chance entity is no longer available (no longer in the API results).
  • The next rain entity state is now a datetime instead of a delay.
  • next rain attributes have been simplified.
  • weather_alert: only one entity created by department. Was by city in the
    previous version and could create duplicates.
  • weather alert attributes have been simplified.
  • weather platform is showing the current day forecast in the first position of
    daily forecast (instead of tomorrow forecast).

(@oncleben31#37737) (meteo_france docs)


When you have multiple Bond hubs, each with its own set of devices, those
devices have IDs that the Bond integration uses to generate unique entity IDs
in Home Assistant. Unfortunately, those IDs are only unique within the hub.
So it is possible that unique IDs generated for entities from different hubs
will not be unique and collide.

This has been fixed by prefixing device ID with a hub ID and the resulting ID
is now truly unique. After restarting you will see each bond entity twice.
One which is live with the new unique ID. The second which is disabled with old
unique ID.

How to make it work:

  1. Remove the disabled entity (note its friendly ID, e.g., cover.shades)
  2. Optionally rename the generated friendly ID on the live entity, so that your
    automations continue to work. For example, your live entity will have ID
    cover.shades_2. Rename it to cover.shades.

(@prystupa#38496) (bond docs)

Hi-Link HLK-SW16

The hlk-sw16 entity ids will change upon update and the old entities will need
to be removed manually.

(@jameshilliard#37190) (hlk_sw16 docs)


The Slack attachments framework was deprecated in 0.108.0 and is now officially
removed. The blocks framework should be used instead.

(@bachya#38139) (slack docs)


Per ADR-0010, IQVIA can no longer be configured via YAML and must be configured
from the UI. Existing IQVIA users have already had their integrations imported
and only need to remove IQVIA-related items from configuration.yaml.

(@bachya#38141) (iqvia docs)

Shell Command

Processes spawned from the shell_command integration (the command executes)
now timeout after 60 seconds instead of running forever.

(@bdraco#38491) (shell_command docs)

Command Line

The command_line cover, notify and switch platforms, now timeout after 15
seconds (by default) instead of blocking forever.

(@bdraco#38497) (command_line docs)

Time pattern listeners

If time abruptly moves forward or backward, time pattern listeners will only
be adjusted after they were previously scheduled to fire.

This avoids the need for every time pattern listener to check for this every



Support for legacy logbook events created before 0.112 is removed.

(@bdraco#37822) (logbook docs)

Automation `turn_off` service

This change is actually not a breaking change, but it is making up for the fact
that a previous change was that was not marked as such.

It turns out there are valid use cases where an automation needs to be turned
off, so that it will not trigger, but where previous runs may still be active
that should be allowed to complete. For example, an automation that performs a
reasonably lengthy procedure that should not be aborted midstream, otherwise
it would leave the system in an undesirable state. Or a queued automation that
needs to handle all previous events, some of which may not be complete when
the automation is turned off.

To accommodate for these use cases, this release introduces adds an optional
parameter to the automation.turn_off service, namely stop_actions, which
defaults to true. It controls whether or not active runs should be stopped when
the automation is turned off.


Farewell to the following

All changes

Click to see all changes!