Home Assistant Core 2021.3.0 → 2021.4.0
5 versions, 26 breaking changes in 1 version, 0 required stops
Version by version, oldest first
2021.3.1 – 2021.3.4: no action items (4 versions)
2021.4.0 2021-04-07
Quoted from www.home-assistant.io/blog/2021/04/07/release-20214/#backward-incompatible-changes
Breaking
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 be blocked from loading if it's missing a version in the manifest starting with Home Assistant 2021.6.
If you see these warnings, please report the issue with the author of that custom integration.
(@ludeeus - [#45919])
Breaking
Xiaomi Miio
The Xiaomi Miio Fan, Sensor & Light platforms can now be configured via the UI.
If you currently have them configured using YAML configuration, they will be automatically imported into the UI on upgrade. After upgrading, you can safely remove the YAML configuration for these devices.
Breaking
KNX
The config_file YAML option for KNX is deprecated, please remove it from your YAML configuration if you have it configured.
Float types are no longer valid for sensor / expose sensor type because the trailing zeros caused troubles when splitting to two integers.
Breaking
LIFX Legacy
The LIFX Legacy platform is deprecated and will be removed in Home Assistant Core 2021.6.0. Use the LIFX integration instead.
(@frenck - #47235) (lifx_legacy docs)
Breaking
Secrets
At this moment, we are unsure if this is a breaking change or not, so we list it, just to be sure.
We are now explicitly only supporting secrets inside your Home Assistant Core and Lovelace configuration files (and anything included from there). Secrets are no longer supported in other loaded YAML files.
This change should not affect regular users of Home Assistant, however, we have been made aware that some custom integrations may cause problems. If you are a user of Dwains theme, the HomeKit Infused theme or lovelace_gen, please make sure to update those or check with the upstream project.
Breaking
HomeKit
The HomeKit auto_start configuration option has been deprecated. It dates from the "old"-days to prevent entities not being available yet when HomeKit started. However, nowadays, Home Assistant ensures all entities are available on startup instantly.
Therefore, this option is no longer needed. If you still have it in your configuration (and have automations for it to start HomeKit); those can be safely removed as well.
(@frenck - #47470) (homekit docs)
Breaking
Breaking
Wake On LAN
Wake on LAN component now assumes a dummy state if a host is not provided. Before, the state was only based on the host config parameter, which is listed as optional.
With this change the host config is still optional, but if it is not defined, the state of the switch is simply the last action that was taken. If you're relying on a Wake on LAN entity in an automation or script, please make sure that your assumptions about state still hold.
Breaking
Verisure
The Verisure integration largely rewritten and is now configured via the Home Assistant user interface.
Your existing YAML configuration will be automatically imported when upgrading Home Assistant Core. After the upgrade completes, you can safely remove the existing Verisure YAML configuration.
If after upgrade your Verisure alarm system doesn't appear, please check your integrations dashboard. In rare cases (with accounts that have access to multiple Verisure alarm systems), it might be needed to select the specific Verisure alarm system to migrate.
This also means the YAML configuration for the Verisure integration is now deprecated and will be removed in Home Assistant Core 2021.6.0.
The services provided by the Verisure integration have changed to match the standard way of how Home Assistant handles services. The following services are affected by this change:
- my.home-assistant.io/redirect/developer_call_service
- my.home-assistant.io/redirect/developer_call_service
- my.home-assistant.io/redirect/developer_call_service
Previously these services required a device_serial parameter, they have now changed to accept a regular Home Assistant entity, device or area as a target. For example:
- service: verisure.enable_autolock
target:
entity_id: lock.my_verisure_lock
If you used any of these services in your automations or scripts, please make sure you update them after updating to Home Assistant Core 2021.4.0.
(@frenck - #47880 #47905) (verisure docs)
Breaking
Prometheus
Before this change, all sensors in an unknown state when the Prometheus exporter starts (i.e.: when Home Assistant starts) were being setup and metrics were exported with a default value of 0. Now, they will not be exported anymore (unless they become available again) - they can be found by searching for metrics where entity_available is 0 (will reveal both entities that are in unknown or unavailable state).
You should update any automations, scripts or 3rd party data consumers that depend on the old prometheus export with default value 0.
(@inetAnt - #47840) (prometheus docs)
Breaking
August
August has fully transitioned to configuration via UI. YAML configuration is no longer supported. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.
(@bdraco - #47615) (august docs)
Breaking
Workday
The Workday integration used to operate on the timezone configured on the system, instead of the timezone configured in Home Assistant. This can become problematic, for example, if your system runs on UTC, but you are 11 hours ahead of that.
This behavior has been correct and the workday sensors now rely on the timezone configured in Home Assistant. You might need to adjust to this, if you have automations, scripts or templates that previously manually corrected this.
(@schiermi - #47927) (workday docs)
Breaking
Ubiquiti UniFi Video
The datetime returned in the last_recording_start_time state attribute of the uvc camera entity was changed from local time to be UTC time. All times in state attributes must be UTC time. You should update any automations or scripts that depends on this state attribute.
Breaking
Z-Wave JS
Zwave JS climate devices that report their temperature in Fahrenheit will now report in tenth precision instead of whole precision, when the device supports it.
Previously, when those devices reported a temperature of, for example, 67.6F it would be rounded and reported in whole precision as 68F. Those devices will now report the temperature with tenth precision, thus 67.6F.
This means that if you currently have automation that depends on the temperature reported by these devices you may have to adjust their functionality to work properly with how the temperature is now being reported.
(@chilicheech - #48133) (zwave_js docs)
The event names for Z-Wave JS value notification (central scene) events will now be called zwave_js_value_notification and notification (e.g., locking or unlocking a lock) events will now be called zwave_js_notification.
For notification events, the properties that Z-Wave JS provides have changed, and we have changed the HA event property names to reflect that. The parameter that used to be called label (The human-readable label for the notification event) is now called event_label as there is now a new label property which is the human-readable label for the notification type.
In addition, we now support notification events for two command classes, Entry Control and Notification, so the command class is reflected in the event data. You can learn more about the different command class notifications and what each parameter means for the different notifications here:
https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotnotificationquot
(@raman325 - #48094) (zwave_js docs)
Breaking
Templates
Previously, during template rendering, undefined variables are replaced with an empty string. As an example the template {{undefined_variable}} will render as the empty string. This is error prone as it means misspelled or non existent variables are silently accepted by the template engine.
Starting this release, there will be a warning message in the log when a variable is undefined, but it is still rendered as the empty string. So, besides the warning, right now, nothing changes.
Starting with Home Assistant 2021.10, undefined variables will be treated as an error and template rendering will fail.
To allow rendering of templates where it is expected that a variably may not be defined without logging a warning or failing to render, use the default filter: {{undefined_variable | default}}.
(@emontnemery - #48140)
Breaking
ZeroConf
Zeroconf will now only listen on the default interface by default.
If you need to broadcast mDNS responses to all interfaces or retain the previous behavior, set default_interface to false.
With multiple interfaces, mDNS traffic processing happened numerous times since the duplicate packets appeared on each interface. This behavior was not desirable for most cases which necessitated a change in the default.
The Home Assistant Operating System has multiple interfaces and was affected.
(@bdraco - #48302) (zeroconf docs)
Breaking
Google Cast
The YAML configuration for the Google Cast integration has been deprecated and will be fully removed in Home Assistant Core 2021.6.0.
If you have existing YAML configuration for the Google Cast integration, please remove it from your configuration.
(@emontnemery - #47269) (cast docs)
Breaking
Neato
Vacuum attributes clean start, clean stop and camera attribute generated_at are now in a timestamp format.
New format is "2021-03-20T10:35:47Z". This allow automation to use their value based on as_timestamp().
If you relies on these attributes in your automation or script, you might need to adjust them to match this change.
(@chemelli74 - #48150) (neato docs)
Breaking
MQTT Fan
The fan entity model has been changed. This impacts the way the MQTT Fan supports speeds and the following configuration options are deprecated and will be removed in Home Assistant Core 2021.7.0:
speed_command_topicspeed_state_topicspeed_value_templatespeedspayload_off_speedpayload_low_speedpayload_medium_speedpayload_high_speed
Additionally,preset_modes and percentage are added to replace the legacy model supporting only three speeds low, medium and high. Therefore, command templates for state, oscillation, preset_mode and percentage are introduced.
Breaking
Core / Custom integrations
Block detectable I/O in the event loop
We added a warning when this happens last April and gave developers a year to fix the instability. We now prevent the instability by raising RuntimeError when code attempts to do known I/O in the event loop instead of the executor.
We now provide a suggestion on how to fix the code that is causing the issue.
Breaking
ModBus
You can now use the new style configuration when configuring the modbus integration. The existing configuration style is kept, allowing you to change gradually.
Remark the existing configuration style will be removed in a couple of releases.
Example of an existing configuration:
modbus:
- name: "hub1"
type: tcp
host: IP_ADDRESS
port: 502
sensor:
platform: modbus
registers:
- name: "Sensor1"
hub: "hub1"
unit_of_measurement: "°C"
slave: 1
register: 100
Same configuration in new style:
modbus:
- name: "hub1"
type: tcp
host: IP_ADDRESS
port: 502
sensors:
- name: "Sensor1"
slave: 1
address: 100
(@janiversen - #46591) (modbus docs)
Breaking
Updater
The reporting and include_used_components configuration options have now been deprecated, the updater integration will no longer report any analytics.
The analytics has moved to its own integration. See the analytics integration for more details on how to configure it.
(@ludeeus - #48518) (updater docs)
Breaking
SolarEdge
The SolarEdge configuration via YAML has been deprecated and will be removed in a future release of Home Assistant. The integration is using a configuration via the UI for two years now.
Existing YAML configurations are automatically imported into the UI, and can be safely removed from your YAML configuration.
(@frenck - #48533) (solaredge docs)
Breaking
MQTT Light
MQTT JSON light now supports color_mode which should be used together with supported_color_modes to signal the light's features.
Feature flags color_temp, hs, rgb, white_value, xy are all deprecated and support will be removed in 2021.10.
(@emontnemery - #47993) (mqtt docs)
Breaking
Ping
When restarting Home Assistant, the previous ping sensor state is now restored and then updated in the background to allow startup to proceed without the risk of timing out.
When the user has many ping sensors, the ping integration could timeout starting up because each ping has to happen in the executor.
Breaking
Note
Farewell to the following
The following integrations are no longer available as of this release:
From www.home-assistant.io/blog/2021/04/07/release-20214/#farewell-to-the-following
Release notes from github.com/home-assistant/core/releases, and the official release blog, checked 18 hours ago. Only text the vendor marks as breaking, or puts in a warning/caution/important note, is shown; read the full notes for anything else. Home Assistant lists its breaking changes in the “Backward-incompatible changes” section of each monthly release post on home-assistant.io (2020.12 onward). Each entry of that section is quoted as “Breaking” on the x.y.0 release, under the integration name the post gives it. The post’s “Farewell to the following” section (integrations removed in that release, 2020.12–2024.5) is quoted whole as “Note”. The post's separate section for custom integration developers is not quoted. Patch releases are listed but their notes (lists of fixes) are not quoted. Versions come from PyPI (package homeassistant).