0.117: Quick Bar, compact header, a YAML editor, XBox and Template types

And the train just keeps on rolling… Home Assistant Core 0.117!

Some big releases lately, and this is a big one for sure. However, interesting this release is the amount of little improvements! I guess that is the result of Hacktoberfest!

We have seen a crazy and absurd amount of contributions this October, lots of new faces too! 500+ pull requests on the documentation, 700+ on the core and 150+ on the frontend processed up until now! Amazing! You guys rock!

Also, the Home Assistant Conference has been announced! If you want to speak at the very first, online, Home Assistant Conference, be sure to submit your talk before 31 October.

And finally, while writing this, I’m enjoying Home Assistant Podcast, as they have released their episode for 0.117 already. 🎙 Thanks for all you do guys, always a pleasure to listen to.

Darn, we do have an amazing community, don’t we? 😍

../Frenck

PS: Oh, later today might be fun! We are looking into trying to do a Home Assistant live stream / mini-release party / Q&A on the Home Assistant YouTube channel. So, keep an eye on our social media for the announcement.

Stefan Agner joins Nabu Casa!

Today we are pleased to announce that Nabu Casa hired Stefan Agner to work on the Home Assistant project.

Stefan is specialized in embedded systems and the Linux kernel, and he will be mainly working on improving and extending the Home Assistant Operating System.

In his spare time, he loves to hack on all things embedded. From making the ARM Linux kernel getting built by Clang to building sensor nodes using MicroPython.

If not hacking, he’s probably out and about for a hike or a good beer with friends.

Welcome Stefan! We are excited to have you!

Quick Bar

Let me quickly find that entity that is not on my Lovelace Dashboard… hold on… Configuration -> Entities, search for it… click the right one… Got it!

That isn’t efficient, right? @donkawechico to the rescue! He added an exciting new feature to our frontend: the Quick Bar.

This new dialog allows you to quickly open an entity or run a command.

It can be launched anywhere in Home Assistant; with the keyboard shortcuts e for entities and c for commands. You can switch between the entities and command modes by removing or adding the > at the start of the search input.

The Quick Bar is similar to the Command Pallet you might know from Visual Studio Code. He even copied the filter algorithm from Visual Studio Code, so you can search what you need even faster.

Screencapture of the Quick Bar. Screencapture of the Quick Bar.

The commands are currently limited to reloading YAML configuration and restarting Home Assistant, but expect this to grow rapidly! The same goes for the keyboard shortcuts; the plan is to add more so you can quickly perform actions and navigate Home Assistant from anywhere with a couple of key presses!

Check the documentation for more information and usage tips.

Compact header

@maykar recently archived his immensely popular custom header repository, promising to bring parts of it to the core of Home Assistant.

Well, he did; this release, our Lovelace header is compact! 🤩

He combined the two bars we had in 1 by replacing the dashboard title with the tabs that used to be shown below it. He did a lot of work to make the tabs take up the least amount of space, while still being user friendly.

We think it looks great! And, finally, welcome to core @maykar!

Screenshot of the compact header. Screenshot of the compact header.

Script and automation YAML editor

@thomasloven added the ability to edit an entire automation or script in the UI with YAML.

This is the perfect blend for people that want the best of both worlds, editing in the UI with the normal UI editor and for some more complicated automations, maybe edit it directly in YAML, all from the UI.

Screenshot of the new YAML automation editor. Screenshot of the new YAML automation editor.

He also added a very useful copy button to make it easy to share your automation with the community. You can then easily paste it back in the YAML editor and continue editing after switching to the UI mode.

Xbox integration

Xbox now has a full blown integration in Home Assistant, which delivers remote control and tons of other features.

This awesome addition is created by @hunterjm and he made this nice little video demonstrating his creation:

Counters & Timers available as helpers in the UI

A nice addition to the helpers you can create and manage in the UI: Counters & Timers are now available! Thanks, @danimart1991!

Screenshot of the new Counter & Timer helpers. Screenshot of the new Counter & Timer helpers.

Native types support for templates (Beta)

Ever tried to make a list of entities or set a RGB color via an template? If so, you probably would have learned, that it is not that simple. In Home Assistant, the result of a template always have been a piece of text (a string), even if you made a list.

This release adds support for native Python types in templates. This means that templates now actually can create lists, or return a number!

For 0.117, native template types will be a opt-in beta feature, that will become the default in the next release.

You can enable it, by disabling the legacy_template rendering in your configuration.yaml:

homeassistant:
  legacy_templates: false

After that, you can do things like this:

script:
  my_script:
    alias: "Example"
    description: Example script with native lists in templates
    variables:
      entities:
        - light.living_room_window
        - light.living_room_table
      color: [255, 0, 0]
    sequence:
      service: light.turn_on
      target:
        entity_id: "{{ entities }}"
      data:
        rgb_color: "{{ color }}"

This is an extremely powerful change to our template engine, that allow for more advanced future additions and can significantly reduce the complexity of existing templates in your set up.

It should be mostly compatible with your existing templates, however, if you enable this feature, please be sure to check the backward-incompatible changes section.

We’d love to hear you experience with using this feature! And, if you run into, problems, please let us know.

Other noteworthy changes

It is Hacktoberfest, and a lot smaller, but noteworthy changes this release!

First a shout out to @spacegaier, he did a LOT of improvements (29!) this release. Visual tweaks, quality of life improvements and random fixes, like:

  • Colors in the log for errors and warnings
  • Automatically fill the Lovelace resource type based on the extension of the URL
  • Make more text translateable
  • Make attributes more user friendly
  • Show the number of hidden entities in the entities configuration page
  • And a lot more!

But wait, there is more!

  • @allenporter started working on adding Google Nest Device Access to the Nest integration. It is a base to extend on, for example, there is no thermostat yet. Looking forward to the upcoming releases!
  • You can now save automations, scripts and scenes with ctrl/cmd + s. Thanks, @gilsonmandalogo!
  • @mattmattmatt added the ability to dismiss all notifications at once, and the notifications pane will close when the last notification was dismissed.
  • We improved compatibility and Home Assistant is now usable on more, mostly older, devices.
  • You can now search for the entity name in the entity picker besides the entity id, thanks @zsarnett!
  • Thanks to @cgarwood, you can see the configuration of OZW nodes straight from the UI!
  • @bieniu added voltage, power factor and energy sensors to Shelly integration.
  • The Media Player platform now has a repeat_set service that allows for changing the repeat mode. Sonos is the first integration that supports this service. Thanks @amelchio!
  • @amelchio also added support for playing Spotify URIs with the Sonos integration.
  • Thanks to @timmo001, the WLED integration now supports color palettes.
  • You can now monitor the battery state for your devolo Home Control devices, thanks, @Shutgun!
  • The Netatmo integration got some nice weather trend sensors, thanks @cgtobi!
  • Chromecast devices can now play Plex media using the standard play_media service. Nice work @jjlawren!
  • The media browser now supports the Squeezebox and Volumio integrations, thanks to @rajlaud and @OnFreund.

New Integrations

We welcome the following new integration 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 0.117.1 - October 30

Release 0.117.2 - November 1

Release 0.117.3 - November 4

Release 0.117.4 - November 4

Release 0.117.5 - November 5

Release 0.117.6 - November 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.

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.

Cast

The host option for the cast integration has previously been deprecated and is now removed. Configuring media players via the media_player platform was also deprecated before, and removed in this release as well.

If you use any of those above, you’ll need to migrate to use the new configuration method. Please see the cast documentation on how to set this up.

(@emontnemery - #41402) (cast docs)

Cloudflare

Cloudflare is now available exclusively via the Integrations UI. This means it’s no longer configured in YAML. Existing configurations are not imported as API Tokens are now used to authenticate. Refer to integration documentation on how to setup via UI.

(@ctalkington - #41167) (cloudflare docs)

Elkm1

The bypassed attribute of a zone sensor is removed as it is no longer used. The bypassed status of a zone can be determined when the logical_status of a zone has a value of bypassed.

Auto-configure now only configures elements that have a name or description associated with them. The previous mechanism for automatically detecting if element are configured on the ElkM1 panel was to note any element that have attributes different than the elkm1-lib’s defaults. This is error prone and made the library fragile when defaults change.

(@gwww - #41584 #42064) (elkm1 docs)

ISY994

This update to PyISY adds native support for decimal precision in ISY Variable sensors, any template sensors created to adjust the rounding or precision shown in Home Assistant should be updated/removed.

The way logging is handled in PyISY has been changed. If you previously set a different logging level for homeassistant.components.isy994 in your logger configuration, you will also need to set the level for pyisy and/or pyisy.events.

Two changes may cause some entities to change platforms; however, this should only affect NodeServer nodes:

  • ISY Nodes that use the ON/OFF unit of measurement and cannot be categorized/sorted by another method have been moved from switch to binary_sensor since it cannot be confirmed if the device supports DON/DOF commands. The isy994.send_node_command service may be used to control these devices if you know they are controllable.

  • The status of all nodes is now downloaded before sorting devices, as a result some nodes which defaulted to sensor will now be correctly sorted.

Sensor values which use the ISY994’s “index” unit of measurement (UOM=25) now report the “formatted” text value shown in the ISY Admin Console, instead of the integer index. If you have any automations or templates relying on these values, they must be updated.

(@shbatm - #42043 #42050) (isy994 docs)

Modbus

Climate configuration was moved from the platform directly into the Modbus integration. This change was required to meet the latest architecture requirements of Home Assistant.

Example of previous YAML configuration:

climate:
  - platform: modbus
    name: Watlow F4T
    hub: hub1
    slave: 1
    data_type: uint
    data_count: 1
    scale: 0.1
    offset: 0
    precision: 1
    max_temp: 30
    min_temp: 15
    temp_step: 1
    target_temp_register: 2782
    current_temp_register: 27586

Example of new YAML configuration:

modbus:
  - name: hub1
    type: tcp
    host: 127.0.0.1
    port: 5020

    climates:
      - name: Watlow F4T
        slave: 1
        data_type: uint
        data_count: 1
        scale: 0.1
        offset: 0
        precision: 1
        max_temp: 30
        min_temp: 15
        temp_step: 1
        target_temp_register: 2782
        current_temp_register: 27586

(@vzahradnik - #32439) (modbus docs)

MQTT

MQTT Discovery is now enabled by default.

(@emontnemery - #41361) (mqtt docs)

Netatmo

Sensors for raw battery values and string representation have been dropped.

(@cgtobi - #41321) (netatmo docs)

onewire

Despite the project name, the owfs package (which depends on fuse and exposes filesystem calls in the appropriate directory to this program itself) is NOT recommended for any real use, it has well known issues with races etc.

The owfs/fuse implementation is therefore deprecated in favour of the owserver implementation.

Before this release:

sensor:
  - platform: onewire
    mount_dir: /mnt/1Wire

After this release:

sensor:
  - platform: onewire
    host: localhost

(@epenet - #42041) (onewire docs)

RainMachine

Per ADR-0010, this PR deprecates YAML configuration for RainMachine until 0.119. If you already use the RainMachine integration, you do not need to take action. Your configuration has already been imported into the UI.

(@bachya - #41971) (rainmachine docs)

RFXtrx

The integration is now set up via the UI. YAML support has been limited to an (automatic) one-time import. You can safely remove the YAML configuration after upgrading.

Options are now set through the UI (global options/add device/remove device/change device options).

For newly added or detected devices, device_class cannot be set.

Instead, it should be set by customizing entities.

The debug key is removed as option for the integration. Instead, log level for the library can be set by configuring the logger (see below).

logger:
  logs:
    RFXtrx: debug

No configuration changes are necessary, to keep existing configs working, the key is still accepted.

(@RobBie1221 - #39117) (rfxtrx docs)

SimpliSafe

Per ADR-0010, this PR deprecates YAML configuration for SimpliSafe until 0.119. If you already use the SimpliSafe integration, you do not need to take action. Your configuration has already been imported into the UI.

(@bachya - #41896) (simplisafe docs)

Sonarr

Sonarr has fully transitioned to configuration via UI. YAML configuration is now no longer supported after being deprecated for several releases already.

(@ctalkington - #41904) (sonarr docs)

Templates - Auto-updating now()

The entity_id: attribute was recently removed from template entities because the templates are now able to find all referenced entities automatically. This removal introduced a new problem where templates using the current time could no longer use entity_id: sensor.time to ensure periodic updates.

With apologies to those who have spent the last couple of releases adding workarounds to their templates, we are now introducing an auto-refresh feature to time-based templates.

It is thus no longer necessary to reference sensor.time, sensor.date or manually update template entities when now() or utcnow() is present in the template.

The template will automatically be updated when:

  • A referenced entity changes state.
  • At the start of each minute when now() or utcnow() is present in the template.

Please note, if you have a time-based template where you do not want it to update periodically it will now have to be reworked to not use now().

(@bdraco - #41147 #42225)

Templates - Native types (BETA)

Template results can now rendered to native Python types, but only when the legacy template rendering is disabled.

homeassistant:
  legacy_templates: false

This feature will be opt-in for this release, the backward-incompatible changes below only apply if you explicitly enable this new feature.

A template would always result in a string (text). This made it hard to use things like lists, or numbers as a result of a template. For example, returning a list of entities or a RGB/HS/XY color.

This change may impact your existing templates, as templates now can return other types; For example, string, float, integer, boolean, lists or dictionaries.

The following templates can be impacted by this:

  • Entities with templated attributes. Attributes keep their native Python type, thus if the attribute is used/processed in a template again later, the type might be different.
  • Templates working with lists or mappings (dictionaries). Previously, such collection would be returned as a text, for example [1, 2, 3, 4, 5]. We’ve seen examples where such results are decoded using text processing again (e.g., by splitting the result on a , to get the separate values). The additional processing is no longer needed, as the returned value will be a collection now.
  • Note: The entity state in Home Assistant is always a text (string). Even with native types being supported in Templates now, if a results is stored as a entity state, they will be converted to an string.

(@frenck - #41227)

Templates - Rate limits

Previously we implemented a rate limit of 1 update per minute for states.DOMAIN in templates. This has been changed to an update once every second.

Templates using states (without a domain) still have a rate limit of 1 update per minute.

(@bdraco - #42004)

UpCloud

The UpCloud integration is now configured via the UI. Existing YAML configuration is automatically imported after upgrading and can be safely removed afterward.

(@scop - #37941) (upcloud docs)

Farewell to the following

  • The Australian Bureau of Meteorology (BOM) integration has been removed. It was using webscraping to gather its data, which is not allowed. (@balloob - #41941)

All changes

Click to see all changes!