iBeacons: How to track things that can’t track themselves (part II)

This post is by Home Assistant contributor Greg Dowling.

In Part 1 I talked about using iBeacons to improve presence tracking. In part 2 I’ll talk about how to track things like keys that can’t track themselves by using iBeacons.

Tracking things using iBeacons

In the first part I mentioned that iBeacons just send out I’m here packets, and we used this to trigger an update when your phone came close to a fixed beacon.

But beacons don’t have to be fixed.

Your phone knows roughly where it is located (based on mobile phone masts, Wi-Fi networks or GPS). If your phone sees an I’m here message then it knows the beacon is close.

If your phone can remember (or tell a server) where it was when it last saw the iBeacon - then it knows where the beacon was. So the result of this is that you can track where an iBeacon was - even though the iBeacon doesn’t have any tracking technology itself.

So if you put an iBeacon on your keys or in your car - then you can track them.

Here are my keys - with a Estimote Nearable iBeacon stuck to them. Ugly but effective!

Read on →

Raspberry Pi all-in-one installer

We are always hard at work at the virtual Home Assistant headquarters to make it easier for you to get started with Home Assistant. That’s why @patchedsoul recently introduced the all-in-one installer. It allows you to get up and running with a complete Home Assistant setup by entering one line of code into your Raspberry Pi running Raspbian Jessie:

wget -Nnv https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && bash hass_rpi_installer.sh;

This feature wouldn’t be complete if it wasn’t accompanied by a new video by Ben from BRUH Automation. The video shows how to install Raspbian Jessie on your Raspberry Pi and use the new installation script to get a full Home Assistant system up and running.

0.20: Roku, Last.fm, AWS, Twilio

Tons of new supported things in 0.20.

Backward-incompatible changes

  • Asus WRT will now default to SSH with Telnet being an option
  platform: asuswrt
  protocol: telnet

Why we use web components and Polymer

I’ve been planning to write this post for a while now as we get questions like this a lot: “Why does Home Assistant use Polymer? Why not React, Redux and what not?”

It’s understandable, Polymer is quite the underdog in the world of web frameworks. A corporate backer does not guarantee popularity or an active community and this shows in the number of projects using Polymer.

Still, we use Polymer and it’s awesome. To explain why, I’ll be referencing the React workflow quite a bit, as they do a lot of things right, and show how it is done in Polymer.

Polymer gives us components for the web, just like React, but based on web standards: web components, CSS variables. These standards don’t have wide browser support yet but it’s being implemented by every major browser: It’s the future. For now they are being polyfilled and that works just fine but in the future the Home Assistant web app will be able to run native in the browsers == fast.

Read on →

0.19: Empowering scripts and Alexa

This release is big. Until now, our automations and scripts have been very static. Starting today it should all be a bit more dynamic.

Scripts are now available in automations and when responding to Alexa/Amazon Echo. Both of these components will now expose data to be used in script templates (including from_state !). Passing data to script entities is available by passing the data to the script services.

    platform: mqtt
    topic: some/notify/topic
    service: notify.notify

automation 2:
    platform: state
    entity_id: light.hue
    service: notify.notify
      message:  is now 

Entity Namespaces allow you to influence the entity ids for a specific platform. For example you can turn light.living_room into light.holiday_home_living_room with the following config:

  platform: hue
  entity_namespace: holiday_home


  • Conditions in automations should now specify which condition to use with condition: instead of platform:. For example condition: state.
  • RFXtrx has a new config format.

Old RFXtrx config format:

      name: My DI.0 light device
      packetid: 1b2200000890efab1213f60

New RFXtrx config format:

      name: My DI.0 light device

iBeacons: Making presence detection work better (part I)

This post is by Home Assistant contributor Greg Dowling.

In 2013 Apple introduced iBeacons: a class of Bluetooth low energy (LE) devices that broadcast their identifier to nearby devices, including most smartphones. At first glance it’s hard to imagine why they might be useful. In this two part blog I’ll try and explain why they are useful and how you can use them with Home Assistant.

The reason I started using iBeacons was to improve presence detection (and I think that’s the case with most people) so that’s what I’ll discuss in part 1. In part 2 I’ll talk about using iBeacons to track devices that can’t track themselves.

Using beacons to improve OwnTracks location data

When you use OwnTracks in standard major move mode (which is kind to your phone battery) it sometimes fails to update when you’d like it to. In my case I found that it would often send a location update as I was on my way home, but then not update when I got home. The result would be that Home Assistant would think I was 500M away from home, and take quite a while to notice I was home. It would also mean that the automation that should turn on my lights when I got home didn’t work very well! There were a few times when my phone location updated at 2am and turned the lights on for me. Fortunately my wife is very patient!

Luckily, OwnTracks supports iBeacons so I could use them to make presence detection more reliable. When OwnTracks sees a beacon it recognizes, it will send an update. This means that if you put a beacon at your front door - OwnTracks will see it within a few seconds of you arriving home - and send an update saying it has seen this iBeacon.

Read on →

0.18: Bluetooth, LG WebOS TVs and Roombas.

It’s time for 0.18. This release cycle is 2 days shorter than usual as I’ll be traveling to Europe. This also means that it can take some more time before you get feedback on PRs.

Since the last release we have moved all Home Assistant source code etc into its own organization on GitHub. We’re growing up! This sadly did cause us to have to move all Docker images. Check the backward-incompatible changes section for more info.

Backward-incompatible changes

  • We have migrated our datetime format to be iso8601. This will only impact you if you are consuming the date times from the API directly. You can ignore this if you are just using Home Assistant via configuration and the frontend.
  • The constant TEMP_CELCIUS is now correctly called TEMP_CELSIUS. Old one is deprecated and will eventually be removed.
  • The location of the Docker image has changed. There was no possibility for us to keep maintaining the old image (as it was bound to the GitHub repo under my name) or to make a redirect. So if you are using the Home Assistant Docker image, change it to run homeassistant/home-assistant:latest for the latest release and homeassistant/home-assistant:dev for the latest dev version.
  • MySensors received two big changes that will cause you to update your configs. See component page for new example config.
    1. All MySensors entity IDs are different! There was an error in the naming that caused MySensors to append node ID and child ID instead of separating them with an underscore. This has been fixed but will cause all your MySensors entity IDs to change. This is a one time breaking change.
    2. The second change is that we now support the TCP ethernet gateway. This is causing a slight change to the config format: you have to change port: under gateways to device:.

To Infinity and Beyond 🚀

After 2.5 years I think we can proudly say: Home Assistant is a success. I write we because Home Assistant is no longer a one-person side project. It has become the side project of many people who spend countless hours on making Home Assistant the best home automation software out there. To acknowledge this we migrated the repositories from being under my name to be under our own organization on GitHub.

On our journey we’ve reached many noteworthy milestones:

  • #1 on HackerNews
  • Featured on ProductHunt
  • Trending repository on GitHub
  • 3000 stars on GitHub
  • 1.5 million page views on our website
  • Speaker at OpenIoT Summit 2016

All these accomplishments are a nice pat on the back but our journey is far from over. There are a lot of challenges ahead if we want to become the go to solution for home automation for everyone.

Until now the focus has been on making a platform that developers love to use. A platform that is simple but customizable. A platform that is both powerful and reliable. But most important: a platform that is local and open. Home Assistant does a great job at all these things.

There will be some major challenges ahead of us to target groups other than developers. Easy installation and easy configuration being the #1. I’m sure that we’ll be able to eventually achieve these goals. I can’t say yet how or when. As with everything Home Assistant, we’ll take tiny steps, gathering feedback along the way to make sure we’re solving the right problems.

I am confident that we will get there because we are set up for success: we have a robust architecture, high test coverage and an active community of world class developers and users. On top of that, we use Python which allows us to move fast and tackle complex problems in elegant ways. It is so easy to learn that it allows any programmer, experienced or not, to contribute support for devices and services. It’s as simple as filling in the blanks.

I would like to put out a big thank you to all our contributors who make Home Assistant what it is today. It doesn’t matter if it is form of code, documentation or giving support in our chat room or forums. You. all. rock.

Cheers to the future!