Blog

0.112: Making things faster; Logbook & History

And another three weeks passed! Home Assistant Core 0.112!

At this point, I almost feel like “Making things easier” as the motto for our current development is replaced by: Making things faster! 🚀

The last couple of releases, tons of performance improvements where made, most notably the frontend starting sooner in the previous 0.111 release.

This release is no exception, bringing absolutely game-changing performance improvements to the logbook and history panels. Honestly, I avoided using the logbook in the past because of the slowness it had.

Personally, I feel like Home Assistant is growing up. Slowly things become more reliable, faster, easier to use, slick, more fine-grained? I might be biased a bit… What do you think? What is your favorite improvement that was made lately?

Enjoy the release!

../Frenck

Important upgrade notice!

Let’s start with an important notice for upgrading to Home Assistant Core 0.112.

This release has changes to the database format of Home Assistant. On upgrade, it will be migrated to the new format.

Depending on the size of your database and the performance of the hardware you run Home Assistant on, this migration process could add additional time to the first time starting after the upgrade. For most of us, this adds just a couple of minutes, but if you have an enormous database (for example, 30+ GiB), it might take an hour or maybe even two.

So, don’t panic if Home Assistant doesn’t come up immediately.

Logbook and History 🚀

The reason for the above-mentioned database change can be found in the Logbook & History. Thanks to @bdraco, who has been improving this part of Home Assistant the past weeks.

As a result of his effort, the History & Logbook are now lightning fast. ⚡️

Not a tiny bit faster, but a whole new experience compared to how it used to be. Fantastic work there @bdraco!

Logbook and History now have a date/time range picker

So, @bramkragten stepped on the Logbook & History train and made the logbook and history panels a lot more flexible.

You no longer have to choose between a fixed period to show, but can define the period you want to see data for yourself.

Select a start and end date and time window and it will show just that data.

Screenshot of the new date/time picker Screenshot of the new date/time picker.

By default it no longer shows a full day of data, but just a couple of hours so it is even quicker to load. As most of the time, one would look at recent events anyways.

The user that made a change visible in the logbook

Talking about the logbook, you can now also see who made a change in the logbook! No more discussion about who changed the temperature!

Screenshot of the logbook showing who made the change Screenshot of the logbook showing who made the change.

Multiple entities and states in YAML automations

Are you writing your automations in YAML? You might appreciate this one:

A single condition rule can now test if multiple entities match the condition. Furthermore, states and zones now also accept a list in a condition. That helps testing if the entity matches any of the ones listed.

So this:

condition:
  - condition: state
    entity_id: light.kitchen
    state: "on"
  - condition: state
    entity_id: light.living_room
    state: "on"
  - condition: state
    entity_id: light.office
    state: "on"

Can now be shortened to this:

condition:
  - condition: state
    entity_id:
      - light.kitchen
      - light.living_room
      - light.office
    state: "on"

An example that tests if the alarm is in any of the specified states:

condition:
  - condition: state
    entity_id: alarm_control_panel.home
    state:
      - armed_home
      - armed_away

And this condition is now also passing when Frenck is at home or at work (fake, of course, since Frenck works from his home).

condition:
  - condition: zone
    entity_id: device_tracker.frenck
    zone:
      - zone.home
      - zone.work

Or combine! The following condition would pass if both Frenck and Daphne are either at home or in the work zone.

condition:
  platform: zone
  entity_id:
    - device_tracker.frenck
    - device_tracker.daphne
  zone:
    - zone.home
    - zone.work

Integration specific panels are now on the integrations page

Some integrations, like ZHA, Z-Wave and MQTT have their own panels or dev tools. For things like pairing devices or publishing MQTT messages.

These used to be on the configuration page or development tools, which was weird because the integration settings would be on the integrations page. ZHA also had a lot of device settings in its own panel, resulting in a lot of duplicate functionality spread across the Home Assistant interface.

These panels and tools are now moved to the integrations pages, directly within the integration that provides those. You can find them on the card of the integration at the Configure button.

Screenshot of the MQTT configure button Screenshot of the MQTT configure button.

The device-specific settings are now available on the device page, so we now have 1 place to go for information and settings for devices.

Screenshot of a ZHA device Screenshot of a ZHA device.

In the process, we also cleaned some things ups, like adding a device in ZHA. If you change the name of the device while adding it, the entities and entity IDs are named accordingly.

New home for the logs and information pages

More moving this release, the logs and information pages used to be in the development tools panel, but they didn’t really belong there. They aren’t really tools for developing, they provide information on your set up.

We moved them to the configuration page where they are joined with server management and the general configuration.

Screenshot of the new home for logs & information Screenshot of the new home for logs & information.

Automatically disconnect if a tab has been hidden for 5 minutes

An improvement in the battery of your device and your data cap are going to like:

When the Home Assistant UI is not visible for longer than 5 minutes, it disconnects from your Home Assistant instance. This means you no longer get data or camera streams and your device can optimize resource and power consumption.

Of course, when showing the browser (or browser tab) again, it will automatically reconnect.

We now show all automation/scenes/scripts

Automations, scenes and scripts in the configuration panel are no longer hidden when they have the hidden attribute. This was erroneously added in the past and has now been undone.

Talking about the old hidden attributes. They have been slowly deprecated over time, as they originate from the previous Home Assistant UI. As of this release, this attribute has been completely removed from the system.

Other noteworthy changes

  • @balloob has shaved of a couple of seconds from the Home Assistant startup again.
  • Entities that originate from MQTT will now become “unavailable” when the integration is not connected to the MQTT broker. Thanks @elupus!
  • If you have a Xiaomi vacuum cleaner, @jthure added a service to send it to specific places using a new goto service.
  • The Smappee integration has been fully rewritten, by @bsmappee themselves!
  • Auto discovery has been added to the NUT integration. Please note that some NAS devices might be discovered as they support adding an external battery.

New Integrations

New Platforms

Integrations now available to set up from the UI

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

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.

Read on →

0.111: Frontend loaded sooner, Elexa Guardian, Unify Circuit, Acmeda

Home Assistant Core 0.111 is here!

So, let’s face it: the previous release (0.110) was just jam-packed with new features, tons of upgrades and a lot of stuff changing. It was pretty exciting! It will be hard to top that.

Personally, I’m always looking forward to the new features a new release brings. Time to play! This time, however, not so much to play with. Don’t be fooled, it contains 400+ changes made by a group of 100 contributors! So I’m not sad!

This release is focussed around more stability, fixing, tweaking and tuning. Honestly, I think it is really nice!

Most notably, is the change on how Home Assistant loads up the frontend. It is available really quickly now!

It is definitely worth looking at the “All Changes” section this release, as many many small changes and fixes have been made.

Enjoy the release!

../Frenck

Starting the frontend sooner

In this version, we start the Home Assistant frontend and API server before all integrations are loaded. This means you can interact with Home Assistant sooner than before.

Instead of waiting a couple of minutes until the Home Assistant frontend becomes responsive, it is available really fast now!

However, with this change, Home Assistant no longer waits for all integrations to be ready. As a result, not all devices and entities are available immediately.

This is actually good! As this means, an integration that got into trouble, can no longer prevent the frontend from becoming available. Also, as soon as it is available, you can change or remove the configuration of a non-working integration. Finally, it easier to check out your logs when something goes wrong.

The base for this change came from @bdraco his creative brains, so thanks for that! @bramkragten did all the frontend work and @pvizeli made sure the Supervisor handles the surprisingly fast available frontend as well.

Great work guys!

One additional note: If you run generated Lovelace, it will still wait for Home Assistant to be completely started. If you created your own dashboard, it will show warnings for entities that are not available yet and will update when they become available.

Another additional note: If you use an automation to set your default frontend theme, it will be applied after Home Assistant has completely started. The default theme is used during the startup phase.

Other startup improvements

Some more tuning to the startup process can be found in things like the logs. If an integration takes more time to set up, it will be shown in the logs every 60 seconds, indicating that the integration is still being setup.

Another speed improvement is found in the way we load up integrations themselves. Often, an integration has a basic setup and will then load the various platforms (like lights and switches) after that.

As of this release, Home Assistant will set up the integration but will no longer wait for the platforms to finish setting up. The individual platforms will be finished in the background. Allowing the overall startup process to continue, resulting in a faster startup.

Other noteworthy changes

  • The OpenZwave beta integration is moving forward! Support for climate, fans and locks is added this release! If you are using the OpenZWave add-on with this integration, watch closely for updates, as an major update to that add-on is expected soon.
  • @gadgetmobile went all out on the Blebox integration, adding support for a lot of platforms!
  • Google Assistant now supports using a select helper (aka input_select), amazing work @ZephireNZ!
  • @frenck added two new built-in Home Assistant events, helpful for automations: automation_reloaded and scene_reloaded. Using this as a trigger can be used for, e.g., re-applying a scene when it was changed.
  • The logger has been fixed by @bdraco. The logger has disobeyed default or user-configured logging levels for a long time. This is now fixed and your Home Assistant logs should be much cleaner now!
  • The Plugwise integration has been improved by @bouwew and @CoMPaTech, now supporting not only Anna but also Adam climate environments and adding the P1 DSMR monitor.
  • Last triggered timestamp of automations is now set the moment it is triggered (as the name implies). Previously it was set after the action that was part of the trigger was done. We don’t expect many issues for this to rise, however, it might be affecting very specific use cases. If you use this attribute to prevent an automation to run quickly (or double), this will actually improve the situation for you.

New Integrations

New Platforms

Integrations now available to set up from the UI

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

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.

Read on →

Installation Methods & Community Guides Wiki

We recently announced that we wanted to deprecate the generic Home Assistant installer. We discovered that the installation method was more popular than expected and we put that plan on hold.

The feedback to our announcement also included that the preferred installation methods are not well documented and that it’s confusing because there are also so many other installation guides on home-assistant.io, some great, some outdated and no longer correct or even missing.

Today I want to take a step back and take a holistic view of installation methods. What installation methods do we support as a project, and what does supported mean.

State of the documentation

If you look at our documentation, it’s all over the place. Install it in Docker, in a VM, on a NAS or on one of the many Linux distributions.

The reason we have this many guides is that since the start of the Home Assistant website, we have always gladly accepted every contribution to get Home Assistant running on any platform. The more the merrier!

However, in software nothing ever stays the same. All software gets updates to fix bugs, fix security vulnerabilities, improve performance or to add new features. As a software application you need to grow along or else you get stuck with an insecure system.

So as Home Assistant grows and evolves, some of these installation guides became outdated and stopped working. We wouldn’t even know it was broken until a user raised an issue. But when they do, we wouldn’t know how to fix it unless we could get a hold of the original contributor.

This can be frustrating. Any guide on our official website should lead to a working system. A system that not only works today, but also tomorrow. And we have not done a good job at this, for which I want to apologize.

Definition of an “Officially supported installation method”

Today we are introducing a classification between what is “Officially supported” vs “Community supported”. An officially supported installation method in the Home Assistant context means:

“A way of installing and running Home Assistant that is officially supported by the Home Assistant project. It means the installation method is tested and documented in the official documentation. Running Home Assistant using such a supported method, leads to the optimal user experience, now and for the future.”

The Home Assistant team will not prevent you from running Home Assistant using an unofficial method. However, we cannot help with issues that you encounter. We are open for contributions that improve compatibility with a community supported method as long as they do not impact officially supported methods, add a significant amount of code exceptions or future maintenance burden on the Home Assistant development team.

Supported installation methods

These are the four installation methods that are officially supported:

  • Home Assistant
    Full installation of our all-inclusive home automation system. Best in class home automation is complemented with a UI for configuring your system, making backups and safe updates with automatic rollback.

    This method was previously known as “Hass.io”, and includes our Operating System (HassOS), the Supervisor, and add-ons. It can be run on various single-board computers or in a virtual machine.

  • Home Assistant Container
    Run just the Home Assistant Core application on a native OCI compatible containerization system (like Docker). It does not provide the full Supervisor experience, and thus does not provide the Supervisor panel and add-ons.

    This method has a new name, and was previously known as “Home Assistant Core on Docker”.

  • Home Assistant Supervised
    The full Home Assistant experience on a regular Linux operating system. This method was previously known as “Hass.io on generic Linux”, installed on top of, e.g., Debian.

  • Home Assistant Core
    Run the Home Assistant Core application directly on Python. It does not provide the full Supervisor experience, and thus does not provide the Supervisor panel and add-ons.

As you can see, the Home Assistant Supervised method is here to stay.

What is missing for each of the above-listed are the specific details, e.g., the supported operating systems for a Supervised installation or the supported hardware for a full Home Assistant installation. We hope to have these details available soon.

Community Guides Wiki

Home Assistant is an open-source project and it can be used in any way you want, even if it is not officially supported by the Home Assistant team. We welcome these alternative initiatives and have created a place for our community to provide, share and collectively maintain additional documentation.

We’ve added a new section to our forums called “Community Guides”. Each post will be automatically turned into a wiki article that other members can help maintain and can be discussed right below the article. This section is not just for installation methods, but ANY guide, how-to or tutorial.

We have ported several guides from the official documentation to the community guides. These guides were already marked as “community provided” guides previously, or are targeted towards extremely specific setups.

Final words

Today’s blog post is about bringing some clarity on our stance with the Supervised installation, but at the same time bringing more context to the problems and solutions we are currently working on. Cleaning up and structuring our official documentation is an important first step in this process.

Realizing we have not finished up specific details on each installation method, you might still be wondering if your setup is going to be supported moving forward. These details can be expected soon. We have no intention of preventing Home Assistant to run under community supported methods.

Thanks to the passionate community, you spoke and gave feedback on this. We’ll have more specific details to share in the near future, so stay tuned.

Paulus


Home Assistant Code of Conduct 2.0

On January 21st, 2017, Home Assistant announced we had implemented a Code of Conduct. Using this blog post, we’d like to inform you we are updating our Code of Conduct.

Why a Code of Conduct?

Our ever-growing community, consists of people from all over the world, and we want to ensure our community is a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

The Code of Conduct describes what type of behavior is considered unacceptable in our community, how we will enforce violations of it and how one can report incidents.

This keeps our community open, welcoming, diverse, inclusive and healthy.

What has been updated?

Our code of conduct is adapted from the Contributor Covenant, which has been implemented by over 200,000 open source projects around the world. They have been updating it to version 2.0, and Home Assistant will now follow up on that.

In general, not much has changed compared to what we already had. Mainly wording has been improved. The main change would be the addition of enforcement guidelines. This helps the Home Assistant members, contributors, moderators, admins and maintainers in how to apply enforcements.

Moving forward, this updated Code of Conduct will be active for all projects, social channels and community communication channels of the Home Assistant organization.

Read our Code of Conduct


0.110: Speed! OpenZWave beta, HomeKit Cameras, ONVIF, Calendars

Do you know how excited I am for bringing you Home Assistant Core 0.110?

Would you believe me, if I told you I’ve been upgrading my personal Home Assistant production instance to the latest development version almost every day?

Well, better believe it, it is how I started my day for the last 3 weeks. It felt like opening new presents and enjoying amazing improvements every day.

Today, we are shipping it all to you, as one big package. 🎁

This is definitely one of the bigger releases of Home Assistant on all levels. Speed improvements to both the frontend and backend, lots of usability improvements, 12! new awesome integrations and an insane amount of major updates to existing ones.

Enjoy the release!

../Frenck

Icons

In Home Assistant Core 0.109, we made the frontend lighter and faster, this release takes it a step further.

The way icons are loaded is updated. With the ever-growing Material Icons set, it was necessary to update the way we handle icons to make sure our application continues performing.

The Material Icons are now split in chunks, so the frontend does not have to load all the icons if you just need one; besides that, we no longer store the icons in the DOM but in a database.

This saves a lot of memory and thus makes the Home Assistant frontend even more leaner and faster!

Honestly, it is not just icons… A lot is optimized to make the frontend faster this release. It is now snappier than ever!

Integrations grouping, searching & custom logos

@timmo001 added the possibility to search your integrations, so you can find what you are looking for quickly.

We also grouped the entries by integration now, this means we no longer show multiple cards for the same integration, but show a list of the names if there are multiple entries.

If you click the entry, it will show that entry in the card. This makes it easier to keep an overview of all your integrations.

Screenshot of the integrations page Screenshot of the integrations page.

Oh! We’ve also made the icons and logos available for custom integrations!

Screenshot of the HACS integration with its icon shown Screenshot of the HACS integration with its icon shown.

OpenZWave integration now in beta

This release features the new OpenZwave integration. It has been in testing as a custom integration by the community since last December and is now ready for a wider audience.

It is still early days for this integration, though; not all platforms and devices are supported yet and the setup process has prerequisites that raise the accessibility bar. See our documentation for the current requirements and instructions.

If you want to give it a shot, you should be comfortable with setting up custom add-ons and MQTT. There is no migration from the current Z-Wave integration yet, this is still to come.

The plan is to add more platforms in the future, making it super simple to set up the integration. Stay tuned.

There is currently no plan to deprecate the existing Z-Wave integration. But the hope is that the new integration, in the future, will offer a simpler, more stable and more feature-rich experience than the current Z-Wave integration.

Thanks go out to the community that has been testing the custom integration and provided very valuable data to allow us to catch bugs and support more devices. A special thanks to @cgarwood and @marcelveldt who have been pioneering building the integration.

Every discovered integration can be ignored

An often reported issue/request feature is to allow any discovered item to be ignored. Most integrations supported that already, but some didn’t.

As of 0.110, we have a new development rule requiring an integration to support ignoring discovered items; and for 0.110, we have upgraded all integrations that didn’t support it yet!

Result: Any discovered item, can be ignored.

Screenshot of showing ignorable integrations Screenshot of showing ignorable integrations.

Calendar panel

Thanks to @zsarnett we got a beautiful new calendar panel!

It shows you all items of the calendars you select in a month, week or day view. There is also a calendar card for Lovelace in the making.

Screenshot of the Calendar panel Screenshot of the Calendar panel.

Weather card

We got a lot of feedback about the updated weather card of the last release, we listened to feedback and added some features. You can now theme the colors of the new icons, and you can even completely replace them with another image.

You can also set the attribute you want to show as the secondary information.

Screenshot of the updated weather card Screenshot of the updated weather card.

Check the documentation for more information.

Internal & External URLs

There are many cases where an integration needs the URL/link to your Home Assistant instance. For example, to set up a webhook, communicate audio files or camera streams to an Amazon Alexa or Google Assistant device.

We used to have a base_url setting to deal with those cases, but that wasn’t always sufficient. Some integrations require specific requirements for that setting, which could lead to conflicting or impossible settings.

It often resulted in broken TTS, streaming issues for camera’s or issues with casting. This release addresses this issue by introducing two new settings in Configuration -> General.

Screenshot of the URLs configuration Screenshot of the URLs configuration.

If you want to set those via YAML, homeassistant: main configuration has now a external_url and internal_url setting.

These settings allow you to override the URLs Home Assistant uses when communicating on your internal network versus the outside world. Please note, that these are overrides. By default, Home Assistant will try to figure this out on its own.

If you have a Home Assistant Cloud subscription, integrations can now also leverage that. This will reduce the amount of, often complex, configuration needed.

After upgrading to 0.110, you can delete base_url from your configuration as Home Assistant will automatically migrate that setting for you on upgrade.

Support for “not” conditions in automations

When an automation triggers, one can use conditions to check if the set actions of an automation should be run. Conditions, however, always take the positive approach: If “something” equals or is “this”.

As of this release, the conditions now have support for specifying if a condition (or set of conditions) should “not” match. This can be helpful for devices or entities that have multiple states, but you actually only want to ensure it is not just that one state.

Screenshot of the automation editor with a "not" condition Screenshot of the automation editor with a "not" condition.

This feature has been added to the automation editor, but is also available for writing automations in YAML:

# Example automation
alias: "Turn kitchen lights off when alarm is armed."
trigger:
  - platform: state
    entity_id: alarm_control_panel.home_alarm
condition:
  - condition: not
    conditions:
      - condition: state
        entity_id: alarm_control_panel.home_alarm
        state: disarmed
action:
  - service: light.turn_off
    target:
      entity_id: light.kitchen

HomeKit

@bdraco has been busy improving HomeKit support for Home Assistant in 0.109, but it seems like that didn’t stop him even a tiny bit. This release @xdissent and @stickpin jumped on the HomeKit bandwagon as well!

HomeKit can now be configured and set up from the Home Assistant frontend, and even allows you to set up multiple instances! This allows one to bypass the maximum amount of devices a single HomeKit gateway supports by adding multiple. Using multiple, will also allow you to bypass the 1 TV per bridge limit on HomeKit.

Ready for this? Home Assistant Core 0.110 now has camera support for HomeKit!

And if that wasn’t enough already, the HomeKit integration now sends out more information as HomeKit accessory information. So besides the entity id, which was already present, you can also see which integration (and its name) provided the accessory in HomeKit.

Screenshot from HomeKit. Left: accessory information, Right: Camera support. Screenshot from HomeKit. Left: accessory information, Right: Camera support.

ONVIF

The ONVIF integration did get lots of love from @hunterjm! ONVIF Profile S conformant camera’s, can now be set up via the UI!

And that is not all… It now leverages more features of the ONVIF protocol: pull point subscriptions. This means that events from ONVIF will now show up in Home Assistant as well. So, if your ONVIF compatible camera supports things like motion, object or sound detection, those will be available now!

Screenshot of an ONVIF camera in Home Assistant Screenshot of an ONVIF camera in Home Assistant.

Supervisor

Have you seen the new supervisor UI? @ludeeus did a great job redoing its UI! It now uses the same tabs as the configuration panel. The add-on page is split into multiple tabs, the add-on store is cleaned up and you can view all logs in the system tab now (requires advanced mode).

Screenshot of the Supervisor panel Screenshot of the Supervisor panel.

Some add-ons are now also marked “advanced” and are only visible when you’ve enabled advanced mode on your user profile.

Other noteworthy changes

  • It took a while, as many adjustments had to be made. This is the first release supporting Python 3.8 🎉!

  • Quite a few optimizations to make Home Assistant go faster. One of the major changes is that Home Assistant will now set up all configured integration instances in parallel during startup. Some startup speed reported improvements from 82 seconds before this change and 28 seconds after this change. That is a huge improvement!

  • The info page in the development tools now shows more information about your set up. Including the name for your installation method. It will tell you if you run Home Assistant, Home Assistant Supervised or Home Assistant Core.

  • @MartinHjelmare added a new detection method for integrations that potentially harm Home Assistant during runtime. We can now detect if an integration tries to close Home Assistant’s (shared) HTTP client. If this happens, it will be prevented and write an error message to your log, similar to how the I/O detection does it (released in 0.109).

  • The ISY994 got a major upgrade! While it has quite a few backward-incompatible changes, it is now available via the UI and many bug are squashed. Thanks @shbatm!

New Integrations

New Platforms

Integrations now available to set up from the UI

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

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.

Read on →

[On hold] Deprecating Home Assistant Supervised on generic Linux

[Update May 26]

New blog post published with next steps.

[Update May 10]

We’ve been overwhelmed with the many reactions. We realize our communication has been poor on this subject, for which I want to apologize. We do not collect data and so can’t always judge the impact of our decisions.

We’re going to put the deprecation plan on hold for now. Anyone running this installation method today can continue running this. We will offer more clear information in the future.

We’re going to investigate how we can maintain the supervised installation on generic Linux.

Furthermore, we are going to make sure that supported installation guides are properly documented.

Paulus


TL;DR: Home Assistant Supervised (also known as Home Assistant on Generic Linux) installation method is no longer supported.

There are currently three different ways of installing Home Assistant:

  • Home Assistant: our operating system running either directly on a supported device like the ODROID N2, Raspberry Pi 4, Intel NUC or a virtual machine.
  • Home Assistant Supervised: an installation of core + supervisor that are hosted on a generic Linux installation.
  • Home Assistant Core: our Python core application running in a Python virtual environment or a Docker container.

Different installation methods

The benefit of running the Supervisor is that you are able to keep Home Assistant up to date from within Home Assistant, and easily install add-ons that are pre-configured to be able to integrate with Home Assistant.

The Supervisor is an extremely complicated program that interacts with a wide range of applications and components in the host operating system. Examples are Docker containers, DNS, sound and USB hardware sticks that users want to use with Home Assistant. The Supervisor is controlled from Home Assistant which allows us to create a full home automation hub experience.

The Home Assistant operating system is made with the bare minimum that the Supervisor needs to run and makes sure it does not get in the way of the Supervisor: the system is fully managed by the Supervisor.

Some users still wanted to be able to control the host operating system, and so a generic installer was introduced that could install Home Assistant Core and Supervisor on a generic Linux system, like Debian or Ubuntu.

However, when people run it on top of their own system, things can go wrong. And in fact, it’s quite complex to maintain it on generic Linux. Installing is fine, everyone can follow a tutorial, but after that when things break, people come to us, not the author of the tutorial. And this workload keeps growing, to a problematic extent.

Home Assistant OS and Supervisor are being maintained by Pascal. He started them 3,5 years ago and has been maintaining this first in his spare time, later as a full-time employee of Nabu Casa.

Building the operating system and the supervisor is a complex task that requires specific expertise. Sadly after 3,5 years, there are still no other contributors to help. This has resulted in his responsibilities outgrowing what one can expect from a full-time employee.

Nabu Casa was founded to make the development of Home Assistant sustainable. To be able to maintain a healthy work/life balance and to avoid developer burn-out that is, unfortunately, common in the open source world.

In an effort to reduce Pascal’s constraints we’re per direct no longer supporting the generic Linux installation method. It will no longer be mentioned in the documentation. We have archived the repository. If you are willing to maintain it, feel free to fork it. Issues that result from using this will be ignored or closed when reported to us.

Open Source & Community

Just as with our recent decision to limit the usage of YAML in some cases, Home Assistant will keep choosing health over features. Open source is not about us having to support every feature anyone on the internet can think of. Open source means that anyone can do that themselves and choose to share this or not.

There are still tons of ways of installing Home Assistant, there are still tons of features and customizations possible.

Frequently Asked Questions

How do I run Home Assistant while still keeping control over the operating system?

We offer a virtual machine image of Home Assistant. These images can be used on e.g., VMWare, VirtualBox and Proxmox, and also on NAS systems that support running a VM as most modern NAS systems do. Using these provided images will give you the full supported Home Assistant experience.

You can find virtual machine images here.

I run on a platform that doesn’t support VMs and I still want to keep control over the operating system.

To do this we recommend running Home Assistant Core in Docker. You will lose out on the easy updates, system management and pre-configured apps (add-ons) from the UI. However, you are still able to run the full beating heart of the Home Assistant home automation platform.

All applications that are available as Home Assistant add-ons are also available as third-party Docker containers. You will be responsible to configure them to work with Home Assistant Core yourself.

I know what I am doing. Can I still use the generic Linux installer?

Yep, the archived repository is still there. You can also fork it and change things. But there is no official resource to visit when things break.

I am currently running Home Assistant Supervised. Now what?

Everything will continue to work as-is. Bugs won’t be fixed and you should consider migrating to one of the other methods. If you are migrating to a virtual machine, you can make a snapshot in the Supervisor panel and restore that in your new installation.

[Edit May 9, 16:19] Removed paragraph from Open Source & Community as it was insinuating.


0.109: New integrations page and weather card, frontend lost weight.

Last week we wrote about the future of YAML. It raised quite a bit of additional questions, so Phil and Rohan released a special edition of the Home Assistant Podcast. In this episode, they talk with Paulus about the changes announced.

Click here to listen to the Podcast

Home Assistant Core 0.109!

This release ships a lot of work that is not directly visible for the eye. We have seen a lot of bug fixes, stability improvements and quality improvements, which is really awesome! There’s more to this than meets the eye.

A new integration configuration page

Let’s start with something visible to the eye. As part of our configuration layout overhaul, we started work on the integration page. The screen now shows cards for every configured integration, and links to a filtered device and entities pages instead of providing its own detail page with devices, options and entities.

All options are now on the same card. And, you can now also rename an already set up integration instance.

Screenshot of the new integration page Screenshot of the new integration page.

Don’t the new logos look beautiful? A big thanks to all the people, who have been working hard to complete our collection of logos and icons the past few weeks. Almost 700! contributions have been processed!

Thanks to everybody for contributing, that is amazing! Special thanks to these champs who did most of the heavy lifting: @adrianmihalko, @BradleyFord, @Klumper, @nldroid, @samrdev! 🥇

As for the next steps in future releases; we will add search, group multiple entries of the same integration and add specific functions for integrations like ZHA.

New weather card

To accompany our new weather row design, @zsarnett redesigned the weather forecast card. It is cleaner and works better on smaller screens. It also allows you to hide the weather forecast.

Screenshot of the new weather forecast card Screenshot of the new weather forecast card.

Weight loss for the frontend

The Home Assistant has a translations system, which is great since it allows one to use Home Assistant in the language one prefers.

However, it came with a performance penalty. All translations were downloaded each time. All of them. This is, of course, highly inefficient. With all the new frontend features added and the integrations that now comes to the UI, it slowly is becoming a bigger issue.

For this release, @balloob worked hard to make this more efficient and as of this release, the frontend will only fetch the translations it needs. This makes the frontend load less data, and thus lighter for the browser.

Did you know you can help out translating Home Assistant?

There is no need to learn git or anything. It can be done straight from your browser! Read more about helping out translating Home Assistant on our developers website.

Detection of blocking I/O in the event loop

This is a bit technical, but some things happening in Home Assistant, like fetching data from an API or website, can lock up Home Assistant for a small moment, if not done correctly. Until now, this has been hard to detect.

This release adds logic in the core of Home Assistant that is able to detect if an integration does one of those blocking calls and writes a messages to the logs.

Screenshot of an example log entry Screenshot of an example log entry.

If you see such a message in your logs, please report the issue on our GitHub so we can fix those cases. If a custom component causes the log, it should be reported with the author of that custom integration.

By addressing these issues, we are able to greatly improve the performance, responsiveness and stability of Home Assistant.

Other noteworthy changes

  • @timmo001 Added the possibility to search in the Lovelace card picker.

Screenshot of the search added to the card picker Screenshot of the search added to the card picker.

  • There is now MQTT debug information on the device page of an MQTT device, awesome work @emontnemery!

  • @frenck re-introduced support for transitions in scenes. Both the scene.turn_on and scene.apply services now accept a transition option to make your scene transition on lights look smooth as butter. An example use is added to the documentation.

  • HomeKit got love from @bdraco. He has been squashing bugs, improving the overall stability and added support for Vacuums. Also, pairing with HomeKit now shows the easy to scan QR code, which makes it easier to set up.

  • @Kane610 really went out into making the UniFi integration perfect. A lot of adjustments and improvements. Thanks!

  • The iRobot Roomba integration now supports Braava too! Thanks @shenxn!

New Integrations

New Platforms

Integrations now available to set up from the UI

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

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.

Read on →

The future of YAML

Recently, comments and questions in the community have been posted, about the announcement of integrations becoming available via the frontend and the removal of YAML support from some of them.

This raises questions and opinions that need addressing. It mainly comes down to this single question:

“Is YAML going away?”

The answer to this question is: No!, but…”

Realizing you may not like that loose answer and, in that case, you are possibly looking for a hard and simple “NO” answer to this question. However, things are a bit more complicated.

This blog post aims to bring more clarity to this question, so everybody knows why things are the way they are right now and what to expect for the future of configuring Home Assistant.

Enabling configuration via the UI

Before talking about YAML, let’s explain the reasoning behind all the UI features introduced.

The Home Assistant project has grown at a ludicrous rate in the last few years. Being one of the few solutions to provide a local home automation platform, that puts privacy first, has gathered interest from all kinds of people on this planet.

In the beginning, Home Assistant was a small project; aimed at developers and the tech-savvy. With the growth of privacy concerns, but also the growth in the availability of IoT devices in our homes in general, the project gained traction; attracting lots of new community members that are not always the tech-savvy types.

This is great, but that also means we need to adjust, to make it usable for everybody. We want everybody to enjoy what we all have been enjoying already. No matter your level of experience.

Considering that, enabling and empowering people with managing their Home Assistant instance via the user interface is needed. Not just for the lesser tech-savvy, since it also brings convenience, that even many technically capable users enjoy and prefer.

Goal: Making things easier.

The goal of making it easier is currently the main focus.

Backward-incompatible changes

We all dislike them, those backward-incompatible changes when a new release is published. We all scan the release notes hoping you are not affected by any of them in that release.

There is a big upside on using configuration via the UI: Home Assistant manages that configuration part for you and handles the upgrades and migrations. Virtually removing the chances of hitting a breaking change, we all hate just as much.

Shareability & Security

This is a screenshot of one of the slides, showed during the State of the Union 2019:

Presentation slide showed during the State of the Union 2019 Presentation slide showed during the State of the Union 2019.

We all like to share our experiences, and thus parts of our configurations. GitHub is full of repositories that shares people’s homes.

This is great! Sharing ideas, providing inspiration for all of us!

There is a great downside to this, which is privacy and security. There are a lot of things we don’t want to share. For example, our passwords, sensitive (personal) information or (historical) data.

A bit more technical, but integrations using OAuth2 as the authentication method to integrate with, for example, a service like Somfy don’t need to store the username/password at all.

Both YAML & UI

Home Assistant is moving towards a better separation of YAML configuration versus configuration done in the UI. This is already partly showing in things like zones, Lovelace and the recently introduced “Helpers” (also known as the input_* integrations in YAML).

Zones can be configured via the UI and via YAML (even at the same time!). Both configuration sources will be loaded by Home Assistant when considering the configured zones and both can be changed on the fly without restarting Home Assistant.

For the future, Home Assistant will be moving towards that concept more and more. This allows anybody to use the method they prefer.

In these cases, YAML support has been extended and improved by adding features like reloading and by removing parts that mess with your YAML files.

We are still an open-source project

Home Assistant is an open-source project and relies on contributors adding those amazing integrations, maintaining them and extending their functionality to make them even more capable.

Those contributors do this in their free spare time, for which we all are eternally grateful. It is their work that enables Home Assistant to do what it can right now. It is what automates your home.

So what about integrations that remove YAML support?

Some contributors have decided to remove the YAML support to reduce their maintenance and support burden. The amount of energy that needs to be put in (to maintain both capabilities) can be too much and is complex. We have to understand and accept that. If we do not do that, a contributor could simply stop contributing.

Unfortunately, such a move creates backward-incompatible changes and often leads to a few pretty de-motivating comments, towards the contributor and the project in general. This is harmful to everybody, as the contributors get demotivated or, even worse, don’t want to implement new features or create a breaking change.

This halts our project goals, slows down innovation and induces the risk of losing contributors and maintainers. In the end, leads to a greater loss for everybody.

The future of YAML

So, with all of the above set context: What is the future of YAML?

As of today, ADR-0010 (Architectural Decision Record) has been approved that states:

  • Any new integration that communicates with devices and/or services, must use configuration via the UI. Configuration via YAML is only allowed in very rare cases, which will be determined on a case by case basis.
  • Existing integrations that communicate with devices and/or services, are allowed and encouraged to implement configuration via the UI and remove YAML support.
  • We will no longer accept any changes to the YAML configuration for existing integrations that communicate with devices and/or services.

So what stays available in YAML in the end?

All other integrations that do not communicate with a device and/or service, are configured via YAML or via Storage Collections (these enable both YAML and UI capabilities used by, e.g., Lovelace and zones). Examples of these other integrations:

  • Integrations that integrate transports. These integrations allow users to define their own protocol, e.g., MQTT, serial, GPIO.
  • Integrations that process Home Assistant data and make this available to other integrations, e.g., template, stats, derivative, utility meter.
  • Integrations that provide automations, e.g., automation, device_sun_light_trigger, alert.
  • Integrations that help controlling devices and services, e.g., script, scene.
  • Integrations that expose Home Assistant data to other services, e.g., Google Assistant, HomeKit.

This ADR is set to remove confusion and questions for everybody, builds upon the goals that have been set out (as presented during the State of the Union), and sets the guidelines for our contributors to work with. This ADR brings clarity for us all.

Myth-busting

In the raised concerns and comments across the community, some comments have been found multiple times. Please note, these are not exact quotes, as we don’t want to address anybody personally.

  • “Making backups became harder!”

    Using the Home Assistant snapshot feature, this is not an issue. However, if you do manual backups on a system that runs just Core, you need to make sure to back up the .storage folder as well (which hopefully you’re already doing). Otherwise, there is no difference.

  • “It is harder to test my configuration if integration does not support YAML”.

    YAML configuration testing is often done to see if a specific YAML configuration is still valid against (newer versions of) Home Assistant. With integrations set up via the UI, this is not a concern, since Home Assistant ensures the data structure is compatible between versions and migrates it for you.

  • “I like to use a private git repository where I store all my data in, including my sensitive data, since it is not public. Without YAML this is not possible.”

    This is actually not true, the .storage folder contains all Home Assistant managed configuration files in JSON format, which in those cases, can be stored and versioned in a git repository.

Is YAML going away?

No!

Not for the things we like to share publicly. It will also remain available for the advanced features we currently cannot provide a UI for. The goal is not phasing out YAML, the goal is to make the best home automation platform in the world that is easy to use for everybody. Enabling users of all experience levels, to enjoy this wonderful hobby we all share and allowing everyone to focus on what matters most: automating our homes.

Closing with the YouTube recording of the State of the Union 2019, starting at the part discussing this.

Special Home Assistant Podcast episode

A special edition of the Home Assistant Podcast has been put out. In this episode, Phil and Rohan talk with Paulus about the changes announced in this blog post.

Click here to listen to the Podcast


0.108: Logos, Area Pages, Lovelace Entity Card, Lovelace Map History

Before we talk about anything that matches the title of this blog post:

On behalf of everybody working on the Home Assistant project, we hope you, your family and loved ones are safe and remain healthy during this pandemic. Our thoughts are with everyone that has been deeply affected by the current situation.

Stay strong, keep distance from each other, wash your hands and stay safe.

❤️

We made it all up to 0.107.7 the previous release, 7! patch releases.

Some have noticed and commented on the fact we do a lot more patch releases the past months, which is correct. This is not because everything was shipped in a broken state, but we are trying to ship any bug fix to you as soon as possible! Just so you don’t have to wait 3 weeks for something to get fixed.

So let’s talk about the elephant in the room: Home Assistant Core 0.108!

Martin Hjelmare & Ashton Lafferty join Nabu Casa

We want to start by announcing Martin Hjelmare has joined Nabu Casa!

Martin is a core team member for a long time, and initially started out contributing to the project by his work on the MySensors integration back in Home Assistant 0.11 (2016)! Most contributors to Home Assistant, will know Martin for his endless patience on the incredible code reviews he does.

Furthermore, Ashton Lafferty (cogneato) has been working some hours for Nabu Casa, to help out with things like support. Most of you probably know him from that already, as he is very active in helping out on our Discord server.

We are happy to announce that Ashton will now join Nabu Casa full-time as well!

Congratulations Martin and Ashton! 🎉

Integration logos & icons

We have created a new repository on GitHub containing all the brand icons and logos Home Assistant is able to integrate with. These images are, for example, used in our documentation.

In 0.108, we made a start on using the content from this repository in the Home Assistant frontend. The device information page got a layout update and the integrations page as well.

These pages will now show the icons and logos matching the integration.

Screenshot of the device information page showing the Hue logo Device information page showing the Hue logo.

Looking for a way to contribute to the Home Assistant project? We still are missing a lot of images; So we are calling out for help!

Many integrations now available to set up from the UI

It is absolutely amazing to see all the upgraded integrations this release! Many contributors have gone out and added support to a lot of integrations to allow them to be configured via the Home Assistant frontend.

Not all of them were ready in time for this release; nevertheless, the list is amazing already:

Yes, @bdraco has been on fire this release! Amazing job!

Lovelace Map history

Maybe not very useful during home quarantine, but a very cool feature for when we are allowed to get out of our homes again. @Hoytron added the ability to show the history of persons or device trackers on the Lovelace map card. You can define how many hours of history you want to show and it will draw lines between all the points in that time frame.

Screenshot of the map card with history Screenshot of the map card with history.

New Lovelace card: Entity

@zsarnett added a new Lovelace card, the entity card. This card looks like the sensor card, but allows you to use any entity (not just sensors).

Screenshot of the entity card Screenshot of the entity card.

Area configuration page

We added an overview page for your areas. On this page you can see all the devices in the area, but also the automations, scenes and scripts that affect that area.

Screenshot of the area config page Screenshot of the area config page.

Horizontal stack now handles different heights better

When creating a Horizontal stack, the cards in the stack don’t always line up nicely. This has been adjusted. Horizontal stacks now deal better with the difference in heights of the cards on the stack.

Before and after screenshot for the Horizontal Stack improvements. Before and after screenshot for the Horizontal Stack improvements.

Other noteworthy changes

  • “Alexa, show the front door camera.” 😲 Alexa now has support for Cameras, thanks @ochlocracy!

  • Selecting your default Lovelace dashboard has been moved to the user profile page.

  • A lot of configuration pages are migrated to data tables, this means you can now search in your automations, scenes, scripts, users and areas.

  • Lovelace cards in panel views can now also be edited with the UI editor.

  • The graph from the sensor card is now also available as a footer for the entities and entity card.

  • The Markdown card has a new user variable that can be used to display the currently logged in user.

  • With the ZHA Zigbee integration, Zigbee groups now dynamically create entities for lights, switches and fans that are grouped together. This enables near-simultaneous control over a large group of lights allowing them to turn on or off at the exact same time. Thank you @dmulcahey!

  • Cameras added using the ONVIF integration now automatically use the still images provided by the camera, instead of Home Assistant generating one. Nice work @roleoroleo!

  • WLED got quite a few internal upgrades, has added new Wi-Fi sensors and now has a service to control the effects of your WLED device.

  • Docker images for Home Assistant are now using Jemalloc, to reduce memory fragmentation and speed up memory allocation. So, less memory and generally a faster Home Assistant.

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.

Read on →

0.107: Multiple Lovelace Dashboards, adds helpers, new media player card

George F. Will once said: “The future has a way of arriving unannounced.”

Well, George, we don’t agree: Announcing the release of Home Assistant Core 0.107!

This release brings a crazy amount of awesome new features and beautiful improvements to the frontend.

Bye old State UI

As announced with 0.105, the old States UI is now removed from Home Assistant. If you are using Home Assistant for a year or less, you might not have an idea what it is, since the “new” Lovelace UI has been the default. It is the UI we used before Lovelace.

If you are up for a flashback, maybe it is worth reading the release notes for Home Assistant 0.7 were the revamped (and now removed) States UI was originally announced. Now exactly 100 releases later, it is time to say goodbye to the states UI that has been with us for a long, long time…

As we announced the deprecation of the old States UI in 0.105, not everybody seemed to be that happy about it. So we surveyed to see what one would miss from States UI and learned that it is mostly used as an overview of all entities (besides having a nice layout that can be made in Lovelace).

In this release, we bring you a Lovelace solution for that and added a bit more…

Hello multiple Lovelace dashboards

You are now able to create multiple Lovelace configurations, called: Lovelace Dashboards!

You can have a dashboard with your main layout, one that is auto-generated (like the old State UI), one for experimenting, one for admins, one for your wall-mounted tablet, etc.

And, yes, you can even mix and match multiple YAML mode managed Lovelace Dashboard, UI managed Lovelace Dashboards and auto-generated Lovelace Dashboards at the same time.

Screenshot of the new Lovelace configuration panel Screenshot of the new Lovelace configuration panel.

Each dashboard can be added to the menu sidebar as well, with a configurable title and icon. Furthermore, it is possible to limit access to a dashboard to admin users only.

An unlimited amount of dashboards can be created right from the UI in the new Lovelace configuration panel, and YAML dashboards can be set up in configuration.yaml, see the documentation.

This awesome new feature comes with a deprecation if you use Lovelace in manual YAML mode: You need to move the resources section from your ui-lovelace.yaml to the lovelace: section in configuration.yaml. It is not a breaking change yet; we still load them from the previous location if we didn’t find anything in the lovelace: section, however, this fallback is being removed in a future version.

If you manage your Lovelace via the frontend, we automatically migrate your resources. Please note that resources are not in the raw Lovelace configuration editor anymore, but in the Lovelace configuration panel.

New media player card

@zsarnett is back on the frontend team and is not planning on letting that happen unnoticed. He did a ton of work on the frontend and created a beautiful new media control card for Lovelace.

It is inspired by the media control widget in Android and changes color based on the artwork of the played media. We think it looks absolutely gorgeous!

Screenshot of the new Media Control Card Screenshot of the new Media Control Card.

Helpers Configuration Panel

When you create advanced automations, you often need a helper. Like a toggle, to save a state, or another input field. Until now, you always had to define them in YAML and are known as the input_* fields/integrations.

We now have a UI to add and manage these Helper elements; this allows non-expert users, or anybody that prefers the frontend to manage their system, to also access this functionality.

Screenshot of a helper configuration dialog Screenshot of a helper configuration dialog.

Thanks @Adminiuga, for implementing the backend features that made this frontend change possible! Not only that, if you prefer YAML, these changes made by @Adminiuga also made it possible to reload the input_* YAML configuration without restarting Home Assistant.

Improvements to Lovelace editing experience

@zsarnett changed the looks of our card picker, instead of a simple button to pick a card, you now get a live preview with your own entities. @thomasloven added a UI editor for the horizontal and vertical stack cards and the conditional card.

Screen recording of the new card picker and stack editor Screen recording of the new card picker and stack editor.

Other noteworthy changes

  • @Misiu added a UI to set the visibility per user for views.
  • Data tables, for example, the Entities configuration panel, are now lightning fast! Even on mobile 🚀.
  • The logbook had some speed improvements, thanks @KapJI!
  • @bdraco just went all-in on the August integration, making it a top-notch integration! Awesome job there!
  • Initial support for HomeKit enabled televisions and support for occupancy sensors was added by @Jc2k.
  • @tulindo added support for newer SamsungTV models.
  • Alexa now supports starting and cancelling timers, thanks to @Tho85.

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.

Read on →