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

  • Swap sharkiq vacuum is_docked with is_charging (@tomgie - #58975) (sharkiq docs)
  • Fix mop attribute for unified mop and water box in Xiaomi Miio (@OGKevin - #58990) (xiaomi_miio docs)
  • Fix timedelta-based sensors for xiaomi_miio (@rytilahti - #58995) (xiaomi_miio docs)
  • Bump aiopvpc to 2.2.1 (@azogue - #59008) (pvpc_hourly_pricing docs)
  • Accept all roborock vacuum models for xiaomi_miio (@rytilahti - #59018) (xiaomi_miio docs)
  • Fix Nut resources option migration (@ollo69 - #59020) (nut docs)
  • Environment Canada config_flow fix (@gwww - #59029) (environment_canada docs)
  • Bump velbus-aio to 2021.11.0 (@Cereal2nd - #59040) (velbus docs)
  • Constrain urllib3 to >=1.26.5 (@frenck - #59043)
  • Correct migration to recorder schema 22 (@emontnemery - #59048) (recorder docs)
  • Increase time to authorize OctoPrint (@frenck - #59051) (octoprint docs)
  • Remove use_time sensor from mjjsq humidifers (@rytilahti - #59066) (xiaomi_miio docs)
  • Change minimum supported SQLite version to 3.31.0 (@emontnemery - #59073) (recorder docs)
  • Correct rescheduling of ExternalStatisticsTask (@emontnemery - #59076) (recorder docs)
  • Bump flux_led to 0.24.14 (@bdraco - #59121) (flux_led docs)

Release 2021.11.2 - November 9

  • Bump total_connect_client to 2021.11.2 (@austinmroczek - #58818) (totalconnect docs)
  • Adjust frag_duration setting in stream (@uvjustin - #59135) (stream docs)
  • Bump flux_led to 0.24.15 (@bdraco - #59159) (flux_led docs)
  • Bump aioguardian to 2021.11.0 (@bachya - #59161) (guardian docs)
  • Guard against flaky SimpliSafe API calls (@bachya - #59175) (simplisafe docs)
  • Guard against missing data in ReCollect Waste (@bachya - #59177) (recollect_waste docs)
  • Change ReCollect Waste device class to date (@bachya - #59180) (recollect_waste docs)
  • bump aioshelly to 1.0.4 (@mib1185 - #59209) (shelly docs)
  • Bump flux_led to 0.24.17 (@bdraco - #59211) (flux_led docs)
  • Fix tradfri group reachable access (@janiversen - #59217) (tradfri docs)
  • Increase timeout for fetching camera data on Synology DSM (@mib1185 - #59237) (synology_dsm docs)
  • Add Battery sensor regardless if the battery_percent_remaining attribute is supported or not (@Adminiuga - #59264) (zha docs)
  • Fix condition for fritz integration (@chemelli74 - #59281) (fritz docs)
  • Remove illuminance sensor (@bieniu - #59305) (xiaomi_miio docs)
  • Revert “Use DeviceInfo in shelly (#58520)” (@thecode - #59315) (shelly docs)
  • Support generic xiaomi_miio vacuums (@OGKevin - #59317) (xiaomi_miio docs)
  • Bump paho-mqtt to 1.6.1 (@emontnemery - #59339) (mqtt docs) (shiftr docs)
  • Bump velbusaio to 2021.11.6 (@Cereal2nd - #59353) (velbus docs)
  • Update frontend to 20211108.0 (@bramkragten - #59364) (frontend docs)

Release 2021.11.3 - November 11

  • Fix rpi_camera setup hanging on initialization (@enegaard - #59316) (rpi_camera docs)
  • Fix state of sense net_production sensor (@kbickar - #59391) (sense docs) (emulated_kasa docs)
  • Update frontend to 20211109.0 (@bramkragten - #59451) (frontend docs)
  • Fix zeroconf with sonos v1 firmware (@bdraco - #59460) (sonos docs)
  • Ignore None state in state_change_event (@dgomes - #59485) (integration docs)
  • Fix wirelesstag switch arm/disarm (@sergeymaysak - #59515) (wirelesstag docs)
  • Remove incomplete segment on stream restart (@uvjustin - #59532) (stream docs)

Release 2021.11.4 - November 15

  • Air visual : robustness at startup when evaluate time interval (@jugla - #59544) (airvisual docs)
  • Override api url in norway_air (@ludeeus - #59573) (norway_air docs) (met docs)
  • Fix firmware status check for Fritz (@chemelli74 - #59578) (fritz docs)
  • Always use a step size of 1 for z-wave js fans (@mkowalchuk - #59622) (zwave_js docs)
  • Fix favorite RPM max value in Xiaomi Miio (@bieniu - #59631) (xiaomi_miio docs)
  • Bump zeroconf to 0.36.12 (@bdraco - #59133) (zeroconf docs)
  • Bump zeroconf to 0.36.13 (@bdraco - #59644) (zeroconf docs)
  • Bump greecliamate to 0.12.4 (@cmroche - #59645) (gree docs)
  • Ensure flux_led bulbs turn on even if brightness is 0 (@bdraco - #59661)
  • Update aiolookin to 0.0.4 version (@ANMalko - #59684) (lookin docs)
  • Fix bug in AirVisual re-auth (@bachya - #59685) (airvisual docs)
  • Bump greeclimate to 0.12.5 (@cmroche - #59730) (gree docs)
  • Bump flux_led to 0.24.21 (@bdraco - #59662) (flux_led docs)
  • Bump flux_led to 0.24.24 (@bdraco - #59740) (flux_led docs)
  • Fix invalid string syntax in French OwnTracks config flow (@spacegaier - #59752) (owntracks docs)

Release 2021.11.5 - November 19

  • Use source list property instead of the attribute in Denon AVR integration (@bieniu - #59768) (denonavr docs)
  • Fix typo in attribute for Fritz (@chemelli74 - #59791) (fritz docs)
  • Fix Netgear init error on orbi models (@starkillerOG - #59799) (netgear docs)
  • Bump velbusaio to 2021.11.7 (@Cereal2nd - #59817) (velbus docs)
  • Fix invalid string syntax in OwnTracks config flow translations (@spacegaier - #59838) (owntracks docs)
  • Strip out deleted entities when configuring homekit (@bdraco - #59844) (homekit docs)
  • Bugfix in Tuya Number value scaling (@PlusPlus-ua - #59903) (tuya docs)
  • Fix Tuya back scaling in Climate and Humidifer entities (@frenck - #59909) (tuya docs)
  • Store: copy pending data (@balloob - #59934)
  • Remove test_check_package_version_does_not_match (@emontnemery - #59785)

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.

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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.

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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._time_remaining
  • sensor._time_elapsed

The following sensors have been added:

  • sensor.octoprint_start_time
  • sensor.octoprint_estimated_finish_time

(@rfleming71 - #58040) (octoprint docs)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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.

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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

(@OGKevin - #54990) (xiaomi_miio docs)

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

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

function showDetails(el) {
const content = el.parentElement.querySelector(".details-block-content");
const up = el.querySelector("svg#up");
const down = el.querySelector("svg#down");
up.style.display = up.style.display === "none" ? "block" : "none";
down.style.display = down.style.display === "none" ? "block" : "none";
content.hidden = !content.hidden;
}

Click to see all changes!

  • Bump version to 2021.11.0dev0 (@frenck - #56835)
  • Strictly type Nanoleaf (@milanmeu - #56852) (nanoleaf docs)
  • Add Device Info to Nanoleaf (@milanmeu - #56856) (nanoleaf docs)
  • Add long-term statistics support for rain sensors (@cgtobi - #56847) (netatmo docs)
  • removing excess variable (@lanrat - #56849) (keyboard_remote docs)
  • Rename state to value_fn - picnic sensor (@cdce8p - #56889) (picnic docs)
  • Deduplicate controls of UniFi services (@Kane610 - #56834) (unifi docs)
  • Add kPa as a pressure unit (@gwww - #56885)
  • Remove some redundant code from trace (@emontnemery - #56883) (trace docs)
  • Use HTTPStatus instead of HTTP_* consts in aiohttp web response statuses (@scop - #56541)
  • Enable template icons for template numbers (@JeffLIrion - #56154) (template docs)
  • Improve deCONZ services code quality (@Kane610 - #56904) (deconz docs)
  • Use HTTPStatus instead of HTTP_* constants in various test mocks (@scop - #56543)
  • Bump fritzconnection to 1.7.0 (@chemelli74 - #56924) (fritz docs) (fritzbox_callmonitor docs)
  • Add SSDP discovery to Nanoleaf (@milanmeu - #56907) (nanoleaf docs)
  • Get min and max color temperature for Nanoleaf light from library (@milanmeu - #56863) (nanoleaf docs)
  • Upgrade watchdog to 2.1.6 (@frenck - #56933) (folder_watcher docs)
  • Update denonavr codeowner (@ol-iver - #56940) (denonavr docs)
  • Use NamedTuple - iqvia Rating (@cdce8p - #56943) (iqvia docs)
  • Log when Nanoleaf is unavailable (@milanmeu - #56921) (nanoleaf docs)
  • Remove injected logger in Ambient PWS and OpenUV (@bachya - #56920) (openuv docs) (ambient_station docs)
  • Flux led config flow (@icemanch - #56354) (flux_led docs) (breaking-change)
  • Remove icon if device_class is defined - homekit_controller (@cdce8p - #56946) (homekit_controller docs)
  • Sia package update to 3.0.2 (@eavanvalkenburg - #56896) (sia docs)
  • ZHA support for additional entities on ElectricalMeasurement ZCL cluster (@Adminiuga - #56909) (zha docs)
  • Add strict typing to Tractive integration (@bieniu - #56948) (tractive docs)
  • Bump gios library to 2.1.0 (@bieniu - #56984) (gios docs)
  • Update surepetcare test (@Danielhiversen - #56871) (surepetcare docs)
  • Update pyhomematic to 0.1.75 (@danielperna84 - #56995) (homematic docs)
  • Support connecting to ElkM1 over TLS 1.2 (@gwww - #56887) (elkm1 docs)
  • Bump nettigo_air_monitor library to version 1.1.0 (@bieniu - #56952) (nam docs)
  • Use Final type only when needed in Tractive (@bieniu - #57000) (tractive docs)
  • Minor improvements to deCONZ light platform (@Kane610 - #56953) (deconz docs)
  • Use EntityDescription - homekit_controller (@cdce8p - #56945) (homekit_controller docs)
  • Fix tractive flaky test (@balloob - #57026) (tractive docs)
  • Remove Essent integration (@TheLastProject - #56991) (essent docs) (breaking-change)
  • Prevent opening of sockets in kira tests (@emontnemery - #57038) (kira docs)
  • Use NamedTuple for homekit valve type + service info (@cdce8p - #56944) (homekit docs)
  • Use hass_client_no_auth test fixture in additional tests (@emontnemery - #57037)
  • Use NamedTuple for darksky condition picture (@cdce8p - #56942) (darksky docs)
  • Upgrade coverage to 6.0 (@frenck - #57041)
  • Mock out network.util.async_get_source_ip in tests (@emontnemery - #57039) (local_ip docs)
  • Fix multiline lambda formatting - homekit_controller (@cdce8p - #57046) (homekit_controller docs)
  • Use NamedTuple for repetier API methods (@cdce8p - #56941) (repetier docs)
  • Add ZHA HVAC Action sensor (@Adminiuga - #57021) (zha docs)
  • Prevent tplink from opening sockets in tests (@bdraco - #57058) (tplink docs)
  • Prevent dlna_dmr from opening sockets in tests (@bdraco - #57059) (dlna_dmr docs)
  • Activate mypy for rpi_power (@Misiu - #57047) (rpi_power docs)
  • Bump nest 0.3.7 to prepare for WebRTC support (@allenporter - #57089) (nest docs)
  • Deprecate Python 3.8 (@balloob - #57079) (breaking-change)
  • Additional place to use isinstance rather than do a string compare (@Kane610 - #57094) (deconz docs)
  • Upgrade jinja2 to 3.0.2 (@frenck - #57095)
  • Upgrade sentry-sdk to 1.4.3 (@frenck - #57096) (sentry docs)
  • Upgrade debugpy to 1.5.0 (@frenck - #57098) (debugpy docs)
  • Prevent opening of sockets in mqtt tests (@emontnemery - #57101) (mqtt docs)
  • Fix color util links to Philips Hue documentation (@bokub - #57099)
  • Add additional properties to node_status WS cmd (@raman325 - #56927) (zwave_js docs)
  • Use current config entry standards for OpenUV (@bachya - #57137) (openuv docs)
  • Add support for POLY and RLY in Coinbase (@TomBrien - #57144) (coinbase docs)
  • Add additional devices to flux_led discovery (@bdraco - #57086) (flux_led docs)
  • Block tests from opening sockets (@emontnemery - #55516)
  • Write flux_led state after turning on/off (@bdraco - #57152) (flux_led docs)
  • Add sw_version and model to flux_led device info (@bdraco - #56958) (flux_led docs)
  • Add missing return type to async_unload_entry and async_setup_entry (@Misiu - #57115)
  • Add home-assistant/core as codeowner for recorder (@emontnemery - #57224) (recorder docs)
  • Upgrade coverage to 6.0.1 (@frenck - #57235)
  • Toon, support Energy dashboard by default (@frenck - #57233) (toon docs)
  • Ensure that WattTime is strictly typed (@bachya - #57130)
  • Improve deCONZ signal strings (@Kane610 - #57140) (deconz docs)
  • Refactor persistent notification to no longer route all data via a service (@balloob - #57157) (persistent_notification docs) (breaking-change)
  • Allow resetting an MQTT number (@emontnemery - #57161) (mqtt docs)
  • Use EntityDescription - darksky (@cdce8p - #57083) (darksky docs)
  • Enable template icons for template selects (@JeffLIrion - #57092) (template docs)
  • Refactor Xiaomi vacuum to sensors (@OGKevin - #54990) (xiaomi_miio docs) (breaking-change)
  • Upgrade ambee to 0.4.0 (@frenck - #57264) (ambee docs)
  • Use current config entry standards for Ambient PWS (@bachya - #57133) (ambient_station docs)
  • Improve dlna_dmr code quality (@chishm - #56886) (dlna_dmr docs) (breaking-change)
  • Motion_blinds fix up button not available for unidirection blinds (@starkillerOG - #57266) (motion_blinds docs)
  • Add WebSocket API for intiting a WebRTC stream (@allenporter - #57034) (camera docs)
  • Use _attr in 17track (@yuvalabou - #57187) (seventeentrack docs)
  • Add config flow to Stookalert (@frenck - #57119) (stookalert docs) (breaking-change)
  • Drop more persistent notification patches (@balloob - #57295) (dlna_dmr docs) (waze_travel_time docs) (google_travel_time docs) (vizio docs) (climacell docs)
  • Disconnect websockets after token is revoked (@dboslee - #57091) (websocket_api docs)
  • Reorganize RainMachine services (@bachya - #57145) (rainmachine docs) (breaking-change)
  • Add device info to nws (@MatthewFlamm - #57153) (nws docs)
  • Use built-in logic for options handler in AirVisual (@bachya - #57131) (airvisual docs)
  • Use current config entry standards for SimpliSafe (@bachya - #57141) (simplisafe docs)
  • Bump greeclimate to 0.11.9 (@cmroche - #57358) (gree docs)
  • Handle prepare timeout in websocket API (@balloob - #55989) (websocket_api docs)
  • Add Sure Petcare Felaqua device (@benleb - #56823) (surepetcare docs)
  • Add Shelly config entry reload on device config change (@thecode - #57356) (shelly docs)
  • Create devices for Growatt (@indykoning - #57068) (growatt_server docs)
  • Add -9999 error fix back in Xiaomi Miio (@bieniu - #57399) (xiaomi_miio docs)
  • Add System Bridge display sensors (@timmo001 - #57019) (system_bridge docs)
  • Improve Whirlpool component code quality (@abmantis - #57357) (whirlpool docs)
  • Flux led color support (@icemanch - #57353) (flux_led docs)
  • Convert flux_led to use asyncio (@bdraco - #57440) (flux_led docs)
  • Update pyfronius to 0.7.0 (@farmio - #57279) (fronius docs)
  • Bump aiodiscover to 2.4.5 (@bdraco - #57439) (dhcp docs)
  • Upgrade rvx to 0.7.0 (@spahlimi - #57430) (yamaha docs)
  • Bump pytautulli to 21.10.0 (@tkdrob - #57449) (tautulli docs)
  • Add config flow for efergy (@tkdrob - #56890) (efergy docs) (breaking-change)
  • Use _attr for Suez water (@yuvalabou - #57278) (suez_water docs)
  • Add test of lazy_error in modbus (@janiversen - #57170) (modbus docs)
  • Update somecomfort library to 0.7.0 (@rdfurman - #57214) (honeywell docs)
  • Add Netgear ssid and conn_ap_mac sensors (@starkillerOG - #57226) (netgear docs)
  • Bump Daikin version, catch new exception during config_flow (@fredrike - #57080) (daikin docs)
  • Add xiaomi vacuum -9999 fix back (@OGKevin - #57473) (xiaomi_miio docs)
  • Add energy management for efergy (@tkdrob - #57472) (efergy docs)
  • Don’t override methods marked as final (@cdce8p - #57477)
  • Use EntityDescription - openweathermap (@cdce8p - #56888) (openweathermap docs)
  • Add dhcp support for tplink KP401 (@bdraco - #57456) (tplink docs)
  • Use current config entry standards for AirVisual (@bachya - #57132) (airvisual docs)
  • Bump nettigo_air_monitor library to version 1.1.1 (@bieniu - #57483) (nam docs)
  • Switch to config_flow for Environment Canada (@gwww - #57127) (environment_canada docs) (breaking-change)
  • Add the switch platform to flux_led (@bdraco - #57444) (flux_led docs) (new-platform)
  • Add DHCP discovery for additional Zengge devices, generic magichome strips (@bdraco - #57408) (flux_led docs)
  • Use entity description for Ezviz sensors (@RenierM26 - #56634) (ezviz docs)
  • Streamline modbus before 100% coverage. (@janiversen - #57478) (modbus docs)
  • Add ability to re-auth WattTime (@bachya - #56582) (watttime docs)
  • Fix watttime config flow and tests (@MartinHjelmare - #57498) (watttime docs)
  • Move attribution attribute to Entity base class (@frenck - #57492) (weather docs) (air_quality docs)
  • Allow MQTT discovery availability shortcut (@jbouwh - #57479) (mqtt docs)
  • Override the jinja2 int filter (@emontnemery - #57470)
  • Fix Tuya error when removing device (@frenck - #57512) (tuya docs)
  • Pass device manager directly in Tuya registry cleanup (@frenck - #57511) (tuya docs)
  • Entity attributes cleanup in Tuya base entity (@frenck - #57510) (tuya docs)
  • Migrate attribution attribute for Picnic (@frenck - #57507) (picnic docs)
  • Migrate attribution attribute for AmberElectric (@frenck - #57505) (amberelectric docs)
  • Migrate attribution attribute for UptimeRobot (@frenck - #57508) (uptimerobot docs)
  • Migrate attribution attribute for Arlo (@frenck - #57504) (arlo docs)
  • Migrate attribution attribute for Stookalert (@frenck - #57503) (stookalert docs)
  • Upgrade flake8-comprehensions to 3.7.0 (@frenck - #57520)
  • Upgrade coverage to 6.0.2 (@frenck - #57518)
  • Add statistics support to nest sensors (@allenporter - #57393) (nest docs)
  • Bump accuweather library to version 0.3.0 (@bieniu - #57497) (accuweather docs)
  • MQTT rework constants (@jbouwh - #57529) (mqtt docs)
  • Move all Tuya device handling into device listener class (@frenck - #57523) (tuya docs)
  • Move Tuya remap method from base to light entity class (@frenck - #57527) (tuya docs)
  • Use EntityDescription - bmw_connected_drive (@cdce8p - #56861) (bmw_connected_drive docs)
  • Alphabetize parts of device registry code (@emontnemery - #57532) (config docs)
  • Tweaks to Tuya base entity (@frenck - #57526) (tuya docs)
  • Use Tuya endpoints values from upstream library (@frenck - #57537) (tuya docs)
  • Bump pytradfri to 7.0.7 (@janiversen - #57543) (tradfri docs)
  • Update flake8 related packages (@cdce8p - #57538)
  • Add service to Rainmachine to push weather data from Home Assistant (@shbatm - #57354) (rainmachine docs)
  • Refactor Tuya device handling (@frenck - #57545) (tuya docs)
  • Search for areas, devices and entities in script choose actions (@emontnemery - #57554)
  • Add statistics tests for sensor with changing device class (@emontnemery - #57317) (sensor docs)
  • Replace all Tuya device property constants with an Enum (@frenck - #57559) (tuya docs)
  • Always include start point for statistics (@emontnemery - #57182) (recorder docs) (sensor docs)
  • Refresh the bond token if it has changed and available (@bdraco - #57583) (bond docs)
  • Fix single channel controllers with flux_led (@bdraco - #57458) (flux_led docs)
  • Use a human readable model name in flux_led (@bdraco - #57519) (flux_led docs)
  • Warn user if Gateway is already paired (@janiversen - #57530) (tradfri docs)
  • Add Nest WebRTC and support Nest Battery Camera and Nest Battery Doorbell (@allenporter - #57299) (camera docs) (nest docs)
  • Add a use_time sensor for Xiaomi_miio humidifiers (@jbouwh - #57560) (xiaomi_miio docs)
  • Add unique_id support for eq3btsmart (@lkempf - #57603) (eq3btsmart docs)
  • Add support for multiple Whirlpool airconditioners (@abmantis - #57588) (whirlpool docs)
  • Improve warning prints for sensor statistics (@emontnemery - #57605) (sensor docs)
  • Bump version (@Cereal2nd - #57607) (velbus docs)
  • Use gather ipv wait to remove credentials to catch exceptions (@balloob - #57596)
  • Guard linking credential that is already linked (@balloob - #57595) (auth docs)
  • Prevent event loop delay / instability from discovery (@bdraco - #57463) (zeroconf docs) (ssdp docs)
  • Clarify that only HTTPS can be used in fitbit (@ammgws - #57116) (fitbit docs)
  • ESPHome move ReconnectLogic to aioesphomeapi (@OttoWinter - #57601) (esphome docs)
  • Provide device_id in hue_event (@krys1976 - #56982) (hue docs)
  • Refactor Tuya climate platform (@frenck - #57609) (climate docs) (tuya docs)
  • Modbus baseplatform.py and Validators.py 100% coverage (activate coverage) (@janiversen - #57546) (modbus docs)
  • Use EntityDescription in Tuya Switch platform (@frenck - #57581) (tuya docs)
  • Remove debug log (@balloob - #57619)
  • Add binary sensor platform to Tuya (@frenck - #57623) (tuya docs) (new-platform)
  • Update tests searching for areas referenced in automations (@emontnemery - #57558)
  • Remove myself as code owner from Toon (@frenck - #57625) (toon docs)
  • Use classmethod in Tuya TypeData classes (@frenck - #57627) (tuya docs)
  • Prettify Tuya entity class names (@frenck - #57629) (tuya docs)
  • Use entity_registry_enabled_default for Nut sensors (@ollo69 - #56854) (nut docs)
  • Remove deprecated Wink integration (@frenck - #57634) (discovery docs) (wink docs) (breaking-change)
  • Nut: Use coordinator data, code cleanup and add test coverage (@ollo69 - #57643) (nut docs)
  • Correct state classes for systemmonitor sensors (@mib1185 - #57615) (systemmonitor docs)
  • Remove YAML configuration from Rainforest Eagle (@frenck - #57636) (rainforest_eagle docs) (breaking-change)
  • Use HTTPStatus instead of HTTP_* int constants in mobile_app responses (@scop - #56418) (mobile_app docs)
  • Use reference strings in soma (@jasonmadigan - #57564) (soma docs)
  • Upgrade pyyaml to 6.0 (@frenck - #57648)
  • Remove snapshot from hassio integration (@ludeeus - #57652) (hassio docs) (breaking-change)
  • Add config and diagnostic entities (@emontnemery - #57528) (config docs)
  • Bump flux_led to 0.24.5 (@bdraco - #57653) (flux_led docs)
  • Late review comments. (@janiversen - #57654) (modbus docs)
  • Migrate attribution attribute for bbox (@frenck - #57650) (bbox docs)
  • Migrate attribution attribute for bitcoin (@frenck - #57651) (bitcoin docs)
  • Migrate attribution attribute for Aftership (@frenck - #57649) (aftership docs)
  • Remove deprecated Lyft integration (@frenck - #57638) (lyft docs) (breaking-change)
  • Only pass libav logger messages when stream logger is set to debug (@uvjustin - #57616) (stream docs)
  • Add select platform to Tuya (@frenck - #57674) (tuya docs)
  • Clean up unused loggers (@tkdrob - #57662)
  • Update xknx to version 0.18.10 (@marvin-w - #57635) (knx docs)
  • Add support for device configuration URL (@emontnemery - #57539) (config docs)
  • Fix lint issue (@balloob - #57694)
  • Add sensor platform to Tuya (@frenck - #57668) (tuya docs) (new-platform)
  • Port unmerged fixes from tuya_v2 (@pabigot - #57624) (tuya docs)
  • Add number platform to Tuya (@frenck - #57672) (tuya docs)
  • Add entity category to WLED (@balloob - #57693) (wled docs)
  • Add service configuration URL to Stookalert (@frenck - #57697) (stookalert docs)
  • Add device configuration URL to Plugwise (@frenck - #57696) (plugwise docs)
  • Add service configuration URL to Spotify (@frenck - #57701) (spotify docs)
  • Bump frontend to 20211014.0 (@balloob - #57706) (frontend docs)
  • Add support for entity categories to NUT entities (@mib1185 - #57689) (nut docs)
  • Add support for entity categories to Synology DSM entities (@mib1185 - #57690) (synology_dsm docs)
  • Optimize update calls for AVM Fritz!Smarthome devices (@mib1185 - #57579) (fritzbox docs)
  • Skip auto-update when fqdn and ssl-verfiy is used for Synology DSM (@mib1185 - #57568) (synology_dsm docs)
  • Add url to CO2signal (@balloob - #57703) (co2signal docs)
  • Add configuration url to Synology DSM (@mib1185 - #57704) (synology_dsm docs)
  • Add state_class to EnOcean sensors (@davidlb - #57666) (enocean docs)
  • Remove long-term statistics from IQVIA forecast sensor (@bachya - #57687) (iqvia docs) (breaking-change)
  • Add entity category to Shelly (@bieniu - #57705) (shelly docs)
  • Add strict typing to goalzero (@tkdrob - #57680) (goalzero docs)
  • Add configuration_url to Uptime Robot (@ludeeus - #57709) (uptimerobot docs)
  • push motionblinds to 0.5.6 (@starkillerOG - #57707) (motion_blinds docs)
  • Add service configuration URL to Verisure (@frenck - #57713) (verisure docs)
  • Add service configuration URL to Speedtest.net (@frenck - #57715) (speedtestdotnet docs)
  • Fix platform typo in Tuya const (@ludeeus - #57716) (tuya docs)
  • Add device configuration URL to WLED (@frenck - #57692) (wled docs)
  • Change name from Uptime Robot to UptimeRobot (@ludeeus - #57714) (uptimerobot docs)
  • Xiaomi Miio appropriatly raise ConfigEntryAuthFailed/ConfigEntryNotReady (@starkillerOG - #54696) (xiaomi_miio docs)
  • Add entity category to Xiaomi Miio (@bieniu - #57719) (xiaomi_miio docs)
  • Add entity category to Tractive (@bieniu - #57720) (tractive docs)
  • Add entity category to Brother (@bieniu - #57728) (brother docs)
  • Add service configuration URL to MQTT (@frenck - #57731) (mqtt docs)
  • Add Shelly “installed version” extra state attribute to Gen2 firmware update sensor (@thecode - #57722) (shelly docs)
  • Add configuration url to Pi hole (@mib1185 - #57718) (pi_hole docs)
  • Add configuration_url to gogogate2 (@bdraco - #57739) (gogogate2 docs)
  • Add configuration url to nexia (@bdraco - #57740) (nexia docs)
  • Add discovery support for single channel magichome controllers (@bdraco - #57736) (flux_led docs)
  • COnvert DATA_TYPE to enum. (@janiversen - #57699) (modbus docs)
  • Add entity category to cloud (@balloob - #57747) (cloud docs)
  • Add onewire support for DS2413 (@ronalterde - #55921) (onewire docs)
  • Fix WLED exception on close (@balloob - #57752) (wled docs)
  • Fix signature for hassio.restore_partial service (@avee87 - #57735) (hassio docs)
  • Add documentation link for Supervisor integration (@avee87 - #57733) (hassio docs)
  • Centralize entity naming for Tuya entities (@frenck - #57755) (tuya docs)
  • Add configuration URL to Brother (@bieniu - #57726) (brother docs)
  • Minor tweak of entityfilter typing (@emontnemery - #57756)
  • Activate strict typing for nfandroidtv (@tkdrob - #57743) (nfandroidtv docs)
  • Move Tuya value scaling into IntegerTypeData (@frenck - #57757) (tuya docs)
  • Add configuration url to rachio (@bdraco - #57738) (rachio docs)
  • Renamed variables in Tuya (@frenck - #57759) (tuya docs)
  • Add entity category to Nettigo Air Monitor entities (@bieniu - #57698) (nam docs)
  • Remove YAML import from UptimeRobot (@ludeeus - #57761) (uptimerobot docs) (breaking-change)
  • Swap order of int template helper kwargs (@Petro31 - #57729)
  • Add support for entity categories to MQTT entities (@emontnemery - #57656) (mqtt docs)
  • Add renault last activity sensors (@epenet - #57750) (renault docs) (breaking-change)
  • Don’t add indirectly referenced config entities to service calls (@emontnemery - #57671) (homekit docs) (homeassistant docs) (breaking-change)
  • Don’t expose config or diagnostic entities to Amazon Alexa by default (@emontnemery - #57770) (alexa docs)
  • Don’t expose config or diagnostic entities to Google Assistant (@emontnemery - #57669) (google_assistant docs) (breaking-change)
  • Don’t expose config or diagnostic entities to cloud (@emontnemery - #57771) (cloud docs) (breaking-change)
  • Fix modem_callerid test warning (@MartinHjelmare - #57760) (modem_callerid docs)
  • Clean startup of modbus by moving service schemas (@janiversen - #57763) (modbus docs)
  • Add device class to temperature sensors for octoprint (@firstof9 - #56997) (octoprint docs)
  • Merge bmw_connected_drive metric and imperial sensor types (@cdce8p - #56910) (bmw_connected_drive docs)
  • Add PIR Detector (pir) device support to Tuya (@frenck - #57784) (tuya docs)
  • Identify onetime listeners (@balloob - #57751)
  • Add vlc telnet config flow (@MartinHjelmare - #57513) (vlc_telnet docs) (breaking-change)
  • Add Emergency Button (sos) device support to Tuya (@frenck - #57794) (tuya docs)
  • Use assignment expressions 10 (@cdce8p - #57791) (emulated_hue docs) (fan docs) (group docs) (google_assistant docs) (device_automation docs)
  • Add siren platform to Tuya (@frenck - #57780) (tuya docs)
  • Add Luminance Sensor (ldcg) device support to Tuya (@frenck - #57797) (tuya docs)
  • Don’t use cast when possible for goalzero (@tkdrob - #57742) (goalzero docs)
  • Add float32 test to modbus (@janiversen - #57805) (modbus docs)
  • Add configuration URL to RainMachine (@bachya - #57732) (rainmachine docs)
  • Discover plex via zeroconf (@bdraco - #57825) (plex docs)
  • Add configuration_url to Sense (@bdraco - #57814) (sense docs)
  • Avoid exposing effects to flux_led lights that do not support them (@bdraco - #57810) (flux_led docs)
  • Add myself as codeowner for Tuya (@frenck - #57837) (tuya docs)
  • Fix vlc_telnet disconnect on unload (@MartinHjelmare - #57836) (vlc_telnet docs)
  • Make sure Tile data storage conforms to standards (@bachya - #57818) (tile docs)
  • Make sure ReCollect Waste data storage conforms to standards (@bachya - #57817) (recollect_waste docs)
  • Add configuration URL to Efergy (@tkdrob - #57839) (efergy docs)
  • Add support for device configuration URL to Nettigo Air Monitor integration (@bieniu - #57695) (nam docs)
  • Bump pytradfri to v.7.1.0 (@janiversen - #57861) (tradfri docs)
  • Add support for ‘freeze’ mode in Tuya thermostats (wk) (@frenck - #57851) (tuya docs)
  • Add new mac vendor to sense DHCP (@tkdrob - #57858) (sense docs)
  • Add tamper device class for binary sensor (@frenck - #57632) (binary_sensor docs)
  • Use DeviceInfo class (@Danielhiversen - #57868) (tibber docs) (surepetcare docs) (mill docs) (opengarage docs) (tractive docs)
  • Restore dhcp discovery support to tuya (@bdraco - #57826) (tuya docs)
  • Avoid probing brother devices that have an existing config entry (@bdraco - #57829) (brother docs)
  • Set state class in JuiceNet component (@b-pass - #57870) (juicenet docs)
  • Add hassio discovery to VLC telnet (@mib1185 - #57815) (vlc_telnet docs)
  • Add camera platform to Tuya (@frenck - #57865) (tuya docs) (new-platform)
  • Use separate weather condition for clear night in MetOffice forecasts (@avee87 - #55135) (metoffice docs)
  • Decrease timeout and update_interval in Xiaomi Miio integration (@bieniu - #57339) (xiaomi_miio docs)
  • Add additional models to flux_led DHCP discovery (@bdraco - #57881) (flux_led docs)
  • Add use time sensor for air purifiers (@bieniu - #57775) (xiaomi_miio docs)
  • Make sure AirVisual data storage conforms to standards (@bachya - #57806) (airvisual docs)
  • Make sure OpenUV data storage conforms to standards (@bachya - #57813) (openuv docs)
  • Make sure Notion data storage conforms to standards (@bachya - #57812) (notion docs)
  • Update xknx to 0.18.11 and fix flaky test (@marvin-w - #57877) (knx docs)
  • Add sensor category for rssi and battery (@elupus - #57848) (rfxtrx docs)
  • Bump pymodbus to 2.5.3. (@janiversen - #57887) (modbus docs)
  • Bump pypoint (@fredrike - #57888) (point docs)
  • Improve lutron caseta error reporting when bridge is offline (@bdraco - #57832) (lutron_caseta docs)
  • Do not probe nam device if the host is already configured (@bieniu - #57843) (nam docs)
  • Bump brother library to version 1.1.0 (@bieniu - #57892) (brother docs)
  • Fix mode_callerid attributes (@tkdrob - #57774) (modem_callerid docs) (breaking-change)
  • push motionblinds to 0.5.7 (@starkillerOG - #57902) (motion_blinds docs)
  • Fix order of arguments in rainmachine sensors (@bdraco - #57895) (rainmachine docs)
  • Add the correct device class to deCONZ Tamper entity (@Kane610 - #57834) (deconz docs)
  • Add unit/device_class validation and normalization to Tuya (@frenck - #57913) (tuya docs)
  • Add category diagnostic to Tibber signal sensor (@Danielhiversen - #57840) (tibber docs)
  • Add category diagnostic to Surepetcare battery sensor (@Danielhiversen - #57852) (surepetcare docs)
  • Add category diagnostic to Switchbot battery and signal sensor (@Danielhiversen - #57854) (switchbot docs)
  • Airthings entity category diagnostic (@Danielhiversen - #57850) (airthings docs)
  • Add device info to Adax (@Danielhiversen - #57907) (adax docs)
  • Use attr_device_info and add init tests for nut (@ollo69 - #57725) (nut docs)
  • Set nest camera always on STATE_STREAMING (@allenporter - #57882) (nest docs)
  • Improve nest error handling for websocket streams (@allenporter - #57885) (nest docs)
  • Add category diagnostic to Surepetcare binary sensor (@Danielhiversen - #57908) (surepetcare docs)
  • Opengarage dataupdater (@Danielhiversen - #56931) (opengarage docs)
  • Fix bond reloading on zeroconf discovery when host has not changed (@bdraco - #57799) (bond docs)
  • Use assignment expressions 05 (@cdce8p - #57785)
  • Use assignment expressions 08 (@cdce8p - #57788)
  • Use assignment expressions 06 (@cdce8p - #57786)
  • Use assignment expressions 03 (@cdce8p - #57710)
  • Use assignment expressions 11 (@cdce8p - #57792)
  • Use assignment expressions 09 (@cdce8p - #57790)
  • Use assignment expressions 07 (@cdce8p - #57787)
  • Add support for push updates to flux_led (@bdraco - #57890) (flux_led docs)
  • Adax attr (@Danielhiversen - #57867) (adax docs)
  • Add Vibration Sensor (zd) device support to Tuya (@frenck - #57795) (tuya docs)
  • Use EntityDescription - bmw_connected_drive sensor (@cdce8p - #57796) (bmw_connected_drive docs)
  • Fix additional nest camera_sdm_tests to use STATE_STREAMING (@allenporter - #57920) (nest docs)
  • Bump broadlink to 0.18.0 (@felipediel - #57929) (broadlink docs)
  • Rename stream_type to frontend_stream_type (@allenporter - #57923) (camera docs) (nest docs)
  • New service reconnect_client for UniFi integration (@Kane610 - #57570) (unifi docs)
  • Bump actions/checkout from 2.3.4 to 2.3.5 (@dependabot - #57947)
  • Tuya tweaks to entity category, registry enabled, icons & device classes (@frenck - #57949) (tuya docs)
  • Use pytest fixtures on Renault tests (@epenet - #57955) (renault docs)
  • Use assignment expressions 15 (@cdce8p - #57961)
  • Add configuration url to Tasmota (@emontnemery - #57957) (tasmota docs)
  • Use assignment expressions 19 (@cdce8p - #57968)
  • Use assignment expressions 18 (@cdce8p - #57967)
  • Bump hatasmota to 0.2.21 (@emontnemery - #57966) (tasmota docs)
  • Support device and state classes for WAQI sensor (@davidlb - #57762) (waqi docs)
  • Bump flux_led to 0.24.8 (@bdraco - #57934) (flux_led docs)
  • Mark spider YAML configuration as deprecated (@peternijssen - #57974) (spider docs) (breaking-change)
  • Use pytest fixtures on Onewire tests (@epenet - #57973) (onewire docs)
  • Add Nut missing tests for config flow (@ollo69 - #57964) (nut docs)
  • Refactor Tuya light platform (@frenck - #57980) (tuya docs)
  • Bump pysma to 0.6.7 (@rklomp - #57978) (sma docs)
  • Bump pychromecast to 9.3.0 (@emontnemery - #57991) (cast docs)
  • Bump fjaraskupan to 1.0.2 (@elupus - #57992) (fjaraskupan docs)
  • Pickup codeowner for bond (@bdraco - #57995) (bond docs)
  • Add vacuum platform to Tuya (@frenck - #57996) (tuya docs) (new-platform)
  • Motion blinds add interface and wait_for_push options (@starkillerOG - #50067) (motion_blinds docs)
  • Add to the Broadlink integration support for voltage, current, overload and total consumption sensors (@felipediel - #53628) (broadlink docs)
  • Add configuration url to Juicenet (@jesserockz - #57999) (juicenet docs)
  • Bump flux_led to 0.24.9 (@bdraco - #58006) (flux_led docs)
  • BMW: Fix check_control_message short description (@rikroe - #57998) (bmw_connected_drive docs)
  • Include webhook_id in mobile_app’s notify registration_info (@zacwest - #58007) (mobile_app docs)
  • Add configuration_url and entity_category to Fritz (@chemelli74 - #58004) (fritz docs)
  • Mark Tasmota status sensors as diagnostic sensors (@emontnemery - #57958) (tasmota docs)
  • Use assignment expressions 16 (@cdce8p - #57962)
  • Change warning to info when modbus is ready (@janiversen - #57953) (modbus docs)
  • Log unhandled loop exception traces when asyncio debug is on (@bdraco - #57602)
  • Add support for daily and monthly statistics (@emontnemery - #57576) (recorder docs) (sensor docs)
  • Fix issue parsing color effect None in flux_led (@brianegge - #57979) (flux_led docs)
  • Add service to stop air conditioning to bmw_connected_drive (@rikroe - #57772) (bmw_connected_drive docs)
  • Add init tests for agent dvr (@tkdrob - #57022) (agent_dvr docs)
  • Preventing working with incomplete discoveries from user config flow in upnp (@StevenLooman - #57994) (upnp docs)
  • Open garage sensor (@Danielhiversen - #57976) (opengarage docs) (breaking-change) (new-platform)
  • Rework Onewire tests to enable disabled entities (@epenet - #58014) (onewire docs)
  • Store automation and script traces (@emontnemery - #56894) (automation docs) (script docs) (trace docs)
  • Remove device category filtering from Tuya init (@frenck - #58019) (tuya docs)
  • MQTT Alarm control panel - Enable remote code validation (@jbouwh - #57764) (mqtt docs)
  • Deprecate OpenZWave in manifest (@MartinHjelmare - #57987) (ozw docs) (breaking-change)
  • Add humidifier platform to Tuya (@frenck - #58025) (tuya docs)
  • Add entity category to Hue (@balloob - #58011) (hue docs)
  • Rewrite test for feedreader (@briglx - #57292) (feedreader docs)
  • Add configuration url to Airthings (@Danielhiversen - #58041) (airthings docs)
  • Add cover platform to Tuya (@frenck - #58045) (tuya docs) (new-platform)
  • Add configuration url to Tractive (@Danielhiversen - #58038) (tractive docs)
  • Add configuration url to Surepetcare (@Danielhiversen - #58039) (surepetcare docs)
  • Add more info to OpenGarage device info (@Danielhiversen - #58037) (opengarage docs)
  • Add MWh as an energy unit (@emontnemery - #58034) (sensor docs)
  • Add Water Detector (sj) device support to Tuya (@frenck - #58049) (tuya docs)
  • Add more sensors to Opengarage (@Danielhiversen - #58042) (opengarage docs)
  • Clean up self references from Tuya climate platform constructor (@frenck - #58051) (tuya docs)
  • Add entity category and state class to mobile app (@balloob - #58012) (mobile_app docs)
  • Use constants in Onewire tests (@epenet - #58017) (onewire docs)
  • Add support for kPa to sensor statistics (@emontnemery - #58032) (sensor docs)
  • Fix clickatell send_error error check (@scop - #57985) (clickatell docs)
  • Migrate SimpliSafe to new web-based authentication (@bachya - #57212) (simplisafe docs) (breaking-change)
  • Rework RainMachine entity ID generation (@bachya - #58055) (rainmachine docs)
  • Add Human Presence Sensor (hps) device support to Tuya (@frenck - #58054) (tuya docs)
  • Bump flux_led to 0.24.11 (@bdraco - #58020) (flux_led docs)
  • Add volume_up and volume_down to musiccast (@vigonotion - #57919) (yamaha_musiccast docs)
  • Bump flux_led to 0.24.12 (@bdraco - #58071) (flux_led docs)
  • Remove legacy tests in onewire (@epenet - #58075) (onewire docs)
  • Assign entity category diagnostics to deCONZ battery sensors (@Kane610 - #58077) (deconz docs)
  • Bump pychromecast to 9.3.1 (@emontnemery - #58035) (cast docs)
  • Address late review of unifi (@Kane610 - #58080) (unifi docs)
  • Don’t use deprecated methods of retrieving registries in deCONZ (@Kane610 - #58081) (deconz docs)
  • Add deCONZ number config entity for Hue motion sensor delay (@Kane610 - #58076) (deconz docs)
  • Cleanup duplicate code in Onewire tests (@epenet - #58082) (onewire docs)
  • Don’t use deprecated ways of retrieving registries in Axis (@Kane610 - #58083) (axis docs)
  • Patch for Alexa percentage_step to precision (@jbouwh - #58062) (alexa docs)
  • Fix supported_features behaviour for fan platform (@jbouwh - #58065) (template docs)
  • Activate tradfri in coverage and clean conftest for tradfri (@janiversen - #58058) (tradfri docs)
  • Please pylint for modbus test (@janiversen - #58089) (modbus docs)
  • Add CO2 Detector (co2bj) device support to Tuya (@frenck - #58093) (tuya docs)
  • Add state_class to current bandwith sensors for bbox integration (@davidlb - #58086) (bbox docs)
  • Simplify signalling for updating available property of deCONZ entities (@Kane610 - #58078) (deconz docs)
  • Bump ismartgate to 4.0.3 (@bdraco - #58073) (gogogate2 docs)
  • bitwise and for test supported_features (@jbouwh - #58097) (template docs)
  • Report orphaned statistics in statistic validation (@emontnemery - #57324) (recorder docs) (sensor docs)
  • Report all unrecorded sensors in statistics tool (@emontnemery - #58092) (sensor docs)
  • Purge short term statistics (@emontnemery - #58028) (recorder docs)
  • Fix issue where Number still would send force_update to super method (@Kane610 - #58110) (deconz docs)
  • Use assignment expressions 17 (@cdce8p - #57963)
  • Fix referenced before assignment error in sonos speaker (@tkdrob - #57924) (sonos docs)
  • Use assignment expressions 21 (@cdce8p - #57970)
  • Complete Ceiling Light (xdd) device support for Tuya (@frenck - #58095) (tuya docs)
  • Complete Switch/Socket/Power Strip device support for Tuya (@frenck - #58106) (tuya docs)
  • Ensure lutron_caseta triggers can still be attached in setup retry state (@bdraco - #57873) (lutron_caseta docs)
  • Bump hdate to 0.10.4 (@yuvalabou - #58121) (jewish_calendar docs)
  • Assign entity category diagnostics to deCONZ tampering sensors (@Kane610 - #58112) (deconz docs)
  • Add entity categories for appropriate SimpliSafe entities (@bachya - #58108) (simplisafe docs)
  • Add configuration url to Sonarr (@jesserockz - #58085) (sonarr docs)
  • Correct unit_of_measurement for statistics sensor (@emontnemery - #58023) (statistics docs)
  • Use assignment expressions 20 (@cdce8p - #57969) (mqtt docs) (zha docs) (buienradar docs) (upb docs) (debugpy docs)
  • Add Formaldehyde Detector (jqbj) device support to Tuya (@frenck - #58118) (tuya docs)
  • Add Dimmer Switch (tgkg) device support to Tuya (@frenck - #58134) (tuya docs)
  • Use assignment expressions 12 (@cdce8p - #57937)
  • Add entity categories for appropriate RainMachine entities (@bachya - #58107) (rainmachine docs)
  • Add entity categories for appropriate Notion entities (@bachya - #58105) (notion docs)
  • Add entity categories for appropriate Guardian entities (@bachya - #58104) (guardian docs)
  • Add entity categories for appropriate Ambient PWS entities (@bachya - #58100) (ambient_station docs)
  • Report modbus buffer too small or too big to unpack (@janiversen - #57838) (modbus docs)
  • Fix connect_fail test and modbus.py 100% coverage (@janiversen - #57894) (modbus docs)
  • Add entity categories for appropriate AirVisual entities (@bachya - #58102) (airvisual docs)
  • Add configuration_url to Denon AVR integration (@bieniu - #58116) (denonavr docs)
  • Move Screenlogic lights to the light platform (@bdraco - #55467) (screenlogic docs) (breaking-change) (new-platform)
  • Run tests with -X dev and -bb (@scop - #58079)
  • Bump frontend to 20211020.0 (@balloob - #58139) (frontend docs)
  • Add auto slider/box mode to number entity (@frenck - #57737) (demo docs) (number docs)
  • Add configuration_url to Sonos devices (@jjlawren - #58148) (sonos docs)
  • Add configuration_url to Plex integration (@jjlawren - #58149) (plex docs)
  • Add missing names for notify service fields (@spacegaier - #58154) (notify docs)
  • Remove accidental blanks from Shelly trigger type translations (@spacegaier - #58151) (shelly docs)
  • Update pyhomematic to 0.1.76 (@danielperna84 - #58136) (homematic docs)
  • input_datetime: Move has_date, has_time to capability_attributes (@balloob - #58138) (input_datetime docs)
  • Use assignment expressions 14 (@cdce8p - #57939)
  • Use assignment expressions 13 (@cdce8p - #57938)
  • Add entity categories to goalzero (@tkdrob - #57906) (goalzero docs)
  • Use assignment expressions 22 (@cdce8p - #57971)
  • Add Device Type Energy to Srp Energy Sensor (@briglx - #58147) (srp_energy docs)
  • Address late review for Fritz entity_category (@chemelli74 - #58141) (fritz docs)
  • Clean up SimpliSafe entity inheritance structure (@bachya - #58063) (simplisafe docs)
  • Revert “Swap order of int template helper kwargs (#57729)” (@emontnemery - #58015)
  • Add long-term statistics for AEMET sensors (@Noltari - #57844) (aemet docs)
  • Add LOOKin integration (@ANMalko - #58125) (lookin docs) (new-integration)
  • Improve SSDP discovery compatibility when device was discovery through an SSDP advertisement (@StevenLooman - #58133) (ssdp docs)
  • Bump async-upnp-client to 0.22.9 (@bdraco - #58185) (upnp docs) (yeelight docs) (dlna_dmr docs) (ssdp docs)
  • Add climate platform to lookin (@ANMalko - #58175) (lookin docs) (new-platform)
  • Move notify setup to legacy (@MartinHjelmare - #58033) (notify docs)
  • Remove unreachable code in data_entry_flow.py (@bdraco - #58193)
  • Allow setting the nexia run mode with the hvac mode (@bdraco - #57940) (nexia docs)
  • Cleanup lookin entity MRO and inheritance (@bdraco - #58194) (lookin docs)
  • Tweak energy validator (@emontnemery - #58018) (energy docs)
  • Fjaraskupan entity categories (@elupus - #57846) (fjaraskupan docs)
  • Add long-term statistics for Tado sensors (@Noltari - #58111) (tado docs)
  • Add configuration_url to AsusWrt integration (@bieniu - #58172) (asuswrt docs)
  • Add support for device configuration URL to Axis devices (@Kane610 - #58176) (axis docs)
  • Use assignment expressions 23 (@cdce8p - #58180)
  • Add configuration_url to Netatmo devices (@cgtobi - #58160) (netatmo docs)
  • Use assignment expressions 27 (@cdce8p - #58188)
  • Use assignment expressions 26 (@cdce8p - #58187)
  • Use DeviceInfo on zha (@epenet - #58202) (zha docs)
  • Use assignment expressions 25 (@cdce8p - #58182)
  • Use DeviceInfo on zwave (@epenet - #58183) (zwave docs)
  • Bump google-nest-sdm to 0.3.8 (@allenporter - #58186) (nest docs)
  • Fix registration UI to work for Israel devices (@tomer-w - #58192) (tuya docs)
  • Cleanup device registration in Onewire (@epenet - #58101) (onewire docs)
  • Use DeviceInfo on components with via_device (H) (@epenet - #58211) (hive docs) (hue docs) (homematicip_cloud docs) (hunterdouglas_powerview docs)
  • Remove black color name for light dropdowns (@TomBrien - #58207) (light docs)
  • Make sure IQVIA data storage conforms to standards (@bachya - #57811) (iqvia docs)
  • Use DeviceInfo on components with via_device (A-G) (@epenet - #58210) (deconz docs) (elkm1 docs) (freebox docs) (directv docs) (fritz docs) (acmeda docs) (guardian docs) (bosch_shc docs)
  • Make sure RainMachine data storage conforms to standards (@bachya - #57816) (rainmachine docs)
  • Make sure Ambient PWS data storage conforms to standards (@bachya - #57807) (ambient_station docs)
  • Add memory/cpu percentage to Supervisor addons entities (@avee87 - #57468) (hassio docs)
  • Make sure Guardian data storage conforms to standards (@bachya - #57809) (guardian docs)
  • Use DeviceInfo on components with via_device (I-T) (@epenet - #58212)
  • Use DeviceInfo on components with via_device (R-X) (@epenet - #58213) (tado docs) (toon docs) (xiaomi_aqara docs) (simplisafe docs) (somfy docs) (xiaomi_miio docs) (synology_dsm docs) (wilight docs) (sia docs) (roon docs) (ruckus_unleashed docs)
  • Use assignment expressions 28 (@cdce8p - #58189)
  • Use assignment expressions 24 (@cdce8p - #58181)
  • Add Smoke Detector (ywbj) device support to Tuya (@regevbr - #58170) (tuya docs)
  • Enable long-term statistics for OpenWeatherMap sensors (@dkt01 - #57781) (openweathermap docs)
  • Use HTTPStatus instead of HTTP_ consts and magic values in components/a* (@scop - #57988)
  • Gogogate2 add statistics (@thomas-svrts - #58178) (gogogate2 docs)
  • Warn if state_changed events are excluded from recorder (@emontnemery - #58021) (recorder docs) (breaking-change)
  • Support for Fritz!DECT 500 lightbulbs (@flabbamann - #52830) (fritzbox docs) (new-platform)
  • Switch Fritz to device selector for services (@chemelli74 - #58005) (fritz docs) (breaking-change)
  • Rework octoprint (@rfleming71 - #58040) (octoprint docs) (breaking-change)
  • Use HTTPStatus instead of HTTP_ consts and magic values in comp…/[de]* (@scop - #57990)
  • Use DeviceInfo class - A (@tkdrob - #57859)
  • Use DeviceInfo Class D (@tkdrob - #58218)
  • Use DeviceInfo on components with via_device (@epenet - #58222) (tellduslive docs) (homekit_controller docs) (myq docs) (onewire docs) (ozw docs) (bond docs)
  • Fix fritzbox tests (@flabbamann - #58227) (fritzbox docs)
  • Use DeviceInfo on components with configuration_url (@epenet - #58223)
  • Add strict typing to efergy (@tkdrob - #57682)
  • Consolidate ESPHome icon-handling code into EsphomeEntity (@paulmonigatti - #57744) (esphome docs)
  • Fix unit of measurement for P1 Montior (@klaasnicolaas - #57495) (p1_monitor docs)
  • Bump pylgnetcast to 0.3.4 (@Drafteed - #58233) (lg_netcast docs)
  • Fix plugwise longterm statistics (@bouwew - #58127) (plugwise docs)
  • Use value_fn for bmw_connected_drive binary_sensor (@cdce8p - #57540) (bmw_connected_drive docs)
  • Index in-progress flows to avoid linear search (@bdraco - #58146) (zha docs) (auth docs) (point docs) (smartthings docs) (withings docs)
  • Add product ID to model for Tuya (@frenck - #58235) (tuya docs)
  • Add support for device configuration URL to deCONZ gateway (@Kane610 - #58184) (deconz docs)
  • Use HTTPStatus instead of HTTP_ consts and magic values in comp…/[bc]* (@scop - #57989)
  • Update naming scheme for Renault entities (@epenet - #57922) (renault docs)
  • Add datetime_today template method (@Petro31 - #57435)
  • Add area_entities and area_devices template functions/filters (@raman325 - #55228)
  • Add support for device configuration URL to UniFi Controller (@Kane610 - #58237) (unifi docs)
  • Add warning when entity used in template doesn’t exist (@avee87 - #57316)
  • Enable strict typing in lookin (@bdraco - #58238) (lookin docs)
  • Add support for min/max dimmer brightness in Tuya (@frenck - #58165) (tuya docs)
  • Restore the previous state of a KNX binary sensor (@marvin-w - #57891) (knx docs)
  • Nello removal (@pattyland - #57926) (nello docs) (breaking-change)
  • Use attributes octoprint (@cdce8p - #58241) (octoprint docs)
  • Add statistics support to Huisbaasje (@dennisschroer - #54651) (huisbaasje docs)
  • Add strict typing to modem_callerid (@tkdrob - #57683) (modem_callerid docs)
  • Fix Fibaro light features (@rik-v - #56385) (fibaro docs)
  • Use http.HTTPStatus in components/f* (@scop - #58244)
  • Bump arcam library to 0.12 with new series support (@elupus - #53843) (arcam_fmj docs)
  • ISS cleanup (@yuvalabou - #55801) (iss docs)
  • Discovery ignores DLNA DMR devices when they are better supported by another integration (@chishm - #57363) (dlna_dmr docs) (ssdp docs)
  • Add state_class support to Rest (@koying - #58026) (rest docs)
  • Use http.HTTPStatus in components/[ikl]* (@scop - #58248)
  • Improve Discord notifier (@nihaals - #52523) (discord docs)
  • Fully type Jewish Calendar (@yuvalabou - #56232) (jewish_calendar docs)
  • Apple TV power management (@itairaz1 - #51520) (apple_tv docs)
  • Spelling & grammar improvements to bug_report.yml (@JJJ - #56800)
  • Add additional nest stream test coverage (@allenporter - #58013) (nest docs)
  • Allow different voices in Watson TTS calls (@drinfernoo - #56811) (watson_tts docs)
  • Use http.HTTPStatus in components/m* (@scop - #58251)
  • Add grid services active sensor to telsa powerwall integration (@some-guy-in-oz - #56317) (powerwall docs)
  • Bump velbusaio to 2021.10.6 (@Cereal2nd - #58168) (velbus docs)
  • Update ismartgate dependency (@NickM-27 - #58259) (gogogate2 docs)
  • Change precision of Nest sensors (@michaeldavie - #56993) (nest docs)
  • Fix format bug in nest log statement (@allenporter - #58263) (nest docs)
  • Fix a bug in a nest test that causes side effects for other tests (@allenporter - #58264) (nest docs)
  • Rename tests filenames to conform to Home Assistant standards (@allenporter - #58266) (nest docs)
  • Bump greeclimate to 0.12.2 (@cmroche - #58256) (gree docs)
  • Fix yandex captcha detecting (@devbis - #56132) (yandex_transport docs)
  • Use DeviceInfo Class B-C (@tkdrob - #58217)
  • Use DeviceInfo Class E (@tkdrob - #58230)
  • Use DeviceInfo Class F-G (@tkdrob - #58255)
  • Use DeviceInfo on components with suggested_area (@epenet - #58225) (tado docs) (nuheat docs) (august docs) (roku docs) (sonos docs) (hunterdouglas_powerview docs) (devolo_home_control docs)
  • Address Watson TTS review comment (@frenck - #58277) (watson_tts docs)
  • Use regex instead of partition to section package definition (@ludeeus - #58278)
  • Bump awesomeversion from 21.8.1 to 21.10.1 (@ludeeus - #58258)
  • Ensure all devices show up in Tuya (@frenck - #58280) (tuya docs)
  • Fix modem callerid callback (@tkdrob - #58275) (modem_callerid docs)
  • Update tesla_powerwall to 0.3.12 (@jrester - #58284) (powerwall docs)
  • Use DeviceInfo Class H (@tkdrob - #58276)
  • Update aiolookin to 0.0.3 version (@ANMalko - #58249) (lookin docs)
  • Add CO Detector (cobj) device support to Tuya (@frenck - #58292) (tuya docs)
  • Add Gas Detector (rqbj) device support to Tuya (@frenck - #58293) (tuya docs)
  • Add Pressure Sensor (ylcg) device support to Tuya (@frenck - #58294) (tuya docs)
  • Complete Heater (qn) device support to Tuya (@frenck - #58296) (tuya docs)
  • Make sure Flu Near You data storage conforms to standards (@bachya - #57808) (flunearyou docs)
  • Use http.HTTPStatus in components/[gh]* (@scop - #58246)
  • Use DeviceInfo Class I-K (@tkdrob - #58300)
  • Use http.HTTPStatus in components/s* (@scop - #58291)
  • Ensure zeroconf uses the newest non-link local address in discovery (@bdraco - #58257) (zeroconf docs)
  • Use http.HTTPStatus in components/r* (@scop - #58288)
  • Use HTTPStatus in components/[nop]* (@scop - #58279)
  • Add new attribute constants for DeviceInfo registration (@epenet - #58289) (netatmo docs) (isy994 docs) (apple_tv docs) (plugwise docs) (bond docs) (zwave_js docs)
  • Allow service data template to return a dict (@koying - #57105)
  • Complete Smart Camera (sp) device support to Tuya (@frenck - #58301) (tuya docs)
  • Add switch platform to Tuya Light (dj) devices (@fOmey - #58196) (tuya docs)
  • OpenGarage binary sensor (@Danielhiversen - #58030) (opengarage docs) (new-platform)
  • Bump pylitterbot to 2021.10.1 (@natekspencer - #58307) (litterrobot docs)
  • Expose Sonos features as switch entities (@jjlawren - #54502) (sonos docs) (breaking-change)
  • Filter by connections instead of identifiers for Shelly (@chemelli74 - #58305) (shelly docs)
  • Configurable mode for KNX number entity (@farmio - #58268) (knx docs)
  • Use http.HTTPStatus in components/[tuv]* (@scop - #58325)
  • Pull configuration_url from library in gogogate2 (@bdraco - #58318) (gogogate2 docs)
  • Use DeviceInfo Class N-O (@tkdrob - #58314)
  • Move configuration_url abbreviation to MQTT DEVICE_ABBREVIATIONS const (@bieniu - #58313) (mqtt docs)
  • Fix bug in MediaSource definintion and enable strict type checking (@allenporter - #58321) (netatmo docs) (media_source docs) (xbox docs)
  • Complete removal of auto_start, zeroconf_default_interface, and safe_mode from HomeKit (@bdraco - #58320) (breaking-change)
  • Complete Solar Light (tyndj) device support to Tuya (@frenck - #58302) (tuya docs)
  • Add long-term statistics for Ondilo ICO (@TheNogl - #58290) (ondilo_ico docs)
  • Add VOC Sensor (voc) device support to Tuya (@frenck - #58332) (tuya docs)
  • Add Methane Detector (jwbj) device support to Tuya (@frenck - #58328) (tuya docs)
  • Add PM2.5 Sensor (pm25) device support to Tuya (@frenck - #58329) (tuya docs)
  • Add more Huawei LTE sensor state classes (@scop - #57983) (huawei_lte docs)
  • Use http.HTTPStatus in components/[wxyz]* (@scop - #58330)
  • Support suburban railways stations in yandex transport (@devbis - #58281) (yandex_transport docs)
  • Extend Tuya Humidifier (@alexanv1 - #58260) (tuya docs)
  • Pin pytest-github-actions-annotate-failures to fix broken CI (@frenck - #58351)
  • add BitronVideo AV2021 ZHA stick (@javicalle - #58337) (zha docs)
  • feat: Add unit of measurement to KNX number platform (@marvin-w - #58353) (knx docs)
  • Fix lookin device validation in config flow (@bdraco - #58349) (lookin docs)
  • Use DataUpdateCoordinator in Vallox (@andre-richter - #56966) (vallox docs)
  • Allow advanced Plex play_media search options (@jjlawren - #56226) (plex docs)
  • Fix lookin push updates when sensor entities disabled (@bdraco - #58346) (lookin docs)
  • Add warning if Sonos not linked to Plex (@jjlawren - #58150) (plex docs)
  • Set Sonos alarm and battery entity categories (@jjlawren - #58340) (sonos docs)
  • Add Cell State sensor to Vallox (@andre-richter - #58358) (vallox docs)
  • Add support for entity category for necessary KNX platforms (@marvin-w - #58357) (knx docs)
  • Fix EXT-X-PROGRAM-DATE-TIME in stream (@uvjustin - #58036) (stream docs)
  • Add entity category to MyQ (@balloob - #58377) (myq docs)
  • Initial support for Tradfri STARKVIND Air purifier (@ggravlingen - #58295) (tradfri docs) (new-platform)
  • Fix configuration url in gogogate2 (@bdraco - #58365) (gogogate2 docs)
  • Bump pytradfri to 7.1.1 (@janiversen - #58379) (tradfri docs)
  • Add entity category to august (@bdraco - #58359) (august docs)
  • Add entity category to roomba (@bdraco - #58362) (roomba docs)
  • Add entity category to gogogate2 (@bdraco - #58366) (gogogate2 docs)
  • Add entity category to elkm1 (@bdraco - #58364) (elkm1 docs)
  • Add Temperature and Humidity Sensor (wsdcg) device support to Tuya (@frenck - #58335) (tuya docs)
  • Add configuration_url to isy994 (@bdraco - #58372) (isy994 docs)
  • Add entity category to Neato (@chemelli74 - #58367) (neato docs)
  • Add support for unit of measurement in MQTT number platform (@frenck - #58343) (mqtt docs)
  • Upgrade youless library to fix LS110 power total is not a number (@gjong - #58333) (youless docs)
  • Minor cleanups for Vallox (@andre-richter - #58384) (vallox docs)
  • Adjust DeviceInfo registration on zwave_js (@epenet - #58391) (zwave_js docs)
  • Upgrade Tuya IoT Python SDK to 0.6.3 (@frenck - #58240) (tuya docs)
  • Bump async-upnp-client to 0.22.10 (@StevenLooman - #58387) (upnp docs) (yeelight docs) (dlna_dmr docs) (ssdp docs)
  • Use DeviceInfo in control4 (@epenet - #58388) (control4 docs)
  • Use DeviceInfo on accuweather (@epenet - #58394) (accuweather docs)
  • Add entity categories to Netatmo (@cgtobi - #58383) (netatmo docs)
  • Run nuki bidge.info() on executor (@sagioto - #58345) (nuki docs)
  • Add entity category to nut battery (@bdraco - #58363) (nut docs)
  • Add entity category to hunterdouglas_powerview (@bdraco - #58368) (hunterdouglas_powerview docs)
  • Add entity category to MotionEye (@chemelli74 - #58370) (motioneye docs)
  • Add entity category to Advantage Air (@Bre77 - #58371) (advantage_air docs)
  • Use DeviceInfo on awair (@epenet - #58395) (awair docs)
  • Use DeviceInfo on hassio (@epenet - #58397) (hassio docs)
  • Use DeviceInfo on esphome (@epenet - #58396) (esphome docs)
  • Use DeviceInfo in huawei-lte (@epenet - #58398) (huawei_lte docs)
  • Add configuration_url to upnp device (@StevenLooman - #58385) (upnp docs)
  • Update PyVicare to 2.13.0 (@oischinger - #57700) (vicare docs) (breaking-change)
  • Use DeviceInfo in mqtt (@epenet - #58389) (mqtt docs)
  • Allow extra keys in MQTT discovery messages (@emontnemery - #58390) (mqtt docs)
  • Add Smart Kettle (bh) device support to Tuya (@frenck - #58347) (tuya docs)
  • Drop unused ATTR_ENTRY_TYPE constant (@epenet - #58400) (forecast_solar docs)
  • Use DeviceInfo in asuswrt (@epenet - #58399) (asuswrt docs)
  • Advantage Air fix logic for motion sensors (@Bre77 - #58376) (advantage_air docs)
  • Use constants in renault tests (@epenet - #58406) (renault docs)
  • Use ATTR_VIA_DEVICE constant in onewire tests (@epenet - #58405) (onewire docs)
  • Meteofrance - Add state_class to appropriate sensors (@davidlb - #58401) (meteo_france docs)
  • Bump up ZHA dependencies (@Adminiuga - #58409) (zha docs)
  • Log correct ZHA channel initialization step (@Adminiuga - #58410) (zha docs)
  • Add state_class/entity_category to Verisure (@frenck - #58403) (verisure docs)
  • Add zwave_js sensor entity categories (@MartinHjelmare - #58416) (zwave_js docs) (breaking-change)
  • Use DeviceInfo Class P-R (@tkdrob - #58324)
  • Update PyVicare to 2.13.1 (@oischinger - #58422) (vicare docs)
  • bump pylgnetcast to 0.3.5 (@Drafteed - #58419) (lg_netcast docs)
  • Switch to UpdateCoordinator for eight sleep (@raman325 - #52614) (eight_sleep docs)
  • Complete Air Conditioner (kt) device support for Tuya (@frenck - #58417) (tuya docs)
  • Add running device class to binary sensor (@ludeeus - #58423) (binary_sensor docs)
  • Use DeviceInfo Class L-M (@tkdrob - #58312)
  • Fix updating sensor on unlinked Plex server (@jjlawren - #58418) (plex docs)
  • Add config flow to venstar (@garbled1 - #58152) (venstar docs) (breaking-change)
  • Add WattTime config option for showing the monitored location on the map (@bachya - #57129) (watttime docs)
  • Set entity_category for node status sensor (@raman325 - #58434) (zwave_js docs)
  • Add binary sensor to add-ons to show if they are running (@ludeeus - #58120) (hassio docs)
  • Re-add support for realtime SimpliSafe websocket (@bachya - #58061) (simplisafe docs)
  • Ensure domain is correct format (@balloob - #58429)
  • dlna_dmr won’t support devices that don’t provide all DMR services (@chishm - #58374) (dlna_dmr docs) (ssdp docs)
  • Aurora abb (solar) configflow (@davet2001 - #36300) (aurora_abb_powerone docs) (breaking-change)
  • Use class attribute instead of property decorator (@raman325 - #58448) (zwave_js docs)
  • Fix flux_led with RGB/W bulbs (model 0x44) (@bdraco - #58438) (flux_led docs)
  • Refactor input_select (@frenck - #53334) (input_select docs) (breaking-change)
  • Fix Aurora abb incorrect attr (@tkdrob - #58450) (aurora_abb_powerone docs)
  • Add typehints to eight_sleep (@raman325 - #58442) (eight_sleep docs)
  • Add all kraken entities on startup (@eifinger - #58027) (kraken docs)
  • Add speed & intensity controls to wled (@rytilahti - #56862) (wled docs)
  • Add support for external statistics (@emontnemery - #56607) (recorder docs) (sensor docs)
  • Add support for fan groups (@bdraco - #57941) (group docs) (new-platform)
  • Allow homeassistant prefix for device info configuration url (@ludeeus - #58414) (hassio docs)
  • Remove redundant value test in KNX Number entity (@farmio - #58455) (knx docs)
  • Fix velbus climate (@Cereal2nd - #58408) (velbus docs)
  • Use NamedTuple in Vallox service_to_method mapping (@andre-richter - #58361) (vallox docs)
  • Automatic spider supported fan speed and hvac (@peternijssen - #58308) (spider docs)
  • Address late review of velbus (@Cereal2nd - #58463) (velbus docs)
  • Use http.HTTPStatus in util.aiohttp (@scop - #58456)
  • Clean up rounding in Ecobee integration (@bjpetit - #56319) (ecobee docs)
  • Add device_class and state_class as optional attributes to the scrape sensor, to support statistics (@lukas-hetzenecker - #58164) (scrape docs)
  • Warn when recorder connects to an unsupported database (@emontnemery - #58161) (recorder docs) (breaking-change)
  • Use async_on_unload in Netatmo (@cgtobi - #58461) (netatmo docs)
  • Corrections for external statistics (@emontnemery - #58469) (recorder docs)
  • Validate device automation capablities WS calls (@balloob - #58444)
  • Add entity_category to SmartThings sensors (@allenporter - #58375) (smartthings docs)
  • Add offset support to time trigger (@RobertMe - #56838) (homeassistant docs)
  • Add reauth for Netatmo when token or token scope is invalid (@cgtobi - #57487) (netatmo docs)
  • Register Coinbase service in Device Registry and provide configuration URL (@TomBrien - #58472) (coinbase docs)
  • Publish nest event ids in camera related events (@allenporter - #58299) (nest docs)
  • Add some more required/optional tags to condition schemas (@balloob - #58424)
  • Fjaraskupan number entity for periodic venting (@elupus - #58179) (fjaraskupan docs)
  • Add vlc telnet error handler decorator (@MartinHjelmare - #58468) (vlc_telnet docs)
  • Fix mysensors metric/non-metric gateway (@MartinHjelmare - #58476) (mysensors docs)
  • Limit add-on stats to add-ons that are running (@ludeeus - #58479) (hassio docs)
  • Support Energy Sensor and Statistics in Homematic IP Cloud Integration (@FlavorFx - #57734) (homematicip_cloud docs)
  • dlna_dmr will gracefully handle device’s rejection of subscription attempt (@chishm - #58451) (dlna_dmr docs)
  • Bump ZHA quirks version to 0.0.63 (@dmulcahey - #58478) (zha docs)
  • Add entity category to UniFi sensors and switches (@Kane610 - #58484) (unifi docs)
  • Enable type checking - bmw_connected_drive (@cdce8p - #58310) (bmw_connected_drive docs)
  • Remove Huawei Router (ADR-0004) (@yuvalabou - #57136) (huawei_router docs) (breaking-change)
  • Bump pyotp to 2.6.0 (@chrillebile - #58413) (otp docs)
  • Add translations for binary_sensor device classes (@spacegaier - #58471) (binary_sensor docs)
  • Fix overriding the yeelight model if it is not known (@bdraco - #56967) (yeelight docs) (breaking-change)
  • Add Mill Sense Air sensors (@Danielhiversen - #57776) (mill docs)
  • Allow data sources to affect client tracker state after reconnecting to UniFi controller (@Kane610 - #58269) (unifi docs)
  • Fix device_info for xiaomi_aqara (@epenet - #58465) (xiaomi_aqara docs)
  • Minor cleanup on stream (@uvjustin - #58486) (stream docs)
  • Fix flaky UPNP test (@emontnemery - #58493) (upnp docs)
  • Add average template function and filter (@Petro31 - #57727)
  • Bump frontend to 20211026.0 (@balloob - #58500) (frontend docs)
  • Add async lib and DataUpdateCoordinator for environment_canada (@gwww - #57746) (environment_canada docs) (breaking-change)
  • Bump aioambient to 2021.10.0 (@bachya - #58494) (ambient_station docs)
  • Add entity categories to esphome (@jesserockz - #58495) (esphome docs)
  • Add Select platform to Advantage Air (@Bre77 - #54747) (advantage_air docs)
  • Broadlink Integration add support for LB1 (@L-I-Am - #50953) (broadlink docs) (new-platform)
  • Fix endpoints issues for Tuya Integration (@zlinoliver - #58411) (tuya docs)
  • Fix Microsoft tts defaults to resolve broken settings (@tylergibson - #58499) (microsoft docs) (breaking-change)
  • Fix min_humidity and max_humidity in homekit_controller (@yeahme49 - #58507) (homekit_controller docs)
  • Bump quantum_gateway to v0.0.6 (@cisasteelersfan - #58452) (quantum_gateway docs)
  • Retry yeelight setup later if first update fails (@bdraco - #58446) (yeelight docs)
  • Add myStrom LED Strip support extending rgblamp bulb_type (@asansano - #57322) (mystrom docs)
  • Fix issue where UniFi DPI groups state wasn’t being updated (@Kane610 - #58502) (unifi docs)
  • Use PyAV fork and set hvc1 codec tag for H.265 (@uvjustin - #58309) (stream docs)
  • Refactor Growatt sensor types (@muppet3000 - #56544) (growatt_server docs)
  • Fix available for Mill (@Danielhiversen - #58510) (mill docs)
  • Use constants for device registry checks (@epenet - #58514) (nest docs) (arcam_fmj docs)
  • Fritz clean device_tracker service (@chemelli74 - #56535) (fritz docs)
  • Adjust onewire device manufacturer (@epenet - #58515) (onewire docs)
  • Fix media_player grouping while media_player is off (@vigonotion - #58070) (media_player docs)
  • Use DeviceInfo in screenlogic (@epenet - #58518) (screenlogic docs)
  • Use DeviceInfo in sharkiq (@epenet - #58519) (sharkiq docs)
  • Use DeviceInfo in shelly (@epenet - #58520) (shelly docs)
  • Move WLED palette to config entity category (@frenck - #58517) (wled docs)
  • Use DeviceInfo in sms (@epenet - #58525) (sms docs)
  • Use DeviceInfo in smarttub (@epenet - #58524) (smarttub docs)
  • Use DeviceInfo in smartthings (@epenet - #58523) (smappee docs)
  • Use DeviceInfo in sma (@epenet - #58521) (sma docs)
  • Handle accessories without a serial number in homekit_controller (@bdraco - #58498) (homekit_controller docs)
  • Simplify utility_meter code base with croniter (@dgomes - #55625) (utility_meter docs) (breaking-change)
  • Revert “Add warning when entity used in template doesn’t exist” (@frenck - #58527)
  • Use DeviceInfo in solarlog (@epenet - #58526) (solarlog docs)
  • Fix Vicare unique_ids (@oischinger - #58531) (vicare docs)
  • Increase setMode flexibility (@oischinger - #58491) (vicare docs)
  • Use DeviceInfo in smappee (@epenet - #58522) (smappee docs)
  • Add new orange pi boards to orangepi integration (@drizzle1 - #58392) (orangepi_gpio docs)
  • Simplify recorder PgSQL version checks (@emontnemery - #58533) (recorder docs)
  • Allow specifying a super template for async_track_template_result (@emontnemery - #58477) (websocket_api docs) (template docs) (universal docs) (bayesian docs)
  • Correct changes in Allow extra keys in MQTT discovery messages (@emontnemery - #58534) (mqtt docs)
  • Add Solar Edge entity device and state class (@terminet85 - #55902) (breaking-change)
  • Add kWh as cost option for gas (@ColinRobbins - #58426) (energy docs)
  • When tradfri device goes offline set attr_available false (@janiversen - #58487) (tradfri docs)
  • Fix energy cost sensor for MWh + improve tests (@emontnemery - #58540) (energy docs)
  • Allow storing picture in area registry (@balloob - #58539) (config docs)
  • Add multi-partition support for TotalConnect (@austinmroczek - #55429) (totalconnect docs)
  • Adjust onewire device model (@epenet - #58516) (onewire docs)
  • Enable strict typing - bmw_connected_drive (@cdce8p - #58506) (bmw_connected_drive docs)
  • Serialize dates and times to isoformat (@emontnemery - #58157)
  • Add Number platform to Wallbox (@hesselonline - #52786) (wallbox docs)
  • Blink arm camera (@yeahme49 - #56474) (blink docs)
  • Support ViCare energy units (@oischinger - #58433) (vicare docs)
  • Update frontend to 20211027.0 (@bramkragten - #58545) (frontend docs)
  • Fix ZeroDivisionError on freebox/sensor (@davelowper - #57077) (freebox docs) (beta fix)
  • Allow initialized callback to have arguments (@inytar - #58129) (hdmi_cec docs) (beta fix)
  • Add an image placeholder for Nest WebRTC cameras (@allenporter - #58250) (nest docs) (beta fix)
  • Reduce rainmachine intervals to avoid device overload (@bdraco - #58319) (rainmachine docs) (beta fix)
  • Return the real MAC address for LIFX bulbs with newer firmware (@Djelibeybi - #58511) (lifx docs) (beta fix)
  • Add tplink KP303 to discovery (@bdraco - #58548) (tplink docs) (beta fix)
  • Add service configuration URL to Doorbird (@Tommatheussen - #58549) (doorbird docs) (beta fix)
  • Add entity category to ZHA battery (@balloob - #58553) (zha docs) (beta fix)
  • Add configuration_url to Freebox integration (@Quentame - #58555) (freebox docs) (beta fix)
  • Add configuration_url to iCloud integration (@Quentame - #58557) (icloud docs) (beta fix)
  • Allow configuration_url to be removed/nullified from device registry (@jesserockz - #58564) (beta fix)
  • Add configuration_url to ESPHome (@jesserockz - #58565) (esphome docs) (beta fix)
  • Fix default value for host in octoprint config flow (@balloob - #58568) (octoprint docs) (beta fix)
  • Add configuration_url to Huawei LTE integration (@chmielowiec - #58584) (huawei_lte docs) (beta fix)
  • Add ROCKROBO_S5_MAX to xiaomi_miio vacuum models (@OGKevin - #58591) (xiaomi_miio docs) (beta fix)
  • Add configuration_url to devolo Home Control (@Shutgun - #58594) (devolo_home_control docs) (beta fix)
  • Fix missing config string in sense (@tkdrob - #58597) (sense docs) (beta fix)
  • Fix uncaught exception in sense and retry later (@bdraco - #58623) (sense docs) (beta fix)
  • Add entity category for load sensors to AsusWRT (@Chen-IL - #58625) (asuswrt docs) (beta fix)
  • Add package constraint to websockets (@bdraco - #58626) (beta fix)
  • Fix missing triggered state in SimpliSafe alarm control panel (@bachya - #58628) (simplisafe docs) (beta fix)
  • Update frontend to 20211028.0 (@bramkragten - #58629) (frontend docs) (beta fix)
  • Improve ViCare energy units (@oischinger - #58630) (vicare docs) (beta fix)
  • Migrate Tuya unique IDs for switches & lights (@frenck - #58631) (tuya docs) (beta fix)
  • Fix incorrect RainMachine service helper (@bachya - #58633) (rainmachine docs) (beta fix)
  • Bump greeclimate to 0.12.3 (@cmroche - #58635) (gree docs) (beta fix)
  • Fix missing temperature level on Tuya Heater (qn) devices (@frenck - #58643) (tuya docs) (beta fix)
  • Bump pyhik to 0.3.0 (@mezz64 - #58659) (hikvision docs) (beta fix)
  • Update light turn_on schema to coerce colors to tuple before asserting sequence type (@emontnemery - #58670) (group docs) (beta fix)
  • Convert RGBW and RGBWW colors in light turn_on calls (@emontnemery - #58680) (light docs) (beta fix)
  • Fix regression in MQTT discovery (@emontnemery - #58684) (mqtt docs) (beta fix)
  • Fix spelling of OctoPrint (@frenck - #58686) (octoprint docs) (beta fix)
  • Fix OctoPrint config flow schema (@frenck - #58688) (octoprint docs) (beta fix)
  • Fix round - wallbox (@cdce8p - #58689) (wallbox docs) (beta fix)
  • Fix OctoPrint SSDP URL parsing and discovered values (@frenck - #58698) (octoprint docs) (beta fix)
  • Avoid doorbird device probe during discovery for known devices (@bdraco - #58701) (doorbird docs) (beta fix)
  • Disable polling Sonos switches by default (@jjlawren - #58705) (sonos docs) (beta fix)
  • Bump aioambient to 2021.10.1 (@bachya - #58708) (ambient_station docs) (beta fix)
  • reload service: remove entities before disconnection (@farmio - #58712) (knx docs) (beta fix)
  • Fix bug with volumes in SimpliSafe set_system_properties service (@bachya - #58721) (simplisafe docs) (beta fix)
  • Improve handling of invalid serial numbers in HomeKit Controller (@bdraco - #58723) (homekit_controller docs) (beta fix)
  • Add configuration url to AVM Fritz!Smarthome (@mib1185 - #57711) (fritzbox docs) (beta fix)
  • Mobile app to update entity registry on re-register sensors (@balloob - #58378) (mobile_app docs) (beta fix)
  • Coerce to tuple before asserting the sequence (@emontnemery - #58672) (opencv docs) (lifx docs) (yeelight docs) (flux_led docs) (beta fix)
  • Add ROCKROBO_S4 to xiaomi_miio vaccum models (@OGKevin - #58682) (xiaomi_miio docs) (beta fix)
  • Set Netatmo max default temperature (@cgtobi - #58718) (netatmo docs) (beta fix)
  • Fix bluesound player internally used id (@thrawnarn - #58732) (bluesound docs) (beta fix)
  • Add additional test coverage for RYSE smartbridges with HK (@bdraco - #58746) (homekit_controller docs) (beta fix)
  • Bump nad_receiver to version 0.3.0 (@Kapernicus - #58751) (nad docs) (beta fix)
  • Add configuration_url to OctoPrint (@frenck - #58753) (octoprint docs) (beta fix)
  • Bump zeroconf 0.36.11 (@bdraco - #58755) (zeroconf docs) (beta fix)
  • Fix channel.send in Discord (@mib1185 - #58756) (discord docs) (beta fix)
  • Fix solaredge energy sensor names (@purcell-lab - #58773) (solaredge docs) (breaking-change) (beta fix)
  • Workaround brightness transition delay from off in older yeelight models (@bdraco - #58774) (yeelight docs) (beta fix)
  • dlna_dmr: less eager discovery (@chishm - #58780) (dlna_dmr docs) (beta fix)
  • Add ROCKROBO_E2 to supported vacuums for xiaomi_miio (@OGKevin - #58817) (xiaomi_miio docs) (beta fix)
  • Fix Plugwise not updating config entry with discovery information (@frenck - #58819) (plugwise docs) (beta fix)
  • Bump pyefergy to 0.1.3 (@tkdrob - #58821) (efergy docs) (beta fix)
  • Improve part metadata in stream (@uvjustin - #58822) (stream docs) (beta fix)
  • Add configuration_url to GIOS integration (@bieniu - #58840) (gios docs) (beta fix)
  • Fix OpenWeatherMap options not being initialized the first time (@mback2k - #58736) (openweathermap docs) (beta fix)
  • Add ROCKROBO_S4_MAX to supported xiaomi vacuums (@OGKevin - #58826) (xiaomi_miio docs) (beta fix)
  • Fix renamed solaredge sensor keys (@purcell-lab - #58875) (solaredge docs) (beta fix)
  • Handle None values in Xiaomi Miio integration (@bieniu - #58880) (xiaomi_miio docs) (beta fix)
  • Fix find_next_time_expression_time (@OttoWinter - #58894) (beta fix)
  • Fix color temp selection when brightness changed in Tuya light (@pabigot - #58341) (tuya docs) (beta fix)
  • Fix incorrect entity category in Advantage Air (@frenck - #58754) (advantage_air docs) (beta fix)
  • Add ROCKROBO_S6_PURE to supported vacuums for xiaomi_miio (@OGKevin - #58901) (xiaomi_miio docs) (beta fix)
  • Bump pyinsteon to 1.0.13 (@teharris1 - #58908) (insteon docs) (beta fix)
  • Add configuration_url to Airly integration (@bieniu - #58911) (airly docs) (beta fix)
  • Fix recursive limit in find_next_time_expression_time (@bdraco - #58914) (beta fix)
  • Add libav.mpegts to logging filter (@uvjustin - #58937) (stream docs) (beta fix)
  • Revert “Add offset support to time trigger” (@emontnemery - #58947) (homeassistant docs) (beta fix)
  • Extend Tuya Dimmer (tgq) support (@frenck - #58951) (tuya docs) (beta fix)
  • Add support for IoT Switches (tdq) in Tuya (@frenck - #58952) (tuya docs) (beta fix)
  • Add device configuration URL to Solar-Log (@Ernst79 - #58954) (solarlog docs) (beta fix)
  • Fix unique_id of derived sent-sensors (@kodsnutten - #58298) (upnp docs) (breaking-change) (beta fix)
  • Aurora abb energy metering (@davet2001 - #58454) (aurora_abb_powerone docs) (beta fix)
  • Aurora abb defer unique_id assignment during yaml import (@davet2001 - #58887) (aurora_abb_powerone docs) (beta fix)
  • Add missing ZMW currency (@tkdrob - #58959) (beta fix)
  • Fix broken ViCare burner & compressor sensors (@oischinger - #58962) (vicare docs) (beta fix)
  • Bump pyMill to 0.7.4 (@Danielhiversen - #58977) (mill docs) (beta fix)
  • Fix battery_is_charging sensor on system bridge (@arksega - #58980) (system_bridge docs) (beta fix)
  • Update frontend to 20211103.0 (@bramkragten - #58988) (frontend docs) (beta fix)
Scroll to Top