From 043a68d1c684750eaffea461a29fdc431aec2bcc Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 16 Aug 2016 07:54:29 +0000 Subject: [PATCH] Site updated at 2016-08-16 07:54:29 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, 1272 insertions(+), 1899 deletions(-) delete mode 100644 blog/2016/08/09/we-have-apps-now/index.html diff --git a/atom.xml b/atom.xml index 887a643588..5ef81fe544 100644 --- a/atom.xml +++ b/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ @@ -83,144 +83,6 @@ -]]> - - - - <![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!

- ]]>
@@ -1738,6 +1600,21 @@ 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 24d6554134..d0a478ce51 100644 --- a/blog/2014/12/18/website-launched/index.html +++ b/blog/2014/12/18/website-launched/index.html @@ -175,12 +175,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -198,6 +192,12 @@ + +
  • + 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 d22e96ffcc..bee8d95171 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,12 +230,6 @@ This article will try to explain how they all relate.

    -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -253,6 +247,12 @@ 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 1956b3f73e..7af55f9103 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,12 +214,6 @@ api_key=ABCDEFGHJKLMNOPQRSTUVXYZ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -237,6 +231,12 @@ 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 4d32e30d5f..4de19b9e7f 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,12 +189,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -212,6 +206,12 @@ + +
  • + 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 f5fe42e266..4d9f76b2a9 100644 --- a/blog/2015/01/13/nest-in-da-house/index.html +++ b/blog/2015/01/13/nest-in-da-house/index.html @@ -192,12 +192,6 @@ password=YOUR_PASSWORD -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -215,6 +209,12 @@ 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 bb769f91aa..d469e5cd84 100644 --- a/blog/2015/01/24/release-notes/index.html +++ b/blog/2015/01/24/release-notes/index.html @@ -198,12 +198,6 @@ Home Assistant now supports --open-ui and --demo-mode -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -221,6 +215,12 @@ 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 462034449e..e2ac75fe1a 100644 --- a/blog/2015/02/08/looking-at-the-past/index.html +++ b/blog/2015/02/08/looking-at-the-past/index.html @@ -206,12 +206,6 @@ 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
  • @@ -229,6 +223,12 @@ 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 f97db7e25a..19ddf06400 100644 --- a/blog/2015/02/24/streaming-updates/index.html +++ b/blog/2015/02/24/streaming-updates/index.html @@ -191,12 +191,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -214,6 +208,12 @@ + +
  • + 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 c9e3f950fd..1fe88e48de 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,12 +181,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -204,6 +198,12 @@ + +
  • + 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 2c7c3a25e7..6800b73540 100644 --- a/blog/2015/03/08/new-logo/index.html +++ b/blog/2015/03/08/new-logo/index.html @@ -182,12 +182,6 @@ The old logo, the new detailed logo and the new simple logo. -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -205,6 +199,12 @@ 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 48d8f21dec..d229113050 100644 --- a/blog/2015/03/11/release-notes/index.html +++ b/blog/2015/03/11/release-notes/index.html @@ -221,12 +221,6 @@ 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
  • @@ -244,6 +238,12 @@ 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 a247d3b1c6..35f9b068f6 100644 --- a/blog/2015/03/22/release-notes/index.html +++ b/blog/2015/03/22/release-notes/index.html @@ -258,12 +258,6 @@ 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
  • @@ -281,6 +275,12 @@ 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 4e45c96989..6e560c2092 100644 --- a/blog/2015/04/25/release-notes/index.html +++ b/blog/2015/04/25/release-notes/index.html @@ -269,12 +269,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -292,6 +286,12 @@ + +
  • + 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 ebcd735468..1f0926af8c 100644 --- a/blog/2015/05/09/utc-time-zone-awareness/index.html +++ b/blog/2015/05/09/utc-time-zone-awareness/index.html @@ -204,12 +204,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -227,6 +221,12 @@ + +
  • + 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 d4127507bf..a51e17d643 100644 --- a/blog/2015/05/14/release-notes/index.html +++ b/blog/2015/05/14/release-notes/index.html @@ -296,12 +296,6 @@ Before diving into the newly supported devices and services, I want to highlight -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -319,6 +313,12 @@ 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 0647ef52c0..6513be379a 100644 --- a/blog/2015/06/10/release-notes/index.html +++ b/blog/2015/06/10/release-notes/index.html @@ -349,12 +349,6 @@ This switch platform allows you to control your motion detection setting on your -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -372,6 +366,12 @@ 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 8ed6d53cdb..ff7b8b5100 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,12 +301,6 @@ Fabian has added support for Forecast.io to g -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -324,6 +318,12 @@ 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 c9a2e9d809..dd0f979f16 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,12 +290,6 @@ Support for Temper temperature sensors has been contributed by - We Have Apps Now - - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -313,6 +307,12 @@ 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 7297fe99a8..a8d7f6302e 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,12 +200,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -223,6 +217,12 @@ + +
  • + 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 f11cc780df..2f902f8c0d 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,12 +313,6 @@ 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
  • @@ -336,6 +330,12 @@ 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 a26a43009b..113f860002 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,12 +287,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -310,6 +304,12 @@ + +
  • + 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 cbab9413c8..744890f935 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,12 +490,6 @@ PubSubClient client(ethClient); -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -513,6 +507,12 @@ 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 cd9abf528b..39892aeb3a 100644 --- a/blog/2015/09/13/home-assistant-meets-ifttt/index.html +++ b/blog/2015/09/13/home-assistant-meets-ifttt/index.html @@ -349,12 +349,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -372,6 +366,12 @@ + +
  • + 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 78021fb8b2..f065b211a4 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,12 +250,6 @@ Glances web server started on http://0.0.0.0:61208/ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -273,6 +267,12 @@ 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 826b2b04e5..3fc6783ca8 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,12 +229,6 @@ Automation has gotten a lot of love. It now supports conditions, multiple trigge -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -252,6 +246,12 @@ 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 0f3fc0da5a..1eecffefd7 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,12 +205,6 @@ Map in Home Assistant showing two people and three zones (home, school, work) -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -228,6 +222,12 @@ 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 4281753f86..dd429299f9 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,12 +549,6 @@ Adafruit_HDC1000 hdc = Adafruit_HDC1000(); -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -572,6 +566,12 @@ 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 72e4d1503f..c3426b6689 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,12 +194,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -217,6 +211,12 @@ + +
  • + 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 39166b7629..64bfb2af5c 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,12 +216,6 @@ This makes more sense as most people run Home Assistant as a daemon

    -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -239,6 +233,12 @@ 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 914b8d0955..f302d3b9d3 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,12 +212,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -235,6 +229,12 @@ + +
  • + 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 2640996909..c478d15ffa 100644 --- a/blog/2015/11/22/survey-november-2015/index.html +++ b/blog/2015/11/22/survey-november-2015/index.html @@ -252,12 +252,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -275,6 +269,12 @@ + +
  • + 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 11d37a1e31..77ee54f6e2 100644 --- a/blog/2015/12/05/community-highlights/index.html +++ b/blog/2015/12/05/community-highlights/index.html @@ -187,12 +187,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -210,6 +204,12 @@ + +
  • + 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 28b98d2df3..4968b14005 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,12 +194,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -217,6 +211,12 @@ + +
  • + 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 ce7a16a250..2199eb127a 100644 --- a/blog/2015/12/07/influxdb-and-grafana/index.html +++ b/blog/2015/12/07/influxdb-and-grafana/index.html @@ -285,12 +285,6 @@ $ sudo systemctl status grafana-server -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -308,6 +302,12 @@ $ 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 e65a90bc3a..2493089e2d 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,12 +235,6 @@ requests.get(' - We Have Apps Now - - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -258,6 +252,12 @@ 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 a527340022..ee1d5580e9 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,12 +207,6 @@ Philips Hue FAQ entries regarding 3rd party light bulbs. -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -230,6 +224,12 @@ 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 314e60a60f..6abce6a4a2 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,12 +274,6 @@ sudo docker run -it --rm -p 80:80 --name certbot \ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -297,6 +291,12 @@ 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 3634724894..29a5b8bf29 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,12 +228,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -251,6 +245,12 @@ + +
  • + 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 ed7fb7d51b..ef63a032a6 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,12 +208,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -231,6 +225,12 @@ + +
  • + 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 96e2bc49dc..cf95b72b65 100644 --- a/blog/2016/01/19/perfect-home-automation/index.html +++ b/blog/2016/01/19/perfect-home-automation/index.html @@ -212,12 +212,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -235,6 +229,12 @@ + +
  • + 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 938bc2f248..f1d9d9fa36 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,12 +214,6 @@ Example of the new views in the frontend. Learn mor -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -237,6 +231,12 @@ 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 fbe752765b..818b2e4200 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,12 +401,6 @@ Z-Wave light bulb | -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -424,6 +418,12 @@ 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 1f45af3c7c..e70c4aa6e6 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,12 +351,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -374,6 +368,12 @@ + +
  • + 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 8d2f228ef5..a134420e43 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,12 +217,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -240,6 +234,12 @@ + +
  • + 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 65503aaa32..c0a57519ec 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,12 +319,6 @@ output = audioresample ! audio/x-raw,rate=48000,channels=2,format=S16LE ! audioc -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -342,6 +336,12 @@ 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 14a1d31efb..d31e791070 100644 --- a/blog/2016/02/20/community-highlights/index.html +++ b/blog/2016/02/20/community-highlights/index.html @@ -227,12 +227,6 @@ Hold your NFC tag against the belly of Garfield to unlock the alarm. -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -250,6 +244,12 @@ 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 6e859269e2..85745f1f31 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,12 +216,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -239,6 +233,12 @@ + +
  • + 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 cba4599983..c939af029e 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,12 +222,6 @@ player state attributes. This change affects automations, scripts and scenes. - We Have Apps Now - - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -245,6 +239,12 @@ 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 593a9c33b3..b52369f464 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,12 +233,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -256,6 +250,12 @@ + +
  • + 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 68ca819032..ac8fa4872b 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,12 +185,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -208,6 +202,12 @@ + +
  • + 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 6d7b7517f6..839b07fad7 100644 --- a/blog/2016/04/07/static-website/index.html +++ b/blog/2016/04/07/static-website/index.html @@ -191,12 +191,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -214,6 +208,12 @@ + +
  • + 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 0c3394f87e..ea837fa9fc 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,12 +199,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -222,6 +216,12 @@ + +
  • + 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 d2c3e2cf53..73e8121543 100644 --- a/blog/2016/04/17/updated-documentation/index.html +++ b/blog/2016/04/17/updated-documentation/index.html @@ -183,12 +183,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -206,6 +200,12 @@ + +
  • + 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 f969d33482..7242ca8030 100644 --- a/blog/2016/04/19/to-infinity-and-beyond/index.html +++ b/blog/2016/04/19/to-infinity-and-beyond/index.html @@ -200,12 +200,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -223,6 +217,12 @@ + +
  • + 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 62348b0ae5..983aa5047e 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,12 +218,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -241,6 +235,12 @@ + +
  • + 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 6961f8592a..020a1bbc10 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,12 +309,6 @@ 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
  • @@ -332,6 +326,12 @@ 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 ce9c4149c2..6b04cb36bd 100644 --- a/blog/2016/05/06/open-iot-summit-talk/index.html +++ b/blog/2016/05/06/open-iot-summit-talk/index.html @@ -181,12 +181,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -204,6 +198,12 @@ + +
  • + 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 80c103eaae..5674ec0f49 100644 --- a/blog/2016/05/07/empowering-scripts-and-alexa/index.html +++ b/blog/2016/05/07/empowering-scripts-and-alexa/index.html @@ -271,12 +271,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -294,6 +288,12 @@ + +
  • + 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 c82652cfa4..be88188c7b 100644 --- a/blog/2016/05/12/video-configuring-home-assistant/index.html +++ b/blog/2016/05/12/video-configuring-home-assistant/index.html @@ -181,12 +181,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -204,6 +198,12 @@ + +
  • + 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 7be9947580..3621950fcd 100644 --- a/blog/2016/05/18/why-we-use-polymer/index.html +++ b/blog/2016/05/18/why-we-use-polymer/index.html @@ -195,12 +195,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -218,6 +212,12 @@ + +
  • + 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 404ea9da57..d8e702dd40 100644 --- a/blog/2016/05/21/release-020/index.html +++ b/blog/2016/05/21/release-020/index.html @@ -216,12 +216,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -239,6 +233,12 @@ + +
  • + 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 2f22f22cb8..f5bd25b965 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,12 +187,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -210,6 +204,12 @@ + +
  • + 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 5331387c34..4d18dddeeb 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,12 +325,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -348,6 +342,12 @@ + +
  • + 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 7306afe9bf..3d1ddd43da 100644 --- a/blog/2016/06/01/community-highlights/index.html +++ b/blog/2016/06/01/community-highlights/index.html @@ -201,12 +201,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -224,6 +218,12 @@ + +
  • + 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 3da1056540..0cd5780d89 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,12 +235,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -258,6 +252,12 @@ + +
  • + 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 bb3ebd18ae..3c04888894 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,12 +206,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -229,6 +223,12 @@ + +
  • + 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 4196ef58e2..6dcba24a40 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,12 +230,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -253,6 +247,12 @@ + +
  • + 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 3dbe0a05da..019e6f2b14 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,12 +296,6 @@ target_dir /tmp -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -319,6 +313,12 @@ 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 026a9d2a7e..a45c93895c 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,12 +229,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -252,6 +246,12 @@ + +
  • + 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 499d557d23..e61bdad20a 100644 --- a/blog/2016/07/06/pocketchip-running-home-assistant/index.html +++ b/blog/2016/07/06/pocketchip-running-home-assistant/index.html @@ -232,12 +232,6 @@ $ hass --open-ui -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -255,6 +249,12 @@ $ 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 2f5973a3db..efafba9af1 100644 --- a/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html +++ b/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html @@ -236,12 +236,6 @@ $ hass --script db_migrator --config /path/to/config -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -259,6 +253,12 @@ $ 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 da2e4f3ad4..4fe44117b1 100644 --- a/blog/2016/07/19/visualizing-your-iot-data/index.html +++ b/blog/2016/07/19/visualizing-your-iot-data/index.html @@ -284,12 +284,6 @@ plt.savefig(' - We Have Apps Now - - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -307,6 +301,12 @@ 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 dd30ddafdc..92de70f089 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,12 +241,6 @@ One of the graphs created with this tutorial. -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -264,6 +258,12 @@ 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 dc968e5f10..3bc3a7aa30 100644 --- a/blog/2016/07/28/esp8266-and-micropython-part1/index.html +++ b/blog/2016/07/28/esp8266-and-micropython-part1/index.html @@ -342,12 +342,6 @@ PIN = 5 -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -365,6 +359,8 @@ 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 4ae047de1b..cdab675cb1 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,12 +243,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -262,6 +256,12 @@ + +
  • + 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 80e2555ec4..c05fa28101 100644 --- a/blog/2016/08/03/laundry-automation-update/index.html +++ b/blog/2016/08/03/laundry-automation-update/index.html @@ -282,12 +282,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -301,6 +295,12 @@ + +
  • + 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 c04157e1ef..a357e3109b 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,12 +318,6 @@ document.body.appendChild(spinner); -
  • - We Have Apps Now -
  • - - -
  • @@ -337,6 +331,12 @@ 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 deleted file mode 100644 index b02208ec22..0000000000 --- a/blog/2016/08/09/we-have-apps-now/index.html +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - - - - - 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 ea025746f8..3635b5e563 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,12 +234,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -257,6 +251,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/archives/index.html b/blog/archives/index.html index 518facda1c..afd220e63c 100644 --- a/blog/archives/index.html +++ b/blog/archives/index.html @@ -130,38 +130,6 @@ - - - -
    @@ -2723,12 +2691,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -2746,6 +2708,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/community/atom.xml b/blog/categories/community/atom.xml index 47b0bec98c..af0b2a23e3 100644 --- a/blog/categories/community/atom.xml +++ b/blog/categories/community/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Community | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/community/index.html b/blog/categories/community/index.html index 8494dca95d..ca823a1059 100644 --- a/blog/categories/community/index.html +++ b/blog/categories/community/index.html @@ -264,12 +264,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -287,6 +281,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/device-tracking/atom.xml b/blog/categories/device-tracking/atom.xml index 89016c1801..7600f4c958 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-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/device-tracking/index.html b/blog/categories/device-tracking/index.html index 7f0e44b8c9..a164919ab0 100644 --- a/blog/categories/device-tracking/index.html +++ b/blog/categories/device-tracking/index.html @@ -195,12 +195,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -218,6 +212,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/esp8266/atom.xml b/blog/categories/esp8266/atom.xml index 14871c6d50..805a8f26af 100644 --- a/blog/categories/esp8266/atom.xml +++ b/blog/categories/esp8266/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: ESP8266 | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/esp8266/index.html b/blog/categories/esp8266/index.html index 7b63c930e4..fcc75fb994 100644 --- a/blog/categories/esp8266/index.html +++ b/blog/categories/esp8266/index.html @@ -195,12 +195,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -218,6 +212,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/how-to/atom.xml b/blog/categories/how-to/atom.xml index f66ce65f28..b0be886c8a 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-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ @@ -13,144 +13,6 @@ 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]]> @@ -582,6 +444,137 @@ $ 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 c852389bab..bb3ef0d468 100644 --- a/blog/categories/how-to/index.html +++ b/blog/categories/how-to/index.html @@ -98,38 +98,6 @@

    2016

    - - - -
    @@ -688,12 +656,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -711,6 +673,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/ibeacons/atom.xml b/blog/categories/ibeacons/atom.xml index 4b7bbcc443..84aaccaa89 100644 --- a/blog/categories/ibeacons/atom.xml +++ b/blog/categories/ibeacons/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: iBeacons | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/ibeacons/index.html b/blog/categories/ibeacons/index.html index dc0e473b2e..3f4970a7b5 100644 --- a/blog/categories/ibeacons/index.html +++ b/blog/categories/ibeacons/index.html @@ -231,12 +231,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -254,6 +248,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/internet-of-things/atom.xml b/blog/categories/internet-of-things/atom.xml index 765223549e..d13de89581 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-16T07:39:07+00:00 + 2016-08-16T07:53:42+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 ea83b49aae..f2913ac466 100644 --- a/blog/categories/internet-of-things/index.html +++ b/blog/categories/internet-of-things/index.html @@ -290,12 +290,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -313,6 +307,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/iot-data/atom.xml b/blog/categories/iot-data/atom.xml index 805e009c23..dc81eb7d67 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-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/iot-data/index.html b/blog/categories/iot-data/index.html index 94361a4f06..f34a6825bd 100644 --- a/blog/categories/iot-data/index.html +++ b/blog/categories/iot-data/index.html @@ -227,12 +227,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -250,6 +244,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/mqtt/atom.xml b/blog/categories/mqtt/atom.xml index f86a417e9e..8a08240e51 100644 --- a/blog/categories/mqtt/atom.xml +++ b/blog/categories/mqtt/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: MQTT | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/mqtt/index.html b/blog/categories/mqtt/index.html index 20161f67a6..6af78351e4 100644 --- a/blog/categories/mqtt/index.html +++ b/blog/categories/mqtt/index.html @@ -266,12 +266,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -289,6 +283,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/organisation/atom.xml b/blog/categories/organisation/atom.xml index 00ef0109de..de0cf35e1f 100644 --- a/blog/categories/organisation/atom.xml +++ b/blog/categories/organisation/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Organisation | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/organisation/index.html b/blog/categories/organisation/index.html index 5cf7840568..1879706a76 100644 --- a/blog/categories/organisation/index.html +++ b/blog/categories/organisation/index.html @@ -226,12 +226,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -249,6 +243,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/owntracks/atom.xml b/blog/categories/owntracks/atom.xml index f7c2910b8d..96b9464ab2 100644 --- a/blog/categories/owntracks/atom.xml +++ b/blog/categories/owntracks/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: OwnTracks | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/owntracks/index.html b/blog/categories/owntracks/index.html index fc1ab30f06..7164d9a33a 100644 --- a/blog/categories/owntracks/index.html +++ b/blog/categories/owntracks/index.html @@ -231,12 +231,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -254,6 +248,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/presence-detection/atom.xml b/blog/categories/presence-detection/atom.xml index 1e99f661cf..53b396be3c 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-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/presence-detection/index.html b/blog/categories/presence-detection/index.html index 362576d014..8d7ed3368b 100644 --- a/blog/categories/presence-detection/index.html +++ b/blog/categories/presence-detection/index.html @@ -195,12 +195,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -218,6 +212,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/public-service-announcement/atom.xml b/blog/categories/public-service-announcement/atom.xml index 89d3b2c832..c79972de18 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-16T07:39:07+00:00 + 2016-08-16T07:53:42+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 eb08dac6fd..af65f65f02 100644 --- a/blog/categories/public-service-announcement/index.html +++ b/blog/categories/public-service-announcement/index.html @@ -191,12 +191,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -214,6 +208,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/release-notes/atom.xml b/blog/categories/release-notes/atom.xml index d7978a17e5..8615d8821a 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-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/release-notes/index.html b/blog/categories/release-notes/index.html index 70d4008294..04fbf06f5a 100644 --- a/blog/categories/release-notes/index.html +++ b/blog/categories/release-notes/index.html @@ -1476,12 +1476,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -1499,6 +1493,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/survey/atom.xml b/blog/categories/survey/atom.xml index e9427170ec..6b185d7915 100644 --- a/blog/categories/survey/atom.xml +++ b/blog/categories/survey/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Survey | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/survey/index.html b/blog/categories/survey/index.html index ef4cdf87b3..94441fbe03 100644 --- a/blog/categories/survey/index.html +++ b/blog/categories/survey/index.html @@ -191,12 +191,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -214,6 +208,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/talks/atom.xml b/blog/categories/talks/atom.xml index 082484cce2..66236b9437 100644 --- a/blog/categories/talks/atom.xml +++ b/blog/categories/talks/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Talks | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/talks/index.html b/blog/categories/talks/index.html index 684173b569..e6ed1fa4ed 100644 --- a/blog/categories/talks/index.html +++ b/blog/categories/talks/index.html @@ -193,12 +193,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -216,6 +210,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/technology/atom.xml b/blog/categories/technology/atom.xml index 75539bdeaf..ba15e34e5f 100644 --- a/blog/categories/technology/atom.xml +++ b/blog/categories/technology/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Technology | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/technology/index.html b/blog/categories/technology/index.html index ae7dbf295b..486247b68e 100644 --- a/blog/categories/technology/index.html +++ b/blog/categories/technology/index.html @@ -223,12 +223,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -246,6 +240,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/user-stories/atom.xml b/blog/categories/user-stories/atom.xml index 1304a00c3e..ea1ea2b79f 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-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/user-stories/index.html b/blog/categories/user-stories/index.html index 43fc258d9e..4d4d73a802 100644 --- a/blog/categories/user-stories/index.html +++ b/blog/categories/user-stories/index.html @@ -226,12 +226,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -249,6 +243,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/video/atom.xml b/blog/categories/video/atom.xml index 06957e6af0..a5e89043e2 100644 --- a/blog/categories/video/atom.xml +++ b/blog/categories/video/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Video | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/video/index.html b/blog/categories/video/index.html index 5261b49aac..13992319a6 100644 --- a/blog/categories/video/index.html +++ b/blog/categories/video/index.html @@ -394,12 +394,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -417,6 +411,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/categories/website/atom.xml b/blog/categories/website/atom.xml index dda001c041..03e926d2ba 100644 --- a/blog/categories/website/atom.xml +++ b/blog/categories/website/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Website | Home Assistant]]> - 2016-08-16T07:39:07+00:00 + 2016-08-16T07:53:42+00:00 https://home-assistant.io/ diff --git a/blog/categories/website/index.html b/blog/categories/website/index.html index 2327392918..40ab7a3a49 100644 --- a/blog/categories/website/index.html +++ b/blog/categories/website/index.html @@ -226,12 +226,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -249,6 +243,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + + diff --git a/blog/index.html b/blog/index.html index e51614fa05..ef3ef298e1 100644 --- a/blog/index.html +++ b/blog/index.html @@ -179,50 +179,6 @@ -
    -
    -
    - -
    -
    - -

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

    @@ -761,6 +717,102 @@ 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 f85f9a0fd7..26e42e3fd0 100644 --- a/blog/posts/2/index.html +++ b/blog/posts/2/index.html @@ -78,102 +78,6 @@ -
    -
    - -

    - 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.
    • -
    - - - -
    -
    -
    -
    @@ -798,6 +702,53 @@ 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 d5a146f8f8..760c9919bd 100644 --- a/blog/posts/4/index.html +++ b/blog/posts/4/index.html @@ -78,105 +78,6 @@ -
    -
    - -

    - 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 63af7e4e4a..9e1eb3862d 100644 --- a/blog/posts/5/index.html +++ b/blog/posts/5/index.html @@ -78,81 +78,6 @@ -
    -
    - -

    - 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

    - - - - -
    -
    -
    -
    @@ -648,6 +573,73 @@ 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 57ea89b8ad..ed55e22d38 100644 --- a/blog/posts/6/index.html +++ b/blog/posts/6/index.html @@ -78,73 +78,6 @@ -
    -
    - -

    - 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 → - -
    -
    -
    -
    @@ -672,6 +605,72 @@ 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 d5cae02921..6becdccf0d 100644 --- a/blog/posts/8/index.html +++ b/blog/posts/8/index.html @@ -78,53 +78,6 @@ -
    -
    - -

    - 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 0ab9009f7e..399ce61180 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
  • - We Have Apps Now - August 09, 2016 + Optimizing the Home Assistant mobile web app + August 7, 2016
  • - Optimizing the Home Assistant mobile web app - August 7, 2016 + Laundry Sensors with NodeMCU and Home Assistant + August 2, 2016
  • diff --git a/sitemap.xml b/sitemap.xml index f578927208..f8d6b64e16 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -4,10 +4,6 @@ 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 @@ -2080,70 +2076,67 @@ 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-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/demo/index.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-event.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-info.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-service.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-state.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-template.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/demo/panels/ha-panel-history.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/demo/panels/ha-panel-iframe.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/demo/panels/ha-panel-logbook.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/demo/panels/ha-panel-map.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/googlef4f3693c209fe788.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/static/fonts/roboto/DESCRIPTION.en_us.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/static/fonts/robotomono/DESCRIPTION.en_us.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 https://home-assistant.io/static/mdi-demo.html - 2016-08-16T07:38:16+00:00 + 2016-08-16T07:52:47+00:00 diff --git a/topics/platform_options/index.html b/topics/platform_options/index.html index dcda1eebde..0ed719a93a 100644 --- a/topics/platform_options/index.html +++ b/topics/platform_options/index.html @@ -180,12 +180,6 @@ -
  • - We Have Apps Now -
  • - - -
  • Optimizing the Home Assistant mobile web app
  • @@ -203,6 +197,12 @@ + +
  • + ESP8266 and MicroPython - Part 1 +
  • + +