2022.3: Select and play media

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!

../Frenck

The Home Assistant Newsletter

We realize you might like email more than watching this blog, our Twitter, or notifications in our Discord chat to stay on top of the latest Home Assistant news.

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.

Sign up for the Home Assistant newsletter

Media Selector and the new “Play media” action

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! 🚀

Screenshot showing the new media selector and play media action

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

More media sources!

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!

Screenshot showing playing TTS as a media action

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.

Screenshot showing the Radio Browser

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.

Upload your media straight from the browser

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.

Screenshot showing media management

UI Upgrades

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.

Screenshot showing the styling difference between MWC and paper style

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.

Triggered!

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.

Screen recording showing automation triggers triggering showing in the UI 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:

Screenshot showing how to run an individual action from the automation editor

Entity ID autocompletion

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.

Screenshot showing the code editor with entity ID autocompletion

Theme: Waves by Tim Cowell.

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:

Other noteworthy changes

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_id in 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!

New Integrations

We welcome the following new integrations this release:

Integrations now available to set up from the UI

The following integrations are now available via the Home Assistant 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!

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 newsletter to get the latest news about features and things happening in our community straight into your inbox.

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

Z-Wave / OpenZWave

This breaking change does NOT apply to users of the Z-Wave JS integration.

This is a breaking change notice regarding the older Z-Wave and OpenZWave integrations, which both have been previously deprecated.

This release of Home Assistant Core 2022.3 will be the final release that provides these integrations. Both the old zwave and ozw integrations are pending removal for Home Assistant Core 2022.4.

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

ASUSWRT

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

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

(@ollo69 - #65904) (documentation)

AVM FRITZ!Box Call Monitor

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.

(@tkdrob - #61762) (documentation)

ebusd

A typo was fixed in the ebusd integration for monitored condition WaterPressure. It is incorrectly named “WaterPreasure” in the code.

The documentation represents the correct value.

(@nklebedev - #66355) (documentation)

Elexa Guardian

Elexa Guardian no longer accepts the previously deprecated entity_id parameter in service calls; automations and scripts calling those services now require a device_id parameter.

(@bachya - #65484) (documentation)

Freebox

The freebox.reboot service is now deprecated and replaced by a dedicated reboot button entity; please use that entity to reboot the Freebox instead.

(@epenet - #65501) (documentation)

IKEA TRÅDFRI

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.

(@ggravlingen - #65226) (documentation)

International Space Station (ISS)

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.

(@DurgNomis-drol - #64987) (documentation)

MQTT

MQTT binary sensors, lights, fans, humidifiers, and switches can now have an 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.

(@jbouwh - #65183 #65308 #65301 #65302 #65294) (documentation)


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.

(@emontnemery - #66160) (documentation)


The MQTT climate hold and 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.

(@jbouwh - #66062) (documentation)


Configuring basic MQTT broker options with YAML is now deprecated, this affects the following configuration variables:

  • birth_message
  • broker
  • discovery
  • password
  • port
  • username
  • will_message

Configuring those options can instead be done via the UI.

(@emontnemery - #66247) (documentation)

Nest

Older Nest cameras no longer use thumbnail images from events, and instead always use the live stream.

You should use the newer Nest Media Source APIs to fetch media for events.

(@allenporter - #66427) (documentation)

NINA

Districts of Hamburg and Berlin have been removed. Alternatively, Hamburg, Freie und Hansestadt and Berlin, Stadt can be used.

(@DeerMaximum - #65914) (documentation)

Overkiz (by Somfy)

Previously, a Myfox Camera Shutter was mapped to a (non-functional) cover entity. This is now changed to be a functional switch entity instead.

(@iMicknl - #66088) (documentation)

Phone Modem

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

(@tkdrob - #66742) (documentation)

Picnic

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 next_delivery_* sensors contain information about the first upcoming delivery, while the last_order_* sensors contain information about the last-placed order.

(@corneyl - #66474) (documentation)

Plugwise

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 homeassistant.update_entity service.

(@frenck - #65808) (documentation)


The Plugwise Auxiliary sensor entities for heating and cooling have been removed and replaced by equivalent binary_sensor entities.

(@frenck - #66259) (documentation)

Radarr

The “Wanted” option for the Radarr integration has been removed, as this was an invalid endpoint.

If you have this option configured in your YAML configuration, you will need to remove it.

(@tkdrob - #63818) (documentation)

Renault

Previously, Renault binary_sensor entities could have the state on or off, and in case the endpoint was unreachable: unavailable.

However, it wasn’t able to have the unknown state, which has been added.

So, a binary_sensor entity can now have the on, off, unavailable, or unknown state.

You might need to adapt your automations or scripts to account this new unknown state.

(@epenet - #65997) (documentation)

Sensibo

The optional battery voltage attribute has been removed from the climate entity. If you used this attribute in your automations or scripts, you’ll need to adjust them to handle this change.

(@gjohansson-ST - #64753) (documentation)

SimpliSafe

SimpliSafe no longer accepts the, previously deprecated, system_id parameter in service calls; automations and scripts calling those services now require a device_id parameter instead.

(@bachya - #65483) (documentation)

Sonarr

Sonarr v2 is no longer supported and has been deemed End of Life by its developers since early 2021. Please upgrade to Sonarr v3 to continue using the Sonarr integration.

The attribute date format of the Wanted sensor is now isoformated with a time of airing.

(@ctalkington - #65349) (documentation)

Synology DSM

The Home-Mode switch of the Surveillance Station is no longer categorized to be a configuration entity since it is part of the primary functionality.

(@mib1185 - #65949) (documentation)

Twitch

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 user:read:subscriptions scope.

(@Doridian - #67153) (documentation)

Updater

The Updater integration has been deprecated; other integrations have replaced all its functionality. It is no longer a part of default_config, and if you have the updater integration defined directly in your YAML configuration, please remove it.

  • For the binary_sensor.updater entity, you can set up the Version integration with the “Home Assistant Website” source to get the same functionality back.
  • The configuration options reporting and include_used_components for the updater: configuration entry was deprecated in 2021.4. If you still want to share that, please use the new Analytics integration.

(@ludeeus - #67038) (documentation)

Vallox

The previously deprecated vallox.set_profile service has now been removed. Please use the standard fan.set_preset_mode service as a replacement.

(@andre-richter - #66655) (documentation)

Viessmann ViCare

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

(@tschnilo - #63339) (documentation)

Workday

Workday now requires a 2-character ISO 3166-1 country code instead of the country’s name. States, provinces and constituent countries must now be listed using the province setting. Please see the documentation for examples.

XBee

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.

(@frenck - #59729)

Z-Wave JS

The zwave_js.ping service is now deprecated in favor of a new ping button entity. You can replace any zwave_js.ping service calls in your automation with a button.press call against the new entity with no change in functionality.

The zwave_js.ping service will be removed in a future release of Home Assistant.

(@raman325 - #66129) (documentation)


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 0.1.54..
  • If you use the Z-Wave JS 2 MQTT add-on, you need to have at least version 0.35.2.
  • If you use the zwavejs2mqtt Docker container, you need to have at least version 6.5.2.
  • 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 1.15.0.

(@raman325 - #66785) (documentation)


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.

(@raman325 - #67209) (documentation)

Updates for custom integration developers

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

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

Integration dependencies and Python pip

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:

https://pip.pypa.io/en/latest/user_guide/#changes-to-the-pip-dependency-resolver-in-20-3-2020

async_timeout()

We now use version 3.8+ of aiohttp, which requires async_timeout 4.0+ which has multiple backward-incompatible changes:

  • async_timeout.timeout drops the loop= keyword arg.
  • async_timeout.current_task has been removed.
  • The timeout.remaining property has been removed.
  • The timeout.timeout property has been removed.

Previously we had a backward-compatible layer in Home Assistant to ease this change, which has now been removed.

(@frenck - #65732)

Helper: get_url()

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

(@balloob - #66039)

Helper: split_entity_id()

split_entity_id will now raise a ValueError if the passed value does not follow the basic entity ID format (<domain>.<object id>).

Previously it could return a list with a single item.

(@balloob - #66835)

Sensors with date/time

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

Returning an iso formatted date(time) string in these cases was previously deprecated and the fallback/backward compatibility has now been removed.

(@frenck - #65734)

Zero-configuration networking (zeroconf)

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 should use homeassistant.util.network.is_ipv4_address or homeassistant.util.network.is_ipv6_address to reject zeroconf discoveries they do not want.

(@roysjosh - #66455)

Farewell to the following

The following integration is no longer available as of this release:

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