Blog
Talk: Automating your home with Home Assistant (OpenIoT Summit)
At the beginning of April I gave a talk about Home Assistant at the OpenIoT summit in San Diego. I talk about the Home Assistant architecture and explain how to get started integrating your devices. Big thanks to my employer AppFolio (we’re hiring!
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
- Media Player: redesign in the UI! (@DesignFirst
, @balloob ) - New component: Zeroconf for Home Assistant discovery (@robbiet480
) - Garage door: MQTT now supported (@joelash
) - Thermostat: Homematic platform now supports Max! devices (@bimbar
) - New component Thinkingcleaner (switch/sensor) to integrate your Roomba into Home Assistant (@TheRealLink
) - New component: upnp to automatically open a upnp port on your router for Home Assistant (@robbiet480
) - Thermostat: EQ3 Bluetooth Smart Thermostats now supported (@bimbar
) - New component Feedreader will track RSS feeds (@shaftoe
) - Device Tracker: Bluetooth tracking platform added (@vmulpuru
) - Media Player: LG WebOS TVs now supported (@TheRealLink
) - Notify: LG WebOS TVs now supported (@TheRealLink
) - HTTP: Use constant time comparison for auth (@JshWright
) - Config and service validations (@jaharkes
, @Danielhiversen ) - MySensors: Entity IDs will more clearly differentiate between node ID and child ID (@oeysteinhansen
) - MySensors: Add support for ethernet gateway (@MartinHjelmare
) - Media player: Plex will now monitor the server and add clients as they pop up (@infamy
) - Core: We now use iso8601 for datetimes (@balloob
). - Media Player: MPD now supports service to play playlists (@Cinntax
) - Z-Wave should be a little bit more stable (@Turbokongen
) - Media Player: Sonos will now only add visible devices (@jpmossin
) - Light: Wink will now allow controlling the colors (@bradsk88
)
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 calledTEMP_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 andhomeassistant/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.
- 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.
- 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:
undergateways
todevice:
.
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
Cheers to the future!
Paulus
Updated documentation
One of the main complaints that we receive is something along the lines “I read that X is possible yet I am unable to find it on the website.”. This post is to announce that we have taken the first steps to improve it by revamping the getting started and developers sections. It’s still a work in progress but we now have a solid foundation to build on for the future 👍.
Our documentation has been going through various phases. Initially it was just the README in our GitHub repository. I discovered Jekyll and GitHub pages in December 2014 and created home-assistant.io. I more or less broke the README in 5 pages and called it a website. Back then we had a whopping 11 components!
As Home Assistant grew, so did our documentation. Fabian Affolter
Today it has been almost 1.5 years since we started the website. We now have 264 components and platforms under our belt and have been honored with 1.5 million page views ✨. And hopefully we now also have documentation that our community deserves.
Finally, if you see some content that could use more clarifcation or is outdated, don’t hesitate to use the ‘Edit in GitHub’ link that is present on each page.
0.17: Onkyo, Panasonic, GTFS and config validation
Another awesome release ready to hit your homes. YAML can be hard for beginners and more experienced automators. So to help catch those pesky errors that sneak into your files we’ve been hard at work to introduce config validation! Especially huge thanks to @jaharkes
When we encounter an invalid config we will now write a warning to your logs. You can see those in the frontend by clicking on the last developer tool. We’re looking into options to make it more clear - it is a work in progress.
Another big thing is the addition of GTFS support. You probably don’t know it, but GTFS is the standard that public transit companies all over the world use to distribute their schedule. This means that you can now have the time of the next bus/train/etc right in your frontend.
- Config validation (@balloob
, @jaharkes ) - Sensor: GTFS support (public transit open standard) (@robbiet480
) - Camera: Raspberry PI support added (@LucaSoldi
) - Z-Wave: improved startup reliability (@srcLurker
) - Media Player: Onkyo receiver now supported (@danieljkemp
) - Sensor: Loop Energy now supported (@pavoni
) - Thermostat: Z-Wave now supported (@coteyr
, @turbokongen , @luxus ) - Sensor: NZBGet now supported (@justyns
) - Media Player: Panasonic Viera TV now supported (@florianholzapfel
) - Thermostats: Use whole degrees if user uses Fahrenheit (@JshWright
) - Frontend: more material love (@balloob
)
Backward-incompatible changes
As of now we are not aware of any backward-incompatible changes. However, it might be that Home Assistant will not start for you because of an invalid configuration. A common mistake that people are making is that they are still referring to execute_service
in their script configs. This should be service
.
Static website
The frontend of Home Assistant is served with the help of a local web server. If you have customized your installation you already use this functionality. The content of your folder www
in your Home Assistant configuration directory (.homeassistant
) is available under /local
(eg. https://localhost:8123/local/index.html
for an index.html
file).
But there is more you can do! You can not only host images for customization there but HTML files or even web applications including CSS and Javascript.
Read on →
Your hub should be local and open
Today the news spread that Google will be shutting down the Revolv hubs
I’ve said it before but I’ll repeat it again:
The cloud should be treated as an extension to your smart home instead of running it.
Your hub should not be affected when your internet breaks down or the company that sold you your hub goes out of business. It should work locally so that it can continue to work even long after the vendor goes out of business or decides to kill it. Preferably, your hub should also be open so that the community can take over development after the vendor stops caring.
Unless you can afford losing a product here and there, be cautious when buying IoT products that depend on the cloud from companies that are not well established. The chances are high that they go bankrupt or get acquired and closed. This however is easier said than done as Gartner
0.16: Embedded MQTT broker, Uber, Yamaha receivers and Growl
Party people, 0.16 is here! The big thing with this release is that we have completely removed the barrier to get started by MQTT by being able to launch an embedded MQTT server: hbMQTTmqtt:
to your config and a broker is launched and connected with Home Assistant.
Further in this release a bunch of cool new stuff, bug fixes and rewrites for the Vera and Tellstick component (see backward-incompatible changes section at bottom for this!).
Rock on.
- Device Tracker - OwnTracks: Allow entry into passive zones using iBeacons (@pavoni
) - Tellstick: rewrite to component to address concurrency issues (@stefan-jonasson
) - Z-Wave: add services to heal and soft reset network (@srcLurker
) - New component input_slider added (@persandstrom
) - Light - Hue: Option added to ignore unreachable property (@maddox
) - Notify: MessageBird support added (@florianholzapfel
) - HTTP: Failed login attempts are now logged (@fabaff
) - Vera: rewrite to component to simplify code and organize for reusability (@pavoni
) - Discovery: support for Squeezebox (Logitech media) server added (@jaharkes
) - Discovery: fix uPNP discovery crashing some routers (@jaharkes
) - Switch: Wake on LAN platform added (@joopert
) - Services for thermostats, notify and media player will now validate passed in parameters (@MartinHjelmare
) - Switch - Arduino: support for default state and negate port functionality (@tilutza)
- Switch: PulseAudio loopback now supported (@Cinntax
) - Sensor: Uber now supported (@robbiet480
) - Notify: Growl (GNTP) now supported (@robbiet480
) - Media Player: Yamaha receivers now supported (@aoakeson
)
Backward-incompatible changes
-
Automation: support for old deprecated config has been removed
-
Tellstick configuration has changed
tellstick:
signal_repetitions: X
- Vera configuration has changed
vera:
vera_controller_url: http://192.168.1.161:3480/
# Optional to exclude devices - this is a list of vera device ids
exclude: [ 13, 14, 16, 20, 23, 72, 73, 74, 75, 76, 77, 78, 88, 89, 99]
# Optional to import switches as lights - this is a list of vera device ids
lights: [15, 17, 19, 21, 22, 24, 26, 43, 64, 70, 87]
0.15: Unforked Open Z-Wave, templated service calls, extended scene support and PEP257 compliance.
Two weeks has past so here is 0.15! We have been focussing a lot on quality. Making sure the system is more stable and reliable. I usually try to highlight one cool thing in the release notes but this release has 4 exciting announcements!
-
@fabaff
has upgraded the codebase to follow the PEP257 documentation standard. -
@partofthething
has migrated us to use the main Python Open Z-Wave library instead of our forked version. - To make our automations more powerful, @persandstrom
added the option to use templates to dynamically create service calls. This works for automation, Alexa, universal media player, template switch. Learn more. -
@MartinHjelmare
has upgraded our scene support to now support all built-in services and components.
Besides bug fixes, this release also brings:
- Scene: Converted to a platform based component (@sander76
) - Scene: Hunter Douglas Powerview now supported (@sander76
) - Lock: MQTT platform added (@fabaff
) - Device Tracker: OwnTracks will allow filtering inaccurate GPS locations (@HydrelioxGitHub
) - Binary Sensor: Wemo Motion now supported (@pavoni
, @ryanlaux )
# Example using templates for service and data in service call.
# Works for automation, Alexa, universal media player, template switch.
automation:
- trigger:
- platform: state
entity_id: switch.bathroom
action:
service: >
{% if is_state('switch.bathroom', 'on') %}
switch.turn_on
{% else %}
switch.turn_off
{% endif %}
target:
entity_id: switch.{{ states('input_select.is') }}
Backward-incompatible changes
- Media Player: Attributes to call service play_media has been renamed to
media_content_type
andmedia_content_id
, to match the corresponding media player state attributes. This change affects automations, scripts and scenes.