Upgrade Path

Home Assistant Core 2023.1.0 → 2026.9.4

225 versions, 519 breaking changes in 44 versions, 0 required stops

Version by version, oldest first

2023.1.1 – 2023.1.7: no action items (7 versions)

2023.2.0 2023-02-01

26 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2023/02/01/release-20232/#backward-incompatible-changes

Breaking

Python 3.9 support has been removed

Python 3.9 support has previously been deprecated and has now been removed. Home Assistant now requires Python 3.10 to run.

If you are using Home Assistant OS, Home Assistant Container, or Home Assistant Supervised installation method, you don’t have to do anything. In those cases, we handle this all for you.

Your system has been using Python 3.10 for quite some time already.

(@frenck - #85456)

Breaking

MariaDB

If you are using MariaDB with Home Assistant recorder, please make sure you run 10.5.17 , 10.6.9, 10.7.5, 10.8.4 (depending on which major release you are using). If you are using the MariaDB core add-on, make sure to update it to the latest version: 2.5.2.

Older versions of MariaDB suffer from a significant performance regression when retrieving history data or purging the database.

(@bdraco - #87040)

Breaking

Automations & Scripts

A disabled condition, for example, in an automation or script, will no longer always be a pass/True within an OR condition. Instead, in those cases, the condition will now have no effect when disabled.

(@karliemeads - #79718) (documentation)

Breaking

AccuWeather

For the precipitation entity, the unit was changed from mm to mm/h (in to in/h), resulting in the need to fix the unit for long-term statistics. You can do that in Developer Tools -> Stats.

(@bieniu - #86088) (documentation)

Breaking

Airly

If the language in the Home Assistant settings is set to Polish, the language of the advice and description attributes of the CAQI entity will change from English to Polish.

If you are using these in your automations or scripts, you might need to adjust them to match this change.

(@bieniu - #85655) (documentation)

Breaking

Fitbit

The state values of the Fitbit sensor entities will change to remove any thousands delimiters. For example, 1,500 will become 1500.

If you're using the state of these entities in automations or scripts, you need to update them to handle the new state format.

(@sw-carlos-cristobal - #85251) (documentation)

Breaking

Flume

The scan/update interval for water values has been restored to match the Flume app.

To stay under Flume's API limits, the device connection is now checked hourly, and notifications are checked every 5 minutes.

(@bdraco - #86354) (documentation)

Breaking

History

The use_include_order YAML configuration option has been removed.

This option was used to sort the history on the original history panel which, is no longer used. As it no longer has a function and only serves to slow down the response, it has been removed.

(@bdraco - #86365) (documentation)

Breaking

IoTaWatt

The IoTAWatt integration no longer provides sensors with the "Accumulated" suffix. The accumulated sensors have been introduced to support net energy export/import metering.

Newer versions of IoTaWatt provide "Integrators", which allow achieving the same more efficiently and with higher accuracy.

You should configure Integrators to calculate the net energy export and import.

(@agners - #86611) (documentation)

Breaking

Matter

The Matter integration now requires running Matter Server version 2.0.0.

If you're using the Matter Server add-on to run the Matter Server, you will need version 3.0.0 of the add-on.

We had to change our vendor ID in the add-on; as a result, all devices need to be recommissioned.

(@MartinHjelmare - #86470) (documentation)

Breaking

Nettigo Air Monitor

The states of air quality sensors have been standardized to match Home Assistant core rules. This affects two states of the sensors that NAM can provide:

  • very low, which now became very_low
  • very high, which now became very_high

If you used those states directly in your automations, scripts, or templates; you would need to adjust those to match these changes.

(@frenck - #85245) (documentation)

Breaking

Pentair ScreenLogic

The Pentair ScreenLogic integration now correctly categorizes all known lights. Removing any lights that were previously incorrectly created as switch entities may be necessary.

(@dieselrabbit - #86608) (documentation)

Breaking

Pi-hole

The previously deprecated YAML configuration of the Pi-hole integration has been removed.

Pi-hole is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@mib1185 - #84803) (documentation)


The extra state attribute "Domains blocked" has been removed from all sensors. It is already exposed as its own dedicated sensor.

If you used the state attribute in your automations or scripts, you would need to adjust them to use the dedicated sensor instead.

(@mib1185 - #85424) (documentation)

Breaking

Rain Bird

Rainbird is now configured via the UI, and configuration from YAML has been imported automatically.

However, there are a few notable changes:

  • Custom per zone overrides for irrigation time are no longer supported.
  • The Rain delay binary_sensor that duplicates the Rain delay time sensor has been removed. You should move all uses to the sensor value and check for a non-zero value to get equivalent behavior.
  • The Rain sensor that duplicates the Rain binary_sensor has been removed. You may check the binary_sensor state to get equivalent behavior.

Also, the way the "Rain Delay" is managed has changed. The Rain Delay, which pauses irrigation for a specified number of days, is now managed with a number entity which can be controlled directly from the UI.

The existing service call rainbird.set_rain_delay and the Raindelay sensor have been deprecated. Any existing automations or scripts that make service calls to rainbird.set_rain_delay will need to be replaced with a call to number.set_value. Additionally, the existing service call was updated to require an integration entry configuration since it previously had undefined behavior, so it is recommended to move directly to the new number service call.

(@allenporter - #85271 #86208) (documentation)

Breaking

Recorder

The recorder's default commit interval has been increased to 5 seconds to reduce disk I/O and increase storage longevity.

As the history and logbook integrations both support live streaming, which avoids the need to read the database after the initial sync, there is no remaining core functionality that needs a lower commit interval.

The commit_interval can be adjusted to a lower value in the event an integration has not been updated to watch for events instead of reading the database and needs to read the database sooner.

(@bdraco - #86115) (documentation)

Breaking

Renault

The previously deprecated renault.charge_start service has been removed. Please use the dedicated start charge button entity to start the charge instead.

(@epenet - #86070) (documentation)

Breaking

Sony Bravia TV

Sony Bravia TV media players no longer have fake (assumed) playing or paused states, and those are replaced with the on state.

If you have automations or scripts that use the playing or paused state, please update them to be compatible with this change.

(@Drafteed - #84885) (documentation)


The source_list no longer contains a list of applications and TV channels. Apps and channels have been separated from the input list and moved to the Media Browser.

If you have automations or scripts that use media_player.select_source to switch apps or channels on the Bravia TV, the automations need to be updated to use media_player.play_media service instead.

The options flow has been removed from the integration, as the only configurable setting ignored_sources was no longer relevant and incompatible with this change.

(@Drafteed - #85288) (documentation)

Breaking

Spain electricity hourly pricing (PVPC)

The previously deprecated YAML configuration of the Spain electricity hourly pricing (PVPC) integration has been removed.

Spain electricity hourly pricing (PVPC) is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@azogue - #85614) (documentation)

Breaking

Tado

The swing modes of Tado have changed. This is to standardize with other integrations, and so it can support translations.

  • ON became the lowercase on
  • OFF became the lowercase off

If you used these swing modes in your automations or scripts, you might need to adjust those to this change.

(@emontnemery - #84278) (documentation)

Breaking

Twinkly

All extra state attributes from Twinkly light entities have been removed.

They mostly added information about the device, not the actual light state itself.

(@frenck - #84986) (documentation)

Breaking

Universal Devices ISY/IoX

ISY/IoX Variables have been moved from sensor entities to number entities; the existing sensor entities are deprecated and will be removed in a future release.

The isy994.set_variable service has been deprecated in favor of using the number entities to directly set the variable values.

Please update any dashboards, scripts, and automations that may be using these entities or service.

(@shbatm - #85511) (documentation)


Entities for INSTEON Aux Properties and Device Communication Errors have been removed for nodes that are not the main (load) node.

On Level and Ramp Rate sensors have been removed for non-dimmable (non-light.) devices. Only load devices receive communication error updates and only dimmable devices support OL and RR commands.

The other entities were previously added but did not receive valid states from the ISY or end-devices. These sensors were disabled by default.

(@shbatm - #85744) (documentation)

Breaking

Uptime

The previously deprecated YAML configuration of the Uptime integration has been removed.

Uptime is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@frenck - #86292) (documentation)

Breaking

Yamaha Network Receivers

When there is a connection error with the receiver, the device will now go into an unavailable state until the connection has been restored.

(@sredna - #85018) (documentation)

Breaking

Yamaha MusicCast

The raw state/option values of the Yamaha MusicCast zone sleep select entities have been standardized to match Home Assistant core rules.

The following states/options have been changed

  • 120 min, which now became 120_min
  • 90 min, which now became 90_min
  • 60 min, which now became 60_min
  • 30 min, which now became 30_min

If you used those states/options directly in your automations, scripts, or templates; you will need to adjust those to match these changes.

(@frenck - #85292) (documentation)

Breaking

Zentralanstalt für Meteorologie und Geodynamik (ZAMG)

The previously deprecated YAML configuration of the Zentralanstalt für Meteorologie und Geodynamik (ZAMG) integration has been removed.

Zentralanstalt für Meteorologie und Geodynamik (ZAMG) is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@killer0071234 - #86113) (documentation)

Breaking

Zigbee Home Automation

The AnalogInput sensor entities for certain Xiaomi plugs have been removed from ZHA.

Properly working "Active power" and "Summation delivered" sensors are available to replace the older entities. These newer sensor entities can also be used in Home Assistant Energy dashboard.

(@TheJulianJES - #86261) (documentation)

Note

Farewell to the following

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

  • Almond has been removed. It is in a non-working state, and the services have been shut down.
  • OpenALPR Local was previously deprecated and has now been removed. It doesn't work correctly and has no usage, according to our public analytics.

From www.home-assistant.io/blog/2023/02/01/release-20232/#farewell-to-the-following

Full release notes for 2023.2.0

2023.2.1 – 2023.2.5: no action items (5 versions)

2023.3.0 2023-03-01

16 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2023/03/01/release-20233/#backward-incompatible-changes

Breaking

Assist / Conversation

Previously, all entities and areas were exposed to Assist's default agent. This is now restricted to entities of the following domains:

  • climate
  • cover
  • fan
  • humidifier
  • light
  • lock
  • scene
  • script
  • sensor
  • switch
  • vacuum
  • water_heater

Only areas with exposed entities will be exposed themselves. In the future, this will be customizable through the frontend.

(@synesthesiam - #88274) (documentation)

Breaking

Atmospheric pressure device triggers

A bug with the atmospheric pressure sensor device triggers has been corrected. Automations using such device triggers will need to be adjusted/reconfigured.

(@epenet - [#88320]) (documentation)

Breaking

ecobee

The aux heat toggle will now show as enabled when the device is in "aux heat only" mode instead of only when it is running.

(@Lash-L - #86100) (documentation)

Breaking

Fibaro

The previously deprecated YAML configuration of the Fibaro integration has been removed.

Fibaro is now configured via the UI, any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@rappenze - #87939) (documentation)

Breaking

GoodWe Inverter

Inverter "Operation Mode" select values were changed to snake_case and localized.

  • "General mode" -> general
  • "Off grid mode" -> off_grid
  • "Backup mode" -> backup
  • "Eco mode" -> eco
  • "Peak shaving" -> peak_shaving
  • "Eco charge mode" -> eco_charge
  • "Eco discharge mode" -> eco_discharge

If you used these select values in your automations or scripts, you will need to adjust those to match this change.

(@mletenay - #86901) (documentation)

Breaking

HomeKit

VOC mappings in the HomeKit integration have been improved to use the IAQ guidelines for Europe released by the WHO (World Health Organization).

HomeKitPrevious VOC µg/m3New VOC µg/m3
Excellent<= 24<= 250
Good<= 48<= 500
Fair<= 64<= 1000
Inferior<= 96<= 3000
Poor> 96> 3000

Reference: Sensirion_Gas_Sensors_SGP3x_TVOC_Concept.pdf

(@emanuelst - #87663) (documentation)

Breaking

Matter

With this release, you will need to update your Matter Server instance. You must use python-matter-server 3.0.0 or greater (schema 2).

  • If you use the Matter Server add-on, you need to have at least version 4.0.0.
  • If you run your own Docker container, or some other installation method, you will need to update your python-matter-server instance to at least 3.0.0.

(@marcelveldt - #88607) (documentation)

Breaking

MQTT

The behavior for receiving values on sensors that expect numeric* values has changed.

  • A 'None' value or a value rendered to 'None' will set such a sensor to an unknown state.
  • Empty values on such sensors ('') are ignored and will not affect the state of the sensor.

Integrations need to be corrected to send the correct values if an update is published and no valid update value is available for the sensor.

  • Other sensors that do not expect a numeric value will still accept an empty string as a value.

* Sensors expect numeric values if at least one of the following applies:

  • A device_class is set but is not a date, timestamp, enum, or any custom device class.
  • A state_class is set.
  • A unit_of_measurement is set.
  • A suggested_display_precision is set.

(@jbouwh - #87004) (documentation)

Breaking

Plugwise

The unit of measurement for the P1 gas consumed interval sensor is changed from m³ to m³/h. Go to Developer Option --> Statistics for the options on how to handle this change in your existing installation.

(@bouwew - #87449) (documentation)

Breaking

Profiler

The profiler.memory service is unavailable when using Python 3.11, due to an incompatibility with a needed dependency for this service. It will return when the used guppy3 package becomes available with Python 3.11 compatibility.

(@bdraco - #88136) (documentation)

Breaking

Template: Covers

Template covers using optimistic: false without value_template nor position_template still updated state optimistically. The integration now respects the optimistic setting of false. If you want to keep the previous behavior, you must set the optimistic value to true, or remove the optimistic declaration.

(@ylemoigne - #87925) (documentation)

Breaking

Trafikverket Weather

The unit of measurement was incorrectly set to mm while the API is returning mm/h. The unit of measurement and device class have now been corrected.

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

Breaking

Todoist

Labels used by custom projects for filtering are now case-sensitive.

Previously the labels were automatically lower-cased by the integration, but in Todoist a label like Test and test are considered unique. Because of that labels will now be case sensitive in your configuration.

(@boralyl - #87904) (documentation)

Breaking

UniFi Protect

The event_id and event_score state attributes are now excluded from being recorded in the database. They remain available for use in automations and scripts.

(@bdraco - #88387) (documentation)


The previously deprecated "Detected Object" sensor has been removed.

The sensor was removed because if multiple objects are detected at once (very common for package detection), Home Assistant could not be automated using the second detected object. The sensor has been split out from the single Detected Object sensor into multiple binary issues for each detection type.

(@bdraco - #85656) (documentation)

Breaking

Wiffi

The Wiffi unit of illuminance lux has been adjusted to the standard unit Home Assistant uses lx.

(@mampfes - #87377) (documentation)

Breaking

Z-Wave

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

  • If you use the Z-Wave JS add-on, you need at least version 0.1.76.
  • If you use the Z-Wave JS UI add-on, you need at least version 1.6.3.
  • If you use the Z-Wave JS UI Docker container, you need at least version 8.8.6.
  • 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.26.0.

(@raman325 - #88520) (documentation)

Full release notes for 2023.3.0

2023.3.1 – 2023.3.6: no action items (6 versions)

2023.4.0 2023-04-05

28 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2023/04/05/release-20234/#backward-incompatible-changes

Breaking

Aladdin Connect

The previously deprecated YAML configuration of the Aladdin Connect integration has been removed.

Aladdin Connect is now configured via the UI, any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@epenet - #88694) (documentation)

Breaking

AVM FRITZ!Box Tools

The binary sensor providing available firmware updates has been deprecated since 2022.5 and is now removed. Use the new update entity instead.

(@mib1185 - #89940) (documentation)

Breaking

Bluetooth

This change only affects Home Assistant instances running directly on MacOS (not inside a virtual machine).

Any integration or device previously set up using a UUID Bluetooth address will need to be deleted and recreated.

(@bdraco - #89926) (documentation)

Breaking

Calendar

The calendar.create_event service now enforces that start and end dates are exclusive. This has always been part of the specification but was not clearly documented and enforced.

(@allenporter - #89533) (documentation)

Breaking

DSMR Reader

The previously deprecated YAML configuration of the DSMR Reader integration has been removed.

DSMR Reader is now configured via the UI, any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@frenck - #89239) (documentation)

Breaking

GIOŚ

AQI sensor state values are now in English, and the user interface will display their translation for the selected language. If you have been using this sensor in your automations and scripts, you'll need to adjust these for this change.

(@bieniu - #89044) (documentation)


The name and station sensor state attributes have been removed because they are static data that do not describe the state of the entity.

The index sensor state attribute has been migrated to a separate entity, for example, sensor.home_no2_index.

(@bieniu - #89389) (documentation)

Breaking

Groups - Notify

The behavior of passing parameters to service calls targeting notification groups has changed.

Current behavior: data mappings configured in the service override mappings configured in the action.

New behavior: data mappings configured in the action override mappings configured in the service.

(@arychj - #90253) (documentation)

Breaking

Home Connect

In order to obtain an up-to-date list of compatible programs for your appliances, it will be necessary to reconfigure the integration.

Please note that due to limitations on the Home Connect side, it is important to have your appliances Turned on during the reconfiguration process.

This action is a one-time requirement.

(@stickpin - #88801) (documentation)

Breaking

IMAP

The previously deprecated YAML configuration of the IMAP integration has been removed.

IMAP is now configured via the UI, any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@jbouwh - #89981) (documentation)

Breaking

Landis+Gyr Heat Meter

The conversion to MWh and the corresponding MWh-entities have been removed.

To resolve the breaking change :

  • If you make use of any of sensor.heat_meter_heat_usage or sensor.heat_meter_heat_previous_year for automations, scripts, etc., you can replace these with the GJ-entities sensor.heat_meter_heat_usage_gj and sensor.heat_meter_heat_previous_year_gj.
  • If applicable, in the energy dashboard, replace sensor.heat_meter_heat_usage with sensor.heat_meter_heat_usage_gj. Note that the energy dashboard will still convert to MWh or kWh, therefore resulting in the same values as before.

(@vpathuis - #89522) (documentation)

Breaking

Logbook

Logbook will be unavailable until the database schema migration completes. Logbook script and automation traces from previous runs of Home Assistant will be unavailable until background data migration is completed following the schema migration.

(@bdraco - #88942 #89465) (documentation)


Automation and script traces that include state change events recorded with Home Assistant 2022.5.x or older will no longer display context information for these events in the logbook tab.

(@bdraco - #89945) (documentation)

Breaking

MySensors

  • The MySensors notify platform has been removed. It's been deprecated since 2023.2.0. It's been replaced by a text entity platform.
  • You should update any automations or scripts that use the notify.mysensors* service to instead use the text.set_value service and the corresponding text entity as a target.
  • The MySensors IR switch entity, corresponding to an S_IR child with V_SEND value, has been removed. This entity hasb been deprecated since 2023.2.0. It's been replaced by a remote entity.
  • You should update any automations or scripts that use the mysensors.send_ir_code service to instead use the remote.send_command service and the corresponding remote entity as a target. Similar changes should be made for actions using the switch.turn_on and switch_turn_off services targeting the removed IR switch entities. Replace these with remote.turn_on and remote.turn_off services and remote entity targets.

(@MartinHjelmare - #90402 #90403) (documentation)

Breaking

Moon

The previously deprecated YAML configuration of the Moon integration has been removed.

Moon is now configured via the UI, any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@frenck - #89161) (documentation)

Breaking

MQTT

The tls_version configuration parameter (deprecated June 2020) has been removed. All other MQTT broker settings have been moved to the UI before.

When the tls_version setting is still in your YAML configuration, MQTT will not start up.


The previously deprecated MQTT broker YAML configuration has been removed.

The MQTT broker is now configured via the UI, any existing MQTT broker YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@jbouwh - #87987) (documentation)

Breaking

Nextcloud

The option to define your own scan interval has been removed, data is now updated every 60 seconds.

(@mib1185 - #89396) (documentation)

Breaking

OpenAI Conversation

Your previously selected model has been reset to the new and cheaper GPT 3.5 model.

(@balloob - #90423) (documentation)


The built-in areas variable is no longer overwritten and is now the same as areas in every template. The new default template is now:

This smart home is controlled by Home Assistant.

An overview of the areas and the devices in this smart home:
{%- for area in areas() %}
  {%- set area_info = namespace(printed=false) %}
  {%- for device in area_devices(area) -%}
    {%- if not device_attr(device, "disabled_by") and not device_attr(device, "entry_type") and device_attr(device, "name") %}
      {%- if not area_info.printed %}

{{ area_name(area) }}:
        {%- set area_info.printed = true %}
      {%- endif %}
- {{ device_attr(device, "name") }}{% if device_attr(device, "model") and (device_attr(device, "model") | string) not in (device_attr(device, "name") | string) %} ({{ device_attr(device, "model") }}){% endif %}
    {%- endif %}
  {%- endfor %}
{%- endfor %}

Answer the user's questions about the world truthfully.

If the user wants to control a device, reject the request and suggest using the Home Assistant app.

(@balloob - #90481) (documentation)

Breaking

Overkiz

The open and close commands for theio:CyclicGarageOpenerIOComponent device Have been removed, see this issue for more details on this device.

To sum up, this device is a garage door but cannot be exposed as such within Home Assistant. There is no state returned and no clear open and close command.

Only one command is available: cycle. A button is a perfect fit for this use case and remove all confusion; this button entity has been added this release.

(@tetienne - #89043) (documentation)

Breaking

Pushbullet

The previously deprecated YAML configuration of the Pushbullet integration has been removed.

Pushbullet is now configured via the UI, any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

Radio Thermostat

The previously deprecated YAML configuration of the Radio Thermostat integration has been removed.

Radio Thermostat is now configured via the UI, any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

Recorder

Oversized events with data larger than 32KiB are no longer recorded to avoid overloading the database and polluting the memory cache.

(@bdraco - #90747) (documentation)

Breaking

Scrape

The previously deprecated YAML configuration of the Scrape integration has been removed.

Scrape is now configured via the UI, any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

Season

The previously deprecated YAML configuration of the Season integration has been removed.

Season is now configured via the UI, any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@frenck - #89166) (documentation)

Breaking

Tasmota

Tasmota sensor no longer sets the force_update flag to True.

Tasmota binary_sensor no longer sets the force_update flag to True, except for binary_sensor mapped to a Tasmota switch with switchmode set to 13 or 14.

(@DerEnderKeks - #85943) (documentation)

Breaking

Templates

The relative_time and today_at template functions and filters are no longer supported in limited templates.

(@Petro31 - #86815)


Enumerating states using templates are no longer sorted by entity_id by default, as it was computationally expensive.

To restore the original behavior, a sort filter can be added to any existing template using the below example:

{% for state in states | sort(attribute='entity_id') %}

Breaking

Threshold

The behavior of the threshold binary sensor has changed:

  • The threshold binary sensor's state is reset to unknown when the monitored sensor's state is unknown, unavailable, or not a valid float.
  • When the monitored sensor's state is first valid, or when it's valid after being unknown, unavailable, or not a valid float:
  • Initialize a threshold sensor with only a lower threshold to state off, with the position attribute set to above.
  • Initialize a threshold sensor with only a upperthreshold to state off, with the position attribute set to below.
  • Initialize a threshold sensor with only an upper and a lower threshold to state on, with the position attribute set to in_range.

(@emontnemery - #88978) (documentation)

Breaking

Twente Milieu

The end-date for garbage collection events on the calendar entity, will now be one day later compared to the start date. This is because in calendaring, the end-date is exclusive.

(@bobvandevijver - #89028) (documentation)

Breaking

Volvo On Call

The previously deprecated YAML configuration of the Volvo On Call integration has been removed.

Volvo On Call is now configured via the UI, any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

Z-Wave

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

  • If you use the Z-Wave JS add-on, you need at least version 0.1.77.
  • If you use the Z-Wave JS UI add-on, you need at least version 1.8.1.
  • If you use the Z-Wave JS UI Docker container, you need at least version 8.11.1.
  • 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.27.0.

(@raman325 - #90212) (documentation)

Note

Farewell to the following

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

  • Dark Sky has been removed. Apple acquired Dark Sky, and the API has now been shut down. (@gjohansson-ST - #90322)
  • Magicseaweed has been removed. Magicseedweed no longer provides API keys to users. Additionally, the integration is no longer in a functional state. (@gjohansson-ST - #90277)

From www.home-assistant.io/blog/2023/04/05/release-20234/#farewell-to-the-following

Full release notes for 2023.4.0

2023.4.1 – 2023.4.6: no action items (6 versions)

2023.5.0 2023-05-03

15 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2023/05/03/release-20235/#backward-incompatible-changes

Breaking

Accuweather

The ozone sensors and the ozone state attribute of the weather entity showed incorrect values and are being removed. If you use these values in your automations or scripts, you need to update them.

(@bieniu - #91492) (documentation)

Breaking

Android TV

The "Android TV" integration has been renamed to "Android Debug Bridge".

This rename is because that is what it actually controlled/provided. With the addition of the Android TV Remote integration in this release, we wanted to reduce possible confusion in the future.

(@tronikos - #90657) (documentation)

Breaking

History

All YAML configuration options for the history integration have been removed as they were no longer used by the frontend.

(@bdraco - #90992) (documentation)

Breaking

HomeKit

The min/max target humidities for (de)humidifier device exposed over HomeKit has changed. The HomeKit UI will now show the real relative humidity. When the slider in HomeKit goes above or below the max/min set humidity, it will be set back to the max/min allowed humidity.

(@stackia - #90854) (documentation)


Default HomeKit to listen on all interfaces to match Home Assistant behavior. To limit HomeKit to specific network interfaces, specify an address in configuration.yaml.

(@bdraco - #91520) (documentation)

Breaking

IMAP

The use of imap_content event could break for users that want to parse data from larger email messages from the truncated part. Only the first 2048 bytes of the message body (2 KiB) will be available.

(@jbouwh - #92066) (documentation)

Breaking

Overkiz

The silence option for DynamicShutter has been removed because it caused the cover entity to be non-functional if it did not support silence. This functionality will be reintroduced in a future release.

(@iMicknl - #91354) (documentation)

Breaking

Reolink

For Reolink doorbells, the "Status LED" light entity is replaced by a "Status LED" select entity. The switch off state corresponds to the select Auto, and the switch on state corresponds to the select Auto & always on at night. An additional Stay off state is now available.

(@starkillerOG - #90469) (documentation)

Breaking

Snapcast

  • Muted groups with stream playing will have state idle instead of playing.
  • Connected clients will not have state on anymore but use the same states as groups: idle and playing.
  • Disconnected clients have state standby instead of off because the Snapcast server still accepts commands.

(@luar123 - #77449) (documentation)

Breaking

Synology DSM

The unit conversion for all memory, storage, and network utilization-related sensors was corrected from binary (1024) to decimal (1000) base to be in line with the used measurement units (eq. MB = 1.000.000 bytes).

You may need to update the historically recorded units for these sensors via the statistics page under developer tools.

(@mib1185 - #90633) (documentation)

Breaking

Templates

The ensure_ascii argument for to_json in Jinja templates now defaults to False, allowing us to use a faster JSON encoder by default.

This should not be an issue for most, as JSON parsers broadly accept Unicode input. If you still need to encode Unicode characters inside JSON strings, set ensure_ascii to True explicitly to restore the old behavior.

(@depoll - #91253)

Breaking

UniFi Network

UniFi integration no longer provides both hostname and host_name attributes for a client tracker entity. Only host_name will be provided as an attribute.

(@Kane610 - #91188) (documentation)

Breaking

UniFi Protect

The previous deprecated set_doorbell_message service has been removed. Use the text entity for the UniFi Protect LCD screen instead.

(@AngellusMortis - #91523) (documentation)

Breaking

Universal Devices ISY/IoX

The previously deprecated YAML configuration of the Universal Devices ISY/IoX integration has been removed.

Universal Devices ISY/IoX is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@shbatm - #91575) (documentation)


The built-in percentage unit % is now used for relative humidity and absolute humidity instead of the custom units %RH and %AH, respectively.

(@shbatm - #90863) (documentation)


The following custom ISY994 services have been removed:

  • reload
  • cleanup_entities
  • system_query
  • set_ramp_rate
  • set_on_level
  • run_network_resource
  • set_variable

These services had been previously deprecated in favor of built-in services and number, select, and button entities. Please update your automations and dashboards to use the new entities and/or built-in services if you have not already.

(@shbatm - #91569) (documentation)


Dusk/Dawn nodes on Insteon Motion Sensors now have their states inverted to correctly show "Light detected" during daylight and "No light" when the dusk sensor is active.

This is reversed from previous behavior. If you rely on this sensor in your automations, they must be updated.

(@shbatm - #92035) (documentation)

Breaking

Webhooks

Two new Webhook trigger options have been added that limit how a webhook can trigger an automation. A new _allowed_methods_ option can be used to control which HTTP request methods can activate the trigger (GET, HEAD, POST, and PUT). And the local_only option is used to allow devices outside your local network to activate the trigger.

Previously all webhook triggers could be activated by HEAD, POST, and PUT methods from any device (local or on the internet). With the new options, only POST and PUT are enabled by default.

In Home Assistant Core 2023.7, any webhook trigger that does not set local_only to false can only be activated by devices on the same network as Home Assistant.

Click the gear/cog icon beside the Webhook ID to update your webhook triggers. Then select an appropriate value for Only accessible from the local network. It is necessary to deselect the option for the Save button to appear. Then reselect the option if it should be enabled. This will make the repair warning go away.

[image: Screenshot shoting webhook trigger options]

See the webhook trigger documentation for a description of the new options. And please review the new Webhook Security section for best practices when using webhook triggers.

(@esev - #66494) (documentation)

Breaking

Z-Wave

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

  • If you use the Z-Wave JS add-on, you need at least version 0.1.79.
  • If you use the Z-Wave JS UI add-on, you need at least version 1.11.2.
  • If you use the Z-Wave JS UI Docker container, you need at least version 8.14.2.
  • 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.28.0.

(@raman325 - #91989) (documentation)

Note

Farewell to the following

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

From www.home-assistant.io/blog/2023/05/03/release-20235/#farewell-to-the-following

Full release notes for 2023.5.0

2023.5.1 – 2023.5.4: no action items (4 versions)

2023.6.0 2023-06-07

24 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2023/06/07/release-20236/#backward-incompatible-changes

Breaking

Python

All Home Assistant versions, of which the Home Assistant project manages the Python version for you, have been upgraded to Python 3.11. This affects the following installation types:

  • Home Assistant Operating System
  • Home Assistant Container
  • Home Assistant Supervised

This might affect you when using custom integrations, as those must be compatible with Python 3.11.

Furthermore, as of this release, Python 3.10 is deprecated, and support will be removed in Home Assistant 2023.8. This only affects you if you are running Home Assistant Core installation type in your own Python virtual environment. Please update your Python version to Python 3.11.

If you run Home Assistant OS, Home Assistant Container, or Home Assistant Supervised, we have taken care of this for you; you will be using Python 3.11 automatically on upgrade.

Breaking

APC UPS Daemon

sensor.ups_self_test_interval sensor now properly splits unit "days" from the raw data. Previously, it would show 7 days as the sensor state. Now it shows 7 with a unit "Days".

(@yuxincs - #93844) (documentation)

Breaking

Counter

The counter entities no longer restore their previous manually set configuration (using the - now deprecated - counter.configure service) on Home Assistant startup. Instead, it will now use the configuration as set in the helper configuration in the UI (or as configured YAML, if used).

This behavior is removed, as it caused configuration issues, as the new configuration was never applied again (but forever restored). This behavior was out of the ordinary for Home Assistant and thus now standardized.

The value of the counter is still restored and available across Home Assistant restarts.

(@frenck - #93344) (documentation)

Breaking

Command Line

The Command Line integration changes its YAML configuration format from an old-style platform configuration to a more modern integration-style configuration format.

For example, if you have a binary sensor configured previously as:

# Example configuration.yaml entry
binary_sensor:
  - platform: command_line
    command: "cat /proc/sys/net/ipv4/ip_forward"

That same binary sensor is now configured under the command_line integration configuration as:

# Example configuration.yaml entry
command_line:
  - binary_sensor:
      command: "cat /proc/sys/net/ipv4/ip_forward"

Note: While this is currently not yet a breaking change, it did raise questions during our beta testing period. Hence we have added this as a breaking change to provide more context.

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

Breaking

D-Link Wi-Fi Smart Plugs

The previously deprecated YAML configuration of the D-Link Wi-Fi Smart Plugs integration has been removed.

D-Link Wi-Fi Smart Plugs are now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

EDL21

The previously deprecated YAML configuration of the EDL21 integration has been removed.

EDL21 is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

EZVIZ

The binary sensor providing "upgrade available" information has been removed and replaced by a new update entity. If you use the binary sensor in your automations, scripts, or dashboards, you will need to adjust them to this change.

(@RenierM26 - #85377) (documentation)

Breaking

Frontier Silicon

The previously deprecated YAML configuration of the Frontier Silicon integration has been removed.

Frontier Silicon is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

Google Nest

The Google Nest YAML configuration has been fully removed. You should ensure you have imported your configuration and credentials into the UI before upgrading.

Nest Desktop or OOB authentication, which was previously disabled by Google, has now been removed.

(@allenporter - #92311) (documentation)

Breaking

IBM Watson TTS

Home Assistant was still using the legacy Python pip package resolver, which has been removed. Due to upstream package conflicts, the IBM Watson TTS integration has been disabled.

The upstream project providing the libraries used has been notified repeatedly in, at least, the past two years; unfortunately, without response. We had no other choice than to disable this integration.

(@frenck - #92124) (documentation)

Breaking

IHC Controller

The default unit of measurement for manually set up sensors from IHC has been removed. Home Assistant now assumes all sensors with a unit of measurement set are a number. IHC sensors can be text, but because of the default unit of measurement, there is currently no way to get text sensors from IHC working.

This is a breaking fix because if you currently have temperature sensors without a unit of measurement set, you will have to set this for the sensors.

(@dingusdk - #93054) (documentation)

Breaking

LG Netcast

LG Netcast media players no longer have fake (assumed) playing or paused states, and those are replaced with the on state.

If you used the playing or paused state in your automations, you will need to update them to match this change.

(@Drafteed - #93543) (documentation)

Breaking

Meteorologisk institutt (Met.no)

The weather forecast provided by the weather entity has changed. The current day has been added to the forecast. If your automations or scripts rely on the first day to be tomorrow, you need to adjust them.

(@mmalina - #91891) (documentation)

Breaking

MQTT

MQTT sensor configurations that still use last_reset_topic will fail. The support was deprecated in Home Assistant 2021.11 and is now removed. Users should use last_reset_value_template instead.

(@jbouwh - #93792) (documentation)

Breaking

Nextcloud

The previously deprecated YAML configuration of the Nextcloud integration has been removed.

Nextcloud is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

Obihai

The previously deprecated YAML configuration of the Obihai integration has been removed.

Obihai is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

Persistent notifications

Persistent notifications are no longer stored in the state machine. This means that we no longer create an entity for each persistent notification.

If you used these entities in, for example, automations, scripts, or templates, you won't be able to use these anymore.

(@bdraco - #92828) (documentation)


The persistent_notification.mark_read service has been removed.

(@bdraco - #94122) (documentation)

Breaking

Rain Bird

The previously deprecated YAML configuration of the Rain Bird integration has been removed.

Rain Bird is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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


The previously deprecated rainbird.rain_delay service for Rainbird has been removed. Please update any automation or script depending on this service.

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

Breaking

Salda Smarty

Home Assistant was still using the legacy Python pip package resolver, which has been removed. Due to upstream package conflicts, the Salda Smarty integration has been disabled.

The upstream project providing the libraries used has been notified repeatedly in, at least, the past two years; unfortunately, without response. We had no other choice than to disable this integration.

(@frenck - #92124) (documentation)

Breaking

Samsung Smart TV

The previously deprecated YAML configuration of the Samsung Smart TV integration has been removed.

Samsung Smart TV is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@epenet - #93392) (documentation)

Breaking

Total Connect

The tampered and low battery status zone attributes have been moved into their own dedicated binary sensors. If you use these attributes in your automations, scripts, or dashboards, you will need to update those to reflect this change.

(@austinmroczek - #73152) (documentation)

Breaking

Universal Devices ISY/IoX

The previously deprecated sensor entities for Insteon devices' On Level and Ramp Rate, as well as ISY Variable sensors, have been removed. Please use the dedicated number and select entities instead.

(@shbatm - #92255) (documentation)

Breaking

Vallox

The previously deprecated YAML configuration of the Vallox integration has been removed.

Vallox is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

(@slovdahl - #91096) (documentation)

Breaking

Z-Wave

On/Off properties for the Indicator CC are no longer discovered as entities.

They were previously discovered as sensor entities which were not useful in cases where you wanted to change these values, and you would need to change the value for all three On/Off properties simultaneously in order for them to work, which wasn't supported with our existing discovery model.

(@raman325 - #90248) (documentation)


For devices with the Entry control generic device class, the Door lock mode config parameter no longer gets created as a sensor entity and will instead get created as a select entity.

(@raman325 - #92223) (documentation)


The Nice IBT4ZWAVE module was previously discovered as a light, but now it is discovered as a cover. The light entity will be permanently unavailable and can be safely deleted.

(@raman325 - #93946) (documentation)


If you have zwave_js cover entities already and your device supports Window Covering CC, you may see newly created cover entities. The old cover entities can safely be deleted, but all customizations must be reapplied to the new entities.

(@raman325 - #93314) (documentation)

Note

Farewell to the following

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

  • Goalfeed has been removed. Their service has been discontinued. (@thecode - #94129)

From www.home-assistant.io/blog/2023/06/07/release-20236/#farewell-to-the-following

Full release notes for 2023.6.0

2023.6.1 – 2023.6.3: no action items (3 versions)

2023.7.0 2023-07-05

12 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2023/07/05/release-20237/#backward-incompatible-changes

Breaking

Home Assistant Container (Docker)

If you use the Home Assistant Container installation method, for example, using Docker, please make sure you are using our official (multi-platform) images.

The correct and preferred image to use for our stable releases is:

  • ghcr.io/home-assistant/home-assistant:stable

Although not the preferred location by the Home Assistant project, the image is also available on DockerHub:

  • homeassistant/home-assistant:stable

The reason for mentioning this in this breaking change section is that we have seen usage of our internal, intermediate, platform build images. These images are not meant for use directly, and using the above listed images is strongly recommended.

As of this release, we no longer publish our intermediate platform images to DockerHub. This means that if you are using these images, you will no longer receive updates. Please use the above-listed images instead.

(@pvizeli - #95236)

Breaking

Bose SoundTouch

The previously deprecated YAML configuration of the Bose SoundTouch integration has been removed.

Bose SoundTouch is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

Conversation

When using the Assist shortcut on iOS, it will now always talk to Home Assistant conversation agent even if the OpenAI or Google LLM conversation integrations are set up.

(@balloob - #95225) (documentation)

Breaking

ESPHome

As an additional security hardening measure, the default for allowing ESPHome devices to make service calls has changed. If you want to permit the ESPHome device to make service calls, it must be enabled in the options flow.

  • For existing devices, calling Home Assistant services continues to be allowed.
  • For newly configured devices, it must now be enabled in the options flow.

(@bdraco - #95143) (documentation)

Breaking

Home Assistant Supervisor

The default name given to backups created with the hassio.full_backup and hassio.partial_backup services is now longer "" but the date and time the backup was initiated (%Y-%m-%d %H:%M:%S, for example, "2023-07-05 13:37:42").

(@ludeeus - #94468) (documentation)

Breaking

Hyperion

The behavior of Hyperion lights has changed:

Turning off the light entity will only clear the priority you have configured during the integration setup. Other Home Assistant independent light sources in Hyperion might still be active and cause light to be emitted. If you want to turn the light off entirely, regardless of active light sources, you can enable the switch.[instance]_led_device entity that acts as a global switch.

External effects that are unrelated to the Hyperion light source (such as USB capture) have been removed from the light entity. To control them, enable the respective disabled-by-default switch entity.

([@Sab44 ] - #80478) (documentation)

Breaking

MQTT

If the initial temperature, min_temp, or max_temp is not set, the default temperature will be converted to the set temperature_unit or system default temperature unit if this is not degrees Celsius.

(@jbouwh - #93965) (documentation)


The behavior of MQTT climate when power_command_topic is set has been changed:

  • The hvac_mode state attribute is no longer optimistically set if power_command_topic is defined and climate.turn_on or climate.turn_off is called.
  • When hvac_mode is changed, payload_on or payload_off messages will not be published on the power_command_topic.

This also means power_command_topic is no longer deprecated.

(@jbouwh - #94832) (documentation)

Breaking

MusicCast

The values for the source attribute have changed. We wanted to show more user friendly values for the source attribute, such as "Net Radio" instead of "net_radio".

If you have any automation depending on the source state attribute of the media player entity, you will have to update these. Calling the select_source service will still be possible using the old source names. (@micha91 - #74954) (documentation)

Breaking

SMHI

The attribute cloudiness has been replaced by the attribute cloud_coverage. Please update any automation or scripts that is using this attribute to use the newly added cloud_coverage attribute.

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

Breaking

Slack

The previously deprecated YAML configuration of the Slack integration has been removed.

Slack is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

Xbox

The previously deprecated YAML configuration of the Xbox integration has been removed.

Xbox is now configured via the UI. Any existing YAML configuration has been imported in previous releases and can now be safely removed from your YAML configuration files.

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

Breaking

Z-Wave

Fan speed percentage for Honeywell(JE/Jasco) 39358 and Enbrighten(GE/Jasco) 55258 in wall fan controllers are now mapped to levels (low, medium, high).

This may affect scripts or automatons setting fan speeds to specific percentages.

(@jgrieger1 - #92371) (documentation)

Note

Farewell to the following

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

  • SenseME has been removed. Big Ass Fans changed the protocol in a newer firmware in April 2022. The Big Ass Fans integration can be used as a replacement, after updating to the latest firmware. (@bdraco - #94363)

From www.home-assistant.io/blog/2023/07/05/release-20237/#farewell-to-the-following

Full release notes for 2023.7.0

2023.7.1 – 2023.7.3: no action items (3 versions)

2023.8.0 2023-08-02

7 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2023/08/02/release-20238/#backward-incompatible-changes

Breaking

Python 3.10 support has been removed

Python 3.10 support has previously been deprecated and has now been removed. Home Assistant now requires Python 3.11 to run.

You don't have to do anything if you are using Home Assistant OS, Home Assistant Container, or Home Assistant Supervised installation method. In those cases, we handle this all for you.

Your system has been using Python 3.11 for quite some time already.

(@frenck - #97007)

Breaking

Discovery

The legacy discovery integration has been removed. This only affects the automatic discovery of Enigma2, Yamaha Network Receivers, and Bluesound.

These can still be manually configured as per usual.

Note this is for our very, very old discovery logic. This does not affect the discovery of any other integration/device/service.

If you still have discovery: listed in your YAML configuration, you can safely remove it.

(@frenck - #96856)

Breaking

Ecovacs

The Ecovacs integration has been migrated to the new "StateVacuumEntity" under the hood.

The states of the vacuum entity now report not only on or off, instead cleaning, paused, docked (implicit mean charging), returning (to base), idle and error. Further, the actions turn_on (start cleaning), and turn_off (stop cleaning and return to base) were superseded by three single actions start, stop and return_to_base.

(@mib1185 - #95920) (documentation)

Breaking

Google Nest

The legacy Works With Nest API is no longer supported. You must manually take action to use the SDM API by removing the Nest configuration from configuration.yaml and restarting Home Assistant. Then add the Nest integration following the instructions. Please review the documentation for information about which devices are supported.

Additionally, as a reminder, the legacy Works With Nest API is shutting down in September 2023.

(@allenporter - #96111) (documentation)

Breaking

MQTT

It's no longer allowed for an MQTT RGB light without a brighness_state_topic to report an RGB value of RGB=0,0,0. The reason is that for such lights, the light's brightness is derived from the RGB value, and an RGB value of RGB=0,0,0 corresponds to a brightness of 0 which is not allowed.

In case an MQTT RGB light without a brighness_state_topic reports 0,0,0 for R, G, and B, that update will be ignored.

(@jbouwh - #96286) (documentation)


The MQTT climate CONF_POWER_STATE_TOPIC and CONF_POWER_STATE_TEMPLATE were deprecated in HA Core 2023.2.0 and are now removed. Please remove these options from your configuration. The options were not implemented but will break your MQTT configuration if they are still present in your config.

(@jbouwh - #96771) (documentation)


The way MQTT entities are named and how device configuration can be shared between discovered entities has changed.

Sharing of device configuration

Discovered MQTT entities can share device configuration, meaning one entity can include the full device configuration, and other entities can link to that device by only setting mandatory fields.

The mandatory fields were previously limited to at least one of connection and identifiers, but have now been extended to at least one of connection and identifiers as well as the name.

Naming of MQTT entities

The naming of MQTT entities has been changed to be aligned with the entity naming guidelines:

  • The has_entity_name entity will be set to True on all MQTT entities.
  • This means any MQTT entity which is part of a device will automatically have its friendly_name attribute prefixed with the device name.
  • Unnamed binary_sensor, button, event, number, and sensor entities will now be named by their device class instead of being named "MQTT binary sensor" etc.
  • It's now allowed to set an MQTT entity's name to None to mark it as the main feature of a device.

(@jbouwh - #95159) (documentation)

Breaking

Philips Dynalite

The Dynalite configuration panel, which previously was on the Home Assistant sidebar, has moved. It can now be accessed via the integration page in Settings > Device & services > Dynalite > Configure.

(@frenck - #95920) (documentation)

Breaking

Renson

The state values of the Reason Ventilation integration have been changed to be more consistent with other integrations and are now lowercase. Additionally, it can now provide translations for the state values in the UI.

This means that the following state values have changed:

  • Off -> off
  • Level1 -> level1
  • Level2 -> level2
  • Level3 -> level3
  • Level4 -> level4
  • Breeze -> breeze
  • Holiday -> holiday

Please update any automations where you are using the state of this Renson sensor.

Note

Farewell to the following

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

  • Discovery has been removed. This is the old legacy discovery integration. See the backward-incompatible changes above for more information. (@frenck - #96856)
  • Mi Flora has been removed. This integration was replaced by the Xiaomi BLE integration a long time ago and was in a non-functional state. (@frenck - #96868)
  • Xiaomi Mijia BLE T&H Sensor has been removed. This integration was replaced by the Xiaomi BLE integration a long time ago and was in a non-functional state. (@frenck - #96869)

From www.home-assistant.io/blog/2023/08/02/release-20238/#farewell-to-the-following

Full release notes for 2023.8.0

2023.8.1 – 2023.8.4: no action items (4 versions)

2023.9.0 2023-09-06

16 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2023/09/06/release-20239/#backward-incompatible-changes

Breaking

BMW Connected Drive

The "Refresh from cloud" button has been removed. Use the homeassistant.update_entity service with any BMW entity for a full reload instead.

(@rikroe - #97864) (documentation)

Breaking

DoorBird

The doorbird_reset_favorites event is no longer fired when the clear webhook is called. Note: this event was never documented.

(@bdraco - #98585) (documentation)

Breaking

Enphase Envoy

Envoy versions < 3.9 (pre-API) are no longer supported as they require web scraping which is disallowed by ADR-0004.

(@bdraco - #97862) (documentation)

Breaking

ESPHome

To prevent cross-linked devices, replacing an ESPHome device with a different board is no longer allowed. Instead, delete the integration entry and re-add the new device when the mac address of the board changes.

(@bdraco - #98787) (documentation)

Breaking

EZVIZ

Only switches supported by the camera will be created. Non switchable switches have been removed.

(@RenierM26 - #95672) (documentation)

Breaking

Flume

You might get false positives for leak detected and high flow sensors if you have old unread notifications in the Flume app.

Before, the leak detected and high flow sensors would only trigger until you read the notification in the Flume app which was too late for Home Assistant to take any automated action.

Now, they trigger regardless if you have read or not the notification. They will remain active until you delete the notification in the Flume app, similar to the old behavior documented.

(@tronikos - #98560) (documentation)

Breaking

Hive

The previously deprecated service hive.boost_heating has been removed.

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

Breaking

HTTP / Webserver

Home Assistant can't be put in an iframe anymore by default. If you still want to embed the Home Assistant interface in a frame, you can do so by disabling use_x_frame_options by setting it to false in the http configuration.

(@frenck - #97784) (documentation)

Breaking

Météo-France

The Météo-France weather entities have been updated:

  • The forecast state attribute is deprecated and will be removed in Home Assistant Core 2024.3, you should instead use the weather.get_forecast service.
  • The config entry option to select hourly or daily forecast can no longer be adjusted, but any existing configuration of the forecast period will be respected until Home Assistant Core 2024.3.
  • Météo-France now provides a single weather entity which supports both hourly and daily forecast.

(@emontnemery - #98022) (documentation)

Breaking

Mill

Mill has moved to a new IoT solution and released a new API. The unique ID from the old API is no longer available, so all devices will be shown as new devices. Support for the heater fan will be added later.

(@Danielhiversen - #97497) (documentation)

Breaking

MQTT

MQTT device trackers no longer always update when there is no state change. This means that automations that trigger on a state change no longer are triggered if there is no change.

(@jbouwh - #98838) (documentation)

Breaking

Nextcloud

The CPU load sensor has been replaced, it is not a list of 3 values anymore, but there are now three single sensors for CPU load within last 1, 5, and 15 minutes.

(@mib1185 - #99141) (documentation)

Breaking

Plugwise

The maximum_boiler_temperature sensor entity has been replaced by a number entity, allowing control as well.

(@CoMPaTech - #97203) (documentation)


The additional schema state attributes of the climate entity have been removed. They have beeen previously replaced by a select entity.

(@bouwew - #98153) (documentation)

Breaking

Start.ca

Start.ca limit, usage, and used_remaining sensors will no longer be created when there's no bandwidth cap.

(@emontnemery - #98525) (documentation)

Breaking

Trafikverket Train

All attributes have been converted into their own sensors. The original sensor is now renamed with suffix "Departure time".

Any automation or script depending on these attributes needs to be adjusted to use these new sensors.

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

Breaking

Z-Wave

The entity naming logic has been updated to be less brittle. As a result, some zwave_js entities that you haven't given a custom name to may be renamed.

Since they are registered in the entity registry, the entity IDs will not change and your automations should therefore not be impacted by the change.

(@raman325 - #98140) (documentation)

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

If you use the Z-Wave JS add-on, you need at least version 0.1.88. If you use the Z-Wave JS UI add-on, you need at least version 1.15.9. If you use the Z-Wave JS UI Docker container, you need at least version 8.23.2. 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.31.0.

(@raman325 - #99250) (documentation)

Full release notes for 2023.9.0

2023.9.1 – 2023.9.3: no action items (3 versions)

2023.10.0 2023-10-04

9 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2023/10/04/release-202310/#backward-incompatible-changes

Breaking

HomeKit Bridge

The HomeKit integration now supports media player receivers. HomeKit expects receivers to be paired in accessory mode. Existing receivers paired in bridge mode should be re-added in accessory mode.

(@bdraco - #100717) (documentation)

Breaking

Modbus

The close_comm_on_error configuration is no longer optional, sockets will always be closed on error. Therefore, the close_comm_on_error is now deprecated and will be removed in Home Assistant 2024.3.

(@janiversen - #99946) (documentation)

Breaking

MQTT

An MQTT lock with a configured state topic will initialize with state unknown instead of state unlocked unless the lock is set to optimistic mode.

MQTT locks set to optimistic mode will still be initialized with the unlocked state. You should check if your automations are affected.

(@jbouwh - #100943) (documentation)

Breaking

NZBGet

The option to set a custom scan interval in NZBGet via the options UI has been removed. The update interval is now every 5 seconds.

If you want to restore the custom scan interval behavior, please see the homeassistant.update_entity service.

(@joostlek - #98869) (documentation)

Breaking

OpenTherm Gateway

Some of the older binary sensors and sensors from the OpenTherm gateway have been deprecated since January 2021. They have now been removed. Please use the new binary sensors and sensors that have been created since.

(@joostlek - #99712) (documentation)

Breaking

Pentair ScreenLogic

Some entity names have changed. The integration will migrate old entities to new names/IDs. You may have to manually update old entities used in, for example, your dashboards.

Invalid entities such as "Saturation Index" are removed if the required equipment is not configured.

(@dieselrabbit - #92475) (documentation)

Breaking

Supervisor

The default name given to backups created with the hassio.full_backup and hassio.partial_backup services are no longer the UTC date and time the backup was initiated. Instead, the local date and time are used for the name.

(@jpbede - #100959) (documentation)

Breaking

Twitch

Any existing app you have created in the Twitch Developer Portal to work with this integration must be updated to work with Home Assistant's UI authentication flow. Update the app's configuration to include https://my.home-assistant.io/redirect/oauth in its list of "OAuth Redirect URLs"

(@joostlek - issue#101414) (documentation)

Breaking

Z-Wave

Multiple WebSocket commands have been renamed based on this change in Z-Wave JS.

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

  • If you use the Z-Wave JS add-on, you need at least version 0.1.91.
  • If you use the Z-Wave JS UI add-on, you need at least version 2.0.0.
  • If you use the Z-Wave JS UI Docker container, you need at least version 9.0.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.32.0.

(@raman325 - #100833) (documentation)

Full release notes for 2023.10.0

2023.10.1 – 2023.10.5: no action items (5 versions)

2023.11.0 2023-11-01

10 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2023/11/01/release-202311/#backward-incompatible-changes

Breaking

Demo

In the unlikely event that you are using the demo integration, you will need to ensure that your YAML configuration for demo integration is only enabled via the integration domain key and not via the entity platform configuration. The latter has been removed.

# Example configuration.yaml

# This is correct
demo:

# This no longer works and should be removed
light:
  - platform: demo

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

Breaking

OpenUV

The OpenUV "UV Level" sensor has updated its possible state values so that translations can occur. The new values are:

  • extreme
  • high
  • low
  • moderate
  • very_high

If you previously used the state values of this sensor in your automations, you will need to update them to use the new values.

(@bachya - #101978) (documentation)

Breaking

OpenWeatherMap

The OpenWeatherMap rain and snow sensors now have a different unit of measurement (mm/h instead of mm) and a different device class (precipitation_itensity instead of precipitation).

(@MatteoGheza - #101485) (documentation)

Breaking

Transmission

The option to set a custom polling interval has been removed. If are using custom interval and really need it, you can use the homeassistant.update_entity in an automation to poll at your custom pace. See our documentation on defining a custom polling interval for more information.

(@engrbm87 - #98858) (documentation)

Breaking

Västtrafik

Västtrafik has upgraded all infrastructure for handling external access, including handling user accounts for 3rd party applications.

This means that users of the older infrastructure now need to migrate to use the new environment. Create a new account at https://developer.vasttrafik.se, then create a new application and subscribe to the Planera Resa v4 API.

Next replace your old client identifier and secret in your Home Assistant configuration.

For more information, see this official post from Västtrafik.

(@Miicroo - #102570) (documentation)

Breaking

WeatherFlow

The VOC device class has been removed from the air density sensor, and its unit of measurement has been changed to kg/m³.

(@natekspencer - #101777) (documentation)

Breaking

Withings

The Withings sleep sensors will now show only the data from last night instead of an aggregation of the data since the day before noon.

(@joostlek - #101993) (documentation)

Breaking

World Air Quality Index (WAQI)

The state attributes of the WAQI air quality sensor have been moved to their own sensors. The previous state attributes are now deprecated and will be removed in 2024.5.

If you are using the state attributes of the WAQI air quality sensor, you will need to update your automations to use the new sensors.

(@joostlek - #101217) (documentation)

Breaking

ZHA (King of Fans)

Improved support for King of Fans (Hampton Bay) breaks previous workarounds such as template fans (example) or automations/scripts that set fan speed percentage or preset.

If you have an automation that sets speed, it will now be at one speed higher. If you set the speed at 100% before, it would actually set the speed at 75%, but now it will be 100%. If you have an automation that sets the preset to 'on' to get 100% speed, now the request will fail, and you will have to change the speed to 100% instead.

(@tronikos - #101859) (documentation)

Breaking

Z-Wave

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

  • If you use the Z-Wave JS add-on, you need at least version 0.2.1.
  • If you use the Z-Wave JS UI add-on, you need at least version 2.2.3.
  • If you use the Z-Wave JS UI Docker container, you need at least version 9.2.3.
  • 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.33.0.

(@raman325 - #102790) (documentation)


Basic Command Class values were previously exposed as number entities and were disabled by default. They are now exposed as light entities and are enabled by default.

If you have scripts or automations that use any of these number entities, they should be updated to use the new light entities instead. Any previously created number entities for this Command Class can safely be deleted once you have validated that your scripts and automations are up to date.

(@raman325 - #101438) (documentation)

Note

Farewell to the following

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

  • Eight Sleep has been removed. The API has changed and is no longer accessible, making the integration unusable. (@raman325 - #102669)
  • IMAP email content has been removed. This functionality is now available in the IMAP integration. Users have been assisted to migrate to the new integration in the past months. (@jbouwh - #101233)
  • Shiftr has been removed. Shiftr.io closed its platform and is no longer available. (@stefanroelofs - #102224)

From www.home-assistant.io/blog/2023/11/01/release-202311/#farewell-to-the-following

Full release notes for 2023.11.0

2023.11.1 – 2023.11.3: no action items (3 versions)

2023.12.0 2023-12-06

14 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2023/12/06/release-202312/#backward-incompatible-changes

Breaking

Calendar

calendar.list_events uses an outdated response data format and is now deprecated, pending removal in Home Assistant 2024.6.

Please use calendar.get_events, which supports multiple entities, instead.

The output of this newer service changed slightly, as it now returns a mapping of entity IDs to lists of events instead of a list of events.

(@eifinger - #102481) (documentation)

Breaking

Counter

The previously deprecated counter.configure service has been removed.

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

Breaking

DSMR

DSMR entities will not automatically update on each received DSMR telegram when the value between telegrams has not changed.

If you rely on this, for example, for graphing, please refer to the statistics integration.

(@gigatexel - #104037) (documentation)


For users using the 5B version: The previous gas sensor (Gas consumption) will change to Gas consumption mbusX. Also, multiple gas sensors will be possible.

(@dupondje - #84097) (documentation)

Breaking

EZVIZ

The previously deprecated detection sensitivity service has been removed.

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

Breaking

Genius Hub

The initial state of the smart plug did not reflect the same state as in the Genius Hub application. Correcting this creates a backward-incompatible change in that the behavior is now correct but different.

If you have an automation that relies on this state, you should check if your automation or script is still behaving as expected.

(@GeoffAtHome - #102110) (documentation)

Breaking

Home Assistant API

When calling a service via the Home Assistant REST API, the service used to be canceled on connection drop, which is no longer the case. If you relied on that behavior, you would need to revisit the logic. With this change, a connection drop will not cancel the service call.

Also, a REST post to call a service with the /api/services/<domain>/<service> endpoint will no longer timeout after 10 seconds.

(@Shulyaka - #102657) (@MartinHjelmare - #104709) (documentation)

Breaking

HomeWizard Energy

The HomeWizard HWE-SKE (the wall plugs), SDM230, and SDM630 provided duplicate sensors for energy import and export: A total and a tariff of 1.

As only a single tariff is available on those, the total and tariff 1 are always the same. To clean this up, tariff 1 has been removed.

If you used this sensor in your energy dashboard, you will need to configure your energy dashboard to use the total import/export sensor instead.

(@frenck - #104493) (documentation)

Breaking

Nibe Heat Pump

S-Series entities priority-3102, hot-water-demand-mode-40057, and oper-mode-40238 are changed from a number entity to a select entity with mapping values for the possible choices.

If you have the old number entities enabled, you can delete them since they will no longer be provided by the integration.

(@elupus - #103788) (documentation)

Breaking

Open Exchange Rates

Remove rounding of the exchange rate.

Exchange rates are generally more sensitive to small changes, and some quotes need many decimal numbers to be accurate. The Open Exchange Rates service will provide different significant digits for different quotes.

You can change the display precision or use a template sensor to customize the rounding of the value.

(@MartinHjelmare - #103972) (documentation)

Breaking

Ping

The option to set a custom polling interval has been removed. If you are using custom interval and really need it, you can use the homeassistant.update_entity in an automation to poll at your custom pace. See our documentation on defining a custom polling interval for more information.

(@jpbede - #103743) (documentation)

Breaking

Scenes

Support for the, in November 2019 deprecated, attributes brightness_pct, color_name, flash, kelvin, profile, and transition have been removed from light scenes.

If you have used these attributes in your scenes, you will need to adjust those to this change.

(@emontnemery - #104254) (documentation)

Breaking

SMTP

The SMTP integration will send images as attachments to a plain text email instead of HTML in-line when the html field is not set.

Previous behavior was to send all images as HTML in-line even when the html field was not set. To continue sending images as in-line, please set the optional html field and include the images as <img src="cid:image_name.ext"> within the HTML block as described in the documentation.

(@aptalca - #93562) (documentation)

Breaking

Trafikverket Weather Station

Trafikverket Weather has changed its endpoint and is no longer providing the information for wind direction and precipitation in plain text, so therefore, these sensors have been removed:

  • Wind direction text
  • Precipitation name

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

Breaking

Weather

weather.get_forecast uses an outdated response data format and is now deprecated, pending removal in Home Assistant 2024.6.

Please use weather.get_forecasts, which supports multiple entities instead.

The output of this newer service changed slightly, as it now returns a mapping of entity IDs to lists of forecasts instead of a list of forecasts.

(@eifinger - #102534) (documentation)

Note

Farewell to the following

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

  • MyQ has been removed. Read all about it in our blog post.
  • eQ-3 Bluetooth Smart Thermostats have been removed. The integration has been in a non-functional state for a long time.

From www.home-assistant.io/blog/2023/12/06/release-202312/#farewell-to-the-following

Full release notes for 2023.12.0

2023.12.1 – 2023.12.4: no action items (4 versions)

2024.1.0 2024-01-03

6 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2024/01/03/release-20241/#backward-incompatible-changes

Breaking

Blink

The service calls of Blink have been adjusted. This affects blink.trigger_camera, blink.save_video and blink.save_recent_clips.

This change will require these service calls to be updated with a target for the camera and by removing name from data of the blink service calls.

For example, service call before 2023.11:

service: blink.save_video
data:
  name: Front door
  filename: test.mp4

Service call after 2023.11 and before 2024.1:

service: blink.save_video
data:
  device_id: 87dc3b85c18ee84f8c322a95e8230eb2
  name: Front door
  filename: test.mp4

New service call:

service: blink.save_video
target:
  entity_id:
    - camera.front_door
data:
  filename: test.mp4

The blink.send_pin service now uses an integration/configuration entry selector:

Example service call before 2023.11:

service: blink.send_pin
data:
  pin: "1234"

Service call after 2023.11 and before 2024.1:

service: blink.send_pin
data:
  pin: "1234"
  device_id: 87dc3b85c18ee84f8c322a95e8230eb2

New service call:

service: blink.send_pin
data:
  config_entry_id: a1bee602deade2b09bc522749bbce48e
  pin: "1234"

The blink.blink_update service is deprecated and will be removed in 2024.7.0. Use the homeassistant.update_entity service instead.

(@mkmer - #105413) (documentation)

Breaking

Home Assistant shutdown event

The event key in the (undocumented) trigger data for the homeassistant trigger platform is now the string shutdown for a homeassistant trigger configured to fire on shutdown instead of an Event object.

(@tetele - #91165) (documentation)

Breaking

Modbus

Setting swap: none has been removed from the Modbus configuration. It is identical to omitting it: swap:.

(@janiversen - #104713) (documentation)

Breaking

PrusaLink

  • The printer state now contains several new statuses, most importantly "attention", which always needs your intervention.
  • Firmware 4.7.0 is now the minimum version for Prusa XL and MK4.
  • Firmware 5.1.0 is now the minimum version for Prusa Mini since 4.7.x and 5.0.x aren't available for the Mini.

(@Skaronator - #103396) (documentation)

Breaking

Reolink

The Reolink Infrared lights in night mode entity has been migrated from the light to the switch domain.

This means the entity ID also changed, and automations and dashboards may need to be adjusted to use the new entity ID.

If you want to go back to the light domain, use the switch_as_x "Show as" option on the new Infrared lights in night mode switch entity and select light.

(@starkillerOG - #105916) (documentation)

Breaking

Shelly

The minimum supported firmware version for generation 1 devices is 1.11.0 (2021-07-15). The minimum supported firmware version for generation 2 devices is 1.0.0 (2023-08-03).

You must update your devices to the firmware versions listed or newer.

(@bieniu - #105384) (documentation)

Full release notes for 2024.1.0

2024.1.1 – 2024.1.6: no action items (6 versions)

2024.2.0 2024-02-07

26 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2024/02/07/release-20242/#backward-incompatible-changes

Breaking

Authentication

We changed the way refresh tokens are handled. Refresh tokens are part of what keeps you logged in to Home Assistant.

Refresh tokens will be automatically deleted when unused. A refresh token is considered unused if it has not been used for a login within 90 days.

If your logged-in session hasn’t been used for 90 days, you will be logged out. You will need to log in again.

We recommend using Long-lived access tokens if you need a permanent token.

(@mib1185 - #108428) (documentation)

Breaking

Blink

The options flow that gave the option to set a custom scan interval has been removed.

Adjustable scan interval is no longer allowed, but the option has had no effect on the integration since 2023.11.

You can use an automation as an alternative to create a custom polling rate (documentation). Updating one entity in a blink configuration will update all entities in each blink configuration.

(@mkmer - #106735) (documentation)


Update Wi-Fi diagnostic to match new API units - previously Blink reported RSSI dBm, now they report generic 0-5 for signal strength.

(@mkmer - #107539) (documentation)

Breaking

Cisco Webex Teams

This integration has been disabled. The upstream libraries used by Home Assistant are not compatible with Python 3.12.

This compatibility issue has been reported upstream.

(@frenck - #108163) (documentation)

Breaking

EZVIZ

The services ezviz.ptz, ezviz.sound_alarm, and alarm_sound have been moved to button and select entities in release 2023.8. Support for the deprecated services has now been completely removed.

If you are using these services in automations or scripts, you will need to update them to match this change.

(@jpbede - #107582) (documentation)

Breaking

Google Generative AI Conversation

Any previous integration setups might have to be recreated or reconfigured with the new models/gemini-pro instead of the legacy models/chat-bison-001.

(@tronikos - #105789) (documentation)

Breaking

HomeWizard Energy

The Gas meter ID sensor is removed and the meter ID is now shown as a serial number in the device info panel instead.

(@DCSBL - #100684) (documentation)

Breaking

Honeywell Total Connect Comfort (US)

The preset mode was returning "unknown" rather than "none". Any references to preset_mode may need to be updated.

(@mkmer - #108599) (documentation)

Breaking

Huawei LTE

The services huawei_lte.clear_traffic_statistics and huawei_lte.reboot have been moved to button entities in release 2023.8. Support for the deprecated services has now been completely removed.

If you are using these services in automations or scripts, you will need to update them to match this change.

(@jpbede - #107578) (documentation)

Breaking

JustNimbus

The following sensors have been removed from the JustNimbus integration since they're no longer available through JustNimbus' API:

  • Pump starts
  • Pump hours
  • Error code
  • Total replenished
  • Pump flow
  • Drink flow

The following sensors have been renamed:

  • Total saved (total_saved) -> Total saved (water_saved)
  • Total use (totver) -> Total use (water_used)
  • Maximum reservoir content (reservoir_content_max) -> Reservoir capacity (reservoir_capacity)

Automations or scripts using any of the removed or renamed entities should be updated. Once updated, the old entities can be safely removed.

(@kvanzuijlen - #99212) (documentation)

Breaking

Litter-Robot

The services vacuum.turn_on and vacuum.turn_off were deprecated in 2023.11. Support for the deprecated services has now been completely removed.

If you are still using them, please adjust your automations and scripts and use vacuum.start and vacuum.stop instead.

(@jpbede - #107882) (documentation)

Breaking

Lutron

The Lutron integration previously created fans as light entities. This has been changed to create actual fan entities instead.

If you have automations, scripts, scenes, or dashboards that used these light entities, you will need to update them to use the new fan entities.

(@wilburCforce - #107402) (documentation)

Breaking

MELCloud

The daily energy sensors have been removed to prevent being throttled by the external API. This mostly affects ATW devices.

For ATA devices, this sensor is also removed. However, the total energy consumed (if your device supports that) remains available. The latter supports long-term statistics, providing insights into daily energy usage via the energy dashboard or statistic card.

(@vilppuvuorinen - #109832) (documentation)

Breaking

Met Office

This integration has been disabled. The upstream libraries used by Home Assistant are not compatible with Python 3.12.

This compatibility issue has been reported upstream.

(@frenck - #108163) (documentation)

Breaking

MQTT

MQTT sensor or binary_sensor configuration with an entity_category explicitly set to config will fail to set up. Maintainers should set the entity_category attribute to diagnostic or omit the config attribute.

Related developer blogpost

(@jbouwh - #107199) (documentation)


When an MQTT entity has a device name equal to the entity name or starts with the device name, this will no longer be corrected.

When entities like these are created, they will have device and entity names in the friendly name. Suppose the device name is omitted because it is the same as the entity name. In that case, the entity name attribute should be null in the JSON payload or YAML configuration.

Related developer blogpost

(@jbouwh - #107188) (documentation)


The support for MQTT vacuum entities with a legacy schema is removed after 6 months of deprecation. Users can use the state schema instead, which is now the default.

(@jbouwh - #107274) (documentation)

Breaking

Proximity

The proximity entity (proximity.*) is deprecated and will be removed in 2024.8. It is superseded by sensor entities.

For each tracked person or device, one sensor for the distance and the direction of travel to/from the monitored zone is created. Further, for each Proximity configuration, one sensor that shows the nearest device or person and its distance and direction of travel to the monitored zone is created.

(@mib1185 - #108730) (documentation)

Breaking

Renson

The start time of day and start time of night sensors have been replaced by time entities. If you used these sensors in automations or scripts, you will need to update them to use the new time entities.

(@jimmyd-be - #105031) (documentation)

Breaking

RESTful Command

Call to RESTful command services will no longer silently fail and will raise an exception on, for example, timeout or decoding errors.

You could consider using continue_on_error for scripts and automations that use RESTful commands that are allowed to fail occasionally.

(@RoboMagus - #97208) (documentation)

Breaking

Roborock

The service vacuum.start_pause was deprecated in 2023.8. Support for the deprecated service has now been completely removed.

If you are still using this service, please adjust your automations and scripts, to use vacuum.pause or vacuum.start instead.

(@jpbede - #107895) (documentation)

Breaking

Sensors

Setting last_reset for entities with a state_class other than total is no longer supported. Please update your configuration if state_class is manually configured (for example, in templates or when using customize to override this attribute).

(@jpbede - #108391) (documentation)

Breaking

Swiss public transport

The state value of the sensor is now a standardized timestamp. Further, all timestamps and durations in the additional fields are now also proper datetime/durations.

(@miaucl - [#12341064855]) (documentation)

Breaking

TP-Link Smart Home

To prevent overloading the power strips, the energy data is now polled every 60 seconds. If you need to poll the data faster, please use an automation that calls the homeassistant.update_entity service.

(@bdraco - #104208) (documentation)

Breaking

Traccar

The YAML configuration for the Traccar integration has been deprecated and will be removed in Home Assistant 2024.8.0. Your YAML configuration will be automatically imported to the new Traccar Server integration.

If you previously used the scan_interval option, this is not being imported. If you are in need of a custom polling interval, you can use an automation to define your own custom polling behavior. Learn more about that here.

(@ludeeus - #109226) (documentation)

Breaking

Tuya

Tuya has provided an easier and improved login method for Home Assistant users.

Having a developer account with Tuya is no longer required; instead, you can scan a QR code with your Tuya Smart or Smart Life app to authenticate it with Home Assistant.

After updating to this release, Home Assistant will ask you to re-authenticate your Tuya Smart or Smart Life account using this new method.

(@frenck - #109155) (documentation)


The services vacuum.turn_on and vacuum.turn_off were deprecated in 2023.8. Support for the deprecated services has now been completely removed.

If still use them, please adjust your automations and scripts and use vacuum.start and vacuum.stop instead.

(@jpbede - #107896) (documentation)


Previously, Tuya would fall back to using the metric system if the temperature unit was not reported by a climate device. This behavior has been changed to use the default unit configured on your system instead.

(@DellanX - #108050) (documentation)

Breaking

Webhooks

Since version 2023.7 you have been informed that the "local only" option of webhooks will become the default. With this release this change is now put into effect. Please, if needed, adjust your automation triggers.

(@jpbede - #107670) (documentation)

Breaking

Withings

In withings, the unit of measurement of all duration-related sensors (for example, sleep, goal, and active time today) has been changed from measuring in seconds to measuring in either hours or minutes.

If you want to measure in a different unit, please change the preferred unit of measurement in the entity settings.

(@joostlek) (documentation)

Breaking

Z-Wave

The default rounding of numeric sensors to two decimals has been removed.

We now let the device and driver decide what precision should be reported. This allows devices with greater precision to report accurately.

You can change the display precision in the UI for the sensor or use a template sensor if you want to change the precision.

(@MartinHjelmare - #107100) (documentation)


Set suggested precision to 0 decimals for voltage sensors with a native unit in V. This will uniform the display precision of voltage sensors where there otherwise seems to be a variety of precision reported from different devices.

If you want to change the precision, you can do that in the sensor options in the UI or with a template sensor.

(@MartinHjelmare - #107116) (documentation)


The Fan and Dry climate Preset modes have been removed after a period of deprecation. If you haven't done so, you should update your automations or scripts to use the corresponding Dry and Fan HVAC modes instead.

(@jbouwh - #108124) (documentation)

Note

Farewell to the following

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

  • Facebox has been removed. It is no longer possible to get API keys, and thus, it is no longer possible to use this integration. (@reedy - #107005)
  • Legrand Home+ Control has been removed as their API shut down in December. Use the Netatmo integration as an alternative to integrate your Legrand Home+ Control devices. (@jpbede - #107587)
  • Life360 has been removed. They are now actively blocking third-party access, including Home Assistant. The Home Assistant Companion app is a good and (above all) privacy-friendly alternative. (@pnbruckner - #107805)

From www.home-assistant.io/blog/2024/02/07/release-20242/#farewell-to-the-following

Full release notes for 2024.2.0

2024.2.1 – 2024.2.5: no action items (5 versions)

2024.3.0 2024-03-06

5 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2024/03/06/release-20243/#backward-incompatible-changes

Breaking

AEMET

The daily data for the current day wasn't available after midday, and now it will be. Automations and scripts relying on day[0] for checking the next-day forecast will have to be adjusted to use day[1] instead.

(@Noltari - #107795) (documentation)

Breaking

JuiceNet

The JuiceNet integration has been removed.

Enel X has migrated from JuiceNet to JuicePass, rendering the JuiceNet integration useless. Background and alternative solutions to the juicenet integration can be found in the related issue.

(@emontnemery - #111477)

Breaking

Met.no

The met.no integration previously created two entities for each configured location: one provided daily weather forecasts, and one provided hourly forecasts.

The met.no integration now only creates a single entity that provides both daily and hourly weather forecasts.

(@emontnemery - #97023) (documentation)

Breaking

MQTT

Aux heat, deprecated in Home Assistant Core 2023.9, is now removed from the MQTT climate.

(@jbouwh - #109513) (documentation)

Breaking

Z-Wave

For Z-Wave climate entities, the behavior of the climate.turn_on service has changed. Previously, the service would act in the following order depending on whether the corresponding conditions were met:

  1. If the entity supported the off mode and exactly one additional mode, climate.turn_on would set the mode to the additional mode.
  2. If conditions for 1 were not met and at least one of the following modes were available, the service would set the mode to the first mode it found in the specified order: heat_cool, heat, cool.
  3. If conditions for 1 and 2 were not met, the service would silently do nothing.

Now, the service follows the following behavior in order:

  1. If the entity supports the resume thermostat mode, it will be used to restore the last mode you used before the entity was turned off.
  2. If the condition for 1 isn't met and the entity was turned off in Home Assistant, and Home Assistant wasn't restarted, Home Assistant remembers the last "on" mode and will set it to that mode. Home Assistant will be unable to set the entity to the previous mode if Home Assistant starts with the entity already in off mode since the integration will not know what the previous mode was.
  3. If conditions for 1 and 2 are not met and at least one of the following modes is available, the service sets the mode to the first mode it finds in the specified order: heat_cool, heat, cool (no change to condition 2 above).
  4. If conditions for 1, 2, and 3 are not met, the mode will be set to the first supported mode it finds (like dry or fan_only).

(@raman325 - #109187) (documentation)

Full release notes for 2024.3.0

2024.3.1 – 2024.3.3: no action items (3 versions)

2024.4.0 2024-04-03

13 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2024/04/03/release-20244/#backward-incompatible-changes

Breaking

Python 3.11 support has been removed

Python 3.11 support has previously been deprecated and has now been removed. Home Assistant now requires Python 3.12 to run.

You don’t have to do anything if you are using the Home Assistant Operating System, Home Assistant Container, or Home Assistant Supervised installation method. In those cases, we handle all of this for you. Your system has been using Python 3.12 for quite some time already.

(@frenck - #114220)

Breaking

AEMET OpenData

The AEMET OpenData integration previously created two entities for each configured location: one provided daily weather forecasts and the other hourly forecasts.

The AEMET OpenData integration now only creates a single entity that provides both daily and hourly weather forecasts.

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

Breaking

Dexcom

The trend sensor now uses values that are using snake_case instead of a space in the middle:

  • rising quickly -> rising_quickly
  • rising slightly -> rising_slightly
  • falling slightly -> falling_slightly
  • falling quickly -> falling_quickly

Please update your automations and scripts accordingly.

(@joostlek - #112423) (documentation)

Breaking

ecobee

The non-functional away preset mode has been replaced with the correct away_indefinitely preset mode.

If any automation or script depends on the away preset mode, it needs to be updated.

(@alexsydell - #108636) (documentation)

Breaking

Environment Canada

The Environment Canada integration previously created two entities for each configured location: one provided daily weather forecasts and the other hourly forecasts.

The Environment Canada integration now only creates a single entity that provides both daily and hourly weather forecasts.

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

Breaking

National Weather Service (NWS)

The National Weather Service integration previously created two entities for each configured location: one provided daily weather forecasts and the other hourly forecasts.

The National Weather Service integration now only creates a single entity that provides both daily and hourly weather forecasts.

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

Breaking

Met Éireann

The Met Éireann integration previously created two entities for each configured location: one provided daily weather forecasts and the other hourly forecasts.

The Met Éireann integration now only creates a single entity that provides both daily and hourly weather forecasts.

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

Breaking

Met Office

The Met Office integration previously created two entities for each configured location: one provided daily weather forecasts and the other hourly forecasts.

The Met Office integration now only creates a single entity that provides both daily and hourly weather forecasts.

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

Breaking

Modbus

The Modbus integration does not allow a configuration with the device only (no entities); this will create an issue, and the entry will not be loaded.

For the special cases (like some custom_components) where it is wanted, please add a dummy entity.

(@janiversen - #113516) (documentation)

Breaking

MQTT

Support for brightness is now assumed for mqtt lights with the json schema unless only color modes rgb, rgbw, or rgbww are supported.

For lights which only support color modes rgb, rgbw, or rgbww, the brightness option flag can still be set to false if brightness is not supported. In this case brightness support is emulated in Home Assistant by scaling the RGBx-values.

For all other color modes except ColorMode.ONOFF, it is assumed brightness is supported, and the brightness attribute will be included in the MQTT payload when the brightness attribute is supplied to the light.turn_on service.

(@jbouwh - #111676) (documentation)

Breaking

myUplink

If you have a Nibe SMO 20 in your account, you will notice that some 550 entities are no longer provided by the integration.

You can safely remove these entities as the integration does not use them.

(@astrandb - #113493) (documentation)

Breaking

Waze Travel Time

The options excl_filter and incl_filter now filter for exact matches to street names in the route. Previously, they only filtered on the short description of the route.

(@eifinger - #108613) (documentation)

Breaking

Weather

The previously deprecated forecast attribute of weather entities, has now been removed. Use the weather.get_forecasts service to get the forecast data instead.

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

Note

Farewell to the following

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

  • OpenCV has been removed. The integration has been in a broken state for over a year and currently has no path forward. (@thecode - #113455)

From www.home-assistant.io/blog/2024/04/03/release-20244/#farewell-to-the-following

Full release notes for 2024.4.0

2024.4.1 – 2024.4.4: no action items (4 versions)

2024.5.0 2024-05-01

10 Breaking, 1 Note — show quotes

Quoted from www.home-assistant.io/blog/2024/05/01/release-20245/#backward-incompatible-changes

Breaking

AVM Fritz!SmartHome

Activating the HVAC mode heat no longer overwrites the current target temperature with the comfort temperature but retains the currently set target temperature unless the thermostat is in HVAC mode off, in which case the comfort temperature is still set.

Use the available presets or the set temperature service to set the target temperature for HVAC-mode heat.

(@jayme-github - #112119) (documentation)

Breaking

Big Ass Fans

The BAF fan Auto preset mode has been renamed to auto. Any scripts or automations using this need to be updated accordingly.

(@mill1000 - #109944) (documentation)

Breaking

ecobee

The preset modes Away, Home, and Sleep have been renamed to the lower-case variants away, home, and sleep.

This is consistent with the rest of Home Assistant, which also means Home Assistant can support icons and translations for these.

If you used these preset modes in your automations or scripts, you will need to update them to use the new names.

(@gagebenne - #116072) (documentation)

Breaking

Honeywell Total Connect Comfort (US)

The auxiliary heat climate option has been deprecated and will be removed in Home Assistant 2024.10.

Use the newly added emergency heat switch entity to set the thermostat mode to the previous auxiliary heat mode.

(@mkmer - #114110) (documentation)

Breaking

IMAP

The default for new entries is that the text and headers will no longer be included in the imap_content event data. Instead, if needed, you can fetch the email content using the imap.fetch service.

It will not break for existing entries where we assume text and headers are included.

(@luca-angemi - #115108) (documentation)

Breaking

Insteon

The Insteon configuration panel, which was previously on the Home Assistant sidebar, has moved to the integration page in Settings -> Device & services -> Insteon -> Configure.

(@teharris1 - #105581) (documentation)

Breaking

LG Netcast

Turn on action for turning the TV on via a custom script within configuration.yaml has been changed to use a custom automation trigger lg_netcast.turn_on or a device trigger that can be set up from the UI.

(@splinter98 - #104913) (documentation)

Breaking

Netatmo

The state of the Netatmo wind and gust direction sensor provided by the weather station now exposes the state in lowercase.

(@joostlek - #115413) (documentation)


The state of the Netatmo health index sensor provided by the weather station now exposes the state in lowercase.

(@joostlek - #115409) (documentation)

Breaking

Recorder

Previously, recorder.purge_entities called with no arguments would purge all entities. This PR makes this call raise an error instead.

It was too easy for users to accidentally purge their entire database using the old logic. Users who want to purge all entities can still use the recorder.purge service to achieve the same effect, and that service is more obvious in how it behaves.

(@karwosts - #110066) (documentation)

Breaking

Traccar Server

The following attributes have been removed from device_tracker entities provided by the Traccar server integration:

  • address
  • altitude
  • battery_level
  • geofence
  • speed

All of these are now dedicated sensor entities that you can enable.

(@ludeeus - #111374) (documentation)


The following attributes have been removed from device_tracker entities provided by the Traccar server integration:

  • motion
  • status

All of these are now dedicated binary sensor entities that you can enable.

(@ludeeus - #114719) (documentation)

Note

Farewell to the following

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

  • Epson Workforce has been removed. The source package/dependency this integration uses, is no longer available. (@joostlek - #115201)

From www.home-assistant.io/blog/2024/05/01/release-20245/#farewell-to-the-following

Full release notes for 2024.5.0

2024.5.1 – 2024.5.5: no action items (5 versions)

2024.6.0 2024-06-05

9 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2024/06/05/release-20246/#backward-incompatible-changes

Breaking

Anova

The State and Mode entities for Anova devices have been changed to match the new protocol messaging. Any automations based on these entities will need to be updated.

(@Lash-L - #109508) (documentation)

Breaking

AVM FRITZ!Box Tools

The previously deprecated services reboot, reconnect, and cleanup have been removed. Please use the corresponding button entities instead.

(@mib1185 - #118108) (documentation)

Breaking

File

The notify services for the file integration now require that the file path is an allowed path. You should check the accessed file is in the allowlist_external_dirs to ensure your automations keep working.

(@jbouwh - #116861) (documentation)

Breaking

MQTT

MQTT Lock now supports the lock open and opening states. When a lock is used in optimistic mode, its state will become open instead of unlocked when it is opened.

(@jbouwh - #117110) (documentation)


The behavior on processing empty and "None" state payloads for MQTT entities has been made more predictable for alarm_control_panel, climate, cover, device_tracker, lock, select, valve, and water_heater items:

  • A "None" (string) for a state payload generally means the state becomes unknown.
  • An empty payload is ignored.

Previously, a "None" state could be considered invalid or ignored.

(@jbouwh - #117813) (documentation)

Breaking

OpenWeatherMap

Migration to the new library with support of OneCall API (3.0).

OWM API v2.5 will be closed in June 2024. All OpenWeatherMap integrations must be migrated to mode (API) v3.0 to avoid service interruption.

Before the migration, you must have an active subscription (be aware that subscription activation takes up to 2h). After the subscription is activated, users can migrate integrations to mode v3.0 via repair notification or manually via the integration configuration menu.

The subscription has a free tier with 1000 calls/day. Consider setting the limit on the OpenWeatherMap website to stay under the threshold where API usage incurs a cost.

OpenWeatherMap official statement

(@freekode - #116870) (documentation)

Breaking

Synology DSM

The option to define a custom timeout has been removed. The timeout is set static to a sane value of 30 seconds.

(@mib1185 - #116815) (documentation)

Breaking

Webmin

Duplicate entities may appear due to unique ID changes. The obsolete entities can be removed.

(@autinerd - #113084) (documentation)

Breaking

World Air Quality Index (WAQI)

The state attributes of the WAQI air quality sensor have been removed. The attributes have been replaced by individual sensors; use these instead.

(@joostlek - #116595) (documentation)

Breaking

Z-Wave

With this release, you will need to update your zwave-js-server instance.

You must use zwave-js-server 1.35.0 or greater (schema 35).

  • If you use the Z-Wave JS add-on, you need at least version 0.5.0.
  • If you use the Z-Wave JS UI add-on, you need at least version 3.4.2.
  • If you use the Z-Wave JS UI Docker container, you need at least version 9.10.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.35.0.

(@raman325 - #117288) (documentation)

Full release notes for 2024.6.0

2024.6.1 – 2024.6.4: no action items (4 versions)

2024.7.0 2024-07-03

23 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2024/07/03/release-20247/#backward-incompatible-changes

Breaking

Authentication

The legacy API password (legacy_api_password) authentication provider that was deprecated in Home Assistant 2023.12, has been removed.

(@edenhaus - #119976) (documentation)

Breaking

Azure DevOps

All attributes of the "latest build" sensor are now deprecated; each now has a dedicated sensor entity available. If you use these attributes in your automations or scripts, you need to adjust these to use one of the new sensors instead.

(@timmo001 - #114948) (documentation)

Breaking

Blink

The previously deprecated Blink update service has now been removed.

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

Breaking

BMW Connected Drive

The charging mode and charging status sensors have been updated to use lowercase state values. If you use these sensors in your automations or scripts, you must update them to use the new lowercase values.

(@rikroe - #118751) (documentation)

Breaking

Calendar

Calendar service list_events was deprecated in favor of get_events in Home Assistant 2023.12 and has now been removed.

Use the new get_events service to retrieve events from calendar entities instead.

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

Breaking

ComEd Hourly Pricing

The unit of measurement for the ComEd Hourly Pricing integration has been corrected from c to ¢/kWh.

(@themaxgross - #115594) (documentation)

Breaking

DNS IP

The attribute names Resolver and Querytype have been renamed to resolver and querytype. If you use these in any automations or scripts, you need to update them to use the new lowercase names.

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


The attributes resolver, querytype, and ip_addresses for the DNS IP sensor are excluded from the recorder and no longer stored in history.

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

Breaking

Fast.com

The previously deprecated speedtest service from fastdotcom has been removed. Use the homeassistant.update_entity service to refresh and run a speedtest manually instead.

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

Breaking

Intergas InComfort/Intouch Lan2RF gateway

Based on the boiler display code or fault code, the boiler status has been refactored to be signified and unique so we can start supporting localization.

Depending on the old status texts, automations or scripts might break. You need to ensure your automations and scripts are updated to use the new status values.

The new display codes are:

  • 0: opentherm
  • 15: boiler_ext
  • 24: frost
  • 37: central_heating_rf
  • 51: tapwater_int
  • 85: sensortest
  • 102: central_heating
  • 126: standby
  • 153: postrun_boiler
  • 170: service
  • 204: tapwater
  • 231: postrun_ch
  • 240: boiler_int
  • 255: buffer

The new fault codes are:

  • 0: sensor_fault_after_self_check
  • 1: cv_temperature_too_high
  • 2: s1_and_s2_interchanged
  • 4: no_flame_signal
  • 5: poor_flame_signal
  • 6: flame_detection_fault
  • 8: incorrect_fan_speed
  • 10: sensor_fault_s1
  • 11: sensor_fault_s1
  • 12: sensor_fault_s1
  • 13: sensor_fault_s1
  • 14: sensor_fault_s1
  • 20: sensor_fault_s2
  • 21: sensor_fault_s2
  • 22: sensor_fault_s2
  • 23: sensor_fault_s2
  • 24: sensor_fault_s2
  • 27: shortcut_outside_sensor_temperature
  • 29: gas_valve_relay_faulty
  • 30: gas_valve_relay_faulty

(@jbouwh - #119207) (documentation)

Breaking

La Marzocco

On March 19th, 2024, La Marzocco released a machine firmware update, v3.5-rc5, together with a new version of the La Marzocco Home App.

Once the app update is installed, the previous scheduling functionality is removed from the app, and a new scheduling mode is shown. This mode is disabled until the machine's firmware has also been updated.

Similarly, if the machine's firmware is updated before the app, the previous scheduling functionality does not work.

The previous calendar and auto on/off switches are replaced with calendars and switches per schedule.

(@zweckj - #113935) (documentation)

Breaking

Logitech Harmony Hub

The harmony switch entities that were deprecated since Home Assistant 2024.1, have now been removed.

(@joostlek - #119206) (documentation)

Breaking

OpenWeatherMap

The now obsolete forecast sensors have been removed. They have been fully replaced by weather.get_forecasts service.

(@freekode - #119922) (documentation)

Breaking

Shelly

The switch entity for controlling a Shelly Gas Valve Add-on has been removed, and a valve entity has taken its place. If you use the switch entity in your automations or scripts, you must update them to use the new valve entity.

(@bieniu - #119817) (documentation)

Breaking

SimpliSafe

SimpliSafe no longer contains functionality to set a code for use within Home Assistant. This was a virtual code that was not used by the SimpliSafe system.

(@bachya - #118759) (documentation)

Breaking

SQL

An SQL query generating several columns output was putting the additional attributes on the SQL sensor.

From now on, these are still shown as state attributes but are no longer recorded in the database as attributes on this particular sensor (as the data for these attributes are already present in the database from where they come).

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

Breaking

Sun WEG

The new API version this integration now uses doesn't provide the kWh per kWP information, so that sensor is no longer available.

(@rokam - #118435) (documentation)

Breaking

Swiss public transport

Swiss public transport no longer provides additional state attributes; since the release of Home Assistant 2023.12, all information has been moved to dedicated individual sensors.

(@miaucl - #120256) (documentation)

Breaking

Tami4 Edge / Edge+

Due to upstream API changes, the UV & filter's last replaced date has been removed.

Additionally, uv_status & filter_status sensor entities have been changed to uv_installed and filter_installed.

(@Guy293 - #119158) (documentation)

Breaking

UniFi Protect

The set default doorbell text service (set_default_doorbell_text) has been removed. UI has removed this functionality in UI Protect 4.x.

It is still possible to set a custom message using the other services (unifiprotect.add_doorbell_text and unifiprotect.remove_doorbell_text, and setting it via the select entity), but there is no longer a default.

(@bdraco - #119695) (documentation)

Breaking

Utility Meter

The source entity, period, and CRON pattern entity state attributes have been removed from the sensor entity and moved to the integration diagnostics.

Note that these values are constant throughout the lifetime of a utility meter.

(@dgomes - #118637) (documentation)

Breaking

Weather

Weather service get_forecast was deprecated in favor of get_forecasts in Home Assistant 2023.12 and has now been removed.

Use the new get_forecasts service to retrieve forecast information from weather entities instead.

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

Breaking

WLED

The previously deprecated firmware binary sensor has been removed. Use the provided update entity for your WLED device instead.

(@frenck - #119984) (documentation)

Breaking

Z-Wave

With this release, you will need to update your zwave-js-server instance.

You must use zwave-js-server 1.36.0 or greater (schema 36).

  • If you use the Z-Wave JS add-on, you need at least version 0.6.0.
  • If you use the Z-Wave JS UI add-on, you need at least version 3.8.2.
  • If you use the Z-Wave JS UI Docker container, you need at least version 9.14.2.
  • 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.36.0.

(@raman325) (documentation)

Full release notes for 2024.7.0

2024.7.1 – 2024.7.4: no action items (4 versions)

2024.8.0 2024-08-07

20 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2024/08/07/release-20248/#backward-incompatible-changes

Breaking

Recorder database upgrade notice

This notice applies only if you use the recorder integration with a MySQL or PostgreSQL database. If you are using the default SQLite database, you can ignore it.

This release includes a database upgrade/migration that increases the size of the number we can store for the identifier fields. For a more technical explanation, we are upgrading integer fields for ID columns from a 32-bit integer to BIGINT, which is a 64-bit integer.

This can cause the database upgrade to take longer than usual, depending on the size of your database.

Please be patient and let the upgrade process finish. Do not interrupt the upgrade process, as this can lead to a corrupted database.

(@emontnemery - #121025) (documentation)

Breaking

BlinkStick

The Blinksticklight integration is disabled because it requires software that is not open source. Any help or contributions to make this integration work without the closed-source software is welcome.

(@joostlek - #121846) (documentation)

Breaking

Bluesound

Sources behave slightly differently. Radio station providers (like TuneIn and Radio Paradise) are no longer part of the source list and are not selectable as sources.

Presets that play a specific radio station can be created in the BluOS app and are displayed as sources in Home Assistant.

The currently selected source tries to match those presets and falls back to the radio station provider (like TuneIn, Radio Paradise).

(@LouisChrist - #117257) (documentation)

Breaking

BMW Connected Drive

Describing attributes car and vin have been removed from BMW entities. If you need to look them up, please get them from the device info screen.

(@rikroe - [#120830]) (documentation)

Breaking

Climate

Scenes that use the deprecated auxiliary heat (aux_heat attribute) will no longer restore/set the auxiliary heat state when the scene is activated.

(@bjpetit - #121873) (documentation)

Breaking

Concord232

The Concord232 integration is disabled because it requires software that is not open source. Any help or contributions to make this integration work without the closed-source software is welcomed.

(@joostlek - #121974) (documentation)

Breaking

DoorBird

Previously, resetting the device favorites required working out a complicated URL. A button is now available to perform this operation.

(@bdraco - #121720) (documentation)

Breaking

Dovado

The Dovado integration is disabled because it requires software that is not open source. Any help or contributions to make this integration work without the closed-source software is welcomed.

(@joostlek - #121871) (documentation)

Breaking

Ecovacs

The attributes on the vacuum entity for the lifespan of the main brush, side brush, and filter are deprecated and will be removed in 2025.2.

These attributes are superseded by dedicated sensor entities.

(@mib1185 - #122740) (documentation)

Breaking

HomeKit Bridge

PM2.5 air quality sensors are now mapped to the US EPA AQI scale. The new cutoff value for US AQI Good (0-50) is 9.0 µg/m3 is thus now used to match the 2024 US EPA AQI standard.

(@sarabveer - #121093) (documentation)

Breaking

Lights

The following attributes are no longer saved in the database for light entities because their combinations would quickly fill up the database, and they are never used by Home Assistant:

  • brightness
  • color_mode
  • color_temp
  • color_temp_kelvin
  • effect
  • hs_color
  • rgb_color
  • rgbw_color
  • rgbww_color
  • xy_color

This change will not impact the operation of your lights, but it will reduce the amount of data stored in the database.

(@bdraco - #121776) (documentation)

Breaking

Matter

Multi-press events are now split into their own dedicated event type, such as multi_press_1, multi_press_2, etc., making it easier to automate multiple presses instead of looking manually at the number of presses count.

If you have used the current event type in your automations, you will need to update them to use the new event types.

(@marcelveldt - #122191) (documentation)

Breaking

MQTT

The schema option has been removed from the MQTT vacuum schema. YAML configs still containing this option will break after 6 months of deprecation. Users have been warned with a repair. Discovery configs will not break if the schema options are still in the config, but they will be ignored, and an error message will be logged to notice.

(@jbouwh - #121093) (documentation)

Breaking

MVG

(@joostlek - #121975) (documentation)

The MVG integration is disabled because it requires software that is not open source. Any help or contributions to make this integration work without the closed-source software is welcome.

Breaking

National Weather Service (NWS)

NWS weather entities no longer have a detailed_description in the return from the weather.get_forecasts service.

A new service, nws.get_forecasts_extra, is provided that includes detailed_description. The detailed_description is no longer provided for hourly forecasts in the nws.get_forecasts_extra service as the API does not return data. However a short_description is now available.

(@MatthewFlamm - #117254) (documentation)

Breaking

NextBus

The messages, directions, and attribution attributes have been removed from the sensor. The new API doesn't provide these anymore.

(@ViViDboarder - #121133) (documentation)

Breaking

OpenAI Conversation

The previously deprecated 256, 512, and 1024 values for the size argument for the generate_image action have been removed. They have already been unsupported in the past (replaced with 1024x1024 by default).

If you still use these values in your automations or scripts, you will need to update them to use "1024x1024", "1024x1792", or "1792x1024" values.

(@Shulyaka - #122388) (documentation)

Breaking

Reolink

The password used for the Reolink device can only contain characters a-z, A-Z, 0-9 or @$*~_-+=!?.,:;'()[]. Other special characters will cause encoding issues in the video streams used by this integration and are therefore not allowed. When using an incompatible special character in the password, the integration will prompt you to change the password.

(@StarkillerOG - #34196) (documentation)

Breaking

WLED

The WLED integration now requires a WLED device running at least WLED 0.14.0

(@frenck - #122101) (documentation)

Breaking

Xiaomi Miio

The Nature and Normal preset modes will be renamed to nature and normal to support translations.

If you have automations or scripts that use the Nature or Normal preset modes, you will need to update them to use nature and normal instead.

(@piitaya - #122367) (documentation)

Full release notes for 2024.8.0

2024.8.1 – 2024.8.3: no action items (3 versions)

2024.9.0 2024-09-04

20 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2024/09/04/release-20249/#backward-incompatible-changes

Breaking

Recorder database upgrade notice

This notice applies only if you use the recorder integration with a MySQL or PostgreSQL database. If you are using the default SQLite database, you can ignore it.

Last release included a database upgrade/migration that increases the size of the number we can store for the identifier fields.

Not all migrations were successful despite being marked as successful. This release will do the migration again, but will catch unsuccessful migrations.

This can cause the database upgrade to take longer than usual, depending on the size of your database.

Please be patient and let the upgrade process finish. Do not interrupt the upgrade process, as this can lead to a corrupted database.

(@emontnemery - #123973) (documentation)

Breaking

Asterisk Call Detail Records

Asterisk Call Detail Records has been deprecated in 2024.3.0 and has now been removed.

It was using a deprecated mailbox feature that is no longer available.

(@joostlek - #123180)

Breaking

Asterisk Voicemail

Asterisk Voicemail has been deprecated in 2024.3.0 and has now been removed.

It was using a deprecated mailbox feature that is no longer available.

(@joostlek - #123180)

Breaking

August

If you are using a Yale Home device with the August integration, you should migrate to the new Yale integration.

Yale Home devices will soon stop working with the August integration.

(@bdraco - #124895) (august documentation - yale documentation)

Breaking

Ecovacs

The YAML configuration for the Ecovacs integration was removed. The configuration has been moved to the UI in Home Assistant 2024.2.

The YAML configuration was automatically imported and should be removed from your YAML configuration.

@gjohansson-ST - #123605 (documentation)

Breaking

GPSD

The YAML configuration for the GPSD integration was removed. The configuration has been moved to the UI in Home Assistant 2024.2.

The YAML configuration was automatically imported and should be removed from your YAML configuration.

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

Breaking

KNX

The KNX Climate preset modes are renamed to match the KNX specifications.

KNX specificationsPreviousNow
Autononeauto
Comfortcomfortcomfort
Standbyawaystandby
Economysleepeconomy
Building protectionecobuilding_protection

@farmio - #123964 (documentation)

Breaking

Logi circle

Logitech stopped accepting applications for access to the Logi Circle API in May 2022, and the Logi Circle integration has now been removed.

@gjohansson-ST - #123727

Breaking

Lupusec

The YAML configuration for the Lupusec integration was removed. The configuration has been moved to the UI in Home Assistant 2024.2.

The YAML configuration was automatically imported and should be removed from your YAML configuration.

@gjohansson-ST - #123606 (documentation)

Breaking

Lutron

In Home Assistant 2024.2, fans where converted from a light entity to a fan entity. The old light entities will no longer work in this release and can be removed.

@gjohansson-ST - #123607 (documentation)

Breaking

Mailbox

The Mailbox platform that was previously deprecated has been removed.

@gjohansson-ST - #123741

Breaking

MQTT

The schema option was removed from the MQTT vacuum schema in Home Assistant 2024.2. You should remove this from your YAML configuration if set.

Manual configured MQTT vacuum entities will break if the schema option is still configured. When using MQTT discovery the option will be silently ignored.

@jbouwh - #124722 (documentation)

Breaking

Overkiz

Atlantic CozyTouch Water Heaters will now show the Manual operation mode as Electric.

A binary sensor was added to indicate if the manual mode is activated.

Users that have automations or scripts using these entities together with the Manual mode should update the automations or scripts accordingly.

@ALERTua - #124619 (documentation)

Breaking

Proximity

In 2024.2, we introduced new sensor entities to the Proximity integration and therefore deprecated the proximity entity.

Now this deprecated proximity entity has been removed.

(@mib1185 - #123158) (documentation)

Breaking

Sensibo

The previous PM2.5 sensor for Pure devices was incorrectly reporting a PM2.5 value, but it's actually a number representing an AQI level. The sensor will now provide the new states of 'good', 'moderate', and 'bad'.

@gjohansson-ST - #124151 (documentation)

Breaking

Starline

The horn switch has been deprecated since 2024.1 and is now removed.

Instead of a switch a horn button entity was added. Please update your automations accordingly.

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

Breaking

System monitor

Removes the deprecated process sensor from the System Monitor integration. This sensor has been provided as a binary sensor for 6 months, raising a repair issue.

@gjohansson-ST - #123616 (documentation)

Breaking

TP-Link Smart Home

The binary sensor for "Update available" will no longer be provided by the TP-Link Smart Home integration.

It will be replaced in a subsequent release with the Update entity but is disabled for now due to stability issues when calling the TP-Link cloud API to check the latest firmware version. This may cause devices to go offline. They need to be power-cycled to function again. The sensor was also unreliable and may have returned incorrect data because of rate limiting from the TP-Link cloud.

@sdb9696 - #124930 (documentation)

Breaking

Velux

The YAML configuration for the Velux integration was removed. The configuration has been moved to the UI in Home Assistant 2024.2.

The YAML configuration was automatically imported and should be removed from your YAML configuration.

@gjohansson-ST - #123724 (documentation)

Breaking

Zigbee Home Automation

  • The IKEA Starkvind fan modes have been updated. Automations that used to set the fan to 10% speed to switch it to "auto mode", should now be updated to set the preset to "auto."

In auto mode, the actual fan speed is now properly displayed.

For more information, see the PR in the ZHA repo.

  • The firmware update entity logic has changed. A device will only be considered "up-to-date" if there is a known firmware update for it and the current firmware version is greater than the firmware update version. If there is no known firmware update, the device firmware state will be considered "unknown", as we can't tell if it's up to date or not.

Previously, we showed "up-to-date" if there was no known firmware which misrepresented the state for many devices.

@puddly - #124804 (documentation)

Full release notes for 2024.9.0

2024.9.1 – 2024.9.3: no action items (3 versions)

2024.10.0 2024-10-02

14 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2024/10/02/release-202410/#backward-incompatible-changes

Breaking

Climate

We have added more validation to the climate.set_humidity action, which enforces that the set target humidity is within the targeted entity's minimum and maximum humidity levels.

You should adjust automations and scripts to use valid values if you are using this action.

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

Breaking

ecobee

The previously deprecated aux_heat attribute has been removed from the provided climate entity.

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

Breaking

Honeywell Total Connect Comfort (US)

The previously deprecated aux_heat attribute has been removed from the provided climate entity.

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

Breaking

Humidifier

We have added more validation to the humidifier.set_humidity action, which enforces that the target humidity is within the targeted entity's minimum and maximum humidity levels.

You might need to adjust automations and scripts to use valid values if you are using this action.

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

Breaking

Nuki

The previously deprecated nuki_id and battery_critical attributes have been removed from the Nuki entities. If you are using these attributes in automations or scripts, you need to update those.

(@steffenrapp - #125348) (documentation)

Breaking

OpenTherm Gateway

To modernize the OpenTherm Gateway integration, all entities have been split into different devices. As a result, the OpenTherm Gateway climate entity has been moved to a new OpenTherm Thermostat device.

Configurations that look for the climate entity by device must be adjusted accordingly.

In the process, all entities were reviewed and some were found to be irrelevant or superfluous. These entities have been removed. All removed entities were previously disabled by default, so anyone who has never manually enabled an entity in the OpenTherm Gateway integration is not affected by this.

All other users should review their configuration for using OpenTherm Gateway entities that no longer exist or have been assigned to another device.

(@mvn23 - #124869) (documentation)

Breaking

Pentair ScreenLogic

Support for use of an area, device, or entity as a target for ScreenLogic actions has been removed. Instead, use config_entry with the entry_id of the desired ScreenLogic

Support for using an area, device, or entity as a target for ScreenLogic actions has been removed. Instead, use config_entry with the entry_id of the desired ScreenLogic.

(@dieselrabbit - #123432) (documentation)

Breaking

Ping

The binary sensor attributes this integration provided have been replaced with sensor entities in Home Assistant 2024.4. These deprecated attributes have now been removed.

(@jpbede - #125760) (documentation)

Breaking

Ring

The ring.update action was deprecated in the 2024.4 release and has now been removed. Please use homeassistant.update_entity if you need a replacement.

(@jpbede - #125762) (documentation)

Breaking

Squeezebox (Lyrion Music Server)

We previously noticed that the squeezebox platform had deprecated the squeezebox_sync and squeezebox_unsync actions and the sync_group entity attribute in favor of the newer "join" framework common to all media players.

These deprecated actions and entity attributes have now been removed.

(@rajlaud - #125271) (documentation)

Breaking

Templates

Limit maximum template render output to 256KiB to ensure template renders do not inject unreasonable data into the system and cause a crash.

256KiB is likely to still block Home Assistant’s event loop for an unreasonable amount of time, but it's likely someone is using the template engine for large blocks of data, so we want a limit that still allows that but has a reasonable safety margin to prevent the system from crashing down.

(@bdraco - #124946)

Breaking

ThermoWorks Smoke

The ThermoWorks Smoke integration is disabled because it creates an unresolvable dependency conflict.

Contributions to fixing this conflict are greatly appreciated.

(@edenhaus - #125661) (documentation)

Breaking

Tfiac

The Tfiac integration is disabled because we cannot create valid Python wheels for its dependencies.

Contributions to fixing this issue are greatly appreciated.

(@edenhaus - #125692) (documentation)

Breaking

Z-Wave

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

  • If you use the Z-Wave JS add-on, you need at least version 0.7.0.
  • If you use the Z-Wave JS UI add-on, you need at least version 3.9.0.
  • If you use the Z-Wave JS UI Docker container, you need at least version 9.16.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.37.0.

(@MartinHjelmare - #125666) (documentation)

Full release notes for 2024.10.0

2024.10.1 – 2024.10.4: no action items (4 versions)

2024.11.0 2024-11-06

8 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2024/11/06/release-202411/#backward-incompatible-changes

Breaking

A. O. Smith

A. O. Smith now provides the hot water status as a percentage rather than low, medium, or high. The hot water status entity has been updated accordingly.

(@bdr99 - #127678) (documentation)

Breaking

Google Calendar

Google Calendar events that are declined are now omitted from the calendar.

(@joelhawksley - #128900) (documentation)

Breaking

HomeKit

Historically, many integrations implemented doorbells as binary sensors with a device class of occupancy. This design was replaced with the new event entities, which use a purpose-built device class of doorbell.

HomeKit will no longer automatically link binary sensors with device class occupancy as linked doorbell sensors. However, linked doorbell sensors can still be configured manually via YAML.

(@bdraco - #127668) (documentation)

Breaking

Litter-Robot

Previously, Litter-Robot could have an off state. This has now changed to docked, as off isn’t a valid state for vacuum entities.

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

Breaking

Netatmo

The preset modes of the thermostat have been renamed in order to support translations Schedule, Frost guard, and Manual have been renamed to schedule, frost_guard, and manual.

(@piitaya - #128890) (documentation)

Breaking

Tibber

The tibber.get_prices action has been adjusted to return datetimes as strings instead of raw datetime objects.

Automations or template sensors using this may need to be modified with an as_datetime filter. See our templating documentation for more information on using these filters.

(@functionpointer - #123901) (documentation)

Breaking

Updates

State attributes of update entities have been changed:

  • The in_progress state attribute is now always a bool, never an integer.
  • A new state attribute update_percentage has been added. The update_percentage is a number between 0-100 if an update is in progress and the entity supports reporting progress, or None if an update is not in progress or an update is in progress but the entity does not support reporting progress.

Scripts, automations, custom frontend components, etc., which consume the in_progress state attribute of update entities, need to be updated accordingly.

(@emontnemery - #128877) (documentation)

Breaking

WMS WebControl pro

The open/closed state of awnings will be inverted so that the UI visualization and positioning match reality. This means open (100%) now refers to the awning being completely retracted, and closed (0%) now means the awning is fully expanded. This is not in line with industry terminology, but Home Assistant does not yet natively support awnings of type patio.

(@mback2k - #128079) (documentation)

Full release notes for 2024.11.0

2024.11.1 – 2024.11.3: no action items (3 versions)

2024.12.0 2024-12-04

12 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2024/12/04/release-202412/#backward-incompatible-changes

Breaking

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)

Breaking

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)

Breaking

Glances

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

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

Breaking

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)

Breaking

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)

Breaking

Plugwise

For the Plugwise Adam, all device-based climate entities will be replaced by new zone-based climate entities, which will most likely have different entity names. This change aligns with the Plugwise App's representation of climate entities as zones (as discovered in Issue #130597).

(@bouwew - #131659) (documentation)

Breaking

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)

Breaking

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)

Breaking

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)

Breaking

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)

Breaking

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)

Breaking

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)

Full release notes for 2024.12.0

2024.12.1 – 2024.12.5: no action items (5 versions)

2025.1.0 2025-01-03

9 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/01/03/release-20251/#backward-incompatible-changes

Breaking

1-Wire

The unit of measurement has been removed from 1-Wire counters because count is not a unit 😁

(@jrieger - #132076) (documentation)

Breaking

Denon HEOS

Grouping a HEOS media player will now raise an exception if one of the members is not a valid HEOS player. Previously unknown or invalid members would be silently dropped.

(@andrewsayre - #132213) (documentation)

Breaking

devolo Home Control

The integration with devolo Home Control has been updated to remove the option to set the mydevolo URL. This option was used to integrate with the devolo Home Control Cloud for development purposes only. This option is no longer available.

(@Shutgun - #132821) (documentation)

Breaking

FXCOM RFXtrx

The unit of measurement has been removed from FXCOM RFXtrx counters because count is not a unit 😁

(@jrieger - #133108) (documentation)

Breaking

HomeWizard Energy

The unit of measurement for the "Water usage" sensor has been updated from l/min to L/min. This change standardizes the unit to improve consistency across Home Assistant.

Any automations, scripts, or templates that rely on the old unit may need to be adjusted. Long-term statistics will remain intact, but repair issues will be created to ensure the data is updated with the new unit.

(@DCSBL - #132261) (documentation)

Breaking

LIFX

The options color_temp and kelvin are no longer valid arguments for LIFX actions. Please use color_temp_kelvin instead.

(@epenet - #132730) (documentation)

Breaking

Tesla Fleet

The included OAuth application credentials have been removed, as Tesla no longer supports Open Source application registrations and is moving to a pay-per-use model.

Read more about this announcement in this blog post.

(@Bre77 - #132431) (documentation)

Breaking

UniFi Network

The states of "Device State" sensors have been standardized to match Home Assistant core rules and be translatable. This affects the following UniFi sensor states:

  • Connected, which now became connected
  • Pending, which now became pending
  • Firmware Mismatch, which now became firmware_mismatch
  • Upgrading, which now became upgrading
  • Provisioning, which now became provisioning
  • Heartbeat Missed, which now became heartbeat_missed
  • Adopting, which now became adopting
  • Deleting, which now became deleting
  • Inform Error, which now became inform_error
  • Adoption Failed, which now became adoption_failed
  • Isolated, which now became isolated
  • Unknown, which now became unknown

If you used those states directly in your automations, scripts, or templates; you will need to adjust those to match these changes.

(@bieniu - #131921) (documentation)

Breaking

Zabbix

The integration now uses the official Zabbix Python API. Because of this, the minimum supported Zabbix version is now 5.0. This change drops support for Zabbix 4 and before.

(@kruton - #131674) (documentation)

Full release notes for 2025.1.0

2025.1.1 – 2025.1.4: no action items (4 versions)

2025.2.0 2025-02-05

7 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/02/05/release-20252/#backward-incompatible-changes

Breaking

Ecovacs

The attributes on the vacuum entity for the lifespan of the main brush, side brush, and filter have been deprecated and are now removed. These attributes are superseded by dedicated sensor entities.

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

Breaking

Home Connect

Some appliances might lose their power entity as the API does not report the power setting.

(@Diegorro98 - #135930) (documentation)

Breaking

IMGW-PIB

Some hydrology data is no longer available to Home Assistant users via IMGW-PIB API and for this reason, the following entities are removed:

  • flood alarm binary sensor
  • flood alarm level sensor
  • flood warning binary sensor
  • flood warning level sensor

(@bieniu - #134668) (documentation)

Breaking

KNX

The "State Updater" option in the integration settings now works as intended. Previously, the option wasn’t applied correctly.

  • When disabled: KNX will only read a state_address once when the connection is established.
  • When enabled: KNX will also read any state_address if no value has been received for one hour.

Please review your integration settings to ensure this option is configured according to your preferences.

(@farmio - #135611) (documentation)

Breaking

Litter-Robot

Remove extra_state_attributes from Litter-Robot vacuum entities. These were previously migrated to sensors.

(@natekspencer - #136196) (documentation)

Breaking

MQTT

To change the MQTT broker settings, you need to start a reconfiguration. When CONFIGURE is selected, MQTT shows a "MQTT settings" page with subscribe and publish tools. The Re-configure MQTT button will be replaced with an MQTT options page.

The reconfiguration option will only be available from the MQTT integration entry context menu.

(@jbouwh - #133342) (documentation)

The MQTT publish action no longer supports the topic_template and payload_template attributes. Instead, only topic and payload should be used. In automation and scripts, users can use templates by default. Users were instructed to update their automations and scripts with a repair flow when the use of the deprecated action options was detected.

(@jbouwh - #134056) (documentation)

Breaking

Pentair ScreenLogic

Raw states derived from ScreenLogic enums are now lowercase instead of Title Case. This change impacts:

  • pH/ORP dosing state sensor entities:
  • Dosing -> dosing
  • Mixing -> mixing
  • Monitoring -> monitoring
  • The preset_mode state attribute for ScreenLogic climate entities, where raw states have also been underscored-spaced and had any punctuation removed.
  • Solar -> solar
  • Solar Preferred -> solar_preferred
  • Heater -> heater
  • Don't Change -> dont_change

These changes support the addition of translation keys for text-based entity states. You should update any references to the above states/preset_modes to the new, lowercase versions.

(@dieselrabbit - #133866) (documentation)

Full release notes for 2025.2.0

2025.2.1 – 2025.2.5: no action items (5 versions)

2025.3.0 2025-03-05

8 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/03/05/release-20253/#backward-incompatible-changes

Breaking

Automations & scripts

The wait variable and variables defined by a response_variable set in an inner scope of a script or automation now propagate to outer scopes also if a variables action is present in the inner scope.

Furthermore, variables defined by a response_variable now also propagate out from parallel sequences. Scripts and automations which relied on the older (buggy) behavior might need to be adjusted.

(@arturpragacz - #138883)

Breaking

GPSD

All state attributes of the main sensor were replaced with a dedicated sensor Home Assistant in 2024.9. The deprecated attributes have now been removed.

(@jrieger - #137600) (documentation)

Breaking

Home Connect

Some programs and program switches (which are being deprecated) and program select entities may not be exposed anymore by the integration as they are missing an aiohomeconnect program key enumeration (file). You can get the diagnostics from the configuration entry or the device and open an issue or submit a PR with the generated diagnostics file on the aiohomeconnect repository to suggest the missing program(s).

(@Diegorro98 - #136116) (documentation)


Using program and option keys that aren't in the API documentation in Home Connect actions will no longer work. To be able to use undocumented program or option keys, open an issue or submit a pull request with the required keys at MartinHjelmare/aiohomeconnect.

(@Diegorro98 - #137027) (documentation)


Multiple Home Connect config entries will not be allowed to be configured. For regular users where all appliances in the home are connected to the same Home Connect account, there should not be any reason to have more than one config entry since all appliances in the home will be connected to the same account and config entry.

(@Diegorro98 - #137088) (documentation)

Breaking

MQTT

Legacy color_mode support for MQTT JSON lights has been removed. The support was deprecated in HA Core 2024.4.

Users with a YAML setup have been instructed to update their configuration in configuration.yaml via repair issue flow. Deprecation issues with MQTT JSON lights set up through discovery were communicated via warnings in the logs. Using the removed parameters in discovery will not break the configuration but will still log a warning.

(@jbouwh - #136996) (documentation)

Breaking

Proximity

The distance is now measured to the edge of the monitored zones (it takes the radius into account), instead of to the center of the zone as before. This leads to slightly different expected distance values, which you may have to adjust accordingly in your existing automations.

(@Spcemarine - #138819) (documentation)

Breaking

SmartThings

The energy and power sensors have been removed for every device that has a switch. They rarely worked because there were no energy or power capabilities available to get data from. If you do have the capabilities, it will still work for you.

(@joostlek - #138313) (documentation)


There are a lot of states that have been renamed; this might need an update in your automations or other configurations.

  • Set options for dishwasher job state sensor in SmartThings (#139349)
  • Add translatable states to SmartThings media source input (#139353)
  • Add translatable states to SmartThings media playback (#139354)
  • Add translatable states to oven mode in SmartThings (#139356)
  • Add translatable states to oven job state in SmartThings (#139361)
  • Add translatable states to robot cleaner movement in SmartThings (#139363)
  • Add translatable states to robot cleaner turbo mode in SmartThings (#139364)
  • Add translatable states to washer job state in SmartThings (#139368)
  • Add translatable states to dryer job state in SmartThings (#139370)

Breaking

Synology DSM

The scan interval option has been removed, and the default of 15 minutes is used. If needed, there is an integration-independent and common way to set a custom polling interval.

(@mib1185 - #138490) (documentation)

Breaking

TechnoVE

The status sensor state high_charge_period was renamed to high_tariff_period.

(@Moustachauve - #139314) (documentation)

Full release notes for 2025.3.0

2025.3.1 – 2025.3.4: no action items (4 versions)

2025.4.0 2025-04-02

4 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/04/02/release-20254/#backward-incompatible-changes

Breaking

Automation & script variable scopes

The variables action is no longer restricted to local scopes; it can now update the value of a variable also in outer scopes. If the variable was not previously defined, it will be created in the top-level (script run) scope.

actions:
  - variables:
      x: 1
      y: 1
  - sequence:
    - variables:
        y: 2  # Updates y, which exists in the outer scope
        z: 2  # Since z is not defined yet, it is assigned in the top-level scope
  - action: persistent_notification.create
    data:
      message: "{{ x }}, {{ y }}, {{ z }}" # x=1, y=2, z=2
      # Note: previously, it would be: x=1, y=1, z undefined

If you have automations or scripts that use the same variable name in different (previously isolated) scopes, you will need to update them: simply use distinct variable names to prevent any conflicts.

(@arturpragacz - #141114)

Breaking

Jewish Calendar

Holiday sensor changes:

  • In Israel, "Simchat Torah" is now "Shmini Atzeret, Simchat Torah"
  • In Israel, the 30th of Shvat returns "Family Day, Rosh Chodesh"

Additionally, the type_id has been removed from the state attributes, use the type if needed instead.

(@tsvi - #137247) (documentation)

Breaking

Persistent notifications

Persistent notifications with notification_id config_entry_reconfigure are no longer created when an integration fails to authenticate. Automations triggering on such persistent notifications will thus no longer work.

(@emontnemery - #140932) (documentation)

Breaking

Reolink

The Reolink password is now limited to 31 characters. The latest versions of the Reolink app and desktop client also have this 31-character limit. If you configured your Reolink password years ago, it is possible it is longer than 31 characters. In that case you will get a reauthentication flow asking you to change the password. Passwords longer than 31 characters can cause issues in the latest Reolink API.

(@starkillerOG - #140789) (documentation)

Full release notes for 2025.4.0

2025.4.1 – 2025.4.4: no action items (4 versions)

2025.5.0 2025-05-07

12 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/05/07/release-20255/#backward-incompatible-changes

Breaking

Theming & Typography

In this release, we’ve made foundational updates to our theming system, which include backwards incompatible changes:

  • Polymer Components Removed: Legacy Polymer-based components have been fully removed. As a result, all related paper-* CSS variables have also been removed.
  • Some variables have been migrated to new theme tokens.
  • Others were outdated and have been removed entirely.
  • New Typography Variables: We’ve introduced a new set of typography CSS variables to lay the groundwork for a more consistent and modern UI.
  • These are part of an ongoing refactor and are not yet in use everywhere. More adoption will follow in future releases.

If you’re maintaining custom cards or themes, please update any usage of the following variables accordingly.


✅ New tokens

--ha-font-family-body
--ha-font-family-heading
--ha-font-family-code
--ha-font-family-longform
--ha-font-size-scale
--ha-font-size-2xs
--ha-font-size-xs
--ha-font-size-s
--ha-font-size-m
--ha-font-size-l
--ha-font-size-xl
--ha-font-size-2xl
--ha-font-size-3xl
--ha-font-size-4xl
--ha-font-weight-light
--ha-font-weight-normal
--ha-font-weight-medium
--ha-font-weight-bold
--ha-font-weight-body
--ha-font-weight-heading
--ha-font-weight-action
--ha-line-height-condensed
--ha-line-height-normal
--ha-line-height-expanded
--ha-font-smoothing

❌ Removed tokens

--paper-font-common-nowrap_-_text-overflow
--paper-font-display1_-_letter-spacing
--paper-font-headline_-_letter-spacing
--paper-font-common-base_-_font-family
--paper-font-common-base_-_-webkit-font-smoothing
--paper-font-common-code_-_font-family
--paper-font-common-code_-_-webkit-font-smoothing
--paper-font-common-nowrap_-_white-space
--paper-font-common-nowrap_-_overflow
--paper-font-title_-_overflow
--paper-font-title_-_text-overflow
--paper-font-title_-_text-overflow
--paper-font-title_-_white-space
--paper-item-body-two-line-min-height
--paper-time-input-justify-content
--paper-item-body-three-line-min-height
--paper-item-icon-width
--paper-card-header-color
--paper-dialog-color
--paper-font-headline_-_white-space
--paper-font-headline_-_overflow
--paper-font-headline_-_text-overflow
--paper-font-subhead_-_white-space
--paper-font-subhead_-_overflow
--paper-font-subhead_-_text-overflow
--paper-item-icon-active-color
--paper-listbox-background-color

🔄 Migrated tokens

--code-font-family → --ha-font-family-code
--paper-font-title_-_-webkit-font-smoothing → --ha-font-smoothing
--paper-font-headline_-_-webkit-font-smoothing → --ha-font-smoothing
--paper-font-display1_-_-webkit-font-smoothing → --ha-font-smoothing
--paper-font-subhead_-_-webkit-font-smoothing → --ha-font-smoothing
--paper-font-body1_-_-webkit-font-smoothing → --ha-font-smoothing
--paper-font-display1_-_font-family → --ha-font-family-body
--paper-font-display1_-_font-size → --ha-font-size-4xl
--paper-font-display1_-_font-weight → --ha-font-weight-normal
--paper-font-display1_-_line-height → --ha-line-height-condensed
--paper-font-headline_-_font-family → --ha-font-family-body
--paper-font-headline_-_font-size → --ha-font-size-2xl
--paper-font-headline_-_font-weight → --ha-font-weight-normal
--paper-font-headline_-_line-height → --ha-line-height-condensed
--paper-font-title_-_font-family → --ha-font-family-body
--paper-font-title_-_font-size → --ha-font-size-xl
--paper-font-title_-_font-weight → --ha-font-weight-medium
--paper-font-title_-_line-height → --ha-line-height-normal
--paper-font-subhead_-_font-family → --ha-font-family-body
--paper-font-subhead_-_font-size → --ha-font-size-l
--paper-font-subhead_-_font-weight → --ha-font-weight-normal
--paper-font-subhead_-_line-height → --ha-line-height-normal
--paper-font-body1_-_font-family → --ha-font-family-body
--paper-font-body1_-_font-size → --ha-font-size-m
--paper-font-body1_-_font-weight → --ha-font-weight-normal
--paper-font-body1_-_line-height → --ha-line-height-normal
--paper-item-icon-color → --state-icon-color

Breaking

17TRACK

The previously deprecated state attributes for the 17TRACK entities have been removed.

If you relied on these attributes in your automations or scripts, you will need to update them to use the dedicated sensors instead.

(@joostlek - #142622) (documentation)

Breaking

AVM FRITZ!SmartHome

The AVM Fritz!Smarthome has a concept of devices and units. A device can have multiple units with different features. We now merge all units of a device into one entry representing the physical device.

As this might remove existing devices and create new ones, you should check your automations and scripts to see if they need to be adjusted to the new device registry entries.

(@mib1185 - #142845) (documentation)


All the extra state attributes of the climate entity got migrated to their own entities. With this these attributes are deprecated and will be removed in Home Assistant 2025.11.

If you rely on these attributes in your automations or scripts, you will need to update them to use the dedicated sensors instead.

(@mib1185 - #143394) (documentation)

Breaking

Generic Thermostat

The switch targeted by the Generic Thermostat is now only turned on when the current temperature falls outside the target temperature range (target_temp +- tolerances).

Previously, it would also turn on when the temperature was equal to the limit of the target range.

(@esand - #138209) (documentation)

Breaking

HomeKit Bridge

The name configured in Home Assistant now takes precedence for the following HomeKit child accessories:

  • Fan presets (switches)
  • Media player sources (switches)
  • Power strips (Input Select, etc) (outlets)
  • Triggers (stateless programmable switches)

This fixes an issue where the name is missing in HomeKit for these child accessories. The downside is that the name provided by Home Assistant has to be changed in Home Assistant (where applicable).

(@bdraco - #142531) (documentation)

Breaking

Google Maps Travel Time

Google has deprecated the Distance Matrix API. The new Routes API does not provide the state attributes Destination addresses and Origin addresses anymore.

The amount of free requests got halved, resulting in the sensor now refreshing every 10 minutes instead of every 5 minutes.

(@eifinger - #140691) (documentation)

Breaking

La Marzocco

La Marzocco released the gateway firmware v5 last month, which stopped supporting local communication. We now fully support this firmware; support for older firmware has been dropped.

The following entities and controls are missing, either because they are no longer supported by the app or not part of the new library version yet:

  • Steam & coffee boiler temperatures
  • Shot timer sensor
  • Scale support
  • Steam temperature number
  • Prebrew & Preinfusion numbers

(@zweckj - #142098) (documentation)

Breaking

Network UPS Tools (NUT)

The status sensor has changed, providing the state from the UPS Display.

Previously, multiple states would be concatenated using a space, which made them harder to read and process. As of this release, multiple statuses are separated using a comma instead.

(@bonanitech - #141335) (documentation)


The scan interval option has been removed from NUT. Scans default to once every 60 seconds. If needed, an integration-independent and common method can be used to set a custom polling interval.

(@tdfountain - #141845) (documentation)

Breaking

Opower

If you return energy to the grid, you will have to reconfigure your energy dashboard.

For improved experience in the energy dashboard, negative energy consumption/cost values have been separated into two dedicated return/compensation statistics.

Add Opower {utility name} elec {account number} return under Return to grid to see return energy statistics. Track return compensation using Opower {utility name} elec {account number} compensation.

(@parkerbxyz - #135258) (documentation)

Breaking

Overkiz

Previously, for Atlantic Electrical Towel Dryer devices, the ‘auto’ HVAC mode in Home Assistant was mapped to the ‘prog’ mode in Overkiz.

Now, the ‘auto’ mode in Home Assistant will correspond directly to the ‘auto’ mode in Overkiz, while the ‘prog’ mode can be selected using presets.

(@iMicknl - #143243) (documentation)

Breaking

Persistent notifications

Persistent notifications are no longer created when devices are discovered.

Automations that trigger on the persistent notification config_entry_discovery should be updated to instead trigger on the event config_entry_discovered.

(@emontnemery - #141546)

Breaking

Total Connect

The previously deprecated state attributes for the Total Connect alarm control panel have been removed.

If you relied on these attributes in your automations or scripts, you will need to update them to use the dedicated sensors instead.

(@joostlek - #142625) (documentation)

Full release notes for 2025.5.0

2025.5.1 – 2025.5.3: no action items (3 versions)

2025.6.0 2025-06-11

1 Breaking — show quotes

Breaking

Met Office

Met Office deprecated the Datapoint API used by this integration, causing it to stop working. To address this, it is now migrated to DataHub API.

To keep using this integration, you will need to provide a new API key, which can be obtained by signing up for DataHub and subscribing to Global spot dataset. The free subscription provides 360 calls per day, which is enough for this integration to work.

Some sensors have changed due to the new data source:

  • Hourly forecast provided by the weather entity now has actual hourly entries as opposed to 3-hourly in the old version
  • Instead of visibility and visibility_distance sensors showing a range and qualitative description (such as "1-4 km" and "Poor"), the integration now exposes a single visibility sensor with precise visibility distance in meters
  • The integration no longer exposes "daily" and "3-hourly" sensors; there is a single set of them now
  • The integration sensors no longer expose Site ID, Site name and Sensor ID attributes as these don't provide any additional value

(@avee87 - #131425) (documentation)

From www.home-assistant.io/blog/2025/06/11/release-20256/#backward-incompatible-changes

Full release notes for 2025.6.0

2025.6.1 – 2025.6.3: no action items (3 versions)

2025.7.0 2025-07-02

4 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/07/02/release-20257/#backward-incompatible-changes

Breaking

Google Calendar

The previously deprecated Google Calendar add_event action has been removed and replaced by the create_event entity-based action.

If you use the add_event action in your automations or scripts, you will need to update them to use the new create_event action instead.

(@epenet - #146432) (google docs)

Breaking

Meater

The states of the Meater probe cook state have been changed to support translations and make them more consistent with other integrations.

The following states have been changed:

  • Not Started -> not_started
  • Configured -> configured
  • Started -> started
  • Ready For Resting -> ready_for_resting
  • Resting -> resting
  • Slightly Underdone -> slightly_underdone
  • Finished -> finished
  • Slightly Overdone -> slightly_overdone
  • OVERCOOK! -> overcooked

If you use these states in your automations or scripts, you will need to update them to use the new state values.

(@joostlek - #146958) (meater docs)

Breaking

Miele

The internal representation of states for hob plates has changed. This is a breaking change when these states are used in automations or templates.

No user action is needed if these hob state sensors are used for visual display only.

Please review and update applicable automations and templates according to the following state changes:

  • 0 -> plate_step_0
  • 1 -> plate_step_1
  • ...
  • 18 -> plate_step_18
  • 110 -> plate_step_warm
  • 117 -> plate_step_boost
  • 118 -> plate_step_boost
  • 217 -> plate_step_boost
  • 220 -> plate_step_warm

If you use these states in your automations or scripts, you will need to update them to use the new state values.

(@astrandb - #144992) (miele docs)

Breaking

Plex Media Server

The previously deprecated plex.scan_for_clients action has been removed in favor of the "Scan Clients" button entity. If you use this action in your automations or scripts, you will need to update them to use the new entity instead.

(@epenet - #146608) (plex docs)

Full release notes for 2025.7.0

2025.7.1 – 2025.7.4: no action items (4 versions)

2025.8.0 2025-08-06

19 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/08/06/release-20258/#backward-incompatible-changes

Breaking

Android Debug Bridge (ADB)

Android Debug Bridge media players entities now report to be off where they previously reported to be in standby state.

If you have automations or scripts that rely on the Android Debug Bridge media player reporting standby state, you will need to update them to use the new off state.

(@emontnemery - #148130) (documentation)

Breaking

Apple TV

Apple TV media players entities now report to be off where they previously reported to be in standby state.

If you have automations or scripts that rely on the Apple TV media player reporting standby state, you will need to update them to use the new off state.

(@emontnemery - #148132) (documentation)

Breaking

Cambridge Audio

Cambridge Audio media players entities now report to be off where they previously reported to be in standby state.

If you have automations or scripts that rely on the Cambridge Audio media player reporting standby state, you will need to update them to use the new off state.

(@emontnemery - #148133) (documentation)

Breaking

Ecovacs

The battery property on vacuum entities is being removed in Home Assistant. Therefore, this property is now removed from this integration and is replaced by a battery level sensor.

Please review your automations, scripts or cards using the battery property and update the code to use the battery sensor instead.

(@mib1185 - #149084) (@edenhaus - #149581) (documentation)

Breaking

Husqvarna Automower

The summary field of calendar events provided by the Husqvarna Automower calendar platform has been updated to include the device name as a prefix. This change improves clarity when multiple mowers are used, but may affect automations relying on the previous summary format.

(@Thomas55555 - #147405) (documentation)

Breaking

LOOKin

LOOKin media players entities now report to be off where they previously reported to be in standby state.

If you have automations or scripts that rely on the LOOKin media player reporting standby state, you will need to update them to use the new off state.

(@emontnemery - #148134) (documentation)

Breaking

Matter

The battery property on vacuum entities is being removed in Home Assistant. Therefore, this property is now removed from this integration and is replaced by a battery level sensor.

Please review your automations, scripts or cards using the battery property and update the code to use the battery sensor instead.

(@MartinHjelmare - #150061) (documentation)

Breaking

Mediaroom

Mediaroom media players entities now report to be off where they previously reported to be in standby state.

If you have automations or scripts that rely on the Mediaroom media player reporting standby state, you will need to update them to use the new off state.

(@emontnemery - #148135) (documentation)

Breaking

Miele

The battery property on vacuum entities is being removed in Home Assistant. Therefore, this property is now removed from this integration and is replaced by a battery level sensor.

Please review your automations, scripts or cards using the battery property and update the code to use the battery sensor instead.

(@astrandb - #148765) (documentation)

Breaking

Reolink

The Reolink Wi-Fi signal strength sensor has changed from an indicator value between 0 and 4 (amount of bars) to a value in dBm between -85 dBm and -30 dBm.

Note that all values in this range are possible, but roughly the old values can be converted like this:

  • 0 > -85 dBm
  • 1 > -75 dBm
  • 2 > -65 dBm
  • 3 > -55 dBm
  • 4 > -45 dBm

(@starkillerOG - #149191) (documentation)

Breaking

Roborock

The battery property on vacuum entities is being removed in Home Assistant. Therefore, this property is now removed from this integration and is replaced by a battery level sensor.

Please review your automations, scripts or cards using the battery property and update the code to use the battery sensor instead.

(@luca-angemi - #150126) (documentation)

Breaking

Roku

Roku media players entities now report to be off where they previously reported to be in standby state.

If you have automations or scripts that rely on the Roku media player reporting standby state, you will need to update them to use the new off state.

(@emontnemery - #148137) (documentation)

Breaking

Snapcast

Snapcast media players entities now report to be off where they previously reported to be in standby state.

If you have automations or scripts that rely on the Snapcast media player reporting standby state, you will need to update them to use the new off state.

(@emontnemery - #148138) (documentation)

Breaking

Sony PlayStation 4

Sony PlayStation 4 media players entities now report to be off where they previously reported to be in standby state.

If you have automations or scripts that rely on the Sony PlayStation 4 media player reporting standby state, you will need to update them to use the new off state.

(@emontnemery - #148136) (documentation)

Breaking

Templates

Returning None from a template binary sensor's state template is now interpreted as unknown state instead of as off state.

If this behavior is not desired, you need to adjust your templates to return False explicitly.

(@epenet - #128861) (documentation)

Breaking

Tuya

The battery property on vacuum entities is being removed in Home Assistant. Therefore, this property is now removed from this integration and is replaced by a battery level sensor.

Please review your automations, scripts or cards using the battery property and update the code to use the battery sensor instead.

(@epenet - #150086) (documentation)

Breaking

UniFi Protect

Support for UniFi Protect installations running on versions below 6.0.0 has been removed.

This change is necessary as we are migrating the Home Assistant integration to use the new UniFi Protect Public API, which is only available in current versions.

If you are running an older version of UniFi Protect, you will need to upgrade to at least version 6.0.0 in order to continue using this integration.

You can read more about the 6.0 release in Ubiquiti’s official blog post: 🔗 Introducing Protect 6.0

Note on future updates: The Public API is still under active development and may change over time. As we continue to migrate more features of the integration to use the Public API, it is likely that the minimum required version of UniFi Protect will increase further in upcoming Home Assistant releases. We will make these changes step by step as the API evolves and new capabilities become available.

What do I need to do?

Upgrade your UniFi Protect installation to version 6.0.0 or later.

Be prepared for possible further minimum version increases in the future.

If you are already using version 6.0.0 or newer, and the user in use has sufficient permissions, the integration will attempt to automatically create a new API key. If this succeeds, no further action is required. If it fails, a reauthentication will be triggered, requiring you to re-enter your password and provide your API key manually.

(@RaHehl - #149126) (documentation)

Breaking

Whirlpool Appliances

The door state for washer/dryer machines is now reported as a binary sensor instead of being part of the main machine state sensor, which now reports only the cycle states. Users relying on this state in automations or scripts will need to update their configurations to use the new binary sensor.

(@abmantis - #144078) (documentation)

Breaking

Z-Wave

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

  • If you use the Z-Wave JS add-on, you need at least version 0.20.0.
  • If you use the Z-Wave JS UI add-on, you need at least version 4.8.0.
  • If you use the Z-Wave JS UI Docker container, you need at least version 10.11.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 3.2.1.

(@MartinHjelmare - #149616) (documentation)

Full release notes for 2025.8.0

2025.8.1 – 2025.8.3: no action items (3 versions)

2025.9.0 2025-09-03

8 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/09/03/release-20259/#backward-incompatible-changes

Breaking

Encoding units containing the μ character

The encoding for some units that contain the μ character has been changed. Users that consume state data from sensors that have changed units will be impacted (such as exported state data to InfluxDB). The units with a changed encoding are:

  • μSv/h for the aranet integration as a unit for radiation rate
  • μS/cm for UnitOfConductivity.MICROSIEMENS_PER_CM
  • μV for UnitOfElectricPotential.MICROVOLT
  • μg/ft³ for concentration in micrograms per cubic foot
  • μg/m³ for concentration in micrograms per cubic meter
  • μmol/s⋅m² for the fyta integration as a unit for light
  • μg for UnitOfMass.MICROGRAMS
  • μs for UnitOfTime.MICROSECONDS

(@jbouwh - #144853)

Breaking

1-Wire

The raw_value attribute was previously deprecated and has now been removed.

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

Breaking

Alexa Devices

The sound list has been updated to match the one used by the Alexa Mobile app. The variant parameter is no longer required.

Check your automations to ensure the selected sound is still present.

(@chemelli74 - #151317) (documentation)

Breaking

Husqvarna Automower BLE

The integration now requires the Automower PIN when being set up. This ensures Home Assistant can communicate with more models of mowers and with higher security levels.

(@alistair23 - #135440) (documentation)

Breaking

KNX

KNX scene entities now also change their state when a scene was activated externally (from bus). Previously they only updated when activated from within Home Assistant.

(@farmio - #151218) (documentation)

Breaking

SIA Alarm Systems

SIA alarm status code CF (armed with malfunctions) is now mapped to armed_away instead of to armed_custom_bypass.

(@etnoy - #132628) (documentation)

Breaking

SwitchBot Bluetooth

The battery property on vacuum entities is being removed in Home Assistant. Therefore, this property is now removed from this integration and is replaced by a battery level sensor.

Please review your automations, scripts, and dashboards using the battery property and update the code to use the battery sensor instead.

(@MartinHjelmare - #150227) (documentation)

Breaking

Yale August

The August integration now uses OAuth authentication with Yale August's official API. This is a required one-time breaking change as the unofficial authentication method will stop working soon. This migration helps reduce unnecessary load on Yale August's servers while ensuring continued access for all users.

When you update Home Assistant, you'll be prompted to re-authenticate your August account:

  1. Select the notification or go to Settings → Devices & services → August
  2. Select "Reconfigure" and follow the OAuth flow to sign in
  3. Once authenticated, your devices will work exactly as before

We're grateful to Yale August for officially supporting Home Assistant with dedicated API access!

(@bdraco - #151080) (documentation)

Full release notes for 2025.9.0

2025.9.1 – 2025.9.4: no action items (4 versions)

2025.10.0 2025-10-01

10 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/10/01/release-202510/#backward-incompatible-changes

Breaking

Targeting labels in automations and scripts

Configuration and diagnostic entities with a label assigned to them will now be targeted/affected by service actions targeting that label. Previously, those entity categories were ignored on service action calls targeting labels.

If you have an automation or script with an action targeting a label, make sure that only entities that should be affected have that label assigned, even if they are config or diagnostic entities.

(@abmantis - #149309) (labels docs)

Breaking

HERE Travel Time

HERE deprecated the previous free tier. The new Base Plan has 5000 free requests per month. The automatic update interval of the HERE Travel Time integration changed from 5 minutes to 30 minutes, so one route can be supported without costs.

(@eifinger - #147222) (here_travel_time docs)

Breaking

Home Connect

The Home Connect Alarm clock entity has been removed from the time platform, please use the number entity instead.

(@Diegorro98 - #152188) (home_connect docs)

Breaking

Shelly

Removed previously deprecated extra attributes, please review your automations.

Shelly Gas:

  • The Detected attribute of the Gas entity has been removed, the Gas detected entity should be used instead.
  • The Self test attribute of the Operation entity has been removed, the Self test entity should be used instead.

Shelly Air:

  • The Operational hours of the Lamp Life entity has been removed, if you still want that info please use a template entity.

(@chemelli74 - #140386) (shelly docs)

Breaking

Slide Local

The effect of the property "invert position" is extended from the position itself to the status (open or closed). With this adjustment, it is no longer necessary to use cover templates to invert the position to correct the status. If you have covers with inverted position and are using the state in automations, you must adjust the automations accordingly.

(@dontinelli - #150418) (slide_local docs)

Breaking

SmartThings

The windFree preset mode for the air conditioner has been renamed to wind_free to allow translation to happen. Please adapt automations accordingly.

(@joostlek - #152833) (smartthings docs)

Breaking

Tibber

Switch Tibber electricity pricing to 15-minute intervals.

  • The tibber.get_prices action now returns 15-minute data instead of hourly.
  • The price_level attribute is removed and no longer supported.
  • The intraday_price_ranking attribute is now scaled to (0,1) to better support 15-minute prices.

(@Danielhiversen - #151881) (tibber docs)

Breaking

Zabbix

We removed official support for Zabbix 5.0 from the integration. While this does not directly break connections to Zabbix 5.0, future updates will not check for compatibility with this version. Note that Zabbix 5 LTS left its support window in May of 2025.

(@nolsto - #149450) (zabbix docs)

Breaking

ZHA

Removes the extra ZHA specific cover entity attributes, their values were no longer populated.

  • target_lift_position
  • target_tilt_position

(@jeverley - #142534) (zha docs)

Breaking

ZhongHong

ZhongHong's climate entities set_fan_mode action behavior has changed.

The fan mode values are now converted to lowercase instead of uppercase to ensure compliance with the standard convention.

If you have automations relying on uppercase fan mode values, you will need to update them to use lowercase values instead.

(@Blear - #151559) (zhong_hong docs)

Full release notes for 2025.10.0

2025.10.1 – 2025.10.4: no action items (4 versions)

2025.11.0 2025-11-05

12 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/11/05/release-202511/#backward-incompatible-changes

Breaking

Set assumed state to group if at least one child has assumed state

Previously, the group’s assumed state was always false, regardless of the state of its child entities.

This has now changed:

The group will now have an assumed state of true if at least one child entity has an assumed state. This makes the group's assumed state reflect the uncertainty of its children more accurately. These domains have been added: switch, fan, light, and cover.

(@piitaya - #154163) (group docs)

Breaking

Asuswrt

The last_time_reachable attribute has been removed from the asuswrt device tracker. Use the last_changed attribute instead in your automations.

(@ollo69 - #154219) (asuswrt docs)

Breaking

LG webOS TV

The state of LG webOS TV media player entities that do not have an automation trigger to turn on the device will be set to unavailable instead of off.

(@thecode - #155164) (webostv docs)

Breaking

Mealie

The mealie integration now requires Mealie version 2 or later.

Mealie version 1 is no longer supported. Version 2 was released in October 2024, so over a year ago. Given the differences between versions 1 and 2, we are no longer able to support or test backward compatibility with version 1.

(@andrew-codechimp - #153203) (mealie docs)

Breaking

Motion Blinds

The tilt position of motion_blinds devices has been corrected to align with the Home Assistant standards. The new tilt position will be: 0 = closed/covering the window opening, 100 = open/letting light through. The previous tilt position can be converted to the new tilt position as follows:

  • new = 100 - old
  • current_tilt_position = 100 -> 0
  • current_tilt_position = 75 -> 25
  • current_tilt_position = 50 -> 50
  • current_tilt_position = 25 -> 75
  • current_tilt_position = 0 -> 100
  • open_cover_tilt -> close_cover_tilt
  • close_cover_tilt -> open_cover_tilt

Any automations concerning Motion Blinds devices that use the current_tilt_position attribute or use tilt open/close will need to be adjusted.

(@starkillerOG - #149777) (motion_blinds docs)

Breaking

Mobile app

The mobile_app integration, which supports the iPhone and Android companion apps, now handles zone-only updates better. When your companion app sends just the zone name (not the exact coordinates), the device tracker will show the zone's friendly name.

The person entity now shows the zone's friendly name (not its object ID) for custom zones. This might break existing automations that trigger on a person's state.

As an example, if you have a zone named zone.kids_school with the friendly name School:

  • Before this change, the state of the corresponding person and device_tracker entities would be kids_school when the "Location Sent" in the companion app was set to send "Zone Name Only" and School when it was set to "Exact".
  • After this change, the state of the corresponding person and device_tracker entities will be School for both the "Location Sent" settings in the companion app.

(@Ashus - #149453) (mobile_app docs)

Breaking

Nederlandse Spoorwegen

The Nederlandse Spoorwegen entity is now displayed as a timestamp entity, rather than a string. Please adapt your automations and scripts.

(@joostlek - #154011) (nederlandse_spoorwegen docs)

Breaking

ONVIF

The Speed parameter in the ONVIF GoToPreset action is now optional.

The default of 0.5 is no longer set. If you want to restore the previous behavior you have to set speed to 0.5 in your action.

(@carlos-sarmiento - #149636) (onvif docs)

Breaking

OralB

In the OralB integration, states and attributes have changed.

In multiple places, spaces have been replaced with underscores:

  • Toothbrush state:
  • flight menu → flight_menu
  • selection menu → selection_menu
  • final test → final_test
  • pcb test → pcb_test
  • Brushing mode:
  • daily clean → daily_clean
  • gum care → gum_care
  • tongue cleaning → tongue_cleaning
  • super sensitive → super_sensitive
  • deep clean → deep_clean
  • Pressure:
  • power button pressed → power_button_pressed
  • button pressed → button_pressed
  • Sector:
  • no sector → no_sector
  • sector 1 → sector_1
  • sector 2 → sector_2
  • sector 3 → sector_3
  • sector 4 → sector_4

Automations should be updated to use the new states and attributes.

(@tr4nt0r - #153605) (oralb docs)

Breaking

Renault

The discovery of Renault functionality was previously based on assumptions that may have created invalid and non-functional entities. These will no longer be created.

(@epenet - #154137) (renault docs)

Breaking

Traccar Server

The Traccar integration has been updated to use a more secure API Token for authentication. This is a required, one-time breaking change to align with Traccar's security recommendations and ensure the integration continues to work.

This release migrates the integration away from the older username/password method, ensuring continued stability and security for all users while also allowing users with SSO-based setups to use the integration.

When you update Home Assistant, the existing Traccar integration will need to be re-authenticated:

  1. Generate an API Token on your Traccar server (you'll find this option in your Traccar server's user settings).
  2. Go to Settings > Devices & services > Traccar Server.
  3. Click "Reconfigure" and enter your new API Token when prompted.

Once you've done this, your Traccar devices and entities will work exactly as they did before.

(@pantherale0 - #155297) (traccar_server docs)

Breaking

Xbox

The Account tier and Gold tenure sensors have been retired, as they no longer receive updates following the transition from Xbox Live Gold to Xbox Game Pass. Additionally, the In party and In multiplayer binary sensors have been removed, since they’ve been non-functional for quite some time.

(@tr4nt0r - #154891) (xbox docs)

Full release notes for 2025.11.0

2025.11.1 – 2025.11.3: no action items (3 versions)

2025.12.0 2025-12-03

6 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2025/12/03/release-202512/#backward-incompatible-changes

Breaking

Core and Supervised installation methods, and 32-bit systems

After a 6-month deprecation period, support for the Home Assistant Core and Home Assistant Supervised installation methods, as well as all 32-bit system architectures (i386, armhf, and armv7), has now been fully removed.

These installation methods and architectures will no longer receive updates, including security updates. If you are still using one of these installation methods or architectures, please migrate to a supported installation method and architecture as soon as possible to continue receiving updates and support.

For more information on this change, read the Deprecating Core and Supervised installation methods, and 32-bit systems blog post.

Breaking

Hive

Hive has removed support for their security products. We have removed the alarm control panel from the integration, as the Hive APIs no longer support these products.

(@KJonline - #156184) (hive docs)

Breaking

Templates

The issues() templating method used to return all issues, including fixed issues. From now on, only active issues are returned.

(@jbouwh - #156274)

Breaking

go2rtc

It is now required to set a username and password when enabling the debug UI.

(@edenhaus - #157008) (go2rtc docs)

Breaking

UniFi Protect

The legacy license plate event sensor has been removed from the UniFi Protect integration, as it no longer functions with Protect 6 and newer. The UniFi Protect integration has not been compatible with Protect versions older than 6 for quite some time.

This sensor has been replaced with a new Vehicle Detection Event entity that provides significantly more functionality, including license plate recognition, vehicle type detection, color detection, and confidence scores. The new event entity fires with a 3-second delay to ensure optimal thumbnail and LPR data quality.

For more information and automation examples, see the Vehicle Detection Event documentation.

(@RaHehl - #157196, #157203) (unifiprotect documentation)

Breaking

Xbox

  • The Xbox media browser has been completely overhauled to support multiple accounts and introduce a range of other improvements. As part of this update, the format of the media-source identifiers has been changed as well.
  • The following and followers sensors introduced in the last release previously included friends in their counts. After a recent API update, friends are no longer included.

(@tr4nt0r - #155925) (@tr4nt0r - #155536) (xbox docs)

Full release notes for 2025.12.0

2025.12.1 – 2025.12.5: no action items (5 versions)

2026.1.0 2026-01-07

5 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2026/01/07/release-20261/#backward-incompatible-changes

Breaking

Coolmaster

The climate entities provided by the Coolmaster integration now use medium for the medium fan mode; before this change, it was med. If your automations are using med when setting or querying the fan speed, you'll have to change it to medium.

(@tan-lawrence - #157253) (coolmaster docs)

Breaking

Tailscale

The "Supports hairpinning" binary sensor has been removed from the Tailscale integration. According to the official Tailscale API documentation, this information is no longer tracked and will always return null.

(@CraigCallender - #156728) (tailscale docs)

Breaking

UniFi Protect

Select entity state values have been changed from their original mixed-case format to snake_case format with proper translations. This improves consistency and enables proper localization support.

Affected select entities include: chime type, recording mode, infrared mode, status light mode, HDR mode, doorbell text, LCD message, and others.

Example changes:

  • Chime type: Mechanical → mechanical, Digital → digital
  • Recording mode: Always → always, Detections → detections, Never → never
  • Infrared mode: Auto → auto, On → on, AutoNoLEDsOn → auto_no_leds_on
  • Status light mode: On → on, Off → off, OnWhenDark → on_when_dark
  • HDR mode: Auto → auto, On → on, Off → off

If you have automations, scripts, or templates that check or set the state of UniFi Protect select entities, you need to update them to use the new snake_case values. The UI will continue to display properly translated, human-readable text.

(@RaHehl - #159284) (unifiprotect docs)

Breaking

Telegram bot

Allowing extra/unused parameters has been removed from the action for Telegram bot. Only users who have used undefined parameters for Telegram bot actions are affected. If you are affected, remove such parameters from your automations and scripts. Supported parameters can be found in the Telegram bot notification actions documentation.

(@hanwg - #158886) (telegram_bot docs)

Breaking

VeSync

The advancedSleep fan mode has been changed to advanced_sleep. If you have automations or scripts using this fan mode, please update them accordingly.

(@cdnninja - #158956) (vesync docs)

Full release notes for 2026.1.0

2026.1.1 – 2026.1.3: no action items (3 versions)

2026.2.0 2026-02-04

5 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2026/02/04/release-20262/#backward-incompatible-changes

Breaking

Group

The behavior of sensor groups has changed:

  • A sensor group is now unavailable if all group members are either unavailable or missing (meaning they are not in the state machine).
  • When the group is not considered unavailable and the configuration variable ignore_non_numeric is set to False (the default), the group state is calculated according to the configured type only if all group members are in the state machine and have a numeric state. If not, the group state will be unknown.

(@emontnemery - #152167) (group documentation)

Breaking

Sentry

Self-hosted Sentry users only: This upgrade requires Sentry server version 20.6.0 or later (released June 2020) due to the SDK's use of the /envelope API endpoint. Users running older self-hosted Sentry instances must upgrade their server before updating Home Assistant.

Home Assistant users using sentry.io are not affected.

(@vaind - #159415) (sentry documentation)

Breaking

Tractive

The following sensors have been removed because they are no longer supported by the Tractive API:

  • activity
  • calories burned
  • sleep

If you use these entities in your automations or scripts, you must update them.

(@bieniu - #160089) (tractive documentation)

Breaking

Tuya

Duplicate HVACMode have been converted to presets. You may need to adjust service calls from set_hvac_mode to set_preset_mode in your automations or scripts.

(@epenet - #160918) (tuya documentation)

Breaking

VeSync

The advanced_sleep preset mode is now replaced by sleep. If you have been using advanced_sleep, in your automations or scripts, you must update them to use sleep instead.

(@cdnninja - #160573) (vesync documentation)

Full release notes for 2026.2.0

2026.2.1 – 2026.2.3: no action items (3 versions)

2026.3.0 2026-03-04

10 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2026/03/04/release-20263/#backward-incompatible-changes

Breaking

BSB-Lan

The water heater operation mode state on has been changed to performance for the BSB-Lan water heater. If you use this state in your automations or scripts, you will need to update them to use the new state value.

(@liudger - #160256) (BSB-Lan documentation)

Breaking

Container image

Home Assistant container images are now compressed with zstd instead of gzip. This change is supported on Docker 23.0.0 and later, and containerd 1.5.0 and later, so it is not expected to break installations that meet these minimum versions. If your environment uses an older Docker or containerd version, make sure your container runtime supports zstd before updating.

(@duhow - #160665)

Breaking

LIFX

Passing the color_temp parameter (in mireds) to the lifx.effect_pulse action is no longer allowed. Use the color_temp_kelvin parameter instead.

(@Djelibeybi - #161848) (LIFX documentation)

Breaking

Lights

Using color_temp (in mireds) to set a light's color temperature is no longer supported. Use color_temp_kelvin instead.

Additionally, the color_temp, kelvin, min_mireds, and max_mireds light entity state attributes have been removed. Use color_temp_kelvin, min_color_temp_kelvin, and max_color_temp_kelvin instead.

(@emontnemery - #161777) (light documentation)

Breaking

Satel Integra

Binary sensors and switches now have an initial state of unknown while the alarm panel is still reporting all states during startup. Previously, the default state was off, which was incorrect, as no data had been received from the panel yet.

The chance that you are impacted is low, as most states are reported before Home Assistant fully finishes setup; but this might occur on larger installations and slower connections.

(@Tommatheussen - #158533) (Satel Integra documentation)

Breaking

Snapcast

Media player entities for Snapcast groups have been removed. Additionally, the Snapcast-specific grouping actions have been removed. If you use these entities or actions in your automations or scripts, you will need to update them.

(@luar123 - #160945) (Snapcast documentation)

Breaking

StarLine

The ignition and autostart state attributes of the engine switch have been removed. Two new binary sensors have been introduced to replace them. If you reference these attributes in your automations or scripts, update them to use the new binary sensor entities instead.

(@epenet - #163289) (StarLine documentation)

Breaking

Tado

Mobile device tracking has been removed from the Tado integration. Mobile devices and their associated device tracker entities are no longer available. This change resolves re-authentication issues and reduces unnecessary load on the Tado API.

(@erwindouna - #160881) (Tado documentation)

Breaking

Template

The behavior of template fans has changed:

  • A template fan's state will be unavailable if the state template encounters a syntax error. Previously, a template error would show the fan's state as off.
  • The percentage attribute will be None if the percentage template encounters a syntax error. Previously, it would be 0.
  • Template fans can now have the unknown state. A state template that returns None will render the entity as unknown instead of off.

(@Petro31 - #162328) (Template documentation)

Breaking

Z-Wave

Percentage speeds reported by Z-Wave fans have been corrected to align with other integrations. As a result, values may differ slightly. For example, a value previously reported as 67% may now appear as 66%. If you have automations that trigger on exact percentage values, you may need to adjust them.

(@arturpragacz - #163093) (Z-Wave documentation)

Full release notes for 2026.3.0

2026.3.1 – 2026.3.4: no action items (4 versions)

2026.4.0 2026-04-01

8 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2026/04/01/release-20264/#backward-incompatible-changes

Breaking

JVC Projector

The Picture Mode and HDR Processing entities have been migrated from the sensor domain to the select domain, because they represent selectable settings rather than read-only values.

New entities:

  • select.jvc_projector_picture_mode
  • select.jvc_projector_hdr_processing

The legacy sensor entities are now deprecated. If a deprecated sensor is disabled and not referenced by automations or scripts, Home Assistant will remove it from the entity registry. If usage is detected, Home Assistant keeps it and shows a repair issue to help you migrate. Update your automations, scripts, dashboards, and templates to use the new select entities.

(@SteveEasley - #165194) (JVC Projector documentation)

Breaking

Litter-Robot

The deprecated night light mode switch entity for Litter-Robot 4 devices has been removed. This switch was replaced by a select entity in Home Assistant 2025.10. If you still use the old switch entity in your automations or scripts, update them to use the select entity instead.

(@natekspencer - #165636) (Litter-Robot documentation)

Breaking

Motion Blinds

On devices that support tilt but do not report a tilt position, the tilt open and tilt close operations now send jog up and jog down commands instead of setting the tilt angle to 0° or 180°. Setting an absolute tilt position usually didn't work on these devices anyway, and jog commands provide a meaningful small step in the intended direction.

If you have automations that rely on the previous tilt behavior for these devices, you may need to adjust them.

(@tobiaswaldvogel - #164694) (Motion Blinds documentation)

Breaking

MQTT

Support for the object_id option has been removed after 6 months of deprecation. This option was used to suggest the entity ID for an MQTT entity and has been replaced by the default_entity_id configuration option.

If you used object_id in your MQTT YAML configuration, you were previously asked via a repair flow to update your configuration. If object_id is still part of a discovery message, the option will simply be ignored and will not break discovery.

(@jbouwh - #164460) (MQTT documentation)

Breaking

pyLoad

pyLoad 0.4.x is now deprecated, and you should switch to pyLoad-ng 0.5.0. pyLoad-ng introduced a new API, and support for the old API has been dropped.

(@tr4nt0r - #164495) (pyLoad documentation)

Breaking

Roth Touchline

The preset mode names for the Roth Touchline climate entities have been updated to use standard Home Assistant preset names, making them translatable. If you have automations or scripts that reference the old preset mode names, update them to use the new names:

  • Normal → none
  • Night → sleep
  • Holiday → away
  • Pro 1 → program_1
  • Pro 2 → program_2
  • Pro 3 → program_3

(@joostlek - #166390) (Roth Touchline documentation)

Breaking

Tuya

Previously deprecated switch entities used to control valves have been removed. Use the valve entities instead. If you have automations or scripts that reference these switch entities, update them to use the corresponding valve entities.

(@epenet - #164657) (Tuya documentation)

Breaking

Z-Wave

The Z-Wave Installer panel has been removed. This panel was hidden and required an undocumented YAML configuration to enable. The same functionality is now natively available through Z-Wave JS UI in the Z-Wave app.

(@AlCalzone - #165388) (Z-Wave documentation)

Full release notes for 2026.4.0

2026.4.1 – 2026.4.4: no action items (4 versions)

2026.5.0 2026-05-06

6 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2026/05/06/release-20265/#backward-incompatible-changes

Breaking

Purpose-specific triggers and conditions

When we first introduced purpose-specific triggers and conditions, we added separate ones for Person entities and Device Tracker entities. Since then, we've decided to take a more ergonomic, cross-domain approach instead.

As a result, the entered home and left home triggers, and the is home and is not home conditions, have been removed from Person and Device Tracker. Replacements that work across both will land in an upcoming release.

If you have automations that use these triggers or conditions on a person or device tracker, switch them back to a regular state trigger or state condition (for example, state changed to home) until the cross-domain replacements arrive.

(@emontnemery - #168406)

Breaking

Gardena Bluetooth

The "finish watering" value in the Gardena Bluetooth integration has been moved from a binary sensor to a regular sensor that exposes the timestamp of when watering is expected to finish. This makes the value far more useful in dashboards and automations.

If you have automations, scripts, or dashboards that reference the previous binary sensor entity, update them to use the new sensor entity instead.

(@elupus - #169476) (Gardena Bluetooth documentation)

Breaking

pilight

The pilight integration has been disabled because the underlying pilight library relies on setuptools.pkg_resources, which is no longer available in setuptools 82.0.0 and later.

If the library is updated to remove the setuptools.pkg_resources dependency, or replaced with a maintained alternative that does so, the integration can be activated again. Community contributions to make this happen are very welcome.

(@epenet - #167760) (pilight documentation)

Breaking

Ring

The Ring doorbell event entity now emits the standardized ring event type instead of the legacy ding. This change aligns Ring with the new doorbell event standard, so the entity can be used seamlessly with the new purpose-specific automation triggers and conditions.

If you have automations that listen for the ding event type from your Ring doorbell, update them to use ring instead.

(@abmantis - #167728) (Ring documentation)

Breaking

Supervisor

Previously, all actions registered by the Supervisor integration (such as hassio.addon_start, hassio.backup_partial, and hassio.host_reboot) only logged an error on failure, and your script or automation would continue running regardless of whether the action succeeded.

These actions now properly raise on failure, which means your automation or script will stop unless continue_on_error is set to true. If you rely on the previous behavior, add continue_on_error: true to those action steps.

(@mdegat01 - #166558) (Supervisor documentation)

Breaking

Webhook

The local_only option on webhooks must now be a proper boolean (true or false). Previously, other truthy values like 1 or "yes" were silently accepted. This brings the option in line with the rest of Home Assistant.

If you have webhooks configured in YAML with non-boolean local_only values, update them to use true or false.

(@edenhaus - #169296) (Webhook documentation)

Full release notes for 2026.5.0

2026.5.1 – 2026.5.4: no action items (4 versions)

2026.6.0 2026-06-03

12 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2026/06/03/release-20266/#backward-incompatible-changes

Breaking

Purpose-specific triggers (Labs)

The behavior options for the Labs purpose-specific triggers have been renamed to better match what they do: any is now each, and last is now all. The default is now each.

If you have automations that use these triggers from the Labs preview at Settings > System > Labs, open them in the automation editor and re-pick the behavior option. Any YAML you wrote against the old keys needs to be updated to the new names.

(@emontnemery - #172348)

Breaking

Bluetooth

The default Bluetooth scanning mode has changed to Auto, which dynamically switches between active and passive scanning depending on what is happening. This saves around 95-96% of the battery used for Bluetooth scanning while keeping the same functionality for most setups.

If you run into issues after the upgrade, you can switch your Bluetooth adapter back to Active scanning. Go to Settings > Devices & services, open the Bluetooth integration, and select Configure on your adapter to change the scanning mode.

(@bdraco - #171985) (Bluetooth documentation)

Breaking

Certificate Expiry

The error attribute on the certificate expiry sensor now returns a proper None value instead of the string "None" when there is no error.

If you use this attribute in templates, update your comparisons from == "None" to is none.

(@TomFilsell - #170878) (Certificate Expiry documentation)

Breaking

ESPHome

The default Bluetooth proxy scanning mode for ESPHome devices is now Auto. Devices that were previously set to Active are automatically migrated to Auto, while devices set to Passive keep their setting.

If you need Active scanning for a specific device, change it back in the device options under Settings > Devices & services.

(@bdraco - #171996) (ESPHome documentation)

Breaking

HDMI-CEC

Calling the turn_off action on HDMI-CEC switch or media player entities now sends the standard CEC standby command instead of a vendor-specific power-off command. This works more reliably across devices from different manufacturers.

If you relied on the previous behavior, you can send the original command using the hdmi_cec.send_command action with keypress 0x44 followed by 0x6c.

(@pattyland - #170206) (HDMI-CEC documentation)

Breaking

IronOS

The uptime sensor for IronOS soldering irons has changed from a duration sensor (reporting seconds) to a timestamp sensor that reports when the device was started.

Update any automations or dashboards that read this sensor to work with the new timestamp format.

(@tr4nt0r - #169699) (IronOS documentation)

Breaking

ONVIF

When you call the onvif.ptz action with continuous_duration: 0, the integration no longer sends a Stop command after the ContinuousMove. This lets you start a continuous movement and stop it later with a separate call.

If your automations rely on the camera stopping automatically, set continuous_duration to the desired duration in seconds.

(@yoxcu - #163173) (ONVIF documentation)

Breaking

Shelly

Shelly devices used as Bluetooth scanners now support the new Auto scanning mode. Existing devices set to Active are automatically migrated to Auto for better battery and performance.

You can change the scanning mode back in the device options under Settings > Devices & services.

(@bdraco - #172008) (Shelly documentation)

Breaking

SmartThings

The source attribute on SmartThings media players is now normalized to standard Home Assistant values. For example, D.IN is now reported as digital_input and BT as bluetooth.

If you use the source attribute in automations, dashboards, or templates, update them to match the new values.

(@felipecrs - #160034) (SmartThings documentation)

Breaking

Template entities

The legacy template platform syntax under the individual platform keys has been removed. This syntax was deprecated in Home Assistant 2025.12 and has now reached the end of its 6-month deprecation period.

This affects the following platforms:

  • alarm_control_panel
  • binary_sensor
  • cover
  • fan
  • light
  • lock
  • sensor
  • switch
  • vacuum
  • weather

Move your template entities to the modern template: syntax. A step-by-step migration guide is available in the Removal of legacy template entities forum thread.

(@Petro31 - #169608, #169610, #169611, #169613, #169615, #169725, #169728, #169730, #169732, #169734) (Template documentation)

Breaking

Tuya

The unit of measurement provided by the Tuya API now takes precedence over the default unit assigned by Home Assistant. This makes the reported value match what the Tuya app shows.

If your device reports an invalid or unexpected unit, please submit a bug report with the device details and the unit it reports and adjust it accordingly.

(@epenet - #170338) (Tuya documentation)

Breaking

Velux

The deprecated velux.reboot_gateway action has been removed. Use the reboot button entity on your Velux gateway instead.

(@wollew - #169796) (Velux documentation)

Full release notes for 2026.6.0

2026.6.1 – 2026.6.4: no action items (4 versions)

2026.7.0 2026-07-01

13 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2026/07/01/release-20267/#backward-incompatible-changes

Breaking

Purpose-specific triggers and conditions

Several entity triggers and conditions, part of the new purpose-specific triggers and conditions, have been renamed so their keys are consistent across all domains. The old keys no longer work.

The following triggers changed:

  • battery.low is now battery.became_low
  • battery.not_low is now battery.no_longer_low
  • lawn_mower.docked is now lawn_mower.returned_to_dock
  • schedule.turned_off is now schedule.block_ended
  • schedule.turned_on is now schedule.block_started
  • timer.time_remaining is now timer.remaining_time_reached
  • update.update_became_available is now update.became_available
  • vacuum.docked is now vacuum.returned_to_dock

The following conditions changed:

  • climate.target_humidity is now climate.is_target_humidity
  • climate.target_temperature is now climate.is_target_temperature

If an automation or script uses one of these, it will stop working until updated. To fix it, open the affected automation or script, re-select the trigger or condition (it now appears under its new name), and save. If you edit in YAML, replace the old key with the new one from the list above.

(@frenck - #174463)

Breaking

BSB-LAN

The BSB-LAN integration has reduced its support for the older version 1 JSON API. If your BSB-LAN device runs very old firmware that only speaks the version 1 API, update it to firmware that supports the version 2 API to keep everything working.

A repair notification will let you know if your device is affected.

(@liudger - #172843) (BSB-LAN documentation)

Breaking

iCloud

The battery_level attribute has been removed from iCloud device tracker entities. Use the dedicated battery sensor in your automations and scripts instead.

(@some-random-climber - #174117) (iCloud documentation)

Breaking

Person

Person entities no longer report the latitude and longitude of the home zone when their location comes from a presence scanner associated with the home zone.

If you have automations or scripts that check the coordinates of a person, adjust them. To check whether a person is in a specific zone, use the new in_zones state attribute instead.

(@emontnemery - #173042) (Person documentation)

Breaking

Rabbit Air

The Rabbit Air fan preset mode values changed from title case to lowercase to match Home Assistant's state convention: Auto is now auto, Manual is now manual, and Pollen is now pollen. The user-facing labels stay the same through translations.

Update any automations, scripts, templates, or action calls that reference the old title-case preset values.

(@MagikalUnicorn - #172931) (Rabbit Air documentation)

Breaking

Reolink

Reolink Duo PoE and Duo WiFi dual-lens cameras now expose a sub-device per lens. The camera and motion/AI sensor entities that previously had a "lens 0" or "lens 1" suffix in their name are moved to the new lens sub-devices and lose that suffix. Entity IDs and custom names stay the same, so most automations keep working.

If you target these entities through the camera device, update them to use the new lens sub-devices.

(@Markus98 - #173037) (Reolink documentation)

Breaking

StarLine

The battery_level attribute has been removed from StarLine device tracker entities. Use the dedicated battery sensor in your automations and scripts instead.

(@some-random-climber - #174118) (StarLine documentation)

Breaking

Tesla Fleet

The route device tracker (device_tracker.<vehicle>_route) no longer reports the active route's destination name as its state. Its state is now derived from your zones like a normal device tracker (home, not_home, or a zone name), based on the route's coordinates.

The destination name is still available through the new destination sensor (sensor.<vehicle>_destination), which is disabled by default. Enable it from the entity settings if you have automations that relied on the destination name, and update any automations that matched the old route tracker state.

(@Bre77 - #172513) (Tesla Fleet documentation)

Breaking

Teslemetry

The route device tracker no longer reports the active route's destination as its state or through a location_name attribute. Its state is now derived purely from the route's coordinates (zone-aware, like home or not_home).

If you relied on the destination name, enable the new Destination sensor (sensor.*_destination), which is disabled by default and reports the destination name as Tesla provides it.

(@Bre77 - #172514) (Teslemetry documentation)

Breaking

Tractive

The battery_level attribute has been removed from Tractive device tracker entities. Use the dedicated battery sensor in your automations and scripts instead.

(@bieniu - #172756) (Tractive documentation)

Breaking

Zeroconf

The legacy requires_api_password field has been removed from the Home Assistant zeroconf/mDNS discovery announcement (_home-assistant._tcp). It had been hardcoded to true since the http.api_password authentication mechanism was removed in Home Assistant 2024.7, so it no longer carried any meaning. The official companion apps already ignore it.

Third-party discovery clients that still read this field need to tolerate its absence.

(@agners - #173090) (Zeroconf documentation) (API documentation)

Breaking

Zone

The state (person count) and persons attribute of zone entities are now calculated from the in_zones attribute of person entities. As a result, a person can now be counted in more than one zone at the same time. For example, a person who is home with in_zones: ["home", "near_home"] now counts toward both zone.home and zone.near_home, where previously they only counted toward zone.home.

In addition, the state of position-aware device trackers is now the smallest zone the device is in, instead of the zone whose center it is closest to.

Automations, scripts, or templates that depend on zone person counts or on device tracker zone states may need to be adjusted.

(@emontnemery - #172942, #173106) (Zone documentation)

Breaking

Z-Wave JS

This release requires an updated Z-Wave JS server. You need zwave-js-server 3.9.0 or newer (schema 49):

  • If you use the Z-Wave JS app, update it to at least version 1.4.0.
  • If you use the Z-Wave JS UI Docker container, update it to at least version 11.19.1.
  • If you run your own zwave-js-server, update it to at least version 3.9.0.

(@AlCalzone - #173309) (Z-Wave JS documentation)

Full release notes for 2026.7.0

2026.7.1 – 2026.7.4: no action items (4 versions)

2026.8.0 2026-08-05

9 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2026/08/05/release-20268/#backward-incompatible-changes

Breaking

AirNow

The station radius option has been removed. The 2026 AirNow API no longer uses a distance parameter, so the radius had no effect on which reporting station was used. Existing entries are updated automatically, and any radius you had set is discarded. No action is needed.

(@derekcentrico - #176740) (AirNow documentation)

Breaking

Gardena Bluetooth

The valve's activation_reason sensor now reports a fixed set of values instead of free-form text. If you have automations, scripts, or templates that match on the old text values, update them to match the new ones.

(@elupus - #177187)

Breaking

Edifier Infrared

If you set up the Edifier Infrared integration for the R2000DB or R2730DB speakers, some buttons were mapped to the wrong infrared codes (on the R2730DB, power and mute were swapped). The mappings are now corrected and migrated automatically. If you built automations or scripts around the old, incorrect buttons, update them to match.

(@abmantis - #177472) (Edifier Infrared documentation)

Breaking

Ohme

The Ohme energy sensor has been removed. It reported an estimate of the energy stored in the car's battery rather than the energy delivered by the charger, which caused confusing jumps in the energy dashboard, and the vendor's API no longer provides a useful value.

If you tracked this sensor, use an Integration - Riemann sum helper on a power sensor to estimate the energy instead.

(@dan-r - #174664) (Ohme documentation)

Breaking

Paperless-ngx

Paperless-ngx now requires a newer version of your Paperless-ngx server. The minimum supported server version is raised to 2.19, which also restores compatibility with Paperless-ngx 3.0. If your Paperless-ngx server is on version 2.18 or older, update it before you update Home Assistant.

(@IngmarStein - #176889) (Paperless-ngx documentation)

Breaking

Robot vacuums

The deprecated battery_level property has been removed from the vacuum entities of several integrations. If you use a robot vacuum's battery level in an automation, script, or on a dashboard, use the vacuum's battery sensor instead.

This affects the following integrations:

(@gjohansson-ST - #175681, #175684, #175685, #175686, #175687, #175688, #175691, #175764)

Breaking

ScreenLogic

The option to configure the polling interval has been removed from ScreenLogic. Home Assistant now polls the integration at a fixed interval. If you need a different update frequency, you can set your own polling interval or trigger an update with the homeassistant.update_entity action.

(@Pinball3D - #175576) (ScreenLogic documentation)

Breaking

UniFi Protect

Support for UniFi Protect AI Port devices has been removed. These devices only ever exposed diagnostic sensors, all disabled by default, and are not part of the UniFi Protect public API the integration is moving to. The AI Port device and its sensors are removed automatically when you update. You can still configure the AI Port directly in UniFi Protect.

(@RaHehl - #174378) (UniFi Protect documentation)

Detection scores are no longer available. The detection binary sensors (motion, person, vehicle, animal, and the smart-audio alarm sensors) now take their state from the UniFi Protect public API, which carries no per-event score, so their event_score attribute is gone and automations that filter on it need another condition. The event id and the detected types moved to the new Motion detection, Smart detection, and Sound detection event entities.

(@RaHehl - #174948) (UniFi Protect documentation)

UniFi Protect 7.1 or newer is now required. On an older console the integration reports that the version is too old instead of setting up. Update UniFi Protect to 7.1 or newer to keep using it.

(@RaHehl - #177620) (UniFi Protect documentation)

Breaking

Volvo On Call

The Volvo On Call integration has been removed. If you have a supported Volvo, set up the newer Volvo integration instead.

(@gjohansson-ST - #175677)

Full release notes for 2026.8.0

2026.8.1 – 2026.8.3: no action items (3 versions)

2026.9.0 2026-09-02

8 Breaking — show quotes

Quoted from www.home-assistant.io/blog/2026/09/02/release-20269/#backward-incompatible-changes

Breaking

Flexit Nordic (BACnet)

The deprecated fireplace mode switch entity has been removed. If you have automations or scripts that use switch.<device>_fireplace_mode, use the climate.set_preset_mode action on the Flexit climate entity with preset_mode: fireplace instead.

(@magnusoverli - #179272) (Flexit Nordic (BACnet) documentation)

Breaking

KNX

KNX exposes no longer send an entity's first value to the KNX bus. Previously, this depended on timing: if the entity already had a value when the expose was set up, nothing was sent, but if the value arrived later, it was sent to the bus right away.

Now, both cases behave the same way. The first value is adopted locally without sending a telegram, but stays available for read requests and periodic sending. Later value changes are still sent as before.

To send the first value right away, turn on Send on initialization for the expose in the KNX panel, or set send_on_init: true in your YAML configuration.

(@Kolbi - #178793) (KNX documentation)

Breaking

LLM APIs

LLM tool names are now prefixed with the domain of the integration that offers them. For example, GetLiveContext becomes homeassistant__GetLiveContext and HassTurnOn becomes intent__HassTurnOn. If you have a custom prompt that names a tool directly, update it to use the new prefixed name.

(@balloob - #179938)

Breaking

Persistent Notification

Updating a persistent notification that already exists now triggers an update_type of updated instead of added. If you have an automation that triggers on an update_type of added to catch every new or changed notification, add updated to the list of types it triggers on.

(@davidlang42 - #171067) (Persistent Notification documentation)

Breaking

UniFi Protect

The smart detection switches (for example Detections: Person, Detections: Vehicle, and the audio alarm toggles) are no longer hidden while recording is disabled. They now stay available and follow the same public API as the other camera configuration switches. Their entity IDs and what happens when you toggle them are unchanged.

(@RaHehl - #174963) (UniFi Protect documentation)

UniFi Protect 7.2.105 or newer is now required. On an older version, the integration stops setting up and tells you to update. Update UniFi Protect, then reload the integration.

(@RaHehl - #179954) (UniFi Protect documentation)

Breaking

Update

Installing an update, skipping an update, and clearing a skipped update now require an administrator account. These are configuration-level actions, so they are now restricted to admins, like other sensitive actions in Home Assistant.

Automations are not affected, because they run without a user context. A script runs in the context of the user who started it, so a script that installs or skips an update now fails when a non-admin user starts it. Trigger it from an automation instead, or start it as an admin.

(@balloob - #178232) (Update documentation)

Breaking

Vacuum

The deprecated battery_level property has been removed from the base vacuum entity. All core vacuum integrations were already migrated in Home Assistant 2026.8. If a custom integration still sets this property, it no longer reports a battery level; add a separate battery sensor instead.

(@gjohansson-ST - #175682) (Vacuum documentation)

Breaking

Z-Wave JS

The Z-Wave actions to manage lock users and credentials (set_user, delete_user, delete_all_users, set_credential, delete_credential, and delete_all_credentials) now require an administrator account.

(@balloob - #177300) (Z-Wave JS documentation)

Full release notes for 2026.9.0

2026.9.1 – 2026.9.4: no action items (4 versions)

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