0.96: Notion, updated sidebar, advanced mode


It’s time for Home Assistant 0.96. It’s a great release, but we also made some changes, so please pay attention.

Last release that supports Python 3.5

This will be the last release that supports Python 3.5. Home Assistant 0.97 will require at least Python 3.6. If you are using Hass.io or Docker, you will not have to do anything. If you are running Hassbian, upgrade instructions are here. If you run Home Assistant inside a virtual environment, please follow the instructions for your OS to update.

Home Assistant has adopted a new Python support strategy. Starting August 1, we will now support the last two minor stable releases of Python. This is currently Python 3.6 and Python 3.7. Python 3.8 is expected to be released near the end of the year. Once that is released, Python 3.6 support is deprecated and removed 2 months later.

Pimp my Sidebar

The sidebar has gotten an improved look! Idea started with a mockup by @JuanMTech on Twitter and grew into a full blown implementation. The sidebar will now always be visible in a minimized mode. Hovering it will expand it. The developer tool buttons have been collapsed into a single menu item. The dev tools will now store it’s exact state when you navigate away, included the dev tool that is open. We’ve also taken the opportunity to make notifications accessible from the sidebar, instead of only via the Lovelace UI.

On mobile devices the sidebar will behave like it previously did. Check the demo for a preview.

![](upload://iCxjxwd6Qpz5iGtwOS2co8FGDeo.png) Screenshot of the demo with the new sidebar. Click to open.


This release includes a major clean up of our climate integration, correcting some architectural flaws from the past. The goal of this clean up was to a better job at providing an abstraction layer that fits many devices. This will improve compatibility with services that interact with Home Assistant (like Alexa/Google) and will allow us to make sure the UI works for everyone. We’ve done a lot of testing during the beta, but there might still be things that don’t work as expected. If you notice anything, please report by opening a bug report.

For a breakdown of what was driving the change, check our blog post on the dev blog.

The following things have been changed:

  • operation_mode has been renamed to hvac_mode to emphasize what the mode is for.
  • We split HVAC mode auto into auto and heat_cool. If it’s heat_cool, the user has set a temperature range the device has to use heating and cooling to stay within. Auto mode is now limited to devices that are running on a schedule or AI.
  • The state of a climate entity is now always equal to the HVAC mode.
  • hvac_action is introduced for integrations that know the current action: heating, cooling, idle.
  • set_away_mode and set_hold_mode have been merged into set_preset_mode. So instead of turn_away_mode_on(), we will now call set_preset_mode("away").
  • The is_on property has been removed. If a device is able to turn off, it should include the HVAC mode HVAC_MODE_OFF.
  • Property names have been aligned, anything ending with “_list” is now named “_modes”.
  • Integrations are only allowed to represent functionality that is present in the API. It is not allowed to add your own fake away mode.

Huge thanks to @pvizeli who drove the core implementation and to the following people for helping getting it past the finish line:

Advanced mode

As part of Home Assistant 1.0 effort, we’re simplifying the default user interface. We’re doing this by hiding certain configuration options like the customize panel behind a new “advanced mode” toggle. You can find this toggle on your profile page.

Advanced mode is only available to admin users and is a per-user setting. Enabling it for yourself won’t enable it for other admins.

In other news…

Raspberry Pi 4 support has arrived in beta. @pvizeli has been hard at work and the first beta release is available. If you flash this image, you will be able to update to a stable release later from within the UI.

Big shout out to @frenck who has been doing a lot of clean up on the website. Like, a lot lot. He has removed over 20.000 unused lines of code, and has simplified how we render code blocks, pages and headers. It takes Jekyll now a mere 14 seconds to generate the whole website! It used to be 6 minutes! 😲

Last week @balloob showed a preview of the upcoming Home Assistant Cast, a new interface for Home Assistant that runs on Chromecasts and Google Assistant devices with screens.

@teachingbirds has redone her Lovelace UI and it is looking fabulous!

Redid my whole layout for the @home_assistant dashboard yesterday on a whim. "Nest hub inspired", I call it. 😄 I like it a lot! Feels put together and less messy. pic.twitter.com/8pmA5CWKev

— Isa (@teachingbirds) July 16, 2019

New Integrations

New Platforms

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.

Breaking Changes

  • OpenTherm - Adds support for more than one OpenTherm Gateway device which changes the configuration structure. (@mvn23 - #22932) (opentherm_gw docs)

    Example configuration:

        device: /dev/ttyUSB0
  • Ambient Weather Station - By default, the Ambient solar radiation (i.e., brightness) sensor is measured in W/m². Since this unit of measurement is not used anywhere else, this change updates the sensor to use the more prevalent lx unit. Any automations that use this sensor should be updated accordingly. (@bachya - #24690) (ambient_station docs)

  • Google Cloud - Changed the default encoding to mp3 from opus ogg, allowing it to support many more media players. (@GrandNewbien - #24808) (google_cloud docs)

    Example configuration:

     - platform: google_cloud
       key_file: googlecloud.json
       encoding: mp3 # The new default, which can still be changed to opus ogg or linear16
  • SimpliSafe - The SimpliSafe alarm control panel no longer shows a temperature attribute. (@bachya - #24833) (simplisafe docs)

  • Luftdaten - The under-laying Python module is now limited to the P1 (particles 10 microns and below) and P2 (particles 2.5 microns and below), which means you have to recreate your sensors. (@fabaff - #24842) (luftdaten docs)

  • Velbus - Added autodicovery for covers in velbus and bumped the python velbus version (@Cereal2nd - #24877) (velbus docs)

  • ZHA - ZHA entities are being removed and battery sensors are being added. We have been asked several times to remove the ZHA domain entities because they do not follow the HA standards. They were originally used to show device online / offline status, rssi, lqi and last seen. They were eventually expanded to hold battery information as well because many Zigbee devices have several power configuration clusters. Online and offline handling, rssi, lqi last seen and the handling of device availability have all been moved to the device object and battery information has been split back out into its own sensor. Any users that created template sensors that leveraged the data in the ZHA entities will be affected by this change. (@dmulcahey - #24909) (zha docs)

  • Netatmo - If the module type can not be determined the climate device will default to the type “valve” as it implements a subset of “thermostat”. Consequently those devices wont be able to be turned off. This should not be a major issue and should only happen when there are issues with the data retrieved form the Netatmo API. (@cgtobi - #25029) (netatmo docs)

  • GeoJSON Events - Update geojson_client library to version 0.4.This changes the access to the external feed from HTTP to HTTPS for the nsw_rural_fire_service_feed platform. This should normally not make any difference to anyone consuming this feed. Only if for example you have set up a template sensor or automation that reads the external_id attribute of a geo_location entity and compare it against a pattern, would you need to change this. (@exxamalte - #25039) (geo_json_events docs) (nsw_rural_fire_service_feed docs) (usgs_earthquakes_feed docs)

Beta Fixes

All changes

This is a companion discussion topic for the original entry at https://www.home-assistant.io/blog/2019/07/17/release-96/

That was quick for the raspberry pi 4 support! I just got it up and running on Raspbian Buster last night, might just move it all across anyway

Edit: actually, no USB boot support yet. I moved my raspbian to a USB SSD

Thanks for all your hard work! Regarding pi 4 support, is the 32 bit version recommended, or the 64 bit version?

1 Like

Actually, no it doesn’t if you are on a tablet in landscape mode it shows the minimized sidebar.

re the sidebar, what about us poor souls who specifically asked during the original twitter thread started by JuanMTech mockup that we wanted to keep the ability to completely turn off the sidebar?

“The sidebar will now always be visible” feels like you just ignored us.

Please don’t take this the wrong way. I love the work you guys do, and appreciate the effort that is involved. But this feels like you just made a pretty big choice for all users about how their HA system is going to look. :frowning:


When’s the official android mobile app gonna drop?

1 Like

I believe if you want to hide the sidebar, you can still do that with Compact Custom Header.

1 Like

How then do you unhide it to access say the dev-tools? (answer: you can’t easily)

Not certain - I haven’t upgraded to 0.96 yet so I can’t test it out, but in prior versions you can use CCH to hide the sidebar but still optionally be able to swipe from left to reveal it.

If it does operate that way then it sounds like an acceptable solution.

1 Like

I have upgraded and it doesn’t

1 Like

I will not be adding any more features related to the sidebar. Since CCH only operates inside of Lovelace I need to keep any interaction with the sidebar to a minimum. The sidebar is required for navigation outside of Lovelace, so any modification of it should be handled with an addon that is available across the entire frontend. Something like this doesn’t exist yet, but I’m sure it will in time.

Talked about it a bit here: Compact Custom Header

Anyone else?

Testing configuration at /opt/homeassistant/
Failed config
  General Errors: 
    - Platform not found: device_tracker.nmap_tracker
  - platform: nmap_tracker
    home_interval: 10

I’m seeing the same error with nmap_tracker and unifi. Unifi was giving the same error in 0.95.4 as well (but runs fine).

Was going to open an issue but seems to be resolved after a restart of HASS.

Where is Config Check now?

I don’t see it in the usual place (Configuration > General) in between where you select your location and Server Management.


My ecobee climate objects have lost the ‘operation’ attribute in this release. I don’t see any documented change on that, though, so could this be a bug?

Have you enabled advanced mode?


Thanks! I overlooked to do that.

Kind of odd that if you don’t enable Advanced mode, you still get the menu to restart the server! :thinking:

… and here we go again. My perfectly functional custom component from 0.94.2 isn’t loaded in 0.96.0. No complaints in the log during startup but no component created. Only when I run Config Check does it report: Platform not found: climate.my_mqtt

Looks like I have my work cut out for me.

I don’t know what exactly transpired on the discord channel but the new menu’s inability to be hidden is not to my liking.


First stab of it, maybe get added in later release. I know they removed another part when not in advanced mode after feedback