From f034194e74e51675ecb3e453a238079f3025fe77 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Fri, 1 Apr 2016 00:18:42 -0700
Subject: [PATCH 01/34] Hide update message on docker install instructions
---
source/getting-started/index.markdown | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown
index 19f691c215..42225c4f55 100644
--- a/source/getting-started/index.markdown
+++ b/source/getting-started/index.markdown
@@ -39,6 +39,12 @@ If you prefer to watch a video tutorial, [tktino](https://github.com/tktino) has
- [Mac OS X](https://www.youtube.com/watch?v=hej6ipN86ls)
- [Ubuntu 14.04](https://www.youtube.com/watch?v=SXaAG1lGNH0)
+### {% linkable_title Updating %}
+
+To update Home Assistant to the latest release when available, run: `pip3 install --upgrade homeassistant`
+
+You have to restart Home Assistant (`hass` itself or with the help of the autostarting daemon if you use any) for the changes to take effect.
+
@@ -77,6 +83,11 @@ Running these commands will:
There is also a [video tutorial](https://www.youtube.com/watch?v=GjzOXkPb7XE) created by [brusc](https://github.com/brusc).
+### {% linkable_title Updating %}
+
+To update Home Assistant to the latest release when available, run: `pip3 install --upgrade homeassistant`
+
+You have to restart Home Assistant (`hass` itself or with the help of the autostarting daemon if you use any) for the changes to take effect.
@@ -284,12 +295,6 @@ For additional help, in addition to this site, there are four sources:
- [Gitter Chatroom](https://gitter.im/balloob/home-assistant) for general Home Assistant discussions and questions.
- [GitHub Page](https://github.com/balloob/home-assistant/issues) for issue reporting.
-### {% linkable_title Updating %}
-
-To update Home Assistant to the latest release run: `pip3 install --upgrade homeassistant`
-
-You have to restart Home Assistant (`hass` itself or with the help of the autostarting daemon if you use any) for the changes to take effect.
-
### {% linkable_title What's next %}
If you want to have Home Assistant start on boot, autostart instructions can be found [here](/getting-started/autostart/).
From 674c9e26b0df046bb2e4ade9e1b0da27201546da Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Sat, 2 Apr 2016 20:57:07 -0700
Subject: [PATCH 02/34] Remove confusing optional comment.
---
source/_components/script.markdown | 1 -
1 file changed, 1 deletion(-)
diff --git a/source/_components/script.markdown b/source/_components/script.markdown
index 119ec62933..d6c3be180c 100644
--- a/source/_components/script.markdown
+++ b/source/_components/script.markdown
@@ -24,7 +24,6 @@ script:
event_data:
name: Paulus
message: is waking up
- # Optional
entity_id: device_tracker.paulus
domain: light
- alias: Bedroom lights on
From 09132ed3ebd89ec9ab46fd71622bd27e27f1df0d Mon Sep 17 00:00:00 2001
From: Andreas Jacobsen
Date: Sun, 3 Apr 2016 17:43:02 +0200
Subject: [PATCH 03/34] Update sensor.transmission.markdown
Fixed typos
---
source/_components/sensor.transmission.markdown | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/_components/sensor.transmission.markdown b/source/_components/sensor.transmission.markdown
index e484da70f1..1ab30b4332 100644
--- a/source/_components/sensor.transmission.markdown
+++ b/source/_components/sensor.transmission.markdown
@@ -12,7 +12,7 @@ ha_category: Sensor
---
-The `trnasmission` platform allows you to monitor your downloads with [Transmission](http://www.transmissionbt.com/) from within Home Assistant and setup automation based on the information.
+The `transmission` platform allows you to monitor your downloads with [Transmission](http://www.transmissionbt.com/) from within Home Assistant and setup automation based on the information.
```yaml
# Example configuration.yaml entry
@@ -48,7 +48,7 @@ To use the monitoring, your transmission client needs to allow remote access. If
-If everthing is setup correctly, the details will show up in the frontend.
+If everything is setup correctly, the details will show up in the frontend.
From 38d2a91b261e9c4ff51e41a3528b03c7177994e1 Mon Sep 17 00:00:00 2001
From: emartec-ca
Date: Sun, 3 Apr 2016 19:39:46 -0400
Subject: [PATCH 04/34] Update autostart.markdown
Per the link systemd is used by default in Jessie instead of upstart (not specifically for the Pi but still): https://wiki.debian.org/FAQsFromDebianUser#systemd
Running ps -p 1 -o comm= on my pi gives systemd as well.
---
source/getting-started/autostart.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/getting-started/autostart.markdown b/source/getting-started/autostart.markdown
index c10625a3b1..77b9cdc1e6 100644
--- a/source/getting-started/autostart.markdown
+++ b/source/getting-started/autostart.markdown
@@ -20,7 +20,7 @@ footer: true
-Many linux distributions use the Upstart system (or similar) for managing daemons. Typically, systems based on Debian 7 or previous use Upstart. This includes Ubuntu releases before 15.04 and all current Raspian releases. If you are unsure if your system is using Upstart, you may check with the following command:
+Many linux distributions use the Upstart system (or similar) for managing daemons. Typically, systems based on Debian 7 or previous use Upstart. This includes Ubuntu releases before 15.04. If you are unsure if your system is using Upstart, you may check with the following command:
```bash
$ ps -p 1 -o comm=
From 2c303260d0111dfb82350f989de6c7f346f47242 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Mon, 4 Apr 2016 12:11:03 -0700
Subject: [PATCH 05/34] Add warning to YAMAHA media player platform.
---
source/_components/media_player.yamaha.markdown | 3 +++
1 file changed, 3 insertions(+)
diff --git a/source/_components/media_player.yamaha.markdown b/source/_components/media_player.yamaha.markdown
index 9888cf684b..15017644d6 100644
--- a/source/_components/media_player.yamaha.markdown
+++ b/source/_components/media_player.yamaha.markdown
@@ -11,6 +11,9 @@ logo: yamaha.png
ha_category: Media Player
---
+
+Some users are experiencing errors loading the frontend while using this platform.
+
The `yamaha` platform allows you to control [Yamaha Network Receivers](http://usa.yamaha.com/products/audio-visual/av-receivers-amps/rx) from Home Assistant.
From c2d52482f47384dcf6aae832e53f99a2fce140d4 Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Tue, 5 Apr 2016 08:18:12 +0200
Subject: [PATCH 06/34] Minor updates
---
source/_components/mqtt.markdown | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/source/_components/mqtt.markdown b/source/_components/mqtt.markdown
index 718a44a3bb..c7015e3a59 100644
--- a/source/_components/mqtt.markdown
+++ b/source/_components/mqtt.markdown
@@ -54,11 +54,11 @@ Home Assistant contains an embedded MQTT broker. If no broker configuration is g
| Port | 1883
| Protocol | 3.1.1
| User | homeassistant
-| Password | Your API password
+| Password | Your API (password)[/components/http/]
| Websocket port | 8080
-This broker does not currently work with OwnTracks because of a protocol version issue.
+This broker does not currently work with OwnTracks because of a protocol version issue.
If you want to customize the settings of the embedded broker, use `embedded:` and the values shown in the [HBMQTT Broker configuration](http://hbmqtt.readthedocs.org/en/latest/references/broker.html#broker-configuration). This will replace the default configuration.
@@ -179,7 +179,7 @@ $ mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON"
If you are using the embeeded MQTT broker, the command looks a little different because you need to add the MQTT protocol version.
```bash
-$ mosquitto_pub -V mqttv311 -t hello -m world
+$ mosquitto_pub -V mqttv311 -t "hello" -m world
```
or if you are using a API password.
@@ -212,7 +212,7 @@ $ mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#"
For the embeeded MQTT broker the command looks like the sample below.
```bash
-$ mosquitto_sub -V mqttv311 -t # -v
+$ mosquitto_sub -v -V mqttv311 -t "#"
```
Add the username `homeassistant` and your API password if needed.
From 9e86eb715b70e14a40fd7d56cee674b9e4f0719b Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Tue, 5 Apr 2016 08:43:31 +0200
Subject: [PATCH 07/34] Fix link
---
source/_components/mqtt.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/mqtt.markdown b/source/_components/mqtt.markdown
index c7015e3a59..46209c3554 100644
--- a/source/_components/mqtt.markdown
+++ b/source/_components/mqtt.markdown
@@ -54,7 +54,7 @@ Home Assistant contains an embedded MQTT broker. If no broker configuration is g
| Port | 1883
| Protocol | 3.1.1
| User | homeassistant
-| Password | Your API (password)[/components/http/]
+| Password | Your API [password](/components/http/)
| Websocket port | 8080
From 4eabd1aa99f666d32106f786817104a31dd39843 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Tue, 5 Apr 2016 00:20:06 -0700
Subject: [PATCH 08/34] Add blog post your hub should be local and open
---
...ntrol-home-automation-and-the-smart-home.markdown | 2 +-
.../2016-01-19-perfect-home-automation.markdown | 12 ++++++------
...02-11-classifying-the-internet-of-things.markdown | 2 +-
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown b/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown
index c7a77710e3..1568f7828d 100644
--- a/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown
+++ b/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown
@@ -7,7 +7,7 @@ date_formatted: December 26, 2014
author: Paulus Schoutsen
author_twitter: balloob
comments: true
-categories: Architecture
+categories: Internet-of-Things
---
The internet has been buzzing over the last year about home automation. A lot of different terms fly around like the internet of things, home automation and the smart home.
diff --git a/source/_posts/2016-01-19-perfect-home-automation.markdown b/source/_posts/2016-01-19-perfect-home-automation.markdown
index 17228746af..74fa832b03 100644
--- a/source/_posts/2016-01-19-perfect-home-automation.markdown
+++ b/source/_posts/2016-01-19-perfect-home-automation.markdown
@@ -7,12 +7,12 @@ date_formatted: "January 19, 2016"
author: Paulus Schoutsen
author_twitter: balloob
comments: true
-categories: Architecture
+categories: Internet-of-Things
---
People often ask me about my vision for Home Assistant. Before I can describe where I want to go with Home Assistant, I should first talk about how home automation would look in my ideal world. This will be the aim of this post. I’m not going to focus on protocols, networks or specific hubs. That's all implementation details. Instead, this post will focus on what is most important: the interaction between the users and their home.
-### You should not have to adapt to technology.
+### {% linkable_title You should not have to adapt to technology. %}
When people start using home automation, they always experience home control first: being able to control devices in new ways using a phone or computer. They believe the future is now and their app will be their remote for their lives. They only focus on what they are getting, not on what they are losing. You install some light bulbs and all of a sudden you are no longer able to use the light switches. You'll arrive at home at night and have to pull out your phone, open the app, let it connect and finally you'll be able to turn on the light. All while turning the light on could have been a switch away.
@@ -21,19 +21,19 @@ Yes, you can solve this with presence detection. What if your phone runs out of
If you find that using your new home devices is cumbersome, the promise of home automation technology has failed you. Your lights should work with both a switch (or button) at the entrance of your room and via presence detection. Honestly, there are hardly any valid use cases for being able to control lights from your phone except for showing off.
-### You are not the only user of your home automation.
+### {% linkable_title You are not the only user of your home automation. %}
People tend to forget that they are not the only ones in their home. As the developer of your house you're enthusiastic about the possibilities and are willing to overlook flaws. Chances are very high that the other people in your household have different hobbies and just want to mind their own business.
This means that everything you automate has to work flawlessly. If you successfully manage to cause a response to some stimulus 90% of the time, you’re going to have a disproportionately poor experience 10% of the time. A common automation that fits this pattern is to fade the lights when you start watching a movie or series in the living room. It only works if everyone is watching.
-### Limit the impact of false positives and negatives.
+### {% linkable_title Limit the impact of false positives and negatives. %}
With every automation, you always have to think: what will be the impact if it doesn’t work? Home automation is composed of many different systems by many different vendors that speak many different protocols: things will go wrong. It’s up to you to make sure that they have a limited impact when they fail. Ideally, devices should fall back to a pre-smart home experience. A Philips Hue bulb will act like a standard white light if turned on/off using a normal switch or when not connected to a hub. If things get worse when your system is out of order, your users will revolt. Take for example the Nest thermostat that [had a bug in the beginning of January][nest-bug] which caused it to stop heating the house, yikes!
[nest-bug]: http://www.nytimes.com/2016/01/14/fashion/nest-thermostat-glitch-battery-dies-software-freeze.html
-### The perfect app is no app.
+### {% linkable_title The perfect app is no app. %}
Home automation should blend with your current workflow, not replace it. For most devices, there is no faster way to control most devices than how you are already doing it today. Most of the time, the best app is no app. The only interface that can be more convenient, and is accessible for visitors of your home of all ages is a voice interface. The industry has realized this too and there are some major players focussing on voice interaction. Take Apple for example: the only way to control your HomeKit devices is with Siri. Amazon has taken it one step further with the Amazon Echo, providing an always-listening connected speaker/microphone for the living room. I expect a lot more companies to join this segment in 2016.
@@ -41,7 +41,7 @@ Voice interfaces are not perfect either. The speed at which you can issue comman
This however doesn’t mean there isn’t a place for apps, there definitely is. They are perfectly well-suited for checking in while you’re away, browsing the state changes of your house or making the lights go all funky when there are kids visiting.
-### Your system should run at home, not in the cloud.
+### {% linkable_title Your system should run at home, not in the cloud. %}
The cloud is a magical thing. Somewhere in the world there are computers collecting the data that your house generates, testing them against your automation rules and sending commands back when needed. The cloud will receive updates and improve itself over time so it is able to serve you better. Until it’s not. There are many reasons why your home might lose its connection to the cloud. The internet can stop working, an update might have gone wrong or the servers running the cloud crash.
diff --git a/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown b/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown
index 19abcaf50c..e346e35216 100644
--- a/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown
+++ b/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown
@@ -7,7 +7,7 @@ date_formatted: "February 12, 2016"
author: Paulus Schoutsen
author_twitter: balloob
comments: true
-categories: Architecture
+categories: Internet-of-Things
og_image: /images/blog/2016-02-classifying-internet-of-things/social.png
---
From 4d9591cd959f0e2759bf03893953cb8d7de34f09 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Tue, 5 Apr 2016 00:27:50 -0700
Subject: [PATCH 09/34] Actually add blog post :+1:
---
...your-hub-should-be-local-and-open.markdown | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
create mode 100644 source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown
diff --git a/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown b/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown
new file mode 100644
index 0000000000..653665fbeb
--- /dev/null
+++ b/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown
@@ -0,0 +1,28 @@
+---
+layout: post
+title: "Your hub should be local and open"
+description: "Running a hub that depends on the cloud is a risk that can cost you your home automation."
+date: 2016-04-04 21:11:00 -0700
+date_formatted: "April 5, 2016"
+author: Paulus Schoutsen
+author_twitter: balloob
+comments: true
+categories: Internet-of-Things
+---
+
+Today the news spread that Google will be [shutting down the Revolv hubs][medium-revolv]. And shutting down here doesn't mean they stop selling or supporting them - no, they are sending an update to each hub to turn your perfectly fine home automation hub into a useless piece of plastic. The fact that this seemed like a good idea by Google astonishes me. If anything, they should have gone the same route as [ninjasphere]: open it all up and let people decide on the fate of their _own_ hub.
+
+I've said it [before][perfect-cloud] but I'll repeat it again:
+
+
+The cloud should be treated as an extension to your smart home instead of running it.
+
+
+Your hub should not be affected when your internet breaks down or the company that sold you your hub goes out of business. It should work locally so that it can continue to work even long after the vendor goes out of business or decides to kill it. Preferably, your hub should also be open so that the community can take over development after the vendor stops caring.
+
+Unless you can afford losing a product here and there, be cautious when buying IoT products that depend on the cloud from companies that are not well established. The chances are high that they go bankrupt or get acquired and closed. This however is easier said than done as [Gartner] predicts that by 2017, 50 percent of IoT solutions will originate in startups that are less than three years old.
+
+[medium-revolv]: https://medium.com/@arlogilbert/the-time-that-tony-fadell-sold-me-a-container-of-hummus-cb0941c762c1#.rmppks86a
+[ninjasphere]: https://discuss.ninjablocks.com/t/ninja-blocks-whats-been-happening-whats-happening-next/3608
+[perfect-cloud]: /blog/2016/01/19/perfect-home-automation/#your-system-should-run-at-home-not-in-the-cloud
+[Gartner]: http://www.gartner.com/newsroom/id/2869521
From daf1df16b9d8eacfc4890578e730b1f661814a8d Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Wed, 6 Apr 2016 16:54:58 +0200
Subject: [PATCH 10/34] Add twitter and google+
---
source/help/index.markdown | 2 ++
1 file changed, 2 insertions(+)
diff --git a/source/help/index.markdown b/source/help/index.markdown
index 14c2aecbac..c92de07251 100644
--- a/source/help/index.markdown
+++ b/source/help/index.markdown
@@ -15,6 +15,8 @@ There are various ways to get in touch with the Home Assistant community. It doe
- [Forum](https://community.home-assistant.io/)
- [Gitter Chatroom](https://gitter.im/balloob/home-assistant) for general Home Assistant discussions and questions.
+ - Follow us on [Twitter](https://twitter.com/home_assistant), use @home_assistant
+ - Join the [Google+ community](https://plus.google.com/u/0/b/110560654828510104551/communities/106562234893511202708)
### {% linkable_title Bugs, Feature requests, and alike %}
From 0aee5cac193e91dc219edb800bb40e24369ddf34 Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Wed, 6 Apr 2016 22:15:48 +0200
Subject: [PATCH 11/34] Minor updates and add link to let's encrypt blog post
---
source/getting-started/configuration.markdown | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown
index ca1ae21f43..bdf0422667 100644
--- a/source/getting-started/configuration.markdown
+++ b/source/getting-started/configuration.markdown
@@ -11,7 +11,7 @@ footer: true
Home Assistant will create a configuration folder when it is run for the first time. The location of the folder differs between operating systems: on OS X/Linux it's `~/.homeassistant` and on Windows it's `%APPDATA%/.homeassistant`. If you want to use a different folder for configuration, run `hass --config path/to/config`.
-Inside your configuration folder is the file `configuration.yaml`. This is the main file that contains which components will be loaded and what their configuration is.
+Inside your configuration folder is the file `configuration.yaml`. This is the main file that contains which components will be loaded and what their configuration is.
This file contains YAML code, which is explained briefly in [the configuration troubleshooting page](/getting-started/troubleshooting-configuration/). An example configuration file is located [here](https://github.com/balloob/home-assistant/blob/master/config/configuration.yaml.example).
When launched for the first time, Home Assistant will write a default configuration enabling the web interface and device discovery. It can take up to a minute for your devices to be discovered and show up in the interface.
@@ -19,7 +19,7 @@ When launched for the first time, Home Assistant will write a default configurat
If you run into trouble while configuring Home Assistant, have a look at [the configuration troubleshooting page](/getting-started/troubleshooting-configuration/).
- You will have to restart Home Assistant for changes in configuration.yaml
to take effect.
+You will have to restart Home Assistant for changes in configuration.yaml
to take effect.
### {% linkable_title Setting up the basic info %}
@@ -28,7 +28,7 @@ By default Home Assistant will try to detect your location and will automaticall
```yaml
homeassistant:
- # Omitted values in this section will be auto detected using freegeoip.net
+ # Omitted values in this section will be auto detected using freegeoip.io
# Location required to calculate the time the sun rises and sets
latitude: 32.87336
@@ -47,7 +47,7 @@ homeassistant:
### {% linkable_title Password protecting the web interface %}
-The first thing you want to add is a password for the web interface. Use your favourite text editor to open the file `/config/configuration.yaml` and add the following to the `http` section:
+The first thing you want to add is a password for the web interface. Use your favourite text editor to open the file `configuration.yaml` and add the following to the `http` section:
```yaml
http:
@@ -68,4 +68,6 @@ To make Home Assistant accessible while away from home, you will have to setup p
Some Internet service providers will only offer dynamic IPs. This can cause you to be unable to access Home Assistant while away. You can solve this by using a free Dynamic DNS service like [DuckDNS](https://www.duckdns.org/).
+You should definitely consider to encrypt your traffic if you are accessing your Home Assistant installation from abroad. For details please check the [Set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) blog post.
+
### [Next step: Setting up devices »](/getting-started/devices/)
From bb89689d089eb5809bb067995b42e1d6bac7701a Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Thu, 7 Apr 2016 08:35:51 +0200
Subject: [PATCH 12/34] Add blog post about a static website
* Add blog post about a static website
* Update timestamp
* Update file name
---
.../_posts/2016-04-07-static-website.markdown | 31 ++++++++++++++++++
.../blog/2016-04-display/ha-display.png | Bin 0 -> 51840 bytes
2 files changed, 31 insertions(+)
create mode 100644 source/_posts/2016-04-07-static-website.markdown
create mode 100644 source/images/blog/2016-04-display/ha-display.png
diff --git a/source/_posts/2016-04-07-static-website.markdown b/source/_posts/2016-04-07-static-website.markdown
new file mode 100644
index 0000000000..5ec90e23a8
--- /dev/null
+++ b/source/_posts/2016-04-07-static-website.markdown
@@ -0,0 +1,31 @@
+---
+layout: post
+title: "Static website"
+description: "Serving a static website with Home Assistant."
+date: 2016-04-07 06:28:00
+date_formatted: "April 7, 2016"
+author: Fabian Affolter
+author_twitter: fabaff
+comments: true
+categories: How-To
+og_image: /images/blog/2016-04-display/ha-display.png
+---
+
+The frontend of Home Assistant is served with the help of a local web server. If you have [customized](/getting-started/devices/#customizing-devices-and-services) your installation you already use this functionality. The content of your folder `www` in your Home Assistant configuration directory (`.homeassistant`) is available under `/local` (eg. [https://localhost:8123/local](https://localhost:8123/local)).
+
+But there is more you can do! You can not only host images for customization there but HTML files or even web applications including CSS and Javascript.
+
+
+
+
+
+
+
+In the past the buzz word "Smart mirror" was used a couple of times in our [chatroom](https://gitter.im/balloob/home-assistant) and even made it into the [issue tracker](https://github.com/balloob/home-assistant/issues/1392). The existing solutions ([Smart mirror](http://docs.smart-mirror.io/), [MagicMirror](http://michaelteeuw.nl/tagged/magicmirror), and [HomeMirror](https://github.com/HannahMitt/HomeMirror)) seems to be overkill if you already have Home Assistant running somewhere in your house or apartment. Why not simple display a web page served by Home Assistant on the tablet? No app and no Raspberry Pi running in the background.
+
+There are plenty of ways to achieve this...[RESTful API](/developers/rest_api/), [Python API](/developers/python_api/), or one of the [history components](/components/#history). If it is to be a web page I'm using the [MQTT Eventstream component](/components/mqtt_eventstream/) and [mqttws31.js](http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.javascript.git/tree/src).
+
+The [HBMQTT](https://pypi.python.org/pypi/hbmqtt) broker provides websockets support for MQTT and mqttws31.js included in web page gives you access to the MQTT messages. It's a matter of minutes. OK, it took a little longer because I'm not a Javascript guy to create the software part that will show details about your environment. The source is available at [https://github.com/fabaff/home-assistant-display](https://github.com/fabaff/home-assistant-display) and the screenshot above shows the result. I guess that every person who is familiar with Javascript would be able to reduce the amount of code and to make it more flexible. Well, it's a only prototype and showcase to include an image in this blog post.
+
+I hope that this little article could give you an idea of extending Home Assistant in an unconventional way.
+
diff --git a/source/images/blog/2016-04-display/ha-display.png b/source/images/blog/2016-04-display/ha-display.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2c0e9d4cccb39eb86fc1ea18d69921c430046f4
GIT binary patch
literal 51840
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