0.30: More Async, HASSbian, Digital Ocean, statistics, REST

Yes, after only nine days comes 0.30. Don’t worry, we will try to keep our usual release cycle and not start to release every day.

We guess that you already know: The Raspberry Pi image is available now. For Hassbian, @Landrash has combined the most essential parts for a Home Assistant setup in an easy-to-use image for the Raspberry Pi device family. Hassbian is quite young, thus we are looking forward to receive feedback, issue report, and suggestions to improve it.

A large amount of resources of the development are still focusing on the effort to move Home Assistant further to asynchronous programming. It’s a labor-intensive task, comes with segmentation faults, and unstable instances when certain combinations of sensors are used. The benefit will be more speed in the near future.

To reduce the run-time of your tests, @balloob did a lot of tweaking. For now the RFXtrx tests are excluded which cut the needed time for running on your Pull Request in half.


All configuration sample entries are now minimized. This should help to avoid problem for starters and newbies as they only get what’s needed and not a full sample with all optional entries. If there is an issue with an entry in your configuration.yaml file the error message will provide you an URL that point to the documentation.

As soon as the Hacktoberfest started there were a lot of incoming Pull Requests for the documentation. A huge “Thank you” to all participants. Especially, we would like to give a cookie to @hillaryfraley. She created around a dozen Pull Requests so far and didn’t only fix typos but complete sections. The Hacktoberfest is still on-going and we are looking forward to get more Pull Requests.


With the statistics sensor we would like to introduce a new sensor that is similar to the template sensor or the trend sensor. This sensor is consuming values from another sensor and is doing some statistical analysis of the data. Over a group of samples is the average/mean, the min/max, the total, the standard deviation, and the variance calculated which can be used in your automation rules. If the source is a binary sensor then the state changes are counted.

As the results are processed on-the-fly you still need to use the data from your database for an in-depth analysis of your stored information. Check the latest notebook for doing statistics with your Home Assistant database.

REST! We don’t…

There was a lot of work done on our implementation which are working with RESTful APIs. @w1ll1am23 extended the aREST platforms to display if an aREST unit is available or not. The aREST implementations are now covered by the configuration check as well. Please check the Backward-incompatible changes section for more details.

The REST sensor supports now HTTP authentication (basic and digest) and custom headers. This will allow you to access resources which are protected. This sample sensor will access GitHub and retrieve the latest release number while by-passing the rate limit for non-authenticated requests.

  - platform: rest
    resource: https://api.github.com/repos/home-assistant/home-assistant/releases/latest
    authentication: basic
    value_template: "{{ value_json.tag_name }}"
      Accept: application/vnd.github.v3+json
      Content-Type: application/json
      User-Agent: Home Assistant REST sensor


  • GitHub released with a recent update a review feature. This will give you more control over your comments while you review an open Pull Request.
  • Thanks to @robbiet480 we are now running mention-bot. It will help you when you create a new Pull Request to identify potential reviewers.
  • The Home Assistant Community Forum has now an additional section called “Installation”.

All changes

Release 0.30.1 - October 8

  • Device Tracker known_devices.yaml validation is now more accepting (@kellerza)
  • Handle X10 light numbers greater than 9 (@mtl010957)
  • Fix command line covers without a template (@roidayan)

Release 0.30.2 - October 12

  • Handle Volvo’s with dashes in their name (@molobrakos)
  • Fix some html5 push notification configuration options were discarded after first use (@T3m3z)
  • Fix Homematic device name with autodiscovery (@pvizeli)
  • Make ‘pin’ optional for zigbee device config (@flyte)
  • Fix when sending a notification to a service with target attached (i.e., notify.html5_unnamed_device_2) the target was not submitted to the platform as a list causing iteration over every character in the string. (@robbiet480)
  • Fix for Slack targets (@fabaff)
  • Fix for Pushover targets (@Nixon506E)

Backward-incompatible changes

  • All deprecated condition options from automation have been removed (deprecated since May and have printed warnings to your console):
    • use_trigger_values is gone. You have to copy your triggers to conditions and adjust for the correct config.
    • condition_type is gone. Use condition: or instead.
    • To specify the type of a condition, use condition: instead of platform:.
  • The Forecast.io was renamed to Dark Sky. Replace your - platform: forecast with - platform: darksky.
  • The aREST configuration between the sensor and the switch platform was aligned.

If you need help…

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.

Participating in Hacktoberfest

Home Assistant will join this year for Hacktoberfest, an event organized by DigitalOcean and GitHub to support and celebrate open source. The idea is that open source projects like Home Assistant will gather a bunch of entry-level bugs, features and documentation enhancements and that you, a current or future contributor, will fix them. If you submit four pull-requests during the month of October you will have earned yourself a limited edition Hacktoberfest T-shirt!

Why contribute to Home Assistant:

  • Written in Python3 with 94% test coverage
  • Active and helpful community
  • Friendly to new contributors

Resources to get started:

Are you not a programmer but still want to contribute to Home Assistant? Check out our list of entry-level issues for the Home Assistant website.

Hacktober fest logo

We have a Raspberry Pi image now

Today we’re happy to announce our brand new Raspberry Pi image! It is based on Raspbian Lite combined with HASS so we decided to call it Hassbian.

This image comes pre-installed with everything you need to get started with Home Assistant right away.

To get started, check out the installation instructions in the getting started section or watch the latest video by BRUHAutomation:

Under the hood

It’s based on Raspbian Lite and generated with a fork of the same script that builds the official Raspbian images. For installation of HASS it follows the same install instructions as the Manual installation. Please note that this project has no association with the Raspberry Pi foundation or their projects.

On first boot the latest release of Home Assistant will be installed and can be reached after 3~5 minutes. Pre-installed on this image is the MQTT broker Mosquitto, Bluetooth support and settings for the homeassistant account to use the GPIO pins of the Raspberry Pi. Mosquitto is not activated by default.

As it is today there is no pre-compiled Z-Wave support but it can be installed by following the Getting started instructions for Z-Wave.

Happy Automating!

0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants

Two weeks ago, September 17 marked our 3 year anniversary. In this time Home Assistant managed to grow from a simple script that turned on my lights when the sun set to a kick ass open source project with the best community an open-source project could wish for. This release contains features, bug fixes and performance tweaks by a total of 50 different people! We have also managed to cross the 1000 forks on GitHub. Talking about momentum!

This is a big release as we’ve completely overhauled the internals of Home Assistant. When I initially wrote Home Assistant, still figuring out the ins and outs of Python, I went for an approach that I was familiar with for an application with many moving parts: threads and locks. This approach has served us well over the years but it was slower than it needed to be, especially on limited hardware.

This all changed when @bbangert came around and took on the tough job to migrate the core over to use asynchronous programming. He did an amazing job and I am happy to say that the initial port has been done and is included in this release! On top of that, we have been able to keep our simple and straightforward API at the same time. We are still in the process of migrating more and more components over to the asynchronous API, so expect more speedups and awesome features in the upcoming releases.

SleepIQ and OpenALPR

There now is support for two new super cool things: Beds and license plates. @technicalpickles created a SleepIQ component that let you monitor the sensor data of your bed. @pvizeli has added license plate recognition based on OpenALPR! This means that you can now be notified about which car is parked on your driveway or in your garage. I also would like to use this opportunity to give a big shoutout to @pvizeli for being such an awesome member of our community. He joined us at the end of June and has helped crush bugs and add awesome features ever since (65 pull requests already!).

Configuration validation

On the voluptuous front we have also made great progress. We were able to fully remove the legacy config helpers and have migrated 323 of the 346 components and platforms that needed migrating! This does mean that for some components the configuration has slightly changed, make sure to check out the backward-incompatible changes section at the bottom for more info. Thanks everybody for reviewing the Pull requests, testing the changes, and reporting issues.

Delayed Release

As you might have noticed, this release has been delayed by 5 days. This was due to a rare, difficult to reproduce problem with the Python interpreter. A huuuuge thanks to all the people that have helped countless hours in researching, debugging and fixing this issue: @bbangert, @turbokongen, @lwis, @kellerza, @technicalpickles, @pvizeli, @persandstrom and @joyrider3774. I am grateful to have all of you as part of the Home Assistant community.

Hide automation rules

Since 0.28 automation rules can be reloaded directly from the frontend.

All changes

Hotfix 0.29.1 - September 29

Hotfix 0.29.2 - September 29

Hotfix 0.29.3 - September 29

Hotfix 0.29.4 - September 30

Hotfix 0.29.5 - September 30

Hotfix 0.29.6 - October 1

  • Fix segmentation fault (@bbangert) 🎉
  • Fix nested templates in data_template would incorrectly get cached (@balloob)

Hotfix 0.29.7 - October 5

  • Fix handling SIGTERM and SIGHUP signals (fixes Systemd restart issues) (@pvizeli)

Backward-incompatible changes

  • The template methods now and utcnow have been changed from variables to methods. To get the current time replace now with now().
  • yahooweather default name is now yweather. Also min and max temperature are now correctly called Temperature Min and Temperature Max.
  • ffmpeg is now a component for manage some things central. All ffmpeg_bin options have moved to this compoment from platforms.
  • Config has changed for X10 lights.
  • For Wink, make sure your config only contains the access token as in the docs.
  • Nest sensor ‘mode’ has been renamed to ‘operation_mode’

If you need help…

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.

0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats

It’s already time for 0.28 thanks to our super short release cycles. Now, it’ official…we hit 4000 stars on Github. That’s amazing. Sorry, not as amazing as all the stuff that was going on for 0.27 but still pretty awesome.

Reload automation rules

This release brings you a huge improvement of the automation and group handling. Both can be reloaded without a Home Assistant restart by calling their new reload services. The automations can be controlled directly from the frontend.

Raspberry Pi installation guide

Singleboard computers are very popular to run Home Assistant. To support this fact, the installation documentation for the Raspberry Pi devices was re-written to get users started as quickly as possible. @Landrash took the lead with on this tasks with help from @kellerza and @MartinHjelmare.

Climate and cover

There are countless bugfixes included in this release which will make your experience with the climate and the cover platforms better. Two week ago was the biggest merger of implementations released that ever happened in the history of Home Assistant. Thanks to @turbokongen, @pvizeli, @djbanks, @danielperna84, and others the improvements on the code and the frontend side is continuing…

API documentation

The Home Assistant API Documentation is a great addition to the already existing user documentation. The focus is not end-users but developers who want to get details about the code without actually browsing the code on Github.

Configuration validation

The validation of the configuration is still on-going. Approximately 80 % is done. This means that we will propably talk about this topic in the next release notes again. To align the configuration of components and platforms we needed to break some. Please refer to the Backward-incompatible changes section to check if you need to update your configuration or simple check your log for configuration validation errors. Thanks to @kellerza, @fabaff, @Teagan42, and @pvizeli for your effort!

All changes

  • Light: Added bitfield to Flux LED since we are supporting effects (@tchellomello)
  • Device tracker: Owntracks waypoint import (@pavoni)
  • Climate: A lot of bugfix (@turbokongen, @pvizeli, @djbanks)
  • Notify: Improvement of the title handling (@lwis)
  • RFXtrx: Sensor cleanup (@turbokongen)
  • Device tracker: Fix for BLE device tracker (@open-homeautomation)
  • Device tracker: Allow ‘None’ MAC addresses to be loaded from known_devices file (@kellerza)
  • Cover: Bugfixes (@turbokongen, @danielperna84)
  • Sensor: Support for displaying details about crypto currencies (@fabaff)
  • Device tracker: Support for automatic to track your vehicles (@Teagan42)
  • Devie tracker: Add exclude option to Nmap device tracker (@danieljkemp)
  • Device tracker: Improved login errors for Asus device tracker (@kellerza)
  • Sensor: Support for displaying the status of Xbox Live accounts (@mKerix)
  • Notify: Adding link_names for sending Slack message (@salt-lick)
  • Binary sensor: Add the occupancy sensor class (@robbiet480)
  • Fan: Add supoort for MQTT fans (@robbiet480)
  • Docs: Add Sphinx API doc generation (@bbangert)
  • Core: Allow reloading automation without restart (@balloob)
  • Sensor: Added scale and offset to the Temper sensor (@mKerix)
  • Sensor: New support for [Trend] sensor (@pavoni)
  • Device tracker: Keep looking for new BLE devices (@Bart274)
  • Switch: Added device state attributes and support for legacy firmware for D-Link switches (@LinuxChristian)
  • Sensor: Improve 1-Wire device family detection (@Ardetus)
  • Modbus: Update to be thread safe (@persandstrom)
  • Camera: FFMpeg is abale to get the images (@pvizeli)
  • Core: Reload groups without restart (@balloob)
  • Core: Fix remove listener (@balloob)
  • Sensor: Support for monitoring your battery on a Linux host (@fabaff)
  • Core: Add support for complex template structures to data_template (@pvizeli)
  • check_config: Improve yaml fault tolerance and handle border cases (@kellerza)
  • Core: Add additional template for custom date formats (@lwis)
  • Sensor: Support for getting stats from Pi-Hole systems (@fabaff)
  • Modbus: New write_registers Modbus service (@persandstrom)
  • Device tracker: Fix TP-Link Archer C7 long passwords (@snikch)

Hotfix 0.28.1 - September 12

  • Fix: Simplisafe alarm control panels accept any string for code (@tchellomello)
  • Fix: Z-Wave would sometimes not detect all thermostats (@turbokongen)
  • Fix: Automatic device tracker when 2 or more cars are tracked (@teagan42)
  • Fix: Group ordering is now based on config again (@balloob, @kellerza)

Hotfix 0.28.2 - September 13

  • Light - pilight: Fix send RF code (@DavidLP)
  • Recorder: Fix specifying SQLite (@pvizeli)
  • Wink: Fix garage door detection (@turbokongen)
  • Climate - Ecobee: Fix inverted high and low temperatures (@turbokongen)
  • Allow changing covers using scenes (@nvella)
  • Device tracker - Automatic: Fix polling (@teagan42)

Backward-incompatible changes

  • OpenweatherMap entity IDs are now like sensor.owm_temperature. Previously they were like sensor.weather_temperature. Apologies for this change, but we needed to make OpenWeatherMap more generic now that we have many weather platforms.
  • Updates of configuration variables due to configuration check or alignment with other platforms. Please update your configuration entries according to the documentation:
  • Custom components extending BaseNotificationService need to be aware that kwargs.get(ATTR_TITLE) will now return None if a title has not been set, and will need to specify kwargs.get(ATTR_TITLE, ATTR_TITLE_DEFAULT) if they always require a title.

If you need help…

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

ESP8266 and MicroPython - Part 2

So, part 1 of [ESP8266 and MicroPython](/blog/2016/07/28/esp8266-and-micropython-part1/) was pretty lame, right? Instead of getting information out of Home Assistant we are going a step forward and create our own sensor which is sending details about its state to a Home Assistant instance. Read on →

0.27 is here to break eggs and take names: notifications, Hue fakery, safety and unification come to Home Assistant

This week’s blog post could only be possibly described by exactly one hashtag:


or maybe#supersized

Keep reading to see what #Amazing things we have in store for you this week 😄! And make sure you read all the way to the end, because I left a present down there for those committed few among you :)

But first…

Some general housekeeping

Paulus (@balloob) is on vacation in Europe this week, so you will all have to deal with me, Robbie (@robbiet480) for this release blog post. Don’t worry, Paulus will be back to tearing apart your pull requests in no time 😈.

Special thanks to my awesome helpers for this week’s release who are looking over my shoulder to make sure I’m crossing my t’s and dotting my i’s: @Teagan42, @infamy and @fabaff.

For my next trick, let’s hand out some…


I felt that I had to 1-up Paulus (@balloob) somehow with his 500,000 pageviews stat he shared in the 0.26 blog post, so I pushed myself and our development community as a whole super hard the last two weeks to put a lot of love into Home Assistant to bring you not just one, but six #Amazing stats for this release. As of 0.27, we have now surpassed the following milestones:

In addition,

Now that we have that great news out of the way, onto this week’s release which is going to keep the #Amazing gravy train rolling right along and get to the stuff you all really are here for.


While this release is #Amazing, we had to break a few eggs (now you understand the title reference!) to make a beautiful omelette (using home automation obviously) so some platforms and components have needed to introduce backward-incompatible changes. Please make sure to read the Backward-incompatible changes section below.

Hue Bridge Emulation

Thanks to @mgbowen we now have the functionality previously provided by @blocke’s ha-local-echo built right into Home Assistant! This means that for those of you with devices that either lack or have a subpar integration with Home Assistant (looking at you Amazon Echo) you can now have a better experience by having your Home Assistant pretend to be a Hue Bridge. Personally, I have used @auchter’s Haaska previously but found that it was slow to respond and sometimes failed entirely. With the new emulated_hue component, you can have local control of entities through Amazon Echo.

Notification improvements

We have some excellent upgrades to the notification system coming to you in 0.27, courtesy of me, @robbiet480.

HTML5 Push Notifications

This release adds support for HTML5 push notifications on Chrome/Firefox/Opera on both desktop and Android devices. This means that you can send a notification to your phone even when your Home Assistant is not open in your mobile browser. When using Chrome you can even include 2 action buttons so that you can control your Home Assistant from your phone’s lock screen, allowing you to do things like sound alarms or unlock your front door, all without leaving the notification. Thanks again to me (@robbiet480) and Paulus (@balloob) for all the hard work on this!

Notification Groups

Using the new notify group platform allows you to cut down a lot of duplicate automation logic by combining multiple notification platforms and targets into a single notify service. Check out the documentation for more info.

target is no longer needed

For platforms that support it, starting with the new HTML5 platform, any targets that are available will be exposed as individual services, so no more having to remember which targets to use. Please note that the existing services also still exist so you can keep using target if you wish.

Validate configuration before restarting Home Assistant

Ever restarted Home Assistant to test a configuration change just to find out there is a validation error? Well, not anymore! @kellerza has added a command line script that will validate your configuration as if you started Home Assistant.

hass --script check_config

Configuration validation

This release includes a big push on making sure all platforms contain proper configuration validation. This should help in getting your configuration right. Thanks to @fabaff, @pavoni, @pvizeli, @nkgilley for all the hard work on this, you all rock!

FFMpeg motion/noise sensing

It’s now possible to use FFMpeg to monitor a video stream and detect motion thanks to a new binary sensor platform by @pvizeli.

Component clean up - Thermostat & HVAC -> Climate. Rollershutter & Garage Door -> Cover

Due to our wild growth we ended up with a few components that had a lot of overlapping functionality. @turbokongen took on the hard job on merging them. Thermostat and HVAC platforms are now combined under the new Climate component. Rollershutter and Garage Door platforms are now combined under the new Cover component. You can easily upgrade by just swapping out the name. For example replace thermostat with climate. The old components have been deprecated and will be removed in the near future.

A new fan component

Along with the new climate component, @Teagan42 and I (@robbiet480) decided we needed something simpler to just control a fan. Currently it has support for controlling Insteon fans. MQTT support will appear in 0.28.0. I tried to get it implemented before 0.27.0 but spent too long writing this blog post 😢.

All changes

Backward-incompatible changes

  • Ecobee3 occupancy sensors have moved from sensor platform to binary sensor platform.
  • Forecast.io entity IDs are now like sensor.forecastio_temperature. Previously they were like sensor.weather_temperature. Apologies for this change, but we needed to make Forecast.io more generic now that we have many weather platforms.
  • The Loop Energy sensor configuration format changed slightly, please reformat based on the revised documentation.
  • The configuration for the SABnzbd sensor has slightly changed. The prefix type: is no longer required for monitored variables.
  • The IMAP sensor now uses username instead of user.
  • The NZBGet sensor has had so many changes I can’t list them all. Please refer to the documentation for more info.


  • Using the thermostat and hvac components has been deprecated. Please migrate to the new climate component. (just change the component name, the configurations are compatible)
  • Using the rollershutter and garage_door components have also been deprecated. Please migrate to the new cover component. (just change the component name, the configurations are compatible)

Finishing up

Thanks all for sticking with me to the end. I’ll be taking over a lot of Paulus’s (@balloob) work while he is gone, but as I said, don’t worry because he’ll be back well before 0.28.0 comes out. Hopefully you didn’t find this jovial blog post too jarring from our standard style, I just wrote a lot of this at 2am after being awake for almost 20 hours, so I’m a little loopy hahaha 😴.

Also, thanks as always to our developer contributors, documentation contributors, but most of all our users! This would’ve just been a script that Paulus (@balloob) used to control his lights at home if we didn’t have your enthusiasm.

Feel free to let me know what you thought of this blog post and release on Discord or my Twitter, or even the Home Assistant Twitter. Did I mention we have a brand new Facebook page that you should absolutely Like? There’s a convenient Facebook Like and Twitter follow button right on the sidebar.

I almost forgot about your 🎁 for reading all the way to here: a 🍪! Hope you enjoy it in good health 😄.

Talk to you soon on Discord and in your pull request comments!

– Robbie

(p.s. To those of you that scrolled directly to the bottom to get your present, just know that you didn’t earn it like the others did. 😄)

Hotfix 0.27.1 - August 30

  • Migrate APCUPSd to voluptuous (@fabaff)
  • Ecobee operation mode fix (@turbokongen)
  • update ha-ffmpeg version to 0.9 (@pvizeli)
  • Device tracker component & platform validation. No more home_range. (@kellerza)
  • Added option to use effect:random for Flux Led light bulbs (@tchellomello)
  • Use voluptuous for smtp (@pvizeli)
  • Upgrade sendgrid to 3.2.10 (@fabaff)
  • Upgrade TwitterAPI to 2.4.2 (@fabaff)
  • Fix bug in wemo discovery caused by voluptuous addition. (@pavoni)
  • Bug fix for asuswrt device_tracker. (@Danielhiversen)
  • Remove units for humidity in Wundeground sensor (@arsaboo)
  • Fix media_player descriptions and select_source (@MartinHjelmare)
  • Allow user to configure server id to perform speed test against (@Teagan42)
  • Bug fix for asuswrt device_tracker. (@Danielhiversen)
  • More Ecobee operation mode fixes (@turbokongen)
  • Map Modes to setpoint indexes (@turbokongen)
  • fix voluptuous and cover autodiscovery (@pvizeli)
  • Fixes wrong statevalue and problem with zwave setpoint (@turbokongen)

Hotfix 0.27.2 - September 3



We Have Apps Now

I have been working on a new subsystem to complement Home Assistant’s Automation and Scripting components. AppDaemon is a python daemon that consumes events from Home Assistant and feeds them to snippets of python code called “Apps”. An App is a Python class that is instantiated possibly multiple times from AppDaemon and registers callbacks for various system events. It is also able to inspect and set state and call services. The API provides a rich environment suited to home automation tasks that can also leverage all the power of Python.

Read on →

0.26: Foursquare, Fast.com, FFMPEG and GPSD

It’s time for 0.26 and it’s again full of new features and fixes. First I want to highlight that we are now having 500 000 monthly pageviews on the website. A big milestone for us! It’s been an amazing journey. Big thanks to the Home Assistant community for being such a delightful bunch.

This release includes code contributed by 31 different people. The biggest change in this release is a new unit system. Instead of picking Celsius or Fahrenheit you’ll have to pick imperial or metric now. This influences the units for your temperature, distance, and weight. This will simplify any platform or component that needs to know this information. Big thanks to @Teagan42 for her hard work on this!

Hotfix 0.26.1 - August 14

  • Fix serial_pm config validation (@open-homeautomation)
  • Check for existence of system mode on Honeywell thermostats (@mKeRix)
  • Fix unknown unit of measurement for hvac and thermostat component (@turbokongen)

Hotfix 0.26.2 - August 15

  • Fix Wemo: have PyWemo play nicely with the latest Requests (@pavoni)

Hotfix 0.26.3 - August 19

  • Media Player cover art would not work when an API password was set. Thanks to @maddox for reporting it and @balloob for the fix.

Backward-incompatible changes

  • A new unit system has superseded the temperature unit option in the core configuration. For now it is backwards compatible, but you should update soon:
# Configuration.yaml example
  # 'metric' for the metric system, 'imperial' for the imperial system
  unit_system: metric