2021.2: Z-Wave... JS!

59 minutes reading time Comments

Dear reader,

Usually, I try to write a small introduction that recaps the release, while putting a bit of my view in it as well. This release, however, I’m struggling to find the right words…

So there is DHCP discovery added, which is super nice! And some really helpful new Blueprint selectors, tons of UI tweaks! But honestly…

Have you heard about Z-Wave JS?!

Well, out of nowhere, a huge bunch of developers came together this month and spat out a completely new, full-blown, fast, slick, sexy, complete, Z-Wave integration! 🤯

So, thanks guys! An achievement beyond words, really; You all rock ❤️

Enjoy the release!

../Frenck

Erik Montnemery joins Nabu Casa

Today, we are proud to announce that Erik Montnemery has joined Nabu Casa to work full-time on the Home Assistant project.

Some of you might know Erik better by his GitHub handle: @emontnemery, or by one of the integrations he works on: Cast, Tasmota and MQTT!

We are excited to have you aboard Erik! Welcome!

Python 3.7 dropped, Python 3.9 supported

Support for Python 3.7 has been removed, raising the minimum Python version you need to run Home Assistant Core to Python 3.8. Python 3.7 was already deprecated since Home Assistant Core 0.116.0.

This is only a concern if you are running Home Assistant Core directly on Python. If you run Home Assistant OS, Supervised or Container, you don’t have to worry about this, as the Home Assistant project takes care of this for you.

However, say hello to: Python 3.9. As of this release, Python 3.9 is fully supported and tested.

Z-Wave JS

This release brings you the Z-Wave JS integration!

A brand new integration for Z-Wave in Home Assistant, full-blown, created in just a month by a bunch of awesome people!

More and more people were concerned about the future of Z-Wave with Home Assistant; meanwhile the Z-Wave JS project was rapidly growing and gathering a large community around it. Long story short: Home Assistant and Z-Wave JS teamed up! And a lot of contributors jumped on the train!

This new integration is based on the same base principles as the OpenZWave integration: It is decoupled from Home Assistant. Instead of MQTT, the Z-Wave JS integration uses a WebSocket connection to a Z-Wave JS server.

This means, in order to use this new integration, you’ll need to run the Z-Wave JS server that sits in between your Z-Wave USB stick and Home Assistant. There are multiple options available for running the Z-Wave JS server, via Docker or manually, and there is also a Home Assistant add-on available.

If you run an installation with a Supervisor, the add-on will even be set up automatically for you.

Current state of Z-Wave JS

The new Z-Wave JS integration is amazingly complete. It supports the following platforms from the start: Binary Sensors, Climate, Covers, Fans, Lights, Locks, Sensors and Switches. Scenes are also supported!

Besides that, it is just blazing fast! ⚡️

While fast-growing, it is a new integration and there is still a lot in progress. Of course, no doubt, there will be bugs. Bugs that will be squashed and handled. Please, be sure to report issues in our issue tracker.

What is left? See our Z-Wave JS integration roadmap for those details.

Thanks to all

Thanks to all of the following people, the Z-Wave JS integration was able to see the light in just a month!

Yes, that is an awful lot of people! Amazing how this all came together and incredible work!

What about the old Z-Wave integration?

The old zwave integration has been based on OpenZWave 1.4, which is really old and does not get any upstream updates anymore. This also means that it is hard for us to keep it in a working state for the upcoming future.

Therefore, as of today, the old Z-Wave is marked as being deprecated.

If one is starting with Home Assistant and Z-Wave, the zwave integration is no longer recommended. For existing users, we recommend migrating to the Z-Wave JS integration. However, don’t panic, zwave is deprecated but not removed yet. We currently have no plans for removing it, unless it can no longer be made to be build for the latest Python

What about the OpenZWave beta integration?

Over a year ago, Home Assistant started working on the OpenZWave integration. Based on OpenZWave 1.6 and the OZW daemon, using MQTT as a transport. This project was promising and something we put a lot of time and effort in.

Unfortunately, the OpenZWave project itself became a bit stale as most of the upstream development is done by a single person: Justin Hammond (Fishwaldo).

Quite a few people were worried about the lesser activity on OpenZWave. Justin has responded on our forum on what is happening in his life and it is sad to read how many people have personally impacted him negatively.

Is OZW Dead - No. I’ll tinker with it, I’ll make changes as time allows, but it will be at my own pace, to scratch my own itches now.

Let us be straight here: OpenZWave is an 11 year-old project, which is used by an incredible amount of systems (besides Home Assistant) in this world, with an even greater track record. So:

Thank you Justin for all you have done in all those years!

The team that was working on the OZW integration have shifted their focus to the new Z-Wave JS integration. We don’t think the OpenZWave integration will make it out of beta. We recommend Home Assistant users migrate to the Z-Wave JS integration.

No more badges in auto generated dashboards

If you are using an auto generated Lovelace dashboard, you probably always had a ton of badges on the top of your dashboard. If there are just a few it works, but as more start to appear, it soon becomes cluttered.

Screenshot of the old badges clutter Screenshot of the old badges clutter that is now gone!

We decided to no longer use badges in the auto generated Lovelace dashboards. Instead, every entity is neatly grouped by area or domain in an entities card.

If you liked the badges, you can always take control of your dashboard and add them.

DHCP Discovery

Home Assistant now listens on your network for devices that request a IP address. Based on those intercepted messages, Home Assistant can now discover integrations for you to use with the discovered devices.

This really powerful addition has been made by @bdraco, and many integrations have quickly enriched their integrations to use this new discovery method.

So as of this release, your Home Assistant might actually find some new devices it can use! Thanks @bdraco!

New Blueprint selectors

For our Blueprint fanatics, some new goodies to the Blueprint has been added this release. Thanks to @thomasloven, we now have two new selectors:

Screenshot of the new text selector Screenshot of the text selectors.

  • An object selector: Shows an YAML editor in the UI.
  • An text selector: Show a single line text input or text area for longer messages in the UI.
  • Blueprint descriptions now support Markdown.

Screenshot of new object selector Screenshot of the object selector, giving a YAML input field.

Cloud Text to Speech settings

Nabu Casa has been offering an amazing text to speech service for a while now, yet it was hard to find, and even harder to setup and use.

To fix this, a new settings UI has been added where you can select the default language and gender to use for the text to speech service, so you no longer have to attach that to every service call. You can find it in the Home Assistant Cloud panel.

Screenshot of Cloud TTS options Screenshot of Cloud TTS options.

We also added the ability to try the chosen settings right in your browser. Click the try button, enter some text and click play to hear the text being spoken.

Other noteworthy changes

This release has no big new features, but we do have quite a bit of tweaks that are definitely noteworthy to mention.

  • We now give you a clearer reason why your Lovelace card configuration is not supported in the UI editor thanks to @spacegaier.
  • Shelly RGB devices are now fully supported!! Nice @chemelli74!
  • @dmulcahey Added filtering and zoom to node to the ZHA network visualization. Very useful to find you Zigbee network issues.
  • The deCONZ integration added support for logging basic event in the logbook. Nicely done @Kane610.
  • The Tasmota integration is out of beta! Awesome @emontnemery!
  • @spacegaier Added support for themes on the media card.
  • The items in the shopping list card can be ordered using drag & drop! Thanks @ShaneQi!
  • Newly ignored discovered integrations now show a name of the item ignored. This makes it easier to undo that later.
  • @balloob made a new framework that can detect significant changes in entities, allowing to reduce the amount of update we need to send to both Google Assistant and Alexa!
  • Setting up Lutron Caseta was quite a pain, but not anymore! @bdraco added one-touch pairing to the integration set up!
  • If you use light profiles, @Adminiuga is your man. All parameters of a light profile can now be optional and default profiles are always applied.
  • Dropdown helpers (input_select) got some new service capabilities added by @l-mb. They can now cycle through the options, and service calls to jump to the first or last item have been added as well.
  • If you have a Foscam camera, @joe248 added a service to move to PTZ presets.

New Integrations

We welcome the following new integrations this release:

New Platforms

The following integration got support for a new platform:

Integrations now available to set up from the UI

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

Release 2021.2.1 - February 5

Release 2021.2.2 - February 9

Release 2021.2.3 - February 11

If you need help…

…don’t hesitate to use our very active forums or join us for a little chat.

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

Breaking Changes

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

Python 3.7

Support for Python 3.7 has been dropped, after being deprecated since Home Assistant 0.116.

This is only a concern if you are running Home Assistant Core directly on Python. You can check the Python version Home Assistant uses by going to the information screen in Configuration -> Info.

If you run Home Assistant OS, Supervised or Container, you don’t have to worry about this, as the Home Assistant project takes care of this for you. As a matter of fact, if you use one of those methods, you are already running Python 3.8.

(@frenck - #43805)

Z-Wave

The old zwave integration is now considered legacy and deprecated. This integration is still based on OpenZwave 1.4, which has been out of active maintenance for quite some time now.

Alternatively, you can move to one of the other Z-Wave solutions Home Assistant offers:

  • OpenZWave (currently not maintained)

  • Z-Wave JS (introduced in this release, recommended)

PTVSD

The PTVSD extension has deprecated a couple of releases back and is now removed. The debugpy integration is a full replacement for this integration.

(@frenck - #44748)

Tado

Tado’s primary functionality has fully transitioned to configuration via UI. YAML configuration has been removed except for device_tracker. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

The device_tracker platform continues to use YAML, and will be updated at a later date when the device tracker platform is modernized.

Tado zone sensors have been replaced by their corresponding binary_sensors. Therefore, you’ll have to update Lovelace panels, scripts and automations referring to the following sensors by their corresponding binary sensor (replace sensor with binary_sensor):

  • sensor.ZONE_early_start is replaced by binary_sensor.ZONE_early_start
  • sensor.ZONE_link is replaced by binary_sensor.ZONE_link
  • sensor.ZONE_open_window is replaced by binary_sensor.ZONE_open_window
  • sensor.ZONE_overlay is replaced by binary_sensor.ZONE_overlay
  • sensor.ZONE_power is replaced by binary_sensor.ZONE_power

The following state attributes have been removed:

  • sensor.ZONE_overlay: termination
  • sensor.ZONE_open_window: open_window_attr

(@Noltari - #44576) (@bdraco - #45384) (tado docs)

KNX

Some knx_events changed the name of event_data fields:

  • address renamed to destination
  • Added source
  • Added direction
  • Added telegramtype

Additionally:

  • fire_event in the knx configuration is deprecated.
  • fire_event_filter in the knx configuration is renamed to event_filter.

(@farmio - #44749 #45248) (knx docs)

RainMachine

RainMachine services now require an entity_id, an area_id, or a device_id parameter to be provided. You need to check your automations to make sure all RainMachine service calls have those.

(@bachya - #44139) (rainmachine docs)

ecobee

The current state of the ecobee integration always behaves as if the selected hold duration is Until next scheduled activity.

With this change the following settings are now respected:

  • 2 hours
  • 4 hours
  • Until I change it

If you rely on the previous behavior may need to update your automations to account for the support for the new settings.

(@jamincollins - #40520) (ecobee docs)

August

August has fully transitioned to configuration via UI. YAML configuration will be removed in an upcoming version. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45039) (august docs)

Roomba

Roomba has fully transitioned to configuration via UI. YAML configuration is no longer supported. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45037) (roomba docs)

Plex

The plex.play_on_sonos service has been removed and functionality moved to the built-in media_player.play_media service.

Existing service payloads can be used as-is after prepending the media_content_id with plex://.

(@jjlawren - #45066) (plex docs)

Lutron

The Lutron Integration ID attribute changed to lutron_integration_id, so any automations, template sensors, etc. using that attribute will need to be updated accordingly.

(@TimothyLeeAdams - #45114) (lutron docs)

DoorBird

DoorBird has fully transitioned to configuration via UI. YAML configuration will be removed in an upcoming version. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45139) (doorbird docs)

Logitech Harmony Hub

Harmony has fully transitioned to configuration via UI. YAML configuration has been removed. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45140) (harmony docs)

Mikrotik

Mikrotik now uses the device_tracker standard attributes for ip and mac. The mac_address and ip_address attributes have been removed.

(@bdraco - #45255) (mikrotik docs)

RoonLabs music player

This PR changes how the play_media call works for roon players. The previous implementation was very limited - but anyone using it in automations will need to change their calls to the new structure.

Please refer to the integration documentation for more information.

(@pavoni - #45221) (roon docs)

Network UPS Tools (NUT)

Network UPS Tools (NUT) has fully transitioned to configuration via UI. YAML configuration has been removed. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45276) (nut docs)

Dyson

The speed of the Dyson Pure Cool Link fan is now one of low, medium, and high instead of the original auto and integer 1 to 10.

In order to set the fan speed more precisely and switch auto mode, you should use the services dyson.set_speed and dyson.set_auto_mode.

(@shenxn - #45331) (dyson docs)

Viessmann ViCare

The current power sensor has been removed since it was not provided by the Viessmann API anymore.

(@oischinger - #45301) (vicare docs)

MyQ

MyQ has fully transitioned to configuration via UI. YAML configuration has been removed. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45375) (myq docs)

Nexia

Nexia has fully transitioned to configuration via UI. YAML configuration has been removed. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45379) (nexia docs)

Hunter Douglas PowerView

Hunter Douglas PowerView has fully transitioned to configuration via UI. YAML configuration has been removed. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45376) (hunterdouglas_powerview docs)

Rachio

Rachio has fully transitioned to configuration via UI. YAML configuration has been removed. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45383) (rachio docs)

Tesla Powerwall

Tesla Powerwall has fully transitioned to configuration via UI. YAML configuration has been removed. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45381) (powerwall docs)

Light Profiles

Nominally a breaking change. A default profile for the light, now is always applied, so controlling a light from UI would set all the parameters defined in the profile.

For example, if the default profile for a particular light is set to:

  • Color: Green
  • Brightness: 255
  • Transition: 5

And the current light status is: Color - red, brightness - 20 and in UI you change the brightness to 100 with the intention to only change the brightness, then the default profile would also apply the color and transition.

(@Adminiuga - #45450) (light docs)

MQTT

MQTT allowed passing an arbitrary speed that was not in the speed_list.

With the conversion to percentages in upcoming releases, this aberration from the spec could not be converted to a percentage. Since it does not conform to the entity model, it is not possible to preserve this exception.

(@bdraco - #45445) (mqtt docs)

NuHeat

NuHeat has fully transitioned to configuration via UI. YAML configuration has been removed. Existing YAML configuration has already been imported automatically in the previous releases and can now safely be removed from your configuration files.

(@bdraco - #45380) (nuheat docs)

Rheem EcoNET Water Products

EcoNET has swirtched over to EcoNET’s new API.

Water Heaters will no longer report current tank temperature. The add/remove vacation services are also removed, alternatively, you can use away mode now.

(@w1ll1am23 - #44427) (econet docs)

Intents

The method for matching entities in intents has changed slightly to prefer shorter matches before ordering.

This means some intents and/or entity names may need to be adjusted to maintain consistency in some edge cases. For most uses, this should only improve the quality of matches.

(@CtrlZvi - #43672)

Farewell to the following

The following integrations have been removed:

All changes

Click to see all changes!