2021.3: My Oh My

Home Assistant Core 2021.3! And my oh My Home Assistant!

I’m super excited for this release! 13 Brand new integrations! Z-Wave JS is moving forward with an almost insane development speed; thank you all for jumping into it as well! 🎉

For me, this release is about two things. My Home Assistant and some super slick new UI features for everything related to service calls. What it is; is explained down below, but both are just a leap forward in: making things easier.

My oh my, enjoy this release!

../Frenck

My Home Assistant

Today we present you:

To be more helpful, we often want to link you to a specific page in your Home Assistant instance. However, each Home Assistant instance is hosted at a different URL. Yours might be http://homeassistant.local:8123, or something completely different.

My Home Assistant allows the documentation, forums, chat, weblogs, or any other website, to link you to specific pages in your Home Assistant instance, without knowing the URL of your instance.

The beauty of this? All the data is stored locally in your browser and My Home Assistant only redirects you to pages that provide you with information about your instance or help you start an action. Following a link from My Home Assistant will never make any changes to your instance.

Long story short! We can do a lot of helpful things with this, for example, the following buttons will bring your places on your instance:

But we can make buttons or links to a lot of screen, and even help you start a configuration for adding an integration, import a Blueprint, link to an add-on page, and a lot more!

Screen recording showing how My Home Assistant works Setting up a new integration on your instance, from the documentation using My Home Assistant.

Additionally, we have added a link/badge generator, so you can create your own links, for e.g., adding to a Blueprint on the Blueprint Exchange.

https://my.home-assistant.io/create-link/

Lastly, support for My Home Assistant with our apps is expected to be available soon! Android should be available via an update today and iOS will land soon.

New UI for service calls

This release adds a new user interface for doing service calls!

Screenshot of new call services in the Developer Tools Screenshot of the new UI in the services tab of the Developer Tools.

The UI may look familiar, as it uses the same UI parts as used by the recently introduced Blueprints. This new UI can be found in multiple places, that all have adjusted with a shiny new UI;

Not all service calls will show this slick new UI yet, as the integrations service descriptions need to be adjusted to with this. But, all common ones have been migrated already. Like doing YAML? Well, the good old YAML mode is available as well!

Suggested areas

Areas are becoming more and more useful in Home Assistant, and this release is helping out with putting them to use a bit!

Recently, it became possible to not only assign devices to areas, but entities as well. And now; Integrations can now suggest areas!

This means, if an integration knows about an area/room/location place it is in, it can suggest an area if the device isn’t in one yet. For example, the Hue integration can now suggest an area based on the Hue group it is in.

The following integration will now already suggest areas as of this release:

Fan speeds: 100%

Got an overhaul! Fans now work with speed percentages instead of the previous “low”, “mid”, “high”, “off”. This makes Home Assistant more interoperable with more fan brands and third-party assistants, like HomeKit.

Don’t worry, everything has been implemented with backward compatibility.

Screenshot of automation editor, showing the % fan speeds! Screenshot of automation editor, showing the % fan speeds!

Did you notice in the above screenshot, the automation editor is now wider? The layout has been adjusted to give you more screen real estate when creating automations.

Z-Wave JS update

Also this release the Z-Wave JS team has been very busy. Several new features have been added and many bugs squashed. Below you can read a summary.

We’ve introduced a protocol schema version in the Z-Wave JS server to allow older clients to connect and talk to a newer server. This prevents compatibility issues for the future!

Home Assistant Core 2021.3.0 will require Z-Wave JS server version 1.1.0. If you’re using the official Home Assistant add-on, the integration will automatically update the add-on if an older add-on and server version is encountered. Magic! If you’re not using the Home Assistant add-on to run the server you will need to update the server before updating Home Assistant Core.

You can now automate and change the configuration settings of your devices with the zwave_js.set_config_parameter service and create automations using the new zwave_js.refresh_value service, to update a device that doesn’t automatically refresh itself.

But there is more!

  • Garage doors (barrier) and similar covers can now be controlled.
  • Some heating valves and similar devices that can be set to multiple different values will now show up as number entities.

Flexible & variable automation triggers

We now support the use of variables and (limited) templates in automation triggers! This can be really useful, for example, when making Blueprints for MQTT based automations!

automation:
  trigger_variables:
    room: "living_room"
    node: "ac"
    value: "on"
  trigger:
    - platform: mqtt
      topic: "{{ room ~ '/switch/' ~ node}}"
      payload: "{{ 'state:' ~ value }}"

As shortly mentioned, the template syntax for trigger templates and variables are more limited; read more about this in the limited templates documentation.

Oversettelser i Supervisor panelet

Unless you are in the nordics, that title does not mean much, it’s Norwegian and translates to “Translations in the Supervisor panel”. Yes! We have now added translations in the Supervisor panel. 🎉

If you want to help translate that into your native language, join the frontend team on Localize.

But we did not stop there! Now add-ons can provide translation files for configuration options and network descriptions that are shown in the frontend.

Not enough? You want more? Okay then!

  • The communication between the frontend and the backend now relies on WebSockets, which allows the Supervisor to notify the frontend about changes.
  • For add-on authors, you can now use YAML instead of JSON for your add-ons configuration files.
  • New update dialog that will ask you to take a snapshot before you upgrade core/add-ons.
  • Better hardware support to cover more devices.
  • Passwords and secrets in add-on configurations are checked against known breaches with https://haveibeenpwned.com/

Screenshot of the new update dialog that asks for creating a snapshot Screenshot of the new update dialog that asks for creating a snapshot.

Other noteworthy changes

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

  • Shelly now supports battery-operated devices, thanks to @thecode!
  • You can now use the color homeassistant as a color_name in your light service calls, just because we can 😎
  • @emontnemery, added support for using alias to virtually any step in scripts/automations. This is really helpful when debugging and documents your sequences as well, as it annotates each step.
  • @emontnemery didn’t stop there, he also added support for enabling/disabling integration configuration entries! So you can, e.g., temporarily disable a whole integration.

Screenshot of disabling an integration entry Screenshot of disabling an integration entry.

  • Thanks to @Nixon506E, you can now set a transition time when activate Hue scenes.
  • In the States tab of the Developer Tools, there is now a small copy to clipboard button with each entity. Thanks, @KTibow!
  • @postlund added support for repeat, shuffle and volume stepping to the media player integration of the Apple TV integration.
  • @larena1 reduced the amount of rendering history charts cause, so that will speed things up! Thanks!
  • We now have a select selector! Great for adding dropdown choices to Blueprints, thanks @EPMatt!
  • @raman325 extended the Universal Media Player with a lot of new capabilities.
  • When adding a new integration, the UI will now show discovered devices for that integration as well! Thanks, @bramkragten!
  • We updated CodeMirror to the latest version, which provided the YAML code editors in our UI. It should now be better, faster and has improved support for mobile devices.

New Integrations

We welcome the following new integrations 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:

Release 2021.3.1 - March 5

Release 2021.3.2 - March 5

Release 2021.3.3 - March 8

Release 2021.3.4 - March 12

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.

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.

Custom integrations: Version warning

Custom integrations now require a version key in their manifest file, this also means that all custom integrations now require a manifest file.

If you are using a legacy custom integration like custom_components/awesome.py this now needs to move to custom_components/awesome/__init__.py so you can add custom_components/awesome/manifest.json to it.

For more information about integration, manifests have a look here: https://developers.home-assistant.io/docs/creating_integration_manifest

For now, this will create a warning on startup. But this will eventually be blocked from loading if it’s missing a version in the manifest.

If you see these warnings, please report the issue with the author of that custom integration.

(@ludeeus - #45919)

Fan

The fan entity model has changed to split named speeds into percentages in the range from 0 (off)-100 and preset modes.

Why change?

This change allowed us to expand the number of supported speeds to accommodate additional fan models in Home Assistant.

We had 3 fan speeds and that worked great as long as the fan had no more than 3 speeds.

Over time we received a number of requests to add fans with 4, 5, or even more speeds and preset modes. This put us in the difficult position of having to reject this support because the underlying fan model didn’t support it.

Percentages were chosen because they can represent up to 100 speeds which should accommodate all fans. Additionally, it’s a lot easier to ask your voice assistant to set the fan to 20% then remember that medium-low is actually low-medium or have to learn and remember how to say the speeds for every fan model you want to control.

What to change?

Calls in automations and scripts to fan.set_speed should be replaced:

  • Calls that set a speed should use fan.set_percentage.
  • Calls that set a preset mode should use fan.set_preset_mode.

The following speeds existed in core integration and will now be automatically identified as preset modes: auto, smart, interval, idle, and favorite.

Both of the new calls are backward compatible.

Calls in automations and scripts to fan.turn_on that use the speed attribute should be switched to use the percentage or preset_mode attribute once the underlying integration has been updated to support it.

All core fans have been updated to ensure that calls to the fan.turn_on service map percentage or preset_mode to speed for backwards compatibility.

(@bdraco - #45407) (fan docs)

Template: Fan

Template fans have been updated for the new entity model that uses a percentage for the speed.

The following configuration options have been deprecated: speed_template, set_speed, and speeds.

The replacement options are percentage_template and set_percentage. There is no replacement for speeds since the percentage is always from 1-100 along with 0 for off.

(@bdraco - #45478) (template docs)

Hyperion

Hyperion has fully transitioned to configuration via UI. YAML configuration has been removed. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@dermotduffy - #45690) (hyperion docs)

Nuki

The Nuki integration is now configurable via the UI. The YAML configuration is now deprecated.

You existing YAML configuration will be automatically imported on upgrade and can be safely removed from your YAML configuration after upgrading.

(@pree - #45664) (nuki docs)

CalDAV

For CalDAV custom calendars, now only matching events are shown in the calendar frontend, instead of all events for this calendar.

Although, this is technically a bugfix, if you didn’t notice it before, it might now surprise you.

(@inytar - #45701) (caldav docs)

Synology DSM

All CPU-related sensors were named with “Load” which is not correct because there is a difference between CPU load average and CPU utilization.

Units have been corrected.

Any automation that consumes this data may need to be updated.

(@mib1185 - #45500)

LG Soundbar

If discovery is used the entity will get a new entity_id derived from the hostname of the soundbar. This means the entity_id can not be changed anymore since there is currently no way to get a unique_id from the device.

(@bernimoses - #42044) (lg_soundbar docs)

MySensors

MySensors has fully transitioned to configuration via UI. Existing YAML configuration is automatically migrated and imported, and can now safely be removed from your configuration files after upgrading.

No changes to YAML are applied after the migration has happened. If you need to change anything, use the frontend.

(@functionpointer - #45421) (mysensors docs)

MQTT: Covers

MQTT cover value_template is deprecated to use for extracting position, support will be removed in Home Assistant Core 2021.6.

Instead of using value_template, position_template should be used.

MQTT cover tilt_invert_state is deprecated, instead tilt_min and tilt_max should be used. Support for tilt_invert_state will be removed in Home Assistant Core 2021.6.

(@thecode - #46059) (mqtt docs)

Cameras and Streams

Removes the internal stream components record service.

This service is meant to be used internally only by camera so this is not expected to be a problem in practice as you should be using camera.record instead.

(@allenporter - #45431) (camera docs) (generic docs) (nest docs) (stream docs)

HTTP: base_url

The HTTP base_url URL setting was marked deprecated in Home Assistant Core 0.110 and replaced by the new internal & external URL settings that are available in the UI.

This release removes the fallback logic to the old base_url setting. If you still have an base_url configured in the HTTP section of your YAML configuration, please remove it.

(@frenck - #46316)

MQTT: Lights

The MQTT light with template schema will now send a float instead of an int with the transition key.

Lights that require an int instead of a float can restore the original functionality by using the following in the template for specifying the transition:


(@kangaroomadman - #46385) (mqtt docs)

Philips TV

Configuration via YAML is now deprecated and you existing YAML configuration will be automatically imported into the UI on first run. If your TV is not running on first start, you will need to complete the configuration from integration screen once your TV us online.

The previous turn_on_action will not be imported, and must be re-created as a device trigger automation.

(@elupus - #45784) (philips_js docs)

ASUSWRT

The legacy device tracker DeviceScanner was replaced with the new device tracker implementation ScannerEntity.

You should remove references to platform asuswrt in device_tracker section in your YAML configuration and update person device tracker with the new entity.

The YAML key dnsmasq, interface and require_ip now are managed as integration options. The values present in YAML are imported in the options the first time that the integration is loaded.

All sensors are initially created as disabled and can be enabled from ASUSWRT device configuration instead of using YAML configuration.

(@ollo69 - #46468) (asuswrt docs)

Keenetic NDMS2 Routers

Keenetic NDMS2 Routers are now configured and managed from the UI. Existing YAML configuration will be automatically imported and can be safely removed after upgrading.

The upgraded platform also adds:

  • Entities and devices manageable from UI.
  • Binary sensors for router connection status.
  • Support for monitoring multiple interfaces.

(@foxel - #38353) (keenetic_ndms2 docs)

Automations

If an automation trigger template already renders as true on Home Assistant Core startup, it will no longer trigger at startup. This bug fix prevents unintended triggers of automations as startup, but might cause a different behavior than before.

(@amelchio - #46423) (template docs)

Scripts and automations are now more careful about reporting problems with conditions. For example, a state condition that references an unavailable entity will log a message warning about the problem. Depending on the circumstances when such errors happen, the flow of the automation (i.e., stop/continue) might end up different from before.

(@amelchio - #46838) (automation docs) (homeassistant docs)

Xiaomi Miio

Xiaomi Miio Switch, and Vacuum platforms should now be set up using the UI, please remove the old YAML configuration from your configuration file.

They are now automatically discovered, if not, click Configuration in the sidebar, then click Integrations and then click the + icon in the lower right and find Xiaomi Miio.

Or click:

Select the option “Connect to a Xiaomi Miio Device” and click submit, follow the setup instructions.

(@starkillerOG - #46179 #46669) (xiaomi_miio docs)

HomeKit

HomeKit pairings and accessory IDs from Home Assistant Core version 0.109 and earlier are no longer migrated on upgrade.

Users upgrading directly to 2021.3 from 0.109 and older should upgrade to 2021.2 first if they wish to preserve HomeKit configuration and avoid re-pairing the bridge.

This change does not affect upgrades from 0.110 and later.

(@bdraco - #46616) (homekit docs)

Google Assistant

Requests for closing/opening covers fully from Google Assistant will now use close/open service instead of set_postion service. This a a revert of an unexpected breaking change.

(@elupus - #46602) (google_assistant docs)

Habitica

Habitica has fully transitioned to configuration via UI. Existing YAML configuration is automatically migrated and imported, and can now safely be removed from your configuration files after upgrading.

(@leikoilja - #38910) (habitica docs)

SSDP

SSDP searches now binds to 0.0.0.0 instead of each interface separately. Everything was still discovered in testing on a server with multiple interfaces.

(@bdraco - #46554) (ssdp docs)

Z-Wave JS

Minimum required zwave-js-server version is now 1.1.0. You need to run this server version at mimimum for the integration to work.

(@marcelveldt - #46983) (zwave_js docs)

Bond

Support for bond devices with up and down lights has been added. Previously, if the device had two lights, only a single light entity would be created that would not function properly. The functional light entity will need to be manually removed.

(@bdraco - #46233) (bond docs)

KNX

Weather entity: Renamed expose_sensors to create_sensors to prevent confusion with the KNX expose_sensor function.

(@farmio - #46809) (knx docs)

Honeywell Total Connect Alarm

To support user equipment that requires the entry of a usercode in addition to username and password, now all users must configure a usercode.

This can be done by updating the integration in the User Interface via Configuration > Integrations.

The use of YAML configuration is no longer supported.

(@austinmroczek - #39199) (totalconnect docs)

Tado

Polling interval of 15 seconds causes high load on Tado servers and does not provide enough value to warrant it. Tado plans to introduce a rate limit to prevent such misuse of the API, therefore the polling interval needs to be increased to make sure the integration works well in the future.

(@macrosak - #46915) (tado docs)

LiteJet

LiteJet is now configured via the UI. Existing YAML configurations will automatically be imported and can be removed after completing the upgrade.

LiteJet’s include_switches YAML option has been removed. Switches can be enabled via the integration’s entity list in the UI.

LiteJet’s exclude_names YAML option has been removed. Undesired entities can be disabled via the integration’s entity list in the UI.

(@joncar - #44409) (litejet docs)

Nest

The nest FAN_ON mode now sets the device timer to use the max duration of 12 hours, rather than the default of 15 minutes. If you would like the fan to turn off sooner may use an automation with timer to set FAN_OFF sooner.

(@allenporter - #46489) (nest docs)

credstash and keyring

The methods of storing secrets in credstash and keyring have been removed. They have been deprecated and a warning has been printed since Home Assistant Core 2020.12.

(@balloob - #47033)

Hue

Hue groups are now disabled by default because they do not have a unique ID. Existing configurations that have previously saved Hue options are not affected.

To enable Hue groups:

  • Browse to your Home Assistant instance
  • In the sidebar click on Configuration
  • From the configuration menu select Devices & services
  • Find the entry for the Hue Bridge
  • Select Options and change the setting

(@bdraco - #47067) (hue docs)

Farewell to the following

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

  • CoinMarketCap has been removed, the used API has been out of service for a long time already. (@frenck - #46615)
  • Crime Reports has been removed, as the API is no longer available. (@frenck - #46312)
  • Nuimo was in a non working state for a long time now. (@rngtng - #45600)
  • Synology has been removed, the Synology DSM integration provides a full replacement. (@thecode - #46482)
  • xFinity Was previously marked deprecated. It relies on web scraping to function, which is no longer allowed. (@thecode - #46484)

All changes

Click to see all changes!