đ Iâm not sure where to start with this release; Itâs April, and I can
assure you: This release is no joke. Seriously, it is packed with features
and incredible new things đ¤Ż.
The release focuses on adding features to the user interface by bringing
in user experiences and features that were previously only available to users
using YAML configuration and making them now accessible for all! It is a
great step forward in streamlining all the user experiences.
I could not fit more in these release notes, but there is more to tell!
Zack and Paulus promised to add a couple of great (and exclusive)
announcements to the newsletter! The newsletter has, by the way,
been renamed: Building the Open Home. Be sure to check it out!
I want to invite you to read the (long) release notes below. Iâm sure there is
a lot in there you will like and love â¤ď¸.
Let me know what you think the killer feature of this release is?
Enjoy the release!
../Frenck
- Goodbye Lovelace, Hello Dashboards
- Hide entities
- Now available in the UI: Groups!
- Switch as X
- More helpers now available via the UI
- Introducing update entities
- Backups for Home Assistant Core & Container installs
- Testing your automation conditions
- Zones now have a state!
- Adjusting unit of measurement for sensors
- Adjusting long-term statistics
- Optimizing performance
- New and updated selectors!
- Variables on trigger
- Other noteworthy changes
- New Integrations
- Integrations now available to set up from the UI
- Release 2022.4.1 – April 7
- Release 2022.4.2 – April 11
- Release 2022.4.3 – April 12
- Release 2022.4.4 – April 14
- Release 2022.4.5 – April 16
- Need help? Join the community!
- Breaking Changes
- Farewell to the following
- All changes
Goodbye Lovelace, Hello Dashboards
In this release, we are saying goodbye to âLovelaceâ; we renamed it to
âDashboardsâ.
Over an extended period, we have been slowly introducing the term âDashboardsâ
more and more, so everybody could get used to it. As of this release, the term
âLovelaceâ has been entirely replaced by âDashboardsâ.
This rename is done to improve the user experience and streamline Home
Assistant. The term âLovelaceâ doesnât say much for new users, and they
would need to learn about it. âDashboardsâ, however, speaks for itself.
So, what does your Home Assistant Dashboard look like?
Hide entities
Besides enabling/disabling entities, it is now also possible to hide them.
You can now mark an entity as hidden in the entity settings.
Hiding entities will hide them from most places in the UI, but they are
still there and are still being recorded.
However, they are no longer shown on auto-generated Dashboards; they are
automatically hidden from HomeKit, Alexa & Google Assistant and arenât
called when a service call targets their area.
Hiding entities can be used to clean up your automatically generated Dashboard
or hide those light entities that you have put into groups. About groupsâŚ
Now available in the UI: Groups!
A group lets you combine multiple entities into a single entity. Entities that
are members of a group can be controlled and monitored as a whole. Useful for
cases where you want to control, for example, the multiple bulbs in a light
fixture as a single light in Home Assistant.
Using groups is a very common use case, but, until now, an advanced use case
as groups were only available for YAML configuration. As of today, groups are
available in the UI! đ
Select the type of entities you want to group and select the group members
you want to add: Done! You can group multiple types of entities: binary sensors,
covers, fans, lights, and media players; also added in this release is
support for lock and switch groups.
Remember the hide entities functionality described above? That is super helpful
for hiding those individual light entities of your light fixture. So, when you
create a new group in the UI, you can select to hide all group members
automatically!
Your groups can be found under Configuration > Automations & Scripts > Helpers,
or, if you have updated to this release already, click the my button below to
add a new group immediately:
Switch as X
In Home Assistantâs world, a wall plug is a switch. And while that is correct
for a wallplug in general, those plugs (or relays) are often used with a light
fixture, a fan, garage door, or maybe your Christmas tree lights. đ
This release introduces the âSwitch as Xâ helper, which lets you convert any
Home Assistant switch into a light, cover, fan, lock, or siren to match your
real-world use better.
Switch as X can be found under Configuration > Automations & Scripts > Helpers,
but wait! We made it easier: You can also change the switch itself when
editing the switch entity:
The video above shows how to create a new light entity, which uses the
original switch. The original switch is now automatically hidden from most of
the Home Assistant UI but is still available on this device page.
If you have updated to this release already, click the my button below to
transform one of your switches right away:
More helpers now available via the UI
The above Groups and Switch as X, are to be found in what we call: Helpers.
Helpers are integrations that expose a way for a user to provide input or
consume existing data in Home Assistant to provide a new entity.
The latter category of helpers has very much been extended in this release!
Not just groups and switch as X, but we have many more helper integrations
available in the UI now!
This release brings the following helpers to the UI:
- Derivative
- Groups
- Integration – Riemann sum integral
- Min/Max
- Switch as X
- Threshold
- Times of day
- Utility Meter
Introducing update entities
Say âhi!â to a brand new entity type: update
.
Update entities can tell you if an update is available for your device and
service and, in some cases, allow you to install the update straight from
Home Assistant!
And the beautiful thing is: They show up in your configuration Dashboard, just
like a Home Assistant, Home Assistant OS, or add-on update. As a matter of fact,
those are now update entities too!
Now updates are entities, other integrations can provide them too! For example,
a WLED firmware update for your LED strip will show up and installs
with a single click.
A WLED firmware update can now be installed just like any other update.
These update
entities can be provided by integrations and provide more
information about the update, like: Version information, links to release notes,
and the possibility to skip that specific version offered.
The blue number indicator on the configuration cog icon in your sidebar tells
you how many updates are pending.
The Home Assistant Supervisor (providing Core, OS, and add-on updates), WLED,
Pi-hole, and Synology DSM integrations have implemented these brand new
update entities in this release.
And because they are all entities, it means you can automate with them. For
example, you could send a notification when a new add-on update is available
for installation.
Backups for Home Assistant Core & Container installs
If you are running Home Assistant OS or Supervised, you already have access to
Home Assistantâs really helpful backup capabilities. However, this feature was
unavailable if you run Home Assistant Core in Python or use a Home Assistant
Container in Docker.
That all changes this release: Introducing a Backup integration for Home
Assistant Core and Container installation types!
Home Assistant Core and Container installations can now also back up their instance.
These backups can be downloaded and extracted if you want or need to restore one
of the previous backups. Also, these backups are compatible with Home Assistant
OS installations. So, if you plan on migrating installation types in the future,
that is now super easy!
You can find the backup dashboard in the configuration menu, or, if you have
upgraded already, click the my button below to create a new backup right away:
Testing your automation conditions
In our previous release we added a feature to see if the automation
you create triggers correctly. During the release party live stream,
we got questions: âCan this be done for conditions too?â; Sure we can!
Every condition now has a little test button, to test if the condition passes right now.
Additionally, the âtriggeredâ bar got an additional feature too! You can click
on it to get a raw view of all trigger variable data. This data
can be helpful in case you want to create an advanced condition or template
using that information.
Zones now have a state!
If you ever looked at the state of a zone
entity, you would have noticed
it always said: âZoningâ. Not really helpful đ
So, to improve on that, we changed that behavior. The state of a zone
entity
will now show the number of persons currently in that zone; that is more
helpful! Additionally, it means that a zone has history now too!
This will greatly simplify automations and scripts that, for example, trigger
on: Nobody is home, everybody is home, someone left home (or any other zone
for that matter). Or use it as a condition to prevent an automation
from running when nobody is home.
The condition ensures this automation will only trigger if someone is home.
Adjusting unit of measurement for sensors
Got that one sensor measuring a temperature in Celsius, but you prefer it to be
in Fahrenheit? No problem! You can now change the unit of measurement for
temperature and pressure sensors straight from the UI.
Adjusting long-term statistics
Long-term statistics are great! Until⌠something went wrong đ
Unfortunately, things happen. For example, it registered a big spike, or your
solar or electricity meter provided a one-off rogue measurement. These events
impact your long-term statistics, which might forever have incorrect history.
We now have made available a little developer tool that allows you to
correct/adjust long-term historical data to solve these issues.
The new tool can be found at Developer tools > Statistics,
and click the
icon, next to the statistic youâd like to adjust search for the incorrect
datapoint by date & time and adjust the value.
Optimizing performance
This release brings significant performance optimizations to both Home
Assistantâs backend and frontend UI.
Frontend UI performance
The communication layer between the Home Assistant frontend and its Core backend
has been greatly improved. It now sends over a lot less data and is heavily
optimized to send the least amount of data when first loading up the UI.
The UI will load faster since less data is transferred over the wire,
and there is less data for the web browser or app to process.
Additionally, transmitting less data means Home Assistant will work better
on slower data connections and, if essential for you, uses less data on your
mobile data plan.
Database performance
This release features write reductions intended to preserve SD card lifetimes,
performance improvements designed to get data to the frontend faster, and
database size reductions ranging from 10-35% for most installs.
When the same set of state attributes already exists in the database,
newly recorded state changes now only store a reference to the state
attributes instead of saving the whole set of state attributes.
As data stored in the database before 2022.4 does not get updated,
the reduction in database size will occur over time with the recording
of new data and the purging of old data.
On top of that, most entity history graphs no longer need to fetch the
attributes from the backend, and as a result, they load much faster after
24 hours of running on 2022.4. This change is especially noticeable
for energy sensors.
For a complete set of changes to the underlying database,
check out the Data Science Portal.
New and updated selectors!
Selectors are UI inputs used throughout Home Assistant. It powers our new UI
helpers, automation editor, and provides UIs for Blueprints and scripts.
We added a whole bunch of new selectors that are usable in your
Blueprints, and extended the options for many existing selectors.
For example, we now have a location selector that lets you pick coordinates
from a map. An RGB color and color temperature selector, an icon, theme, time,
date, datetime selector; The entity, device, and area selectors can now be
configured to accept multiple entities, devices, or areas!
One of the new selector added: RGB Color; it can be used in Blueprints too!
We are looking forward to seeing new and improved Blueprints using these new
selectors on the Blueprints Exchange!
For the latest information about all available selectors and their options,
check out the updated selectors documentation.
Variables on trigger
For the more advanced uses cases, this release provides: variables on trigger.
It is exactly what it says on the can: The possibility of setting variables
on triggers that become available when that specific trigger triggers.
These variables can be helpful to pass down specific information based on the
trigger that fired. The automation example below shows how a message can be
passed to the notify service based on its triggering motion sensor.
automation:
trigger:
- platform: state
entity_id: binary_sensor.motion_garage
to: "on"
variables:
trigger_message: "Motion detected in the garage! đ"
- platform: state
entity_id: binary_sensor.motion_garden
to: "on"
variables:
trigger_message: "Motion detected in the garden! đˇ"
action:
- service: notify.iphone
data:
message: "{{ trigger_message }}"
Oh! And yes: these variables can use templates too!
Other noteworthy changes
There is much more juice in this release; here are some of the other
noteworthy changes this release:
- @balloob took a deep dive into the world of media players and made sure
many more of them now work with the media browser and play media action!
If you use: Bluesound, Denon HEOS, forked-daapd, Linn / OpenHome,
Logitech Squeezebox, Music Player Daemon (MPD), Panasonic Viera,
UniFi Protect, or Yamaha MusicCast, you can now use the media browser! - Want to update the appearance of a binary sensor? You can now do that!
When you edit the entity in the UI, you can select how it would show up. No
need to customizedevice_class
in YAML anymore. Thanks, @zsarnett! - The Material Design Icons have been updated! Check out all
these beautiful new icons we can use now! Thanks, @goyney! - Our analytics integration now include data on using SSL certificates
in Home Assistant (yes or no) in the analytics. Of course,
only if you have enabled Analytics. Thanks for
enabling it đ! - Timers can now restore/survive their state across restarts. Awesome work
@raman325! Each timer now has a configuration option to enable restore. - @epenet has been cranking out a lot of improvements for the Samsung TV
integration this month! Shoutout to @bdraco for helping out on that one too. - Android 11 support for the Android TV integration is here!
Thanks, @JeffLIrion! - Long-awaited and finally there: Native Hue groups support for brightness and other attributes! Thanks to
Signify, who implemented our request for this. This means Home Assistant can
now control groups as a whole instead of per light. Nice and snappy now!
Thanks for adding support to Home Assistant for it @marcelveldt! - @thecode added support for the second generation Shelly cover devices;
thanks! - If your Solar inverter has a lower capacity than your panelsâ combined
capacity, then @klaasnicolaas has good news for you. The
Forecast.Solar integration now supports this and can adjust the forecast
to take your inverter cap into account. - Media players now have controls for the repeat modes in the UI! Thanks,
@NachtaktiverHalbaffe! - RFXCOM RFXtrx now supports sirens and chimes! Thanks, @elupus!
- The GitHub integration now uses event subscriptions instead of polling GitHub.
Excellent work, @ludeeus! - The TP-Link Kasa Smart integration now supports effects for their light
strips. Thanks, @bdraco!
New Integrations
We welcome the following new integrations this release:
- Airzone, added by @Noltari
- Backup, added by @ludeeus
- Kaleidescape, added by @SteveEasley
- PECO Outage Count, added by @IceBotYT
- Switch as X, added by @emontnemery
- Uonet+ Vulcan, added by @Antoni-Czaplicki
- Update, added by @ludeeus & @frenck
Integrations now available to set up from the UI
The following integrations are now available via the Home Assistant UI:
- Deluge, done by @tkdrob
- Derivative, done by @emontnemery
- Discord, done by @tkdrob
- Fibaro, done by @rappenze
- File Size, done by @gjohansson-ST
- Generic Camera, done by @davet2001
- Google Calendars, done by @allenporter
- Groups, done by @emontnemery
- Integration – Riemann sum integral, by @emontnemery
- Min/Max, done by @emontnemery
- Moon, done by @frenck
- Season, done by @frenck
- Sun, done by @frenck
- Tankerkoenig, done by @mib1185
- Threshold, done by @emontnemery
- Times of day, done by @emontnemery
- Trafikverket Train, done by @gjohansson-ST
- Uptime, done by @frenck
- Utility Meter, done by @emontnemery
Release 2022.4.1 – April 7
- Add comments to zwave_js node metadata WS API (@raman325 – #67210) (zwave_js docs)
- Continue on template error during yaml import for generic (@davet2001 – #69440) (generic docs)
- Fix telegram broadcast (@balloob – #69452) (telegram_bot docs)
- Fix elkm1 connection when panel drops VN request (@bdraco – #69454) (elkm1 docs)
- Ignore IPv6 link local address on ssdp discovery in Fritz!Smarthome (@mib1185 – #69455) (fritzbox docs)
- Fix reload race in unifiprotect (@bdraco – #69485) (unifiprotect docs)
- Bump pyhaversion from 22.04.0 to 22.4.1 (@ludeeus – #69486) (version docs)
- Fix remote_rpi_gpio missing requirement (@thecode – #69488) (remote_rpi_gpio docs)
- Fix reloading the sun integration (@bdraco – #69495) (sun docs)
- Gracefully handle empty summary in google calendar (@allenporter – #69520) (google docs)
- Fix adding OS entities for supervised installations (@ludeeus – #69539) (hassio docs)
- Fix registered entities without a category not being exclude-able in the HomeKit UI (@bdraco – #69543) (homekit docs)
- Run energy db calls in the db executor (@bdraco – #69544) (energy docs)
- Generic fix stream thumbnail (@davet2001 – #69378) (generic docs)
- Log which device has the time discrepancy (@hunterjm – #69595) (onvif docs)
- Fix utility_meter reset service (@dgomes – #69612) (utility_meter docs)
- Update aioairzone to v0.3.1 (@Noltari – #68975) (airzone docs)
- Update aioairzone to v0.3.3 (@Noltari – #69615) (airzone docs)
- Mark backgrounds optional for tplink random effects (@bdraco – #69622) (tplink docs)
- Fix ZHA group creation (@puddly – #69629) (zha docs)
- Fix tado default overlay for when set pre new overlay feature (@north3221 – #69584) (tado docs)
- Move new
zha_event
command parameters into aparams
key to ensure backwards compatibility (@puddly – #69631) (zha docs) - Bump ZHA quirks to 0.0.71 (@dmulcahey – #69633) (zha docs)
- Fix Samjin Multi acceleration in ZHA (@dmulcahey – #69636) (zha docs)
- [powerwall] Skip backup reserve sensor if data is unavailable (@mdz – #69637) (powerwall docs)
- Fix bugs calendar oauth token date handling (@allenporter – #69641) (google docs)
Release 2022.4.2 – April 11
- Update python-mpd2 to 3.0.5 (@azrdev – #69304) (mpd docs)
- Fix Netgear switch state update (@starkillerOG – #69597) (netgear docs)
- Fix upnp subscription in SamsungTV (@epenet – #69652) (samsungtv docs)
- Fix soundtouch service calls (@KNXBroker – #69655) (soundtouch docs)
- Suppress Upnp parsing errors in SamsungTV (@epenet – #69664) (samsungtv docs)
- Add None guard for zwave_js humidifier entity (@EiNSTeiN- – #69667) (zwave_js docs)
- Fix Shelly gen2 cover unavailable when not calibrated (@thecode – #69671) (shelly docs)
- Refresh google calendar tokens with invalid expiration times (@allenporter – #69679) (google docs)
- Support webp still image format in generic camera (@davet2001 – #69718) (generic docs)
- Increase tplink effects random seed allowed range to 1-600 (@bdraco – #69725) (tplink docs)
- Bump aio_georss_gdacs to 0.7 (@exxamalte – #69743) (gdacs docs)
- Fix SleepIQ firmness number step and min values (@mfugate1 – #69757) (sleepiq docs)
- Fix unifiprotect for 2.0.0-beta2 of UniFi Protect (@AngellusMortis – #69762) (unifiprotect docs)
- Upgrade pynina to 0.1.8 (@DeerMaximum – #69771) (nina docs)
- Handle expired credentials in reauth in google calendar initialization (@allenporter – #69772) (google docs)
- Bump rtsp-to-webrtc to 0.5.1 (@allenporter – #69776) (rtsp_to_webrtc docs)
- Bump slixmpp to 1.8.2 (@michaeldavie – #69794) (xmpp docs)
- Fix converting (value, unit) tuples if value is None (@rikroe – #69802) (bmw_connected_drive docs)
- Reduce API limit for tomorrow.io (@raman325 – #69818) (tomorrowio docs)
- Speed up Plex playback for multiple videos (@jjlawren – #69821) (plex docs)
- Retry on more Plex connection failures during startup (@jjlawren – #69822) (plex docs)
- Downgrade av to 8.1.0 to fix memory leak (@bdraco – #69833) (stream docs) (generic docs)
- Donât test config on yaml import for generic camera (@davet2001 – #69714) (generic docs)
Release 2022.4.3 – April 12
- Update xknx to 0.20.2 (RC) (@marvin-w – #69859) (knx docs)
- Fix profiler object growth logging test (@bdraco – #69211) (profiler docs)
- Handle Squeezebox media ids that are not URLs (@rajlaud – #69696) (squeezebox docs)
- Add diagnostics support for ZHA (@dmulcahey – #69756) (zha docs)
- Bump devolo-home-control-api to 0.18.1 (@Shutgun – #69840) (devolo_home_control docs)
- Fix #69694 (@iMicknl – #69850) (overkiz docs)
- Fix google calendar timestamp out of range (@allenporter – #69863) (google docs)
- Use quickplay when casting splash for mediaplayer.turn_on (@emontnemery – #69866) (cast docs)
- Motion blinds fix set absolute position service (@starkillerOG – #69873) (motion_blinds docs)
- Bump zigpy to 0.44.2 and and zha-quirks to 0.0.72 (@puddly – #69879) (zha docs)
- Handle add-on issues (@ludeeus – #69897) (hassio docs)
- Fix unique id in SamsungTV config flow (@epenet – #69899) (samsungtv docs)
- Bump renault-api to 0.1.11 (@epenet – #69900) (renault docs)
- Fix climate HVAC device condition (@frenck – #69908) (climate docs)
- Fix adjusting 5-minute statistics (@emontnemery – #69921) (recorder docs) (sensor docs)
- Fix adjusting statistics in ftÂł (@emontnemery – #69913) (recorder docs) (sensor docs)
- Downgrade ZHA dependency zigpy-deconz from 0.15.0 to 0.14.0 (@puddly – #69927) (zha docs)
- Fix fibaro light state for rgb lights and HC3 (@rappenze – #69884) (fibaro docs)
- Not all music are URLs (@balloob – #69936) (mpd docs)
- Guard against non http schemes (@balloob – #69938) (media_player docs)
Release 2022.4.4 – April 14
- Remove duplicate program (@golles – #69734) (home_connect docs)
- Fix Prosegur availability through Alexa (@dgomes – #69941) (prosegur docs)
- Fix race during homekit controller pairing (@bdraco – #69948) (homekit_controller docs)
- Fix HomeKit Controller device class for CO Sensors (@bdraco – #69949) (homekit_controller docs)
- Fix available property in the base supervisor entity (@ludeeus – #69966) (hassio docs)
- Use ha-av instead of av and bump to v9.1.1-3 (@uvjustin – #69974) (stream docs) (generic docs)
- Fix config_flow error from dlna_dmr for UPnP discovery info containing a single service (@chishm – #69977) (dlna_dmr docs)
- Fix config_flow error for UPnP info with single service (@chishm – #69979) (dlna_dms docs)
- Suppress UpnpResponseError in SamsungTV (@epenet – #69984) (samsungtv docs)
- Fix missing interior battery sensor for Ambient PWS (@bachya – #69994) (ambient_station docs)
- ZHA diagnostics fixes (@dmulcahey – #70000) (zha docs)
- use newer version of openhomedevice (@bazwilliams – #70022) (openhome docs)
- Handle KeyError when loading backups (@ludeeus – #70028) (backup docs)
- Fix tomorrow.io units⌠again⌠(@raman325 – #70029) (tomorrowio docs)
- Check supported features in media player reproduce state (@balloob – #70055) (media_player docs)
Release 2022.4.5 – April 16
- Fix retry when Met config entry fails (@chemelli74 – #70012) (met docs)
- Set source & sound mode at start in media player reproduce state (@thecode – #70064) (media_player docs)
- Limit Supervisor refresh updates (@ludeeus – #70075) (hassio docs)
- Correct tomorrowio weather units (@raman325 – #70107) (tomorrowio docs)
- update xknx to 0.20.3 (@farmio – #70123) (knx docs) (dependency)
- Bump pymazda to 0.3.3 (@bdr99 – #70136) (mazda docs) (dependency)
- Ensure powerwall retries setup when api returns too many requests (@bdraco – #70143) (powerwall docs)
- Fix StationInfo not string in Trafikverket Train (@gjohansson-ST – #70153) (trafikverket_train docs)
Need help? Join the community!
Home Assistant has a great community of users who are all more than willing
to help each other out. So, join us!
Our very active Discord chat server is an excellent place to be
at, and donât forget to join our amazing forums.
Found a bug or issue? Please report it in our issue tracker,
to get it fixed! Or, check our help page for guidance for more
places you can go.
Are you more into email? Sign-up for our Open Home Newsletter to
get the latest news about features, things happening in our community and
other news about the Open Home; straight into your inbox.
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.
If you are a custom integration developer and want to learn about breaking
changes and new features available for your integration: Be sure to read our
developer blog summarizing all the changes in this release.
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;
}
If an entity is explicitly referenced as a target for a service that the
entity doesnât support, we now raise an error instead of silently ignoring it.
This helps detect automations or scripts that used to silently fail.
(@balloob – #68394)
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;
}
In the August 2021 release, we deprecated all energy-related attributes from
switches. The attributes are: current_power_w
and today_energy_kwh
.
Those attributes should have been separate power and energy sensors instead.
All integrations affected were notified on July 22, 2021, of requiring
a change.
As of this release, the attributes have been removed from the switch core
entity platform, meaning the current_power_w
and today_energy_kwh
attributes
are no longer available for the following:
- ATEN Rack PDU
- Belkin WeMo
- D-Link Wi-Fi Smart Plugs
- Edimax
- ELV PCA
- Emulated Kasa
- Fibaro
- Hive
- HomematicIP Cloud
- MQTT
- myStrom
- Netio
- Ubiquiti mFi mPort
- Vera
(@balloob – #68821)
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;
}
The previously deprecated YAML configuration of the Android TV
integration has been removed.
Android TV 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 – #68339) (documentation)
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;
}
The previously deprecated YAML configuration of the Apple iCloud
integration has been removed.
Apple iCloud 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.
(@balloob – #69006) (documentation)
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;
}
The previously deprecated YAML configuration of the Awair
integration has been removed.
Awair 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 – #68572) (documentation)
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;
}
The previously deprecated YAML configuration of the BMW Connected Drive
integration has been removed.
BMW Connected Drive 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.
(@rikroe – #66965) (documentation)
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;
}
The previously deprecated YAML configuration of the Brunt
integration has been removed.
Brunt 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.
(@balloob – #69024) (documentation)
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;
}
ClimaCell as a company rebranded to Tomorrow.io
and as such we will be deprecating the climacell
integration in favor of the
new tomorrowio
integration.
For any climacell
users using a v4 API key, the migration from the old
integration to the new one will happen automatically. If you are a climacell
user using a v3 API key, you will need to sign up for a v4 API key to
complete the migration, but once you have provided the new key,
your configuration (or configurations) will be migrated over automatically.
For now, v3 users will still have access to their existing ClimaCell
configurations before they submit the new API key so that your automations
and dashboards still work.
In a future release, we will be removing most of the code from the climacell
integration so that the migrations will still happen,
but the original integration will no longer work.
(@raman325 – #68156) (documentation)
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;
}
The previously deprecated YAML configuration of the CPU Speed
integration has been removed.
CPU Speed is now configured via the UI, any existing YAML
configuration has been imported in previous releases and can now be safely
removed from your YAML configuration files.
(@frenck – #67166) (documentation)
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;
}
The Deluge integration migrated to configuration
via the UI. Configuring Deluge 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.
(@tkdrob – [#58789]) (documentation)
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;
}
The Discord integration migrated to configuration
via the UI. Configuring Discord 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.
(@tkdrob – #61069) (documentation)
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;
}
The previously deprecated YAML configuration of the DNS IP
integration has been removed.
DNS IP 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.
(@balloob – #69007) (documentation)
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;
}
The Dune HD integration has previously migrated to configuration via the UI.
Configuring Dune HD via YAML configuration has now been deprecated and
will be removed in a future Home Assistant release.
Your existing YAML configuration has been automatically imported; and thus
can be safely removed from your YAML configuration.
(@tkdrob – #68381) (documentation)
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;
}
The partner
parameter was deprecated in 2021, but it was still accepted
in your configuration. The partner
option has now been removed; please
remove the partner
parameter from your YAML configuration before updating.
(@raman325 – #68381) (documentation)
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;
}
The last_reported
attribute for Enphase Envoy inverters is now
a separate timestamp sensor.
Each last reported sensor is disabled by default since it generates
a significant amount of state changes and database rows. Each last reported
sensor can be enabled in the UI.
(@bdraco – #68360) (documentation)
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;
}
The previously deprecated YAML configuration of the EZVIZ
integration has been removed.
EZVIZ is now configured via the UI, any existing YAML
configuration has been imported in previous releases and can now be safely
removed from your YAML configuration files.
(@frenck – #69031) (documentation)
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;
}
The Fibaro integration migrated to configuration
via the UI. Configuring Fibaro 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.
(@rappenze – #65203) (documentation)
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;
}
The File Size integration migrated to configuration
via the UI. Configuring File Size 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 – #67668) (documentation)
Additional attributes for the File Size sensors has been extracted into
their own sensors which are disabled by default.
If you were previously using any of these attributes your automations,
scripts etc. need to be updated to use the new sensors.
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;
}
The previously deprecated YAML configuration of the Fronius
integration has been removed.
Fronius is now configured via the UI, any existing YAML
configuration has been imported in previous releases and can now be safely
removed from your YAML configuration files.
(@frenck – #69032) (documentation)
- Remove deprecated YAML configuration from Fronius (@frenck – #69032) ([fronius docs]) (breaking-change) (beta fix)
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;
}
The Generic Camera integration migrated to configuration
via the UI. Configuring Generic Camera via YAML configuration
has been deprecated and will be removed in a future Home Assistant release.
Your existing YAML configuration is automatically imported on upgrade to this
release; and thus can be safely removed from your YAML configuration
after upgrading.
(@davet2001 – #52360) (documentation)
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;
}
The previously deprecated YAML configuration of the Huawei LTE
integration has been removed.
Huawei LTE 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.
(@scop – #68728) (documentation)
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;
}
The previously deprecated YAML configuration of the Launch Library
integration has been removed.
Launch Library 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.
(@balloob – #69008) (documentation)
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;
}
The previously deprecated YAML configuration of the LG webOS Smart TV
integration has been removed.
LG webOS Smart TV 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.
(@thecode – #69043) (documentation)
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;
}
The Mazda services start_engine
, stop_engine
, turn_on_hazard_lights
,
and turn_off_hazard_lights
are deprecated and have been replaced by button
entities. Please use the button entities instead.
(@bdr99 – #67597) (documentation)
The Mazda services start_charging
and stop_charging
are deprecated and
replaced by a charging switch entity. Please use the switch entity instead.
(@bdr99 – #68025) (documentation)
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;
}
The previously deprecated YAML configuration of the Met.no
integration has been removed.
Met.no is now configured via the UI, any existing YAML
configuration has been imported in previous releases and can now be safely
removed from your YAML configuration files.
(@frenck – #69027) (documentation)
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;
}
Setting reverse_order
has not been allowed (or worked) for a long time
and is removed.
The previously deprecated data_count
has been removed.
(@janiversen – #67236) (documentation)
The previously deprecated data types int
, uint
, and float
have been
removed.
For the devices that use non-standard register size, âcountâ can be used to
overwrite the default count of registers.
(@janiversen – #67268) (documentation)
There is now an automatic distinction between calling write_register
and write_registers
, depending on the configured datatype
(more than 16bits uses write_registers
).
The special situation, where write_registers
, count=1
is no longer supported.
(@janiversen – #67268) (documentation)
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;
}
The MySensors integration migrated to configuration via the UI a year ago.
Configuring MySensors via YAML configuration has been deprecated and
will be removed in a future Home Assistant release.
Your existing YAML configuration has been automatically imported since a
long time; and thus can be safely removed from your YAML configuration.
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;
}
The previously deprecated YAML configuration of the Nanoleaf
integration has been removed.
Nanoleaf 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.
(@balloob – #69004) (documentation)
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;
}
Legacy Works with Nest API deprecation is put on hold until issues with
SDM API OAuth signups are resolved (so this is an un-breaking change).
(@allenporter – #68715) (documentation)
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;
}
The binary sensor entities that would show if an update is available for the
Core, Web, or FTL component has been deprecated and will be removed in
Home Assistant Core 2022.6.
The PI-Hole integration now provides update
entities to replace
the deprecated entities.
(@mib1185 – #68749) (documentation)
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;
}
Support for multiple Plex Media Servers in the media browser has been added.
Automations and scripts which used the media picker to add Plex media items may
need to be updated if more than one Plex integration/server is configured.
(@jjlawren – #68321) (documentation)
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;
}
The climate entity attributes selected_schema
and available_schemas
will
be removed in a future release.
This release introduces the select
platform featuring these attribute values
as well as the ability to switch a schedule.
(@CoMPaTech – #68303) (documentation)
The naming of the locally present outdoor temperature sensor connected to
OpenTherm devices has been improved: outdoor_air_temperature
.
E.g. former sensor.opentherm_outdoor_temperature
is now visible
as sensor.opentherm_outdoor_air_temperature
.
The use of the zipcode-based outdoor_temperature
for other devices has
not changed.
(@CoMPaTech – #68303) (documentation)
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;
}
The previously deprecated YAML configuration of the PVOutput
integration has been removed.
PVOutput is now configured via the UI, any existing YAML
configuration has been imported in previous releases and can now be safely
removed from your YAML configuration files.
(@frenck – #67162) (documentation)
All, previously deprecated, additional sensor attributes of the PVOutput sensor,
have now been removed. All of these attributes now have their own dedicated
sensor.
This applies to the following PVOutput attributes:
energy_generation
power_generation
energy_consumption
power_consumption
efficiency
temperature
voltage
If you relied on these in your automations or scripts, you need to adopt those
to use the new separate sensors instead.
(@bdraco – #68481) (documentation)
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;
}
The following breaking changes are only breaking if you consume the Home
Assistant Core database manually or in custom integrations; For example,
when using custom queries or doing data analytics on your database.
Attributes are now stored in a state_attributes
table, storing the
same set of attributes once (many to one relationship).
Attributes represent roughly 21% of the database size. (28% if you exclude
statistics). On a few of the analyzed production instances, attributes
ranged from 82-88% duplicates of another set of attributes. Expected is
that this change will reduce the database size by roughly between 13-16%
on average.
(@bdraco – #68224) (documentation)
The domain
column has been removed from the states
table. The domain can
be derived from the entity_id
.
(@bdraco – #68404) (documentation)
The attributes for the sun.sun
entity are no longer recorded in the database.
As historical data can be derived from the astral
library without the
need to fetch it from the database, it was decided to remove the sun attributes
from the database since it frequently generates new attribute rows in the database.
(@bdraco – #68404) (documentation)
Integrations and platforms can now provide hints to the recorder to
exclude specific entity state attributes from being recorded.
This excludes attributes that hold little to no historical value
or are a static value. This significantly reduces the amount of data stored.
The following attributes are no longer recorded:
- For all entities:
attribution
andsupported_features
. - Camera:
token
andentity_picture
. - Climate:
hvac_modes
,fan_modes
,swing_modes
,min_temp
,max_temp
,min_humidity
,max_humidity
,target_temp_step
, andpreset_modes
. - Fan:
preset_modes
. - Light:
color_modes
,min_mireds
,max_mireds
, andeffect_list
. - Media Player:
entity_picture_local
,source_list
,media_postition
, andmedia_postition_updated_at
. - Water Heater:
operation_list
,min_temp
, andmax_temp
. - Humidifier:
min_humidity
,max_humidity
, andavailable_modes
. - Number:
min
,max
,step
, andmode
. - Select:
options
. - Siren:
available_tones
. - Vacuum:
fan_speed_list
. - Weather:
forecast
.
(@bdraco – #68404 #69155 #69156 #69158 #69159 #69165 #69192 #69193 #69194 #69195 #69196 #69199)
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;
}
Support for signal repetition for devices has been removed. RFXCOM internally
repeats packets as needed per protocol.
(@elupus – #67675) (documentation)
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;
}
Sensibo Air devices with an active room sensor (as the main measurement sensor)
will now retrieve the temperature and humidity from the room sensor.
(@gjohansson-ST – #66949) (documentation)
The previously deprecated YAML configuration of the Sensibo
integration has been removed.
Sensibo is now configured via the UI, any existing YAML
configuration has been imported in previous releases and can now be safely
removed from your YAML configuration files.
(@frenck – #69028) (documentation)
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;
}
The avg_power
and max_power
extra attributes for Emonitor have been
removed and now have their own sensors.
(@bdraco – #68479) (documentation)
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;
}
The sleep number firmness sensor entity in the SleepIQ integration is deprecated
and will be removed in a future release. A number entity is available,
providing the same information and can be used instead.
(@mfugate1 – #65841) (documentation)
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;
}
The SoChain integration has been disabled, its functionality relies
on older Python packages we can not provide.
(@emontnemery – #68856) (documentation)
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;
}
The previously deprecated YAML configuration of the Solax
integration has been removed.
Solax 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.
(@balloob – #69003) (documentation)
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;
}
Favorites are no longer included in the âSourceâ dropdown on Sonos devices.
These have been moved to the Media Browser and are also available using
the media selector (a.k.a. âPlay Mediaâ) in automation/script builders.
The selectable âSourceâ dropdown is now limited to static inputs,
such as TV and line-in sources.
The media_player.select_source
service call will continue to accept
favorite names. This compatibility feature may be removed in a future
release, but there are no current plans to do so.
This change was done to minimize writes to the database. Each modification
to the favorites would rewrite the complete list of favorites in the database
for each Sonos device.
(@jjlawren – #67931) (documentation)
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;
}
The binary sensor entities for the Supervisor integration that would show if
there was an update available for Home Assistant OS and add-ons have been
deprecated and will be removed in Home Assistant 2022.6.
The Supervisor integration now provides update
entities to replace the
deprecated entities.
(@ludeeus – #68475) (documentation)
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;
}
The previously deprecated YAML configuration of the SwitchBot
integration has been removed.
SwitchBot 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.
(@balloob – #69002) (documentation)
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;
}
The binary sensor entity that would show if there was an update available for
the Synology DSM firmware has been deprecated and will be removed in
Home Assistant Core 2022.6.
The Synology DSM integration now provides an update
entity to replace
the deprecated entity.
(@mib1185 – #68664) (documentation)
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;
}
The Tankerkoenig integration migrated to configuration
via the UI. Configuring Tankerkoenig 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.
(@mib1185 – #68386) (documentation)
The is_open
attribute is removed from all entities and now exposed as its own
sensor.
If you have automations or scripts relying on this attribute, you will need
to adjust them for this change.
(@mib1185 – #68925) (documentation)
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;
}
Template binary sensors with on or off delay, or trigger-based binary sensors
are now initialized to the last state on Home Assistant Core startup,
instead of to unknown
.
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;
}
The frequency
, current
, and voltage
attributes on powerwall
instant
meter sensors are now their own entities.
The is_active
attribute has been removed as it can already be
derived from the reading. As these sensors generated significant state changes,
the new sensors are not enabled by default. They can be enabled in the UI.
(@bdraco – #68345) (documentation)
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;
}
The Trafikverket Train integration migrated to configuration
via the UI. Configuring Trafikverket Train 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.
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;
}
The previously deprecated YAML configuration of the Trafikverket Weather Station
integration has been removed.
Trafikverket Weather Station 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 – #68336) (documentation)
- The attribute for measure time is now a proper iso formatted string.
- The attribute for available has been removed and the entity instead sets
its state to unavailable when not available.
Any automation or script depending on these attributes has to be updated to
reflect these 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;
}
The Unifi Protect last tripped attributes are now their own timestamp sensors.
The sensors are not enabled by default to minimize the amount of data stored
in the state machine and database. The new sensors can be enabled in the UI.
(@bdraco – #68347) (documentation)
The UniFi Protect Privacy Mode switch is now marked as a configuration entity.
This means that these switches are no longer automatically exposed or shown
on autogenerated Lovelace dashboards, Google Assistant, Alexa, or HomeKit.
(@balloob – #68954) (documentation)
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;
}
This integration now provides a switch entity that will let you pause/resume
monitoring of a monitor.
Because of that, you need to use the âmainâ UptimeRobot API key; if you
previously used that, you will not have to do anything, but if you used
the read-only API or a monitor-specific API key, the integration will
ask you to reauthorize on the first startup.
To get your API key, go to
My Settings on the
UptimeRobot website, at the bottom, you will find your key.
(@chemelli74 – #68224) (documentation)
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;
}
The utility_meter
tariff selector entities are now standard select entities
with entity_id select.X
instead of custom entities with entity_id
utility_meter.X
.
In addition:
- The service call
utility_meter.select_tariff
with argumenttariff
is
deprecated in favor of service callselect.select_option
with
argumentoption
. - The service call
utility_meter.next_tariff
is deprecated with no
replacement.
Backwards compatibility until the Home Assistant Core release 2022.7:
- The deprecated
utility_meter.X
entities are still available. - The service call
utility_meter.select_tariff
still works on
utility_meter.X
enties, but a warning is logged when itâs called. - The service call
utility_meter.next_tariff
still works
onutility_meter.X
enties, but a warning is logged when itâs called.
In Home Assistant Core release 2022.7:
- The deprecated
utility_meter.X
entities will no longer be available. - The service call
utility_meter.select_tariff
will be removed. - The service call
utility_meter.next_tariff
will be removed.
(@dgomes – #55690) (documentation)
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;
}
The previously deprecated YAML configuration of the Version
integration has been removed.
Version 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.
(@balloob – #69010) (documentation)
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;
}
The previously deprecated YAML configuration of the Whois
integration has been removed.
Whois is now configured via the UI, any existing YAML
configuration has been imported in previous releases and can now be safely
removed from your YAML configuration files.
(@frenck – #67163) (documentation)
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;
}
The firmware update binary_sensor
and button
entities are deprecated and
will be removed in Home Assistant 2022.6.
Instead, the WLED integration now provides a brand new update
entity
that replaces the functionality provided by those entities
(and offers more functionality).
(@frenck – #68454) (documentation)
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;
}
The previously deprecated YAML configuration of the Yale Smart Alarm
integration has been removed.
Yale Smart Alarm is now configured via the UI, any existing YAML
configuration has been imported in previous releases and can now be safely
removed from your YAML configuration files.
(@frenck – #69025) (documentation)
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;
}
The previously deprecated YAML configuration of the Yamaha Music Cast
integration has been removed.
Yamaha Music Cast is now configured via the UI, any existing YAML
configuration has been imported in previous releases and can now be safely
removed from your YAML configuration files.
(@frenck – #69033) (documentation)
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;
}
The Z-Wave JS siren entities will now return unknown
as a state if the
corresponding driver value is missing.
Previously the state defaulted to off
in these cases. You might need to
consider this in automations and scripts that rely on a Z-Wave JS siren
entity state.
(@MartinHjelmare – #67172) (documentation)
The selected fan speed has changed at specific percentages for Inovelli LZW36
fan controllers. Setting the percentage to 1% will no longer enable
the âbreezeâ mode; that functionality is instead accessed through a preset.
(@mkowalchuk – #60947) (documentation)
Farewell to the following
The following GPIO Integrations have been previously deprecated and have now been removed.
- BeagleBone Black GPIO
- BH1750
- Blinkt!
- BMP280 Environmental Sensor
- Bosch BME280 Environmental Sensor
- Bosch BME680 Environmental Sensor
- DHT Sensor
- Enviro pHAT
- HTU21D(F) Sensor
- MCP23017 I/O Expander
- MH-Z19 CO2 Sensor
- Orange Pi GPIO
- PCAL9535A I/O Expander
- pi4ioe5v9xxxx IO Expander
- PiFace Digital I/O (PFIO)
- Piglow
- pigpio Daemon PWM LED
- Raspberry Pi RF
- Raspihats
- Sense HAT
- Sensirion SHT31
- Time of Flight
More information about the removal of GPIO integrations can be found in
Architectural Decision Record 0019.
The following integrations are also no longer available as of this release:
- Apple Push Notification Service (APNS) has been removed. This does not
affect our mobile apps!
(@frenck – #67158) - Media Player Classic Home Cinema (MPC-HC), the integration is using
web scraping, which is no longer allowed.
(@frenck – #67189) - OpenZWave, was previously deprecated and is now removed. Please use
Z-Wave JS instead.
(@frenck – #68054) - SmartHab has been removed. The company behind it has been shut down.
(@outadoc – #67874) - Z-Wave (the old
zwave
integration), was previously deprecated and is
now removed. Please use Z-Wave JS instead.
(@frenck – #67221)
All changes
Of course, there is a lot more in this release. You can find a list of
all changes made here: Full changelog for Home Assistant Core 2022.4