2021.11: Icon picker, device links and entity categories

116 minutes reading time Comments

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

Breaking 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
Amazon Alexa / Google Assistant
Recorder / Databases
Python 3.8: Deprecation warning
Aurora ABB Solar PV
AVM FRITZ!Box Tools
DLNA Digital Media Renderer
Efergy
Environment Canada
Flux LED/MagicLight
HomeKit
Input Select / Dropdown Helper
IQVIA
Itho Daalderop Spider
Microsoft Text-to-Speech (TTS)
OctoPrint
OpenGarage
OpenZWave
Pentair ScreenLogic
Phone Modem
Rainforest Eagle
RainMachine
Renault
SimpliSafe
SolarEdge
Sonos
Stookalert
Supervisor
UptimeRobot
Utility Meter
Venstar
Viessmann ViCare
VLC media player Telnet
Xiaomi Miio
Yeelight

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!