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

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

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

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

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

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

../Frenck

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

Brand new configuration panel

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

Screenshot of the new areas panel

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

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

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

The button entity

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

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

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

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

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

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

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

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

Redesigned area panel and the area Lovelace card

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

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

Screenshot of the new areas panel

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

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

Users that can only log in from the local network

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

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

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

Z-Wave JS SmartStart and entity categories

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

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

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

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

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

Blueprint scripts

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

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

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

Triggering on any, but only state changes

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

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

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

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

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

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

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

Cast issues resolved

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

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

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

Other noteworthy changes

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

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

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

And the following integrations now have entity categories:

New Integrations

We welcome the following new integration this release:

Integrations now available to set up from the UI

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

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

Release 2021.12.1 – December 12

  • Fix Sonos sub & surround switch state reporting (@jjlawren – #61531) (sonos docs)
  • Update logic for nest media source can_play for events (@allenporter – #61537) (nest docs)
  • Fix HomeKit covers with device class window and no tilt (@bdraco – #61566) (homekit docs)
  • Update frontend to 20211212.0 (@bramkragten – #61577) (frontend docs)
  • Fix Hue transition calculation (@marcelveldt – #61581) (hue docs)
  • enable grouped light if enabled in previous integration (@marcelveldt – #61582) (hue docs)
  • Only publish nest camera event messages once per thread and bump nest version (@allenporter – #61587) (nest docs)
  • Fix for failing Solarlog integration in HA 2021.12 (@Ernst79 – #61602) (solarlog docs)
  • Fix availability for 3th party Hue lights (@marcelveldt – #61603) (hue docs)
  • Bump aiopvapi to 1.6.19 to fix async_timeout passing loop (@bdraco – #61618) (hunterdouglas_powerview docs)
  • Bump aiohue to 3.0.3 (@balloob – #61627) (hue docs)

Release 2021.12.2 – December 15

  • Bump pysmappee to 0.2.29 (@bsmappee – #61160) (smappee docs)
  • Upgrade lupupy to 0.0.24 (@majuss – #61598) (lupusec docs)
  • Suppress errors for legacy nest api when using media source (@allenporter – #61629) (nest docs)
  • Bump total_connect_client to 2021.12 (@austinmroczek – #61634) (totalconnect docs)
  • Add additional-tag to machine builds (@ludeeus – #61693)
  • Bump aiohue to 3.0.4 (@balloob – #61709) (hue docs)
  • Update pymelcloud to 2.5.6 (@vilppuvuorinen – #61717) (melcloud docs)
  • Add check for incompatible device trigger in Hue integration (@marcelveldt – #61726) (hue docs)
  • Fix turn_off with transition for grouped Hue lights (@marcelveldt – #61728) (hue docs)
  • Fix Flash effect for Hue lights (@marcelveldt – #61733) (hue docs)
  • Blacklist availability check for a light at startup in Hue integration (@marcelveldt – #61737) (hue docs)
  • Upgrade tailscale to 0.1.5 (@frenck – #61744) (tailscale docs)
  • Bump brunt package to 1.0.1 (@eavanvalkenburg – #61784) (brunt docs)
  • Fix ZHA unoccupied setpoints. (@MattWestb#61791) (zha docs)
  • Don’t override pychromecast MediaController’s APP ID (@emontnemery – #61796) (cast docs)
  • Bump pychromecast to 10.2.1 (@emontnemery – #61811) (cast docs)
  • Tibber, update library, fixes #61525 (@Danielhiversen – #61813) (tibber docs)
  • Bump python-miio to 0.5.9.2 (@rytilahti – #61831) (xiaomi_miio docs)
  • Ensure SimpliSafe websocket reconnects upon new token (@bachya – #61835) (simplisafe docs)
  • Allow setting local_ip for knx routing connections (@marvin-w – #61836) (knx docs)
  • Fix broken Environment Canada (@michaeldavie – #61848) (environment_canada docs)
  • Bump google-nest-sdm to 0.4.8 (@allenporter – #61851) (nest docs)
  • Bump aiohue to 3.0.5 (@marcelveldt – #61875) (hue docs)
  • Update frontend to 20211215.0 (@bramkragten – #61877) (frontend docs)

Release 2021.12.3 – December 17

  • Update ebusdpy version (@sindudas – #59899) (ebusd docs)
  • Nextbus upcoming sort as integer (@ViViDboarder – #61416) (nextbus docs)
  • Add restore logic to Shelly climate platform (@chemelli74 – #61632) (shelly docs)
  • Fix OwnetError preventing onewire initialisation (@epenet – #61696) (onewire docs)
  • Fix notify platform setup for KNX (@marvin-w – #61842) (knx docs)
  • Bump aiohue to 3.0.6 (@marcelveldt – #61974) (hue docs)
  • Brunt dependency bump to 1.0.2 (@eavanvalkenburg – #62014) (brunt docs)
  • Bump flux_led to 0.26.15 (@bdraco – #62017) (flux_led docs)
  • Fix none-check in template light (@emontnemery – #62089) (template docs)
  • Add missing timezone information (@DeerMaximum – #62106) (vallox docs)
  • Improve availability for Shelly Valve (@chemelli74 – #62129) (shelly docs)
  • Fix Non-thread-safe operation in homekit light events (@bdraco – #62147) (homekit docs)
  • Fix Non-thread-safe operation in logbook (@bdraco – #62148) (logbook docs)
  • Bump google-nest-sdm to 0.4.9 (@allenporter – #62160) (nest docs)
  • Add guard in call to activate_scene in Hue (@marcelveldt – #62177) (hue docs)
  • Fix threading error in scripts with repeat or choose actions (@emontnemery – #62168)
  • Fix threading error in zha (@emontnemery#62170) (zha docs)

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;
}

customize.yaml UI (customization)

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

A small explanation why it has been removed:

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

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

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

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

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;
}

Add-ons, Backups & Supervisor

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


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

(@ludeeus#60597) (hassio docs)

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;
}

Companion App

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

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;
}

Advantage Air

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

(@Bre77#52816) (advantage_air docs)

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;
}

BMW ConnectedDrive

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

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

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

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

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

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

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;
}

Brunt Blind Engine

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

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

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

(@eavanvalkenburg#49714) (brunt docs)

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;
}

Fronius

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

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

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

(@farmio#59686) (fronius docs)

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;
}

Guardian

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

(@bachya#58632) (guardian docs)

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 Controller

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

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

(@Jc2k#60480) (homekit_controller docs)

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;
}

Hue

Events for Hue remotes/switches

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

Light entities for Hue rooms/zones

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

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

Existing Hue group lights will be migrated as enabled entities.

Entities for Hue scenes

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

(@marcelveldt#58996) (hue docs)

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;
}

KNX

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

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

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

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


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

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

(@farmio#58786) (knx docs)


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

(@farmio#57621) (knx docs)

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;
}

Kostal Plenticore

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

(@slowflyer#56529) (kostal_plenticore docs)

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;
}

Litter-Robot

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

(@natekspencer#59734) (litterrobot docs)

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;
}

Material Design Icons (MDI)

The previously deprecated MDI icons, now have been removed.

The following icons have been removed:

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

The following icons have been renamed:

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

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;
}

MQTT

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

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

(@jbouwh#58992) (mqtt docs)

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;
}

Notifications for Android TV

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

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

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

(@redahb#60159) (nfandroidtv docs)

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

(@dieselrabbit#60872) (screenlogic docs)

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 previously deprecated YAML configuration of the Phone Modem integration
has been removed. Phone Modem is now configured via the UI, any existing YAML
configuration has been imported in previous releases and can now be safely
removed from your YAML configuration files.

(@tkdrob#59526) (modem_callerid docs)

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

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

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

(@bachya#59617) (rainmachine docs)

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 renault.charge_start service is deprecated and replaced by a dedicated
start charge button entity; please use that entity to start
the charge instead.

(@epenet#59383) (renault docs)

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 services have been reorganized and now utilize a Home Assistant
selector (device ID) instead of using a SimpliSafe system ID.

(@bachya#58722) (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;
}

SMA Solar

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

(@rklomp#59848) (sma docs)

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 along with the bass_level
and treble_level attributes on media_player entities.

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

(@jjlawren#60498) (sonos docs)

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;
}

Statistics

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

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

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

(@ThomDietrich#59867) (statistics docs)

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;
}

Templates: `timestamp_local` and `timestamp_utc`

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

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

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

(@jbouwh#60269)

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;
}

Trafikverket Weather Station

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

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

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

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;
}

Twente Milieu

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

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

(@frenck#59632) (twentemilieu docs)

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;
}

Velbus

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

Velbus is now configured via the UI, any existing YAML configuration has been imported
in previous releases and can now be safely removed from your YAML configuration files.

(@Cereal2nd#60411) (velbus docs)

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

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

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

(@oischinger#56691) (vicare docs)

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;
}

WLED

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

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

(@frenck#58839) (wled docs)


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

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

(@frenck#60535) (wled docs)


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

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

(@frenck#60537) (wled docs)

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;
}

Yamaha MusicCast

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

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

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

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

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

(@micha91#58285) (yamaha_musiccast docs)

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;
}

Z-Wave JS

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

Configuration entities:

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

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

Updates for custom integration developers

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

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

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;
}

mqtt.async_publish is now a coroutine

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

(@emontnemery#58441)

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;
}

homeassistant.const.HTTP_* removed

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

(@scop#58380)

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;
}

homeassistant.util.get_local_ip() removed

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

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

(@chemelli74#58669)

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;
}

Timestamp/Date device class value changes

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

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

(@frenck#52671)

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;
}

Customization API removed

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

(@frenck#59824)

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;
}

NumberEntity MODE_* constants deprecated

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

(@frenck#60614)

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;
}

DEVICE_CLASS_* constants deprecated

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

Example:

from homeassistant.components.sensor import SensorDeviceClass

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

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

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;
}

sanitize_filename and sanitize_path util removed

Removed two (long time) deprecated helpers:

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

(@frenck#60859)

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;
}

SSDP ATTR_HA_MATCHING_DOMAINS value changed

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

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

(@epenet#60283)

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;
}

MQTT/DHCP/ZeroConf/USB/SSDP Discovery

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

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

Dataclasses provided by discovery type:

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

(@epenet)

Farewell to the following

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

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

All changes

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.12.0dev0 (@frenck – #58546)
  • Register LCN devices in device registry (@alengwenus – #53143) (lcn docs)
  • Get the registry using the callback method (@balloob – #58542)
  • Avoid service call in MQTT async_publish function (@emontnemery – #58441) (breaking-change)
  • Add additional MAC address pattern for Guardian DHCP discovery (@bachya – #58562) (guardian docs)
  • Use DeviceInfo in soma (@epenet – #58572) (soma docs)
  • Use DeviceInfo in somfy-mylink (@epenet – #58573) (somfy_mylink docs)
  • Use DeviceInfo in spider (@epenet – #58575) (spider docs)
  • Use DeviceInfo in starline (@epenet – #58576) (starline docs)
  • Use DeviceInfo in switchbot (@epenet – #58578) (switchbot docs)
  • Use DeviceInfo in songpal (@epenet – #58574) (songpal docs)
  • Remove incorrect use of iscoroutinefunction from duckdns (@emontnemery – #58585) (duckdns docs)
  • Bump hatasmota to 0.3.0 (@emontnemery – #58592) (tasmota docs)
  • Use DeviceInfo in switcher-kis (@epenet – #58579) (switcher_kis docs)
  • Use DeviceInfo in syncthing (@epenet – #58580) (syncthing docs)
  • Use DeviceInfo in syncthru (@epenet – #58581) (syncthru docs)
  • Use DeviceInfo in system-bridge (@epenet – #58582) (system_bridge docs)
  • Add entity category ‘system’ (@emontnemery – #58595) (energy docs)
  • Use DeviceInfo in tasmota (@epenet – #58604) (tasmota docs)
  • Use constants in acmeda config flow (@epenet – #58590) (acmeda docs)
  • Use DeviceInfo in subaru (@epenet – #58577) (subaru docs)
  • Use DeviceInfo in tado (@epenet – #58603) (tado docs)
  • Use DeviceInfo in toon (@epenet – #58605) (toon docs)
  • Use DeviceInfo in tplink (@epenet – #58606) (tplink docs)
  • Use DeviceInfo in twentemilieu (@epenet – #58608) (twentemilieu docs)
  • Use DeviceInfo in twinkly (@epenet – #58609) (twinkly docs)
  • Use DeviceInfo in vizio (@epenet – #58617) (vizio docs)
  • Use DeviceInfo in vlc-telnet (@epenet – #58618) (vlc_telnet docs)
  • Use DeviceInfo in volumio (@epenet – #58619) (volumio docs)
  • Use DeviceInfo in unifi (@epenet – #58620) (unifi docs)
  • Use DeviceInfo in upb (@epenet – #58621) (upb docs)
  • Add DHCP Discovery for SimpliSafe (@bachya – #58560) (simplisafe docs)
  • Use constants in control4 config flow (@epenet – #58602) (control4 docs)
  • Adding newly supported language codes to Google TTS (@hmmbob – #58607) (google_cloud docs)
  • Open and close tilt for Fibaro devices in zwave_js (@pail23 – #58435) (zwave_js docs)
  • Add devolo home network integration (@Shutgun – #45866) (devolo_home_network docs) (new-integration)
  • Add missing SimpliSafe config flow test (@bachya – #58563) (simplisafe docs)
  • Add more dlna_dmr media_player services and attributes (@chishm – #57827) (dlna_dmr docs)
  • Use DeviceInfo in wemo (@epenet – #58638) (wemo docs)
  • Use DeviceInfo in waze-travel-time (@epenet – #58637) (waze_travel_time docs)
  • Use DeviceInfo in wiffi (@epenet – #58639) (wiffi docs)
  • Use DeviceInfo in xbox (@epenet – #58640) (xbox docs)
  • Use DeviceInfo in xiaomi-miio (@epenet – #58642) (xiaomi_miio docs)
  • Use DeviceInfo in yale-smart-alarm (@epenet – #58644) (yale_smart_alarm docs)
  • Use DeviceInfo in youless (@epenet – #58645) (youless docs)
  • Use DeviceInfo in zerproc (@epenet – #58647) (zerproc docs)
  • Add a Preset mode for Honeywell permanent hold (@schreyack – #58060) (honeywell docs)
  • Use DeviceInfo in zwave-js (@epenet – #58649) (zwave_js docs)
  • Add ‘delta_values’ option to utility_meter (@eddyg – #54964) (utility_meter docs)
  • Add support for Levoit Core 400S air purifier to VeSync integration (@jparchem – #57126) (vesync docs)
  • Avoid circular import in network integration (@bdraco – #58655) (network docs)
  • Add zwave_js binary sensor descriptions (@MartinHjelmare – #58641) (zwave_js docs)
  • Update greeneye_monitor sensor state when first connected to a monitor (@jkeljo – #58587) (greeneye_monitor docs)
  • Add select platform to Litter-Robot integration (@natekspencer – #58323) (litterrobot docs)
  • Support reverse proxying of motionEye streams (@dermotduffy – #53440) (motioneye docs)
  • Add motionEye sensor platform (@dermotduffy – #53415) (motioneye docs) (new-platform)
  • Add REST sensor/binary_sensor/switch templated headers & params (@koying – #54426) (rest docs)
  • Enable strict typing for greeneye_monitor (@jkeljo – #58571) (greeneye_monitor docs)
  • Fix lcn in place update of config entry data (@alengwenus – #58729) (lcn docs)
  • Add myself as codeowner of bluesound (@thrawnarn – #58733) (bluesound docs)
  • Update Mill library, add support for generation 3 heaters. #58536 (@Danielhiversen – #58738) (mill docs)
  • Add motionEye services (@dermotduffy – #53411) (motioneye docs)
  • Get Litter-Robot to 100% code coverage and minor code cleanup (@natekspencer – #58704) (litterrobot docs)
  • Add Ridwell integration (@bachya – #57590) (ridwell docs) (new-integration)
  • Use assignment expressions 31 (@cdce8p – #58715)
  • Use assignment expressions 32 (@cdce8p – #58716)
  • Use assignment expressions 29 (@cdce8p – #58713)
  • Use assignment expressions 33 (@cdce8p – #58717)
  • Use assignment expressions 30 (@cdce8p – #58714)
  • Add AUCTION coin (@bastgau – #58709) (coinbase docs)
  • Add init for growatt sensor types (@muppet3000 – #58749) (growatt_server docs) (new-integration)
  • Serve nest placeholder image from disk rather than generate on the fly (@allenporter – #58663) (nest docs)
  • Switch to update coordinator, and bump venstarcolortouch to 0.15 (@garbled1 – #58601) (venstar docs)
  • Fix litterrobot vacuum base class (@cdce8p – #58765) (litterrobot docs)
  • Use EntityDescription – wallbox (@cdce8p – #58690) (wallbox docs)
  • Fix some typing issues in greeneye_monitor (@jkeljo – #58788) (greeneye_monitor docs)
  • Correct fjaraskupan post merge review comments (@elupus – #58796) (fjaraskupan docs)
  • Improve code quality of the Broadlink light platform (@felipediel – #58790) (broadlink docs)
  • Improve code quality of the Broadlink switch platform (@felipediel – #58794) (broadlink docs)
  • Remove last_knx_update extra_state_attribute from KNX BinarySensor and Sensor (@farmio – #58786) (knx docs) (breaking-change)
  • Add zeroconf ATTR constants (@epenet – #58671) (zeroconf docs) (hue docs)
  • Bump async-upnp-client to 0.22.11 (@chishm – #58803) (upnp docs) (yeelight docs) (dlna_dmr docs) (ssdp docs)
  • Cleanup old config entry migration from Météo-France (@Quentame – #58809) (meteo_france docs)
  • Add motionEye media browser (@dermotduffy – #53436) (motioneye docs)
  • Use assignment expressions 35 (@cdce8p – #58824)
  • Use assignment expressions 36 (@cdce8p – #58825)
  • Use assignment expressions 37 (@cdce8p – #58827)
  • Use assignment expressions 38 (@cdce8p – #58828)
  • Use assignment expressions 39 (@cdce8p – #58829)
  • Use assignment expressions 34 (@cdce8p – #58823)
  • Cleanup old entity.unique_id migration from Synology DSM (@Quentame – #58811) (synology_dsm docs)
  • Address late review of venstar (@garbled1 – #58813) (venstar docs)
  • Make general code quality improvements in the Broadlink integration (@felipediel – #58848) (broadlink docs)
  • Migrate attribution attribute for Zestimate (@frenck – #58854) (zestimate docs)
  • Upgrade coverage to 6.1.1 (@frenck – #58855)
  • Add device_class for GEM power and voltage sensors (@garbled1 – #58764) (greeneye_monitor docs)
  • Upgrade black to 21.10b0 (@frenck – #58870)
  • Use attr and entity descriptions for Twente Milieu sensors (@frenck – #58871) (twentemilieu docs)
  • Move WLED sensors to entity descriptions (@frenck – #58839) (wled docs) (breaking-change)
  • Perform some AirVisual code cleanup (@bachya – #58858) (airvisual docs)
  • Perform some WattTime code cleanup (@bachya – #58869) (watttime docs)
  • Perform some Tile code cleanup (@bachya – #58868) (tile docs)
  • Perform some SimpliSafe code cleanup (@bachya – #58867) (simplisafe docs)
  • Set internal quality_scale for the hassio integration (@ludeeus – #58881) (hassio docs)
  • Simplify requests in the Broadlink integration (@felipediel – #58850) (broadlink docs)
  • Use attr shorthand in greeneye_monitor sensors (@jkeljo – #58784) (greeneye_monitor docs)
  • Add type annotations to OpenWeatherMap (@carstenschroeder – #58802) (openweathermap docs)
  • Check for uncaught service not found exceptions (@balloob – #58010)
  • Use entity_registry async_get for AsusWrt (@ollo69 – #58885) (asuswrt docs)
  • Update xknx to 0.18.12 (@marvin-w – #58891) (knx docs)
  • Use async_track_utc_time_change to schedule short term statistics (@emontnemery – #58903) (recorder docs)
  • Add classes for new Homematic devicetypes/devices (HmIP-SMI, HmIP-DRSI1) (@emufan – #57521) (homematic docs)
  • Add type annotations for MET (@carstenschroeder – #58804) (met docs)
  • Move fixtures part 1 (@balloob – #58902)
  • Split wallbox sensor type and number type (@hesselonline – #58807) (wallbox docs)
  • Address late review of motionEye services (@dermotduffy – #58924) (motioneye docs)
  • Add home/not_home icons to Asuswrt trackers (@Mariusthvdb – #58883) (asuswrt docs)
  • Add command_template to mqtt select platform (@jbouwh – #58934) (mqtt docs)
  • Add device_class to MQTT switch (@koying – #58931) (mqtt docs)
  • Use freezegun in DST tests (@emontnemery – #58939)
  • Add command_template to MQTT number platform (@jbouwh – #58949) (mqtt docs)
  • Add support for TP-Link KL400L5 (@dlangerm – #58944) (tplink docs)
  • Use zeroconf attributes (A-D) (@epenet – #58835)
  • Use zeroconf HaServiceInfo in tests (A-D) (@epenet – #58836) (apple_tv docs)
  • Address late review of motionEye media browser (@dermotduffy – #58925) (motioneye docs)
  • Bump actions/checkout from 2.3.5 to 2.4.0 (@dependabot – #58978)
  • Aurora abb improvements (@davet2001 – #58504) (aurora_abb_powerone docs)
  • Add state class to wallbox component (@hesselonline – #58801) (wallbox docs)
  • Upgrade yamllint to 1.26.3 (@frenck – #59047)
  • Upgrade isort to 5.10.0 (@frenck – #59046)
  • Refactor velbus light code to make it more clear and readable (@Cereal2nd – #58483) (velbus docs)
  • Add typing info to velbus (part 1) (@Cereal2nd – #59041) (velbus docs)
  • Upgrade restrictedpython to 5.2a1.dev0 (@frenck – #59049) (python_script docs)
  • Bump to aiohttp 3.8.0 (@bdraco – #58974) (breaking-change)
  • Use entity category and state class in devolo Home Network (@Shutgun – #59071) (devolo_home_network docs)
  • Add recorder status WS API (@emontnemery – #58989) (recorder docs)
  • Add Button entity component platform (@frenck – #57642) (demo docs) (button docs) (new-integration)
  • Mqtt fan fail deprecated options for classic speeds (@jbouwh – #58992) (mqtt docs) (breaking-change)
  • Minor tweak of cv.deprecated + cv.removed (@emontnemery – #59095)
  • Upgrade mitemp_bt to 0.0.5 (@frenck – #59054) (mitemp_bt docs)
  • Use entity_category in litterrobot (@natekspencer – #59074) (litterrobot docs)
  • Add tests for KNX light (@farmio – #58912) (knx docs)
  • Add tests for KNX scene (@marvin-w – #58900) (knx docs)
  • Add test for KNX weather entity (@marvin-w – #58898) (knx docs)
  • Revamp nest authentication config flows and remove need for redirect urls (@allenporter – #59033) (nest docs)
  • Remove unused KeywordStyleAdapter (@emontnemery – #59091)
  • Improve recorder migration tests (@emontnemery – #59075) (recorder docs)
  • Use zeroconf attributes in enphase-envoy (@epenet – #58961) (enphase_envoy docs)
  • Move async_migration_in_progress (@emontnemery – #59087) (recorder docs) (hassio docs) (homeassistant docs)
  • Adjust recorder tests according to #59087 (@emontnemery – #59143) (recorder docs)
  • Add binary_sensor to venstar to track alerts (@garbled1 – #58831) (venstar docs) (new-platform)
  • Bump pyhaversion from 21.10.0 to 21.11.1 (@ludeeus – #59147) (version docs)
  • Use entity category in devolo Home Control (@Shutgun – #59104) (devolo_home_control docs)
  • Type vlc_telnet strictly (@MartinHjelmare – #59154) (vlc_telnet docs)
  • Address venstar review comments (@marvin-w – #59151) (venstar docs)
  • Add zwave_js select entity category (@MartinHjelmare – #59157) (zwave_js docs) (breaking-change)
  • Add configuration URL to Spider (@peternijssen – #59171) (spider docs)
  • Tests for the Fronius integration (@farmio – #57269) (fronius docs)
  • Fix regression after merging fixtures with old path (@marvin-w – #59187) (fronius docs)
  • Bump pyefergy to 0.1.4 (@tkdrob – #59219) (efergy docs)
  • Bump aiolyric to v1.0.8 (@timmo001 – #59228) (lyric docs)
  • Bump systembridge to v2.2.1 (@timmo001 – #59229) (system_bridge docs)
  • Bump RMVtransport to v0.3.3 (@cgtobi – #59210) (rmvtransport docs)
  • Reduce code duplication in gogogate2 (@bdraco – #59165) (gogogate2 docs)
  • add constant CONF_SLEEP_PERIOD (@mib1185 – #59195) (shelly docs)
  • Upgrade numpy to 1.21.4 (@frenck – #59188) (opencv docs) (tensorflow docs) (trend docs) (iqvia docs) (compensation docs)
  • Fix typing in devolo Home Network (@Shutgun – #59238) (devolo_home_network docs)
  • Address post-merge Ridwell code review (@bachya – #58857) (ridwell docs)
  • Add decoded telegram payload to knx_event service (@farmio#57621) (knx docs) (breaking-change)
  • Add RDW Vehicle information integration (@frenck – #59240) (rdw docs) (new-integration)
  • Remove deprecated usages of HomeAssistantType (@marvin-w – #59241) (rfxtrx docs) (netgear docs)
  • Rewrite signal_messenger unittest to pytest (@arozans – #57777) (signal_messenger docs)
  • Bump pyEmby to 1.8 (@mezz64 – #59267) (emby docs)
  • Fix typing issues – wallbox.number (@cdce8p – #59286) (wallbox docs)
  • Fix udp ports (@micha91 – #59293) (yamaha_musiccast docs)
  • Upgrade async-upnp-client to 0.22.12 (@frenck – #59284) (upnp docs) (yeelight docs) (dlna_dmr docs) (ssdp docs)
  • Add support for matching the zeroconf model property (@bdraco – #58922) (zeroconf docs)
  • Clean up transmission empty containers evaluation (@jshank – #59304) (transmission docs)
  • Bump up ZHA dependencies (@Adminiuga – #59314) (zha docs)
  • Improve support for flux_led pixel/RBM controllers (@bdraco – #59325) (flux_led docs)
  • Change zone HVAC mode in Advantage Air (@Bre77 – #52816) (advantage_air docs) (breaking-change)
  • Add long-term statistics support for homematic sensors (@chriss158 – #57396) (homematic docs)
  • Add MQTT object_id option (@Smeagolworms4 – #58728) (mqtt docs) (humidifier docs)
  • Allow overriding ensure_ascii in the “to_json” template filter (@koying – #54527)
  • Correct name of end apc sensor (@mib1185 – #59200) (apcupsd docs)
  • Use DeviceInfo in velbus (@epenet – #58622) (velbus docs)
  • Add Evil Genius Labs integration (@balloob – #58720) (evil_genius_labs docs) (new-integration)
  • System Bridge – Add configuration URL (@timmo001 – #59320) (system_bridge docs)
  • Set tradfri entities to non-available when hub is not available (@janiversen – #59278) (tradfri docs)
  • Add Water Content Measurement clusters (@majkrzak – #59300) (zha docs)
  • Bump pytradfri to v7.2.0. (@janiversen#59342) (tradfri docs)
  • Cleanup Shelly light – use separate sets for dual mode and effects (@thecode – #59363) (shelly docs)
  • Add Shelly Gen1 beta_version attribute to firmware update sensor (@thecode – #59359) (shelly docs)
  • Fix statistics startup error for None value states (@ThomDietrich – #59199) (statistics docs)
  • Fix statistics precision handling (@ThomDietrich – #59202) (statistics docs)
  • Use zeroconf attributes in freebox (@epenet – #58967) (freebox docs)
  • Add tests for goalzero (@tkdrob – #57008) (goalzero docs)
  • System Bridge – Handle OSError for switched off devices (@timmo001 – #59312) (system_bridge docs)
  • Store SB data Class. (@RenierM26#59266) (switchbot docs)
  • Switchbot bump api version (@RenierM26 – #59398) (switchbot docs)
  • Add state class to Coinbase sensors (@TomBrien – #59109) (coinbase docs)
  • Add speed conversion function & add speed to units system (@rianadon – #53846) (met docs) (nws docs) (climacell docs) (met_eireann docs)
  • Dyson removal (@epenet – #59401) (dyson docs) (breaking-change)
  • IOTA removal (@lambtho12 – #59380) (iota docs) (breaking-change)
  • Removing trailing in tts entity description (@howardjohn – #59313) (tts docs)
  • Bump aioasuswrt to 1.4.0 (@Chen-IL – #59357) (asuswrt docs)
  • Return False from state conditions on missing attributes (@emontnemery – #59405)
  • Revert “Add tests for goalzero” (@tkdrob – #59407) (goalzero docs)
  • Add MQTT button (@emontnemery – #59348) (mqtt docs)
  • Don’t use template in cover device condition (@emontnemery – #59408) (cover docs)
  • Add category diagnostic to Switchbot ‘calibrated’ binary sensor (@DCSBL – #59409) (switchbot docs)
  • Change Coinbase account state class to total (@TomBrien – #59404) (coinbase docs)
  • Catch connection errors that makes tradfri hang in startup (@janiversen – #59368) (tradfri docs)
  • Remove const.HTTP_* status constants (@scop – #58380) (breaking-change)
  • Bump pycfdns from 1.2.1 to 1.2.2 (@ludeeus – #59416) (cloudflare docs)
  • Bump pyuptimerobot from 21.9.0 to 21.11.0 (@ludeeus – #59418) (uptimerobot docs)
  • Simplify setup of tradfri entities (@janiversen – #59343) (tradfri docs)
  • Bump pylaunches from 1.0.0 to 1.2.0 (@ludeeus – #59420) (launch_library docs)
  • Remove unneeded dynamic lookup of domain (@emontnemery – #59423) (wake_on_lan docs) (template docs) (lg_netcast docs)
  • Add periods to statistics_during_period ws (@bramkragten – #59425) (history docs)
  • Bump pytautulli from 21.10.0 to 21.11.0 (@ludeeus – #59426) (tautulli docs)
  • Bump pytraccar from 0.9.0 to 0.10.0 (@ludeeus – #59429) (traccar docs)
  • Update python-ecobee-api to 0.2.14 (@bjpetit – #59381) (ecobee docs)
  • Improve Shelly color mode switch for dual mode bulbs (@g-kiss – #58971) (shelly docs)
  • Add entity categories to most NUT entities (@drthanwho – #58798) (nut docs)
  • Add zwave_js binary sensor entity category (@MartinHjelmare – #58703) (zwave_js docs) (breaking-change)
  • Move onewire device compatibility checks (@epenet – #59338) (onewire docs)
  • Fix CORS (@bramkragten – #59360) (http docs)
  • Upgrade colorlog to 6.6.0 (@frenck – #59440)
  • Upgrade debugpy to 1.5.1 (@frenck – #59436) (debugpy docs)
  • Bump zigpy-znp from 0.5.4 to 0.6.1 (@puddly – #59442) (zha docs)
  • Bump pyefergy to 0.1.5 (@tkdrob – #59439) (efergy docs)
  • Bump goalzero to 0.2.1 (@tkdrob – #59437) (goalzero docs)
  • Upgrade pipdeptree to 2.2.0 (@frenck – #59438)
  • Use unknown state for octoprint temperature sensors with None value (@rfleming71 – #59130) (octoprint docs)
  • Allow dict as input to zwave_js.set_value service (@kreene1987 – #59370) (zwave_js docs)
  • Huawei LTE sensor updates (@scop – #59374) (huawei_lte docs)
  • Remove ‘UnicodeDecodeError’ exception in AsusWrt (@ollo69 – #59447) (asuswrt docs)
  • Minor refactor of template binary sensor (@emontnemery – #59432) (template docs)
  • Bump google-nest-sdm to 0.3.9 (@allenporter – #59458) (nest docs)
  • Mqtt cover toggle add stop function (@CubieMedia – #59233) (cover docs)
  • Add support for PRESSURE_CBAR (centibars) (@garbled1 – #58762) (onewire docs)
  • Upgrade jinja2 to 3.0.3 (@frenck – #59468)
  • Add Azure DevOps coordinator and entity description (@timmo001 – #54978) (azure_devops docs)
  • Remove resources selection from Nut config flow (@ollo69 – #59450) (nut docs)
  • Rename zeroconf service info (@epenet – #59467)
  • Gogogate2 Battery Sensor Should Use % Unit For Compatibility (@NickM-27 – #59434) (gogogate2 docs)
  • Google Cast: Use own media player app (@bramkragten – #55524) (google_assistant docs) (cast docs)
  • Add Button platform to KNX integration (@farmio – #59082) (knx docs)
  • Bump sqlalchemy to 1.4.26 (@bdraco – #59527) (recorder docs) (sql docs)
  • Make yaml file writes safer (@bdraco – #59384) (config docs)
  • Upgrade pyupgrade to v2.29.0 (@frenck – #59499)
  • Add binary sensor platform to RDW Vehicle information (@frenck – #59253) (rdw docs) (new-platform)
  • Add button entity platform (restart button) to WLED (@frenck – #59086) (wled docs)
  • Make util.color._match_max_scale public (@farmio – #59207)
  • Suppress media status when the lovelace cast app is active (@emontnemery – #59481) (cast docs)
  • Minor refactor of template sensor (@emontnemery – #59466) (template docs)
  • Minor refactor of energy validator (@emontnemery – #58209) (recorder docs) (energy docs)
  • Set PARALLEL_UPDATES for ping binary sensor (@mynameisdaniel32 – #59524) (ping docs)
  • Improve test coverage (@emontnemery – #59531) (cast docs)
  • Make some device action tests more explicit (@emontnemery – #59469) (cover docs) (light docs) (alarm_control_panel docs)
  • Don’t allow turning on audio only chromecasts (@emontnemery – #59495) (cast docs)
  • Add tests to bring greeneye_monitor to 99% coverage (@jkeljo – #58661) (greeneye_monitor docs)
  • Velbus typing part 2 (@Cereal2nd – #59148) (velbus docs)
  • Drop STEP_ID constants from data_entry_flow (@epenet – #59497) (acmeda docs) (control4 docs)
  • Add available property to statistics component (@ThomDietrich – #59203) (statistics docs)
  • Bump cryptography 35.0.0 (@pvizeli – #59541)
  • Test sensor unit conversion (@emontnemery – #59546) (sensor docs)
  • Fix KNX climate entities hvac action without controller_mode (@farmio – #59522) (knx docs)
  • Bump crownstone-cloud to v1.4.9 (@RicArch97 – #59500) (crownstone docs)
  • Upgrade coverage to 6.1.2 (@frenck – #59530)
  • Add tilt support to bond covers (@bdraco – #59505) (bond docs)
  • Bump async_timeout to 4.0.1 (@bdraco – #59565)
  • Fix CORS error in emulated_hue (@balloob – #59570) (emulated_hue docs) (http docs)
  • Fix issue with ranges in requirements with hassfest (@ludeeus – #59470)
  • Block cloud explicitely from trusted networks (@balloob – #59333)
  • Add Nut device explicitly to the device registry (@ollo69 – #59525) (nut docs)
  • Add ZigStar Zigbee Coordinator audodiscovery (@mercenaruss – #59559) (zha docs)
  • Bump aiogithubapi from 21.8.0 to 21.11.0 (@ludeeus – #59582) (github docs)
  • Add Jellyfin integration (@j-stienstra – #44401) (jellyfin docs) (new-integration)
  • Correct end time for monthly statistics summary (@emontnemery – #59551) (recorder docs)
  • Update vehicle to 0.2.0 (@frenck – #59583) (rdw docs)
  • Update elgato to 2.2.0 (@frenck – #59585) (elgato docs)
  • Cleanup extra dict from hass data in Elgato (@frenck – #59587) (elgato docs)
  • Bump Airthings library (@Danielhiversen – #59595) (airthings docs)
  • Bump Adax library (@Danielhiversen – #59592) (adax docs)
  • Bump pyMetno to 0.9.0 (@Danielhiversen – #59609) (met docs)
  • Revert “Bump async_timeout to 4.0.1” (@bdraco – #59601)
  • Bump open-garage to 0.2.0 (@Danielhiversen – #59608) (opengarage docs)
  • Upgrade twentemilieu to 0.4.2 (@frenck – #59599) (twentemilieu docs)
  • Remove unused stream_type attribute (@allenporter – #59625) (camera docs)
  • Add System Bridge keyboard services (@timmo001 – #53893) (system_bridge docs)
  • Remove yaml config from modem_callerid (@tkdrob – #59526) (modem_callerid docs) (breaking-change)
  • Add button platform to Elgato (@frenck – #59628) (elgato docs)
  • Add configuration URL for Ambient PWS (@bachya – #59616) (ambient_station docs)
  • Fix broken Ambient PWS config entry migration (@bachya – #59618) (ambient_station docs)
  • Fix inverted tuya doorcontact_state (@hudcap – #59427) (tuya docs)
  • Upgrade wled to 0.9.0 (@frenck – #59635) (wled docs)
  • Modernize/Simplify Twente Milieu (@frenck – #59632) (twentemilieu docs) (breaking-change)
  • Upgrade pytest-timeout to 2.0.1 (@frenck – #59646)
  • Switchbot “in memory” state for push mode switch (@RenierM26 – #58750) (switchbot docs)
  • Update sense library version number (@kbickar – #59454) (sense docs) (emulated_kasa docs)
  • Update xknx to 0.18.13 (@farmio – #59658) (knx docs)
  • Add TP-Link LED control for Kasa plugs and strips (@XaF – #59621) (tplink docs)
  • Bump pymysensors to 0.22.1 (@gorbunovav – #59521) (mysensors docs)
  • Check early for empty passages in delijn (@ericvb – #59612) (delijn docs)
  • Handle KeyError in getuser (@ludeeus – #59667)
  • Remove mychevy component (@sdague – #59629) (mychevy docs) (breaking-change)
  • Add test coverage to Twente Milieu (@frenck – #59640) (twentemilieu docs)
  • Bump pyezviz to 0.1.9.8 (@regevbr – #58873) (ezviz docs)
  • Add configuration_url to deCONZ device when entry source is addon (@Kane610 – #59598) (deconz docs)
  • Fix ESPHome state watching when new state is None (@jesserockz – #59528) (esphome docs)
  • Pass exit code to s6-init (@agners – #59545)
  • Fix unpatched timeout in gree config flow tests (@tkdrob – #59449) (gree docs)
  • Add Toon Humidity Sensor (@tizzen33 – #59488) (toon docs)
  • Add Camila, a missing Amazon Polly voice for Brazilian Portuguese (@arthurgeek – #59346) (amazon_polly docs)
  • Check Honeywell Lyric token is valid before updating data (@timmo001 – #59310) (lyric docs)
  • Add entity categorisation to AVM Fritz!Smarthome devices (@mib1185 – #59287) (fritzbox docs)
  • Bump pykodi to 0.2.7 (@csgitmeup – #59251) (kodi docs)
  • Drop block on local proxies from HA Cloud (@balloob – #59334) (cloud docs)
  • Fix IAD and vis for DS2438 1wire sensor (@JumpmanJunior – #59126) (onewire docs)
  • Update surepetcare services.yaml (@flyize – #58892) (surepetcare docs)
  • Set MaxCube Climate properties using class attr properties (@petslane – #58910) (maxcube docs)
  • Perform some RainMachine code cleanup (@bachya – #58865) (rainmachine docs)
  • Perform some OpenUV code cleanup (@bachya – #58864) (openuv docs)
  • Perform some Guardian code cleanup (@bachya – #58861) (guardian docs)
  • Perform some Notion code cleanup (@bachya – #58863) (notion docs)
  • Perform some Flu Near You code cleanup (@bachya – #58860) (flunearyou docs)
  • Perform some IQVIA code cleanup (@bachya – #58862) (iqvia docs)
  • Refactor nest test ConfigEntry setup in config flow tests (@allenporter – #59459) (nest docs)
  • Perform some ReCollect Waste code cleanup (@bachya – #58866) (recollect_waste docs)
  • Add typing to deCONZ Scene platform and deCONZ Services (@Kane610 – #59603) (deconz docs)
  • Add smartthings configuration_url (@tkdrob – #58676) (smartthings docs)
  • Set measurement entity_class for darksky temp & humidity (@jjlawren – #59512) (darksky docs)
  • Upgrade wled to 0.10.0 (@frenck – #59669) (wled docs)
  • Use octoprint printer flag status to check if printer is printing (@rfleming71 – #59663) (octoprint docs)
  • Pre-factor nest subscriber to library (@allenporter – #59462) (nest docs)
  • bump total_connect_client to 2021.11.4 (@austinmroczek – #59695) (totalconnect docs)
  • Bump philips js to 2.7.6 (@elupus – #59690) (philips_js docs)
  • fix(luftdaten): air pressure is reported in pascal instead of hecto pascal (@muggenhor – #59687) (luftdaten docs)
  • Use atomicwrites for mission critical core files (@bdraco – #59606) (config docs) (network docs)
  • Bump simplisafe-python to 2021.11.0 (@bachya – #59692) (simplisafe docs)
  • Correct initial update of async_track_template_result (@emontnemery – #59705) (template docs)
  • Fix telnet fast state update (@zentale – #59681) (telnet docs)
  • Add frequency device class for sensor (@epenet – #59700) (sensor docs)
  • Bump pychromecast to 9.4.0 (@emontnemery – #59716) (cast docs)
  • Add button entities to Renault (@epenet – #59383) (renault docs) (breaking-change)
  • Fix relative import in MySensors (@hypnosiss – #59710) (mysensors docs)
  • Add Reauth flow to Wallbox integration (@hesselonline – #58743) (wallbox docs)
  • Add unique id’s to Vallox entities (@viiru- – #58459) (vallox docs)
  • Adjust async_step_zeroconf signature for strict typing (@epenet – #59503)
  • Replace util.get_local_ip in favor of components.network.async_get_source_ip() – part 4 (@chemelli74 – #58669) (http docs) (breaking-change)
  • Fix totalconnect config flow (@austinmroczek – #59461) (totalconnect docs)
  • Bump Tibber library to 0.21.0 (@Danielhiversen – #59732) (tibber docs)
  • Use zeroconf attributes in elgato (@epenet – #58958) (elgato docs)
  • Add button to litterrobot (@natekspencer – #59734) (litterrobot docs) (breaking-change)
  • Show cast as playing when an app without media support is active (@emontnemery – #59714) (cast docs)
  • Use zeroconf attributes in forked-daapd (@epenet – #58966) (forked_daapd docs)
  • Use zeroconf attributes in esphome (@epenet – #58963) (esphome docs)
  • Fix KNX rgb(w) color (@farmio – #51060) (knx docs)
  • Use ZeroconfServiceInfo in doorbird (@epenet – #59737) (doorbird docs)
  • Use ZeroconfServiceInfo in guardian (@epenet – #59741) (guardian docs)
  • Use ZeroconfServiceInfo in freebox (@epenet – #59739) (freebox docs)
  • Fix KNX individual light tests (@farmio – #59749) (knx docs)
  • Adjust async_step_homekit signature for strict typing (@epenet – #59745) (tradfri docs) (rainmachine docs) (nanoleaf docs)
  • Add support for property attribute shorthand in Fan entity (@mib1185 – #59649) (fan docs)
  • Upgrade spotipy to 2.19.0 (@frenck – #59728) (spotify docs)
  • Allow triggering on all state changes, ignoring attributes (@emontnemery – #59713) (homeassistant docs)
  • Use ZeroconfServiceInfo in bosch_shc (@epenet – #58957) (bosch_shc docs)
  • Perform some Ambient PWS code cleanup (@bachya – #58859) (ambient_station docs)
  • Adjust async_step_dhcp signature for strict typing (@epenet – #59751) (dhcp docs)
  • Add typing to deCONZ Fan and Light platforms (@Kane610 – #59607) (deconz docs)
  • Adjust async_step_mqtt signature for strict typing (@epenet – #59761) (mqtt docs) (gogogate2 docs)
  • Removed deprecated “device_state_attributes” for Amberelectric (@chemelli74 – #59672) (amberelectric docs)
  • Add topic_template for mqtt.publish (@davidjb – #53743) (mqtt docs)
  • Add Hive Alarm Support (@KJonline – #59670) (hive docs) (new-platform)
  • Add tests for goalzero (@tkdrob – #59446) (goalzero docs)
  • Fix mqtt undefined error (@tkdrob – #59787) (mqtt docs)
  • Add type hints to Siren and Switch deCONZ platforms (@Kane610 – #59602) (deconz docs)
  • Always fire event for known devices in rfxtrx (@elupus – #58845) (rfxtrx docs)
  • Adjust async_step_usb signature for strict typing (@epenet – #59773) (modem_callerid docs) (zwave_js docs) (usb docs)
  • Add WLED firmware upgrade button (@frenck – #59793) (wled docs)
  • Add typing to deCONZ Alarm Control Panel and Binary Sensor platforms (@Kane610 – #59611) (deconz docs)
  • Refactor of Hue integration with full V2 support (@marcelveldt – #58996) (hue docs) (breaking-change) (new-integration)
  • Add entity_category to Rituals Entities (@milanmeu – #59756) (rituals_perfume_genie docs)
  • Use ZeroconfServiceInfo in enphase-envoy (@epenet – #59738) (enphase_envoy docs)
  • Add configuration_url to SMA integration (@rklomp – #59638) (sma docs)
  • Fix deCONZ climate offset display if offset is zero (@crabmanX – #59803) (deconz docs)
  • Bump motioneye-client to v0.3.12 (@dermotduffy – #59811) (motioneye docs)
  • Bump pychromecast to 10.1.0 (@emontnemery – #59719) (cast docs)
  • Enable basic type checking for cloud (@emontnemery – #55337) (cloud docs)
  • Upgrade black to 21.11b0 (@frenck – #59823)
  • Move creation of DeviceInfo outside try statement in SMA (@rklomp – #59821) (sma docs)
  • Bump zwave-js-server-python to 0.32.0 (@raman325 – #59727) (zwave_js docs)
  • Allow selection of statistics state characteristic (@ThomDietrich – #49960) (statistics docs)
  • Add more zwave_js binary sensor descriptions (@MartinHjelmare – #59474) (zwave_js docs) (breaking-change)
  • Prefer YAML config mode in Lovelace system_health (@ludeeus – #59835) (lovelace docs)
  • Add typing to deCONZ Climate and Cover platforms (@Kane610 – #59610) (deconz docs)
  • Add typing to deCONZ Number and Sensor platforms (@Kane610 – #59604) (deconz docs)
  • Add typing to deCONZ Lock and Logbook platforms (@Kane610 – #59605) (deconz docs)
  • bump motionblinds to 0.5.8 (@starkillerOG – #59834) (motion_blinds docs)
  • Add explicit unit mapping for zwave_js meters and sensors (@raman325 – #59659) (zwave_js docs)
  • Bump frontend to 20211117.0 (@balloob – #59851) (frontend docs)
  • Ensure last_event_sensor_type in SimpliSafe entities is lowercased (@bachya – #59864) (simplisafe docs)
  • Bump Nettigo Air Monitor backend library (@bieniu – #59675) (nam docs)
  • Bump pysma to 0.6.9 (@rklomp – #59848) (sma docs) (breaking-change)
  • Add input_number state to prometheus metrics (@alim4r – #56507) (prometheus docs)
  • Remove the need for generics in greeneye_monitor.sensor (@jkeljo – #58782) (greeneye_monitor docs)
  • Remove -bb option from tox and ci (@uvjustin – #59846)
  • Bump actions/setup-python from 2.2.2 to 2.3.0 (@dependabot – #59873)
  • Update minio dependency to 5.0.10 (@tkislan – #59878)
  • Bump httpx from 0.19.0 to 0.21.0 (@uvjustin – #59723)
  • Don’t mock all of pychromecast in tests (@emontnemery – #59839) (cast docs)
  • Upgrade sentry-sdk to 1.5.0 (@frenck – #59842) (sentry docs)
  • Sort some entity_registry code (@emontnemery – #59876) (config docs)
  • Scsgate logging from warn(deprecated) to warning (@chemelli74 – #59862) (scsgate docs)
  • Add cover platform to bosch_shc integration (@tschamm – #51443) (bosch_shc docs) (new-platform)
  • Add datetime object as valid StateType (@frenck – #52671) (breaking-change)
  • Small tweak of TriggerEntity typing (@emontnemery – #59875) (template docs)
  • Fix Nissan Leaf default states (@bwduncan – #59866) (nissan_leaf docs)
  • Use correct Nissan leaf device_class (@bwduncan – #59889) (nissan_leaf docs)
  • Use native datetime value in ESPHome sensors (@frenck – #59896) (esphome docs)
  • Use native date value in Twente Milieu sensors (@frenck – #59897) (twentemilieu docs)
  • Move Kostal Plenticore writable settings from sensor to select widget or switch (@slowflyer – #56529) (kostal_plenticore docs) (breaking-change) (new-platform)
  • Add speed to units system (@rianadon – #58437) (met docs) (nws docs) (climacell docs) (met_eireann docs)
  • Use native date value in Renault sensors (@epenet – #59900) (renault docs)
  • Add type hints to SSDP (@epenet – #59840) (ssdp docs) (breaking-change)
  • Ensure powerview setup is retried on 502 error (@bdraco – #59847) (hunterdouglas_powerview docs)
  • Add minor version support to storage.Store (@emontnemery – #59882)
  • Fix shorthand native value type in sensor entity component (@frenck – #59908) (sensor docs)
  • Add additional bulb ouis to flux_led (@bdraco – #59868) (flux_led docs)
  • Use ZeroconfServiceInfo in gogogate2 (@epenet – #59746) (gogogate2 docs)
  • Use native datetime value in Forecast Solar sensors (@frenck – #59913) (forecast_solar docs)
  • Use native datetime value in Tasmota sensors (@frenck – #59915) (tasmota docs)
  • Use native datetime value in Jewish Calendar sensors (@frenck – #59917) (jewish_calendar docs)
  • Use native datetime value in Uptime sensors (@frenck – #59916) (uptime docs)
  • Use native datetime value in WLED sensors (@frenck – #59907) (wled docs)
  • Use native datetime value in RDW sensors (@frenck – #59914)
  • Use native datetime value in OctoPrint sensors (@frenck – #59927) (octoprint docs)
  • Yeelight add state check to set_mode service (@starkillerOG – #59884) (yeelight docs)
  • Brunt package update with async, data update coordinator and config flow (@eavanvalkenburg – #49714) (brunt docs) (breaking-change)
  • Remove zwave_js cover workaround (@pail23 – #59939) (zwave_js docs)
  • Add apparent_power for ZHA ElectricalMeasurement (@N0ciple – #59857) (zha docs)
  • Bump zeroconf to 0.37.0 (@bdraco – #59932) (zeroconf docs)
  • Migrate appropriate Ridwell sensors to use datetime state objects (@bachya – #59944) (ridwell docs)
  • Use an assumed switch state until refresh callback is complete (@natekspencer – #59805) (litterrobot docs)
  • Mill local access (@Danielhiversen – #59549) (mill docs)
  • Use native datetime value in UniFi sensors (@frenck – #59926) (unifi docs)
  • Use native datetime value inMobile App sensors (@frenck – #59945) (mobile_app docs)
  • Prevent executor overload when starting many homekit instances (@bdraco – #59950) (homekit docs)
  • Add energy support to Neurio_Energy (@deftdawg – #54445) (neurio_energy docs)
  • Add accumulated precipitation to unit system (@rianadon – #59657)
  • Optimise use of ZeroconfServiceInfo (@epenet – #59966) (freebox docs) (forked_daapd docs)
  • Use DhcpServiceInfo in guardian tests (@epenet – #59970) (guardian docs)
  • Use DhcpServiceInfo in goalzero tests (@epenet – #59969) (goalzero docs)
  • Use DhcpServiceInfo in gogogate2 (@epenet – #59968) (gogogate2 docs)
  • Use DhcpServiceInfo in broadlink (@epenet – #59961) (broadlink docs)
  • Upgrade pyatmo to 6.2.0 (@frenck – #59975) (netatmo docs)
  • Use DhcpServiceInfo in flux_led (@epenet – #59967) (flux_led docs)
  • Use DhcpServiceInfo in emonitor (@epenet – #59965) (emonitor docs)
  • Use DhcpServiceInfo in dhcp tests (@epenet – #59962) (dhcp docs)
  • Bump entity_registry store version to 1.2 (@emontnemery – #59912)
  • Use ServiceInfo in hunterdouglas_powerview (@epenet – #59981) (hunterdouglas_powerview docs)
  • Use ZeroconfServiceInfo in homekit_controller (@epenet – #59979) (homekit_controller docs)
  • Use DhcpServiceInfo in isy994 (@epenet – #59982) (isy994 docs)
  • Yeelight disable polling (@starkillerOG – #59885) (yeelight docs)
  • Use ZeroconfServiceInfo in lutron_caseta (@epenet – #59988) (lutron_caseta docs)
  • Use ZeroconfServiceInfo in lookin (@epenet – #59987) (lookin docs)
  • Use ZeroconfServiceInfo in kodi (@epenet – #59984) (kodi docs)
  • Use ZeroconfServiceInfo in ipp (@epenet – #59983) (ipp docs)
  • Bump devolo_plc_api to 0.6.3 (@Shutgun – #59991) (devolo_home_network docs)
  • Fix late comment correcting kwargs should always be Any in deCONZ covers (@Kane610 – #59997) (deconz docs)
  • Bump Mill library (@Danielhiversen – #59995) (mill docs)
  • Correct supported_features and model for Mill (@Danielhiversen – #59996)
  • Migrate appropriate ReCollect Waste sensors to use datetime state objects (@bachya – #59943) (recollect_waste docs)
  • Migrate appropriate Ambient PWS sensors to use datetime state objects (@bachya – #59942) (ambient_station docs)
  • Add long-term statistics support for devolo Home Control (@Shutgun – #57612) (devolo_home_control docs)
  • Add configuration url to august (@bdraco – #60013) (august docs)
  • Add id constant for homekit discovery (@epenet – #59986) (zeroconf docs) (homekit_controller docs) (gogogate2 docs)
  • Address late review of kostal plenticore (@slowflyer – #59998) (kostal_plenticore docs)
  • Add config and options flow to KNX integration (@marvin-w#59377) (knx docs) (breaking-change)
  • Add integration filtering and error if core options to helpers.frame.report (@scop – #60009) (zeroconf docs)
  • Add harmony configuration url (@bdraco – #60014) (harmony docs)
  • Add WLED reverse effect switch (@frenck – #59778) (wled docs)
  • Code quality improvements for KNX integration (@marvin-w – #60024) (knx docs)
  • Add WLED Live Override controls (@frenck – #59783) (wled docs)
  • Add haa vendor extensions (@jaredhobbs – #59750) (homekit_controller docs)
  • KNX christmas cleaning #2 – remove old migrations (@marvin-w – #60026) (knx docs)
  • Add configuration_url to lutron_caseta (@bdraco – #60015) (lutron_caseta docs)
  • Use ZeroconfServiceInfo in hue (@epenet – #59980) (hue docs)
  • Add integration_entities template helper (@marcelveldt – #59841)
  • Fix for deviceless entities in Hue integration (@marcelveldt – #59820) (hue docs)
  • Add guard for already migrated Hue entity (@marcelveldt – #59930) (hue docs)
  • Bump aioshelly to 1.0.5 (@chemelli74 – #60058) (shelly docs)
  • Explicitly cast the SOMA API response to an integer (@Djelibeybi – #60071) (soma docs)
  • Use ZeroconfServiceInfo in rainmachine (@epenet – #60055) (rainmachine docs)
  • Bump google-nest-sdm to 0.4.0 (@allenporter – #60068) (nest docs)
  • Use ZeroconfServiceInfo in netatmo tests (@epenet – #60048) (netatmo docs)
  • Detail reason for ConfigEntryNotReady (@chemelli74 – #60062) (shelly docs)
  • Use ZeroconfServiceInfo in nam (@epenet – #60044) (nam docs)
  • Fix Sensors for HmIP-DLD (@danielperna84 – #59804) (homematic docs)
  • Improve coordinator for yale_smart_alarm (@gjohansson-ST – #54091) (yale_smart_alarm docs)
  • Add support for HEOS groups (@klada – #32568) (heos docs)
  • Use ZeroconfServiceInfo in nanoleaf (@epenet – #60045) (nanoleaf docs)
  • Use DhcpServiceInfo in roomba (@epenet – #60056) (roomba docs)
  • Use ZeroconfServiceInfo in rachio (@epenet – #60054) (rachio docs)
  • Use DhcpServiceInfo in powerwall (@epenet – #60051) (powerwall docs)
  • Use ZeroconfServiceInfo in octoprint (@epenet – #60049) (octoprint docs)
  • Use DhcpServiceInfo in nuki (@epenet – #60046) (nuki docs)
  • Use ZeroconfServiceInfo in modern_forms (@epenet – #60043) (modern_forms docs)
  • Use ZeroconfServiceInfo in roku (@epenet – #60053) (roku docs)
  • Use DhcpServiceInfo in axis (@epenet – #60092) (axis docs)
  • Use ZeroconfServiceInfo in nut (@epenet – #60047) (nut docs)
  • Use ZeroconfServiceInfo in sonos (@epenet – #60095) (sonos docs)
  • Use ZeroconfServiceInfo in smappee (@epenet – #60096) (smappee docs)
  • Use ServiceInfo in samsungtv tests (@epenet – #60097) (samsungtv docs)
  • Use ZeroconfServiceInfo in system_bridge (@epenet – #60102)
  • Use ZeroconfServiceInfo in shelly (@epenet – #60098) (shelly docs)
  • Use DhcpServiceInfo in screenlogic (@epenet – #60103) (screenlogic docs)
  • Use DhcpServiceInfo in somfy_mylink (@epenet – #60099) (somfy_mylink docs)
  • Use DhcpServiceInfo in squeezebox (@epenet – #60100)
  • Add climate platform to Shelly (@chemelli74 – #59712) (shelly docs) (new-platform)
  • Allow atome reauthentication on error (@jugla – #59452) (atome docs)
  • Use format_mac for AsusWRT ScannerEntity Mac Address (@ollo69 – #54959) (asuswrt docs)
  • Create new usb constants (@epenet – #60086) (usb docs)
  • Set Sonos availability based on activity and discovery (@jjlawren – #59994) (sonos docs)
  • Bump ezviz api 0.2.0.5 (@RenierM26 – #60090)
  • Fix bugs causing SimpliSafe entities to incorrectly show unavailable (@bachya – #59955) (simplisafe docs)
  • Improve some entity registry tests (@emontnemery – #59902) (config docs)
  • Use DhcpServiceInfo in verisure tests (@epenet – #60117) (verisure docs)
  • Use ZeroconfServiceInfo in volumio (@epenet – #60116) (volumio docs)
  • Use ZeroconfServiceInfo in tradfri (@epenet – #60112) (tradfri docs)
  • Use DhcpServiceInfo in tplink (@epenet – #60114) (tplink docs)
  • Use ZeroconfServiceInfo in tado (@epenet – #60111) (tado docs)
  • Cleanup customize API endpoint (@frenck – #59824) (config docs) (breaking-change)
  • Fix logger setting Yale Smart Living (@gjohansson-ST – #60033) (yale_smart_alarm docs)
  • Use ZeroconfServiceInfo in plugwise (@epenet – #60050) (plugwise docs)
  • Add binary sensor platform to WLED (@frenck – #59798) (wled docs) (new-platform)
  • Update CODEOWNERS for tradfri (@janiversen – #60023) (tradfri docs)
  • Add vicare config flow (@oischinger – #56691) (vicare docs) (breaking-change)
  • Use ServiceInfo in yeelight (@epenet – #60127)
  • Use ZeroconfServiceInfo in xiaomi_miio (@epenet – #60132) (xiaomi_miio docs)
  • Use ZeroconfServiceInfo in xiaomi_aqara (@epenet – #60131) (xiaomi_aqara docs)
  • Use ZeroconfServiceInfo in wled (@epenet – #60130) (wled docs)
  • Sensor: Handle local->UTC conversion and reject timezoneless timestamps (@frenck – #59971) (sensor docs)
  • Revert “Create new usb constants (#60086)” (@epenet – #60137) (usb docs)
  • Add support to entity registry for overriding device_class (@emontnemery – #59985) (config docs)
  • Add support for calculating daily and monthly fossil energy consumption (@emontnemery – #59588) (recorder docs) (energy docs)
  • Change device entry type to an StrEnum (@scop – #59940)
  • Improve startup of unavailable template entities (@emontnemery – #59827)
  • Upgrade aionanoleaf to 0.0.4 (@milanmeu – #60160)
  • Fix missing pending state for SimpliSafe (@bachya – #60151)
  • Fix bug with how SimpliSafe lock’s respond to websocket events (@bachya – #60152) (simplisafe docs)
  • Bump entity registry version to 1.3 (@emontnemery – #60164)
  • Add button support to HomeKit (@frenck – #60165) (homekit docs)
  • Add sensors to venstar integration (@garbled1 – #58851) (venstar docs) (new-platform)
  • Add Button platform to Nanoleaf (@milanmeu – #60169) (nanoleaf docs)
  • Add support for adjusting flux_led effects speed (@bdraco – #59679) (flux_led docs)
  • Include model name in flux_led discovery when available (@bdraco – #60105) (flux_led docs)
  • Bump frontend to 20211123.0 (@balloob – #60184) (frontend docs)
  • Alter RainMachine to enable/disable program/zones via separate switches (@bachya – #59617) (rainmachine docs) (breaking-change)
  • Remove legacy executor usage from HomeKit tests (@bdraco – #60180) (homekit docs)
  • Add button support to Google Assistant (@frenck – #60158) (google_assistant docs)
  • Use dataclass for MqttServiceInfo (@epenet – #60191) (mqtt docs) (breaking-change)
  • Bump actions/cache from 2.1.6 to 2.1.7 (@dependabot – #60189)
  • Remove via_device links when a device is removed (@emontnemery – #60153)
  • Use DeviceEntryType in non-typechecked code too (@scop – #58646)
  • Add GitHub Actions concurrency limits (@frenck – #60194)
  • GitHub Actions: Don’t run test suite if basic linters fails (@frenck – #60197)
  • Fix missing mocking (@chemelli74 – #60181) (samsungtv docs)
  • Use dataclass for DhcpServiceInfo (@epenet – #60136) (dhcp docs) (breaking-change)
  • Add Yamaha MusicCast zone specific devices (@micha91 – #58285) (yamaha_musiccast docs) (breaking-change)
  • Update ZeroconfServiceInfo in tests (a-f) (@epenet – #60212)
  • Adjust CI to split tests into 6 groups (@frenck – #60198)
  • Bump pychromecast to 10.1.1 (@emontnemery – #60214) (cast docs)
  • Update ZeroconfServiceInfo in tests (g-m) (@epenet – #60217) (lutron_caseta docs) (hue docs) (homekit_controller docs) (gogogate2 docs) (hunterdouglas_powerview docs) (modern_forms docs)
  • Use BaseServiceInfo inheritance in MqttServiceInfo (@epenet – #60207) (mqtt docs)
  • Bump zwave-js-server-python to 0.33.0 (@raman325 – #60213) (zwave_js docs)
  • Use native datetime value in Shelly sensors (@mib1185 – #60179) (shelly docs)
  • Add button support to Alexa (@frenck – #60163) (alexa docs)
  • Update ZeroconfServiceInfo in tests (n-t) (@epenet – #60219)
  • Use dataclass for UsbServiceInfo (@epenet – #60140) (usb docs) (breaking-change)
  • Update ZeroconfServiceInfo in tests (t-z) (@epenet – #60221) (tradfri docs) (xiaomi_aqara docs) (yeelight docs) (xiaomi_miio docs) (volumio docs) (wled docs)
  • Ensure homekit setup messages run in event loop (@bdraco – #60226) (homekit docs)
  • Split up yeelight code into multiple files (@bdraco – #59990) (yeelight docs)
  • Fully migrate to attribute shorthand in velbus (@Cereal2nd – #59797) (velbus docs)
  • Use native datetime value in Synology DSM sensors (@mib1185 – #60176) (synology_dsm docs)
  • Use native datetime value in AVM Fritz!Tools sensors (@mib1185 – #60233) (fritz docs)
  • Remove unneeded pylint disables (@scop – #60235) (knx docs) (environment_canada docs)
  • Add daikin sensor state class (@werkstrom – #60145) (daikin docs)
  • Use native datetime value in Systemmonitor sensors (@mib1185 – #60236) (systemmonitor docs)
  • Avoid errors when AirNow API does not return all expected pollutants (@asymworks – #60232) (airnow docs)
  • Consistent capitalization for Synology DSM entity names (@spacegaier – #60237) (synology_dsm docs)
  • Use MqttServiceInfo in tasmota (@epenet – #60113) (tasmota docs)
  • Use native datetime value in MQTT sensors (@frenck – #59923) (mqtt docs)
  • Limit homekit sources to prevent exceeding 100 limit (@bdraco – #59743) (homekit docs)
  • Bump librouteros version to 3.2.0 (@slackr31337 – #60066) (mikrotik docs)
  • Bumped version of wirelesstagpy to 0.8.0 (@sergeymaysak – #60125) (wirelesstag docs)
  • Bump device registry version to 1.2 (@emontnemery – #60199)
  • Reduce flux_led light turn on complexity (@bdraco – #60139) (flux_led docs)
  • Enable strict typing – wallbox (@cdce8p – #59301) (wallbox docs)
  • Add device registry entry for MetOffice (@avee87 – #58683) (metoffice docs)
  • Enable basic type checking for awair (@emontnemery – #55046) (awair docs)
  • Use native datetime value in IPP sensors (@mib1185 – #60234) (ipp docs)
  • Use dataclass for ZeroconfServiceInfo (@epenet – #60206) (breaking-change)
  • Add pi_hole entity “available_updates” (@andreasbrett – #56181) (pi_hole docs)
  • Use attribute shortcuts in Samsung TV integration (@mib1185 – #60171) (samsungtv docs)
  • Use pychromecast CastInfo type in cast integration (@emontnemery – #60205) (cast docs)
  • Add LED brightness for Xiaomi Miio ZA5 fan (@bieniu – #60134) (xiaomi_miio docs)
  • Use native datetime value in NAM uptime sensor (@bieniu – #60241) (nam docs)
  • Add hjjcy device category to Tuya integration (@skynetua – #60224) (tuya docs)
  • Run partial test suite in CI if core untouched (@frenck – #60230)
  • Make partial test suite not waiting for linters (@frenck – #60254)
  • Add slow tests list to VScode task code coverage (@chemelli74 – #60183)
  • Add partial codecov flag to CI to trigger carryforward coverage (@frenck – #60256)
  • Rewrite Fronius integration (@farmio – #59686) (fronius docs) (breaking-change)
  • Temporary disable partial runs in CI (@frenck – #60258)
  • Add configuration entities to Tuya Vacuum (sd) (@cvroque – #59936) (tuya docs)
  • Fix socket usage in Aprs test (@chemelli74 – #60253) (aprs docs)
  • Decouple BroadlinkDevice.available property (@felipediel – #58853) (broadlink docs)
  • Add stable ID to entity registry entries (@emontnemery – #60218)
  • Use UsbServiceInfo in modem_callerid (@epenet – #60268) (modem_callerid docs)
  • Update base image 2021.11.0 (@pvizeli – #60227)
  • Change output template filters timestamp_local and timestamp_utc to isoformat (@jbouwh – #60269) (breaking-change)
  • Add UNIX timestamp detection to as_datetime template filter (@jbouwh – #60126)
  • Revert “Add type hints to SSDP (#59840)” (@epenet – #60270) (ssdp docs)
  • Correct entity category on UPS type in NUT (@frenck – #60277)
  • Add comments to entity category constants (@emontnemery – #60276)
  • Disable less popular Fronius entities by default (@farmio – #60264) (fronius docs)
  • Fix init slow tests for SamsungTV (@chemelli74 – #60245) (samsungtv docs)
  • Use configured speed ranges for HomeSeer FC200+ fan controllers in zwave_js (@mkowalchuk – #59697) (zwave_js docs) (breaking-change)
  • Fix Konnected multiple discovery of panels (@h2zero – #59953) (konnected docs)
  • CI: Combine smaller linters into a single job (@frenck – #60279)
  • Add additional statistics characteristics, remove attributes (@ThomDietrich#59867) (statistics docs)
  • Update ssdp matching_domain constant (@epenet – #60283) (ssdp docs) (breaking-change)
  • Use UsbServiceInfo and ZeroconfServiceInfo in zha (@epenet – #60266) (zha docs)
  • Use UsbServiceInfo in zwave-js (@epenet – #60267) (zwave_js docs)
  • Use UTC timestamp in uptime sensor (@frenck – #60240) (uptime docs)
  • Add bytes support for bitwise template operations (@jbouwh – #60211)
  • Partial CI workflows: take 2 (@frenck – #60294)
  • CI: Fix full suite on core file changes (@frenck – #60299)
  • CI: Fix test groups when running full CI suite (@frenck – #60300)
  • Use native datetime value in OpenWeatherMap sensors (@frenck – #60303)
  • Add support for adjusting effect brightness in flux_led (@bdraco – #60247) (flux_led docs)
  • Refactor zeroconf matching to be more DRY (@bdraco – #60293) (zeroconf docs)
  • Allow MQTT selects to have a single or no options (@emontnemery – #60281) (mqtt docs)
  • Bump openwrt-luci-rpc from 1.1.8 to 1.1.11 (@FaserF – #60124) (luci docs)
  • Add TOLO Sauna (tolo) integration (@MatthiasLohr – #55619) (tolosauna docs) (new-integration)
  • Add button platform to Tuya (@frenck – #60304) (tuya docs)
  • Add tolo light platform (@MatthiasLohr – #60305) (tolo docs) (new-platform)
  • Support numeric sensors with no unit_of_measurement in prometheus (@alim4r – #60157) (prometheus docs)
  • Make device entry disabled by an enum (@scop – #60239) (config docs)
  • Move sensor stuff to the sensor platform in Brother integration (@bieniu – #60306) (brother docs)
  • More tests optimizations for SamsungTV (@chemelli74 – #60297) (samsungtv docs)
  • Add wirelesstag ambient temperature sensor for Outdoor Probe (@sergeymaysak – #60243) (wirelesstag docs)
  • Fix BMW ConnectedDrive, update to My BMW API (@rikroe – #59881) (bmw_connected_drive docs) (breaking-change)
  • fix configuration url (@farmio – #60311) (fronius docs)
  • Use async_validate_actions_config helper in scripts (@emontnemery – #60287) (script docs)
  • Use DeviceEntryType in Metoffice (@avee87 – #60252) (metoffice docs)
  • Adjust async_step_discovery methods for BaseServiceInfo (@epenet – #60285)
  • Use random effect from flux_led library (@bdraco – #60312) (flux_led docs)
  • Introduce SsdpServiceInfo for ssdp discovery (@epenet – #60284) (ssdp docs) (arcam_fmj docs)
  • Replace returned STATE_UNKNOWN by None (@ThomDietrich – #60324) (statistics docs)
  • Fix image build issues (@pvizeli – #60319)
  • Add tolo sensor platform (@MatthiasLohr – #60308) (tolo docs) (new-platform)
  • Fix exception in august if bridge is missing (@bdraco – #60316) (august docs)
  • Add “nextchange” sensors to AVM FRITZ!Smarthome devices (@refinedcranberry – #58274) (fritzbox docs)
  • Update flux_led to use async_set_brightness in the lib (@bdraco – #60315) (flux_led docs)
  • CI: fix linters on partial runs with multiple components (@epenet – #60331)
  • Use SsdpServiceInfo for ssdp tests (part 1) (@epenet – #60320)
  • Add tolo select platform (@MatthiasLohr – #60326) (tolo docs)
  • Adjust/Fix CI coverage reporting (@frenck – #60329)
  • Remove unknown attribute instead of marking STATE_UNKNOWN (@ThomDietrich – #60325) (statistics docs)
  • Only accept valid hvac actions sent via mqtt (@Grennith – #59919) (mqtt docs)
  • Add missing MQTT lock.open (@Hypnos3 – #60022) (mqtt docs)
  • Add shorthand attribute support to Camera platform (@frenck – #59837) (camera docs) (demo docs)
  • Add Notifications for Android TV icon support (@redahb – #60159) (nfandroidtv docs) (breaking-change)
  • Use SsdpServiceInfo for ssdp tests (part 2) (@epenet – #60322) (axis docs) (octoprint docs) (yeelight docs) (nanoleaf docs) (ssdp docs)
  • CI: Only carry forward full-suite test coverage (@frenck – #60344)
  • Fix slow yeelight discovery test (@bdraco – #60346) (yeelight docs)
  • SSDP attributes can be present but empty (@epenet – #60340) (upnp docs) (hue docs) (wilight docs)
  • Use SsdpServiceInfo for ssdp tests (part 3) (@epenet – #60334)
  • Fix overridden state methods – camera (@cdce8p – #60352) (homekit_controller docs) (push docs)
  • Fix slow config_flow test in AVM Fritz!SmartHome (@mib1185 – #60348) (fritzbox docs)
  • Add Balboa Spa integration (@garbled1 – #59234) (balboa docs) (new-integration)
  • Fix slow config_flow test in bond (@mib1185 – #60355) (bond docs)
  • CI: Move bandit into the other linters job (@frenck – #60357)
  • Add support for flux_led 0xA2 devices (@bdraco – #60361) (flux_led docs)
  • Add commands to Tuya Vacuum (sd) (@cvroque – #60351) (tuya docs)
  • CI: GitHub Annotate slow tests in partial test runs (@frenck – #60359)
  • CI: Add partial run support to pyupgrade (@frenck – #60362)
  • Add tolo button platform (@MatthiasLohr – #60345) (tolo docs)
  • Import Callable from collections.abc (@cdce8p – #60354)
  • Fix slow config_flow test in Dune HD (@mib1185 – #60366) (dunehd docs)
  • Add tolo binary_sensor platform (@MatthiasLohr – #60365) (tolo docs) (new-platform)
  • Add configuration_url to AdGuard Home integration (@mdawsonuk – #60356) (adguard docs)
  • Fix slow config_flow test in squeezebox (@mib1185 – #60373) (squeezebox docs)
  • Fix slow config_flow test in Twinkly (@mib1185 – #60374) (twinkly docs)
  • Add configuration_url to Waze Travel Time (@mdawsonuk – #60376) (waze_travel_time docs)
  • Fix slow config_flow test in upnp (@mib1185 – #60377) (upnp docs)
  • Added configuration_url for Met Eireann integration (@mdawsonuk – #60380) (met_eireann docs)
  • Upgrade pylint to 2.12.1 (@cdce8p – #60375)
  • Use SsdpServiceInfo for SOURCE_SSDP tests (part 4) (@epenet – #60339) (upnp docs) (hue docs) (konnected docs) (denonavr docs) (ssdp docs) (wilight docs)
  • Fix slow config_flow test in devolo Home Network (@mib1185 – #60364) (devolo_home_network docs)
  • Added configuration_url to Met.no integration (@mdawsonuk – #60378) (met docs)
  • Update rokuecp to 0.8.4 (@ctalkington – #57259) (roku docs)
  • Add configuration_url to Nanoleaf integration (@mdawsonuk – #60372) (nanoleaf docs)
  • Bump sqlalchemy to 1.4.27 (@bdraco – #60383) (recorder docs) (sql docs)
  • Fix flux_led effect brightness in A2,A3 models (@bdraco – #60386) (flux_led docs)
  • Bump python-smarttub dependency to 0.0.28 (@mdz – #60391) (smarttub docs)
  • Remove myself as codeowner from Hue (@frenck – #60395) (hue docs)
  • Remove unused OrderedEnum (@emontnemery – #60392)
  • Add configuration_url to AccuWeather integration (@mdawsonuk – #60381) (accuweather docs)
  • Bump awesomeversion from 21.10.1 to 21.11.0 (@ludeeus – #60401)
  • Correct validation of conditions in scripts and automations (@emontnemery – #60403)
  • Correct validation of repeats in scripts and automations (@emontnemery – #60318)
  • Add button to trigger ota firmware update for Shelly devices (@mib1185 – #58757) (shelly docs)
  • Rename various usages of UniFi to better identify only UniFi Network (@AngellusMortis – #59568) (unifi docs)
  • Use mysensors child description as entity name (@bcelary – #60420) (mysensors docs)
  • Bump acmeda integration aiopulse dependency version to 0.4.3 (@atmurray – #60434) (acmeda docs)
  • Bump crownstone-sse to 2.0.3 (@RicArch97 – #60428) (crownstone docs)
  • Remove unused constant in Tibber (@Danielhiversen – #60439) (tibber docs)
  • Logging issue workaround for fritzconnection library (@chemelli74 – #60448) (fritz docs) (fritzbox_callmonitor docs)
  • Bump flux_led to 0.25.0 (@bdraco – #60460) (flux_led docs)
  • Bump flux_led to 0.25.1 (@bdraco – #60463) (flux_led docs)
  • Update PyTurboJPEG to v1.6.3 (@skandalfo – #60400) (camera docs)
  • don’t issue requests for non-existing devices (@farmio – #60416) (fronius docs)
  • Bump up ZHA dependencies (@Adminiuga – #60474) (zha docs)
  • Fix flux_led discovery missing responses (@bdraco – #60464) (flux_led docs)
  • Update buienradar library to 1.0.5 (@mjj4791 – #60473) (buienradar docs)
  • Fix Shelly dual mode bulb mode switch (@g-kiss – #60471) (shelly docs)
  • Remove store user as auth result (@balloob – #60468)
  • Update pymelcloud to 2.5.5 (@vilppuvuorinen – #60484) (melcloud docs)
  • Remove optional validation when creating conditions (@emontnemery – #60481)
  • Upgrade restrictedpython to 5.2 (@frenck – #60493) (python_script docs)
  • Fix climacell hourly and nowcast forecasts (@raman325 – #60454) (climacell docs)
  • Address late review of tolo integration (@MatthiasLohr – #60453) (tolo docs)
  • Bump wirelesstagpy to 0.8.1 (@sergeymaysak – #60472) (wirelesstag docs)
  • Add Tesla Wall Connector integration (@einarhauks – #60000) (tesla_wall_connector docs) (new-integration)
  • Add Yamaha MusicCast number entities (@micha91 – #60093) (yamaha_musiccast docs)
  • Fix docker prefix for meta image (@pvizeli – #60495)
  • Fix DeprecationWarning for asyncio.wait() in mysensors (@mib1185 – #60512) (mysensors docs)
  • Fix & update for latest Shelly Valve firmware (@chemelli74 – #60458)
  • Set internal quality_scale for the safe_mode integration (@ludeeus – #60526) (safe_mode docs)
  • Bump flux_led to 0.25.2 (@bdraco – #60519) (flux_led docs)
  • Replace Tibber STATE_CLASS_TOTAL_INCREASING with STATE_CLASS_TOTAL for not strictly increasing sensors (@Danielhiversen – #60501) (tibber docs)
  • Add zwave_js speed configurations for GE/Jasco 12730 and 14287 fans (@mkowalchuk – #60517) (zwave_js docs) (breaking-change)
  • Add configuration_url to bond (@bdraco – #60523) (bond docs)
  • 100% test coverage for Fronius integration (@farmio – #60515) (fronius docs)
  • Add removal versions and backcompat constants for device registry enum changes (@scop – #60421)
  • Esphome/button (@jesserockz – #60522) (esphome docs)
  • Redact ?auth= url parameters in stream sources when logged (@allenporter – #60438) (stream docs)
  • Fix missing name for ESPHome reauth dialog (@jesserockz – #60508) (esphome docs)
  • Remove obsolete light attributes from WLED (@frenck – #60535) (wled docs) (breaking-change)
  • Upgrade black to 21.11b1 (@frenck – #60532)
  • Upgrade coverage to 6.2.0 (@frenck – #60530)
  • Add ‘trigger’ support for MQTT Alarm Control Panel (@XaF – #60525) (mqtt docs)
  • Upgrade wled to 0.10.1 (@frenck – #60542) (wled docs)
  • Add native unit types for weather entities (@rianadon – #59533) (weather docs)
  • Remove custom WLED services (@frenck – #60537) (wled docs) (breaking-change)
  • Move Sonos bass & treble controls to number entities (@jjlawren – #60498) (sonos docs) (breaking-change)
  • Add get method to DhcpServiceInfo (@epenet – #60527) (dhcp docs)
  • Add new name handling for Shelly RPC devices (@chemelli74 – #60539) (shelly docs)
  • Add wiffi device configuration url support (@mampfes – #60367) (wiffi docs)
  • Remove configuration.yaml support for the velbus component (@Cereal2nd – #60411) (velbus docs) (breaking-change)
  • Fix brightness support for Tuya dimmers that use the Light (“dj”) category (@alexanv1 – #60385) (tuya docs)
  • Add Tuya Fingerbot device support (@PlusPlus-ua – #59880) (tuya docs)
  • Use find_coordinates in here_travel_time (@eifinger – #59938) (here_travel_time docs)
  • Bump aiopvpc to 2.2.4 to fix price sensor attributes for pvpc_hourly_pricing (@azogue – #60012) (pvpc_hourly_pricing docs)
  • Add sensors to Tesla Wall Connector Integration (@einarhauks – #60507) (tesla_wall_connector docs) (new-platform)
  • Use dataclass for SsdpServiceInfo (@epenet – #59931) (ssdp docs) (breaking-change)
  • Add tolo fan platform (@MatthiasLohr – #60502) (tolo docs) (new-platform)
  • Add get method to ZeroconfServiceInfo (@epenet – #60528) (zeroconf docs)
  • Use ZeroconfServiceInfo in vizio (@epenet – #60115) (vizio docs)
  • Correct recorder migration._add_columns for PostgreSQL (@emontnemery – #60547) (recorder docs)
  • Don’t wait for Google Assistant service calls when reporting state (@emontnemery – #59832) (google_assistant docs)
  • Add reboot button to Shelly devices (@mib1185 – #60417) (shelly docs)
  • Use correct value for current temperature for AVM Fritz!Smarthome thermostat devices (@mib1185 – #60510) (fritzbox docs)
  • Add button platform to NAM integration (@bieniu – #60410) (nam docs)
  • Add local only users (@balloob – #57598) (config docs) (auth docs)
  • Fix ingress for non admin (@ludeeus – #60120) (hassio docs)
  • Add device class support for button entity (@frenck – #60560) (button docs)
  • Fix Flo returning stale data (@dmulcahey – #60491) (flo docs)
  • Bump frontend to 20211129.0 (@balloob – #60564) (frontend docs)
  • Avoid probing configured ipp devices at discovery (@bdraco – #60551) (ipp docs)
  • Add an available property on Stream (@allenporter – #60429) (stream docs)
  • Use dataclass properties in arcam_fmj discovery (@epenet – #60562) (arcam_fmj docs)
  • Split StreamState class out of SegmentBuffer (@allenporter – #60423) (stream docs)
  • Update nest config flow to dramatically simplify end user setup with automated pub/sub subscription creation (@allenporter – #59260) (nest docs)
  • Add an entity service for saving nest event related snapshots (@allenporter – #58369) (camera docs) (nest docs)
  • Use dataclass properties in rainmachine discovery (@epenet – #60578) (rainmachine docs)
  • Use dataclass properties in system_bridge discovery (@epenet – #60576) (system_bridge docs)
  • Use dataclass properties in volumio discovery (@epenet – #60575) (volumio docs)
  • Use dataclass properties in apple_tv discovery (@epenet – #60557) (apple_tv docs)
  • Add configuration_url to integration (@klaasnicolaas – #60565) (p1_monitor docs)
  • Esphome button device class (@jesserockz – #60569) (esphome docs)
  • Bump actions/setup-python from 2.3.0 to 2.3.1 (@dependabot – #60572)
  • Use dataclass properties in octoprint discovery (@epenet – #60579) (octoprint docs)
  • Use dataclass properties in wled discovery (@epenet – #60573) (wled docs)
  • Use dataclass properties in roku discovery (@epenet – #60577) (roku docs)
  • Use dataclass properties in elgato discovery (@epenet – #60588) (elgato docs)
  • Use dataclass properties in nam discovery (@epenet – #60596) (nam docs)
  • Ensure ESPHome device classes are valid (@frenck – #60594)
  • Use dataclass properties in brother discovery (@epenet – #60601) (brother docs)
  • Use dataclass properties in devolo_home_control discovery (@epenet – #60600) (devolo_home_control docs)
  • Use dataclass properties in guardian discovery (@epenet – #60586) (guardian docs)
  • Use dataclass properties in lookin discovery (@epenet – #60585) (lookin docs)
  • Use dataclass properties in nut discovery (@epenet – #60603) (nut docs)
  • Use dataclass properties in modern_forms discovery (@epenet – #60584) (modern_forms docs)
  • Use dataclass properties in forked_daapd discovery (@epenet – #60587) (forked_daapd docs)
  • Use dataclass properties in daikin discovery (@epenet – #60589) (daikin docs)
  • Use dataclass properties in bosch_shc discovery (@epenet – #60559) (bosch_shc docs)
  • Use dataclass properties in bond discovery (@epenet – #60590) (bond docs)
  • Use dataclass properties in shelly discovery (@epenet – #60593) (shelly docs)
  • Use dataclass properties in smappee discovery (@epenet – #60602) (smappee docs)
  • Use dataclass properties in esphome discovery (@epenet – #60606) (esphome docs)
  • Use dataclass properties in devolo_home_network discovery (@epenet – #60608) (devolo_home_network docs)
  • Use dataclass properties in tradfri discovery (@epenet – #60592) (tradfri docs)
  • Add support for Kogan smart blinds to Tuya (@Chybby – #60552) (tuya docs)
  • Fix StrEnum backport return type issue (@frenck – #60610)
  • Migrate button device classes to StrEnum (@frenck – #60611) (esphome docs) (button docs)
  • Add button device classes to WLED (@frenck – #60613) (wled docs)
  • Migrate number mode to StrEnum (@frenck – #60614) (knx docs) (demo docs) (flux_led docs) (number docs) (breaking-change)
  • Add mqtt sensor configurable state encoding for sensor and binary_sensor platform (@jbouwh – #60447) (mqtt docs)
  • Allow template int filter to render from a bytes based integer (@jbouwh – #60452)
  • Fix device class shorthand attr in ButtonEntity (@frenck – #60622) (button docs)
  • Support unit of measurement in ESPHome numbers (@jesserockz – #60591) (esphome docs)
  • Add button device classes to HomeKit Controller (@frenck – #60620) (homekit_controller docs)
  • Add button device classes to Shelly (@frenck – #60625) (shelly docs)
  • Fix test naming switch (@jbouwh – #60630) (mqtt docs)
  • Use dataclass properties in enphase_envoy discovery (@epenet – #60627) (enphase_envoy docs)
  • Use dataclass properties in plugwise discovery (@epenet – #60631) (plugwise docs)
  • Use dataclass properties in homekit_controller discovery (@epenet – #60626) (homekit_controller docs)
  • Add button device classes to MQTT (@frenck – #60628) (mqtt docs)
  • Remove homekit_controller’s air quality entity in favor of separate sensor entities (@Jc2k – #60480) (homekit_controller docs) (breaking-change)
  • Revert “Add an entity service for saving nest event related snapshots” (@allenporter – #60632) (nest docs)
  • Use dataclass properties in hunterdouglas discovery (@epenet – #60605) (hunterdouglas_powerview docs)
  • Use dataclass properties in kodi discovery (@epenet – #60634) (kodi docs)
  • Add return type annotation to StrEnum (@cdce8p – #60624)
  • Use dataclass properties in freebox discovery (@epenet – #60635) (freebox docs)
  • Use dataclass properties in xiaomi_aqara discovery (@epenet – #60636) (xiaomi_aqara docs)
  • Use dataclass properties in hue discovery (@epenet – #60598) (hue docs)
  • Correct Temper USB sensor IoT class (@davet2001 – #60619) (temper docs)
  • Use dataclass properties in tado discovery (@epenet – #60641) (tado docs)
  • Use dataclass properties in rachio discovery (@epenet – #60637) (rachio docs)
  • Use dataclass properties in doorbird discovery (@epenet – #60639) (doorbird docs)
  • Binary sensor platform for the Balboa Spa (@garbled1 – #60409) (balboa docs) (new-platform)
  • Use dataclass properties in nanoleaf discovery (@epenet – #60580) (nanoleaf docs)
  • Use dataclass properties in sonos discovery (@epenet – #60633) (sonos docs)
  • Use dataclass properties in gogogate2 discovery (@epenet – #60607) (gogogate2 docs)
  • Change unnecessary Sonos coroutine to callback (@jjlawren – #60643) (sonos docs)
  • Hue handle device update (@marcelveldt – #60612) (hue docs)
  • Remove running binary_sensor for HAOS (@ludeeus – #60597) (hassio docs) (breaking-change)
  • Config flow for trafikverket_weatherstation (@gjohansson-ST – #60078) (trafikverket_weatherstation docs) (breaking-change)
  • Add mode to ESPHome numbers (@jesserockz – #60653) (esphome docs)
  • Fix fields being None for discord notify service (@jesserockz – #59736) (discord docs)
  • Use dataclass properties in axis discovery (@epenet – #60558) (axis docs)
  • Mark calendar as a base platform (@ludeeus – #60660)
  • Fix ADR 0003 issues in trafikverket_weatherstation (@gjohansson-ST – #60664) (trafikverket_weatherstation docs)
  • Migrate cover device classes to StrEnum (@frenck – #60655) (cover docs) (demo docs) (breaking-change)
  • Migrate switch device classes to StrEnum (@frenck – #60658) (switch docs) (demo docs) (breaking-change)
  • Upgrade aionanoleaf to 0.1.1 (@milanmeu – #60670) (nanoleaf docs)
  • Fix yale_smart_alarm strings (@gjohansson-ST – #60657) (yale_smart_alarm docs)
  • Add button device classes to NAM (@frenck – #60621) (nam docs)
  • Migrate media player device classes to StrEnum (@frenck – #60656) (media_player docs) (breaking-change)
  • Update IZone to new version of library (@Swamp-Ig – #60676) (izone docs)
  • Bump xiaomi_miio dependency (@rytilahti – #60650) (xiaomi_miio docs)
  • Migrate sensor device classes to StrEnum (@frenck – #60654) (demo docs) (sensor docs) (breaking-change)
  • Migrate binary sensor device classes to StrEnum (@frenck – #60651) (demo docs) (binary_sensor docs) (upcloud docs) (sia docs) (breaking-change)
  • Fix key reference placeholder (@LEJOUI – #60681) (nest docs)
  • Upgrade pre-commit to 2.16.0 (@frenck – #60680)
  • Update screenlogic use asyncio API (@dieselrabbit – #60466) (screenlogic docs)
  • Use dataclass properties in yeelight discovery (@epenet – #60640) (yeelight docs)
  • Use device class enums in WLED (@frenck – #60684) (wled docs)
  • Use device class enums in Verisure (@frenck – #60685) (verisure docs)
  • Use device class enums in TwenteMilieu (@frenck – #60686) (twentemilieu docs)
  • Use device class enum in UptimeRobot (@ludeeus – #60688) (uptimerobot docs)
  • Use dataclass properties in emonitor discovery (@epenet – #60695) (emonitor docs)
  • Use device class enum in Supervisor (@ludeeus – #60687) (hassio docs)
  • Use device class enum in Mill (@Danielhiversen – #60699) (mill docs)
  • Use device class enum in Tractive (@Danielhiversen – #60700) (tractive docs)
  • Use device class enum in Surepetcare (@Danielhiversen – #60701) (surepetcare docs)
  • Use device class enum in Open Garage (@Danielhiversen – #60702) (opengarage docs)
  • Use device class enum in Airthings (@Danielhiversen – #60704) (airthings docs)
  • Use device class enum in Tibber (@Danielhiversen – #60705) (tibber docs)
  • Use dataclass properties in goalzero discovery (@epenet – #60703) (goalzero docs)
  • Use dataclass properties in fritzbox discovery (@epenet – #60698) (fritzbox docs)
  • Use dataclass properties in directv discovery (@epenet – #60692) (directv docs)
  • Use dataclass properties in guardian discovery (@epenet – #60710) (guardian docs)
  • Use dataclass properties in heos discovery (@epenet – #60712) (heos docs)
  • Add SmartStart provisioning support to zwave_js WS API (@raman325 – #59037) (zwave_js docs)
  • Migrate humidifier device classes to StrEnum (@frenck – #60706) (demo docs) (humidifier docs) (breaking-change)
  • Migrate sensor state classes to StrEnum (@frenck – #60709) (demo docs) (sensor docs) (breaking-change)
  • Drop base ATTR constants in zeroconf (@epenet – #60561) (zeroconf docs)
  • Use dataclass properties in konnected discovery (@epenet – #60717) (konnected docs)
  • Fix point device identifiers (@fredrike – #60719) (point docs)
  • Guard config flow coverage in Codecov (@frenck – #60718)
  • Add tuya zndb device category (@skynetua – #59477) (tuya docs)
  • Extend Docker build caching opportunities (@agners – #60661)
  • Update pyfronius to 0.7.1 (@farmio – #60722) (fronius docs)
  • Handle errors response to be None (@balloob – #60679) (auth docs)
  • Migrate entity categories to StrEnum (@frenck – #60720) (breaking-change)
  • Use state class enum in Opengarage (@Danielhiversen – #60727) (opengarage docs)
  • Use state class enum in Airthings (@Danielhiversen – #60728) (airthings docs)
  • Use dataclass properties in broadlink discovery (@epenet – #60689) (broadlink docs)
  • Use dataclass properties in keenetic_ndms2 discovery (@epenet – #60716) (keenetic_ndms2 docs)
  • Use dataclass properties in hyperion discovery (@epenet – #60714) (hyperion docs)
  • Use dataclass properties in huawei_lte discovery (@epenet – #60713) (huawei_lte docs)
  • Use dataclass properties in harmony discovery (@epenet – #60711) (harmony docs)
  • Use dataclass properties in fritz discovery (@epenet – #60697) (fritz docs)
  • Use dataclass properties in denonavr discovery (@epenet – #60691) (denonavr docs)
  • Use dataclass properties in netgear discovery (@epenet – #60730) (netgear docs)
  • Add Tailscale integration (@frenck – #59764) (tailscale docs) (new-integration)
  • Fix tests for Hue integration (@marcelveldt – #60683) (hue docs)
  • Use state class enum in Tibber (@Danielhiversen – #60729) (tibber docs)
  • Use dataclass properties in screenlogic discovery (@epenet – #60735) (screenlogic docs)
  • Use dataclass properties in roomba discovery (@epenet – #60734) (roomba docs)
  • Refactor Tesla wall connector config flow (@einarhauks – #60755) (tesla_wall_connector docs)
  • Use dataclass properties in samsungtv discovery (@epenet – #60595) (samsungtv docs)
  • Add compatibility tests for DhcpServiceInfo (@epenet – #60752) (dhcp docs)
  • Add compatibility tests for UsbServiceInfo (@epenet – #60753) (usb docs)
  • Enable warnings for UsbServiceInfo (@epenet – #60757) (usb docs)
  • Enable warnings for ZeroconfServiceInfo (@epenet – #60759) (zeroconf docs)
  • Enable warnings for DhcpServiceInfo (@epenet – #60750) (dhcp docs)
  • Add compatibility tests for MqttServiceInfo (@epenet – #60754) (mqtt docs)
  • Add sensor platform to Tailscale (@frenck – #60751) (tailscale docs) (new-platform)
  • Use state class enum for Coinbase (@TomBrien – #60764) (coinbase docs)
  • Use device class enum in Onewire (@epenet – #60766) (onewire docs)
  • Use device class enum in Rituals (@milanmeu – #60767) (rituals_perfume_genie docs)
  • Use device and state class enum for Renault (@epenet – #60768) (renault docs)
  • Use state class enum for Onewire (@epenet – #60770) (onewire docs)
  • Use dataclass properties in isy994 discovery (@epenet – #60715) (isy994 docs)
  • Use dataclass properties in flux_led discovery (@epenet – #60696) (flux_led docs)
  • Use dataclass properties in songpal discovery (@epenet – #60737) (songpal docs)
  • Use dataclass properties in squeezebox discovery (@epenet – #60738) (squeezebox docs)
  • Use state class enum in Mill (@Danielhiversen – #60726) (mill docs)
  • Use dataclass properties in unifi discovery (@epenet – #60743) (unifi docs)
  • Use dataclass properties in tplink discovery (@epenet – #60742) (tplink docs)
  • Use dataclass properties in synology_dsm discovery (@epenet – #60740) (synology_dsm docs)
  • Use state and device class enum in Rfxtrx (@Danielhiversen – #60773) (rfxtrx docs)
  • Use dataclass properties in wilight discovery (@epenet – #60748) (wilight docs)
  • Tesla wall connector config flow refactor continued (@einarhauks – #60774) (tesla_wall_connector docs)
  • Better warning if unit of sensor is unsupported for its device class (@xpac1985 – #60665) (sensor docs)
  • Use device class enums in Netatmo (@cgtobi – #60723) (netatmo docs)
  • Use dataclass properties in nuki discovery (@epenet – #60731) (nuki docs)
  • Use dataclass properties in powerwall discovery (@epenet – #60732) (powerwall docs)
  • Use ssdp namespace in roku (@epenet – #60733) (roku docs)
  • Use dataclass properties in somfy_mylink discovery (@epenet – #60736) (somfy_mylink docs)
  • Clean up Netatmo climate platform (@cgtobi – #60694) (netatmo docs)
  • Use dataclass properties in yamaha_musiccast discovery (@epenet – #60749) (yamaha_musiccast docs)
  • Remove cleanup_registry from onewire (@epenet – #60546) (onewire docs)
  • Use dataclass properties in syncthru discovery (@epenet – #60739) (syncthru docs)
  • Bump py17track to 2021.12.1 (@bachya – #60762) (seventeentrack docs)
  • Add typing to deCONZ init and config flow (@Kane610 – #59999)
  • Upgrade vehicle to 0.2.2 (@frenck – #60763) (rdw docs)
  • Remove power sensor from Tesla Wall Connector (@einarhauks – #60775) (tesla_wall_connector docs)
  • Enable warnings for SsdpServiceInfo (@epenet – #60756) (ssdp docs)
  • Use dataclass properties in deconz discovery (@epenet – #60690) (deconz docs)
  • Use dataclass properties in vicare discovery (@epenet – #60746) (vicare docs)
  • Use dataclass properties in tesla_wall_connector discovery (@epenet – #60741) (tesla_wall_connector docs)
  • Use state class enums in Netatmo (@cgtobi – #60725) (netatmo docs)
  • Upgrade hole to 0.7.0 (@frenck – #60779) (pi_hole docs)
  • Upgrade aiohttp to 3.8.1 (@frenck – #60778)
  • Use dataclass properties in dlna_dmr discovery (@epenet – #60693) (dlna_dmr docs)
  • Map OpenWeatherMap weather condition 721 to Fog instead of Exceptional (@ericmai624 – #60518) (openweathermap docs)
  • Upgrade tailscale to 0.1.3 (@frenck – #60780) (tailscale docs)
  • Use dataclass properties in upnp discovery (@epenet – #60744) (upnp docs)
  • Use dataclass properties in tolo discovery (@epenet – #60784) (tolo docs)
  • Add more Tractive sensors (@Danielhiversen – #55170) (tractive docs)
  • Use dataclass properties in songpal discovery (@epenet – #60786) (songpal docs)
  • Fix yeelight discovery (@bdraco – #60783) (yeelight docs)
  • Add tests to hassio binary_sensor platform (@ludeeus – #60609) (hassio docs)
  • Use dataclass properties in hyperion (@epenet – #60792) (hyperion docs)
  • Improve Sonos activity tracking (@jjlawren – #60642) (sonos docs)
  • Cleanup here_travel_time tests (@eifinger – #60529) (here_travel_time docs)
  • Make sure entity inherit disabled device (@elupus – #60469)
  • Fix trafikverket_weatherstation (@gjohansson-ST – #60772) (trafikverket_weatherstation docs)
  • Bump frontend to 20211201.0 (@balloob – #60801) (frontend docs)
  • Only unload RainMachine services if the last config entry is loaded (@bachya – #60805) (rainmachine docs)
  • Use state class enums in AsusWrt (@ollo69 – #60808) (asuswrt docs)
  • Use entity category enum in Rituals (@milanmeu – #60809) (rituals_perfume_genie docs)
  • Use state and device class enums in Nut (@ollo69 – #60810) (nut docs)
  • Use state/device/entity category enums in Tuya (@frenck – #60788) (tuya docs)
  • Update tesla_wall_connector lib to version 1.0.0 (@einarhauks – #60776) (tesla_wall_connector docs)
  • Use precipitation probability in MetOffice forecasts (@avee87 – #58677) (metoffice docs)
  • Add day/night markers to MetOffice daily forecast (@avee87 – #58679) (metoffice docs)
  • Extend entities provided by Tailscale (@frenck – #60785) (tailscale docs)
  • Bump pydexcom version to 0.2.1 (@gagebenne – #60812) (dexcom docs)
  • Use device/state class enums in DSMR (@frenck – #60791) (dsmr docs)
  • Use device class enum in Stookalert (@frenck – #60789) (stookalert docs)
  • Add support for Nanoleaf push updates (@milanmeu – #60708) (nanoleaf docs)
  • Use state class enums in AccuWeather (@cgtobi – #60813) (accuweather docs)
  • Use state class enums in Advantage Air (@cgtobi – #60815) (advantage_air docs)
  • Upgrade apprise to 0.9.6 (@frenck – #60816) (apprise docs)
  • Add binary characteristics, add deprecation warning for optional state_characteristic parameter (@ThomDietrich – #60402) (statistics docs)
  • Use state class enums in aemet (@cgtobi – #60817) (aemet docs)
  • Use callback instead of coroutine function (@milanmeu – #60821) (nanoleaf docs)
  • Use state class enums in airvisual (@cgtobi – #60819) (airvisual docs)
  • Fix old model network suffix for Fritz (@chemelli74 – #60802) (fritz docs)
  • Upgrade twentemilieu to 0.5.0 (@frenck – #60820) (twentemilieu docs)
  • Add support for Christmas Tree pickup to TwenteMilieu (@frenck – #60822) (twentemilieu docs)
  • Add MQTT availability template and encoding (@jbouwh – #60470)
  • Update Netatmo climate platform (@cgtobi – #59974) (netatmo docs)
  • Update flux_led for upstream strict typing (@bdraco – #60800) (flux_led docs)
  • Add support for Ohmpilots to Fronius integration (@farmio – #60765) (fronius docs)
  • Use Enums in EntityDescriptions in Fronius (@farmio – #60832) (fronius docs)
  • Teach state trigger about entity registry ids (@emontnemery – #60271) (homeassistant docs)
  • Run partial tests without coverage for Python 3.8 (@frenck – #60827)
  • Bump xiaomi_miio dependency (@rytilahti – #60807) (xiaomi_miio docs)
  • Upgrade guppy3 to 3.1.2 (@frenck – #60842) (profiler docs)
  • Simplify zwave_js USB discovery add-on form (@MartinHjelmare – #60845) (zwave_js docs)
  • Add configuration_url to Forecast.Solar integration (@mdawsonuk – #60384) (forecast_solar docs)
  • Set _attr_is_on to True for avion on init (@kylehild – #60433) (avion docs)
  • Make entity registry disabled_by an enum (@scop – #60424)
  • Add Platform StrEnum to entity_platform (@frenck – #60818) (wled docs)
  • Import helpers in Sonos instead of accessing hass (@jjlawren – #60848) (sonos docs)
  • Fix Shelly device name for older firmware (@thecode – #60826) (shelly docs)
  • Teach numeric state trigger about entity registry ids (@emontnemery – #60835) (homeassistant docs)
  • Tidy up ssdp_location parsing (@epenet – #60846) (huawei_lte docs) (heos docs)
  • Use dataclass properties in dlna_dmr (@epenet – #60794) (dlna_dmr docs)
  • Use dataclass properties in yamaha_musiccast (@epenet – #60787) (yamaha_musiccast docs)
  • Ensure sonos ssdp callbacks use dataclass methods (@bdraco – #60782) (sonos docs)
  • Generate external statistics in demo component (@emontnemery – #58470) (demo docs)
  • CI: Upload coverage results in a single step (@frenck – #60834)
  • Do not print full traceback during Sonos resubscription failure (@jjlawren – #60644) (sonos docs)
  • Tuya Vacuum: Adjusted comand PAUSE (@dougiteixeira – #60849) (tuya docs)
  • Minor refactor of template cover (@emontnemery – #59537) (template docs)
  • Teach zone trigger about entity registry ids (@emontnemery – #60838) (device_tracker docs) (zone docs)
  • Adding presets for new tuya TRV (@MattWestb – #60408) (zha docs)
  • Bump ZHA dependencies (@dmulcahey – #60852) (zha docs)
  • Fix Ring sensors with timestamp class returning a string (@balloob – #60850) (ring docs)
  • Reorganize SimpliSafe services (@bachya – #58722) (simplisafe docs) (breaking-change)
  • Introduce HassioServiceInfo (@epenet – #60844) (hassio docs)
  • Add configuration URL for SimpliSafe (@bachya – #60860) (simplisafe docs)
  • Reorganize Guardian services (@bachya – #58632) (guardian docs) (breaking-change)
  • Use HassioServiceInfo in ozw tests (@epenet – #60864) (ozw docs)
  • Use HassioServiceInfo in zwave_js tests (@epenet – #60863) (zwave_js docs)
  • Use HassioServiceInfo in motioneye tests (@epenet – #60861) (motioneye docs)
  • Use HassioServiceInfo in adguard tests (@epenet – #60866) (adguard docs)
  • Use HassioServiceInfo in mqtt tests (@epenet – #60865) (mqtt docs)
  • Revert “Use HassioServiceInfo in mqtt tests” (@bdraco – #60867) (mqtt docs)
  • Use HassioServiceInfo in deconz tests (@epenet – #60868) (deconz docs)
  • Clean up deprecated sanitize_filename and sanitize_path (@frenck – #60859) (breaking-change)
  • Add PPB VOC sensor to ZHA (@dmulcahey – #60853) (zha docs)
  • Move Platform StrEnum to const (@frenck – #60857) (wled docs)
  • Revert “Move Platform StrEnum to const” (@frenck – #60875) (wled docs)
  • Revert “Allow template int filter to render from a bytes based integer” (@emontnemery – #60855)
  • Teach state and numeric_state conditions about entity registry ids (@emontnemery – #60841)
  • Bump frontend to 20211202.0 (@balloob – #60877) (frontend docs)
  • Bump ZHA dependency zigpy-znp from 0.6.1 to 0.6.3 (@puddly – #60871) (zha docs)
  • Move screenlogic SCG levels to number platform (@dieselrabbit – #60872) (screenlogic docs) (breaking-change)
  • Limit parallel updates for screenlogic number ents (@dieselrabbit – #60886) (screenlogic docs)
  • Use dataclass properties in upnp (@epenet – #60893) (upnp docs)
  • Use entity category enums in Nut (@ollo69 – #60883) (nut docs)
  • Use entity category enums in AsusWrt (@ollo69 – #60882) (asuswrt docs)
  • Use dataclass properties in system_bridge tests (@epenet – #60888) (system_bridge docs)
  • Revert “Add bytes support for bitwise template operations” (@emontnemery – #60854)
  • Use dataclass properties in keenetic_ndms2 tests (@epenet – #60892) (keenetic_ndms2 docs)
  • Use dataclass properties in homekit_controller tests (@epenet – #60891) (homekit_controller docs)
  • Use dataclass properties in devolo_home_network tests (@epenet – #60889) (devolo_home_network docs)
  • Add template filters pack and unpack (@jbouwh – #60836)
  • Move StrEnum to homeassistant.backports and move Platform to homeassistant.const (@marvin-w – #60880)
  • Use native datetime value in Brother uptime sensor (@bieniu – #60363) (brother docs)
  • Update tuya cover, fix Up/down position (@leeyuentuen – #59858) (tuya docs)
  • Remove Supervisor panel title and icon (@ludeeus – #60894) (hassio docs)
  • Mark config schema as removed in Verisure (@frenck – #60896) (verisure docs)
  • Use dataclass for HassioServiceInfo (@epenet – #60824) (hassio docs)
  • Use dataclass properties in zwave_js (@epenet – #60913) (zwave_js docs)
  • Bump pytradfri to 7.2.1 (@MartinHjelmare – #60910) (tradfri docs)
  • Bump soco to 0.25.0 (@jjlawren – #60915) (sonos docs)
  • Add Sonos subwoofer and surround on/off controls (@jjlawren – #60918) (sonos docs)
  • Return if user is local only (@bramkragten – #60917) (config docs)
  • Use platform enum (1) [A-D] (@cdce8p – #60908)
  • Correct validation of conditions in scripts and automations (@emontnemery – #60890)
  • Temporarily disable CI concurrency (@frenck – #60926)
  • Use EntityCategory enum in Onewire (@epenet – #60907) (onewire docs)
  • Use dataclass properties in yeelight (@epenet – #60912) (yeelight docs)
  • Use new Platform enum in Onewire (@epenet – #60904) (onewire docs)
  • Use new Platform enum in Renault (@epenet – #60903) (renault docs)
  • DHCP discovery for Fronius integration (@farmio – #60806) (fronius docs)
  • Use new Platform enum in KNX (@marvin-w – #60902) (knx docs)
  • Use state class enum for DHT (@yanuino – #60916) (dht docs)
  • Add battery sensor for Netatmo climate devices (@cgtobi – #60911) (netatmo docs)
  • Revert “Temporarily disable CI concurrency” (@frenck – #60928)
  • Implement privacy_mode for amcrest integration (@pjrt – #57210) (amcrest docs)
  • Add command_line icon_template (@Mariusthvdb – #58877) (command_line docs)
  • Add audio input format sensor to Sonos HT devices (@jjlawren – #60884) (sonos docs)
  • Enable basic type checking for climacell (@emontnemery – #55334) (climacell docs)
  • Update frontend to 20211203.0 (@bramkragten – #60925) (frontend docs)
  • Add support for siren entities in ZHA (@dmulcahey – #60920) (zha docs)
  • Allow use of relative_time as a filter (@frenck – #60923)
  • Move MqttServiceInfo to init.py (@epenet – #60905) (mqtt docs) (tasmota docs)
  • Add more Tuya Vacuum sensors and select entities (@dougiteixeira – #60927) (tuya docs)
  • Add quality scale for Fronius (@farmio – #60531) (fronius docs)
  • Add Nest Battery Cam event clip support with a Nest MediaSource (@allenporter – #60073) (nest docs)
  • Use _attrs where possible in Sonos (@jjlawren – #60931) (sonos docs)
  • Re-add-tests with new filters removed with #60854 (@jbouwh – #60895) (mqtt docs)
  • Update volvooncall, add hybrid plug status (@decompil3d – #58919) (volvooncall docs)
  • Fix amcrest pylint issue (@cdce8p – #60932) (amcrest docs)
  • Clean up eight_sleep code (@raman325 – #58508) (eight_sleep docs)
  • Gree update device ips when changed (@cmroche – #57876) (gree docs)
  • Reduce flux_led dhcp matching complexity (@bdraco – #60934) (flux_led docs)
  • Add temperature sensors for Asuswrt (@Chen-IL – #58303) (asuswrt docs)
  • Fix BMW Connected Drive (@rikroe – #60938) (bmw_connected_drive docs) (breaking-change) (beta fix)
  • Fix nzbget datetime return value (@raman325 – #60953) (nzbget docs) (beta fix)
  • Add missing SimpliSafe service information (@bachya – #60958) (simplisafe docs) (beta fix)
  • Ensure that inactive RainMachine switch that is toggled on is toggled back off (@bachya – #60959) (rainmachine docs) (beta fix)
  • Fix statistics registering at start callback (@balloob – #60963) (statistics docs) (beta fix)
  • Correctly type the SSDP callback function (@balloob – #60964) (yeelight docs) (beta fix)
  • Handle invalid device registry entry type (@balloob – #60966) (beta fix)
  • Fix yeelight name changing to ip address if discovery fails (@bdraco – #60967) (yeelight docs) (beta fix)
  • Upgrade luftdaten to 0.7.1 (@frenck – #60970) (luftdaten docs) (beta fix)
  • Upgrade netdata to 1.0.1 (@frenck – #60971) (netdata docs) (beta fix)
  • Fix dimmable effects for flux_led model 0x33 v9+ (@bdraco – #60972) (flux_led docs) (beta fix)
  • Fix flood lights not turning on/off with flux_led (@bdraco – #60973) (flux_led docs) (beta fix)
  • Revert metoffice weather daytime (@MartinHjelmare – #60978) (metoffice docs) (beta fix)
  • Fix Xiaomi Miio providing strings as timestamps (@frenck – #60979) (beta fix)
  • Only report deprecated device_state_attributes once (@frenck – #60980) (beta fix)
  • Fix DSMR Reader providing strings as timestamps (@frenck – #60988) (dsmr_reader docs) (beta fix)
  • Fix str for device registry entry_type warnings caused by core (@frenck – #60989) (config docs) (beta fix)
  • Fix typo in state_characteristic warning (@frenck – #60990) (statistics docs) (beta fix)
  • Fix translations for binary_sensor tampered device triggers (@emontnemery – #60996) (binary_sensor docs) (beta fix)
  • Add missing local_ip to KNX config flow and options flow (@marvin-w – #61018) (knx docs) (beta fix)
  • Improve nest media source event timestamp display (@allenporter – #61027) (nest docs) (beta fix)
  • Fix lutron caseta discovery with newer firmwares (@bdraco – #61029) (lutron_caseta docs) (beta fix)
  • Bump nest to version 0.4.2 (@allenporter – #61036) (nest docs) (beta fix)
  • Use STATE_DOCKED for emptying the bin for xiaomi_miio.vacuum (@rytilahti – #60513) (xiaomi_miio docs) (beta fix)
  • Handle unknown/unavailable state for mobile_app (@frenck – #60974) (mobile_app docs) (beta fix)
  • Catch ConnectionResetError (@zathras777 – #60987) (hassio docs) (beta fix)
  • Update flux_led models database to fix turn on for newer models (@bdraco – #61005) (flux_led docs) (beta fix)
  • Fix Hue config flow (@marcelveldt – #61028) (hue docs) (beta fix)
  • Fix Hue migration (@marcelveldt – #61030) (hue docs) (beta fix)
  • Add guard for empty mac address in Hue integration (@marcelveldt – #61037) (hue docs) (beta fix)
  • Disable options flow for Hue V2 bridges (@marcelveldt – #61045) (hue docs) (beta fix)
  • Fetch media for events for rendering in the nest media player (@allenporter – #61056) (nest docs) (beta fix)
  • Fix previous setting briefly appearing on newer flux_led devices when turning on (@schreyack – #60004) (flux_led docs) (beta fix)
  • Add media player volume control in fr-FR with Alexa (@RomRider – #60489) (alexa docs) (beta fix)
  • Add debug logging for pip install command (@allenporter – #61057) (beta fix)
  • Fix mispelling in SimpliSafe service description (@bachya – #61058) (simplisafe docs) (beta fix)
  • Fix regression in nest event media player with multiple devices (@allenporter – #61064) (nest docs) (beta fix)
  • Bump flux_led to 0.25.17 to fix missing push messages on 0xA3 models (@bdraco – #61070) (flux_led docs) (beta fix)
  • Add 3157100-E model to Centralite thermostat (@Adminiuga – #61073) (zha docs) (beta fix)
  • Abort flux_led discovery if another device gets the ip (@bdraco – #61074) (flux_led docs) (beta fix)
  • Deprecate system_id parameter in SimpliSafe service calls (@bachya – #61076) (simplisafe docs) (breaking-change) (beta fix)
  • Fix yandex transport for Belarus (@peleccom – #61080) (yandex_transport docs) (beta fix)
  • Remove unnecessary explicit use of OrderedDict in nest media source (@allenporter – #61054) (nest docs) (beta fix)
  • Coalesce nest media source preview clips by session and bump google-nest-sdm (@allenporter – #61081) (nest docs) (beta fix)
  • Bump enphase_envoy to 0.20.1 (@bdraco – #61082) (enphase_envoy docs) (beta fix)
  • Fix missing unique id in enphase_envoy (@bdraco – #61083) (enphase_envoy docs) (beta fix)
  • Provide a hint on which username to use for enphase_envoy (@bdraco – #61084) (enphase_envoy docs) (beta fix)
  • Prevent log flooding in frame helper (@epenet – #61085) (beta fix)
  • Fix migration of entities of Hue integration (@marcelveldt – #61095) (hue docs) (beta fix)
  • Improve zwave_js add-on config flow description (@MartinHjelmare – #61099) (zwave_js docs) (beta fix)
  • Fix CO2 calculation when data is missing (@emontnemery – #61106) (energy docs) (beta fix)
  • Bump aiohue to 3.0.2 (@balloob – #61115) (hue docs) (beta fix)
  • Return native timestamps for home connect (@balloob – #61116) (home_connect docs) (beta fix)
  • Remove colon from default entity name in Hue integration (@marcelveldt – #61118) (hue docs) (beta fix)
  • Bump simplisafe-python to 2021.12.0 (@bachya – #61121) (simplisafe docs) (beta fix)
  • Improve Sonos activity debug logging (@jjlawren – #61122) (sonos docs) (beta fix)
  • Deprecate entity_id parameter in Guardian service calls (@bachya – #61129) (guardian docs) (breaking-change) (beta fix)
  • Bump frontend to 20211206.0 (@balloob – #61133) (frontend docs) (beta fix)
  • Improve code quality trafikverket_weatherstation (@gjohansson-ST – #61044) (trafikverket_weatherstation docs) (beta fix)
  • Bump hatasmota to 0.3.1 (@emontnemery – #61120) (tasmota docs) (beta fix)
  • Fix point availability (@fredrike – #61144) (point docs) (beta fix)
  • Change check for existence of options flow (@marcelveldt – #61147) (config docs) (beta fix)
  • Guard against missing states in Alexa state updates (@emontnemery – #61152) (alexa docs) (beta fix)
  • Fix Netatmo climate issue (@cgtobi – #61154) (netatmo docs) (beta fix)
  • Bump py17track to 2021.12.2 (@bachya – #61166) (seventeentrack docs) (beta fix)
  • Display energy in wh instead of kWh (@einarhauks – #61169) (tesla_wall_connector docs) (beta fix)
  • Bump nest to 0.4.5 to fix media player event expiration (@allenporter – #61174) (nest docs) (beta fix)
  • Remove loopenergy integration (@cgarwood – #61175) (loopenergy docs) (breaking-change) (beta fix)
  • Skip duplicated data when calculating fossil energy consumption (@emontnemery – #60599) (energy docs) (beta fix)
  • Fix pvoutput template use and REST integer parsing (@jbouwh – #61171) (rest docs) (pvoutput docs) (beta fix)
  • Rephrase upgrade notification message to avoid installing Python 3.10 (@roqvist – #61181) (beta fix)
  • Fix uncaught exception in bond config flow (@bdraco – #61184) (beta fix)
  • Bump ZHA dependency zigpy-znp from 0.6.3 to 0.6.4 (@puddly – #61194) (zha docs) (beta fix)
  • Fix log spam from flux_led 0x08 devices when in music mode (@bdraco – #61196) (flux_led docs) (beta fix)
  • Fix Rova using strings as timestamp (@balloob – #61201) (rova docs) (beta fix)
  • Fix bbox timestamp (@balloob – #61202) (bbox docs) (beta fix)
  • Fix flipr timestamp sensor (@balloob – #61203) (flipr docs) (beta fix)
  • Fix gtfs timestamp sensor (@balloob – #61204) (gtfs docs) (beta fix)
  • Fix hvv_departures timestamp sensor (@balloob – #61205) (hvv_departures docs) (beta fix)
  • Fix hydrawise timestamp sensor (@balloob – #61206) (hydrawise docs) (beta fix)
  • Fix islamic prayer times timestamp sensor (@balloob – #61207) (islamic_prayer_times docs) (beta fix)
  • Fix litterrobot timestamp sensor (@balloob – #61208) (litterrobot docs) (beta fix)
  • Fix lyric timestamp sensor (@balloob – #61209) (lyric docs) (beta fix)
  • Fix meteo_france timestamp sensor (@balloob – #61210) (meteo_france docs) (beta fix)
  • Fix modern_forms timestmap sensors (@balloob – #61211) (modern_forms docs) (beta fix)
  • Fix nextbus timestamp sensor (@balloob – #61212) (nextbus docs) (beta fix)
  • Fix oasa_telematics timestamp sensor (@balloob – #61213) (oasa_telematics docs) (beta fix)
  • Fix repetier timestamp sensors (@balloob – #61214) (repetier docs) (beta fix)
  • Fix vallox timestamp sensor (@balloob – #61216) (vallox docs) (beta fix)
  • Fix yandex_transport timestamp sensor (@balloob – #61217) (yandex_transport docs) (beta fix)
  • Fix follow-up review comment for bbox (@balloob – #61219) (bbox docs) (beta fix)
  • don’t convert GTFS timestamp to UTC in timestamp sensor (@balloob – #61221) (gtfs docs) (beta fix)
  • Allow to lock SQLite database during backup (@agners – #60874) (recorder docs) (beta fix)
  • Fix date/datetime support for templates (@frenck – #61088) (template docs) (beta fix)
  • Display nest media events using local time (@allenporter – #61143) (nest docs) (beta fix)
  • Correct state class for Tasmota sensors (@emontnemery – #61236) (tasmota docs) (beta fix)
  • Fix smartthings timestamp sensor (@balloob – #61254) (smartthings docs) (beta fix)
  • Guard cannot connect during Tuya init (@balloob – #61267) (tuya docs) (beta fix)
  • Use correct template parameter in Rest template rendering (@balloob – #61269) (rest docs) (beta fix)
  • Bump flux_led to 0.26.3 (@bdraco – #61287) (flux_led docs) (beta fix)
  • Restore rest integration ability to follow http redirects (@bdraco – #61293) (rest docs) (beta fix)
  • Rest fixes (@balloob – #61296) (rest docs) (pvoutput docs) (beta fix)
  • Introduce only_supervisor for @websocket_api.ws_require_user() (@agners – #61298) (recorder docs) (websocket_api docs) (hassio docs) (beta fix)
  • Fix rova timezone (@balloob – #61302) (rova docs) (beta fix)
  • Fix regression in Tuya cover is_closed logic (@hudcap – #61303) (tuya docs) (beta fix)
  • Fix lookin failing to setup during firmware updates (@bdraco – #61305) (lookin docs) (beta fix)
  • Fix hue groups inheritance (@balloob – #61308) (hue docs) (beta fix)
  • Fix CO2signal error handling (@balloob – #61311) (co2signal docs) (beta fix)
  • Upgrade tailscale to 0.1.4 (@frenck – #61338) (tailscale docs) (beta fix)
  • Update tesla-wall-connector to v1.0.1 (@einarhauks – #61392) (tesla_wall_connector docs) (beta fix)
  • Add default value for signal_repetitions in cover (@bigbadblunt – #61393) (rfxtrx docs) (beta fix)
  • Fix Sonos radio handling during polling (@jjlawren – #61401) (sonos docs) (beta fix)
  • Consolidate SimpliSafe config flow forms into one (@bachya – #61402) (simplisafe docs) (beta fix)
  • Bump frontend to 20211209.0 (@balloob – #61406) (frontend docs) (beta fix)
  • Assign docs URL to a placeholder in SimpliSafe config flow (@bachya – #61410) (simplisafe docs) (beta fix)
  • Disable lupusec (@balloob – #61142) (lupusec docs) (breaking-change) (beta fix)
  • Add 2 new CN-Hysen TRVs (@MattWestb – #61002) (zha docs) (beta fix)
  • add missing unit of measurement in Smappee (@bsmappee – #61365) (smappee docs) (beta fix)
  • Fix Tuya cover open/close commands (@hudcap – #61369) (tuya docs) (beta fix)
  • Remove energy entity again in Smappee local integration (@bsmappee – #61373) (smappee docs) (beta fix)
  • Fix unique_id of S0 meters connected to Fronius inverters (@farmio – #61408) (fronius docs) (beta fix)
  • Fix lookin set temperature when device is off (@bdraco – #61411) (lookin docs) (beta fix)
  • Bump simplisafe-python to 2021.12.1 (@bachya – #61412) (simplisafe docs) (beta fix)
  • Fix flux_led discovery with older models (@bdraco – #61413) (flux_led docs) (beta fix)
  • Fix older v1 dimmable flux_led bulbs not turning on (@bdraco – #61414) (flux_led docs) (beta fix)
  • Correct device class for Tasmota dewpoint sensor (@emontnemery – #61420) (tasmota docs) (beta fix)
  • Correct recorder.statistics.get_last_statistics (@emontnemery – #61421) (recorder docs) (sensor docs) (beta fix)
  • Correct rest sensor configured to generate timestamps (@emontnemery – #61429) (sensor docs) (rest docs) (template docs) (beta fix)
  • Interim fix (@chemelli74 – #61435) (shelly docs) (beta fix)
  • Bump ZHA quirks to 0.0.65 (@dmulcahey – #61458) (zha docs) (beta fix)
  • Small fix for device triggers and events on Hue integration (@marcelveldt – #61462) (hue docs) (beta fix)
  • Fix non-threadsafe call to async_fire in telegram_bot (@bdraco – #61465) (telegram_bot docs) (beta fix)
  • Fix exception in color_rgb_to_rgbww (@bdraco – #61466) (beta fix)
  • Fix missing color modes for Magic Home Ceiling Light CCT (0xE1) (@bdraco – #61478) (flux_led docs) (beta fix)
  • Fix typo in Hue device triggers – use enum value (@marcelveldt – #61498) (hue docs) (beta fix)
  • Update frontend to 20211211.0 (@bramkragten – #61499) (frontend docs) (beta fix)
Scroll to Top