0.105: Safe mode, Headers & Footers, New Zones Editor, Garmin, Sighthound


In case you have missed it, we decided to change the names we use here at Home Assistant, you can read all about it in this blog post.

Therefore, this is release 0.105 of the Home Assistant Core!

The old “States UI” is now deprecated

In June 2018, we released Home Assistant 0.72, which introduced Lovelace. It became our official default user interface in January 2019, with the release of Home Assistant 0.86.

This means, it is now over a year ago that Lovelace was officially introduced as a replacement for the states UI, so it is time to say goodbye to the old states UI. This release deprecates it and in version 0.107, the states UI will be removed from Home Assistant completely.

If you are not using Lovelace yet, we advise you to switch to it today. Lovelace is, by default, almost the same as old states UI with the bonus of a lot of flexibility, if you want it.

In addition to this, all configuration options for the States UI are deprecated as well. Please be sure to read the backward-incompatible changes to see if you have options that need to be removed from your configuration.

Safe mode

We are humans, and we do make typos. However, if we make a typo in our configuration, we might end up with Home Assistant being completely unreachable. That really is not helpful. You lose access to Home Assistant and have to do a deep dive via other methods to find out: Why did this happen?

This release introduces a “Safe mode” for Home Assistant. If during startup, Home Assistant has problems reading your configuration (for whatever reason), it will still continue to start using bits and pieces from the configuration of the last time it did start.

When this happens, Home Assistant will start in “Safe mode”. In this mode, nothing is loaded, but it does give you access to the Home Assistant frontend, settings and add-ons (for example, the VSCode or Configurator add-on). This gives you the possibility to correct the issue and restart Home Assistant to re-try.

Screenshot of Home Assistant started in safe mode Screenshot of Home Assistant started in safe mode.

Please note, that this feature isn’t perfect yet, and only works if Home Assistant was able to start successfully, after upgrading to this release, at least once.

We believe this feature makes Home Assistant more robust, easier to use and more forgiving, even if you made a mistake.

Revamped Supervisor panel

Remember we used to have a Hass.io panel? Well, with the new naming for Home Assistant, it has been renamed to the Supervisor panel.

So @ludeeus has been busy! He rewrote the entire Supervisor panel to match our current frontend technologies and added some really slick new visual elements to it.

Thanks, @ludeeus, it looks incredible!

Screenshot of the revamped Supervisor panel Screenshot of the revamped Supervisor panel.

The new icons on the add-ons really make the add-on dashboard & store stand out. Also, new status indicators on the add-on cards make it easy to spot add-ons that need to be upgraded, or in case of visiting the add-on store, are installed already.

Please note, you need to be running Home Assistant Core 0.105 to see the new icons.

Configuration panel changes

In this release, we started the overhaul of the configuration panel. We have accumulated a lot of functionality in the configuration section in the last releases; now, it is time to bring it all together.

In upcoming releases, we will make changes to make things easier to find and connect the different elements with each other, making it easier to navigate around. For now, we implemented configuration sections, a new tabbed UI, as well as some visual tweaks.

Also updated, the device page to show the automations, scripts, and scenes a device is used in and added the ability to create new ones with the device easily.

Screenshot of the new device info page Screenshot of the new device info page.

In the more info dialog of entities, we changed the settings button to open the entity settings dialog, and added a related tab as well! This allows you to can see what device, integration, area, scenes, scripts, automations, entities, and groups belong to that entity.

For scenes, scripts and automations that are created in the UI, an edit button is added, right in the more info dialog so you can easily edit it without searching for it.

Header & Footer for the entities card

Two new types are added to the entities card, a header and a footer. At this moment, we have two options for these, an image and buttons.

It allows you to create some very cool looking cards, but also provides you the option to put buttons in the bottom of the card. Very useful for buttons that activate scenes, for example.

Screenshot of the new header and footer for entities card Screenshot of the new header and footer for entities card.

Improved zones editor

A brand new zone editor! You can no longer find your zones in the integration list, but they moved to their own section in the configuration panel.

In this new editor, you can move your zones with drag and drop and even change the size of your zones by dragging the circle.

Adding, and removing zones or changing the name of a zone, is now easier than ever.

Screenshot of the zones editor Screen recording of the zones editor.

The new editor will only work for zones that are created in the UI, zones that are set up in configuration.yaml are read-only. Additionally, if you define zones in your YAML configuration, please be aware that setting a name is now required.

As an extra added bonus, a new service was added: zone.reload. This service allows you to reload your zone configuration without restarting Home Assistant.

Icons no longer change color based on state

A change that is not really apparent at first, but you probably notice it sooner or later.

The entities card no longer changes the colors of icons based on states, except for lights.

Reasoning comes from a request, to make icons to become yellow for all types when an entity is active, and not for just a few entity types. However, this would get out of control very quickly, as shown in the screenshot below.

Yellow icon color on everything, isn't the solution either Yellow icon color on everything, isn't the solution either.

So, that is why we disabled it, by default, for all entity types, except lights. However, we did add a new option: state_color. Using this option, you can decide if you want to old behavior back, add it to more entity types or maybe even disable it for lights too!

Other cards will now display icons from more domains with an active color.

Other Lovelace and frontend improvements

There is a lot more done on Lovelace, more than we can mention, some other highlights:

  • In generated mode, entities that start with the name of the area or group they are in will be shown without the name of the area or group. So if you have a light named “Living room lights” that is in the area “Living room” they will be shown as “lights” in a card with the header “Living room”.

  • We no longer show device_tracker entities in generated mode. We advise you to bind one or more device trackers to a person that will be shown in the UI.

  • We added many accessibility features to Lovelace; you can navigate almost everything with the tab key. We will continue to work on this so that people with disabilities can also enjoy Home Assistant.

For a full list of changes, see the Lovelace changelog.

Even more frontend improvements:

  • Logbook panel is a lot quicker
  • Maps no longer fit zones, but only entities
  • ZHA panel now supports binding devices to groups
  • Ability to add new areas on the device page
  • Material Design Icons are updated to v4.8.95
  • A lot, like a really large amount, of bug fixes!

In other news

This section is now empty, but don’t be sad! The in “In other news” section now has its own dedicated blog post, which we will put out regularly:

Want to read the first edition? Community Highlights, first edition!

Have you seen (or made) something awesome, interesting, unique, amazing, inspirational, unusual or funny, using Home Assistant? Send us your Community Highlight suggestion, so that we can include it in the next blog post.

New Integrations

New Platforms

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

  • Safe Mode - --demo-mode has been removed. A new safe mode has now been introduced, which loads the bare minimum necessary to load the Home Assistant frontend and allows for managing the configuration. This is not yet perfect. An invalid core configuration can still cause Home Assistant to refuse to start up. (@balloob - #30723) (frontend docs) (http docs) (safe_mode docs)

  • Google Assistant - Entities exposed to Google Assistant, that have aliases configured (YAML only feature), will now expose the configured name, instead of the first configured alias.

    Because of that, it might be that entities that have a name and aliases set for Google Assistant, may show up with a “new” name.

    This mitigates an issue with Google Assistant, which seems to ignore the configured name when aliases are configured. - (@frenck - #30799) (google_assistant docs)

  • Hass.io/Supervisor - The “Hass.io” menu item in the side bar has been renamed to Supervisor. This was done to match the announced re-branding. While not really a breaking change, it still is a change that might cause confusion at first. - (@frenck - #31480)

  • Spotify - Spotify is now available to be added from the integrations UI! Removing the current Spotify platform and setting up the integration from scratch is recommended.

    The device aliases and the spotify.play_playlist service, have been removed. Be sure to remove calls to that service from your automations.

    If you use the Spotify platform at this moment:

    • Remove the current configuration from your configuration.yaml file.
    • Remove the .spotify-token-cache file from your configuration directory. It is no longer used, however, it does contain security credentials.
    • Follow the documentation on how to set up the new Spotify integration from scratch.

    Please note, if you have an existing Spotify Developer Application, you need to edit it. The URL’s have changed. Consult the integration documentation for the new URL’s to use.

    (@frenck - #30717) (spotify docs)

  • Automation Deprecated - The hide_entity configuration option on an automation is now deprecated and will be removed in Home Assistant 0.107. With Lovelace now being the standard, this option has become obsolete. Please ensure your automations are not using this option. An example of an invalid configuration is below. - (@frenck - #30799) (automation docs)

    Bad configuration example YAML:

      - alias: "Home Automation Gone Wrong"
        hide_entity: true  <-- remove this
          platform: state
          entity_id: all
          service: light.turn_off
            entity_id: all
  • Group Deprecated - Group configurations options, services and service options related to the old states UI are now deprecated and pending for removal in Home Assistant 0.107.0.

    This includes:

    • The view and control configuration options for a group
    • The group.set_visibility service call
    • The control, visible, and view options on the group.set service call.

    Please ensure your configuration and automations do not use these anymore. - (@frenck - #30831) (group docs)

  • Weblink Deprecated - The weblink integration is now deprecated and pending removal in Home Assistant 0.107.0. This integration only works with the old states UI. - (@frenck - #30834)

  • History Graph Deprecated - The history_graph integration has been deprecated and pending for removal in Home Assistant 0.107.0. This integration was used for the old states UI. Going ahead, please ensure this configuration option is not used in your configuration. - (@frenck - #30835)

  • Neato - This change adds a neato boundary name to the state if it exists, requiring to potentially update automations. - (@Olen - #29915) (neato docs)

  • Xiaomi miio (fan) - This change adjusts some fan speed values according to the Xiaomi app version 5.6.34. and therefore, you will need to update anything that utilizes the following fan speed values:

    • Quiet -> Silent
    • Balanced -> Standard
    • Turbo -> Medium
    • Max -> Turbo

    In addition, the hidden configuration option for the xiaomi_miio integration has been removed. (This would only affect remotes.) - (@tiagofreire-pt - #30614) (@frenck - #30727) (xiaomi_miio docs)

  • Samsung Smart TV - Samsung Smart TV is now available to be added from the integrations UI! If you would rather add it manually, please note the new configuration below. - (@escoand - #28306) (samsungtv docs)

    Example configuration YAML:

      - host:
  • Netatmo - Netatmo is now available from the integrations UI and takes advantage of OAuth2 account linking! There are a good number of changes to note:

    • For authentication, only client id and secret are required, no need to pass your username and password anymore.
    • Public weather sensors are removed and will be added back in a separate PR.
    • Service set_schedule now requires the name of the home.
    • Webhooks are removed and will be added back in a separate update.
    • Services to toggle the light/set it to auto have been removed until implemented in pyatmo.

    If you have an existing configuration, you will need to remove/update that and run the configuration flow dialogue to get their sensors/etc, back using the configuration.yaml option.

    (@cgtobi - #29851) (netatmo docs) (new-platform)

    Example configuration YAML:

      client_id: your_client_id
      client_secret: your_client_secret
  • Nederlandse Spoorwegen (NS) - The Nederlandse Spoorwegen API and NSAPI have recently changed and this change accommodates for that. The nederlandse_spoorwegen sensor now requires a single API token instead of username and password credentials.

    The “RetrieveTripInformationPublic” API (“Public-Travel-Information” product) will be deprecated on 31-01-2020. You MUST create a new API token for the “Reisinformatie” API (“Ns-App” product) and use that one instead.

    (@YarmoM - #30599 #30971) (nederlandse_spoorwegen docs)

    The following platform attributes are renamed for consistency with time naming:

    • departure_platform becomes departure_platform_planned
    • departure_platform_changed becomes departure_platform_actual
    • arrival_platform becomes arrival_platform_planned
    • arrival_platform_changed becomes arrival_platform_actual

    Example configuration YAML:

    - platform: nederlandse_spoorwegen
      password: !secret ns_api_key
      - name: Rijswijk-Rotterdam
        from: Rsw
        to: Rtd
  • Simplisafe - Many changes here!

    Simplisafe’s cloud API anticipates receiving updates all at once, which our method did not do, which and could result in failed updates. This change consolidates all of the service calls into a single admin service, and makes set_pin and remove_pin require admin rights.

    It is no longer possible to configure scan_interval for the integration and a code-defined interval has been set, as there was potential for users setting this too low and possibly ruin the integration for everyone.

    Also, the integration now makes us of triggered and arming states. Control panel entities no longer have an alarm_active attribute.

    (@bachya - #30567, #30909, #31060) (simplisafe docs)

    Example configuration YAML:

        username: !secret ss_username
        password: !secret ss_password
  • Egardia - Binary sensors for the Egardia integration were hidden by default, which is no longer the case. This could affect automations that rely on the hidden state attribute of entities created by this integration. - (@frenck - #30728) (egardia docs)

  • Emby - The auto_hide configuration option has been removed from the Emby platform. Please be sure to remove it from your configuration. - (@frenck - #30729) (emby docs)

  • Fibaro - Entities from the Fibaro integration were hidden in Home Assistant if they were hidden in Fibaro, which is no longer the case. This could affect automations that rely on the hidden state attribute of entities created by this integration. - (@frenck - #30730) (fibaro docs)

  • AVM FRITZ!Box Net Monitor - The attribute wan_access_type has been removed from fritzbox_netmonitor as the new version of the fritzconnection integration no longer exposes it. As a result, the information will no longer be available in the Home Assistant sensor. - (@basdelfos - #30210) (fritz docs) (fritzbox_netmonitor docs)

  • MQTT Fan - This fixes supported_features for an MQTT fan. Setting speed now requires only a speed command topic.

    Before this change, only a speed state topic had to be set to support the setting of a speed. The speed state topic is not taken into account as it just decides if Home Assistant gets feedback for state and speed updates.

    Likewise, setting oscillation now requires only an oscillation command topic. Before this change, only an oscillation state topic had to be set to support the setting of the oscillation. The oscillation state topic is not taken into account as it just decides if Home Assistant gets feedback for state and oscillation update.

    (@springstan - #28680) (mqtt docs)

    Example configuration YAML:

      - platform: mqtt
        name: "room2"
        state_topic: "stat/bvent/POWER"
        command_topic: "cmnd/bvent/POWER"
        availability_topic: "tele/bvent/LWT"
        payload_available: "Online"
        payload_not_available: "Offline"
        payload_on: "ON"
        payload_off: "OFF"
        qos: 1
        retain: false
        optimistic: false
  • Vizio SmartCast TV - The Vizio integration is now available to be added from the integrations UI! When adding a soundbar the options are now between tv or speaker in order to align with the device classes defined in the media_player component and to add Amazon Alexa and Google Assistant support. If you prefer to enter the configuration manually make note of the changes below. - (@raman325 - #30653, #30802) (vizio docs)

    Example configuration YAML:

      - host: IP_ADDRESS
        access_token: AUTH_TOKEN
        device_type: speaker
  • Statistics - If max_age is configured, this change will keep updating the statistics even when none of the observed entities change their state. That means that after some time, all recorded states are purged and the statistics sensor itself changes to state unknown instead of just keeping its old state indefinitely. Also, some attributes (total, min_age, change, change_rate, mean, stdev) will change to unknown.

    Users should ensure that any automations that interrogate the statistics sensor’s state and attributes can handle unknown.

    (@exxamalte - #27372) (statistics docs)

    Example configuration.yaml:

      - platform: statistics
        entity_id: sensor.pulse_counter
          minutes: 10
  • PulseAudio Loopback Revert - The default port was incorrectly changed to 4713, however, the official documentation states that the default port is 4712 for module-cli-protocol which is used in this integration. Therefore, the port has been changed back to 4712 and all previously configured switches now need to listen to port 4712. - (@springstan - #30939) (pulseaudio_loopback docs)

  • Apple iCloud - account_name is removed from the manual configuration; nothing changes when using the integration UI. - (@Quentame - #30898) (icloud docs)

  • Evohome - Honeywell TCC systems that consist of a single thermostat (i.e., non-evohome systems) will now be split into two climate entities instead of one: a) the whole-house zone (for target temperature), and b) the location (for Away, Eco modes). Functionality will not be lost, but this will affect automations, etc.: the entity_id of these may need changing. - (@zxdavb - #30968) (evohome docs)

  • Sonos - The following Sonos services now need to be called by a user with admin access: sonos.join, sonos.unjoin, sonos.snapshot, sonos.restore. Sonos services now no longer will default to “all” entities if no entity_id is passed in. This has been aligned with the other services in Home Assistant. To target all, add entity_id: all. - (@balloob - #30813) (sonos docs)

  • LG webOS Smart TV - After the discovery of some additional commands, the client library now has much better tracking of TV power state. As a result of the client library changes, the standby_connection parameter is no longer needed/present (since the relevant behavior can be steered automatically by the client library now) - (@bendavid - #31042) (webostv docs)

  • Zone - If you’re using YAML to configure zones, specifying a name is now required. - (@balloob - #30774) (zone docs)

    Example configuration YAML:

    - name: Hellmouth
      latitude: 0.2133478
      longitude: 6.7242336
      radius: 200
      icon: mdi:fire
  • Openuv - Openuv is now available to be added from the integrations UI! It is no longer possible to specify monitored conditions within the OpenUV integration; all entities are added by default. - (@bachya - #31019) (openuv docs)

    Example configuration yaml:

      api_key: !secret openuv_api_key
  • RainMachine - RainMachine is now available to be added from the integrations UI! It is no longer possible to specify monitored conditions within the RainMachine integration; all entities are added by default. Additionally, the zone_run_time parameter is now configured directly within the controller within configuration.yaml. - (@bachya - #31066) (rainmachine docs)

    Example configuration YAML:

        - ip_address: !secret rainmachine_ip_address
          password: !secret rainmachine_password
  • MaryTTS - The codec and locale configuration changed to the official config keys from MaryTTS. - (@Poeschl - #30805) (marytts docs)

    • en-GB, en-US becomes en_GB,en_US
    • aiff,au,wav becomes AIFF_FILE,AU_FILE, WAVE_FILE

    The MaryTTS network logic has been extracted into an external package and the effects setting has been added.

    Example configuration YAML:

      - platform: marytts
        host: "localhost"
        port: 59125
        codec: "WAVE_FILE"
        voice: "cmu-slt-hsmm"
        language: "en_US"
          Volume: "amount:2.0;",
          TractScaler: "amount:1.5;",
          F0Scale: "f0Scale:2.0;",
          F0Add: "f0Add:50.0;",
          Rate: "durScale:1.5;",
          Robot: "amount:100.0;",
          Whisper: "amount:100.0;",
          Stadium: "amount:100.0",
          Chorus: "delay1:466;amp1:0.54;delay2:600;amp2:-0.10;delay3:250;amp3:0.30",
          FIRFilter: "type:3;fc1:500.0;fc2:2000.0",
          JetPilot: ""
  • ZHA remotes - binary_sensor and switch entities are not going to be available for some Zigbee “remotes”, but they were not supposed to be available to begin with. - (@Adminiuga - #31146) (zha docs)

    Affected devices:

    • Centralite 3130 remote dimmer, DeviceType: 0x0001, removes binary_sensor entity
    • OSRAM LIGTIFY Dimming Switch, DeviceType: 0x0001, removes binary_sensor entity
    • Securifi Ltd. Penut Plug, DeviceType: 0x0000, removes binary_sensor entity
    • 45856GE Jasco Products, DeviceType: 0x0103
    • Aqara Model lumi.remote.b486opcn01, removes switch entity
    • Aqara Model lumi.remote.b686opcn01, removes switch entity
    • Sercom Corp, SZ-ESW01, removes switch entity
  • NMBS - The generated unique_id and entity_id have changed for the live sensor. If you were using the live sensor, you will need to update automations and scripts with the newly generated ids, and you might have to clear old entries from the entity registry. - (@thibmaek - #31078) (nmbs docs)

  • MikroTik - MikroTik Integration can now be added from the integrations UI! It also supports importing existing configurations from configuration.yaml (refer to the docs to update your configuration). Now uses the entity registry for managing devices (known_devices.yaml will not be used anymore), this causes devices to be re-discovered. - (@engrbm87 - #27484) (mikrotik docs)


Hats over your heart for these shuttered integrations. Pour one out for:

  • PostNL Removed - PostNL changed their unofficial API and implemented protection, which breaks the integration. It has been confirmed through them that there is no workaround and no likely solution any time in the near future, so it is being removed. - (@peternijssen - #30902)

  • Cisco Spark Removed - Cisco Spark has been rebranded to Cisco Webex Teams. Cisco Webex Teams is available as integration in Home Assistant, which can be used as a replacement. - (@frenck - #30738)

  • Owlet - Removed - The API that the Owlet component was based on has been deprecated by the vendor. There is no other public API provided by the vendor that the component can be upgraded to use, so the component has been removed. - (@oblogic7 - #31160)

  • Hook Removed - The hook integration has been removed due to the shutdown of the connected service. All servers that have been providing this service will be turned off on 31 Jan 2020. - (@springstan - #31046)

Release 0.105.1 - February 5

Release 0.105.2 - February 6

Release 0.105.3 - February 10

Release 0.105.4 - February 14

Release 0.105.5 - February 17

Beta Fixes

All changes