2021.11: Icon picker, device links and entity categories

Point eleven (.11), which means it is November! 🥶 (or 🏖 depending on where you are in this world, of course.)

It also means: This is the second last release of the year…

Hacktoberfest is over! In the month October, people contribute to projects (like Home Assistant) to celebrate open source. I’ve seen lots of new faces and new contributors this month. To those I want to say: Welcome! Thanks for contributing your free spare time; Thanks for being a hero! ❤️

And, there is more! Something that isn’t really visible. In the background, an army of contributors are improving a tremendous amount of Home Assistant code, which improves stability, readability, and maintainability of our project’s codebase. As a matter of fact, because of this incredible work, counted by the number of contributions, this release might just as well be one of the biggest ever. Work, you generally don’t notice, but is still done. Weird huh? Another group of heroes! ❤️

For me personally, this has been a crazy month. After the last release, I was sad to read about issues people had with the new Tuya integration. I went to different stores, bought many Tuya devices, and spent a lot of time improving the experience by extending device support. Hopefully, I’ve been able to do enough to make the Tuya integration acceptable.

This release… a long-time wishlist item of mine is in: The icon picker! 😍 So cool to see this happening, it is amazing, beautiful, super helpful, and it also supports third-party icon sets! 🤩

Oh, to spoil some inside information, you might want to block your agenda for the Home Assistant State of the Union 2021 on Saturday 11 December, 8 pm (CET)!

Enjoy the release!

../Frenck

Daylight saving time bug

If you have already transitioned daylight saving time (DST), you might have experienced it already. If you have not switched yet, this message is extra important for you.

Last weekend we experienced a bug with daylight saving time transitioning, causing Home Assistant to crash or have higher CPU loads than usual. If you experience this, restarting Home Assistant will resolve this issue.

This release has a more permanent fix for the issue, preventing it from happening. If you can’t upgrade to 2021.11 right now, we have also published Home Assistant 2021.10.7, which has the same bugfix included.

So if you still have to transition to a new summer/winter time, be sure to upgrade!

Visit devices and services

Your device has a web interface, but you don’t remember the (IP) address it has on your network… So you start guessing a couple of addresses; And end up checking your router, looking it up in an app, or scanning the network… Sounds familiar? Annoying, right?

Well, as of today, integrations can provide the URLs to devices or services where the device can be managed or configured.

Screenshot of WLED that now has a button that links to the WLED web interface of the device directly Screenshot of WLED that now has a button that links to the WLED web interface of the device directly.

If an integration provides a single web interface to configure multiple devices, it can even deep-link to the specific device page for that device.

Over 50! integrations have already added support for this feature, which is fantastic! Just to name a few integrations: MQTT, Tasmota, WLED, Synology, Plex, Netatmo, Pi-hole, RainMachine, Plugwise, Sure Petcare, Axis, UniFi Controller, FRITZ!Box, and many more!

If you are a custom integration developer, you can add support for this feature too; Read all about it on our developer blog.

Entity categorization

Since we introduced the concept of devices, we have been seeing more and more entities being created, which is great! It means we can automate on a lot more device features. However, this does impose other issues, like: clutter on a generated dashboard, unused entities exposed to voice assistants, or turn on/off things in areas as a side-effect. Let me try to explain the latter issue with an example.

Let’s consider a wall plug. It can be turned on/off using a switch entity, however, my wall plug also has a switch to enable a child lock that controls its physical button. Now, if I had this device in my living room area and turned off all switches in my living room, it would turn off the switch and the child lock! This is not what we want, right?

To resolve issues like these (and more), we introduce: Entity categories.

Entities without a category are now considered primary entities: The entities we daily use and expect from a device, i.e., the power on/off switch. Furthermore, entities can be categorized as configuration or diagnostic entities. A configuration entity provides a setting/configuration option for the device, while a diagnostic entity provides information about the device.

Take a light bulb as an example. The light entity itself is a primary entity. However, the select entity that provides the power on behavior configuration of the bulb is a setting of the device and thus a configuration entity. While the sensor providing the signal strength of the light bulb is a diagnostic entity.

Another, more visual example, from the device page of a Sonos Move speaker:

Screenshot of the Sonos device page that now has entities categorized Screenshot of the Sonos device page that now has entities categorized.

In the above screen, you can see the Sonos speaker itself is a primary control entity, while the entities that provide device configuration options and entities that provide diagnostic information about the device itself are now separated nicely.

With entities that are non-primary (so are either configuration or diagnostic entities), we now do the following:

  • Non-primary entities are hidden from generated Lovelace dashboards. This reduces the clutter and makes the generated dashboards more useful for daily use.
  • Non-primary entities are, by default, not exposed to Amazon Alexa or Google Assistant. You, of course, still can expose them, but by default, we don’t send them to these voice assistants.
  • Non-primary entities are not called by service calls that target the device or area the device is in. They are only called if explicitly called by their entity ID.

Please note, the above-listed points are backward-incompatible changes, also listed in the backward-incompatible changes section of these release notes.

Like the previous visit device or service feature, this new organization capability has been adopted by many of our maintainers: 60+ integrations! To name a few: Sonos, Z-Wave JS, Shelly, SwitchBot, deCONZ, Neato, Netatmo, August, MQTT, Hue, Roomba, Tibber, AirVisual, KNX, motionEye, and many more. Oh, and soon, we can add ESPHome to that list!

If you are a custom integration developer, you can add support for this feature too; Read all about it on our developer blog.

The icon picker

Adding nice and matching icons to your entities, makes all the difference for how your Home Assistant interface looks and feels.

Finding those icons was somewhat clumsy. You’d go to the Material Design Icons website to find one, remember its code and add the mdi:<code> to your entity. Not a great experience, especially with the number of icons available your browser doesn’t always like that website.

Thanks to the great work of @piitaya, we now have a beautiful, super easy, smart and fast icon picker! Yes, you can now search and choose icons, straight from the Home Assistant interface.

Screen capture showing the new icon picker in action Screen capture showing the new icon picker in action.

When you start typing, it not only looks for icons that match the MDI code, it also looks for aliases and categories of the icons. That way, you’ll always find the icon you’re looking for.

Third-party custom icon sets can also utilize this feature; however, the author of that set needs to add compatibility for it. For example, the Hue icons by arallsopp added support for this feature already.

Tuya update

Our previous release included an update to the Tuya integration, making it use the official API instead of a soon-to-be-removed API. Sadly, this update did not live up to our standards, for which we want to apologize.

Tuya had initially planned to deprecate the old API in December, giving users 2 months to migrate. That’s not a lot of time, so we decided to move forward with releasing the updated integration. Tuya pushed back the timeline for sunsetting the old API with 6 months; but it was too late for us to change course and ship the old integration.

The updated Tuya integration had some bugs and also was missing some features compared to the previous integration and various available custom components. This caused some users to have a poor experience. To make up for this, @frenck spent a good chunk of time on bringing the Tuya integration up to the latest standards and adding a ton of new features and bug fixes.

Almost all Home Assistant entity platforms are supported now, including (binary) sensors, covers, vacuums, and even cameras! However, be aware that Tuya has a lot of devices and variations, so there is still work left to be done; We have done everything we can to provide a solid base this release.

As a final note: Some people complained about that this integration relies on the cloud. We have always supported integrations with both local and cloud APIs. Integrations with cloud APIs allow people to adopt Home Assistant without having to replace all devices in their house. Although we recommend local, using devices that require the cloud, or are fully local, is a choice everyone should make for themselves.

Some nice new template filters

For some of our more advanced users, this release has some helpful template improvements included as well!

Let’s start with the new today_at filter/function that @Petro31 added. It allows you to quickly get a DateTime at a certain time of today. This can be really helpful if you need to compare against another DateTime. For example:

# Is the current time past 10:15?
{{ now() > today_at("10:15") }}

Next up is @raman325, who added the area_entities and area_devices filters and functions which allow you to get all devices or entities that are in an area. The methods return a list, which you can loop on.

{{ area_entities('Living Room') }}  # ['light.ceiling', 'media_player.tv', ...]

Lastly, @Petro31 added another one: the average filter and function. It does what you think it does… It calculates the average of a list of items you pass to it.

{{ [1, 2, 3, 4, 5] | average }} # Result: 3

Other noteworthy changes

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

  • Debug traces of automations and scripts are now stored! So you no longer lose them when you restart Home Assistant. Thanks @emontnemery
  • @frenck adjusted the number entity and it can now be displayed as a slider instead of an input box. Home Assistant will automatically figure out which is the best to use.
  • Add support for fan groups! Thanks @bdraco!
  • Thanks to @ludeeus, the Supervisor integration now has binary sensors that can tell you which add-on is running or not.
  • @allenporter blew our minds this release by adding initial support for WebRTC streams and cameras to Home Assistant.
  • But had a good reason, he added support for Nest Battery Cameras and Nest battery Doorbell Cameras to Home Assistant! Thanks @allenporter!
  • When you log in to Home Assistant, there is now a “Keep me logged in” checkbox! Awesome @MartinTuroci
  • @goyney updated the Material Design Icon to version v6.4.95 ensuring we have all the latest icons available in our new beautiful icon picker.
  • Sure PetCare now supports the Felaqua devices, thanks @benleb!
  • The MQTT number platform now has support for providing a unit of measurement and resetting the number field (by @frenck and @emontnemery).
  • The Broadlink integration added sensors for voltage, current, overload, and total consumption. Thanks @felipediel!
  • WLED now has the much requested sliders for speed & intensity controls. Thanks, @rytilahti!
  • OpenGarage has seen lots of updates and love from @Danielhiversen, adding lots of sensors in the process.
  • With the recent improvements made to the VLC media player integration and add-on, there is now a way to get TTS working by connecting some speakers to your Blue, ODROID or Raspberry Pi. Thanks, @mib1185 & @MartinHjelmare!

Adding support for long-term statistics is a much requested feature; This release adds support for long-term statistics to the following integrations:

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:

Release 2021.11.1 - November 5

Release 2021.11.2 - November 9

Release 2021.11.3 - November 11

Release 2021.11.4 - November 15

Release 2021.11.5 - November 19

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.

All Service Calls

Entities that are now shown on the device page on the configuration or diagnostic section, will no longer be targeted and called by service calls that target the specific device or area the device or entity is in.

If you need to make a service call to these entities, you will need to call them by their entity ID explicitly.

Please note: This does not apply to entity groups, as groups are explicitly based on entities (unlike areas) and thus still work as before.

(@emontnemery - #57671)

Amazon Alexa / Google Assistant

Entities that are now shown on the device page on the configuration or diagnostic section, will no longer be exposed by default to Amazon Alexa or Google Assistant.

If you want to expose these entities, you’ll need to expose them explicitly.

(@emontnemery)

Recorder / Databases

The Home Assistant project has now explicitly defined a set of databases that are supported by the recorder.

We now support the following databases:

  • MariaDB ≥ 10.3
  • MySQL ≥ 8.0
  • PostgreSQL ≥ 12
  • SQLite ≥ 3.32.1

All other databases and database versions are now deprecated.

If your used or configured database doesn’t match any of the above requirements, a warning will be logged. As of Home Assistant 2022.1, the recorder will no longer connect to an unsupported database.

(@emontnemery - #58161) (recorder docs)


It is no longer possible to filter out state_changed events from the recorder’s event_types exclude filter.

A warning will be logged in Home Assistant Core 2021.11 and the configuration will be rejected in Home Assistant Core 2022.2.

Python 3.8: Deprecation warning

Python 3.8 has been deprecated because Python 3.10 has been released. Support will be dropped in Home Assistant 2022.1.

Support for Python 3.10 hasn’t completed yet, however we aim to complete that before the 3.8 deprecation period has ended. It is advised to upgrade to Python 3.9 at this point.

If you run Home Assistant OS, Supervised or the Container installation type: No action is required from your end, we will take care of this for you.

(@balloob - #57079)

Aurora ABB Solar PV

The Aurora ABB Solar PV integration migrated to configuration via the UI. Configuring Aurora ABB Solar PV 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.

(@davet2001 - #36300) (aurora_abb_powerone docs)

AVM FRITZ!Box Tools

AVM FRITZ!Box Tools services now ask for a device_id and no longer for an entity_id. Please review your automation and scripts accordingly.

(@chemelli74 - #58005) (fritz docs)

DLNA Digital Media Renderer

The DLNA Digital Media Renderer integration migrated to configuration via the UI. Configuring DLNA Digital Media Renderer 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; Please check the integrations configuration page for imported DLNA-DMR configuration. Once it has been migrated, it can be safely removed from your YAML configuration.

(@chishm - #56886) (dlna_dmr docs)

Efergy

The Efergy integration has been migrated to configuration via the UI. Configuring Efergy via YAML configuration has now 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.

Additionally, the following sensor names have changed:

  • Energy Usage is now Power Usage.
  • Any configured energy period, for example, monthly was Energy Consumed is now Monthly Consumption.
  • Any configured cost period, for example, monthly was Energy Cost is now Monthly Energy Cost.
  • Per-Device Usage is now Power Usage with the sensor id trailing.

(@tkdrob - #56890) (efergy docs)

Environment Canada

The Environment Canada integration has been migrated to configuration via the UI. Configuring Environment Canada via YAML configuration has now 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.

Additionally, non-loop radar images are no longer supported; Sensor entities now have the location of the station as a part of the sensor’s entity name.

(@gwww - #57127) (environment_canada docs)

Flux LED/MagicLight

The Flux LED integration has been migrated to configuration via the UI. Configuring Flux LED via YAML configuration has now 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.

(@icemanch - #56354) (flux_led docs)

HomeKit

The previously deprecated HomeKit configuration options safe_mode, zeroconf_default_interface, and auto_start have now been removed.

If you still have these options in your YAML configuration, you must be remove them from your YAML configuration.

(@bdraco - #58320)

Input Select / Dropdown Helper

When the option list of a Dropdown helper / input_select is updated, it will try to maintain the currently selected option, if the selected option also is present in the new options provided; otherwise it will reset to the first option from the newly provided list.

Previously, when a new list of options was provided, it would always reset to the first item of the list.

(@frenck - #53334) (input_select docs)

IQVIA

Previously, IQVIA supported long-term statistics for the Asthma Index: Tomorrow sensor. This is incorrect: long-term statistics are meant for actual, current measurements (not future forecasts). Therefore, long-term statistics support has been removed for this sensor.

(@bachya - #57687) (iqvia docs)

Itho Daalderop Spider

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

Your existing YAML configuration has been automatically imported; and thus can be safely removed from your YAML configuration after upgrading.

(@peternijssen - #57974) (spider docs)

Microsoft text-to-speech (TTS)

The default voice is changed to JennyNeural; The previous default ZiraRUS (Standard Voice) is no longer supported in eastus or any other region that has rolled out GA neural voices as Standard voices become deprecated.

(@tylergibson - #58499) (microsoft docs)

OctoPrint

The OctoPrint integration migrated to configuration via the UI. Configuring OctoPrint 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.

The following sensors have been removed:

  • sensor.<printer>_time_remaining
  • sensor.<printer>_time_elapsed

The following sensors have been added:

  • sensor.octoprint_start_time
  • sensor.octoprint_estimated_finish_time

(@rfleming71 - #58040) (octoprint docs)

OpenGarage

The attributes (wifi_signal and distance_sensor) for OpenGarage covers are removed and replaced by individual sensors.

Also, door_state is removed as an attribute, but you can use the state directly instead.

Please update any automations or scripts that depend on the removed attributes.

(@Danielhiversen - #57976) (opengarage docs)

OpenZWave

The OpenZWave (ozw) integration is being marked as deprecated. The upstream project is not currently being maintained, and has not reached stable status.

We recommend transitioning to the Z-Wave JS integration.

While the integration is not currently slated for removal, it will no longer be receiving updates and may be removed at a later date.

See the Z-Wave JS migration documentation for more information.

Pentair ScreenLogic

Screenlogic lights have moved to the light platform. The switches that previously represented these lights will need to manually be deleted in Configuration >> Entities. If you are using these switch entities in your automation or scripts, you will need to update those to use the new light entities instead.

The state is now refreshed with a short delay to ensure the toggles do not flip/flop between states as the controller takes ~600ms to make the change.

(@bdraco - #55467) (screenlogic docs)

Phone Modem

The sensor state attributes of modem_callerid integration are now only populated when the values are known.

If you use these attributes in your automations or scripts, you’ll need to adjust those to be able to handle missing attributes.

(@tkdrob - #57774) (modem_callerid docs)

Rainforest Eagle

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

Rainforest Eagle 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 - #57636) (rainforest_eagle docs)

RainMachine

RainMachine services have been reorganized and now utilize a Home Assistant target (entity ID) or selector (device ID) instead of using an internal RainMachine identifier.

Additionally, services are restricted to only the targets that apply:

Device Services (i.e., must be provided a device ID)

  • pause_watering
  • stop_all
  • unpause_watering

Entity Services (i.e., must be provided an associated switch entity ID [either a program or a zone])

  • disable_program
  • disable_zone
  • enable_program
  • enable_zone
  • start_program
  • start_zone
  • stop_program
  • stop_zone

(@bachya - #57145) (rainmachine docs)

Renault

The last_update state attribute has been moved to a stand-alone entity (and dropped from battery and location entities). If you used this attribute in your scripts or automations; you’ll need to adjust those to this change.

(@epenet - #57750) (renault docs)

SimpliSafe

SimpliSafe requires a new web-based authentication method. When starting up, Home Assistant will automatically prompt you to re-authorize your instance.

(@bachya - #57212) (simplisafe docs)

SolarEdge

The SolarEdge integration now provides unique IDs for its entities, so the entities are now visible and customizable in the Home Assistant frontend.

Some names have been corrected as they had incorrect descriptions. This may cause some of your entity IDs provided by SolarEdge to have changed this release.

In case you have been using these entities in your automations, scripts, or dashboards, you can either rename those entity IDs to the old entity ID or adjust the places you’ve used them accordingly.

Additionally, if a sensor you used disappeared, it might have been disabled by default during upgrade. Please be sure to check if the entity is enabled in that case.

(@terminet85 - #55902) - (@purcell-lab - #58773)

Sonos

The sonos.set_option service has been removed and replaced with individual switch entities which both control the features and display if currently enabled.

The night_sound and speech_enhance attributes on the Sonos media_player entities are also removed.

If you are using those in your automations or scripts, you’ll need to replace these with the new switch entities.

(@jjlawren - #54502) (sonos docs)

Stookalert

The Stookalert integration has been migrated to configuration via the UI. Configuring Stookalert via YAML configuration has now 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.

(@frenck - #57119) (stookalert docs)

Supervisor

The 2021.09 release deprecated the usage of “snapshot” in the Supervisor (hassio) integration and was scheduled to be removed in 2021.11, that is now.

Old services and service data that contained “snapshot” has now been removed, and you need to update your configuration if you use any of these to continue to use it.

Old service name New service name
hassio.snapshot_partial hassio.backup_partial
hassio.snapshot_full hassio.backup_full

If you used the snapshot argument for the restore services you now have to replace that with slug

Example:

# Old name
service: hassio.restore_full
data:
  snapshot: sn2321

# New name
service: hassio.restore_full
data:
  slug: sn2321

(@ludeeus - #57652) (hassio docs)

UptimeRobot

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

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

(@ludeeus - #57761) (uptimerobot docs)

Utility Meter

The offset parameter for utility_meter sensors is now limited to at most 27 days. If you used more then 27 days you must now migrate to cron.

(@dgomes - #55625) (utility_meter docs)

Venstar

The Venstar integration migrated to configuration via the UI. Configuring Venstar 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.

The humidifer and timeout options have been removed, and thus ignored when importing your YAML configuration into the UI.

(@garbled1 - #58152) (venstar docs)

Viessmann ViCare

Due to upstream library updates, a breaking change was introduced that required changes to sensor and binary_sensor entities.

Circuit, Burner and Compressor have been separated out from the “main” device. Multiple circuits and burners now allow “duplicate sensors”, we’ve added the circuit or burner number as suffix.

Most of you should not see a difference, but complex installations (with more than one circuit and/or burner), will have multiple entities, suffixed with their burner or entity IDs.

For example, if you have two circuits instead of a single climate.vicare entity you will now instead have two entities:

  • climate.vicare_1
  • climate.vicare_2

This will provide you more control, but requires you to adapt your existing scripts and automations to use the new entity IDs.

The same has been done for sensor, binary_sensor and water_heater entities.

Also, note that binary sensors might be created twice since the unique IDs for those entities have changed. Please remove the old disabled binary_sensor entities, in case you encounter this.

(@oischinger - #57700) (vicare docs)

VLC media player Telnet

The VLC media player Telnet integration migrated to configuration via the UI. Configuring VLC media player Telnet 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.

(@MartinHjelmare - #57513) (vlc_telnet docs)

Xiaomi Miio

Attributes from the vacuum entities have been replaced with sensors.

This means that all your references to these attributes must be replaced with its sensor in your automations, scripts and dashboards.

Some sensors have been disabled by default and need manual enablement, once the integration has been set up. For example, the attribute mop_attached: true has now been replaced with binary_sensor.<NAME>_mop_attached.

(@OGKevin - #54990) (xiaomi_miio docs)

Yeelight

The option to override the Yeelight model will only appear if the detected model is not in the database. Otherwise, it will be hidden.

(@bdraco - #56967) (yeelight docs)

Farewell to the following

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

  • Essent has been removed. The API is no longer usable for this integration and has therefore been removed. (@TheLastProject - #56991)
  • Lyft has been previously deprecated and now removed. API keys are no longer being provided. (@frenck - #57638)
  • Nello has been removed. The services are no longer available, and have been offline for over 6 months. (@pattyland - #57926)
  • Huawei Router has been removed. It relies on web scraping, which is no longer allowed. (@yuvalabou - #57136)
  • Wink has been previously deprecated and now removed. (@frenck - #57634)

All changes

Click to see all changes!