From 04c92e7198c4b289292141212ca582781a38fcdd Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 16 Aug 2016 07:40:09 +0000 Subject: [PATCH] Site updated at 2016-08-16 07:40:09 UTC --- atom.xml | 155 ++++++- blog/2014/12/18/website-launched/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- blog/2015/01/13/nest-in-da-house/index.html | 12 +- blog/2015/01/24/release-notes/index.html | 12 +- .../2015/02/08/looking-at-the-past/index.html | 12 +- blog/2015/02/24/streaming-updates/index.html | 12 +- .../index.html | 12 +- blog/2015/03/08/new-logo/index.html | 12 +- blog/2015/03/11/release-notes/index.html | 12 +- blog/2015/03/22/release-notes/index.html | 12 +- blog/2015/04/25/release-notes/index.html | 12 +- .../05/09/utc-time-zone-awareness/index.html | 12 +- blog/2015/05/14/release-notes/index.html | 12 +- blog/2015/06/10/release-notes/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../13/home-assistant-meets-ifttt/index.html | 12 +- .../index.html | 12 +- .../alarm-sonos-and-itunes-support/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../11/22/survey-november-2015/index.html | 12 +- .../12/05/community-highlights/index.html | 12 +- .../index.html | 12 +- .../12/07/influxdb-and-grafana/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../01/19/perfect-home-automation/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../multi-room-audio-with-snapcast/index.html | 12 +- .../02/20/community-highlights/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- blog/2016/04/07/static-website/index.html | 12 +- .../index.html | 12 +- .../04/17/updated-documentation/index.html | 12 +- .../04/19/to-infinity-and-beyond/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../05/06/open-iot-summit-talk/index.html | 12 +- .../empowering-scripts-and-alexa/index.html | 12 +- .../index.html | 12 +- blog/2016/05/18/why-we-use-polymer/index.html | 12 +- blog/2016/05/21/release-020/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../06/01/community-highlights/index.html | 12 +- .../08/super-fast-web-enocean-lirc/index.html | 12 +- .../home-assistant-at-pycon-2016/index.html | 12 +- .../index.html | 12 +- .../usb-webcams-and-home-assistant/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../sqlalchemy-knx-join-simplisafe/index.html | 12 +- .../19/visualizing-your-iot-data/index.html | 12 +- .../index.html | 12 +- .../esp8266-and-micropython-part1/index.html | 8 +- .../index.html | 12 +- .../03/laundry-automation-update/index.html | 12 +- .../index.html | 12 +- blog/2016/08/09/we-have-apps-now/index.html | 378 ++++++++++++++++++ .../index.html | 12 +- blog/archives/index.html | 44 +- blog/categories/community/atom.xml | 2 +- blog/categories/community/index.html | 12 +- blog/categories/device-tracking/atom.xml | 2 +- blog/categories/device-tracking/index.html | 12 +- blog/categories/esp8266/atom.xml | 2 +- blog/categories/esp8266/index.html | 12 +- blog/categories/how-to/atom.xml | 271 +++++++------ blog/categories/how-to/index.html | 44 +- blog/categories/ibeacons/atom.xml | 2 +- blog/categories/ibeacons/index.html | 12 +- blog/categories/internet-of-things/atom.xml | 2 +- blog/categories/internet-of-things/index.html | 12 +- blog/categories/iot-data/atom.xml | 2 +- blog/categories/iot-data/index.html | 12 +- blog/categories/mqtt/atom.xml | 2 +- blog/categories/mqtt/index.html | 12 +- blog/categories/organisation/atom.xml | 2 +- blog/categories/organisation/index.html | 12 +- blog/categories/owntracks/atom.xml | 2 +- blog/categories/owntracks/index.html | 12 +- blog/categories/presence-detection/atom.xml | 2 +- blog/categories/presence-detection/index.html | 12 +- .../public-service-announcement/atom.xml | 2 +- .../public-service-announcement/index.html | 12 +- blog/categories/release-notes/atom.xml | 2 +- blog/categories/release-notes/index.html | 12 +- blog/categories/survey/atom.xml | 2 +- blog/categories/survey/index.html | 12 +- blog/categories/talks/atom.xml | 2 +- blog/categories/talks/index.html | 12 +- blog/categories/technology/atom.xml | 2 +- blog/categories/technology/index.html | 12 +- blog/categories/user-stories/atom.xml | 2 +- blog/categories/user-stories/index.html | 12 +- blog/categories/video/atom.xml | 2 +- blog/categories/video/index.html | 12 +- blog/categories/website/atom.xml | 2 +- blog/categories/website/index.html | 12 +- blog/index.html | 140 ++----- blog/posts/2/index.html | 143 ++++--- blog/posts/3/index.html | 146 +++---- blog/posts/4/index.html | 174 ++++---- blog/posts/5/index.html | 142 +++---- blog/posts/6/index.html | 133 +++--- blog/posts/7/index.html | 113 +++--- blog/posts/8/index.html | 47 +++ index.html | 8 +- sitemap.xml | 37 +- topics/platform_options/index.html | 12 +- 130 files changed, 1899 insertions(+), 1272 deletions(-) create mode 100644 blog/2016/08/09/we-have-apps-now/index.html diff --git a/atom.xml b/atom.xml index 6b5998bd5d..887a643588 100644 --- a/atom.xml +++ b/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ @@ -83,6 +83,144 @@ +]]> + + + + <![CDATA[We Have Apps Now]]> + + 2016-08-09T18:00:00+00:00 + https://home-assistant.io/blog/2016/08/09/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.

+ + + +

Another Take on Automation

+ +

If you haven’t yet read Paulus’ excellent Blog entry on Perfect Home Automation I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the “Automation” in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation to bring this all together in the vast and chaotic ecosystem that is the “Internet of Things”.

+ +

So given the importance of Automation, what should Automation allow us to do? I am a pragmatist at heart so I judge individual systems by the ease of accomplishing a few basic but representative tasks:

+ +
    +
  • Can the system respond to presence or absence of people?
  • +
  • Can I turn a light on at Sunset +/- a certain amount of time?
  • +
  • Can I arrive home in light or dark and have the lights figure out if they should be on or off?
  • +
  • As I build my system out, can I get the individual pieces to co-operate and use and re-use (potentially complex) logic to make sure everything works smoothly?
  • +
  • Is it open and expandable?
  • +
  • Does it run locally without any reliance on the cloud?
  • +
+ +

In my opinion, Home Assistant accomplishes the majority of these very well with a combination of Automations, Scripts and Templates, and it’s Restful API.

+ +

So why AppDaemon? AppDaemon is not meant to replace Home Assistant Automations and Scripts, rather complement them. For a lot of things, automations work well and can be very succinct. However, there is a class of more complex automations for which they become harder to use, and appdeamon then comes into its own. It brings quite a few things to the table:

+ +
    +
  • New paradigm - some problems require a procedural and/or iterative approach, and AppDaemon Apps are a much more natural fit for this. Recent enhancements to Home Assistant scripts and templates have made huge strides, but for the most complex scenarios, Apps can do things that Automations can’t
  • +
  • Ease of use - AppDaemon’s API is full of helper functions that make programming as easy and natural as possible. The functions and their operation are as “Pythonic” as possible, experienced Python programmers should feel right at home.
  • +
  • Reuse - write a piece of code once and instantiate it as an app as many times as you need with different parameters e.g. a motion light program that you can use in 5 different places around your home. The code stays the same, you just dynamically add new instances of it in the config file
  • +
  • Dynamic - AppDaemon has been designed from the start to enable the user to make changes without requiring a restart of Home Assistant, thanks to it’s loose coupling. However, it is better than that - the user can make changes to code and AppDaemon will automatically reload the code, figure out which Apps were using it and restart them to use the new code without the need to restart AppDaemon itself. It is also possible to change parameters for an individual or multiple apps and have them picked up dynamically, and for a final trick, removing or adding apps is also picked up dynamically. Testing cycles become a lot more efficient as a result.
  • +
  • Complex logic - Python’s If/Else constructs are clearer and easier to code for arbitrarily complex nested logic
  • +
  • Durable variables and state - variables can be kept between events to keep track of things like the number of times a motion sensor has been activated, or how long it has been since a door opened
  • +
  • All the power of Python - use any of Python’s libraries, create your own modules, share variables, refactor and re-use code, create a single app to do everything, or multiple apps for individual tasks - nothing is off limits!
  • +
+ +

It is in fact a testament to Home Assistant’s open nature that a component like AppDaemon can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant’s underlying design is that it makes no assumptions whatever about what it is controlling or reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for AppDaemon - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner - the bulk of the work after that was adding additonal functions to make things that were already possible easier.

+ +

How it Works

+ +

The best way to show what AppDaemon does is through a few simple examples.

+ +

Sunrise/Sunset Lighting

+ +

Lets start with a simple App to turn a light on every night at sunset and off every morning at sunrise. Every App when first started will have its initialize() function called which gives it a chance to register a callback for AppDaemons’s scheduler for a specific time. In this case we are using run_at_sunrise() and run_at_sunset() to register 2 separate callbacks. The argument 0 is the number of seconds offset from sunrise or sunset and can be negative or positive. For complex intervals it can be convenient to use Python’s datetime.timedelta class for calculations. When sunrise or sunset occurs, the appropriate callback function, sunrise_cb() or sunset_cb() is called which then makes a call to Home Assistant to turn the porch light on or off by activating a scene. The variables args["on_scene"] and args["off_scene"] are passed through from the configuration of this particular App, and the same code could be reused to activate completely different scenes in a different version of the App.

+ +
+
import appapi
+
+class OutsideLights(appapi.AppDaemon):
+
+  def initialize(self):
+    self.run_at_sunrise(self.sunrise_cb, 0)
+    self.run_at_sunset(self.sunset_cb, 0)
+    
+  def sunrise_cb(self, args, kwargs):
+    self.turn_on(self.args["off_scene"])
+
+  def sunset_cb(self, args, kwargs):
+    self.turn_on(self.args["on_scene"])
+
+
+
+
+ +

This is also fairly easy to achieve with Home Assistant automations, but we are just getting started.

+ +

Motion Light

+ +

Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the initialize() function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - new = "on". When the motion is detected, the callack function motion() is called, and we check whether or not the sun has set using a built-in convenience function: sun_down(). Next, we turn the light on with turn_on(), then set a timer using run_in() to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in AppDaemon calling light_off() 60 seconds later using the turn_off() call to actually turn the light off. This is still pretty simple in code terms:

+ +
+
import appapi
+
+class MotionLights(appapi.AppDaemon):
+
+  def initialize(self):
+    self.listen_state(self.motion, "binary_sensor.drive", new = "on")
+  
+  def motion(self, entity, attribute, old, new, kwargs):
+    if self.sun_down():
+      self.turn_on("light.drive")
+      self.run_in(self.light_off, 60)
+  
+  def light_off(self, kwargs):
+    self.turn_off("light.drive")
+
+
+
+ +

This is starting to get a little more complex in Home Assistant automations requiring an Automation rule and two separate scripts.

+ +

Now lets extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Lets warn someone inside the house that there has been motion outside by flashing a lamp on and off 10 times. We are reacting to the motion as before by turning on the light and setting a timer to turn it off again, but in addition, we set a 1 second timer to run flash_warning() which when called, toggles the inside light and sets another timer to call itself a second later. To avoid re-triggering forever, it keeps a count of how many times it has been activated and bales out after 10 iterations.

+ +
+
import appapi
+
+class FlashyMotionLights(appapi.AppDaemon):
+
+  def initialize(self):
+    self.listen_state(self.motion, "binary_sensor.drive", new = "on")
+  
+  def motion(self, entity, attribute, old, new, kwargs):
+    if self.self.sun_down():
+      self.turn_on("light.drive")
+      self.run_in(self.light_off, 60)
+      self.flashcount = 0
+      self.run_in(self.flash_warning, 1)
+  
+  def light_off(self, kwargs):
+    self.turn_off("light.drive")
+    
+  def flash_warning(self, kwargs):
+    self.toggle("light.living_room")
+    self.flashcount += 1
+    if self.flashcount < 10:
+      self.run_in(self.flash_warning, 1)
+
+
+
+ +

Of course if I wanted to make this App or its predecessor reusable I would have provided parameters for the sensor, the light to activate on motion, the warning light and even the number of flashes and delay between flashes.

+ +

In addition, Apps can write to AppDaemon’s logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple.

+ +

I have spent the last few weeks moving all of my (fairly complex) automations over to APPDaemon and so far it is working very reliably.

+ +

Some people will maybe look at all of this and say “what use is this, I can already do all of this”, and that is fine, as I said this is an alternative not a replacement, but I am hopeful that for some users this will seem a more natural, powerful and nimble way of building potentially very complex automations.

+ +

If this has whet your appetite, feel free to give it a try. You can find it, here, including full installation instructions, an API reference, and a number of fully fleshed out examples.

+ +

Happy Automating!

+ ]]>
@@ -1600,21 +1738,6 @@ target_dir /tmp

So there it is, the reason why we use Polymer.

-]]> - - - - <![CDATA[Video: How To Configure Home Assistant]]> - - 2016-05-12T00:09:00+00:00 - https://home-assistant.io/blog/2016/05/12/video-configuring-home-assistant - Ben from BRUH Automation authors a lot of great video’s about how he is using Home Assistant and how you can get started with it too. The video below will walk you through how to configure Home Assistant. Enjoy!

- -

Make sure to subscribe to his YouTube channel for more Home Assistant video’s.

- -
- -
]]>
diff --git a/blog/2014/12/18/website-launched/index.html b/blog/2014/12/18/website-launched/index.html index d0a478ce51..24d6554134 100644 --- a/blog/2014/12/18/website-launched/index.html +++ b/blog/2014/12/18/website-launched/index.html @@ -175,6 +175,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -192,12 +198,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html index bee8d95171..d22e96ffcc 100644 --- a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html +++ b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html @@ -230,6 +230,12 @@ This article will try to explain how they all relate.

    +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -247,12 +253,6 @@ This article will try to explain how they all relate.

    - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html index 7af55f9103..1956b3f73e 100644 --- a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html +++ b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html @@ -214,6 +214,12 @@ api_key=ABCDEFGHJKLMNOPQRSTUVXYZ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -231,12 +237,6 @@ api_key=ABCDEFGHJKLMNOPQRSTUVXYZ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html index 4de19b9e7f..4d32e30d5f 100644 --- a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html +++ b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html @@ -189,6 +189,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -206,12 +212,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/01/13/nest-in-da-house/index.html b/blog/2015/01/13/nest-in-da-house/index.html index 4d9f76b2a9..f5fe42e266 100644 --- a/blog/2015/01/13/nest-in-da-house/index.html +++ b/blog/2015/01/13/nest-in-da-house/index.html @@ -192,6 +192,12 @@ password=YOUR_PASSWORD +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -209,12 +215,6 @@ password=YOUR_PASSWORD - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/01/24/release-notes/index.html b/blog/2015/01/24/release-notes/index.html index d469e5cd84..bb769f91aa 100644 --- a/blog/2015/01/24/release-notes/index.html +++ b/blog/2015/01/24/release-notes/index.html @@ -198,6 +198,12 @@ Home Assistant now supports --open-ui and --demo-mode +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -215,12 +221,6 @@ Home Assistant now supports --open-ui and --demo-mode - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/02/08/looking-at-the-past/index.html b/blog/2015/02/08/looking-at-the-past/index.html index e2ac75fe1a..462034449e 100644 --- a/blog/2015/02/08/looking-at-the-past/index.html +++ b/blog/2015/02/08/looking-at-the-past/index.html @@ -206,6 +206,12 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -223,12 +229,6 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/02/24/streaming-updates/index.html b/blog/2015/02/24/streaming-updates/index.html index 19ddf06400..f97db7e25a 100644 --- a/blog/2015/02/24/streaming-updates/index.html +++ b/blog/2015/02/24/streaming-updates/index.html @@ -191,6 +191,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -208,12 +214,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html index 1fe88e48de..c9e3f950fd 100644 --- a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html +++ b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html @@ -181,6 +181,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -198,12 +204,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/03/08/new-logo/index.html b/blog/2015/03/08/new-logo/index.html index 6800b73540..2c7c3a25e7 100644 --- a/blog/2015/03/08/new-logo/index.html +++ b/blog/2015/03/08/new-logo/index.html @@ -182,6 +182,12 @@ The old logo, the new detailed logo and the new simple logo. +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -199,12 +205,6 @@ The old logo, the new detailed logo and the new simple logo. - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/03/11/release-notes/index.html b/blog/2015/03/11/release-notes/index.html index d229113050..48d8f21dec 100644 --- a/blog/2015/03/11/release-notes/index.html +++ b/blog/2015/03/11/release-notes/index.html @@ -221,6 +221,12 @@ An initial version of voice control for Home Assistant has landed. The current i +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -238,12 +244,6 @@ An initial version of voice control for Home Assistant has landed. The current i - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/03/22/release-notes/index.html b/blog/2015/03/22/release-notes/index.html index 35f9b068f6..a247d3b1c6 100644 --- a/blog/2015/03/22/release-notes/index.html +++ b/blog/2015/03/22/release-notes/index.html @@ -258,6 +258,12 @@ I (Paulus) have contributed a scene component. A user can create scenes that cap +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -275,12 +281,6 @@ I (Paulus) have contributed a scene component. A user can create scenes that cap - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/04/25/release-notes/index.html b/blog/2015/04/25/release-notes/index.html index 6e560c2092..4e45c96989 100644 --- a/blog/2015/04/25/release-notes/index.html +++ b/blog/2015/04/25/release-notes/index.html @@ -269,6 +269,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -286,12 +292,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/05/09/utc-time-zone-awareness/index.html b/blog/2015/05/09/utc-time-zone-awareness/index.html index 1f0926af8c..ebcd735468 100644 --- a/blog/2015/05/09/utc-time-zone-awareness/index.html +++ b/blog/2015/05/09/utc-time-zone-awareness/index.html @@ -204,6 +204,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -221,12 +227,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/05/14/release-notes/index.html b/blog/2015/05/14/release-notes/index.html index a51e17d643..d4127507bf 100644 --- a/blog/2015/05/14/release-notes/index.html +++ b/blog/2015/05/14/release-notes/index.html @@ -296,6 +296,12 @@ Before diving into the newly supported devices and services, I want to highlight +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -313,12 +319,6 @@ Before diving into the newly supported devices and services, I want to highlight - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/06/10/release-notes/index.html b/blog/2015/06/10/release-notes/index.html index 6513be379a..0647ef52c0 100644 --- a/blog/2015/06/10/release-notes/index.html +++ b/blog/2015/06/10/release-notes/index.html @@ -349,6 +349,12 @@ This switch platform allows you to control your motion detection setting on your +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -366,12 +372,6 @@ This switch platform allows you to control your motion detection setting on your - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html index ff7b8b5100..8ed6d53cdb 100644 --- a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html +++ b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html @@ -301,6 +301,12 @@ Fabian has added support for Forecast.io to g +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -318,12 +324,6 @@ Fabian has added support for Forecast.io to g - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html index dd0f979f16..c9a2e9d809 100644 --- a/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html +++ b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html @@ -290,6 +290,12 @@ Support for Temper temperature sensors has been contributed by + We Have Apps Now + + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -307,12 +313,6 @@ Support for Temper temperature sensors has been contributed by - ESP8266 and MicroPython - Part 1 - - - diff --git a/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html b/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html index a8d7f6302e..7297fe99a8 100644 --- a/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html +++ b/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html @@ -200,6 +200,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -217,12 +223,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html b/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html index 2f902f8c0d..f11cc780df 100644 --- a/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html +++ b/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html @@ -313,6 +313,12 @@ The automation and script syntax here is using a deprecated and no longer suppor +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -330,12 +336,6 @@ The automation and script syntax here is using a deprecated and no longer suppor - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html b/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html index 113f860002..a26a43009b 100644 --- a/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html +++ b/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html @@ -287,6 +287,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -304,12 +310,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html b/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html index 744890f935..cbab9413c8 100644 --- a/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html +++ b/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html @@ -490,6 +490,12 @@ PubSubClient client(ethClient); +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -507,12 +513,6 @@ PubSubClient client(ethClient); - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/09/13/home-assistant-meets-ifttt/index.html b/blog/2015/09/13/home-assistant-meets-ifttt/index.html index 39892aeb3a..cd9abf528b 100644 --- a/blog/2015/09/13/home-assistant-meets-ifttt/index.html +++ b/blog/2015/09/13/home-assistant-meets-ifttt/index.html @@ -349,6 +349,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -366,12 +372,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html b/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html index f065b211a4..78021fb8b2 100644 --- a/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html +++ b/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html @@ -250,6 +250,12 @@ Glances web server started on http://0.0.0.0:61208/ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -267,12 +273,6 @@ Glances web server started on http://0.0.0.0:61208/ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html b/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html index 3fc6783ca8..826b2b04e5 100644 --- a/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html +++ b/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html @@ -229,6 +229,12 @@ Automation has gotten a lot of love. It now supports conditions, multiple trigge +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -246,12 +252,6 @@ Automation has gotten a lot of love. It now supports conditions, multiple trigge - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html b/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html index 1eecffefd7..0f3fc0da5a 100644 --- a/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html +++ b/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html @@ -205,6 +205,12 @@ Map in Home Assistant showing two people and three zones (home, school, work) +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -222,12 +228,6 @@ Map in Home Assistant showing two people and three zones (home, school, work) - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html b/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html index dd429299f9..4281753f86 100644 --- a/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html +++ b/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html @@ -549,6 +549,12 @@ Adafruit_HDC1000 hdc = Adafruit_HDC1000(); +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -566,12 +572,6 @@ Adafruit_HDC1000 hdc = Adafruit_HDC1000(); - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html b/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html index c3426b6689..72e4d1503f 100644 --- a/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html +++ b/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html @@ -194,6 +194,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -211,12 +217,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html b/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html index 64bfb2af5c..39166b7629 100644 --- a/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html +++ b/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html @@ -216,6 +216,12 @@ This makes more sense as most people run Home Assistant as a daemon

    +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -233,12 +239,6 @@ This makes more sense as most people run Home Assistant as a daemon

    - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html b/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html index f302d3b9d3..914b8d0955 100644 --- a/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html +++ b/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html @@ -212,6 +212,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -229,12 +235,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/11/22/survey-november-2015/index.html b/blog/2015/11/22/survey-november-2015/index.html index c478d15ffa..2640996909 100644 --- a/blog/2015/11/22/survey-november-2015/index.html +++ b/blog/2015/11/22/survey-november-2015/index.html @@ -252,6 +252,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -269,12 +275,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/12/05/community-highlights/index.html b/blog/2015/12/05/community-highlights/index.html index 77ee54f6e2..11d37a1e31 100644 --- a/blog/2015/12/05/community-highlights/index.html +++ b/blog/2015/12/05/community-highlights/index.html @@ -187,6 +187,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -204,12 +210,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html b/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html index 4968b14005..28b98d2df3 100644 --- a/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html +++ b/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html @@ -194,6 +194,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -211,12 +217,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/12/07/influxdb-and-grafana/index.html b/blog/2015/12/07/influxdb-and-grafana/index.html index 2199eb127a..ce7a16a250 100644 --- a/blog/2015/12/07/influxdb-and-grafana/index.html +++ b/blog/2015/12/07/influxdb-and-grafana/index.html @@ -285,6 +285,12 @@ $ sudo systemctl status grafana-server +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -302,12 +308,6 @@ $ sudo systemctl status grafana-server - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html b/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html index 2493089e2d..e65a90bc3a 100644 --- a/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html +++ b/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html @@ -235,6 +235,12 @@ requests.get(' + We Have Apps Now + + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -252,12 +258,6 @@ requests.get(' - ESP8266 and MicroPython - Part 1 - - - diff --git a/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html b/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html index ee1d5580e9..a527340022 100644 --- a/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html +++ b/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html @@ -207,6 +207,12 @@ Philips Hue FAQ entries regarding 3rd party light bulbs. +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -224,12 +230,6 @@ Philips Hue FAQ entries regarding 3rd party light bulbs. - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html b/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html index 6abce6a4a2..314e60a60f 100644 --- a/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html +++ b/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html @@ -274,6 +274,12 @@ sudo docker run -it --rm -p 80:80 --name certbot \ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -291,12 +297,6 @@ sudo docker run -it --rm -p 80:80 --name certbot \ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html b/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html index 29a5b8bf29..3634724894 100644 --- a/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html +++ b/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html @@ -228,6 +228,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -245,12 +251,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/01/17/extended-support-for-diy-solutions/index.html b/blog/2016/01/17/extended-support-for-diy-solutions/index.html index ef63a032a6..ed7fb7d51b 100644 --- a/blog/2016/01/17/extended-support-for-diy-solutions/index.html +++ b/blog/2016/01/17/extended-support-for-diy-solutions/index.html @@ -208,6 +208,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -225,12 +231,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/01/19/perfect-home-automation/index.html b/blog/2016/01/19/perfect-home-automation/index.html index cf95b72b65..96e2bc49dc 100644 --- a/blog/2016/01/19/perfect-home-automation/index.html +++ b/blog/2016/01/19/perfect-home-automation/index.html @@ -212,6 +212,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -229,12 +235,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html b/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html index f1d9d9fa36..938bc2f248 100644 --- a/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html +++ b/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html @@ -214,6 +214,12 @@ Example of the new views in the frontend. Learn mor +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -231,12 +237,6 @@ Example of the new views in the frontend. Learn mor - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/02/09/smarter-smart-things-with-mqtt-and-home-assistant/index.html b/blog/2016/02/09/smarter-smart-things-with-mqtt-and-home-assistant/index.html index 818b2e4200..fbe752765b 100644 --- a/blog/2016/02/09/smarter-smart-things-with-mqtt-and-home-assistant/index.html +++ b/blog/2016/02/09/smarter-smart-things-with-mqtt-and-home-assistant/index.html @@ -401,6 +401,12 @@ Z-Wave light bulb | +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -418,12 +424,6 @@ Z-Wave light bulb | - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/02/12/classifying-the-internet-of-things/index.html b/blog/2016/02/12/classifying-the-internet-of-things/index.html index e70c4aa6e6..1f45af3c7c 100644 --- a/blog/2016/02/12/classifying-the-internet-of-things/index.html +++ b/blog/2016/02/12/classifying-the-internet-of-things/index.html @@ -351,6 +351,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -368,12 +374,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html b/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html index a134420e43..8d2f228ef5 100644 --- a/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html +++ b/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html @@ -217,6 +217,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -234,12 +240,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/02/18/multi-room-audio-with-snapcast/index.html b/blog/2016/02/18/multi-room-audio-with-snapcast/index.html index c0a57519ec..65503aaa32 100644 --- a/blog/2016/02/18/multi-room-audio-with-snapcast/index.html +++ b/blog/2016/02/18/multi-room-audio-with-snapcast/index.html @@ -319,6 +319,12 @@ output = audioresample ! audio/x-raw,rate=48000,channels=2,format=S16LE ! audioc +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -336,12 +342,6 @@ output = audioresample ! audio/x-raw,rate=48000,channels=2,format=S16LE ! audioc - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/02/20/community-highlights/index.html b/blog/2016/02/20/community-highlights/index.html index d31e791070..14a1d31efb 100644 --- a/blog/2016/02/20/community-highlights/index.html +++ b/blog/2016/02/20/community-highlights/index.html @@ -227,6 +227,12 @@ Hold your NFC tag against the belly of Garfield to unlock the alarm. +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -244,12 +250,6 @@ Hold your NFC tag against the belly of Garfield to unlock the alarm. - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html b/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html index 85745f1f31..6e859269e2 100644 --- a/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html +++ b/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html @@ -216,6 +216,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -233,12 +239,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html b/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html index c939af029e..cba4599983 100644 --- a/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html +++ b/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html @@ -222,6 +222,12 @@ player state attributes. This change affects automations, scripts and scenes. + We Have Apps Now + + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -239,12 +245,6 @@ player state attributes. This change affects automations, scripts and scenes. - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html b/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html index b52369f464..593a9c33b3 100644 --- a/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html +++ b/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html @@ -233,6 +233,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -250,12 +256,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/04/05/your-hub-should-be-local-and-open/index.html b/blog/2016/04/05/your-hub-should-be-local-and-open/index.html index ac8fa4872b..68ca819032 100644 --- a/blog/2016/04/05/your-hub-should-be-local-and-open/index.html +++ b/blog/2016/04/05/your-hub-should-be-local-and-open/index.html @@ -185,6 +185,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -202,12 +208,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/04/07/static-website/index.html b/blog/2016/04/07/static-website/index.html index 839b07fad7..6d7b7517f6 100644 --- a/blog/2016/04/07/static-website/index.html +++ b/blog/2016/04/07/static-website/index.html @@ -191,6 +191,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -208,12 +214,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html b/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html index ea837fa9fc..0c3394f87e 100644 --- a/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html +++ b/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html @@ -199,6 +199,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -216,12 +222,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/04/17/updated-documentation/index.html b/blog/2016/04/17/updated-documentation/index.html index 73e8121543..d2c3e2cf53 100644 --- a/blog/2016/04/17/updated-documentation/index.html +++ b/blog/2016/04/17/updated-documentation/index.html @@ -183,6 +183,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -200,12 +206,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/04/19/to-infinity-and-beyond/index.html b/blog/2016/04/19/to-infinity-and-beyond/index.html index 7242ca8030..f969d33482 100644 --- a/blog/2016/04/19/to-infinity-and-beyond/index.html +++ b/blog/2016/04/19/to-infinity-and-beyond/index.html @@ -200,6 +200,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -217,12 +223,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html b/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html index 983aa5047e..62348b0ae5 100644 --- a/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html +++ b/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html @@ -218,6 +218,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -235,12 +241,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html b/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html index 020a1bbc10..6961f8592a 100644 --- a/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html +++ b/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html @@ -309,6 +309,12 @@ For example, my wife works next door - and I couldn’t detect whether she’s a +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -326,12 +332,6 @@ For example, my wife works next door - and I couldn’t detect whether she’s a - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/05/06/open-iot-summit-talk/index.html b/blog/2016/05/06/open-iot-summit-talk/index.html index 6b04cb36bd..ce9c4149c2 100644 --- a/blog/2016/05/06/open-iot-summit-talk/index.html +++ b/blog/2016/05/06/open-iot-summit-talk/index.html @@ -181,6 +181,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -198,12 +204,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/05/07/empowering-scripts-and-alexa/index.html b/blog/2016/05/07/empowering-scripts-and-alexa/index.html index 5674ec0f49..80c103eaae 100644 --- a/blog/2016/05/07/empowering-scripts-and-alexa/index.html +++ b/blog/2016/05/07/empowering-scripts-and-alexa/index.html @@ -271,6 +271,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -288,12 +294,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/05/12/video-configuring-home-assistant/index.html b/blog/2016/05/12/video-configuring-home-assistant/index.html index be88188c7b..c82652cfa4 100644 --- a/blog/2016/05/12/video-configuring-home-assistant/index.html +++ b/blog/2016/05/12/video-configuring-home-assistant/index.html @@ -181,6 +181,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -198,12 +204,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/05/18/why-we-use-polymer/index.html b/blog/2016/05/18/why-we-use-polymer/index.html index 3621950fcd..7be9947580 100644 --- a/blog/2016/05/18/why-we-use-polymer/index.html +++ b/blog/2016/05/18/why-we-use-polymer/index.html @@ -195,6 +195,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -212,12 +218,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/05/21/release-020/index.html b/blog/2016/05/21/release-020/index.html index d8e702dd40..404ea9da57 100644 --- a/blog/2016/05/21/release-020/index.html +++ b/blog/2016/05/21/release-020/index.html @@ -216,6 +216,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -233,12 +239,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/05/22/get-started-with-all-in-one-installer/index.html b/blog/2016/05/22/get-started-with-all-in-one-installer/index.html index f5bd25b965..2f22f22cb8 100644 --- a/blog/2016/05/22/get-started-with-all-in-one-installer/index.html +++ b/blog/2016/05/22/get-started-with-all-in-one-installer/index.html @@ -187,6 +187,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -204,12 +210,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html b/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html index 4d18dddeeb..5331387c34 100644 --- a/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html +++ b/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html @@ -325,6 +325,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -342,12 +348,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/06/01/community-highlights/index.html b/blog/2016/06/01/community-highlights/index.html index 3d1ddd43da..7306afe9bf 100644 --- a/blog/2016/06/01/community-highlights/index.html +++ b/blog/2016/06/01/community-highlights/index.html @@ -201,6 +201,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -218,12 +224,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/06/08/super-fast-web-enocean-lirc/index.html b/blog/2016/06/08/super-fast-web-enocean-lirc/index.html index 0cd5780d89..3da1056540 100644 --- a/blog/2016/06/08/super-fast-web-enocean-lirc/index.html +++ b/blog/2016/06/08/super-fast-web-enocean-lirc/index.html @@ -235,6 +235,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -252,12 +258,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/06/13/home-assistant-at-pycon-2016/index.html b/blog/2016/06/13/home-assistant-at-pycon-2016/index.html index 3c04888894..bb3ebd18ae 100644 --- a/blog/2016/06/13/home-assistant-at-pycon-2016/index.html +++ b/blog/2016/06/13/home-assistant-at-pycon-2016/index.html @@ -206,6 +206,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -223,12 +229,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html b/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html index 6dcba24a40..4196ef58e2 100644 --- a/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html +++ b/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html @@ -230,6 +230,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -247,12 +253,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/06/23/usb-webcams-and-home-assistant/index.html b/blog/2016/06/23/usb-webcams-and-home-assistant/index.html index 019e6f2b14..3dbe0a05da 100644 --- a/blog/2016/06/23/usb-webcams-and-home-assistant/index.html +++ b/blog/2016/06/23/usb-webcams-and-home-assistant/index.html @@ -296,6 +296,12 @@ target_dir /tmp +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -313,12 +319,6 @@ target_dir /tmp - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html b/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html index a45c93895c..026a9d2a7e 100644 --- a/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html +++ b/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html @@ -229,6 +229,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -246,12 +252,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/07/06/pocketchip-running-home-assistant/index.html b/blog/2016/07/06/pocketchip-running-home-assistant/index.html index e61bdad20a..499d557d23 100644 --- a/blog/2016/07/06/pocketchip-running-home-assistant/index.html +++ b/blog/2016/07/06/pocketchip-running-home-assistant/index.html @@ -232,6 +232,12 @@ $ hass --open-ui +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -249,12 +255,6 @@ $ hass --open-ui - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html b/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html index efafba9af1..2f5973a3db 100644 --- a/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html +++ b/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html @@ -236,6 +236,12 @@ $ hass --script db_migrator --config /path/to/config +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -253,12 +259,6 @@ $ hass --script db_migrator --config /path/to/config - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/07/19/visualizing-your-iot-data/index.html b/blog/2016/07/19/visualizing-your-iot-data/index.html index 4fe44117b1..da2e4f3ad4 100644 --- a/blog/2016/07/19/visualizing-your-iot-data/index.html +++ b/blog/2016/07/19/visualizing-your-iot-data/index.html @@ -284,6 +284,12 @@ plt.savefig(' + We Have Apps Now + + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -301,12 +307,6 @@ plt.savefig(' - ESP8266 and MicroPython - Part 1 - - - diff --git a/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html b/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html index 92de70f089..dd30ddafdc 100644 --- a/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html +++ b/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html @@ -241,6 +241,12 @@ One of the graphs created with this tutorial. +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -258,12 +264,6 @@ One of the graphs created with this tutorial. - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/07/28/esp8266-and-micropython-part1/index.html b/blog/2016/07/28/esp8266-and-micropython-part1/index.html index 3bc3a7aa30..dc968e5f10 100644 --- a/blog/2016/07/28/esp8266-and-micropython-part1/index.html +++ b/blog/2016/07/28/esp8266-and-micropython-part1/index.html @@ -342,6 +342,12 @@ PIN = 5 +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -359,8 +365,6 @@ PIN = 5 - - diff --git a/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html b/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html index cdab675cb1..4ae047de1b 100644 --- a/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html +++ b/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html @@ -243,6 +243,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -256,12 +262,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/08/03/laundry-automation-update/index.html b/blog/2016/08/03/laundry-automation-update/index.html index c05fa28101..80e2555ec4 100644 --- a/blog/2016/08/03/laundry-automation-update/index.html +++ b/blog/2016/08/03/laundry-automation-update/index.html @@ -282,6 +282,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -295,12 +301,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html b/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html index a357e3109b..c04157e1ef 100644 --- a/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html +++ b/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html @@ -318,6 +318,12 @@ document.body.appendChild(spinner); +
  • + We Have Apps Now +
  • + + +
  • @@ -331,12 +337,6 @@ document.body.appendChild(spinner);
  • - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/2016/08/09/we-have-apps-now/index.html b/blog/2016/08/09/we-have-apps-now/index.html new file mode 100644 index 0000000000..b02208ec22 --- /dev/null +++ b/blog/2016/08/09/we-have-apps-now/index.html @@ -0,0 +1,378 @@ + + + + + + + + + + We Have Apps Now - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + +
    + +

    We Have Apps Now

    + + + +
    + + + 10 minutes reading time + + + + + + Comments + +
    + +
    + + +

    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.

    + + + +

    Another Take on Automation

    + +

    If you haven’t yet read Paulus’ excellent Blog entry on Perfect Home Automation I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the “Automation” in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation to bring this all together in the vast and chaotic ecosystem that is the “Internet of Things”.

    + +

    So given the importance of Automation, what should Automation allow us to do? I am a pragmatist at heart so I judge individual systems by the ease of accomplishing a few basic but representative tasks:

    + +
      +
    • Can the system respond to presence or absence of people?
    • +
    • Can I turn a light on at Sunset +/- a certain amount of time?
    • +
    • Can I arrive home in light or dark and have the lights figure out if they should be on or off?
    • +
    • As I build my system out, can I get the individual pieces to co-operate and use and re-use (potentially complex) logic to make sure everything works smoothly?
    • +
    • Is it open and expandable?
    • +
    • Does it run locally without any reliance on the cloud?
    • +
    + +

    In my opinion, Home Assistant accomplishes the majority of these very well with a combination of Automations, Scripts and Templates, and it’s Restful API.

    + +

    So why AppDaemon? AppDaemon is not meant to replace Home Assistant Automations and Scripts, rather complement them. For a lot of things, automations work well and can be very succinct. However, there is a class of more complex automations for which they become harder to use, and appdeamon then comes into its own. It brings quite a few things to the table:

    + +
      +
    • New paradigm - some problems require a procedural and/or iterative approach, and AppDaemon Apps are a much more natural fit for this. Recent enhancements to Home Assistant scripts and templates have made huge strides, but for the most complex scenarios, Apps can do things that Automations can’t
    • +
    • Ease of use - AppDaemon’s API is full of helper functions that make programming as easy and natural as possible. The functions and their operation are as “Pythonic” as possible, experienced Python programmers should feel right at home.
    • +
    • Reuse - write a piece of code once and instantiate it as an app as many times as you need with different parameters e.g. a motion light program that you can use in 5 different places around your home. The code stays the same, you just dynamically add new instances of it in the config file
    • +
    • Dynamic - AppDaemon has been designed from the start to enable the user to make changes without requiring a restart of Home Assistant, thanks to it’s loose coupling. However, it is better than that - the user can make changes to code and AppDaemon will automatically reload the code, figure out which Apps were using it and restart them to use the new code without the need to restart AppDaemon itself. It is also possible to change parameters for an individual or multiple apps and have them picked up dynamically, and for a final trick, removing or adding apps is also picked up dynamically. Testing cycles become a lot more efficient as a result.
    • +
    • Complex logic - Python’s If/Else constructs are clearer and easier to code for arbitrarily complex nested logic
    • +
    • Durable variables and state - variables can be kept between events to keep track of things like the number of times a motion sensor has been activated, or how long it has been since a door opened
    • +
    • All the power of Python - use any of Python’s libraries, create your own modules, share variables, refactor and re-use code, create a single app to do everything, or multiple apps for individual tasks - nothing is off limits!
    • +
    + +

    It is in fact a testament to Home Assistant’s open nature that a component like AppDaemon can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant’s underlying design is that it makes no assumptions whatever about what it is controlling or reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for AppDaemon - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner - the bulk of the work after that was adding additonal functions to make things that were already possible easier.

    + +

    How it Works

    + +

    The best way to show what AppDaemon does is through a few simple examples.

    + +

    Sunrise/Sunset Lighting

    + +

    Lets start with a simple App to turn a light on every night at sunset and off every morning at sunrise. Every App when first started will have its initialize() function called which gives it a chance to register a callback for AppDaemons’s scheduler for a specific time. In this case we are using run_at_sunrise() and run_at_sunset() to register 2 separate callbacks. The argument 0 is the number of seconds offset from sunrise or sunset and can be negative or positive. For complex intervals it can be convenient to use Python’s datetime.timedelta class for calculations. When sunrise or sunset occurs, the appropriate callback function, sunrise_cb() or sunset_cb() is called which then makes a call to Home Assistant to turn the porch light on or off by activating a scene. The variables args["on_scene"] and args["off_scene"] are passed through from the configuration of this particular App, and the same code could be reused to activate completely different scenes in a different version of the App.

    + +
    +
    import appapi
    +
    +class OutsideLights(appapi.AppDaemon):
    +
    +  def initialize(self):
    +    self.run_at_sunrise(self.sunrise_cb, 0)
    +    self.run_at_sunset(self.sunset_cb, 0)
    +    
    +  def sunrise_cb(self, args, kwargs):
    +    self.turn_on(self.args["off_scene"])
    +
    +  def sunset_cb(self, args, kwargs):
    +    self.turn_on(self.args["on_scene"])
    +
    +
    +
    +
    + +

    This is also fairly easy to achieve with Home Assistant automations, but we are just getting started.

    + +

    Motion Light

    + +

    Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the initialize() function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - new = "on". When the motion is detected, the callack function motion() is called, and we check whether or not the sun has set using a built-in convenience function: sun_down(). Next, we turn the light on with turn_on(), then set a timer using run_in() to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in AppDaemon calling light_off() 60 seconds later using the turn_off() call to actually turn the light off. This is still pretty simple in code terms:

    + +
    +
    import appapi
    +
    +class MotionLights(appapi.AppDaemon):
    +
    +  def initialize(self):
    +    self.listen_state(self.motion, "binary_sensor.drive", new = "on")
    +  
    +  def motion(self, entity, attribute, old, new, kwargs):
    +    if self.sun_down():
    +      self.turn_on("light.drive")
    +      self.run_in(self.light_off, 60)
    +  
    +  def light_off(self, kwargs):
    +    self.turn_off("light.drive")
    +
    +
    +
    + +

    This is starting to get a little more complex in Home Assistant automations requiring an Automation rule and two separate scripts.

    + +

    Now lets extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Lets warn someone inside the house that there has been motion outside by flashing a lamp on and off 10 times. We are reacting to the motion as before by turning on the light and setting a timer to turn it off again, but in addition, we set a 1 second timer to run flash_warning() which when called, toggles the inside light and sets another timer to call itself a second later. To avoid re-triggering forever, it keeps a count of how many times it has been activated and bales out after 10 iterations.

    + +
    +
    import appapi
    +
    +class FlashyMotionLights(appapi.AppDaemon):
    +
    +  def initialize(self):
    +    self.listen_state(self.motion, "binary_sensor.drive", new = "on")
    +  
    +  def motion(self, entity, attribute, old, new, kwargs):
    +    if self.self.sun_down():
    +      self.turn_on("light.drive")
    +      self.run_in(self.light_off, 60)
    +      self.flashcount = 0
    +      self.run_in(self.flash_warning, 1)
    +  
    +  def light_off(self, kwargs):
    +    self.turn_off("light.drive")
    +    
    +  def flash_warning(self, kwargs):
    +    self.toggle("light.living_room")
    +    self.flashcount += 1
    +    if self.flashcount < 10:
    +      self.run_in(self.flash_warning, 1)
    +
    +
    +
    + +

    Of course if I wanted to make this App or its predecessor reusable I would have provided parameters for the sensor, the light to activate on motion, the warning light and even the number of flashes and delay between flashes.

    + +

    In addition, Apps can write to AppDaemon’s logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple.

    + +

    I have spent the last few weeks moving all of my (fairly complex) automations over to APPDaemon and so far it is working very reliably.

    + +

    Some people will maybe look at all of this and say “what use is this, I can already do all of this”, and that is fine, as I said this is an alternative not a replacement, but I am hopeful that for some users this will seem a more natural, powerful and nimble way of building potentially very complex automations.

    + +

    If this has whet your appetite, feel free to give it a try. You can find it, here, including full installation instructions, an API reference, and a number of fully fleshed out examples.

    + +

    Happy Automating!

    +
    + + +
    +

    Comments

    +
    +
    + + +
    + + + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html b/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html index 3635b5e563..ea025746f8 100644 --- a/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html +++ b/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html @@ -234,6 +234,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -251,12 +257,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/archives/index.html b/blog/archives/index.html index afd220e63c..518facda1c 100644 --- a/blog/archives/index.html +++ b/blog/archives/index.html @@ -130,6 +130,38 @@ + + + +
    @@ -2691,6 +2723,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -2708,12 +2746,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/community/atom.xml b/blog/categories/community/atom.xml index ea5d0933f9..47b0bec98c 100644 --- a/blog/categories/community/atom.xml +++ b/blog/categories/community/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Community | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/community/index.html b/blog/categories/community/index.html index ca823a1059..8494dca95d 100644 --- a/blog/categories/community/index.html +++ b/blog/categories/community/index.html @@ -264,6 +264,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -281,12 +287,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/device-tracking/atom.xml b/blog/categories/device-tracking/atom.xml index 473d74b891..89016c1801 100644 --- a/blog/categories/device-tracking/atom.xml +++ b/blog/categories/device-tracking/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Device-Tracking | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/device-tracking/index.html b/blog/categories/device-tracking/index.html index a164919ab0..7f0e44b8c9 100644 --- a/blog/categories/device-tracking/index.html +++ b/blog/categories/device-tracking/index.html @@ -195,6 +195,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -212,12 +218,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/esp8266/atom.xml b/blog/categories/esp8266/atom.xml index 1ae74635b2..14871c6d50 100644 --- a/blog/categories/esp8266/atom.xml +++ b/blog/categories/esp8266/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: ESP8266 | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/esp8266/index.html b/blog/categories/esp8266/index.html index fcc75fb994..7b63c930e4 100644 --- a/blog/categories/esp8266/index.html +++ b/blog/categories/esp8266/index.html @@ -195,6 +195,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -212,12 +218,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/how-to/atom.xml b/blog/categories/how-to/atom.xml index 10df197f1e..f66ce65f28 100644 --- a/blog/categories/how-to/atom.xml +++ b/blog/categories/how-to/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: How-To | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ @@ -13,6 +13,144 @@ Octopress + + <![CDATA[We Have Apps Now]]> + + 2016-08-09T18:00:00+00:00 + https://home-assistant.io/blog/2016/08/09/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.

    + + + +

    Another Take on Automation

    + +

    If you haven’t yet read Paulus’ excellent Blog entry on Perfect Home Automation I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the “Automation” in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation to bring this all together in the vast and chaotic ecosystem that is the “Internet of Things”.

    + +

    So given the importance of Automation, what should Automation allow us to do? I am a pragmatist at heart so I judge individual systems by the ease of accomplishing a few basic but representative tasks:

    + +
      +
    • Can the system respond to presence or absence of people?
    • +
    • Can I turn a light on at Sunset +/- a certain amount of time?
    • +
    • Can I arrive home in light or dark and have the lights figure out if they should be on or off?
    • +
    • As I build my system out, can I get the individual pieces to co-operate and use and re-use (potentially complex) logic to make sure everything works smoothly?
    • +
    • Is it open and expandable?
    • +
    • Does it run locally without any reliance on the cloud?
    • +
    + +

    In my opinion, Home Assistant accomplishes the majority of these very well with a combination of Automations, Scripts and Templates, and it’s Restful API.

    + +

    So why AppDaemon? AppDaemon is not meant to replace Home Assistant Automations and Scripts, rather complement them. For a lot of things, automations work well and can be very succinct. However, there is a class of more complex automations for which they become harder to use, and appdeamon then comes into its own. It brings quite a few things to the table:

    + +
      +
    • New paradigm - some problems require a procedural and/or iterative approach, and AppDaemon Apps are a much more natural fit for this. Recent enhancements to Home Assistant scripts and templates have made huge strides, but for the most complex scenarios, Apps can do things that Automations can’t
    • +
    • Ease of use - AppDaemon’s API is full of helper functions that make programming as easy and natural as possible. The functions and their operation are as “Pythonic” as possible, experienced Python programmers should feel right at home.
    • +
    • Reuse - write a piece of code once and instantiate it as an app as many times as you need with different parameters e.g. a motion light program that you can use in 5 different places around your home. The code stays the same, you just dynamically add new instances of it in the config file
    • +
    • Dynamic - AppDaemon has been designed from the start to enable the user to make changes without requiring a restart of Home Assistant, thanks to it’s loose coupling. However, it is better than that - the user can make changes to code and AppDaemon will automatically reload the code, figure out which Apps were using it and restart them to use the new code without the need to restart AppDaemon itself. It is also possible to change parameters for an individual or multiple apps and have them picked up dynamically, and for a final trick, removing or adding apps is also picked up dynamically. Testing cycles become a lot more efficient as a result.
    • +
    • Complex logic - Python’s If/Else constructs are clearer and easier to code for arbitrarily complex nested logic
    • +
    • Durable variables and state - variables can be kept between events to keep track of things like the number of times a motion sensor has been activated, or how long it has been since a door opened
    • +
    • All the power of Python - use any of Python’s libraries, create your own modules, share variables, refactor and re-use code, create a single app to do everything, or multiple apps for individual tasks - nothing is off limits!
    • +
    + +

    It is in fact a testament to Home Assistant’s open nature that a component like AppDaemon can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant’s underlying design is that it makes no assumptions whatever about what it is controlling or reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for AppDaemon - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner - the bulk of the work after that was adding additonal functions to make things that were already possible easier.

    + +

    How it Works

    + +

    The best way to show what AppDaemon does is through a few simple examples.

    + +

    Sunrise/Sunset Lighting

    + +

    Lets start with a simple App to turn a light on every night at sunset and off every morning at sunrise. Every App when first started will have its initialize() function called which gives it a chance to register a callback for AppDaemons’s scheduler for a specific time. In this case we are using run_at_sunrise() and run_at_sunset() to register 2 separate callbacks. The argument 0 is the number of seconds offset from sunrise or sunset and can be negative or positive. For complex intervals it can be convenient to use Python’s datetime.timedelta class for calculations. When sunrise or sunset occurs, the appropriate callback function, sunrise_cb() or sunset_cb() is called which then makes a call to Home Assistant to turn the porch light on or off by activating a scene. The variables args["on_scene"] and args["off_scene"] are passed through from the configuration of this particular App, and the same code could be reused to activate completely different scenes in a different version of the App.

    + +
    +
    import appapi
    +
    +class OutsideLights(appapi.AppDaemon):
    +
    +  def initialize(self):
    +    self.run_at_sunrise(self.sunrise_cb, 0)
    +    self.run_at_sunset(self.sunset_cb, 0)
    +    
    +  def sunrise_cb(self, args, kwargs):
    +    self.turn_on(self.args["off_scene"])
    +
    +  def sunset_cb(self, args, kwargs):
    +    self.turn_on(self.args["on_scene"])
    +
    +
    +
    +
    + +

    This is also fairly easy to achieve with Home Assistant automations, but we are just getting started.

    + +

    Motion Light

    + +

    Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the initialize() function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - new = "on". When the motion is detected, the callack function motion() is called, and we check whether or not the sun has set using a built-in convenience function: sun_down(). Next, we turn the light on with turn_on(), then set a timer using run_in() to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in AppDaemon calling light_off() 60 seconds later using the turn_off() call to actually turn the light off. This is still pretty simple in code terms:

    + +
    +
    import appapi
    +
    +class MotionLights(appapi.AppDaemon):
    +
    +  def initialize(self):
    +    self.listen_state(self.motion, "binary_sensor.drive", new = "on")
    +  
    +  def motion(self, entity, attribute, old, new, kwargs):
    +    if self.sun_down():
    +      self.turn_on("light.drive")
    +      self.run_in(self.light_off, 60)
    +  
    +  def light_off(self, kwargs):
    +    self.turn_off("light.drive")
    +
    +
    +
    + +

    This is starting to get a little more complex in Home Assistant automations requiring an Automation rule and two separate scripts.

    + +

    Now lets extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Lets warn someone inside the house that there has been motion outside by flashing a lamp on and off 10 times. We are reacting to the motion as before by turning on the light and setting a timer to turn it off again, but in addition, we set a 1 second timer to run flash_warning() which when called, toggles the inside light and sets another timer to call itself a second later. To avoid re-triggering forever, it keeps a count of how many times it has been activated and bales out after 10 iterations.

    + +
    +
    import appapi
    +
    +class FlashyMotionLights(appapi.AppDaemon):
    +
    +  def initialize(self):
    +    self.listen_state(self.motion, "binary_sensor.drive", new = "on")
    +  
    +  def motion(self, entity, attribute, old, new, kwargs):
    +    if self.self.sun_down():
    +      self.turn_on("light.drive")
    +      self.run_in(self.light_off, 60)
    +      self.flashcount = 0
    +      self.run_in(self.flash_warning, 1)
    +  
    +  def light_off(self, kwargs):
    +    self.turn_off("light.drive")
    +    
    +  def flash_warning(self, kwargs):
    +    self.toggle("light.living_room")
    +    self.flashcount += 1
    +    if self.flashcount < 10:
    +      self.run_in(self.flash_warning, 1)
    +
    +
    +
    + +

    Of course if I wanted to make this App or its predecessor reusable I would have provided parameters for the sensor, the light to activate on motion, the warning light and even the number of flashes and delay between flashes.

    + +

    In addition, Apps can write to AppDaemon’s logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple.

    + +

    I have spent the last few weeks moving all of my (fairly complex) automations over to APPDaemon and so far it is working very reliably.

    + +

    Some people will maybe look at all of this and say “what use is this, I can already do all of this”, and that is fine, as I said this is an alternative not a replacement, but I am hopeful that for some users this will seem a more natural, powerful and nimble way of building potentially very complex automations.

    + +

    If this has whet your appetite, feel free to give it a try. You can find it, here, including full installation instructions, an API reference, and a number of fully fleshed out examples.

    + +

    Happy Automating!

    + +]]>
    +
    + <![CDATA[ESP8266 and MicroPython - Part 1]]> @@ -444,137 +582,6 @@ $ hass --open-ui

    Well, with PocketCHIP and Home Assistant you could run your home automation on a 49 USD device with a touchscreen, an integrated USP, and a keyboard. With the GPIO available on top of the display you could even connect your PocketCHIP directly to sensors and actuators.

    -]]> -
    - - - <![CDATA[Using USB webcams with Home Assistant]]> - - 2016-06-23T06:00:00+00:00 - https://home-assistant.io/blog/2016/06/23/usb-webcams-and-home-assistant -
    -In the past month I was thinking about ways to integrate USB webcams into Home Assistant again. The main reason was that this would give those devices a second life and enable one to benefit from low-cost video surveillance. There are a couple of options available like pygame or SimpleCV but I never finished something. With the Local File camera platform by Landrash and motion you could integrate a local USB webcam with a few very easy steps.

    - -

    In this blog post I am using a Fedora 24 (will most likely work on other distributions too) installation with Home Assistant 0.22.1 on a Foxconn nT-330i with an old Logitech QuickCam Orbit AF and a Logitech HD Webcam C270. As a start only the Quickcam is used. No multi-camera setup for now.

    - - - -

    Check first if the your operating system lists your cameras.

    - -
    -
    $ lsusb
    -[...]
    -Bus 002 Device 016: ID 046d:08cc Logitech, Inc. Mic (PTZ)
    -[...]
    -
    -
    -
    - -

    The camera we are going to use is available at /dev/video1. The C270 is the one on /dev/video0.

    - -
    -
    $ ls -al /dev/video*
    -crw-rw----+ 1 root video 81, 0 Jun 23 08:05 /dev/video0
    -crw-rw----+ 1 root video 81, 1 Jun 23 08:36 /dev/video1
    -
    -
    -
    - -

    We need an additional software part to handle the cameras. motion is capable of monitoring the video signal from USB and network cameras, do motion detection, and other nifty stuff like saving images, add text, or basic image manipulations. Make sure that you have the RPM Fusion respository enabled.

    - -
    -
    $ sudo dnf -y install motion
    -
    -
    -
    - -

    For our setup we need to modify the file /etc/motion/motion.conf. For now the most important parameters are videodevice, snapshot_interval, and target_dir. The other settings can be left to their defaults. We are going to use the device /dev/video1, use a 30 seconds interval, and set the path to /tmp.

    - -
    -
    [...]
    -###########################################################
    -# Capture device options
    -############################################################
    -
    -# Videodevice to be used for capturing  (default /dev/video0)
    -# for FreeBSD default is /dev/bktr0
    -videodevice /dev/video1
    -
    -[..]
    -############################################################
    -# Snapshots (Traditional Periodic Webcam File Output)
    -############################################################
    -
    -# Make automated snapshot every N seconds (default: 0 = disabled)
    -snapshot_interval 30
    -
    -[...]
    -############################################################
    -# Target Directories and filenames For Images And Films
    -# For the options snapshot_, picture_, movie_ and timelapse_filename
    -# you can use conversion specifiers
    -# %Y = year, %m = month, %d = date,
    -# %H = hour, %M = minute, %S = second,
    -# %v = event, %q = frame number, %t = thread (camera) number,
    -# %D = changed pixels, %N = noise level,
    -# %i and %J = width and height of motion area,
    -# %K and %L = X and Y coordinates of motion center
    -# %C = value defined by text_event
    -# Quotation marks round string are allowed.
    -############################################################
    -
    -# Target base directory for pictures and films
    -# Recommended to use absolute path. (Default: current working directory)
    -target_dir /tmp
    -
    -[...]
    -
    -
    -
    - -

    It’s suggested that you adjust at least width and height to get a bigger image from your camera. If you are done, fire up motion.

    - -
    -
    $ sudo motion
    -[0] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
    -[0] [ALR] [ALL] conf_cmdparse: Unknown config option "sdl_threadnr"
    -[0] [NTC] [ALL] motion_startup: Motion 3.3.0 Started
    -[0] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion.log)
    -
    -
    -
    - -

    Your target_dir will start filling up with images from your camera. motion will create a symlink called lastsnap.jpg which always point to the latest snapshot. We will setup the Local File camera platform to use this file.

    - -
    -
    camera:
    -  - platform: local_file
    -    name: Cranberry cam
    -    file_path: /tmp/lastsnap.jpg
    -
    -
    -
    - -

    - - The “Cranberry cam” in action -

    - -

    The machine with the attached USB camera will become a webcam server as well because motion’s built-in HTTP server is enabled by default. This means that you could connect your USB webcams to a different machine in your network, run motion there, adjust your firewall rules, and use Home Assistant to display the videos. Just check http://[IP of your webcam host]:8081/ to see the stream. This required more powerful hardware than using snapshots, of course.

    - -

    In a scenario like this needs a Generic MJPEG IP Camera in your configuration.yaml file.

    - -
    -
    camera:
    -  - platform: mjpeg
    -    mjpeg_url: http://[IP of your webcam host]:8081
    -    name: Cranberry Live cam
    -
    -
    -
    - -

    motion is a powerful tool and this blog post only showed two very simple use cases. Take a look at the documentation of motion to unleash its potential.

    - ]]>
    diff --git a/blog/categories/how-to/index.html b/blog/categories/how-to/index.html index bb3ef0d468..c852389bab 100644 --- a/blog/categories/how-to/index.html +++ b/blog/categories/how-to/index.html @@ -98,6 +98,38 @@

    2016

    + + + +
    @@ -656,6 +688,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -673,12 +711,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/ibeacons/atom.xml b/blog/categories/ibeacons/atom.xml index d25d9cc286..4b7bbcc443 100644 --- a/blog/categories/ibeacons/atom.xml +++ b/blog/categories/ibeacons/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: iBeacons | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/ibeacons/index.html b/blog/categories/ibeacons/index.html index 3f4970a7b5..dc0e473b2e 100644 --- a/blog/categories/ibeacons/index.html +++ b/blog/categories/ibeacons/index.html @@ -231,6 +231,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -248,12 +254,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/internet-of-things/atom.xml b/blog/categories/internet-of-things/atom.xml index d177e4462b..765223549e 100644 --- a/blog/categories/internet-of-things/atom.xml +++ b/blog/categories/internet-of-things/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Internet-of-Things | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/internet-of-things/index.html b/blog/categories/internet-of-things/index.html index f2913ac466..ea83b49aae 100644 --- a/blog/categories/internet-of-things/index.html +++ b/blog/categories/internet-of-things/index.html @@ -290,6 +290,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -307,12 +313,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/iot-data/atom.xml b/blog/categories/iot-data/atom.xml index a03ce5bbbb..805e009c23 100644 --- a/blog/categories/iot-data/atom.xml +++ b/blog/categories/iot-data/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: IoT-Data | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/iot-data/index.html b/blog/categories/iot-data/index.html index f34a6825bd..94361a4f06 100644 --- a/blog/categories/iot-data/index.html +++ b/blog/categories/iot-data/index.html @@ -227,6 +227,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -244,12 +250,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/mqtt/atom.xml b/blog/categories/mqtt/atom.xml index e3a8694434..f86a417e9e 100644 --- a/blog/categories/mqtt/atom.xml +++ b/blog/categories/mqtt/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: MQTT | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/mqtt/index.html b/blog/categories/mqtt/index.html index 6af78351e4..20161f67a6 100644 --- a/blog/categories/mqtt/index.html +++ b/blog/categories/mqtt/index.html @@ -266,6 +266,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -283,12 +289,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/organisation/atom.xml b/blog/categories/organisation/atom.xml index bddbbeceba..00ef0109de 100644 --- a/blog/categories/organisation/atom.xml +++ b/blog/categories/organisation/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Organisation | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/organisation/index.html b/blog/categories/organisation/index.html index 1879706a76..5cf7840568 100644 --- a/blog/categories/organisation/index.html +++ b/blog/categories/organisation/index.html @@ -226,6 +226,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -243,12 +249,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/owntracks/atom.xml b/blog/categories/owntracks/atom.xml index a005c82145..f7c2910b8d 100644 --- a/blog/categories/owntracks/atom.xml +++ b/blog/categories/owntracks/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: OwnTracks | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/owntracks/index.html b/blog/categories/owntracks/index.html index 7164d9a33a..fc1ab30f06 100644 --- a/blog/categories/owntracks/index.html +++ b/blog/categories/owntracks/index.html @@ -231,6 +231,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -248,12 +254,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/presence-detection/atom.xml b/blog/categories/presence-detection/atom.xml index 7cbf9bdd4b..1e99f661cf 100644 --- a/blog/categories/presence-detection/atom.xml +++ b/blog/categories/presence-detection/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Presence-Detection | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/presence-detection/index.html b/blog/categories/presence-detection/index.html index 8d7ed3368b..362576d014 100644 --- a/blog/categories/presence-detection/index.html +++ b/blog/categories/presence-detection/index.html @@ -195,6 +195,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -212,12 +218,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/public-service-announcement/atom.xml b/blog/categories/public-service-announcement/atom.xml index 9e432aa397..89d3b2c832 100644 --- a/blog/categories/public-service-announcement/atom.xml +++ b/blog/categories/public-service-announcement/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Public-Service-Announcement | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/public-service-announcement/index.html b/blog/categories/public-service-announcement/index.html index af65f65f02..eb08dac6fd 100644 --- a/blog/categories/public-service-announcement/index.html +++ b/blog/categories/public-service-announcement/index.html @@ -191,6 +191,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -208,12 +214,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/release-notes/atom.xml b/blog/categories/release-notes/atom.xml index 4e7f3bcef4..d7978a17e5 100644 --- a/blog/categories/release-notes/atom.xml +++ b/blog/categories/release-notes/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Release-Notes | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/release-notes/index.html b/blog/categories/release-notes/index.html index 04fbf06f5a..70d4008294 100644 --- a/blog/categories/release-notes/index.html +++ b/blog/categories/release-notes/index.html @@ -1476,6 +1476,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -1493,12 +1499,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/survey/atom.xml b/blog/categories/survey/atom.xml index 1f71cb950c..e9427170ec 100644 --- a/blog/categories/survey/atom.xml +++ b/blog/categories/survey/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Survey | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/survey/index.html b/blog/categories/survey/index.html index 94441fbe03..ef4cdf87b3 100644 --- a/blog/categories/survey/index.html +++ b/blog/categories/survey/index.html @@ -191,6 +191,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -208,12 +214,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/talks/atom.xml b/blog/categories/talks/atom.xml index a4c1a08d0d..082484cce2 100644 --- a/blog/categories/talks/atom.xml +++ b/blog/categories/talks/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Talks | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/talks/index.html b/blog/categories/talks/index.html index e6ed1fa4ed..684173b569 100644 --- a/blog/categories/talks/index.html +++ b/blog/categories/talks/index.html @@ -193,6 +193,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -210,12 +216,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/technology/atom.xml b/blog/categories/technology/atom.xml index 793a0dd18f..75539bdeaf 100644 --- a/blog/categories/technology/atom.xml +++ b/blog/categories/technology/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Technology | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/technology/index.html b/blog/categories/technology/index.html index 486247b68e..ae7dbf295b 100644 --- a/blog/categories/technology/index.html +++ b/blog/categories/technology/index.html @@ -223,6 +223,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -240,12 +246,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/user-stories/atom.xml b/blog/categories/user-stories/atom.xml index daf629d7e5..1304a00c3e 100644 --- a/blog/categories/user-stories/atom.xml +++ b/blog/categories/user-stories/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: User-Stories | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/user-stories/index.html b/blog/categories/user-stories/index.html index 4d4d73a802..43fc258d9e 100644 --- a/blog/categories/user-stories/index.html +++ b/blog/categories/user-stories/index.html @@ -226,6 +226,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -243,12 +249,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/video/atom.xml b/blog/categories/video/atom.xml index 2ae55d0893..06957e6af0 100644 --- a/blog/categories/video/atom.xml +++ b/blog/categories/video/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Video | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/video/index.html b/blog/categories/video/index.html index 13992319a6..5261b49aac 100644 --- a/blog/categories/video/index.html +++ b/blog/categories/video/index.html @@ -394,6 +394,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -411,12 +417,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/categories/website/atom.xml b/blog/categories/website/atom.xml index ac7d56b684..dda001c041 100644 --- a/blog/categories/website/atom.xml +++ b/blog/categories/website/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Website | Home Assistant]]> - 2016-08-15T16:48:04+00:00 + 2016-08-16T07:39:07+00:00 https://home-assistant.io/ diff --git a/blog/categories/website/index.html b/blog/categories/website/index.html index 40ab7a3a49..2327392918 100644 --- a/blog/categories/website/index.html +++ b/blog/categories/website/index.html @@ -226,6 +226,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -243,12 +249,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - - diff --git a/blog/index.html b/blog/index.html index ef3ef298e1..e51614fa05 100644 --- a/blog/index.html +++ b/blog/index.html @@ -179,6 +179,50 @@ +
    +
    +
    + +
    +
    + +

    + We Have Apps Now +

    + + + +
    + + + 10 minutes reading time + + + + + + Comments + +
    + +
    + + +
    +

    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 → +

    @@ -717,102 +761,6 @@ Over a year ago I participated in the Read on → -
    -
    -
    - -
    -
    - -

    - 0.23: Envisalink, Homematic, HDMI-CEC and Sony Bravia TV -

    - - - -
    - - - three minutes reading time - - - - - - Comments - -
    - -
    - - -
    -

    It’s time for Home Assistant 0.23 and it’s full of goodies. It’s also the release that bumps us over a 1000 tests and to 94% test coverage! Also our install issues on the Raspberry Pi and Synology have been resolved.

    - -

    This release brings support for two new ecosystems: Envisalink and Homematic. We can now also control your TV via HDMI using HDMI-CEC (which works on the Pi!) and another cool feature is the persistent notifications which allow you to add a notification to the frontend till dismissed.

    - -

    Wink support has been dramatically improved by migrating to the PubNub API. This allows Wink to push changes from their system to Home Assistant. This change came just in time as somehow our Wink integration was causing a lot of requests to their servers. Thanks to Wink for letting us know so we could solve it instead of blocking us.

    - -

    On the config side, you can now store your passwords in your OS keyring or just in a standalone file. We also got a new service to reload the core config so no reboots needed anymore after changing customize settings!

    - -

    - - - -

    Breaking changes

    - -
      -
    • Homematic thermostat configuration has changed and now depends on the new Homematic component.
    • -
    - -

    Hotfix 0.23.1 - July 2

    - -
      -
    • Bump PyVera to 0.2.13 to fix traceback and pyvera thread dying related to bug (@rhooper)
    • -
    • HTTP - SSL: Check for OP_NO_COMPRESSION support before trying to use it (@AlucardZero)
    • -
    • Wink: Downgraded pubnub to work around pycryptodome conflicts (@w1ll1am23)
    • -
    - -

    FAQ

    - -
      -
    • elevation: was introduced to the configuration for weather/sunrise data. For existing configurations add the value shown in the warning [homeassistant.config] Incomplete core config. Auto detected elevation: 665 to your configuration.yaml file.
    • -
    - - -

    diff --git a/blog/posts/2/index.html b/blog/posts/2/index.html index 26e42e3fd0..f85f9a0fd7 100644 --- a/blog/posts/2/index.html +++ b/blog/posts/2/index.html @@ -78,6 +78,102 @@ +
    +
    + +

    + 0.23: Envisalink, Homematic, HDMI-CEC and Sony Bravia TV +

    + + + +
    + + + three minutes reading time + + + + + + Comments + +
    + +
    + + +
    +

    It’s time for Home Assistant 0.23 and it’s full of goodies. It’s also the release that bumps us over a 1000 tests and to 94% test coverage! Also our install issues on the Raspberry Pi and Synology have been resolved.

    + +

    This release brings support for two new ecosystems: Envisalink and Homematic. We can now also control your TV via HDMI using HDMI-CEC (which works on the Pi!) and another cool feature is the persistent notifications which allow you to add a notification to the frontend till dismissed.

    + +

    Wink support has been dramatically improved by migrating to the PubNub API. This allows Wink to push changes from their system to Home Assistant. This change came just in time as somehow our Wink integration was causing a lot of requests to their servers. Thanks to Wink for letting us know so we could solve it instead of blocking us.

    + +

    On the config side, you can now store your passwords in your OS keyring or just in a standalone file. We also got a new service to reload the core config so no reboots needed anymore after changing customize settings!

    + +

    + + + +

    Breaking changes

    + +
      +
    • Homematic thermostat configuration has changed and now depends on the new Homematic component.
    • +
    + +

    Hotfix 0.23.1 - July 2

    + +
      +
    • Bump PyVera to 0.2.13 to fix traceback and pyvera thread dying related to bug (@rhooper)
    • +
    • HTTP - SSL: Check for OP_NO_COMPRESSION support before trying to use it (@AlucardZero)
    • +
    • Wink: Downgraded pubnub to work around pycryptodome conflicts (@w1ll1am23)
    • +
    + +

    FAQ

    + +
      +
    • elevation: was introduced to the configuration for weather/sunrise data. For existing configurations add the value shown in the warning [homeassistant.config] Incomplete core config. Auto detected elevation: 665 to your configuration.yaml file.
    • +
    + + + +
    +
    +
    +
    @@ -702,53 +798,6 @@ In the past month I was thinking about ways to integrate USB webcams into Home A

    -
    -
    - -

    - Video: How To Configure Home Assistant -

    - - - -
    - - - less than one minute reading time - - - - - - Comments - -
    - -
    - - -
    -

    Ben from BRUH Automation authors a lot of great video’s about how he is using Home Assistant and how you can get started with it too. The video below will walk you through how to configure Home Assistant. Enjoy!

    - -

    Make sure to subscribe to his YouTube channel for more Home Assistant video’s.

    - -
    - -
    - - -
    -
    -
    - - -
    - -
    -
    - -

    - 0.16: Embedded MQTT broker, Uber, Yamaha receivers and Growl -

    - - - -
    - - - two minutes reading time - - - - - - Comments - -
    - -
    - - -
    -

    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: hbMQTT. Just add mqtt: to your config and a broker is launched and connected with Home Assistant. See the documentation for more info.

    - -

    Further in this release a bunch of cool new stuff, bug fixes and rewrites for the Vera and Tellstick component (see breaking changes section at bottom for this!).

    - -

    Rock on.

    - -

    - - - -

    Breaking 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]
    -
    -
    -
    - -

    diff --git a/blog/posts/4/index.html b/blog/posts/4/index.html index 760c9919bd..d5a146f8f8 100644 --- a/blog/posts/4/index.html +++ b/blog/posts/4/index.html @@ -78,6 +78,105 @@ +
    +
    + +

    + 0.16: Embedded MQTT broker, Uber, Yamaha receivers and Growl +

    + + + +
    + + + two minutes reading time + + + + + + Comments + +
    + +
    + + +
    +

    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: hbMQTT. Just add mqtt: to your config and a broker is launched and connected with Home Assistant. See the documentation for more info.

    + +

    Further in this release a bunch of cool new stuff, bug fixes and rewrites for the Vera and Tellstick component (see breaking changes section at bottom for this!).

    + +

    Rock on.

    + +

    + + + +

    Breaking 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.11: Extended support for DIY solutions -

    - - - -
    - - - two minutes reading time - - - - - - Comments - -
    - -
    - - -
    -

    First release of 2016 and we are on 🔥! The main repository has passed 2500 ⭐ on GitHub (2596 ⭐ as of now). This release also has a record number of 20 contributors all working on improving and extending Home Assistant. With the continued growth, I am very excited to see what 2016 will bring us 🤘.

    - -

    - - - -

    Backwards incompatible changes

    - - - -

    diff --git a/blog/posts/5/index.html b/blog/posts/5/index.html index 9e1eb3862d..63af7e4e4a 100644 --- a/blog/posts/5/index.html +++ b/blog/posts/5/index.html @@ -78,6 +78,81 @@ +
    +
    + +

    + 0.11: Extended support for DIY solutions +

    + + + +
    + + + two minutes reading time + + + + + + Comments + +
    + +
    + + +
    +

    First release of 2016 and we are on 🔥! The main repository has passed 2500 ⭐ on GitHub (2596 ⭐ as of now). This release also has a record number of 20 contributors all working on improving and extending Home Assistant. With the continued growth, I am very excited to see what 2016 will bring us 🤘.

    + +

    + + + +

    Backwards incompatible changes

    + + + + +
    +
    +
    +
    @@ -573,73 +648,6 @@ The InfluxDB database is a so-called time se - -
    -
    - -
    -
    - -

    - 0.7.6: Amazon FireTV, Radiotherm thermostats -

    - - - -
    - - - two minutes reading time - - - - - - Comments - -
    - -
    - - -
    -

    After two weeks of hard work I’m proud to announce the release of Home Assistant v0.7.6. For this release the main focus was bugs, test coverage and documentation. And we exceeded expectations on all three fronts. Bugs have been squashed, test coverage increased to 85% and thanks to the hard work by @fabaff and myself the component section on the website has gotten a complete revamp.

    - -

    Changes

    - -

    - - - - - - Read on → -

    diff --git a/blog/posts/6/index.html b/blog/posts/6/index.html index ed55e22d38..57ea89b8ad 100644 --- a/blog/posts/6/index.html +++ b/blog/posts/6/index.html @@ -78,6 +78,73 @@ +
    +
    + +

    + 0.7.6: Amazon FireTV, Radiotherm thermostats +

    + + + +
    + + + two minutes reading time + + + + + + Comments + +
    + +
    + + +
    +

    After two weeks of hard work I’m proud to announce the release of Home Assistant v0.7.6. For this release the main focus was bugs, test coverage and documentation. And we exceeded expectations on all three fronts. Bugs have been squashed, test coverage increased to 85% and thanks to the hard work by @fabaff and myself the component section on the website has gotten a complete revamp.

    + +

    Changes

    + +

    + + + + + + Read on → + +
    +
    +
    +
    @@ -605,72 +672,6 @@ Inspried by a -
    - -

    - Verisure devices and modern TP-Link routers now supported -

    - - - -
    - - - 1 minute reading time - - - - - - Comments - -
    - -
    - - -
    -

    A minor bug fix release to fix some issues that have come up since the last release. Please upgrade as soon as possible by running git pull from the Home Assistant directory.

    - -

    This release is a major milestone in our test coverage as we’ve crossed into the 80s! It has to be noted that this covers mainly the core and automation components. Platforms that communicate with IoT devices have been excluded.

    - -

    As we didn’t want to just push out bug fixes, this release includes a few additions:

    - -
      -
    • Support for modern TP-Link routers like the ArcherC9 line has been contributed by @chrisvis.
    • -
    • Improved support for MQTT topic subscriptions has been contributed by @qrtn
    • -
    - -

    Verisure Support
    - Home Assistant support to integrate your Verisure alarms, hygrometers, sensors and thermometers has been contributed by @persandstrom.

    - -
    -
    # Example configuration.yaml entry
    -verisure:
    -  username: user@example.com
    -  password: password
    -  alarm: 1
    -  hygrometers: 0
    -  smartplugs: 1
    -  thermometers: 0
    -
    -
    -
    - - -
    -
    -
    - - -
    - -
    -
    - -

    - Home Assistant moving to YAML -

    - - - -
    - - - less than one minute reading time - - - - - - Comments - -
    - -
    - - -
    -

    Home Assistant is now using YAML for it’s configuration file. YAML allows the use of lists, which should make the configuration file a bit more flexible and useful. The new configuration file format is backwards compatible with existing components. Because of this, there is no need for component developers to update their components.

    - -

    The new file is named configuration.yaml and if it can’t be found in your config directory, Home Assistant will instead try to find the old configuration file, home-assistant.conf.

    - -

    The home-assistant.conf.example has been replaced with an updated configuration.yaml.example.

    - -

    Users of Home Assistant should migrate as the old configuration format is deprecated.

    - -

    diff --git a/blog/posts/8/index.html b/blog/posts/8/index.html index 6becdccf0d..d5cae02921 100644 --- a/blog/posts/8/index.html +++ b/blog/posts/8/index.html @@ -78,6 +78,53 @@ +
    +
    + +

    + Home Assistant moving to YAML +

    + + + +
    + + + less than one minute reading time + + + + + + Comments + +
    + +
    + + +
    +

    Home Assistant is now using YAML for it’s configuration file. YAML allows the use of lists, which should make the configuration file a bit more flexible and useful. The new configuration file format is backwards compatible with existing components. Because of this, there is no need for component developers to update their components.

    + +

    The new file is named configuration.yaml and if it can’t be found in your config directory, Home Assistant will instead try to find the old configuration file, home-assistant.conf.

    + +

    The home-assistant.conf.example has been replaced with an updated configuration.yaml.example.

    + +

    Users of Home Assistant should migrate as the old configuration format is deprecated.

    + + +
    +
    +
    +
    diff --git a/index.html b/index.html index 399ce61180..0ab9009f7e 100644 --- a/index.html +++ b/index.html @@ -144,13 +144,13 @@ Home Assistant is an open-source home automation platform running on Python 3. T
  • - Optimizing the Home Assistant mobile web app - August 7, 2016 + We Have Apps Now + August 09, 2016
  • - Laundry Sensors with NodeMCU and Home Assistant - August 2, 2016 + Optimizing the Home Assistant mobile web app + August 7, 2016
  • diff --git a/sitemap.xml b/sitemap.xml index 68b9972838..f578927208 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -4,6 +4,10 @@ https://home-assistant.io/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/ 2016-08-13T19:00:00+00:00 + + https://home-assistant.io/blog/2016/08/09/we-have-apps-now/ + 2016-08-09T18:00:00+00:00 + https://home-assistant.io/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/ 2016-08-07T19:36:00+00:00 @@ -2076,67 +2080,70 @@ https://home-assistant.io/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/ + + https://home-assistant.io/blog/2016/08/09/we-have-apps-now/ + https://home-assistant.io/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/ https://home-assistant.io/demo/frontend.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/demo/index.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-event.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-info.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-service.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-state.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-template.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/demo/panels/ha-panel-history.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/demo/panels/ha-panel-iframe.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/demo/panels/ha-panel-logbook.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/demo/panels/ha-panel-map.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/googlef4f3693c209fe788.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/static/fonts/roboto/DESCRIPTION.en_us.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/static/fonts/robotomono/DESCRIPTION.en_us.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 https://home-assistant.io/static/mdi-demo.html - 2016-08-15T16:47:24+00:00 + 2016-08-16T07:38:16+00:00 diff --git a/topics/platform_options/index.html b/topics/platform_options/index.html index 0ed719a93a..dcda1eebde 100644 --- a/topics/platform_options/index.html +++ b/topics/platform_options/index.html @@ -180,6 +180,12 @@ +
  • + We Have Apps Now +
  • + + +
  • Optimizing the Home Assistant mobile web app
  • @@ -197,12 +203,6 @@ - -
  • - ESP8266 and MicroPython - Part 1 -
  • - -