From e4deae0cd2262d19d8699281a2e5258b0e44f3ae Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 6 Apr 2018 18:33:27 +0200 Subject: [PATCH 01/31] Fix list --- source/_docs/mqtt/discovery.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index 60974c428b0..1e7f28c6275 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -42,8 +42,8 @@ The discovery topic need to follow a specific format: ``` - ``: One of the supported components, eg. `binary_sensor`. -- ``: (*Optional*) id of the node providing the topic. -- ``: "The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`." +- `` (*Optional*): ID of the node providing the topic. +- ``: The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`. - `<>`: The topic `config` or `state` which defines the current action. The payload will be checked like an entry in your `configuration.yaml` file if a new device is added. This means that missing variables will be filled with the platform's default values. All configuration variables which are *required* must be present in the initial payload send to `/config`. From 38ee7392c490a5ff86d6c55405fbaef5ea8e30ce Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 6 Apr 2018 18:44:40 +0200 Subject: [PATCH 02/31] Add iOS page (fixes #4972) (#5127) --- source/_components/ios.markdown | 17 +++++++++++++++++ source/_docs/ecosystem/ios.markdown | 7 +++---- 2 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 source/_components/ios.markdown diff --git a/source/_components/ios.markdown b/source/_components/ios.markdown new file mode 100644 index 00000000000..3c734ea302e --- /dev/null +++ b/source/_components/ios.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "iOS" +description: "Instructions on how to use the iOS companion app with Home Assistant." +date: 2018-04-06 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: apple.png +ha_category: Hub +featured: true +ha_release: 0.31 +ha_iot_class: depends +--- + +The `ios` component is the Home Assistant part for using the iOS companion app. For further details please check the [iOS section](/docs/ecosystem/ios/) in the documentation for further details. diff --git a/source/_docs/ecosystem/ios.markdown b/source/_docs/ecosystem/ios.markdown index 82ba667eec6..027fe503230 100644 --- a/source/_docs/ecosystem/ios.markdown +++ b/source/_docs/ecosystem/ios.markdown @@ -8,7 +8,6 @@ comments: false sharing: true footer: true redirect_from: /ecosystem/ios/ -redirect_from: /components/ios/ --- The Home Assistant for iOS app offers a companion app for iOS which is deeply integrated into both Home Assistant and iOS. Its basic features include: @@ -22,7 +21,7 @@ The app is available on the iOS App Store in every country that Apple supports.

-## Basic requirements +## {% linkable_title Basic requirements %} * iOS device running at least iOS 9, but iOS 10 is greatly preferred. * Home Assistant 0.42.4 or higher for push notification support. @@ -34,7 +33,7 @@ Loading the `ios` component will also load the [`device_tracker`][device-tracker ## {% linkable_title Setup %} -### Automated Setup +### {% linkable_title Automated Setup %} The `ios` component will automatically be loaded under the following circumstances: @@ -45,7 +44,7 @@ Automated discovery and component loading only happens at first install of the a After the first automated setup you need to add `ios:` to your configuration so that the component loads by default even after restarting Home Assistant. -### Manual Setup +### {% linkable_title Manual Setup %} You may also manually load the `ios` component by adding the following to your configuration: From d2c7a2fe772c5209cac8b446fc02cdb5d35ed010 Mon Sep 17 00:00:00 2001 From: Alexis Iglauer Date: Fri, 6 Apr 2018 19:50:23 +0200 Subject: [PATCH 03/31] Update sensor.mqtt.markdown to add initial slashes for ESPEasy (#4757) * Update sensor.mqtt.markdown The sensors topic required the initial slashes to function in my installation. * Make it more clear * Remove tab --- source/_components/sensor.mqtt.markdown | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown index dc835ac9d7f..f84296bd861 100644 --- a/source/_components/sensor.mqtt.markdown +++ b/source/_components/sensor.mqtt.markdown @@ -167,7 +167,12 @@ sensor: ### {% linkable_title Get sensor value from a device with ESPEasy %} -Assuming that you have flashed your ESP8266 unit with [ESPEasy](https://github.com/letscontrolit/ESPEasy). Under "Config" set a name ("Unit Name:") for your device (here it's "bathroom"). A "Controller" for MQTT with the protocol "OpenHAB MQTT" is present and the entries ("Controller Subscribe:" and "Controller Publish:") are adjusted to match your needs. In this example the topics are prefixed with "home". Also, add a sensor in the "Devices" tap with the name "analog" and "brightness" as value. +Assuming that you have flashed your ESP8266 unit with [ESPEasy](https://github.com/letscontrolit/ESPEasy). Under "Config" set a name ("Unit Name:") for your device (here it's "bathroom"). A "Controller" for MQTT with the protocol "OpenHAB MQTT" is present and the entries ("Controller Subscribe:" and "Controller Publish:") are adjusted to match your needs. In this example the topics are prefixed with "home". Please keep in mind that the ESPEasy default topics start with a `/` and only contain the name when writing your entry for the `configuration.yaml` file. + +- **Controller Subscribe**: `home/%sysname%/#` (instead of `/%sysname%/#`) +- **Controller Publish**: `home/%sysname%/%tskname%/%valname%` (instead of `/%sysname%/%tskname%/%valname%`) + +Also, add a sensor in the "Devices" tap with the name "analog" and "brightness" as value. As soon as the unit is online, you will get the state of the sensor. @@ -188,5 +193,3 @@ sensor: name: Brightness ``` {% endraw %} - - From 243f02dc3eb25b58bd329b59cb74a3911dc76c10 Mon Sep 17 00:00:00 2001 From: Jerry Workman Date: Fri, 6 Apr 2018 14:07:52 -0400 Subject: [PATCH 04/31] HA version 0.64.0 voluptuous config check. (#4773) * HA version 0.64.0 voluptuous config check. * Update --- source/developers/development_validation.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/developers/development_validation.markdown b/source/developers/development_validation.markdown index 51fef2d39b1..b629dcbe648 100644 --- a/source/developers/development_validation.markdown +++ b/source/developers/development_validation.markdown @@ -28,6 +28,7 @@ Some things to keep in mind: - Use the constants defined in `const.py` - Import `PLATFORM_SCHEMA` from the parent component and extend it - Preferred order is `required` first and `optional` second +- Starting with Home Assistant 0.64 `voluptuous` requires default values for optional configuration keys to be valid values. Don't use a default which is `None` like `vol.Optional(CONF_SOMETHING, default=None): cv.string`, set the default to `default=""` if required. ### {% linkable_title Snippets %} From 5d0eb6b5a61a2de83b67b0298195f4f01d0209b2 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 6 Apr 2018 23:05:55 +0200 Subject: [PATCH 05/31] Remove periods --- .../_docs/installation/hassbian/integrations.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_docs/installation/hassbian/integrations.markdown b/source/_docs/installation/hassbian/integrations.markdown index 5658ce712eb..d6f7a3fd0c1 100644 --- a/source/_docs/installation/hassbian/integrations.markdown +++ b/source/_docs/installation/hassbian/integrations.markdown @@ -26,11 +26,11 @@ For more details about the GPIO layout, visit the [documentation](https://www.ra Permission have been given to the `homeassistant` user to use the GPIO pins and all of the following components should require no underlying changes to work. Just follow the component pages for each on how to add them to your Home Assistant installation. - - [DHT Sensor](/components/sensor.dht/). - - [Raspberry Pi Cover](/components/cover.rpi_gpio/). - - [Raspberry Pi GPIO Binary Sensor](/components/binary_sensor.rpi_gpio/). - - [Raspberry Pi GPIO Switch](/components/switch.rpi_gpio/). - - [Raspberry Pi RF Switch](/components/switch.rpi_rf/). + - [DHT Sensor](/components/sensor.dht/) + - [Raspberry Pi Cover](/components/cover.rpi_gpio/) + - [Raspberry Pi GPIO Binary Sensor](/components/binary_sensor.rpi_gpio/) + - [Raspberry Pi GPIO Switch](/components/switch.rpi_gpio/) + - [Raspberry Pi RF Switch](/components/switch.rpi_rf/) ### {% linkable_title Raspberry Pi Camera %} From 690fa13130c8995ad7046c54a28dde6aaa0129a3 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 6 Apr 2018 23:13:40 +0200 Subject: [PATCH 06/31] Update layout --- source/_components/smappee.markdown | 33 +++++++++++++++-------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/source/_components/smappee.markdown b/source/_components/smappee.markdown index 5e35f4866fa..ce56987f72c 100644 --- a/source/_components/smappee.markdown +++ b/source/_components/smappee.markdown @@ -12,41 +12,42 @@ ha_release: "0.64" ha_category: Hub --- -[Smappee](https://www.smappee.com/) controller for energy monitoring and Comport plug switches. +The `smappee` component adds support for the [Smappee](https://www.smappee.com/) controller for energy monitoring and Comport plug switches. Switches and Sensors are supported - and will be automatically added when you connect to the Smappee controller. -The smappee component gets information from [Smappee API](https://smappee.atlassian.net/wiki/display/DEVAPI/API+Methods) using the [smappy](https://github.com/EnergieID/smappy) pypy module +The smappee component gets information from [Smappee API](https://smappee.atlassian.net/wiki/display/DEVAPI/API+Methods). -

-Info on how to get api access is described in the [smappy wiki](https://github.com/EnergieID/smappy/wiki) -

+## {% linkable_title Configuration %} + +Info on how to get API access is described in the [smappy wiki](https://github.com/EnergieID/smappy/wiki). + +To use the `smappee` component in your installation, add the following to your `configuration.yaml` file: -# Configuration ```yaml # Example configuration.yaml entry smappee: - host: 10.0.0.5 - client_id: YOUR_CLIENT_ID - client_secret: YOUR_CLIENT_SECRET - username: YOUR_MYSMAPPEE_USERNAME - password: YOUR_MYSMAPPEE_PASSWORD + host: 10.0.0.5 + client_id: YOUR_CLIENT_ID + client_secret: YOUR_CLIENT_SECRET + username: YOUR_MYSMAPPEE_USERNAME + password: YOUR_MYSMAPPEE_PASSWORD ``` ```yaml # Minimal example configuration.yaml entry smappee: - host: 10.0.0.5 + host: 10.0.0.5 ``` ```yaml # Cloud only example configuration.yaml entry smappee: - client_id: YOUR_CLIENT_ID - client_secret: YOUR_CLIENT_SECRET - username: YOUR_MYSMAPPEE_USERNAME - password: YOUR_MYSMAPPEE_PASSWORD + client_id: YOUR_CLIENT_ID + client_secret: YOUR_CLIENT_SECRET + username: YOUR_MYSMAPPEE_USERNAME + password: YOUR_MYSMAPPEE_PASSWORD ``` Configuration variables: From 42e0e4f477ffce814f236aad982078076a5edf36 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 Apr 2018 10:20:34 +0200 Subject: [PATCH 07/31] Fix link --- source/help/reporting_issues.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/help/reporting_issues.markdown b/source/help/reporting_issues.markdown index f3764c3d080..d2290788c55 100644 --- a/source/help/reporting_issues.markdown +++ b/source/help/reporting_issues.markdown @@ -11,7 +11,7 @@ footer: true If you have an installation, a setup or a configuration issue please use our [Forum](https://community.home-assistant.io/) to get help. We have a big community which will help you if they can. -If you found a bug then please report it in one of our [trackers](help/#bugs-feature-requests-and-alike). To help you and our developers to identify the issue quickly, please fill out the provided template. The "weird" content you will see is there to render your entry in a nice format after submitting. It's just [markddown](https://guides.github.com/features/mastering-markdown/). +If you found a bug then please report it in one of our [trackers](/help/#bugs-feature-requests-and-alike). To help you and our developers to identify the issue quickly, please fill out the provided template. The "weird" content you will see is there to render your entry in a nice format after submitting. It's just [markddown](https://guides.github.com/features/mastering-markdown/). Use the command below to get the Home Assistant release you are running from a command-line. From 2abdd0d46550f05737bd918ef7921fcce7fa55cc Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 8 Apr 2018 10:09:41 -0400 Subject: [PATCH 08/31] remove some absolute urls in favor of relative --- source/_posts/2018-03-30-release-66.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_posts/2018-03-30-release-66.markdown b/source/_posts/2018-03-30-release-66.markdown index 3cb379af267..26aba182bea 100644 --- a/source/_posts/2018-03-30-release-66.markdown +++ b/source/_posts/2018-03-30-release-66.markdown @@ -566,6 +566,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [@MartinHjelmare]: https://github.com/MartinHjelmare [@armills]: https://github.com/armills [@cdce8p]: https://github.com/cdce8p -[homekit docs]: https://www.home-assistant.io/components/homekit/ -[light.mqtt_json docs]: https://www.home-assistant.io/components/light.mqtt_json/ -[sensor.mysensors docs]: https://www.home-assistant.io/components/sensor.mysensors/ +[homekit docs]: /components/homekit/ +[light.mqtt_json docs]: /components/light.mqtt_json/ +[sensor.mysensors docs]: /components/sensor.mysensors/ From a151bb7ff22768b241268eb24ae9f37dafbf9c02 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 8 Apr 2018 17:42:40 +0200 Subject: [PATCH 09/31] It's ASL 2.0 and no longer MIT --- source/developers/development.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/development.markdown b/source/developers/development.markdown index f2f79b70c40..8bc614295d1 100644 --- a/source/developers/development.markdown +++ b/source/developers/development.markdown @@ -11,7 +11,7 @@ footer: true Home Assistant is built from the ground up to be easily extensible using components. Home Assistant uses [Python 3](https://www.python.org/) for the backend and [Polymer (Web components)](https://www.polymer-project.org/) for the frontend. -Home Assistant is open-source and MIT-licensed. Here are links to the source: +Home Assistant is open-source and licensed under [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0). Here are links to the source: - [home-assistant](https://github.com/home-assistant/home-assistant): Python server backend. - [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer): Polymer UI. From 2667e63bab3292e04a411914c815985b725a787e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 8 Apr 2018 17:44:11 +0200 Subject: [PATCH 10/31] Fix typo --- source/_components/http.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/http.markdown b/source/_components/http.markdown index 458e10794e5..8fddcfd5d9c 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -90,7 +90,7 @@ Please note, that sources from `trusted_networks` won't be banned automatically. ## {% linkable_title Hosting files %} -If you want to use Home Assistant to host or serve static files then create a directory called `www` under the configuration path (`/config` on Hass.io, `.homeassistant` elswhere). The static files in `www/` can be accessed by the following URL `http://your.domain:8123/local/`, for example `audio.mp3` would be accessed as `http://your.domain:8123/local/audio.mp3`. +If you want to use Home Assistant to host or serve static files then create a directory called `www` under the configuration path (`/config` on Hass.io, `.homeassistant` elsewhere). The static files in `www/` can be accessed by the following URL `http://your.domain:8123/local/`, for example `audio.mp3` would be accessed as `http://your.domain:8123/local/audio.mp3`.

If you've had to create the `www/` folder for the first time, you'll need to restart Home Assistant. From 3ca5ab88cea13f4c0664ad055132f46be9d46ef1 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 8 Apr 2018 21:31:54 +0200 Subject: [PATCH 11/31] Remove feature --- source/_components/ios.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/ios.markdown b/source/_components/ios.markdown index 3c734ea302e..44ac2fa88e3 100644 --- a/source/_components/ios.markdown +++ b/source/_components/ios.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: apple.png ha_category: Hub -featured: true +featured: false ha_release: 0.31 ha_iot_class: depends --- From 46f89afa140075da462dabd710bce07cfe4113ea Mon Sep 17 00:00:00 2001 From: Tim Hordern Date: Mon, 9 Apr 2018 17:38:28 +1000 Subject: [PATCH 12/31] Fix markdown link in Docker Installation docs (#5140) --- source/_docs/installation/docker.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown index 53ee1037841..20ccb539437 100644 --- a/source/_docs/installation/docker.markdown +++ b/source/_docs/installation/docker.markdown @@ -28,7 +28,7 @@ If you wish to browse directly to `http://localhost:8123` from your macOS host, $ docker run -d --name="home-assistant" -v /path/to/your/config:/config -e "TZ=America/Los_Angeles" -p 8123:8123 homeassistant/home-assistant ``` -Alternatively, `docker-compose` works with any recent release of `docker-ce` on macOS. Note that (further down this page) we provide an example `docker-compose.yml` however it differs from the `docker run` example above. To make the .yml directives match, you would need to make _two_ changes: first add the equivalent `ports:` directive, then _remove_ the `network_mode: host` section. This is because `Port mapping is incompatible with network_mode: host:`. More details can be found at [Docker networking docs] (https://docs.docker.com/engine/userguide/networking/#default-networks). Note also the `/dev/tty*` device name used by your Arduino etc. devices will differ from the Linux example, so the compose `mount:` may require updates. +Alternatively, `docker-compose` works with any recent release of `docker-ce` on macOS. Note that (further down this page) we provide an example `docker-compose.yml` however it differs from the `docker run` example above. To make the .yml directives match, you would need to make _two_ changes: first add the equivalent `ports:` directive, then _remove_ the `network_mode: host` section. This is because `Port mapping is incompatible with network_mode: host:`. More details can be found at [Docker networking docs](https://docs.docker.com/engine/userguide/networking/#default-networks). Note also the `/dev/tty*` device name used by your Arduino etc. devices will differ from the Linux example, so the compose `mount:` may require updates. ### {% linkable_title Windows %} From 17ccbcce243cd901af6e6cd61a0ade1dee8d5300 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 9 Apr 2018 16:04:39 +0200 Subject: [PATCH 13/31] Various fixes --- source/_docs/installation/docker.markdown | 51 ++++++++++------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown index 20ccb539437..d8e6ed3ff40 100644 --- a/source/_docs/installation/docker.markdown +++ b/source/_docs/installation/docker.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /getting-started/installation-docker/ --- -Installation with Docker is straightforward. Adjust the following command so that `/path/to/your/config/` points at the folder where you want to store your config and run it: +Installation with Docker is straightforward. Adjust the following command so that `/path/to/your/config/` points at the folder where you want to store your configuration and run it: ### {% linkable_title Linux %} @@ -20,7 +20,7 @@ $ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/ ### {% linkable_title macOS %} -When using `docker-ce` (or `boot2docker`) on macOS, you are unable to map the local timezone to your Docker container ([Docker issue](https://github.com/docker/for-mac/issues/44)). Instead of `-v /etc/localtime:/etc/localtime:ro`, just pass in the timezone environment variable when you launch the container, ex: `-e "TZ=America/Los_Angeles"`. Replace "America/Los_Angeles" with [your timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones). +When using `docker-ce` (or `boot2docker`) on macOS, you are unable to map the local timezone to your Docker container ([Docker issue](https://github.com/docker/for-mac/issues/44)). Instead of `-v /etc/localtime:/etc/localtime:ro`, just pass in the timezone environment variable when you launch the container, e.g, `-e "TZ=America/Los_Angeles"`. Replace "America/Los_Angeles" with [your timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones). If you wish to browse directly to `http://localhost:8123` from your macOS host, meaning forward ports directly to the container, replace the `--net=host` switch with `-p 8123:8123`. More detail can be found in [the docker forums](https://forums.docker.com/t/should-docker-run-net-host-work/14215/10). @@ -84,31 +84,24 @@ As QNAP within QTS now supports Docker (with a neat UI), you can simply install The steps would be: - - Install “Container Station” package on your Qnap NAS - - Launch Container Station and move to “Create Container”-section - - Search image “homeassistant/home-assistant” with - docker hub and click on “Install” + - Install "Container Station" package on your Qnap NAS + - Launch Container Station and move to "Create Container"-section + - Search image "homeassistant/home-assistant" with Docker hub and click on "Install" - Choose "latest" version and click next - - Choose a container-name you want (e.g. - “homeassistant”) - - Click on “Advanced Settings” - - Within “Shared Folders” click on "Volume from host" > "Add" and - choose either an existing folder or add a new folder. The “mount - point” has to be “/config”, so that Home Assistant will use it for - the configs and logs. - - Within “Network” and select Network Mode to “Host” - - To ensure that Home Assistant displays the correct - timezone go to the “Environment” tab and click the plus sign then add - `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) - - Click on “Create” + - Choose a container-name you want (e.g., "homeassistant") + - Click on "Advanced Settings" + - Within "Shared Folders" click on "Volume from host" > "Add" and choose either an existing folder or add a new folder. The "mount point has to be `/config`, so that Home Assistant will use it for the configuration and logs. + - Within "Network" and select Network Mode to "Host" + - To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) + - Click on "Create" - Wait for some time until your NAS has created the container - Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Qnap NAS IP address - for example `http://192.xxx.xxx.xxx:8123`) -Remark: to update your Home Assistant on your Docker within Qnap NAS, you just remove container and image and do steps again (Don't remove "config" folder) +Remark: To update your Home Assistant on your Docker within Qnap NAS, you just remove container and image and do steps again (Don't remove "config" folder). -If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assistant on Qnap Docker, Fallow this step: +If you want to use a USB Bluetooth adapter or Z-Wave USB stick with Home Assistant on Qnap Docker, follow those steps: -**Z-wave:** +#### {% linkable_title Z-Wave %} - Connect to your NAS over SSH - Load cdc-acm kernel module(when nas restart need to run this command) @@ -123,16 +116,16 @@ If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assista `-v` is your config path `-e` is set timezone - - Edit configuration.yaml + - Edit `configuration.yaml` -``` +```yaml zwave: usb_path: /dev/ttyACM0 ``` That will tell Home Assistant where to look for our Z-wave radio. -**Bluetooth:** +#### {% linkable_title Bluetooth %} - Connect to your NAS over SSH - Run Docker command: @@ -141,9 +134,9 @@ That will tell Home Assistant where to look for our Z-wave radio. First `-v` is your config path `-e` is set timezone - - Edit configuration.yaml + - Edit the `configuration.yaml` file -``` +```yaml device_tracker: - platform: bluetooth_tracker ``` @@ -180,10 +173,12 @@ $ docker-compose up -d ### {% linkable_title Exposing Devices %} -In order to use z-wave, zigbee or other components that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your docker command: +In order to use Z-Wave, ZigBbee or other components that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your docker command: ```bash -$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --device /dev/ttyUSB0:/dev/ttyUSB0 --net=host homeassistant/home-assistant +$ docker run -d --name="home-assistant" -v /path/to/your/config:/config \ + -v /etc/localtime:/etc/localtime:ro --device /dev/ttyUSB0:/dev/ttyUSB0 \ + --net=host homeassistant/home-assistant ``` or in a `docker-compose.yml` file: From 9f70138ffcc8f077bd70014d746a512d5cf1e897 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 9 Apr 2018 16:04:53 +0200 Subject: [PATCH 14/31] Add container update --- source/_docs/installation/updating.markdown | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/_docs/installation/updating.markdown b/source/_docs/installation/updating.markdown index b3c7040b9a0..dd5d6dc3ab1 100644 --- a/source/_docs/installation/updating.markdown +++ b/source/_docs/installation/updating.markdown @@ -14,7 +14,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/installation/hassbian/common-tasks/#update-home-assistant), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant).

-Check what's new in the latest version and potentially impacts your system in [Home Assistant release notes](https://github.com/home-assistant/home-assistant/releases). It is good practice to review these release notes and pay close attention to the **Breaking Changes** that are listed there. If you haven't done an update for a while, you should also check previous release notes as they can also contain relevant **Breaking Changes**. **Breaking Changes** may require configuration updates for your components. If you missed this and Home Assistant refuses to start, check `/home-assistant.log` for details about broken components. +Check what's new in the latest version and potentially impacts your system in [Home Assistant release notes](https://github.com/home-assistant/home-assistant/releases). It is good practice to review these release notes and pay close attention to the **Breaking Changes** that are listed there. If you haven't done an update for a while, you should also check previous release notes as they can also contain relevant **Breaking Changes**. **Breaking Changes** may require configuration updates for your components. If you missed this and Home Assistant refuses to start, check the log file in the [configuration](/docs/configuration/) directory, e.g., `.homeassistant/home-assistant.log`, for details about broken components. The default way to update Home Assistant to the latest release, when available, is: @@ -22,7 +22,13 @@ The default way to update Home Assistant to the latest release, when available, $ 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. +For a Docker container, simply pull the latest one: + +```bash +$ sudo docker pull homeassistant/home-assistant:latest +``` + +After updating, you must start/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/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv). From e3c6e65f19633b3292d64e1f80c4902fe3ee8d32 Mon Sep 17 00:00:00 2001 From: brkr19 Date: Mon, 9 Apr 2018 13:14:49 -0500 Subject: [PATCH 15/31] Add example file attachment parameters (#5134) --- source/_components/notify.pushover.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/notify.pushover.markdown b/source/_components/notify.pushover.markdown index 7e7680db7e1..0b4bc520bb1 100644 --- a/source/_components/notify.pushover.markdown +++ b/source/_components/notify.pushover.markdown @@ -47,6 +47,11 @@ Example Automation: url: "https://www.home-assistant.io/" sound: pianobar priority: 0 + file: + url: !secret camera_still_image + auth: basic + username: !secret camera_username + password: !secret camera_password ``` Component specific values in the nested `data` section are optional. From 89406e3ea043d6862db0f7222f5f6baf2bb2459c Mon Sep 17 00:00:00 2001 From: DubhAd Date: Mon, 9 Apr 2018 19:15:34 +0100 Subject: [PATCH 16/31] Consistency update (#5136) It was pointed out that everywhere else `entity_id:` is in the `data:` section for `light.turn_on`. Updating the example here to be consistent with that. --- source/_docs/automation/action.markdown | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/source/_docs/automation/action.markdown b/source/_docs/automation/action.markdown index ce9d7c9e050..0df212be7cd 100644 --- a/source/_docs/automation/action.markdown +++ b/source/_docs/automation/action.markdown @@ -22,13 +22,12 @@ automation: event: sunset action: service: light.turn_on - entity_id: - - light.kitchen - - light.living_room data: brightness: 150 rgb_color: [255, 0, 0] - + entity_id: + - light.kitchen + - light.living_room automation 2: # Notify me on my mobile phone of an event trigger: From bbb4af9c7b2af3f3deb8a29265f3fb83e477f0e1 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 10 Apr 2018 20:06:45 +0200 Subject: [PATCH 17/31] Revert "Consistency update (#5136)" This reverts commit 89406e3ea043d6862db0f7222f5f6baf2bb2459c. From a9569af0a42d64329d3eb92f3c236cfca9fb1ab4 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 10 Apr 2018 20:06:45 +0200 Subject: [PATCH 18/31] Revert "Add example file attachment parameters (#5134)" This reverts commit e3c6e65f19633b3292d64e1f80c4902fe3ee8d32. --- source/_components/notify.pushover.markdown | 5 ----- 1 file changed, 5 deletions(-) diff --git a/source/_components/notify.pushover.markdown b/source/_components/notify.pushover.markdown index 0b4bc520bb1..7e7680db7e1 100644 --- a/source/_components/notify.pushover.markdown +++ b/source/_components/notify.pushover.markdown @@ -47,11 +47,6 @@ Example Automation: url: "https://www.home-assistant.io/" sound: pianobar priority: 0 - file: - url: !secret camera_still_image - auth: basic - username: !secret camera_username - password: !secret camera_password ``` Component specific values in the nested `data` section are optional. From f147350ab457a8405dc4d7b5c5daf6080dacea79 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 10 Apr 2018 20:56:57 +0200 Subject: [PATCH 19/31] Update addon_config.markdown --- .../developers/hassio/addon_config.markdown | 62 ++++++++++--------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/source/developers/hassio/addon_config.markdown b/source/developers/hassio/addon_config.markdown index cf91e022b4d..d249de967e7 100644 --- a/source/developers/hassio/addon_config.markdown +++ b/source/developers/hassio/addon_config.markdown @@ -106,37 +106,39 @@ The config for an add-on is stored in `config.json`. } ``` -| Key | Required | Description | -| --- | -------- | ----------- | -| name | yes | Name of the add-on -| version | yes | Version of the add-on -| slug | yes | Slug of the add-on -| description | yes | Description of the add-on -| arch | no | List of supported arch: `armhf`, `aarch64`, `amd64`, `i386`. Default all. -| url | no | Homepage of the addon. Here you can explain the add-ons and options. -| startup | yes | `initialize` will start addon on setup of Hass.io. `system` is for things like databases and not dependent on other things. `services` will start before Home Assistant, while `application` is started afterwards. Finally `once` is for applications that don't run as a daemon. -| webui | no | A URL for web interface of this add-on. Like `http://[HOST]:[PORT:2839]/dashboard`, the port needs the internal port, which will be replaced with the effective port. It is also possible to bind the proto part to a config options with: `[PROTO:option_name]://[HOST]:[PORT:2839]/dashboard` and he lookup if they is True and going to `https`. -| boot | yes | `auto` by system and manual or only `manual` +| Key | Type | Required | Description | +| --- | ---- | -------- | ----------- | +| name | string | yes | Name of the add-on +| version | string | yes | Version of the add-on +| slug | string | yes | Slug of the add-on +| description | string | yes | Description of the add-on +| arch | array | no | List of supported arch: `armhf`, `aarch64`, `amd64`, `i386`. Default all. +| url | url | no | Homepage of the addon. Here you can explain the add-ons and options. +| startup | bool | yes | `initialize` will start addon on setup of Hass.io. `system` is for things like databases and not dependent on other things. `services` will start before Home Assistant, while `application` is started afterwards. Finally `once` is for applications that don't run as a daemon. +| webui | string | no | A URL for web interface of this add-on. Like `http://[HOST]:[PORT:2839]/dashboard`, the port needs the internal port, which will be replaced with the effective port. It is also possible to bind the proto part to a config options with: `[PROTO:option_name]://[HOST]:[PORT:2839]/dashboard` and he lookup if they is True and going to `https`. +| boot | string | yes | `auto` by system and manual or only `manual` | ports | no | Network ports to expose from the container. Format is `"container-port/type": host-port`. -| host_network | no | If that is True, the add-on run on host network. -| host_ipc | no | Default False. Allow to share the IPC namespace with others. -| host_dbus | no | Default False. Map Host dbus service into add-on. -| devices | no | Device list to map into the add-on. Format is: `::`. i.e. `/dev/ttyAMA0:/dev/ttyAMA0:rwm` -| auto_uart | no | Default False. Auto mapping all UART/Serial device from host into add-on. -| hassio_api | no | This add-on can access to Hass.io REST API. It set the host alias `hassio`. -| homeassistant_api | no | This add-on can access to Hass.io Home-Assistant REST API proxy. Use `http://hassio/homeassistant/api`. -| privileged | no | Privilege for access to hardware/system. Available access: `NET_ADMIN`, `SYS_ADMIN`, `SYS_RAWIO`, `SYS_TIME`, `SYS_NICE` -| map | no | List of maps for additional Hass.io folders. Possible values: `config`, `ssl`, `addons`, `backup`, `share`. Defaults to `ro`, which you can change by adding `:rw` to the end of the name. -| environment | no | A dict of environment variable to run add-on. -| audio | no | Boolean. Mark this add-on to use internal an audio system. The available environment variables are `ALSA_INPUT` and `ALSA_OUTPUT` which provide internal information to access alsa. -| gpio | no | Boolean. If this is set to True, `/sys/class/gpio` will map into add-on for access to GPIO interface from kernel. Some library need also `/dev/mem` and `SYS_RAWIO` for read/write access to this device. -| stdin | no | Boolean. If that is enable, you can use the STDIN with Hass.io API. -| legacy | no | Boolean. If the docker image have no hass.io labels, you can enable the legacy mode to use the config data. -| options | yes | Default options value of the add-on -| schema | yes | Schema for options value of the add-on. It can be `False` to disable schema validation and use custom options. -| image | no | For use with Docker Hub. -| timeout | no | Default 10 (second). The timeout to wait until the docker is done or will be killed. -| tmpfs | no | Mount a tmpfs file system in `/tmpfs`. Valide format for this option is : `size=XXXu,uid=N,rw`. Size is mandatory, valid units (`u`) are `k`, `m` and `g` and `XXX` has to be replaced by a number. `uid=N` (with `N` the uid number) and `rw` are optional. +| host_network | bool | no | If that is True, the add-on run on host network. +| host_ipc | bool | no | Default False. Allow to share the IPC namespace with others. +| host_dbus | bool | no | Default False. Map Host dbus service into add-on. +| devices | list | no | Device list to map into the add-on. Format is: `::`. i.e. `/dev/ttyAMA0:/dev/ttyAMA0:rwm` +| auto_uart | bool | no | Default False. Auto mapping all UART/Serial device from host into add-on. +| hassio_api | bool | no | This add-on can access to Hass.io REST API. It set the host alias `hassio`. +| homeassistant_api | bool | no | This add-on can access to Hass.io Home-Assistant REST API proxy. Use `http://hassio/homeassistant/api`. +| privileged | array | no | Privilege for access to hardware/system. Available access: `NET_ADMIN`, `SYS_ADMIN`, `SYS_RAWIO`, `SYS_TIME`, `SYS_NICE` +| apparmor | bool | no | Enable or disable AppArmor support. If it is enable, you can also use custom profiles. +| seccomp | bool | no | Enable or disable Seccomp support. If it is enable, you can also use custom profiles. +| map | list | no | List of maps for additional Hass.io folders. Possible values: `config`, `ssl`, `addons`, `backup`, `share`. Defaults to `ro`, which you can change by adding `:rw` to the end of the name. +| environment | dict | no | A dict of environment variable to run add-on. +| audio | bool | no | Boolean. Mark this add-on to use internal an audio system. The available environment variables are `ALSA_INPUT` and `ALSA_OUTPUT` which provide internal information to access alsa. +| gpio | bool | no | Boolean. If this is set to True, `/sys/class/gpio` will map into add-on for access to GPIO interface from kernel. Some library need also `/dev/mem` and `SYS_RAWIO` for read/write access to this device. +| stdin | bool | no | Boolean. If that is enable, you can use the STDIN with Hass.io API. +| legacy | bool | no | Boolean. If the docker image have no hass.io labels, you can enable the legacy mode to use the config data. +| options | dict | yes | Default options value of the add-on +| schema | dict | yes | Schema for options value of the add-on. It can be `False` to disable schema validation and use custom options. +| image | string | no | For use with Docker Hub. +| timeout | integer | no | Default 10 (second). The timeout to wait until the docker is done or will be killed. +| tmpfs | string | no | Mount a tmpfs file system in `/tmpfs`. Valide format for this option is : `size=XXXu,uid=N,rw`. Size is mandatory, valid units (`u`) are `k`, `m` and `g` and `XXX` has to be replaced by a number. `uid=N` (with `N` the uid number) and `rw` are optional. ### {% linkable_title Options / Schema %} From ffb528dbd64f0f80d03a4044ed44e078aa643d0e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 10 Apr 2018 20:57:30 +0200 Subject: [PATCH 20/31] Update addon_config.markdown --- source/developers/hassio/addon_config.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/hassio/addon_config.markdown b/source/developers/hassio/addon_config.markdown index d249de967e7..7cf813b63d9 100644 --- a/source/developers/hassio/addon_config.markdown +++ b/source/developers/hassio/addon_config.markdown @@ -112,7 +112,7 @@ The config for an add-on is stored in `config.json`. | version | string | yes | Version of the add-on | slug | string | yes | Slug of the add-on | description | string | yes | Description of the add-on -| arch | array | no | List of supported arch: `armhf`, `aarch64`, `amd64`, `i386`. Default all. +| arch | list | no | List of supported arch: `armhf`, `aarch64`, `amd64`, `i386`. Default all. | url | url | no | Homepage of the addon. Here you can explain the add-ons and options. | startup | bool | yes | `initialize` will start addon on setup of Hass.io. `system` is for things like databases and not dependent on other things. `services` will start before Home Assistant, while `application` is started afterwards. Finally `once` is for applications that don't run as a daemon. | webui | string | no | A URL for web interface of this add-on. Like `http://[HOST]:[PORT:2839]/dashboard`, the port needs the internal port, which will be replaced with the effective port. It is also possible to bind the proto part to a config options with: `[PROTO:option_name]://[HOST]:[PORT:2839]/dashboard` and he lookup if they is True and going to `https`. From 061c9bdfa143f67b14eed589d984a5854dbbeebf Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 10 Apr 2018 20:58:36 +0200 Subject: [PATCH 21/31] Update addon_config.markdown --- source/developers/hassio/addon_config.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/developers/hassio/addon_config.markdown b/source/developers/hassio/addon_config.markdown index 7cf813b63d9..47dc50ce439 100644 --- a/source/developers/hassio/addon_config.markdown +++ b/source/developers/hassio/addon_config.markdown @@ -117,7 +117,7 @@ The config for an add-on is stored in `config.json`. | startup | bool | yes | `initialize` will start addon on setup of Hass.io. `system` is for things like databases and not dependent on other things. `services` will start before Home Assistant, while `application` is started afterwards. Finally `once` is for applications that don't run as a daemon. | webui | string | no | A URL for web interface of this add-on. Like `http://[HOST]:[PORT:2839]/dashboard`, the port needs the internal port, which will be replaced with the effective port. It is also possible to bind the proto part to a config options with: `[PROTO:option_name]://[HOST]:[PORT:2839]/dashboard` and he lookup if they is True and going to `https`. | boot | string | yes | `auto` by system and manual or only `manual` -| ports | no | Network ports to expose from the container. Format is `"container-port/type": host-port`. +| ports | dict | no | Network ports to expose from the container. Format is `"container-port/type": host-port`. | host_network | bool | no | If that is True, the add-on run on host network. | host_ipc | bool | no | Default False. Allow to share the IPC namespace with others. | host_dbus | bool | no | Default False. Map Host dbus service into add-on. @@ -125,7 +125,7 @@ The config for an add-on is stored in `config.json`. | auto_uart | bool | no | Default False. Auto mapping all UART/Serial device from host into add-on. | hassio_api | bool | no | This add-on can access to Hass.io REST API. It set the host alias `hassio`. | homeassistant_api | bool | no | This add-on can access to Hass.io Home-Assistant REST API proxy. Use `http://hassio/homeassistant/api`. -| privileged | array | no | Privilege for access to hardware/system. Available access: `NET_ADMIN`, `SYS_ADMIN`, `SYS_RAWIO`, `SYS_TIME`, `SYS_NICE` +| privileged | list | no | Privilege for access to hardware/system. Available access: `NET_ADMIN`, `SYS_ADMIN`, `SYS_RAWIO`, `SYS_TIME`, `SYS_NICE` | apparmor | bool | no | Enable or disable AppArmor support. If it is enable, you can also use custom profiles. | seccomp | bool | no | Enable or disable Seccomp support. If it is enable, you can also use custom profiles. | map | list | no | List of maps for additional Hass.io folders. Possible values: `config`, `ssl`, `addons`, `backup`, `share`. Defaults to `ro`, which you can change by adding `:rw` to the end of the name. From 342b99221d6360e5625dd0018011c2526e06bef0 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 10 Apr 2018 21:04:35 +0200 Subject: [PATCH 22/31] Add security infos --- source/developers/hassio/addon_presentation.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/developers/hassio/addon_presentation.markdown b/source/developers/hassio/addon_presentation.markdown index 413dd0489dc..e57270040a0 100644 --- a/source/developers/hassio/addon_presentation.markdown +++ b/source/developers/hassio/addon_presentation.markdown @@ -47,3 +47,7 @@ A changelog is a file which contains a curated, chronologically ordered list of If you are in need of a guide on keeping a changelog, we would recommend checking the [keep a changelog](http://keepachangelog.com) website. They have developed a standard that is used by many opensource projects around the world. In future versions of Hass.io, the `CHANGELOG.md` file will be displayed in the Home Assistant frontend. + +## {% linkable_title Extended Security %} + +You can use own security profile for you Add-on with Seccomp or AppArmor. Default it is enabled and use the docker default profile. Put `apparmor` or `seccomp.json` file into your Add-on folder and it will load this file as primary profile. From 5dd2412a37eff4c99275e0c3bc4aaf6fb7d676e7 Mon Sep 17 00:00:00 2001 From: Mark Perdue Date: Wed, 11 Apr 2018 06:06:53 -0400 Subject: [PATCH 23/31] Adds attributes table to VeSync wiki (#5151) --- source/_components/switch.vesync.markdown | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/source/_components/switch.vesync.markdown b/source/_components/switch.vesync.markdown index d3b59716362..83041ca78be 100644 --- a/source/_components/switch.vesync.markdown +++ b/source/_components/switch.vesync.markdown @@ -12,7 +12,9 @@ ha_category: Switch ha_release: 0.66 --- -The `vesync` switch platform enabled integration with Etekcity VeSync smart switches. +The `vesync` switch platform enables integration with Etekcity VeSync smart switches. + +VeSync switches are low-cost wifi smart plugs that offer energy monitoring and work with popular voice assistants. To use your VeSync switches, you must first register your switches with the VeSync app. Once registration is complete you must add the following to your `configuration.yaml` file: @@ -20,8 +22,8 @@ To use your VeSync switches, you must first register your switches with the VeSy # Example configuration.yaml entry switch: - platform: vesync - username: username - password: password + username: YOUR_USERNAME + password: YOUR_PASSWORD ``` {% configuration %} @@ -34,3 +36,16 @@ password: required: true type: string {% endconfiguration %} + +### {% linkable_title Exposed Attributes %} + +VeSync switches will expose the following details. + +| Attribute | Description | Example | +| ------------------- | ------------------------------------------------------------------- | --------------- | +| `current_power_w` | The present power consumption of the switch in watts. | 100 | +| `today_energy_kwh` | The kilowatt hours used by the switch during the previous 24 hours. | 0.12 | +| `connection_status` | The connection status of the switch. | online | +| `connection_type` | The connection type of the switch. | wifi | +| `device_type` | The device type of the switch. | wifi-switch-1.3 | +| `model` | The model of the switch. | wifi-switch | From 97525ba3eba6cb08d3478a12792bd346962205ae Mon Sep 17 00:00:00 2001 From: DubhAd Date: Thu, 12 Apr 2018 12:38:03 +0100 Subject: [PATCH 24/31] Moved the Python warning (#5157) Moved the Python version warning to the top of the page, and made it a warning --- source/_docs/installation/synology.markdown | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/_docs/installation/synology.markdown b/source/_docs/installation/synology.markdown index 808a4e77de7..454dcd8858c 100644 --- a/source/_docs/installation/synology.markdown +++ b/source/_docs/installation/synology.markdown @@ -10,6 +10,10 @@ footer: true redirect_from: /getting-started/installation-synology/ --- +

+Synology only provide Python 3.5.1, which is not compatible with Home Assistant 0.65.0 or later. Until Synology offer an updated version of Python, Home Assistant 0.64 is the most recent version that will be able to be installed. You can manually specify the version of Home Assistant to install, for example to install version 0.64.3 you would do `./python3 -m pip install homeassistant==0.64.3` +

+ There are 2 alternatives, when using Home Assistant on Synology NAS: 1. using Docker 2. directly running on DSM @@ -26,7 +30,7 @@ Running these commands will: Using the Synology webadmin: - - Install python3 using the Synology Package Center (be aware, this provides 3.5.1, which is not compatible with Home Assistant 0.65.0 or later) + - Install python3 using the Synology Package Center - Create homeassistant user and add to the "users" group SSH onto your synology & login as admin or root @@ -51,16 +55,12 @@ Install PIP (Python's package management system) # ./python3 -m ensurepip ``` -Use PIP to install Homeassistant package +Use PIP to install Homeassistant package 0.64.3 ```bash -# ./python3 -m pip install homeassistant +# ./python3 -m pip install homeassistant==0.64.3 ``` -

-Until Synology offer an updated version of Python, Home Assistant 0.64 is the most recent version that will be able to be installed. You can manually specify the version of Home Assistant to install, for example to install version 0.64.3 you would do `./python3 -m pip install homeassistant==0.64.3` -

- Create homeassistant config directory & switch to it ```bash From fe1ce5a19b92443c621619e14e6853c6631380d1 Mon Sep 17 00:00:00 2001 From: bvansambeek <35294853+bvansambeek@users.noreply.github.com> Date: Thu, 12 Apr 2018 13:38:42 +0200 Subject: [PATCH 25/31] Tip to use external broker for more stability (#5159) An external broker is more stable, this is something I did not know as a beginner. Especially because the embedded broker has a memory leak. It would have saved me a bunch of time and WAF trust issues if I would have had this piece of knowledge. Issue on memory leak: https://github.com/home-assistant/home-assistant/issues/11594 --- source/_components/mqtt.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/mqtt.markdown b/source/_components/mqtt.markdown index c3f41493425..275cac866ed 100644 --- a/source/_components/mqtt.markdown +++ b/source/_components/mqtt.markdown @@ -33,6 +33,10 @@ mqtt: broker: IP_ADDRESS_BROKER ``` +

+The minimal setup uses the embedded MQTT broker, however a separate broker is advised for more stability. +

+ ## {% linkable_title Additional features %} - [Certificate](/docs/mqtt/certificate/) From ee8090a9e178c0cfea1a2ee73468a8ef49c7f070 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 12 Apr 2018 09:53:42 -0400 Subject: [PATCH 26/31] Add blog post about Ubiquiti --- ...04-12-ubiquiti-and-home-assistant.markdown | 37 ++++++++++++++++++ .../paulus.jpg | Bin 0 -> 73854 bytes 2 files changed, 37 insertions(+) create mode 100644 source/_posts/2018-04-12-ubiquiti-and-home-assistant.markdown create mode 100644 source/images/blog/2018-04-ubiquiti-and-home-assistant/paulus.jpg diff --git a/source/_posts/2018-04-12-ubiquiti-and-home-assistant.markdown b/source/_posts/2018-04-12-ubiquiti-and-home-assistant.markdown new file mode 100644 index 00000000000..045f30c196d --- /dev/null +++ b/source/_posts/2018-04-12-ubiquiti-and-home-assistant.markdown @@ -0,0 +1,37 @@ +--- +layout: post +title: "Home Assistant 🤝 Ubiquiti Networks" +description: "Ubiquiti Networks has hired Paulus Schoutsen, the founder of Home Assistant, to support Home Assistant’s goals of making Home Assistant easier to configure for users, improving the integration with device makers and making it easier to create, maintain and evolve integrations." +date: 2018-04-12 00:01:00 +date_formatted: "April 12, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Announcements +og_image: /images/blog/2018-04-ubiquiti-and-home-assistant/paulus.jpg +--- + +TL;DR: Ubiquiti Networks has hired Paulus Schoutsen, the founder of Home Assistant, to support Home Assistant’s goals of making Home Assistant easier to configure for users, improving the integration with device makers and making it easier to create, maintain and evolve integrations. + +Home Assistant is an open source project that thus far has been run by people in their spare time. In the last four and a half years it has grown from just me building a tiny framework with a handful of integrations to having our own operating system, over a 1000 integrations, superb performance, contributions by over 900 people, and our main Docker image has been pulled over 10 million times! + +Observing this growth and passionate community, Ubiquiti Networks approached us. + +Ubiquiti Networks currently focuses on 3 main technologies: high-capacity distributed Internet access, unified information technology, and next-gen consumer electronics for home and personal use. Their enterprise quality combined with their affordability has made them very popular among our users. They also share another passion of ours: trying to avoid clouds. Take for example their [UniFi Video] IP surveillance solution: it is a completely local hosted solution. + +They recognize great potential in Home Assistant becoming the defacto platform for the home: fast, open source and local. They also want to deepen the integration of Ubiquiti Networks products in Home Assistant and may even support hosting Home Assistant instances on their hardware. + +And so we have agreed that I (Paulus, founder Home Assistant) will join Ubiquiti Networks as a full time employee to focus on growing Home Assistant. I’ll now be able to devote my full energy to making Home Assistant easier to configure for users, improving the integration with device makers and making it easier to create, maintain and evolve integrations. + +Ubiquiti Networks will not acquire any ownership of Home Assistant. We will remain an independent and open source project, just improving faster than ever with the support of Ubiquiti Networks. + +I’m very excited about this opportunity and 2018 will be a really really great year for Home Assistant! + +

+ Photo of Paulus, the founder of Home Assistant, standing in front of a Ubiquiti Networks logo wearing a Home Assistant t-shirt. + Paulus Schoutsen, founder of Home Assistant, at the NYC Ubiquiti office. +

+ +[UniFi Video]: https://www.ubnt.com/unifi-video/unifi-video-camera-g3/#unifi-video-camera-hybrid-technology diff --git a/source/images/blog/2018-04-ubiquiti-and-home-assistant/paulus.jpg b/source/images/blog/2018-04-ubiquiti-and-home-assistant/paulus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a4e3d885f8c8cf7b70981ad5ec259f9f34d17a1 GIT binary patch literal 73854 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 Date: Thu, 12 Apr 2018 10:59:10 -0400 Subject: [PATCH 27/31] Updated spelling dedicate to dedicated Spelling mistake. --- source/_components/device_tracker.unifi.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.unifi.markdown b/source/_components/device_tracker.unifi.markdown index 5ef8d4edc78..e9410667707 100644 --- a/source/_components/device_tracker.unifi.markdown +++ b/source/_components/device_tracker.unifi.markdown @@ -80,7 +80,7 @@ The Unifi controller allows you to create multiple users on it besides the main The Unifi controller can either be a dedicated hardware device (Unifi's cloud key), or as software any Linux system. If you run the the Unifi controller on the same operating system as Home Assistant there may be conflicts in ports if you have the MQTT component as well. -It is recommended that you run the Unifi controller in a dedicate virtual machine to avoid that situation. +It is recommended that you run the Unifi controller in a dedicated virtual machine to avoid that situation. ### {% linkable_title Troubleshooting and Time Synchronization %} From e4c97ce3226c3d94a924daf5bf7677ddeeb272db Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 12 Apr 2018 17:01:11 +0200 Subject: [PATCH 28/31] Update addon_config.markdown --- source/developers/hassio/addon_config.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/hassio/addon_config.markdown b/source/developers/hassio/addon_config.markdown index 47dc50ce439..bc4870f8621 100644 --- a/source/developers/hassio/addon_config.markdown +++ b/source/developers/hassio/addon_config.markdown @@ -130,7 +130,7 @@ The config for an add-on is stored in `config.json`. | seccomp | bool | no | Enable or disable Seccomp support. If it is enable, you can also use custom profiles. | map | list | no | List of maps for additional Hass.io folders. Possible values: `config`, `ssl`, `addons`, `backup`, `share`. Defaults to `ro`, which you can change by adding `:rw` to the end of the name. | environment | dict | no | A dict of environment variable to run add-on. -| audio | bool | no | Boolean. Mark this add-on to use internal an audio system. The available environment variables are `ALSA_INPUT` and `ALSA_OUTPUT` which provide internal information to access alsa. +| audio | bool | no | Boolean. Mark this add-on to use internal an audio system. The ALSA configuration for this add-on will be mount automatic. | gpio | bool | no | Boolean. If this is set to True, `/sys/class/gpio` will map into add-on for access to GPIO interface from kernel. Some library need also `/dev/mem` and `SYS_RAWIO` for read/write access to this device. | stdin | bool | no | Boolean. If that is enable, you can use the STDIN with Hass.io API. | legacy | bool | no | Boolean. If the docker image have no hass.io labels, you can enable the legacy mode to use the config data. From 3876353d689cff79d1c81d8225272d5d23ade879 Mon Sep 17 00:00:00 2001 From: Matthew Rollings Date: Thu, 12 Apr 2018 17:07:56 +0100 Subject: [PATCH 29/31] Seconds should be milliseconds The documentation said seconds instead of milliseconds --- source/_components/vacuum.xiaomi_miio.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/vacuum.xiaomi_miio.markdown b/source/_components/vacuum.xiaomi_miio.markdown index 51fd5dd9c89..c8f9f7c8722 100644 --- a/source/_components/vacuum.xiaomi_miio.markdown +++ b/source/_components/vacuum.xiaomi_miio.markdown @@ -81,7 +81,7 @@ Remote control the robot. Please ensure you first set it in remote control mode | `entity_id` | yes | Only act on specific robot; default targets all | | `velocity` | no | Speed: between -0.29 and 0.29 | | `rotation` | no | Rotation: between -179 degrees and 179 degrees | -| `duration` | no | The number of seconds that the robot should move for | +| `duration` | no | The number of milliseconds that the robot should move for | ### {% linkable_title Service `vacuum.xiaomi_remote_control_move_step` %} @@ -92,7 +92,7 @@ Enter remote control mode, make one move, stop, and exit remote control mode. | `entity_id` | yes | Only act on specific robot; default targets all | | `velocity` | no | Speed: between -0.29 and 0.29. | | `rotation` | no | Rotation: between -179 degrees and 179 degrees. | -| `duration` | no | The number of seconds that the robot should move for | +| `duration` | no | The number of milliseconds that the robot should move for | ## {% linkable_title Attributes %} From b8870424cd425799e9c6c0a34754f982324cd2a0 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 12 Apr 2018 20:20:23 +0200 Subject: [PATCH 30/31] Update titles --- source/_components/vacuum.markdown | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/_components/vacuum.markdown b/source/_components/vacuum.markdown index 8ec0a442acd..c626a399347 100644 --- a/source/_components/vacuum.markdown +++ b/source/_components/vacuum.markdown @@ -27,7 +27,7 @@ Available services: `turn_on`, `turn_off`, `start_pause`, `stop`, `return_to_hom Before calling one of these services, make sure your botvac platform supports it. -#### {% linkable_title Service `vacuum/turn_on` %} +#### {% linkable_title Service `vacuum.turn_on` %} Start a new cleaning task. @@ -35,7 +35,7 @@ Start a new cleaning task. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on specific botvac. Else targets all. | -#### {% linkable_title Service `vacuum/turn_off` %} +#### {% linkable_title Service `vacuum.turn_off` %} Stop the current cleaning task and return to the dock. @@ -43,7 +43,7 @@ Stop the current cleaning task and return to the dock. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on specific botvac. Else targets all. | -#### {% linkable_title Service `vacuum/start_pause` %} +#### {% linkable_title Service `vacuum.start_pause` %} Start, pause or resume a cleaning task. @@ -51,7 +51,7 @@ Start, pause or resume a cleaning task. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on specific botvac. Else targets all. | -#### {% linkable_title Service `vacuum/stop` %} +#### {% linkable_title Service `vacuum.stop` %} Stop the current activity of the botvac. @@ -59,7 +59,7 @@ Stop the current activity of the botvac. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on specific botvac. Else targets all. | -#### {% linkable_title Service `vacuum/return_to_home` %} +#### {% linkable_title Service `vacuum.return_to_home` %} Tell the botvac to return home. @@ -67,7 +67,7 @@ Tell the botvac to return home. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on specific botvac. Else targets all. | -#### {% linkable_title Service `vacuum/locate` %} +#### {% linkable_title Service `vacuum.locate` %} Locate the vacuum cleaner robot. @@ -75,7 +75,7 @@ Locate the vacuum cleaner robot. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on specific botvac. Else targets all. | -#### {% linkable_title Service `vacuum/clean_spot` %} +#### {% linkable_title Service `vacuum.clean_spot` %} Tell the vacuum cleaner to do a spot clean-up. @@ -83,7 +83,7 @@ Tell the vacuum cleaner to do a spot clean-up. |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on specific botvac. Else targets all. | -#### {% linkable_title Service `vacuum/set_fanspeed` %} +#### {% linkable_title Service `vacuum.set_fanspeed` %} Set the fan speed of the botvac. The `fanspeed` can be a label, as `balanced` or `turbo`, or be a number; it depends on the `vacuum` platform. @@ -92,7 +92,7 @@ Set the fan speed of the botvac. The `fanspeed` can be a label, as `balanced` or | `entity_id` | yes | Only act on specific botvac. Else targets all. | | `fanspeed` | no | Platform dependent vacuum cleaner fan speed, with speed steps, like 'medium', or by percentage, between 0 and 100. | -#### {% linkable_title Service `vacuum/send_command` %} +#### {% linkable_title Service `vacuum.send_command` %} Send a platform-specific command to the vacuum cleaner. From c962dee84d80da22715abaf2e9367e7ab2ff5fe1 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Thu, 12 Apr 2018 21:06:56 +0100 Subject: [PATCH 31/31] Added further notes about dialout group (#5163) Added note about checking the account is in the dialout group, and how to add it if not Added note about the device path being an example --- source/_docs/z-wave/installation.markdown | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index b637ba981fa..b3fc38d817a 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -205,7 +205,7 @@ The first run after adding a device is when the `zwave` component will take time ### {% linkable_title Component could not be set up %} -Sometimes the device may not be accessible and you'll get an error message upon startup about not being able to set up Z-Wave. Run the following command for your device path: +Sometimes the device may not be accessible and you'll get an error message upon startup about not being able to set up Z-Wave. Run the following command for your device path (here we're using `/dev/ttyAMA0` for our Razberry board): ```bash $ ls -l /dev/ttyAMA0 @@ -224,6 +224,18 @@ $ sudo chgrp dialout /dev/ttyAMA0 $ sudo chmod g+rw /dev/ttyAMA0 ``` +Check too that the account you're running Home Assistant as is in the `dialout` group. For instance, if you're using `homeassistant`: + +```bash +$ groups homeassistant +``` + +That should include `dialout`, if it doesn't then: + +```bash +$ sudo usermod -G dialout homeassistant +``` + ### {% linkable_title Device path changes %} If your device path changes when you restart, see [this guide](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/) on fixing it.