From 286d1564392a58a42461cd3c640046d60df861b1 Mon Sep 17 00:00:00 2001
From: Taylor Vierrether
Date: Tue, 28 Nov 2017 03:42:10 -0500
Subject: [PATCH 01/60] change example to pass true/false so it actually works,
clarify snesor name, and fix broken links (#4084)
---
source/_docs/z-wave/entities.markdown | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/source/_docs/z-wave/entities.markdown b/source/_docs/z-wave/entities.markdown
index d18e7e39047..64fa5eb0b72 100644
--- a/source/_docs/z-wave/entities.markdown
+++ b/source/_docs/z-wave/entities.markdown
@@ -119,7 +119,7 @@ The meaning of the `alarm_level` entity depends on the nature of the alarm senso
- **254**: Deep sleep
- **255**: Case open
-If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one:
+If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/components/binary_sensor.template/) to create one:
```
binary_sensor:
@@ -128,10 +128,10 @@ binary_sensor:
YOUR_SENSOR:
friendly_name: "Friendly name here"
value_template: >-
- {% raw %}{%- if is_state('sensor.YOUR_SENSOR_access_control', '22') -%}
- on
+ {% raw %}{%- if is_state('sensor.YOUR_ORIGINAL_SENSOR_access_control', '22') -%}
+ true
{%- else -%}
- off
+ false
{%- endif -%}{% endraw %}
```
@@ -147,7 +147,7 @@ binary_sensor:
- **254**: Deep sleep
- **255**: Case open
-If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one:
+If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/components/binary_sensor.template/) to create one:
```
binary_sensor:
From 8e9e8e6132d7601073e52f5b3259c036c089d28c Mon Sep 17 00:00:00 2001
From: c727
Date: Tue, 28 Nov 2017 09:43:29 +0100
Subject: [PATCH 02/60] AIO installer is deprecated (#4080)
* AIO installer is deprecated
* Remove AiO
---
.../raspberry-pi-all-in-one.markdown | 120 +-----------------
source/_docs/installation/updating.markdown | 4 +-
2 files changed, 3 insertions(+), 121 deletions(-)
diff --git a/source/_docs/installation/raspberry-pi-all-in-one.markdown b/source/_docs/installation/raspberry-pi-all-in-one.markdown
index 485fc64ffdb..6039ffed440 100644
--- a/source/_docs/installation/raspberry-pi-all-in-one.markdown
+++ b/source/_docs/installation/raspberry-pi-all-in-one.markdown
@@ -8,124 +8,6 @@ footer: true
redirect_from: /getting-started/installation-raspberry-pi-all-in-one/
---
-The [Raspberry Pi All-In-One Installer](https://github.com/home-assistant/fabric-home-assistant) deploys a complete Home Assistant server including support for MQTT with websockets, Z-Wave, and the OpenZWave Control Panel.
-
-
-Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable, since some are designed to only provide the full power with that manufacturer's handsets.
-
-
-The only requirement is that you have a Raspberry Pi with a fresh installation of [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) Jessie (Stretch is not supported at this time) connected to your network.
-
-
-Note that as of 2016-11-30 SSH is disabled by default in the official Raspbian images. Adding an empty file called `ssh` to `/boot/` on the FAT32 partition will enable it. More information is on the Raspberry Pi Foundation [Blog](https://www.raspberrypi.org/blog/page/2/?fish#a-security-update-for-raspbian-pixel).
-
-
-Irrespective of whether you use SSH to connect to the Pi from another computer or not, you need SSH to install Home Assistant. So go ahead and enable SSH.
-
-* Login to Raspberry Pi. For example with `ssh pi@your_raspberry_pi_ip`
-* Run the following command:
-
- This command is a one-liner and not run as sudo.
+ The All-In-One Installer is deprecated, you will have problems updating Home Assistant in 2018. Please move to another [installation method](https://home-assistant.io/getting-started/).
-
-```bash
-$ curl -O https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && sudo chown pi:pi hass_rpi_installer.sh && bash hass_rpi_installer.sh
-```
-
-Installation will take approx. 1-2 hours depending on the Raspberry Pi model the installer is being run against. The installer will identitfy what Raspberry Pi hardware revision you are using and adjust commands accordingly. A complete log of the install is located at: `/home/pi/fabric-home-assistant/installation_report.txt` The installer has been updated to simply log any errors encountered, but resume installing. Please consult the "installation report" if your install encountered issues.
-
-[BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=VGl3KTrYo6s) explaining how to install Raspbian on your Raspberry Pi and install Home Assistant using the All-In-One Installer.
-
-Once rebooted, your Raspberry Pi will be up and running with Home Assistant. You can access it at [http://your_raspberry_pi_ip:8123](http://your_raspberry_pi_ip:8123).
-
-The Home Assistant configuration is located at `/home/homeassistant/.homeassistant` (or `/home/hass/.homeassistant` if installed prior to December 2016). The [virtualenv](https://virtualenv.pypa.io/en/latest/) with the Home Assistant installation is located at `/srv/homeassistant/homeassistant_venv`. As part of the secure installation, a new user (**homeassistant**) is added to your Raspberry Pi to run Home Assistant. This is a system account and does not have login or other abilities by design. When editing your `configuration.yaml` files, you will need to run the commands with `sudo` or by switching user.
-
-
- *Windows users*: Setting up WinSCP to allow this seemlessly is at the end of this page.
-
-
-By default, installation makes use of a Python Virtualenv. If you wish to not follow this recommendation, you may add the flag `-n` to the end of the install command specified above.
-
-The All-In-One Installer script will do the following automatically:
-
-* Create all needed directories
-* Create needed service accounts
-* Install OS and Python dependencies
-* Setup a python virtualenv to run Home Assistant and components inside.
-* Run as `homeassistant` service account
-* Install Home Assistant in a virtualenv
-* Install Mosquitto with websocket support running on ports 1883 and 9001
-* Build and Install Python-openzwave in the Home Assistant virtualenv
-* Build OpenZWave Control Panel in `/srv/homeassistant/src/open-zwave-control-panel`
-* Add Home Assistant to systemd services to start at boot
-
-### {% linkable_title Upgrading %}
-
-To upgrade the All-In-One setup manually:
-
-* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip`
-* Change to homeassistant user `sudo su -s /bin/bash homeassistant`
-* Change to virtual environment `source /srv/homeassistant/homeassistant_venv/bin/activate`
-* Update Home Assistant `pip3 install --upgrade homeassistant`
-* Type `exit` to logout the hass user and return to the `pi` user.
-
-
-**If you deployed Home Assistant via the AiO installer prior to December 2016**
-* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip`
-* Change to homeassistant user `sudo su -s /bin/bash hass`
-* Change to virtual environment `source /srv/hass/hass_venv/bin/activate`
-* Update Home Assistant `pip3 install --upgrade homeassistant`
-* Type `exit` to logout the hass user and return to the `pi` user.
-
-
-After upgrading, you can restart Home Assistant a few different ways:
-
-* Restarting the Raspberry Pi `sudo reboot`
-* Restarting the Home-Assistant Service `sudo systemctl restart home-assistant.service`
-
-### {% linkable_title To change the MQTT default password %}
-
-* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip`
-* Change password `sudo mosquitto_passwd /etc/mosquitto/pwfile pi`
-* Restart mosquitto `sudo systemctl restart mosquitto.service`
-* Be sure to update your `configuration.yaml` to reflect the new password.
-
-### {% linkable_title Using the OZWCP web application %}
-
-To launch the OpenZWave Control Panel (OZWCP) web application:
-
-* Make sure Home Assistant is not running! So stop that first
-* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip`
-* Change to the OZWCP directory `cd /srv/homeassistant/src/open-zwave-control-panel/`
-* Launch the control panel `sudo ./ozwcp -p 8888`
-* Open a web browser to `http://your_pi_ip:8888`
-* Specify your Z-Wave controller, for example `/dev/ttyACM0` and hit initialize
-
-
- If OZWCP is running really slow verify that your not running Home Assistant or have another page running OZWCP open or strange errors might occur.
-
-
-
-**If you deployed Home Assistant via the AiO installer prior to December 2016**
-* Make sure Home Assistant is not running! So stop that first
-* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip`
-* Change to the OZWCP directory `cd /srv/hass/src/open-zwave-control-panel/`
-* Launch the control panel `sudo ./ozwcp -p 8888`
-* Open a web browser to `http://your_pi_ip:8888`
-* Specify your Z-Wave controller, for example `/dev/ttyACM0` and hit initialize
-
-
-
-Don't check the USB box regardless of using a USB based device.
-
-
-### {% linkable_title Using the GPIOs %}
-
-The (**homeassistant**) user is added to the GPIO group as part of the install now.
-
-### {% linkable_title WinSCP %}
-
-If you are Windows users who is using [WinSCP](https://winscp.net/), please note that after running the installer, you will need to modify settings allowing you to "switch users" to edit your configuration files.
-
-First create a new session on WinSCP using Protocol **SCP** pointing to your Pi IP address and port 22 and then modify the needed setting by click on **Advanced...** -> **Environment** -> **SCP/Shell** -> **Shell** and selecting `sudo su -`.
diff --git a/source/_docs/installation/updating.markdown b/source/_docs/installation/updating.markdown
index 7ee4dbd3f60..a23aa31b27f 100644
--- a/source/_docs/installation/updating.markdown
+++ b/source/_docs/installation/updating.markdown
@@ -11,7 +11,7 @@ redirect_from: /getting-started/updating/
---
-The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/#upgrading), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant).
+The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant).
View what's new in the latest version and potential impacts on your system [here](https://github.com/home-assistant/home-assistant/releases).
@@ -25,7 +25,7 @@ $ pip3 install --upgrade homeassistant
After updating, you must restart Home Assistant for the changes to take effect. This means that you will have to restart `hass` itself or the [autostarting](/docs/autostart/) daemon (if applicable). Startup can take considerable amount of time (i.e. minutes) depending on your device. This is because all requirements are updated as well.
-To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/installation/), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv).
+To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/installation/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv).
[BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=tuG2rs1Cl2Y) explaining how to upgrade Home Assistant.
From 518fa9aed9ba530de56d03288c683d03eb24a4db Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Tue, 28 Nov 2017 15:12:52 +0100
Subject: [PATCH 03/60] Update format
---
source/_components/xiaomi_aqara.markdown | 25 ++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown
index 2e132faa878..8c471681b9a 100644
--- a/source/_components/xiaomi_aqara.markdown
+++ b/source/_components/xiaomi_aqara.markdown
@@ -56,7 +56,7 @@ To enable {{ page.title }} in your installation, add the following to your `conf
### {% linkable_title One Gateway %}
```yaml
-# You can leave mac empty if you only have one gateway.
+# You can leave MAC empty if you only have one gateway.
xiaomi_aqara:
discovery_retry: 5
gateways:
@@ -66,7 +66,7 @@ xiaomi_aqara:
### {% linkable_title Multiple Gateways %}
```yaml
-# 12 characters mac can be obtained from the gateway.
+# 12 characters MAC can be obtained from the gateway.
xiaomi_aqara:
gateways:
- mac: xxxxxxxxxxxx
@@ -106,7 +106,7 @@ xiaomi_aqara:
type: string
default: any
host:
- description: The host / ip address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped.
+ description: The host/IP address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped.
required: false
type: string
{% endconfiguration %}
@@ -115,7 +115,7 @@ xiaomi_aqara:
The gateway provides the following services:
-#### {% linkable_title Service xiaomi_aqara.play_ringtone %}
+#### {% linkable_title Service `xiaomi_aqara.play_ringtone` %}
Play a specific ringtone. The version of the gateway firmware must be `1.4.1_145` at least. Take a look at the examples below.
@@ -155,7 +155,7 @@ Allowed values of the `ringtone_id` are:
- 29 - Thinker
- Custom ringtones (uploaded by the Mi Home app) starting from 10001
-#### {% linkable_title Service xiaomi_aqara.stop_ringtone %}
+#### {% linkable_title Service `xiaomi_aqara.stop_ringtone` %}
Stops a playing ringtone immediately.
@@ -163,13 +163,13 @@ Stops a playing ringtone immediately.
|---------------------------|----------|-------------------------------------------------------|
| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway |
-#### {% linkable_title Service xiaomi_aqara.add_device %}
+#### {% linkable_title Service `xiaomi_aqara.add_device` %}
| Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------|
| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway |
-#### {% linkable_title Service xiaomi_aqara.add_device %}
+#### {% linkable_title Service `xiaomi_aqara.add_device` %}
Enables the join permission of the Xiaomi Aqara Gateway for 30 seconds. A new device can be added afterwards by pressing the pairing button once.
@@ -177,7 +177,7 @@ Enables the join permission of the Xiaomi Aqara Gateway for 30 seconds. A new de
|---------------------------|----------|-------------------------------------------------------|
| `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway |
-#### {% linkable_title Service xiaomi_aqara.remove_device %}
+#### {% linkable_title Service `xiaomi_aqara.remove_device` %}
Removes a specific device. The removal is required if a device shall be paired with another gateway.
@@ -190,7 +190,7 @@ Removes a specific device. The removal is required if a device shall be paired w
### {% linkable_title Long Press on Smart Button %}
-This example plays the sound of a dog barking when the button is held down, and stops the sound when the button is pressed once.
+This example plays the sound of a dog barking when the button is held down and stops the sound when the button is pressed once.
*Note: The sound will stop playing automatically when it has ended.*
@@ -226,7 +226,7 @@ This example plays the sound of a dog barking when the button is held down, and
### {% linkable_title Initial setup problem %}
-If you run into trouble initializing the gateway with your app, try another smartphone. I had trouble with the OnePlus 3, but it worked with a Nexus 5.
+If you run into trouble initializing the gateway with your app, try another smartphone. E.g., it didn't work on an OnePlus 3, but it worked with a Nexus 5.
### {% linkable_title Connection problem %}
@@ -238,11 +238,12 @@ If you run into trouble initializing the gateway with your app, try another smar
That means that Home Assistant is not getting any response from your Xiaomi gateway. Might be a local network problem or your firewall.
- Make sure you have [enabled LAN access](https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz).
- Turn off the firewall on the system where Home Assistant is running.
-- Ensure your router supports multicast as this is a requirement of the Xiaomi GW
+- Ensure your router supports multicast as this is a requirement of the Xiaomi Gateway.
- Try to leave the MAC address `mac:` blank.
- Try to set `discovery_retry: 10`.
- Try to disable and then enable LAN access.
- Hard reset the gateway: Press the button of the gateway 30 seconds and start again from scratch.
- If you are using Home Assistant in [Docker](/docs/installation/docker/), make sure to use `--net=host`.
- If you receive an `{"error":"Invalid key"}` in your log while trying to control the gateway light, you should generate the key again using an Android Phone or alternativly an emulator such as [bluestacks](https://www.bluestacks.com). In some instances there is an issue with keys being generated using the iOS application.
-- If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g. `sudo apt-get install python3-dev libssl-dev libffi-dev`).
+- If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g., `$ sudo apt-get install python3-dev libssl-dev libffi-dev`).
+
From 20c74bea55b212006ee778ce630db697fca40a06 Mon Sep 17 00:00:00 2001
From: Jon Griffith <32052562+arretx@users.noreply.github.com>
Date: Tue, 28 Nov 2017 12:33:54 -0700
Subject: [PATCH 04/60] Display problem with script section... (#4087)
I banged my head against the table for hours trying to make the script work on this page and then I figured out something. When viewing the page on the HA site, the variable tags {{value1}}, etc...do not display. I only see two quotes.
This is what I was seeing. ```{"event":"TestHA_Trigger", "value1":"", "value2":"", "value3":""}```
And I should be seeing this: ```{"event":"TestHA_Trigger", "value1":"{{value1}}", "value2":"{{value2}}", "value3":"{{value3}}"}
Above this section in the automation, there's a tag called { % raw % } which I'm unfamiliar with, but I made a guess that this needs to be inserted. I may have been wrong. If so, I hope I've identified a valid problem. Thanks!
---
source/_components/ifttt.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown
index fc330b5f799..f61b64c1bc1 100644
--- a/source/_components/ifttt.markdown
+++ b/source/_components/ifttt.markdown
@@ -98,7 +98,7 @@ automation:
ifttt_notify:
sequence:
- service: ifttt.trigger
- data_template: {"event":"TestHA_Trigger", "value1":"{{ value1 }}", "value2":"{{ value2 }}", "value3":"{{ value3 }}"}
+ data_template: {"event":"TestHA_Trigger", "value1":"{% raw %}{{ value1 }}{% endraw %}", "value2":"{% raw %}{{ value2 }}{% endraw %}", "value3":"{% raw %}{{ value3 }}{% endraw %}"}
```
### {% linkable_title Sending events from IFTTT to Home Assistant %}
From a3a19f3089ff1b5f0827f5098e5b6e5064196f46 Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Tue, 28 Nov 2017 20:41:36 +0100
Subject: [PATCH 05/60] Move escaping
---
source/_components/ifttt.markdown | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown
index f61b64c1bc1..764138d2725 100644
--- a/source/_components/ifttt.markdown
+++ b/source/_components/ifttt.markdown
@@ -64,6 +64,7 @@ Choose "Webhooks" as service.
You need to setup a unique trigger for each event you sent to IFTTT.
+{% raw %}
```yaml
# Example configuration.yaml Automation entry
automation:
@@ -75,9 +76,11 @@ automation:
service: ifttt.trigger
data: {"event":"TestHA_Trigger", "value1":"Hello World!"}
```
+{% endraw %}
IFTTT can also be used in scripts and with `data_template`. Here is the above automation broken into an automation and script using variables and data_templates.
+{% raw %}
```yaml
# Example configuration.yaml Automation entry
automation:
@@ -89,17 +92,20 @@ automation:
service: script.ifttt_notify
data_template:
value1: 'HA Status:'
- value2: {% raw %}"{{ trigger.event.data.entity_id.split('_')[1] }} is "{% endraw %}
- value3: {% raw %}"{{ trigger.event.data.to_state.state }}"{% endraw %}
+ value2: "{{ trigger.event.data.entity_id.split('_')[1] }} is "
+ value3: "{{ trigger.event.data.to_state.state }}"
```
+{% endraw %}
+{% raw %}
```yaml
#Example Script to send TestHA_Trigger to IFTTT but with some other data (homeassistant UP).
ifttt_notify:
sequence:
- service: ifttt.trigger
- data_template: {"event":"TestHA_Trigger", "value1":"{% raw %}{{ value1 }}{% endraw %}", "value2":"{% raw %}{{ value2 }}{% endraw %}", "value3":"{% raw %}{{ value3 }}{% endraw %}"}
+ data_template: {"event":"TestHA_Trigger", "value1":"{{ value1 }}", "value2":"{{ value2 }}", "value3":"{{ value3 }}"}
```
+{% endraw %}
### {% linkable_title Sending events from IFTTT to Home Assistant %}
From 4cadf0b4ef714782383bf064aa8e714dcd02a155 Mon Sep 17 00:00:00 2001
From: DubhAd
Date: Wed, 29 Nov 2017 06:51:49 +0000
Subject: [PATCH 06/60] Added note about the component (#4090)
Added a note to try to clarify that this isn't for integrating a Home or phone with HA
---
source/_addons/google_assistant.markdown | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown
index 04458c65944..dd7cddcb6ce 100644
--- a/source/_addons/google_assistant.markdown
+++ b/source/_addons/google_assistant.markdown
@@ -10,6 +10,10 @@ footer: true
featured: true
---
+
+ If you are wanting to integrate your Google Home, or mobile phone running Google Assistant, with Home Assistant then you want the [Google Assistant component](https://home-assistant.io/components/google_assistant/).
+
+
[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact over [api.ai] with Home-Assistant. You can also use [Google Actions][GoogleActions] to extend its functionality.
To enable access to the Google Assistant API, do the following:
From d4a3e8a051780afd0d668e32c105463d3eed5a3d Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Wed, 29 Nov 2017 07:52:17 +0100
Subject: [PATCH 07/60] Add instructions (fixes #4085) (#4086)
---
source/_components/logentries.markdown | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/source/_components/logentries.markdown b/source/_components/logentries.markdown
index e14b908b871..b365e57f63d 100644
--- a/source/_components/logentries.markdown
+++ b/source/_components/logentries.markdown
@@ -11,7 +11,9 @@ footer: true
ha_category: "History"
---
-The `logentries` component makes it possible to log all state changes to [your Logentries account](http://logentries.com/) using Logentries Webhook endpoint and a token based log
+The `logentries` component makes it possible to log all state changes to [Logentries](http://logentries.com/) using Logentries Webhook endpoint.
+
+Open the **Add a Log** page and choose **Manual**. Enter a name for your log in **Log Name**, add a group in **Select Log Set**, set **Token TCP - logs are identified by a token.** and press **Create Log Token**. The generated token is required for the Home Assistant configuration.
To use the `logentries` component in your installation, add the following to your `configuration.yaml` file:
@@ -21,6 +23,10 @@ logentries:
token: TOKEN
```
-Configuration variables:
+{% configuration %}
+token:
+ description: The token for the log to use.
+ required: true
+ type: string
+{% endconfiguration %}
-- **token** (*Required*): Your Logentries log token.
From a171bad8547c4fad1edecc8c1d6584850da5ee38 Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Wed, 29 Nov 2017 08:29:40 +0100
Subject: [PATCH 08/60] Add note about decommissioning of the service by Yahoo!
---
source/_components/sensor.yahoo_finance.markdown | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/source/_components/sensor.yahoo_finance.markdown b/source/_components/sensor.yahoo_finance.markdown
index de79cc87bd3..a71ef1ea228 100644
--- a/source/_components/sensor.yahoo_finance.markdown
+++ b/source/_components/sensor.yahoo_finance.markdown
@@ -14,6 +14,10 @@ featured: false
ha_release: 0.29
---
+
+ This sensor doesn't work anymore as [Yahoo!](https://yahoo.uservoice.com/forums/382977-finance/suggestions/32103877-yahoo-stock-quote-api-please-bring-back) decommissioned the service in early November 2017.
+
+
The `yahoo_finance` platform uses [Yahoo Finance](https://finance.yahoo.com/) to monitor the stock market.
To enable the `yahoo_finance` platform, add the following lines to your `configuration.yaml` file:
From 6cbf1537905859e9b639ec6917db92b7647ce7a0 Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Wed, 29 Nov 2017 18:05:59 +0100
Subject: [PATCH 09/60] Add Hass.io blog post (#4089)
* Add Hass.io blog post
* Add SSH community add-on
* Fix date and other small issues
---
...2017-11-29-hassio-virtual-machine.markdown | 153 ++++++++++++++++++
.../blog/2017-11-hassio-virtual/hassio.png | Bin 0 -> 76889 bytes
.../blog/2017-11-hassio-virtual/social.png | Bin 0 -> 117808 bytes
.../virtual-machine-manager.png | Bin 0 -> 15280 bytes
4 files changed, 153 insertions(+)
create mode 100644 source/_posts/2017-11-29-hassio-virtual-machine.markdown
create mode 100644 source/images/blog/2017-11-hassio-virtual/hassio.png
create mode 100644 source/images/blog/2017-11-hassio-virtual/social.png
create mode 100644 source/images/blog/2017-11-hassio-virtual/virtual-machine-manager.png
diff --git a/source/_posts/2017-11-29-hassio-virtual-machine.markdown b/source/_posts/2017-11-29-hassio-virtual-machine.markdown
new file mode 100644
index 00000000000..2f53ef97d9d
--- /dev/null
+++ b/source/_posts/2017-11-29-hassio-virtual-machine.markdown
@@ -0,0 +1,153 @@
+---
+layout: post
+title: "Set up Hass.io on top of a virtual machine"
+description: "A how-to about using Hass.io on x86_64 hardware in a virtualized way."
+date: 2017-11-29 06:00:00 +0000
+date_formatted: "November 29, 2017"
+author: Fabian Affolter
+author_twitter: fabaff
+comments: true
+categories: How-To
+og_image: /images/blog/2017-11-hassio-virtual/social.png
+---
+
+
+The images for the Raspberry Pi family and the Intel NUC are an easy way to get started with [Hass.io](/hassio/). For a test or if you have a system which is already hosting virtual machines then the [**Hass.io installer**](/hassio/installation/#alternative-install-on-generic-linux-server) is an option to use Hass.io in a virtualized environment. In this guide the host is a Fedora 27 system with [libvirt](https://libvirt.org/) support and the guest will be running Debian 9. Hass.io will be installed on the guest.
+
+
+
+Assuming that you already have setup `libvirtd`. You might need to install `virt-builder` and `virt-viewer` additionally.
+
+```bash
+$ sudo dnf -y install libguestfs-tools-c virt-install virt-viewer
+```
+
+We will create a virtual machine with Debian 9 and a 10 GB disk image in the QCOW format. Use `$ virt-builder --list` to get an overview about what's operating systems are available if you prefer to use a different system.
+
+```bash
+$ sudo virt-builder debian-9 \
+ --output /var/lib/libvirt/images/hassio.img \
+ --format qcow2 \
+ --size 10G \
+ --root-password password:test123 \
+ --hostname hassio \
+ --firstboot-command "dpkg-reconfigure openssh-server"
+[...]
+[ 147.6] Finishing off
+ Output file: /var/lib/libvirt/images/hassio.img
+ Output size: 10.0G
+ Output format: qcow2
+ Total usable space: 9.3G
+ Free space: 8.1G (87%)
+```
+
+Now, we are making our new virtual machine available for `libvirtd`. If you get an error that the OS is unknown, use `$ osinfo-query os` to get the name to use with `--os-variant`. To access the virtual machine is connected to the bridge `bridge0`.
+
+```bash
+$ sudo virt-install --name hassio --import --ram 1024 \
+ --os-variant debian9 -w bridge=bridge0 \
+ --autostart --disk /var/lib/libvirt/images/hassio.img
+```
+
+
+
+ Hass.io virtual machine in Virtual Machine Manager
+
+
+Depending on your preferences you can use the Virtual Machine Manager (`virt-manager`) or `virsh` to manage the created virtual machine. Log in and create an user with `# useradd ha` and set a password with `# passwd ha`. We will need that user to make a SSH connection to the virtual machine.
+
+Log in as `ha` with the given password. If your are using the default network of `libvirtd` then the DHCP range is defined in `/var/lib/libvirt/dnsmasq/default.conf`. In this guide the virtual machine is present at 192.168.0.109.
+
+```bash
+$ ssh ha@192.168.0.109
+ha@192.168.0.109's password:
+Linux hassio 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64
+[...]
+$
+```
+
+Install the requirements after you switch the user to `root`.
+
+```bash
+$ su
+Password:
+root@hassio:/home/ha#
+root@hassio:/home/ha# apt-get update
+root@hassio:/home/ha# apt-get install bash socat jq curl avahi-daemon \
+ apt-transport-https ca-certificates
+```
+
+We want the latest Docker release. This requires additional steps to set it up as unlike other distributions Debian is lacking behind with current packages.
+
+```bash
+root@hassio:/home/ha# wget https://download.docker.com/linux/debian/gpg
+root@hassio:/home/ha# apt-key add gpg
+OK
+root@hassio:/home/ha# echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list.d/docker.list
+root@hassio:/home/ha# apt-get update
+```
+
+Now, it's possible to install a current release of [Docker](https://www.docker.com/).
+
+```bash
+root@hassio:/home/ha# apt-get -y install docker-ce
+```
+
+Start `docker` and enable it.
+
+```bash
+root@hassio:/home/ha# systemctl start docker && systemctl enable docker
+```
+
+An [installation script](https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio) will take care about the setup of all moving parts.
+
+```bash
+root@hassio:/home/ha# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash -
+[INFO] Install supervisor docker
+[INFO] Install generic HostControl
+[INFO] Install startup scripts
+[INFO] Init systemd
+Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service.
+[INFO] Start services
+```
+
+If it's done, then there will be two new containers.
+
+```bash
+root@hassio:/home/ha# docker ps
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+ada5bbfc74f0 homeassistant/qemux86-64-homeassistant "/usr/bin/entry.sh..." 4 minutes ago Up 4 minutes homeassistant
+5954ac452ffc homeassistant/amd64-hassio-supervisor "/usr/bin/entry.sh..." 7 minutes ago Up 7 minutes hassio_supervisor
+```
+
+After a connection to the container which is containing Home Assistant is made, you will see the log output.
+
+```bash
+root@hassio:/home/ha# docker attach --sig-proxy=false ada5bbfc74f0
+2017-11-28 19:24:30 INFO (MainThread) [homeassistant.core] Bus:Handling
+
+ Hass.io overview
+
+
+Keep in mind that there are limitations with this approach. Not all [add-ons](/addons/) will work and some don't make sense to use as the hardware is not present. E.g., use the [SSH community add-on](https://github.com/hassio-addons/addon-ssh) instead of the default [SSH add-on](/addons/ssh/).
+
diff --git a/source/images/blog/2017-11-hassio-virtual/hassio.png b/source/images/blog/2017-11-hassio-virtual/hassio.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf9d90b312cdc4406b475d15ff0690ecefa23089
GIT binary patch
literal 76889
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