0.98: Improved entity management, options and Home Assistant Alerts

It’s time for the 0.98 release. As Home Assistant grows, some features will sometimes be left partially implemented, leaving things to be desired. In this release we’ve been focusing on tieing up these loose ends, sometimes with new features. Getting better all the time!

Entity Management

One of the things that we’ve been improving in this release is entity management. Historically we’ve let this up to integrations, but that caused users to learn multiple ways and more work for integration developers.

Generally entity management is not that important, you want all the entities created by your integrations! However this was less the case when we started migrating over device trackers. This became clear when we migrated over Unifi.

So in this release we’re introducing a couple of new features that are available for all entities in the entity registry and integrations that are set up via config entries.

The first feature is that it’s now possible to disable entities. If an entity is disabled, it will not be added to Home Assistant when an integration adds it. So now it will be easy to manage which entities will show up. This option is accessible from the entity registry

The second feature is a new option to automatically disable any new entities that an integration discovers. In the case of a device tracker, newly connected devices to the network won’t be added anymore. This option is accessible from the integration details page via a button on the toolbar at the top.

With these two features we are now at feature parity with the filtering features that are available in the device tracker integration. Next step will be polishing of the person integration to get all those shiny new device tracker entities under one roof.

Screenshot of integration system options. Screenshot of integration system options

Config Entry Options

We introduced config entries last year as our way as a generic way for integrations to store authentication and configuration. By allowing integrations to define the storage format, there are no more backward-incompatible changes for anything stored inside config entries!

Config entries also work great with people who prefer configuration.yaml. At startup a config entry is created/updated with the configuration.

With this release @kane610 added a new possibility for integrations to offer options in the UI. Options that previously required you to edit configuration.yaml can now be offered via the interface.

This release adds config entry options to Deconz and Unifi integrations with many more to come.

Screenshot of Unifi config options. Screenshot of Unifi config options

Home Assistant Alerts

Devices and services can receive updates that can cause integrations to break. This is frustrating and sometimes the cause can be hard to track down. Usually the users on forums/chat are aware and can help redirect people in the right direction, but that’s not a scalable solution!

So to combat this, we’re launching Home Assistant Alerts. Home Assistant Alerts is a website that will track known issues and explains in user friendly language what is going on. Alerts can be tagged with applicable Home Assistant versions, integrations and Python packages.

In the future we’re planning on integrating this directly in Home Assistant, so that users can be pro-actively notified of issue related to their configuration.

Docker base image change

If you run Home Assistant via Docker (not Hass.io) and are using the homeassistant/home-assistant container, the images are now using the same images as hass.io, which are using Alpine Linux instead of Debian.

The hass.io images are a third of the size of the old images and are heavily optimized thanks to the hard work by @pvizeli.

This change will only impact you if you were extending or customizing the image with Debian packages. If you want to continue to use the Debian based images, you can find the Dockerfile for the old images here.

For more background on this decision, see ADR-006.

Webscraping

With this release we have deprecated integrations that rely on webscraping. These will be removed from Home Assistant in a future release. Our scrape integration will remain part of Home Assistant.

Webscraping is fragile, breaks often requires frequent updates and there have been occasions where websites have banned our users.

Users that rely on these integrations can continue using them as custom components.

For more background on this decision, see ADR-004.

In Other News

Mason Made created a great video walking through her Lovelace UI with a fancy custom sidebar. Check it out:

Reddit user Skyfox2k has built a batcave for his robo vacuum. Once the vacuum starts, Home Assistant will open the door and the vacuum can come out to clean!

Photo of a robovacuum driving out of a tiny hole in the wall. Screencap of the batcave video.

New Integrations

New Platforms

Release 0.98.1 - August 29

Release 0.98.2 - September 2

Release 0.98.3 - September 4

Release 0.98.4 - September 4

Release 0.98.5 - September 6

We have been notified by Gregor Godbersen that our markdown renderer was vulnerable for an XSS attack if exposed to specially crafted markdown. This was introduced in the Home Assistant 0.98 release. We have verified that Home Assistant 0.98.0 does not render unsafe markdown, yet still wanted to make sure to issue an update as soon as possible.

More information in this frontend pull request.

If you need help…

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

Reporting Issues

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

  • Deprecated

    Integrations which make use of web scraping and are pending for removal in Home Assistant 0.100.0 ADR-004:

  • Ruter - Removed - Ruter Labs which hosted the API has shut down the service. As an alternative, see the Entur public transport integration. - (@ludeeus - #26041)

  • Googlehome - Removed - In recent months this integration was broken when Google changed the port they serve this information on, in addition to requiring a token header in the request. That method requires the user to have a rooted android device, and even then then the “result” was not the best, since you often need to get that token. As an alternative to the device tracker, users can look into https://community.home-assistant.io/t/monitor-reliable-multi-user-distributed-bluetooth-occupancy-presence-detection/68505 - (@ludeeus - #26035)

  • EDP Ready - Removed - The service has moved to a new portal and the previous API does not work anymore. - (@abmantis - #25971)

  • Zwave - zwave.update_config service call has been removed. - (@kpine - #25959) (zwave docs)

  • Nissanleaf - Nissan leaf European API no longer supports location control. The nissan_connect: element from the homeassistant nissan_leaf: configuration must be removed. - (@filcole - #26139) (nissan_leaf docs)

  • ZHA - This change has the unique_id use the ieee address instead of the nwk address. The ieee address is static and therefore the unique_id will be stable now. - (@dmulcahey - #25707) (zha docs)

    Previous format: unique_id=0x0b64:1:0x0006

    New format: unique_id=00:0d:6f:00:0e:c8:d4:e7:1:0x0006

  • Updater - The updater component is now a binary sensor that is always available. The entity ID is binary_sensor.updater. The state is on/off depending on whether an update is available or not. The latest version as well as the release notes are attributes of this binary sensor. Automations that are listening for the existence of updater.updater should now trigger when binary_sensor.updater changes to on. This makes the component more transparent and understandable for the user. Additionally, it is visible if there is an error or the source (https://updater.home-assistant.io/) is outdated. - (@Santobert - #25418) (updater docs)

  • Mikrotik - The Mikrotik device tracker integration is now a component (hub) with a device tracker platform. If you have a device_tracker section where mikrotik is a platform in your configuration.yaml you will need to move it to the hub config section for mikrotik and make sure you follow the new config format. - (@slackr31337 - #25664) (mikrotik docs)

    Example configuration entry:

    mikrotik:
    - host: 192.168.88.1
     username: !secret router_user
     password: !secret router_pass
     ssl: true
    
    - host: 192.168.88.2
     username: !secret capsman_user
     password: !secret capsman_pass
     ssl: true
    
  • Prometheus - Previously, the integration would create too many metrics based on entity_id name which would pollute and fill the database. The naming of metrics has been changed and doesn’t use the entity_id anymore. Any consumers of the prometheus data will need to be changed to use the new names. The user can now also use the new component_config_glob to remap the metrics any way the user sees fit. - (@perosb - #24103) (prometheus docs)

    Example configuration entry:

    prometheus:
      namespace: hass
      component_config_glob:
        # override metric for RFLink devices
        sensor.*_hum:
          override_metric: humidity_percent
        sensor.*_temp:
          override_metric: temperature_c
        sensor.*_bat:
          override_metric: battery_percent
     filter:
       include_domains:
         - sensor
         - lock
    
  • Kodi - Kodi services are now their own domain and the media_player.kodi_* services are now kodi.* - (@JeffLIrion - #25753) (kodi docs)

    • media_player.kodi_add_to_playlist is now kodi.add_to_playlist
    • media_player.kodi_call_method is now kodi.call_method
  • Sonos - This change rejects previously accepted calls using content_types (image, tvshow, video, episode or channel) when using media_player.play_media, and changes the behavior of a content_type of “playlist” to play a Sonos playlist, rather than a URL. - (@ahertz - #26054) (sonos docs)

  • Statistics - The names of statistics sensor no longer get mean or count appended automatically, respecting the name configured by the user. If you use this integration, this name change will affect the name of the entity. - (@frenck - #26119) (statistics docs)

    Example configuration entry:

    - platform: statistics
      name: "MiAP2 PSI Stat"
      entity_id: sensor.mi_ap2_aqi
    

Beta Fixes

All changes