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 (CEST)!

Enjoy the release!


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.

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.

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 breaking changes, also listed in the breaking 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.

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:

This is a companion discussion topic for the original entry at https://www.home-assistant.io/blog/2021/11/03/release-202111/

woohoo, another great update - super excited for the icon picker! :partying_face:
Thanks to all the amazing devs as ever! :heart:


“110 minutes reading time” - well, probably this calculation shouldn’t include the list of all changes :slight_smile:

About entity categorisation - isn’t “Controls” an awkward name when device only provides measurements? I think previous iterations of this blog post used something like “State” which makes more sense IMO.

Agree, that is why those will show up as “Sensors” and not “Controls” :wink:


Oooh I recently added WebRTC support to the OctoPrint frontend. I’m working on adding a WebRTC server to OctoPi. It will be super awesome to have HD full-framerate OctoPrint streams in HA!

1 Like

That’s good. However, things like weather still go into Controls section even though these are non-controllable. Not sure if there are any other non-sensor platforms which don’t have controls. It’s probably a weird edge case but still would be great to handle it…

That is incorrect. That was a bug that has been fixed during beta. In the final release weather is classified as sensors.

Edit: Bug fix PR https://github.com/home-assistant/frontend/pull/10490


I think ViCare is missing in the “Breaking Changes” section (or I’m just blind).

No, you are not blind, that is my bad. I wrote it down even; as I had the comment during beta it was missing. I’m adjusting that right away! Thanks for reporting :heart:

1 Like

That is a true spirit! You deserve some kudo’s for that!
I do not use any Tuya devices, but reading this is just so fine. :wink:


The icon picker… So simple, yet such a brilliant addition! I was really missing this, thanks a lot for adding it in! This will be very convenient!


error python-miio 0.5.8 requires PyYAML<6,>=5, but you'll have pyyaml 6.0 which is incompatible during the update process.

a new release, a new issue. the 2021.10 release brought up the cryptography error now this.
is anyone testing these before the release?

Is there also a way to adjust/override the categorization? In case I use a smart plug to only measure its usage but don’t want to actually turn the device off for example?

1 Like

Damn, that list of all changes is looong. Amazing work again!

Yes, a lot of people do join the beta. Have you tried?

It doesn’t break btw. Been using the Xiaomi Miio myself as well.

1 Like

Not at this time.

i did a while back, f*ked up my install, had to restore from backup.

any fix for the
python-miio 0.5.8 requires PyYAML<6,>=5, but you'll have pyyaml 6.0 which is incompatible

It’s a warning, not an error.


you have to wait until ptyhon-miio updates to a new release for the warning to go away. It’s a bug in python-miio (not home assistant) It’s already fixed. You can track it here:

So, yes it was found in beta through testing :wink: