Did you know that today - March 2nd - in 1949, the first automatic street light was lit in New Milford, Connecticut, USA? Seventy-three years later, we automate our entire homes 😎
Home Assistant Core 2022.3! And this release has a different and fresh “tune” to it! Yes, pun intended as this release brings tons of improvements involving media.
And what is so cool about it? It is not just about browsing media, it is even more about using it! Using media allows us to make the automations in our home more “personal”.
For example, having our favorite radio station playing when we get home or broadcasting announcements and sound bites to our speakers to notify us of stuff happening in and around our home. (I really need to install that camera at the front door now 😅.)
What are you using media for?
Enjoy the release!
- The Home Assistant Newsletter
- Media Selector and the new “Play media” action
- More media sources!
- Upload your media straight from the browser
- UI Upgrades
- Entity ID autocompletion
- Other noteworthy changes
- New Integrations
- Integrations now available to set up from the UI
- Release 2022.3.1 - March 3
- Release 2022.3.2 - March 6
- Release 2022.3.3 - March 7
- Release 2022.3.4 - March 11
- Release 2022.3.5 - March 15
- Release 2022.3.6 - March 21
- Release 2022.3.7 - March 23
- Release 2022.3.8 - March 29
- Need help? Join the community!
- Breaking Changes
- Updates for custom integration developers
- Farewell to the following
- All changes
In that case, you might like to sign-up for our newsletter instead! We’ll send you a new email once a month when a new release drops with the release’s highlights and interesting things we found in our community.
Our newsletter is free of any analytics and tracking. The sign-up is below, and we have enabled double opt-in to ensure no emails are sent if users don’t want them.
This release brings a new media selector and a “Play media” action. These make it super easy to use media in your automations and scripts.
Choose the “Play media” action when creating an automation, select the media player you’d like to play something on, and next… just browse and pick the media that you want it to play! Done! 🚀
Have you ever wanted to play your front door camera stream on your television when the doorbell rings? Well, this is now very possible with this update. Check out this video on how to set that up in only 1.5 minutes. 🤯
Of course, the above-shown “Play media” action and selector is incredible. But, you’d need some media to select! We already supported local media and things like Spotify, but wouldn’t it be cool if we had more!?
So, this release will bring in a bunch of new media sources.
Your Cameras! Your Lovelace Dashboards! You can just pick one of your cameras or Lovelace dashboards and “Play” them on a supported device (like a Google Nest Hub or television). But also text to speech!
But that’s not it; we also have new integrations adding new media sources. This release adds the DLNA Digital Media Server and Radio Browser integrations that allow the use of their sources with your media players.
You can browse and listen to thirty thousand radio stations from all around the world. But what is even cooler is that with the new “Play media” action in automations, you can just select your favorite radio station to be playing when, for example, you arrive home!
Adding the Radio Browser to your Home Assistant instance is as easy as clicking the My Home Assistant button below. No other setup prerequisites, logins, or API keys are need.
Getting your media files (pictures, images, soundbites, music) into your local media folder required you to use the Samba add-on (or something similar).
Can we improve this experience? Sure we can!
This release adds initial support for local media management straight from the Home Assistant frontend, allowing you to upload and remove files directly.
We have been working hard on upgrading the Home Assistant frontend to use Material Web Components (MWC) everywhere, saying goodbye to our old (and deprecated) paper style.
This allows our frontend to be up-to-date with the latest features and the latest style. As you’ll notice, these elements have a different look from the older style, so don’t be alarmed if your inputs look slightly different.
Updating to MWC gives us many new opportunities for the future and makes Home Assistant more accessible, for example, when using a screen reader.
The screenshot above shows the new MWC styling on the left and the previous paper styling from an older Home Assistant version on the right. The styling change mainly impacts input fields look and feel.
When working an automation, triggers now show live in the UI when they are triggering, allowing you to validate you set it up correctly.
In this little animation below, the remote is pressed a couple of times. The automation editor will show the “TRIGGERED” bar.
Each time the trigger triggers it will be indicated in the UI.
Additionally, you can now also trigger each individual action in your automation to test if the action you are creating runs as expected:
Our YAML configuration and Jinja templates used in, for example, automations, scripts, and frontend dashboards can be a really powerful customization tool. You can definitely appreciate this feature if you use our code editor in the frontend at times.
Thanks to @kubawolanin, we now have entity ID autocompletion when using the built-in code editor in the Home Assistant frontend 😎.
Just start typing an entity ID, and the code editor will try to suggest an entity ID and show the selected entity’s current state.
This works when you are configuring your Lovelace cards, creating advanced template conditions in your Automations & Scenes, and even if you are testing out your Jinja-template in the template developer tools.
Click the My button below to test it out on your Home Assistant instance:
There is much more juice in this release; here are some of the other noteworthy changes this release:
- ESPHome added support for locks! Thanks, @kbickar
- The HomeKit Controller integration has improved support for the Ecobee thermostats. Thanks, @Jc2k!
- When playing media in the media browser, the media player bar in the bottom will now have a volume control, thanks @balloob!
- Thanks to @kubawolanin, you can now filter and search the Home Assistant logs!
- When selecting a date in the frontend, a beautiful new date picker is shown. Thanks, @bramkragten!
- The IKEA TRÅDFRI integration has been worked on by @ggravlingen and @martinhjelmare. Lots of stability issues have been resolved, battery sensors for blinds have been added, and also support for the air purifier has been extended with sensors for air quality and filter time left.
- @rfleming71 added button entities to the OctoPrint integration, allowing you to control to resume, pause or stop a 3D print.
- The following integrations have added an option to set a
unique_idin their YAML configuration; If set, you can customize those entities in the UI.
- @starkillerOG has been chewing on NETGEAR, adding traffic sensors, a reboot button, but also switch to allow/block devices. Awesome!
- Don’t be alarmed now, but @jbouwh added support for Sirens to MQTT!
- @rubenverhoef also dove into MQTT and added additional command templates for MQTT lights.
- The Renault integration added HVAC, door, and lock sensors, thanks @epenet
- @bdraco added support to HomeKit for controlling the fan and oscillating of fans in climate entities. Nice!
- The GitHub integration became much more efficient and now has many more sensors available! Thanks @ludeeus and @timmo001, that is just amazing!
- @kbickar hasn’t been sleeping much as he modernized the SleepIQ integration, adding a bunch of new entities in the process.
- If you have a Samsung Smart TV, @epenet added support for showing your installed TV apps as media sources!
- Thanks to @chemelli74, you can now control the valves of those brand new Shelly TRVs!
We welcome the following new integrations this release:
- DLNA Digital Media Server, added by @chishm
- Fivem, added by @Sander0542
- Moehlenhoff Alpha2, added by @j-a-n
- Pure Energie, added by @klaasnicolaas
- Radio Browser, added by @frenck
- WiZ, added by @sbidy and @bdraco
- Z-Wave.Me Z-Way, added by @PoltoS
The following integrations are now available via the Home Assistant UI:
- International Space Station (ISS), done by @DurgNomis-drol
- MJPEG IP Camera, done by @frenck
- SleepIQ, done by @kbickar
- Bump soco to 0.26.4 (@jjlawren - #67498) (sonos docs)
- Check if UPnP is enabled on Fritz device (@chemelli74 - #67512) (fritz docs)
- Fix MQTT config flow with advanced parameters (@jbouwh - #67556) (mqtt docs)
- Highlight in logs it is a custom component when setup fails (@balloob - #67559)
- Bump pyobihai (@ejpenney - #67571) (obihai docs)
- Fix data type for growatt lastdataupdate (#67511) (@muppet3000 - #67582) (growatt_server docs)
- Add guards for HomeKit version/names that break apple watches (@bdraco - #67585) (homekit docs)
- Add unique_id to Fritz diagnostics (@chemelli74 - #67384) (fritz docs)
- Suppress roku power off timeout errors (@ctalkington - #67414) (roku docs)
- rfxtrx: bump to 0.28 (@elupus - #67530) (rfxtrx docs)
- Remove use of deprecated xiaomi_miio classes (@rytilahti - #67590) (xiaomi_miio docs)
- Downgrade Renault warning (@epenet - #67601) (renault docs)
- Handle elkm1 login case with username and insecure login (@bdraco - #67602) (elkm1 docs)
- Fix sql false warning (@gjohansson-ST - #67614) (sql docs)
- Allign logic for Fritz sensors and binary_sensors (@chemelli74 - #67623) (fritz docs)
- Improve logging for Fritz switches creation (@chemelli74 - #67640) (fritz docs)
- Fix Fan template loosing percentage/preset (@frenck - #67648) (template docs)
- Fix reload of media player groups (@emontnemery - #67653) (group docs)
- Bump pydroid-ipcam to 1.3.1 (@MartinHjelmare - #67655) (android_ip_webcam docs)
- Ensure elkm1 can be manually configured when discovered instance is not used (@bdraco - #67712) (elkm1 docs)
- Add missing disconnect in elkm1 config flow validation (@bdraco - #67716) (elkm1 docs)
- Update aiolifx dependency to resolve log flood (@Djelibeybi - #67721) (lifx docs)
- Fix regression with homekit_controller + Aqara motion/vibration sensors (@Jc2k - #67740) (homekit_controller docs)
- Fix false positive MQTT climate deprecation warnings for defaults (@jbouwh - #67661) (mqtt docs)
- Fix timezone for growatt lastdataupdate (@muppet3000 - #67684) (growatt_server docs)
- Fix temperature stepping in Sensibo (@gjohansson-ST - #67737) (sensibo docs)
- Prevent polling from recreating an entity after removal (@bdraco - #67750)
- Fix internet access switch for old discovery (@chemelli74 - #67777) (fritz docs)
- Fix profile name update for Shelly Valve (@chemelli74 - #67778) (shelly docs)
- Handle fan_modes being set to None in homekit (@bdraco - #67790) (homekit docs)
- Catch Elgato connection errors (@frenck - #67799) (elgato docs)
- Update frontend to 20220301.1 (@bramkragten - #67812) (frontend docs)
- Bump python-miio version to 0.5.11 (@rytilahti - #67824) (xiaomi_miio docs)
- Prevent scene from restoring unavailable states (@bdraco - #67836) (scene docs)
- Fix discord embed class initialization (@cheng2wei - #67831) (discord docs)
- Support playing local “file” media on Kodi (@rigrig - #67832) (kodi docs)
- Bump zwave-js-server-python to 0.35.2 (@raman325 - #67839) (zwave_js docs)
- Add missing callback decorator to sun (@bdraco - #67840) (sun docs)
- Fix shelly duo scene restore (@thecode - #67871) (shelly docs)
- Make sure blueprint cache is flushed on script reload (@elupus - #67899) (script docs)
- Update radios to 0.1.1 (@frenck - #67902) (radio_browser docs)
- Correct local import of paho-mqtt (@emontnemery - #67944) (mqtt docs)
- Rollback pyinsteon (@teharris1 - #67956) (insteon docs)
- Bump pysabnzbd to 1.1.1 (@Shutgun - #67971) (sabnzbd docs)
- Bump pymediaroom (@dgomes - #68016) (mediaroom docs)
- Fix WebSocketTimeoutException in SamsungTV (@epenet - #68114) (samsungtv docs)
- 20220301.2 (@zsarnett - #68130) (frontend docs)
- Filter IPv6 addresses from doorbird discovery (@bdraco - #68031) (doorbird docs)
- Fix turning amcrest camera on and off (@flacjacket - #68050) (amcrest docs)
- Fix Shelly EM/3EM invalid energy value after reboot (@thecode - #68052) (shelly docs)
- Default somfy_mylink shade’s _attr_is_closed to
None(@cthornton - #68053) (somfy_mylink docs)
- Bump amcrest version to 1.9.7 (@flacjacket - #68055) (amcrest docs)
- Bump pyisy to 3.0.5 (@bdraco - #68069) (isy994 docs)
- Update home_connect to 0.7.0 (@BraveChicken1 - #68089) (home_connect docs)
- Fix MQTT false positive deprecation warnings (@jbouwh - #68117) (mqtt docs)
- Fix TypeError in SamsungTV (@epenet - #68235) (samsungtv docs)
- Fix lyric climate (@nprez83 - #67018) (lyric docs)
- Fix finding matrix room that is already joined (@antlarr - #67967) (matrix docs)
- Respect disable_new_entities for new device_tracker entities (@mib1185 - #68148) (device_tracker docs)
- Add missing await [velbus] (@cdce8p - #68153) (velbus docs)
- Fix point by adding authlib constraint (@cdce8p - #68176) (point docs)
- Update opensensemap-api to 0.2.0 (@frenck - #68193) (opensensemap docs)
- Bump renault-api to 0.1.10 (@epenet - #68260) (renault docs)
- Hue integration: update errors that should be supressed (@marcelveldt - #68337) (hue docs)
- Filter IPv6 addreses from enphase_envoy discovery (@bdraco - #68362) (enphase_envoy docs)
- Handle Hue discovery errors (@balloob - #68392) (hue docs)
- Fix tplink color temp conversion (@bdraco - #68484) (tplink docs)
- Fix targeting all or none entities in service calls (@emontnemery - #68513)
- Add support for general API exception in Sense integration (@kbickar - #68517) (sense docs) (emulated_kasa docs)
- Add cooldown timer before Sonos resubscriptions (@jjlawren - #68521) (sonos docs)
- Hue handle HTTP errors (@balloob - #68396) (hue docs)
- Simplify Hue error handling a bit (@marcelveldt - #68529) (hue docs)
- Filter IPv6 addresses from AppleTV zeroconf discovery (@bdraco - #68530) (apple_tv docs)
- Bump aiohue to 4.4.0 (@marcelveldt - #68556) (hue docs)
- Bump aiohue to version 4.4.1 (@marcelveldt - #68579) (hue docs)
- Bump py-synologydsm-api to 1.0.7 (@mib1185 - #68584) (synology_dsm docs)
- Revert “Take Abode camera snapshot before fetching latest image” (@kevdliu - #68626) (abode docs)
- Fix screenlogic to get the macaddress from discovery (@bdraco - #68687) (screenlogic docs)
- Ensure solaredge can still be setup with an ignored entry (@bdraco - #68688) (solaredge docs)
- Add option to connect to elkm1 non-secure when secure is discovered (@bdraco - #68735) (elkm1 docs)
- Increase zwave_js add-on start attempts before timeout (@MartinHjelmare - #68736) (zwave_js docs)
- Fix ignoring elkm1 discovery (@bdraco - #68750) (elkm1 docs)
- Update sense library to 0.10.4 (@kbickar - #68816) (sense docs) (emulated_kasa docs) (dependency)
- Pin click to fix typer issue (@epenet - #68808)
- Cleanup package constraints (@epenet - #68833)
Home Assistant has a great community of users who are all more than willing to help each other out. So, join us!
Are you more into email? Sign-up for our newsletter to get the latest news about features and things happening in our community straight into your inbox.
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.
This breaking change does NOT apply to users of the Z-Wave JS integration.
This release of Home Assistant Core 2022.3 will be the final release that
provides these integrations. Both the old
are pending removal for Home Assistant Core 2022.4.
ozw integration has been deprecated before as the upstream
projects we depends on, for e.g., libraries and add-on containers,
are no longer maintained.
As Home Assistant is moving towards support for Python 3.10, it became clear
that the old
zwave integration isn’t compatible and thus is going to
be removed for that reason.
If you are still running your Z-Wave network on either of those deprecated integrations, we highly recommend migrating to the newer Z-Wave JS integration after upgrading to this release.
The new Z-Wave JS will provide you with a modern, more feature-rich, maintained, and stable Z-Wave stack for the future.
See our documentation for a guide on Migrating from previous Z-Wave implementations.
The AVM FRITZ!Box Call Monitor integration previously migrated to configuration via the UI. Therefore, configuring the AVM FRITZ!Box Call Monitor integration 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 can be safely removed from your YAML configuration.
The native IKEA Tradfri groups are now deprecated, and this feature will be removed from the integration in a future release.
Tradfri groups rely on sending frequent requests (polling) to the gateway to check the states of the groups. Continuously polling the gateway causes stability issues of the gateway, sometimes causing it to crash and requiring a restart. We propose using light groups instead.
Configuring IKEA Tradfri via YAML configuration has been deprecated and will be removed in a future Home Assistant release. Any remaining YAML configuration has been automatically imported for a long time and thus can be safely removed from your YAML configuration.
The International Space Station (ISS) integration migrated to configuration via the UI. Configuring International Space Station (ISS) 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.
MQTT binary sensors, lights, fans, humidifiers, and switches can now have
unknown state in case the state is unknown.
This change was made to make the MQTT entities more consistent with how these entities behave in other parts of Home Assistant. You may need to adapt your script and automations to this change.
An MQTT configuration in
configuration.yaml no longer results in an
imported integration entry, MQTT must now be set up from the frontend.
Please note that:
- Any previously imported configuration is still valid, this PR does not remove or modify imported configurations.
- It’s still possible to configure MQTT entities and advanced broker configurations, such as SSL certificates, via YAML.
The MQTT climate
away mode configuration settings are now
deprecated and removed in Home Assistant Core 2022.9.0.
Please use the new
preset_mode configuration options instead.
Configuring basic MQTT broker options with YAML is now deprecated, this affects the following configuration variables:
Configuring those options can instead be done via the UI.
modem_callerid.reject_call has been deprecated and will be removed in
Home Assistant 2022.4.
The integration now provides a button entity that can be used instead.
If you have been using the
reject_call service in your automation or scripts,
you will need to adopt those to this change.
The sensors for the “last order ETA start/end” have been renamed to “next delivery ETA start/end” and will now contain the ETA of the first upcoming delivery.
If multiple deliveries are planned, the
contain information about the first upcoming delivery,
last_order_* sensors contain information
about the last-placed order.
Changing the scan interval option of Plugwise devices in the integration configuration has been removed. Home Assistant will, by default, use a sane and safe interval.
If you, however, still need to customize the interval, you can do so by
disabling automatic updates for the integration and using an automation
to trigger on your preferred interval and call
The Plugwise Auxiliary
sensor entities for heating and cooling have been
removed and replaced by equivalent
binary_sensor entities could have the
off, and in case the endpoint was unreachable:
However, it wasn’t able to have the
unknown state, which has been added.
binary_sensor entity can now have the
You might need to adapt your automations or scripts to account this new
The old Twitch API, this integration previously relied on, is shutting down soon.
Therefore, this release updated the Twitch integration to support the new API,
and now requires a
client_secret as well as a
client_id, and new OAuth
tokens need to be issued with the
The Updater integration has been deprecated; other integrations have replaced
all its functionality. It is no longer a part of
and if you have the
updater integration defined directly in your YAML
configuration, please remove it.
- For the
binary_sensor.updaterentity, you can set up the Version integration with the “Home Assistant Website” source to get the same functionality back.
- The configuration options
updater:configuration entry was deprecated in 2021.4. If you still want to share that, please use the new Analytics integration.
solar power production has been removed. This sensor was
a collection of multiple values.
Instead, we now provide four new sensors that each provides the data as single value:
solar power production today
solar power production this week
solar power production this month
solar power production this year
You might need to adapt your automations or scripts to this change. The stale restored sensor can be safely removed.
The Xbee integration has been disabled due to the third-party library we depend on not being compatible with Python 3.10.
Home Assistant is working towards adding support for Python 3.10, and we had to disable this integration now to be able to get our development and testing environments upgraded.
zwave_js.ping service is now deprecated in favor of a new ping
entity. You can replace any
zwave_js.ping service calls in your automation
button.press call against the new entity with no change in
zwave_js.ping service will be removed in a future release of Home Assistant.
With this release, you will need to update your zwave-js-server instance.
- If you use the zwave_js add-on, you need to have at least version
- If you use the Z-Wave JS 2 MQTT add-on, you need to have at least version
- If you use the zwavejs2mqtt Docker container, you need to have at least version
- If you run your own Docker container, or some other installation method,
you will need to update your zwave-js-server instance to at least
Your Z-Wave controllers will no longer get a node status sensor. While this is technically a breaking change, in practice it should not be because the controller is always alive.
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.
In November 2020, with the release of Python pip 20.3, a new dependency resolver was introduced in pip, which is more strict.
Home Assistant held back supporting the new pip version because of the large number of dependencies we have, it took time for us to adjust to this change. Meanwhile, Python pip would only warn for conflicts.
As we have resolved almost all dependency conflicts, we have now lifted the pip version pinning, and thus now use the newer and stricter pip version.
If you use external dependencies in your custom integration, you might be impacted by the new pip resolver. Your dependencies (and their version ranges) must be compatible with the dependencies Home Assistant has; otherwise, the installation of your custom integration will not succeed.
You can find more information on the new dependency resolver in Python pip here:
We now use version 3.8+ of
aiohttp, which requires
which has multiple breaking changes:
async_timeout.current_taskhas been removed.
timeout.remainingproperty has been removed.
timeout.timeoutproperty has been removed.
Previously we had a backward-compatible layer in Home Assistant to ease this change, which has now been removed.
If a user has the
http integration configured to use SSL,
it only accepts HTTPS traffic. This means that the internal URL needs
to be set to use HTTPS too, and for the certificate to be valid,
this needs to be a domain name.
A lot of integrations that we send the URL to will fail if the certificate is not valid (ie. Sonos, Cast).
To help the user get this right, the default for the
will now prefer the external address if SSL is configured.
This has a higher chance of being correct, delivering a better out-of-the-box experience to a larger group of users.
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 was previously deprecated and the fallback/backward compatibility has now been removed.
Currently, zeroconf returns IPv4 addresses in the
host field. If there were
no advertised IPv4 addresses, the discovery would fail. For example,
a specific manufacturer’s Thread Border Router advertised devices as
IPv6-only zeroconf services.
IPv6-only devices can now be discovered and an IPv6 address will
be present in the
host property for those devices.
Developers who need to filter discovered devices by IP address version
homeassistant.util.network.is_ipv6_address to reject zeroconf
discoveries they do not want.
The following integration is no longer available as of this release:
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.3