2021.12: New configuration menu, the button entity, and gorgeous area cards!

Home Assistant Core 2021.12, the final release of the year 2021; And I really think this release will contain a holiday gift for everyone!

With the holiday season coming, it is time to slow down a bit for the project, and enjoy time with our family. In a couple of weeks, 2022 will be here!

All I want to add to these last release notes of 2021 is: Thank you.

Thank you for hanging out with the project. Thank you for contributing, and thank you for reporting an issue. Thank you for helping out a fellow Home Assistant user on the forum, chat, Reddit, or anywhere else. Thank you for sharing your experiences, ideas, automations, scripts, YouTube videos, and blogs; and above all: Thank you for using Home Assistant ❤️

Happy holidays and for the last time in 2021: Enjoy the release!

../Frenck

PS: We are skipping the January release because of the holidays. So, the first release in 2022, will be Wednesday, 2 February 2022.

Brand new configuration panel

The configuration panel has been revamped. Everything is more compact and categorized. A bit of added color so you can recognize the item you need more quickly.

Screenshot of the new areas panel

The Supervisor panel and its sidebar item have been removed, and the panel has been merged into the configuration panel. All OS, Core & Add-on updates are now shown in the top of the configuration panel.

If you are using our Android, iOS, or macOS Companion apps, the sidebar menu to configure those has also been moved into the configuration panel.

All configuration related items, neatly organized in a single place 🤘

The button entity

Introducing a new entity: the button entity. Yes, it’s a button. What can you do with it? Press it!

We already have a switch entity in Home Assistant, but a switch has a state; switches are either on or off. A button, however, is a push-button, like a stateless or momentary switch.

Button entities can be provided by integrations and can be used for things like:

Examples use cases of button entities Examples use cases of button entities.

These are all things that can be triggered from Home Assistant but do not really have explicit on or off states.

We have added support for this button entity to Google Assistant, Alexa and HomeKit; allowing you to “press” those buttons from your favorite voice assistant.

For this release, MQTT & KNX added support for providing buttons. The Shelly, WLED, Elgato, Litter-Robot, TOLO Sauna, Tuya, Renault, and NAM integrations have added button entities.

Additionally, ESPHome 2021.12 has added full support for buttons too! Besides adding a restart button, you can now create button entities from ESPHome to trigger something on your DIY project from Home Assistant.

Redesigned area panel and the area Lovelace card

The area panel has been redesigned. Instead of a list of areas, it now shows a card for each area. The card shows a picture of the area.

Wait, a picture? Yes! You can now upload a picture for your area straight from the Home Assistant frontend. So, you can make it look something like this:

Screenshot of the new areas panel

But that is not all, @zsarnett created a brand new area Lovelace card. This card will use the picture you’ve uploaded for your area, and it automatically populates with entities of devices you have assigned to that specific area.

Screenshot of a new area Lovelace card Screenshot of a new area Lovelace card.

Users that can only log in from the local network

This new feature allows you to make users that are only allowed to log in from the local network and not from the internet or cloud.

This can be useful if you have users that are not always at your home or a dedicated user for a wall tablet that never needs to log in remotely.

Screenshot of user configuration in Home Assistant with local only enabled.

Z-Wave JS SmartStart and entity categories

Setting up your Z-Wave device with Home Assistant is now easier than ever, as Z-Wave JS now supports Z-Wave SmartStart!

When you have a SmartStart capable Z-Wave stick and device, you can now set up the device by simply scanning the QR code on the device, using your webcam, or using your mobile phone with the Home Assistant Companion app.

Including devices to your Z-Wave network has never been easier.

Screenshot of scanning the QR code to add a Z-Wave SmartStart device in Home Assistant.

Additionally, Z-Wave JS had added support for entity categories, so all your Z-Wave sensors are now neatly organized.

Blueprint scripts

This was actually in Home Assistant Core 2021.11 release, but we forgot to mention it completely… Shame on us… Retry!

You can now create, provide, share Blueprints for scripts! This works the same as with automations, except… well, it provides a script instead.

Script blueprints can be shared and imported, exactly like we do with automations now. These can be really helpful to provide to other Home Assistant users, as these scripts can be re-used in, e.g., other automations.

Triggering on any, but only state changes

Until now, writing automations that trigger on any state change of an entity, but not on any attribute changes, was nearly impossible without adding additional conditions.

We have now added a way to trigger on any state change, regardless of the state, without triggering on attribute changes. If you set from or to, and leave it empty, it will match any state but ignore attributes.

automation:
  trigger:
    - platform: state
      entity_id: media_player.living_room
      to: ~

The above example will only trigger if the state of the living room media player changes, but not if any of its attributes change.

The same syntax is also supported for attributes. To trigger on all changes of a specific attribute, you can use a similar syntax:

automation:
  trigger:
    - platform: state
      entity_id: media_player.living_room
      attribute: volume_level
      to: ~

The above example will only trigger if the volume level of the living room media player changes.

Cast issues resolved

You might be aware of issues with using the Google Cast features in Home Assistant. For example, casting a Lovelace dashboard didn’t work as reliably as it should have been.

We have some good news, these casting issues have been resolved!

Although a bugfix, we think the impact was significant enough to warrant its mention in the release notes.

Other noteworthy changes

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

  • The Hue integration now only uses the v2 API when talking to compatible hubs. This means that all light updates and remote presses are instantly available in Home Assistant, and scenes are now also natively supported. Amazing job, thanks @marcelveldt!
  • @farmio completely rewrote the Fronius integration adding support for all the latest, and greatest Home Assistant offers. Nice!
  • Besides supporting the new button entity, ESPHome now also supports setting the mode and unit of measurement on number entities. Thanks, @jesserockz!
  • Magic Home (Flux LED) got lots of love from @bdraco, adding support for new devices and features along the way.
  • @jbouwh improved the as_datetime template method, which now supports the UNIX timestamp.
  • The motionEye integration added sensors and service, thank you @dermotduffy.
  • WLED devices can now be restarted and upgraded from Home Assistant.
  • @chemelli74 added the climate platform support for Shelly, and @mib1185 added support for rebooting and upgrading Shelly devices.
  • Entities provided by the Vallox integration now have unique IDs and can be adjusted from the UI. Thanks @viiru-!
  • The Pi-hole integration now has a binary sensor to indicate an update is available, added by @andreasbrett.
  • System Bridge has two new services for sending keyboard events to the remote machine, added by @timmo001.
  • @klada added support for media player groups to Denon HEOS.
  • The REST platform now supports templates for its headers and query parameters. Thanks, @koying.
  • Mill now supports its 3rd generation heaters, thanks @Danielhiversen
  • @hmmbob added support for ms-MY, nl-BE, pa-IN to Google TTS.
  • Nanoleaf now pushes updates into Home Assistant, thanks @milanmeu.
  • @micha91 extended Yamaha MusicCast with number entities for controlling equalizers, dialogue volume/lift, and the display brightness.
  • The Levoit Core 400S air purifier is now supported by the VeSync integration, thanks for that @jparchem.
  • The state of number helpers is now exposed to Prometheus. Nice, @alim4r!
  • @tschamm added support for shutter controls to Bosch SHC.
  • Notifications for Android TV can now send a notification with custom icons; Awesome adding @redahb!
  • MQTT has seen multiple improvements in this release:
    • The select and number platforms now have command_template support (@jbouwh)
    • Switches now support device_class (@koying)
    • MQTT platforms can now set the object_id option (@Smeagolworms4)
    • Selects can now have a single or no options (@emontnemery)
    • Added ‘trigger’ support for Alarm Control Panels (@XaF)
    • Added lock.open support (@Hypnos3)

This release adds support for long-term statistics to the following integrations:

And the following integrations now have entity categories:

New Integrations

We welcome the following new integration this release:

Integrations now available to set up from the UI

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

Additionally, KNX can now partially be set up via the UI. The connection is done via the UI, the entities are configuration in YAML; just like before. Done by @marvin-w.

Release 2021.12.1 - December 12

Release 2021.12.2 - December 15

Release 2021.12.3 - December 17

Release 2021.12.4 - December 20

Release 2021.12.5 - December 23

Release 2021.12.6 - December 27

Release 2021.12.7 - December 29

Release 2021.12.8 - January 4

Release 2021.12.9 - January 10

Release 2021.12.10 - January 17

If you need help…

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

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

Backward-incompatible changes

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

customize.yaml UI (customization)

The customize.yaml UI (customization) has been removed. The YAML configuration for this is recommended and remains available. To customize entities, use the entity settings available via the icon in the top right of the entity “more info” dialog (when clicking on an entity). Entity settings now also allows customizing device_class for certain binary_sensor and cover cases.

A small explanation why it has been removed:

With customize, one is changing the state machine directly, without any checks. This comes at a risk. Additionally, for many use cases (like: name, icon, device class) one should edit the entity via the UI instead, which is possible for the greater part of the entities nowadays.

The old customize UI is confusing in many ways and has a level of power that, if wielded incorrectly, can have unforeseen consequences. Someone found and used the customize UI first, and then things are out of sync throughout the UI, as the internal entity registry would show the old values.

The customize UI also relied on setting up an include and YAML configuration to begin with; which already made it an advanced feature.

Therefore, the customize UI was removed and remains available as an advanced YAML feature, additionally we have added the capability, to adjust the common device_class changes using the “Show as” feature while editing the entity from UI.

Add-ons, Backups & Supervisor

The Supervisor panel has been merged into the configuration panel. The separate menu item from the sidebar has been removed.


The binary_sensor with “running” device_class that was provided for the Home Assistant Operating System device did not work and has now been removed; If you have added this to templates or automations, remove it from your configuration.

(@ludeeus - #60597) (hassio docs)

Companion App

The Companion App configuration has been merged into the configuration panel. The separate menu item from the sidebar has been removed.

Advantage Air

The HVAC mode for zone climate entities was set to FAN or OFF, because the actual HVAC mode is set for the entire ducted AC system. However, using FAN means the Google Home app won’t let you set a target temperature, so it has been changed to AUTO instead.

(@Bre77 - #52816) (advantage_air docs)

BMW ConnectedDrive

The following services/sensors have been removed due to not being available using the My BMW API:

  • alltrips_*
  • lasttrips_*
  • chargingconnectiontype
  • charginginductivepositioning
  • lastchargingendreason
  • lastchargingendresult
  • maxelectricrange

Attributes of binary_sensor.doors and binary_sensor.windows do not start with door/window anymore.

notify requires a location attribute at data.location, as the MyBMW API only supports sending POI and not messages.

The find_vehicle service will always send the location of your Home Assistant instance to BMW.

(@rikroe - #59881 #60938) (bmw_connected_drive docs)

Brunt Blind Engine

The Brunt integration migrated the connection settings to configuration via the UI. Configuring the connection to the Brunt API via YAML configuration has been deprecated and will be removed in a future Home Assistant release.

Your existing connection YAML configuration is automatically imported on upgrade to this release; and thus can be safely removed from your YAML configuration after upgrading.

Additionally, the Brunt integration can now be reloaded via the Integrations screen in the frontend and will also reload if a Brunt device is removed from your account.

(@eavanvalkenburg - #49714) (brunt docs)

Fronius

The Fronius integration migrated to configuration via the UI. Configuring Fronius via YAML configuration has been deprecated and will be removed in a future Home Assistant release.

Your existing YAML configuration is automatically imported on upgrade to this release; and thus can be safely removed from your YAML configuration after upgrading.

This change will remove manual configuration of Fronius device IDs. Connected SolarNet devices will be detected automatically on startup.

(@farmio - #59686) (fronius docs)

Guardian

Guardian services have been reorganized and now utilize a Home Assistant selector (device ID) instead of using a Guardian entity.

(@bachya - #58632) (guardian docs)

HomeKit Controller

This release removes the air quality from HomeKit Controller as the platform has been previously deprecated.

The air quality values have been broken out as their own sensors starting from September, making them easier to incorporate in your dashboard widgets, graphs, and automations. These should be used instead.

(@Jc2k - #60480) (homekit_controller docs)

Hue

Events for Hue remotes/switches

Philips/Signify streamlined the events that are emitted for remotes/switches; these are now no longer device specific but more generic. This means that if you’re relying on the hue_event to trigger events emitted by these devices, the event_data will now be slightly different. To easily identify what events get emitted by your Hue remotes, Open Developer Tools and subscribe to the hue_event.

Light entities for Hue rooms/zones

Entities for Hue groups (zones/rooms) will be imported but in a disabled state by default. The Integration option to enable Hue groups has been phased out in favor of the default Home Assistant functionality to enable/disable entities.

To enable any (new) light entities for Hue groups: Open settings –> integrations –> Hue –> Entities –> Click one of the disabled entities and enable it.

Existing Hue group lights for rooms/zones will be migrated as enabled entities.

Legacy Hue groups of type LightGroup (which are not visible in the official Hue app) will no longer be supported!

Entities for Hue scenes

If you create any scenes for your Hue zones/rooms, these will now be automatically imported to Home Assistant as scene entity, including support for the new Hue Dynamic Scenes. You can disable any scene entities you don’t like to use in Home Assistant (or delete them in the Hue app).

(@marcelveldt - #58996) (hue docs)

KNX

The KNX integration migrated the connection settings to configuration via the UI. Configuring the connection to the KNX bus via YAML configuration has been deprecated and will be removed in a future Home Assistant release.

Your existing connection YAML configuration is automatically imported on upgrade to this release; and thus can be safely removed from your YAML configuration after upgrading.

Additionally, the KNX integration can now be reloaded via the Integrations screen in the frontend, and thus the knx.reload service has been removed.

(@marvin-w - #59377) (knx docs)


The last_knx_update attribute has been removed from the KNX sensors and binary sensors. The last_update attribute can be used alternatively.

If you are relying on this attribute in your automations or script, you will need to adjust them to this change.

(@farmio - #58786) (knx docs)


The configuration key event_filter is now deprecated and will be removed in a future version of Home Assistant. Please use the new event config key instead.

(@farmio - #57621) (knx docs)

Kostal Plenticore

The “Battery Strategy” sensor has been removed from the Kostal Plenticore integration. It is replaced by a switch and a select entity to allow setting the battery charging settings from Home Assistant.

(@slowflyer - #56529) (kostal_plenticore docs)

Litter-Robot

The litterrobot.reset_waste_drawer and litterrobot.set_wait_time services are deprecated and replaced by dedicated button entities; please use those instead.

(@natekspencer - #59734) (litterrobot docs)

Material Design Icons (MDI)

The previously deprecated MDI icons, now have been removed.

The following icons have been removed:

  • adobe-acrobat
  • adobe
  • amazon-alexa
  • amazon
  • android-auto
  • android-debug-bridge
  • bandcamp
  • battlenet
  • blogger
  • buffer
  • cash-usd-outline
  • cash-usd
  • cellphone-android (alternative: cellphone)
  • cellphone-iphone (alternative: cellphone)
  • concourse-ci
  • currency-usd-circle
  • currency-usd-circle-outline
  • do-not-disturb-off (alternative: minus-circle-off)
  • do-not-disturb (alternative: minus-circle)
  • douban
  • file-pdf (alternative: file-pdf-box)
  • file-pdf-outline (alternative: file-pdf-box)
  • file-pdf-box-outline (alternative: file-pdf-box)
  • google-photos
  • home-currency-usd
  • laptop-chromebook (alternative: laptop)
  • laptop-mac (alternative: laptop)
  • laptop-windows (alternative: laptop)
  • microsoft-edge-legacy
  • microsoft-yammer
  • pdf-box (alternative: file-pdf-box)
  • plus-one (alternative: numeric-positive-1)
  • poll-box (alternative: chart-box)
  • poll-box-outline (alternative: chart-box-outline)
  • tablet-ipad (alternative: tablet)
  • telegram
  • untappd
  • vk
  • xamarian-outline
  • xing
  • y-combinator

The following icons have been renamed:

  • apple-airplay to cast-variant
  • application to application-outline
  • application-cog to application-cog-outline
  • application-settings to application-settings-outline
  • bolnisi-cross to cross-bolnisi
  • boom-gate-up to boom-gate-arrow-up
  • boom-gate-up-outline to boom-gate-arrow-up-outline
  • boom-gate-down to boom-gate-arrow-down
  • boom-gate-down-outline to boom-gate-arrow-down-outline
  • buddhism to dharmachakra
  • cellphone-erase to cellphone-remove
  • celtic-cross to cross-celtic
  • christianity to cross
  • christianity-outline to cross-outline
  • face to face-man
  • face-outline to face-man-outline
  • face-profile-woman to face-woman-profile
  • face-shimmer to face-man-shimmer
  • face-shimmer-outline to face-man-shimmer-outline
  • flash-circle to lightning-bolt-circle
  • floor-lamp-variant to floor-lamp-torchiere-variant
  • gif to file-gif-box
  • gradient to gradient-vertical
  • hand to hand-front-right
  • hand-left to hand-back-left
  • hand-right to hand-back-right
  • hinduism to om
  • human-greeting to human-greeting-variant
  • iframe to application-brackets
  • iframe-outline to application-brackets-outline
  • iframe-array to application-array
  • iframe-array-outline to application-array-outline
  • iframe-braces to application-braces
  • iframe-braces-outline to application-braces-outline
  • iframe-parentheses to application-parentheses
  • iframe-parentheses-outline to application-parentheses-outline
  • iframe-variable to application-variable
  • iframe-variable-outline to application-variable-outline
  • islam to star-crescent
  • judaism to star-david
  • monitor-clean to monitor-shimmer
  • pharmacy to mortar-pestle-plus
  • sparkles to shimmer
  • teach to human-male-board
  • television-clean to television-shimmer
  • text-subject to text-long
  • twitter-retweet to repeat-variant
  • voice-off to account-voice-off
MQTT

The following previously deprecated MQTT fan options are no longer supported and have been removed:

  • payload_high_speed
  • payload_low_speed
  • payload_medium_speed
  • speed_command_topic
  • speed_list
  • speed_state_topic
  • speed_value_template

(@jbouwh - #58992) (mqtt docs)

Notifications for Android TV

The Notifications for Android TV integration allows you to send custom notifications to Android TV devices. Sending a file along with the notification, allows you to send image files that will show up above the notification.

Now that support for icons has been added in the same way as images, the file option has been renamed to image to properly identify what you’re sending with the notification.

As such, code and automations that use the file option for an image have to refer to image from now on.

(@redahb - #60159) (nfandroidtv docs)

Pentair ScreenLogic

Screenlogic SCG levels have moved to the number platform to support setting of these values. The sensor entities that previously represented these values will need to be manually deleted in Configuration -> Entities.

(@dieselrabbit - #60872) (screenlogic docs)

Phone Modem

The previously deprecated YAML configuration of the Phone Modem integration has been removed. Phone Modem 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.

(@tkdrob - #59526) (modem_callerid docs)

RainMachine

The rainmachine.disable_program, rainmachine.enable_program, rainmachine.disable_zone, and rainmachine.enable_zone services have been removed.

Instead, new configuration switches related to each entity can be used to enable/disable the program/zone.

(@bachya - #59617) (rainmachine docs)

Renault

The renault.charge_start service is deprecated and replaced by a dedicated start charge button entity; please use that entity to start the charge instead.

(@epenet - #59383) (renault docs)

SimpliSafe

SimpliSafe services have been reorganized and now utilize a Home Assistant selector (device ID) instead of using a SimpliSafe system ID.

(@bachya - #58722) (simplisafe docs)

SMA Solar

Previously when the inverter was not supplying any power, the sensors showed as Unknown. These sensors will now show the value of 0, making it more useful for graphs or calculations.

(@rklomp - #59848) (sma docs)

Sonos

The sonos.set_option service has been removed along with the bass_level and treble_level attributes on media_player entities.

Controls for bass and treble adjustments have been moved to dedicated number entities.

(@jjlawren - #60498) (sonos docs)

Statistics

All statistical characteristics were removed from sensor attributes and are now selectable through state_characteristic as the state of the sensor. The parameter state_characteristic will become mandatory in a future release.

Please adapt the configuration of your statistics sensor(s) and expose the characteristic you are interested in directly through state_characteristic. Existing template sensors to access individual characteristics can be removed. In case you are interested in multiple characteristics, you need to define multiple statistics sensors.

Many characteristics were renamed and additional ones were added, including a few for binary source sensors. Consider opening a feature request if your use case is not directly covered.

(@ThomDietrich - #59867) (statistics docs)

Templates: `timestamp_local` and `timestamp_utc`

The timestamp_local and timestamp_utc template functions/filters have changed their output format. The timestamp is now formatted to iso standards and contains timezone information.

Previously a timestamp from these would look like: 2016-07-21 16:39:04. Now it is formatted as: 2016-07-21T16:39:04+01:00.

This change may break templates that need a specific format, in those cases, you can use the timestamp_custom template filter instead.

(@jbouwh - #60269)

Trafikverket Weather Station

The Trafikverket Weather Station integration migrated to configuration via the UI. Configuring Trafikverket Weather Station via YAML configuration has been deprecated and will be removed in a future Home Assistant release.

Your existing YAML configuration is automatically imported on upgrade to this release; and thus can be safely removed from your YAML configuration after upgrading.

(@gjohansson-ST - #60078) (trafikverket_weatherstation docs)

Twente Milieu

Due to the modernization of the Twente Milieu integration; the twentemilieu.update service has been removed.

You can now use the homeassistant.update_entity service with the Twente Milieu integration as a replacement for the removed service.

(@frenck - #59632) (twentemilieu docs)

Velbus

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

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

(@Cereal2nd - #60411) (velbus docs)

Viessmann ViCare

The Viessmann ViCare integration migrated to configuration via the UI. Configuring Viessmann ViCare via YAML configuration has been deprecated and will be removed in a future Home Assistant release.

Your existing YAML configuration is automatically imported on upgrade to this release; and thus can be safely removed from your YAML configuration after upgrading.

(@oischinger - #56691) (vicare docs)

WLED

The led_count and max_power attributes have been removed from the sensor entity that provides the estimated current of the WLED device. These have been replaced by their own sensor entities.

If you have been using the attributes in your automation or scripts, you’ll need to adjust those to reflect these changes.

(@frenck - #58839) (wled docs)


The speed, palette name, intensity, and reverse effect indicator attributes have been removed from the WLED light entities. They all have been replaced by their own, dedicated, number and switch entities.

If you rely on these attributes in your automations or scripts, you’ll need to adjust those to this change.

(@frenck - #60535) (wled docs)


The wled.effect and wled.preset services have been removed. For both services, full replacements are available as normal entities in Home Assistant.

If you are still using these services in your automation or script, please replace them with service calls to their native entities instead.

(@frenck - #60537) (wled docs)

Yamaha MusicCast

Only one Home Assistant device was created for a Yamaha MusicCast device, and the media player entities of all zones were part of this device.

As of this release, every zone media player will be located in its own Home Assistant device. For single zone devices, nothing will change and all your automations, scripts, scenes, etc., should work in the same way as before.

A new device will be created for multi-zone devices for every non-main zone (e.g., zone2 or zone3). The media_player of the main-zone will remain in the original device with all its properties, scripts, automations and scenes, configured for it.

For other zones, you will have to set the area of the newly generated devices for the various zones manually. If you created scripts, automations, or scenes with the device as a target and want them to work for non-main zones, you will have to add the newly added devices as a target to your script/automation/scene.

If you used the media player entity as a target, everything should still work like before.

(@micha91 - #58285) (yamaha_musiccast docs)

Z-Wave JS

Some entities have been marked as configuration entities, e.g., default tone of siren devices and protection mode of smart plugs.

Configuration entities:

  • Are not included in a service call targeting a whole device or area.
  • Are, by default, not exposed to Google Assistant or Alexa.
  • Are shown on a separate card on the device configuration page.
  • Do not show up on the automatically generated Lovelace Dashboards.

(@MartinHjelmare - #59157 #58703 #59474) (zwave_js docs)

Updates for custom integration developers

If you are a custom integration developer, we have some updates in this release that you may want to take into account for your integration.

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

mqtt.async_publish is now a coroutine

mqtt.async_publish is now a coroutine and custom integrations calling this function needs to be adjusted accordingly.

(@emontnemery - #58441)

homeassistant.const.HTTP_* removed

The, previously deprecated, homeassistant.const.HTTP_* HTTP status constants have been removed, use stdlib http.HTTPStatus instead.

(@scop - #58380)

homeassistant.util.get_local_ip() removed

Removed util.get_local_ip() in favor of components.network.async_get_source_ip().

Previous implementation was determining local IP based on the routing versus a fixed public ip “8.8.8.8”. The new function instead allows to choose the destination and determine local_ip based on the source interface needed to get there.

(@chemelli74 - #58669)

Timestamp/Date device class value changes

When using datetime and date device classes in sensors, the returned native value must (respectively) be a datetime or date Python object.

Returning an iso formatted date(time) string in these cases is now deprecated and will write a deprecation warning in the logs. This fallback/backward compatibility will be removed in Home Assistant 2022.2.

(@frenck - #52671)

Customization API removed

The (outdated) customize frontend has been removed, and thus the (now unused) API endpoints for customizing have been removed from the Home Assistant API as well.

(@frenck - #59824)

NumberEntity MODE_* constants deprecated

The use of the MODE_* constants in the number entity platform is deprecated. Please use the NumberMode enum instead.

(@frenck - #60614)

DEVICE_CLASS_* constants deprecated

The use of the DEVICE_CLASS_* constants and DEVICE_CLASSES constants in all entity platforms, has now been depreacted. Instead, use the equavalent DeviceClass StrEnum provided by each platform.

Example:

from homeassistant.components.sensor import SensorDeviceClass

@property
def device_class(self) -> SensorDeviceClass:
    return SensorDeviceClass.TEMPERATURE

(@frenck - #60655 #60658 #60656 #60654 #60651 #60706 #60709 #60720)

sanitize_filename and sanitize_path util removed

Removed two (long time) deprecated helpers:

  • homeassistant.util.sanitize_filename
  • homeassistant.util.sanitize_path

(@frenck - #60859)

SSDP ATTR_HA_MATCHING_DOMAINS value changed

The value of ATTR_HA_MATCHING_DOMAINS constant has been updated to replace the hash (-) with underscore (_):

  • Old value: x-homeassistant-matching-domains
  • New value: x_homeassistant_matching_domains

(@epenet - #60283)

MQTT/DHCP/ZeroConf/USB/SSDP Discovery

MQTT, DHCP, ZerConf, USB and SSDP discovery now provides a dataclass object, instead of using a dictionary.

The dataclass objects have implemented dictionary access for temporary backwards compatibility during this deprecation period.

Dataclasses provided by discovery type:

  • MQTT: MqttServiceInfo (#60191)
  • DHCP: DhcpServiceInfo (#60136)
  • USB: UsbServiceInfo (#60140)
  • ZeroConf: ZeroconfServiceInfo (#60206)
  • SSDP: SsdpServiceInfo (#59931)

(@epenet)

Farewell to the following

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

  • Dyson has been removed. The integration has been broken for a long time now, so its time for it to go, (@epenet - #59401)
  • IOTA has been removed. The protocol is no longer compatible/usable with this integration. (@lambtho12 - #59380
  • Loop Energy has been removed. Loop has shutdown their API in November 2020. (@cgarwood- #61175)
  • myChevrolet has been removed. It has been broken for 6 months and GM keeps actively hardening their authentication; preventing the integration to work. (@sdague - #59629)

All changes

Click to see all changes!