From 9a5780476a58d1cf55bcc473f395280bf5bfef9d Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Sun, 2 Sep 2018 10:27:17 +0200 Subject: [PATCH 01/97] Clarify and make sure users add config entry. --- source/_docs/z-wave/installation.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 586f319a68a..b5c9796424b 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -44,6 +44,7 @@ On Raspberry Pi you will need to enable the serial interface in the `raspi-confi # Example configuration.yaml entry zwave: usb_path: /dev/ttyACM0 + device_config: !include zwave_device_config.yaml ``` {% configuration zwave %} @@ -78,7 +79,7 @@ debug: type: boolean default: False device_config / device_config_domain / device_config_glob: - description: This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format. + description: This attribute contains node-specific override values. NOTE: This needs to be specified if you are going to use any of the bellow options. See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format. required: false type: string, list keys: From d383a4ab128ee5ec5ce74e96a469600cb110a4df Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Wed, 5 Sep 2018 16:02:51 +0200 Subject: [PATCH 02/97] Update installation.markdown Sneaky little.... --- source/_docs/z-wave/installation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index b5c9796424b..578804d2daa 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -79,7 +79,7 @@ debug: type: boolean default: False device_config / device_config_domain / device_config_glob: - description: This attribute contains node-specific override values. NOTE: This needs to be specified if you are going to use any of the bellow options. See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format. + description: "This attribute contains node-specific override values. NOTE: This needs to be specified if you are going to use any of the bellow options. See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format." required: false type: string, list keys: From 995aeb83731df169d71584d71b5458aa16300b8b Mon Sep 17 00:00:00 2001 From: DubhAd Date: Fri, 7 Sep 2018 09:07:05 +0100 Subject: [PATCH 03/97] Word fix (#6208) The main page calls them services, here we call them features, causing confusion. --- source/_components/vacuum.neato.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/vacuum.neato.markdown b/source/_components/vacuum.neato.markdown index 51cf2cc1d81..544d60f62c3 100644 --- a/source/_components/vacuum.neato.markdown +++ b/source/_components/vacuum.neato.markdown @@ -19,7 +19,7 @@ The status will contain attributes on the robots last clean session. To add `neato` vacuum to your installation, please follow instructions in [Neato component](/components/neato/). -Currently supported features are: +Currently supported services are: - `start` - `pause` From 5b5c16f2f4b37bd3a810621fd72af59cbde6c495 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Fri, 7 Sep 2018 09:07:25 +0100 Subject: [PATCH 04/97] Word fix (#6209) The main page calls them services, here we call them features, causing confusion. --- source/_components/vacuum.xiaomi_miio.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/vacuum.xiaomi_miio.markdown b/source/_components/vacuum.xiaomi_miio.markdown index 5864b32bffb..cc93a36c8ab 100644 --- a/source/_components/vacuum.xiaomi_miio.markdown +++ b/source/_components/vacuum.xiaomi_miio.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Local Polling" The `xiaomi miio` vacuum platform allows you to control the state of your [Xiaomi Mi Robot Vacuum](http://www.mi.com/roomrobot/). -Currently supported features are: +Currently supported services are: - `start` - `pause` From 2bd35c0c12cbe6e09e73ea4975ec224aa4063931 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Fri, 7 Sep 2018 09:07:47 +0100 Subject: [PATCH 05/97] Clarity updates (#6210) Given that turn_on and off don't work on some, would be handy to mention that ;) --- source/_components/vacuum.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/vacuum.markdown b/source/_components/vacuum.markdown index 3df2abbca45..041edb7d661 100644 --- a/source/_components/vacuum.markdown +++ b/source/_components/vacuum.markdown @@ -29,7 +29,7 @@ Before calling one of these services, make sure your vacuum platform supports it #### {% linkable_title Service `vacuum.turn_on` %} -Start a new cleaning task. +Start a new cleaning task. For the Xiaomi Vacuum and neato use `vacuum.start` instead. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| @@ -37,7 +37,7 @@ Start a new cleaning task. #### {% linkable_title Service `vacuum.turn_off` %} -Stop the current cleaning task and return to the dock. +Stop the current cleaning task and return to the dock. For the Xiaomi Vacuum and neato use `vacuum.stop` instead. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| From 65e6d11a32610524be76428eb059749cc527a455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isabella=20Gross=20Alstr=C3=B6m?= Date: Fri, 7 Sep 2018 10:08:49 +0200 Subject: [PATCH 06/97] Update deconz.markdown (#6213) * Update deconz.markdown Added a helper app in appdaemon for deconz events * Update deconz.markdown changes in variables --- source/_components/deconz.markdown | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/source/_components/deconz.markdown b/source/_components/deconz.markdown index 211e683fe15..500efaa947c 100644 --- a/source/_components/deconz.markdown +++ b/source/_components/deconz.markdown @@ -173,6 +173,36 @@ automation: ### {% linkable_title Appdaemon %} +#### {% linkable_title Appdaemon event helper %} +Helper app that creates a sensor `sensor.deconz_event` with a state that represents the id from the last event and an attribute to show the event data. + +{% raw %} +```yaml +deconz_helper: + module: deconz_helper + class: DeconzHelper +``` + +```python +import appdaemon.plugins.hass.hassapi as hass +import datetime +from datetime import datetime + +class DeconzHelper(hass.Hass): + def initialize(self) -> None: + self.listen_event(self.event_received, "deconz_event") + + def event_received(self, event_name, data, kwargs): + event_data = data["event"] + event_id = data["id"] + event_received = datetime.now() + + self.log("Deconz event received from {}. Event was: {}".format(event_id, event_data)) + self.set_state("sensor.deconz_event", state = event_id, attributes = {"event_data": event_data, "event_received": str(event_received)}) +``` +{% endraw %} + + #### {% linkable_title Appdaemon remote template %} {% raw %} From 0a651bdfba4fef3029df2e4ef7947e205f20c296 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Sat, 8 Sep 2018 17:27:05 +0200 Subject: [PATCH 07/97] Update installation.markdown --- source/_docs/z-wave/installation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 578804d2daa..3af1f5dafc9 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -79,7 +79,7 @@ debug: type: boolean default: False device_config / device_config_domain / device_config_glob: - description: "This attribute contains node-specific override values. NOTE: This needs to be specified if you are going to use any of the bellow options. See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format." + description: "This attribute contains node-specific override values. NOTE: This needs to be specified if you are going to use any of the following options. See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format." required: false type: string, list keys: From 93d9267500ba3c6f5c89fdfee60d218d8a7a584f Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 9 Sep 2018 08:40:20 +0100 Subject: [PATCH 08/97] Adding some titles and details (#6228) Added: * titles to make it possible to link to sections * that you can only reload those sections if you're not using packages * information on how to migrate your config, and that key files and folders are hidden by default --- source/_docs/configuration.markdown | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown index 150eef1b46f..c863c66382e 100644 --- a/source/_docs/configuration.markdown +++ b/source/_docs/configuration.markdown @@ -2,14 +2,14 @@ layout: page title: "Configuring Home Assistant" description: "Configuring Home Assistant." -date: 2015-03-23 12:50 +date: 2018-09-18 16:15 sidebar: true comments: false sharing: true footer: true --- -When launched for the first time, Home Assistant will write a default configuration file enabling the web interface and device discovery. It can take up to a minute for your devices to be discovered and appear in the user interface. +When launched for the first time, Home Assistant will create a default configuration file enabling the web interface and device discovery. It can take up to a minute after startup for your devices to be discovered and appear in the user interface. The web interface can be found at `http://ip.ad.dre.ss:8123/` - for example if your Home Assistant system has the IP address `192.168.0.40` then you'll find the web interface as `http://192.168.0.40:8123/`. @@ -26,13 +26,18 @@ If you want to use a different folder for configuration, use the config command Inside your configuration folder is the file `configuration.yaml`. This is the main file that contains components to be loaded with their configurations. Throughout the documentation you will find snippets that you can add to your configuration file to enable functionality. -

- You will have to restart Home Assistant for most changes to `configuration.yaml` to take effect. You can load changes to [automations](/docs/automation/), [customize](/docs/configuration/customizing-devices/), [groups](/components/group/), and [scripts](/components/script/) without restarting. -

- If you run into trouble while configuring Home Assistant, have a look at the [configuration troubleshooting page](/getting-started/troubleshooting-configuration/) and at the [configuration.yaml examples](/cookbook/#example-configurationyaml).

Test any changes to your configuration files from the command line with `hass --script check_config`. This script allows you to test changes without the need to restart Home Assistant. Remember to run this as the user you run Home Assistant as.

+## {% linkable_title Reloading changes %} + +You will have to restart Home Assistant for most changes to `configuration.yaml` to take effect. You can load changes to [automations](/docs/automation/), [customize](/docs/configuration/customizing-devices/), [groups](/components/group/), and [scripts](/components/script/) without restarting if you're not using [packages](/docs/configuration/packages/). + +If you've made any changes, remember to check your configuration before trying to reload or restart. + +## {% linkable_title Migrating to a new system %} + +If you want to migrate your configuration to a new system then you can copy the contents of your configuration folder from the current system to the new system. Be aware that some of the files you need start with `.`, which is hidden by default from both `ls` (in SSH), in Windows Explorer, and macOS Finder. You'll need to ensure that you're viewing all files before you copy them. From 0462ddbb4a308a1436939b2056af0dc95129957a Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 9 Sep 2018 08:40:53 +0100 Subject: [PATCH 09/97] Adding WiFi note (#6227) Adding a note that modern smart phones may turn off their WiFi when idle, so this tracker may not be reliable when used by itself. --- source/_components/device_tracker.nmap_tracker.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/device_tracker.nmap_tracker.markdown b/source/_components/device_tracker.nmap_tracker.markdown index 74ace37e238..061ae8a153e 100644 --- a/source/_components/device_tracker.nmap_tracker.markdown +++ b/source/_components/device_tracker.nmap_tracker.markdown @@ -15,6 +15,10 @@ featured: false As an alternative to the router-based device tracking, it is possible to directly scan the network for devices by using Nmap. The IP addresses to scan can be specified in any format that Nmap understands, including the network-prefix notation (`192.168.1.1/24`) and the range notation (`192.168.1.1-255`). +

+ Please keep in mind that modern smart phones will usually turn off WiFi when they are idle. Simple trackers like this may not be reliable on their own. +

+ You might have to install the packages for `arp` and `nmap`. On Debian based hosts (for example Hassbian and Raspbian) do so by running `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`.

From 4cf0c7d1e443b7b0b431f53b1ec95a1cd95fbc1d Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 9 Sep 2018 08:41:17 +0100 Subject: [PATCH 10/97] Adding WiFi note (#6226) Adding a note that modern smart phones may turn off their WiFi when idle, so this tracker may not be reliable when used by itself. --- source/_components/device_tracker.ping.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/device_tracker.ping.markdown b/source/_components/device_tracker.ping.markdown index 04d2e764420..675150cb18c 100644 --- a/source/_components/device_tracker.ping.markdown +++ b/source/_components/device_tracker.ping.markdown @@ -15,6 +15,10 @@ ha_release: 0.36 The `ping` device tracker platform offers presence detection by using `ping` to send ICMP echo requests. This can be useful when devices are running a firewall and are blocking UDP or TCP packets but responding to ICMP requests (like Android phones). This tracker doesn't need to know the MAC address since the host can be on a different subnet. This makes this an option to detect hosts on a different subnet when `nmap` or other solutions don't work since `arp` doesn't work. +

+ Please keep in mind that modern smart phones will usually turn off WiFi when they are idle. Simple trackers like this may not be reliable on their own. +

+ ## {% linkable_title Configuration %} To use this presence detection in your installation, add the following to your `configuration.yaml` file: From e9705931cb0f85ca2995d5233893a4cefaf97025 Mon Sep 17 00:00:00 2001 From: Pteranodon Date: Sun, 9 Sep 2018 20:57:21 +1000 Subject: [PATCH 11/97] Alter monitored_conditions list (#6234) Add local_date_time and local_date_time_full to the monitored_conditions list. --- source/_components/sensor.bom.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/sensor.bom.markdown b/source/_components/sensor.bom.markdown index af149f35bf9..7774077d9cf 100644 --- a/source/_components/sensor.bom.markdown +++ b/source/_components/sensor.bom.markdown @@ -39,6 +39,8 @@ sensor: - gust_kt - air_temp - dewpt + - local_date_time + - local_date_time_full - press - press_qnh - press_msl From bb729c819f7abe3027565f622f01330bafd3739e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 9 Sep 2018 12:58:11 +0200 Subject: [PATCH 12/97] :pencil2: Fixes typo configuration.yml -> configuration.yaml (#6237) Fixes #6233 --- source/_components/konnected.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/konnected.markdown b/source/_components/konnected.markdown index 8a5f245af0e..16612ca4731 100644 --- a/source/_components/konnected.markdown +++ b/source/_components/konnected.markdown @@ -25,7 +25,7 @@ This component requires the [`discovery`](https://www.home-assistant.io/componen ## {% linkable_title Configuration %} -A `konnected` section must be present in the `configuration.yml` file that specifies the Konnected devices on the network and the sensors or actuators attached to them: +A `konnected` section must be present in the `configuration.yaml` file that specifies the Konnected devices on the network and the sensors or actuators attached to them: ```yaml # Example configuration.yaml entry From 6890775752cbbd0be6c6c4ed7b8669affdcebeba Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 9 Sep 2018 12:11:56 +0100 Subject: [PATCH 13/97] Added the list of supported domains (#6235) * Added the list of supported domains Given how often we have to direct people to the Google Assistant component for this list, seems overdue to add it here * Minor changes --- source/cloud/google_assistant.markdown | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source/cloud/google_assistant.markdown b/source/cloud/google_assistant.markdown index 7868c9387bb..65ea395fcca 100644 --- a/source/cloud/google_assistant.markdown +++ b/source/cloud/google_assistant.markdown @@ -97,6 +97,21 @@ google_actions: type: string {% endconfiguration %} +### {% linkable_title Available domains %} + +Currently, the following domains are available to be used with Google Assistant, listed with their default types: + +- `group` (on/off) +- `input_boolean` (on/off) +- `scene` (on) +- `script` (on) +- `switch` (on/off) +- `fan` (on/off) +- `light` (on/off/brightness/rgb color/color temp) +- `cover` (on/off/set position (via set brightness)) +- `media_player` (on/off/set volume (via set brightness)) +- `climate` (temperature setting) +

After setting up the cloud, if you make any device changes such as changing the name or adding a new device simply say "Ok Google, sync my devices" to get the changes to show up.

From 4349f7d8aa540eb48e7bd05ded204d62c2b954c6 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 9 Sep 2018 14:17:04 +0200 Subject: [PATCH 14/97] Fix file extension of configuration file (#6238) --- source/_components/binary_sensor.pilight.markdown | 2 +- source/_components/cover.aladdin_connect.markdown | 8 +++++--- source/_components/lock.mqtt.markdown | 6 ++++-- source/_components/sensor.pilight.markdown | 2 +- source/_components/sensor.radarr.markdown | 10 +++++----- source/_components/sensor.sonarr.markdown | 10 +++++----- 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/source/_components/binary_sensor.pilight.markdown b/source/_components/binary_sensor.pilight.markdown index b34cc955bfa..ef71c754602 100644 --- a/source/_components/binary_sensor.pilight.markdown +++ b/source/_components/binary_sensor.pilight.markdown @@ -39,7 +39,7 @@ Configuration variables: A full configuration example could look like this: ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry binary_sensor: - platform: pilight name: 'Motion' diff --git a/source/_components/cover.aladdin_connect.markdown b/source/_components/cover.aladdin_connect.markdown index ca3576dce58..f0f35c71027 100644 --- a/source/_components/cover.aladdin_connect.markdown +++ b/source/_components/cover.aladdin_connect.markdown @@ -19,14 +19,16 @@ The `aladdin_connect` cover platform lets you control Genie Aladdin Connect gara Only doors that are owned by your Aladdin Connect account will be available. Doors that your account has been granted shared access to are not yet supported.

+## {% linkable_title Configuration %} + To use your Aladdin Connect cover in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry cover: - platform: aladdin_connect - username: user@email.com - password: password + username: YOUR_USERNAME + password: YOUR_PASSWORD ``` {% configuration %} diff --git a/source/_components/lock.mqtt.markdown b/source/_components/lock.mqtt.markdown index ff8eb051702..a1689fbd199 100644 --- a/source/_components/lock.mqtt.markdown +++ b/source/_components/lock.mqtt.markdown @@ -101,8 +101,9 @@ In this section you will find some real life examples of how to use this lock. The example below shows a full configuration for a MQTT lock. +{% raw %} ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry lock: - platform: mqtt name: Frontdoor @@ -113,8 +114,9 @@ lock: optimistic: false qos: 1 retain: true - value_template: '{% raw %}{{ value.x }}{% endraw %}' + value_template: '{{ value.x }}' ``` +{% endraw %} Keep an eye on retaining messages to keep the state as you don't want to unlock your door by accident when you restart something. diff --git a/source/_components/sensor.pilight.markdown b/source/_components/sensor.pilight.markdown index a78f5a1d391..78e5b61abf4 100644 --- a/source/_components/sensor.pilight.markdown +++ b/source/_components/sensor.pilight.markdown @@ -42,7 +42,7 @@ This section shows a real life example how to use values of a weather station. ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: pilight name: 'Temperature' diff --git a/source/_components/sensor.radarr.markdown b/source/_components/sensor.radarr.markdown index 8795896f9e7..0ec88883e51 100644 --- a/source/_components/sensor.radarr.markdown +++ b/source/_components/sensor.radarr.markdown @@ -50,7 +50,7 @@ In this section you find some real life examples of how to use this sensor. ### {% linkable_title Get Episodes airing in next 2 days %} ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: radarr api_key: YOUR_API_KEY @@ -65,7 +65,7 @@ sensor: SSL may run on a different port than the default (7878). The SSL port can be bound to any port in Radarr, so it should be set in the config here (unless it is changed to 7878). ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: radarr api_key: YOUR_API_KEY @@ -80,7 +80,7 @@ sensor: ### {% linkable_title Get disk space for all storage locations %} ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: radarr api_key: YOUR_API_KEY @@ -94,7 +94,7 @@ sensor: The storage locations Radarr returns are in the system page and in some cases this can list duplicates if sub paths are mounted separately. By listing paths to include, you can choose what data is reported by the sensor. ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: radarr api_key: YOUR_API_KEY @@ -112,7 +112,7 @@ The Radarr API returns available space in bytes, but this sensor will default to *This calculation is done using base 2 math, and may differ from systems calculating using base 10 math.* ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: radarr api_key: YOUR_API_KEY diff --git a/source/_components/sensor.sonarr.markdown b/source/_components/sensor.sonarr.markdown index 93b070adcee..837dde42b1d 100644 --- a/source/_components/sensor.sonarr.markdown +++ b/source/_components/sensor.sonarr.markdown @@ -53,7 +53,7 @@ In this section you find some real life examples of how to use this sensor. ### {% linkable_title Get Episodes airing in next 2 days %} ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: sonarr api_key: YOUR_API_KEY @@ -68,7 +68,7 @@ sensor: SSL may run on a different port than the default (8989). The SSL port can be bound to any port in Sonarr, so it should be set in the config here (unless it is changed to 8989). See the [Sonarr site](https://github.com/Sonarr/Sonarr/wiki/SSL) for details on SSL in Sonarr. ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: sonarr api_key: YOUR_API_KEY @@ -83,7 +83,7 @@ sensor: ### {% linkable_title Get disk space for all storage locations %} ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: sonarr api_key: YOUR_API_KEY @@ -97,7 +97,7 @@ sensor: The storage locations Sonarr returns are in the system page and in some cases this can list duplicates if sub paths are mounted separately. By listing paths to include, you can choose what data is reported by the sensor. ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: sonarr api_key: YOUR_API_KEY @@ -115,7 +115,7 @@ The Sonarr API returns available space in bytes, but this sensor will default to *This calculation is done using base 2 math, and may differ from systems calculating using base 10 math.* ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry sensor: - platform: sonarr api_key: YOUR_API_KEY From 6d57a5bddc5377afb3bc7f10641000a143534820 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 9 Sep 2018 15:54:41 +0100 Subject: [PATCH 15/97] Adding link to auth docs (#6217) Adding a link to the auth documentation --- source/_components/auth.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/auth.markdown b/source/_components/auth.markdown index 96d0ab055a2..cc7ec923920 100644 --- a/source/_components/auth.markdown +++ b/source/_components/auth.markdown @@ -12,4 +12,4 @@ ha_category: Other ha_release: 0.73 --- -This component creates the endpoints for the authentication system that is built into Home Assistant. There are no configuration options for this component directly as it relies on the auth system in the core. +This component creates the endpoints for the [authentication system](/docs/authentication/) that is built into Home Assistant. There are no configuration options for this component directly as it relies on the auth system in the core. From 50e6a8bdce91d20488080919b4129cd19a0d6113 Mon Sep 17 00:00:00 2001 From: Andrew Riley Date: Sun, 9 Sep 2018 12:40:15 -0400 Subject: [PATCH 16/97] correct typo (hassbian-sctipts -> hassbian-scripts) (#6241) --- source/_docs/installation/hassbian/customization.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/installation/hassbian/customization.markdown b/source/_docs/installation/hassbian/customization.markdown index e1c968a0c41..cb52818895b 100644 --- a/source/_docs/installation/hassbian/customization.markdown +++ b/source/_docs/installation/hassbian/customization.markdown @@ -35,7 +35,7 @@ These are some of the available suites: - [AppDaemon](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/appdaemon.md) - [Hassbian](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/hassbian.md) - [Home Assistant](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/homeassistant.md) -- [hassbian-config (hassbian-sctipts)](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/hassbian_config.md) +- [hassbian-config (hassbian-scripts)](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/hassbian_config.md) To upgrade any of them simply run `sudo hassbian-config upgrade SUITE`. From b8cd90cfb0bcaf2d8367dbdf28bf80423fef4c40 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Mon, 10 Sep 2018 08:20:42 +0100 Subject: [PATCH 17/97] Update for ad blocking (#6243) Added a note about some ad blockers blocking web sockets --- source/_docs/authentication.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown index 7bae172053b..6838a31a622 100644 --- a/source/_docs/authentication.markdown +++ b/source/_docs/authentication.markdown @@ -49,3 +49,7 @@ While you should hopefully be storing your passwords in a password manager, if y * `onboarding` When you start Home Assistant next you'll be required to set up authentication again. + +### {% linkable_title Stuck on Loading data %} + +Some advert blocking software, such as Wipr, also blocks web sockets. If you're stuck on the Loading data screen, try disabling your ad blocker. From c2dc96cc9d39b7db644ec2f15bd850c37f291e37 Mon Sep 17 00:00:00 2001 From: Delper Date: Mon, 10 Sep 2018 00:31:08 -0700 Subject: [PATCH 18/97] Change IOT Class to Local Polling (#6247) I browsed through the code and I don't think this component is reaching out beyond the local network to talk to the Rainmachine device. --- source/_components/rainmachine.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/rainmachine.markdown b/source/_components/rainmachine.markdown index 7bb254ef5d3..61ebb649104 100644 --- a/source/_components/rainmachine.markdown +++ b/source/_components/rainmachine.markdown @@ -10,7 +10,7 @@ footer: true logo: rainmachine.png ha_category: Irrigation ha_release: 0.69 -ha_iot_class: "Cloud Polling" +ha_iot_class: "Local Polling" --- The `rainmachine` component is the main component to integrate all platforms From 33479340b049c2ec5dd39f927ac61d2185a6c827 Mon Sep 17 00:00:00 2001 From: cswinford Date: Mon, 10 Sep 2018 03:36:17 -0400 Subject: [PATCH 19/97] Remove .gz from URI for HASSOS OVA. (#6248) The current URL of https://github.com/home-assistant/hassos/releases/download/1.10/hassos_ova-1.10.vmdk.gz results in a 404. The correct URL is https://github.com/home-assistant/hassos/releases/download/1.10/hassos_ova-1.10.vmdk . --- source/hassio/installation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index 1b17327d575..2c4db4c8e76 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -84,7 +84,7 @@ A detailed guide about running Hass.io as a virtual machine is available in the [pi3-64]: https://github.com/home-assistant/hassos/releases/download/1.10/hassos_rpi3-64-1.10.img.gz [tinker]: https://github.com/home-assistant/hassos/releases/download/2.2/hassos_tinker-2.2.img.gz [odroid-c2]: https://github.com/home-assistant/hassos/releases/download/2.2/hassos_odroid-c2-2.2.img.gz -[vmdk]: https://github.com/home-assistant/hassos/releases/download/1.10/hassos_ova-1.10.vmdk.gz +[vmdk]: https://github.com/home-assistant/hassos/releases/download/1.10/hassos_ova-1.10.vmdk [linux]: https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio [local]: http://hassio.local:8123 [samba]: /addons/samba/ From 823ca82b3a4aa95612857eee42bf75ad6843ef2d Mon Sep 17 00:00:00 2001 From: DubhAd Date: Mon, 10 Sep 2018 08:37:57 +0100 Subject: [PATCH 20/97] Fixing formatting (#6242) * Fixing formatting The formatting is lost in the note block, making it a mess. Breaking it out into its own section to retain formatting. * :pencil2: Spelling and grammar --- source/_components/recorder.markdown | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index 8c8b5a4cbc0..eb859687fdd 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -18,7 +18,7 @@ Home Assistant uses [SQLAlchemy](http://www.sqlalchemy.org/) as Object Relationa The default database engine is [SQLite](https://www.sqlite.org/) which doesn't require any configuration. The database is stored in your Home Assistant configuration directory (`.homeassistant`) and called `home-assistant_v2.db`. -To setup the `recorder` component in your installation, add the following to your `configuration.yaml` file: +To set up the `recorder` component in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -73,7 +73,7 @@ recorder: type: List {% endconfiguration %} -Define domains and entities to `exclude` (aka. blacklist). This is convenient when you are basically happy with the information recorded, but just want to remove some entities or domains. Usually these are entities/domains which do not change (like `weblink`) or rarely change (`updater` or `automation`). +Define domains and entities to `exclude` (aka. blacklist). This is convenient when you are basically happy with the information recorded, but just want to remove some entities or domains. Usually, these are entities/domains which do not change (like `weblink`) or rarely change (`updater` or `automation`). ```yaml # Example configuration.yaml entry with exclude @@ -103,7 +103,7 @@ recorder: - media_player ``` -Use the `include` list to define the domains/entities to record, and exclude some of them with in the `exclude` list. This makes sense if you for instance include the `sensor` domain, but want to exclude some specific sensors. Instead of adding every sensor entity to the `include` `entities` list just include the `sensor` domain and exclude the sensor entities you are not interested in. +Use the `include` list to define the domains/entities to record, and exclude some of them within the `exclude` list. This makes sense if you, for instance, include the `sensor` domain, but want to exclude some specific sensors. Instead of adding every sensor entity to the `include` `entities` list just include the `sensor` domain and exclude the sensor entities you are not interested in. ```yaml # Example configuration.yaml entry with include and exclude @@ -119,7 +119,7 @@ recorder: - sensor.date ``` -If you only want to hide events from e.g., your history, take a look at the [`history` component](/components/history/). Same goes for logbook. But if you have privacy concerns about certain events or neither want them in history or logbook, you should use the `exclude`/`include` options of the `recorder` component, that way they aren't even in your database. That way you can save storage and keep the database small by excluding certain often-logged events (like `sensor.last_boot`). +If you only want to hide events from e.g., your history, take a look at the [`history` component](/components/history/). Same goes for the logbook. But if you have privacy concerns about certain events or neither want them in history or logbook, you should use the `exclude`/`include` options of the `recorder` component, that way they aren't even in your database. That way you can save storage and keep the database small by excluding certain often-logged events (like `sensor.last_boot`). ### {% linkable_title Service `purge` %} @@ -158,14 +158,17 @@ If the `recorder` component is activated then some components support `restore_s

If you use MariaDB 10 you need to add port 3307 to the SERVER_IP, e.g., `mysql://user:password@SERVER_IP:3307/DB_NAME?charset=utf8`. +

-+If you are running a database server instance on the same server as Home Assistant then you must ensure that this service starts before Home Assistant. For a Linux instance running Systemd (Raspberry Pi, Debian, Ubuntu and others) then you should edit the service file. +### {% linkable_title Database startup %} + +If you are running a database server instance on the same server as Home Assistant then you must ensure that this service starts before Home Assistant. For a Linux instance running Systemd (Raspberry Pi, Debian, Ubuntu and others) then you should edit the service file. ```bash $ sudo nano /etc/systemd/system/home-assistant@homeassistant.service ``` -and add the service for PostgreSQL: +and add the service for the database, for example, PostgreSQL: ``` [Unit] @@ -178,7 +181,6 @@ Save the file then reload `systemctl`: ```bash $ sudo systemctl daemon-reload ``` -

## {% linkable_title Installation notes %} @@ -212,7 +214,7 @@ $ pip3 install mysqlclient After installing the dependencies, it is required to create the database manually. During the startup, Home Assistant will look for the database specified in the `db_url`. If the database doesn't exist, it will not automatically create it for you. -Once Home Assistant finds the database, with right level of permissions, all the required tables will then be automatically created and the data will be populated accordingly. +Once Home Assistant finds the database, with the right level of permissions, all the required tables will then be automatically created and the data will be populated accordingly. ### {% linkable_title PostgreSQL %} From c5428d979831d6389bb84aa51bb107b81f90ef83 Mon Sep 17 00:00:00 2001 From: R Huish <5207490+genestealer@users.noreply.github.com> Date: Mon, 10 Sep 2018 10:02:46 +0100 Subject: [PATCH 21/97] Updated setup steps and added testing steps notify.html5.markdown (#6240) * Update notify.html5.markdown Added more detail to navigating to the enable slider * Update notify.html5.markdown Added testing steps and expanded setup steps --- source/_components/notify.html5.markdown | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown index 57e6ce10e38..1578015218b 100644 --- a/source/_components/notify.html5.markdown +++ b/source/_components/notify.html5.markdown @@ -72,13 +72,24 @@ The `html5` platform can only function if all of the following requirements are Assuming you have already added the platform to your configuration: 1. Open Home Assistant in Chrome or Firefox. -2. Assuming you have met all the [requirements](#requirements) above, you should see a new slider for Push Notifications through the profile page Profile > Push notifications. +2. Load profile page by clicking on the badge next to the Home Assistant title in the sidebar. Assuming you have met all the [requirements](#requirements) above then you should see a new slider for Push Notifications. If the slider is greyed out, ensure you are viewing Home Assistant via its external HTTPS address. If the slider is not visible, ensure you are not in the user configuration (Sidebar, Configuration, Users, View User). 3. Slide it to the on position. 4. Within a few seconds you should be prompted to allow notifications from Home Assistant. 5. Assuming you accept, that's all there is to it! 6. (Optional, but highly recommended!) Open the `html5_push_registrations.conf` file in your configuration directory. You will see a new entry for the browser you just added. Rename it from `unnamed device` to a name of your choice, which will make it easier to identify later. _Do not change anything else in this file!_ You need to restart Home Assistant after making any changes to the file. +### {% linkable_title Testing %} + +Assuming the previous test completed successfully and your browser was registered, you can test the notification as follows: + +1. Open Home Assistant in Chrome or Firefox. +2. Open the sidebar and click the Services button at the bottom (shaped like a remote control), located below the Developer Tools. +3. From the Services dropdown, search for your HTML5 notify service (E.G. notify.NOTIFIER_NAME) and select it. +4. In the Service Data text box enter: {"message":"hello world"}, then press the CALL SERVICE button. +5. If everything worked you should see a popup notification. + + ### {% linkable_title Usage %} The `html5` platform accepts a standard notify payload. However, there are also some special features built in which you can control in the payload. From a79926f24be60a7d138807eb49e94dea85f08ef8 Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Mon, 10 Sep 2018 03:14:18 -0700 Subject: [PATCH 22/97] Add troubleshooting for invalid client id error (#6244) * Add troubleshooting for invalid client id error * Update authentication.markdown * Add a note to remote document * :pencil2: Spelling and grammar tweaks --- source/_docs/authentication.markdown | 18 ++++++++++++++++++ source/_docs/configuration/remote.markdown | 4 ++++ .../error-invalid-client-id.png | Bin 0 -> 15590 bytes 3 files changed, 22 insertions(+) create mode 100644 source/images/docs/authentication/error-invalid-client-id.png diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown index 6838a31a622..1d55d6b38f3 100644 --- a/source/_docs/authentication.markdown +++ b/source/_docs/authentication.markdown @@ -50,6 +50,24 @@ While you should hopefully be storing your passwords in a password manager, if y When you start Home Assistant next you'll be required to set up authentication again. +### {% linkable_title Error: invalid client id or redirect url%} + +Screenshot of Error: invalid client id or redirect url + +You have to use a domain name, not IP address to remote access Home Assistant; otherwise you will get **Error: invalid client id or redirect url** error on the login form. However, you can use the IP address to access Home Assistant in your home network. + +It because we only allow using IP address as client ID when your IP address is one of internal network address (e.g., 192.168.0.1) or loopback address (e.g., 127.0.0.1). + +If you don't have a valid domain name for your Home Assistant instance, you can modify the `hosts` file on your computer to fake one. For example, if you are on Windows, edit `C:\Windows\System32\Drivers\etc\hosts` file with administrator privilege, add following entry. + +```text +12.34.56.78 hassbian.home +``` + +(Please replace `12.34.56.78` with your Home Assistant's public IP address) + +It will allow you to open Home Assistant instance by access `http://hassbian.home:8123/` + ### {% linkable_title Stuck on Loading data %} Some advert blocking software, such as Wipr, also blocks web sockets. If you're stuck on the Loading data screen, try disabling your ad blocker. diff --git a/source/_docs/configuration/remote.markdown b/source/_docs/configuration/remote.markdown index f0d981b116e..00f9e276b35 100644 --- a/source/_docs/configuration/remote.markdown +++ b/source/_docs/configuration/remote.markdown @@ -15,6 +15,10 @@ If you're interested in logging in to Home Assistant while away, you'll have to Remember to follow the [securing checklist](/docs/configuration/securing/) before doing this.

+

+Home Assistant no longer support remote access via IP address since release 0.77, you have to use domain name. +

+ The most common approach is to set up port forwarding (for any port) from your router to port 8123 on the computer that is hosting Home Assistant. General instructions on how to do this can be found by searching ` port forwarding instructions`. You can use any free port on your router and forward that to port 8123. A problem with making a port accessible is that some Internet Service Providers only offer dynamic IPs. This can cause you to lose access to Home Assistant while away. You can solve this by using a free Dynamic DNS service like [DuckDNS](https://www.duckdns.org/). diff --git a/source/images/docs/authentication/error-invalid-client-id.png b/source/images/docs/authentication/error-invalid-client-id.png new file mode 100644 index 0000000000000000000000000000000000000000..9f543b92395385ea08cdcf087bc3ff5f7246c1fb GIT binary patch literal 15590 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 literal 0 HcmV?d00001 From 86b8efda92be307e07cf4e83dfc7393d060a09b5 Mon Sep 17 00:00:00 2001 From: txNgineer Date: Mon, 10 Sep 2018 05:30:10 -0500 Subject: [PATCH 23/97] Update sensor.wunderground.markdown (#6223) --- source/_components/sensor.wunderground.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/sensor.wunderground.markdown b/source/_components/sensor.wunderground.markdown index d82062c5ffa..0ce56092b59 100644 --- a/source/_components/sensor.wunderground.markdown +++ b/source/_components/sensor.wunderground.markdown @@ -16,7 +16,9 @@ ha_iot_class: "Cloud Polling" The `wunderground` platform uses [Weather Underground](http://www.wunderground.com) as a source for current weather information.

-Obtain a WUnderground API key [here](https://www.wunderground.com/weather/api). They no longer offer free API keys, and all keys must be paid for, at this time existing free keys will continue to work, but may be disabled in the future. +Obtain a WUnderground API key [here](https://www.wunderground.com/weather/api). They no longer offer free API keys, and all keys must be paid for. At this time existing free keys will continue to work, but will be disabled Dec 31, 2018. As of Sept 6, 2018 Weather Underground states they are declaring the [End of Service for the Weather Underground API](https://apicommunity.wunderground.com/weatherapi/topics/end-of-service-for-the-weather-underground-api). They say they will develop new plans for non-commercial users. No timeline for this has been announced. + +Please consider this when using the following information.

To add Wunderground to your installation, add the following to your `configuration.yaml` file: From 8e7887bfed43cd3a64832ed5ec7073f6df48ff55 Mon Sep 17 00:00:00 2001 From: Flip Hess Date: Mon, 10 Sep 2018 12:36:26 +0200 Subject: [PATCH 24/97] Add verify_ssl option to generic camera docs (#6005) * Add verify_ssl option to generic camera docs * :pencil2: Typo --- source/_components/camera.generic.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/camera.generic.markdown b/source/_components/camera.generic.markdown index b9bf15bf46a..e8c457086f5 100644 --- a/source/_components/camera.generic.markdown +++ b/source/_components/camera.generic.markdown @@ -37,6 +37,7 @@ Configuration variables: - **limit_refetch_to_url_change** (*Optional*): True/false value (default: false). Limits re-fetching of the remote image to when the URL changes. Only relevant if using a template to fetch the remote image. - **content_type** (*Optional*): Set the content type for the IP camera if it is not a jpg file (default: `image/jpeg`). Use `image/svg+xml` to add a dynamic svg file. - **framerate** (*Optional*): The number of frames-per-second (FPS) of the stream (setting this too high may cause too much traffic on the network or be heavy on the camera). +- **verify_ssl** (*Optional*): True/false value (default: true). Enable or disable SSL certificate verification.

@@ -68,6 +69,7 @@ camera: - platform: generic name: Some Image still_image_url: https://127.0.0.1:8123/local/your_image.png + verify_ssl: false ``` ### {% linkable_title Sharing a camera feed from one Home Assistant instance to another %} From 57f631f0f88ddc111c3e9cf7affec759e0335223 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Mon, 10 Sep 2018 11:40:31 +0100 Subject: [PATCH 25/97] Note about bearer tokens (#6215) * Note about bearer tokens Given that there's zero documentation about those warnings, and it comes up many times a day, time to document *something* about them. * Update * :pencil2: Tweaks * :pencil2: Formatting tweak --- source/_docs/authentication.markdown | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown index 1d55d6b38f3..503725a5f7a 100644 --- a/source/_docs/authentication.markdown +++ b/source/_docs/authentication.markdown @@ -40,6 +40,24 @@ As a user, you can setup multi-factor authentication with time-based one-time pa ## {% linkable_title Troubleshooting %} +### {% linkable_title Bearer token warnings %} + +Under the new authentication system you'll see the following warning logged when the [legacy API password](/docs/authentication/providers/#legacy-api-password) is supplied, but not configured in Home Assistant: + +```txt +WARNING (MainThread) [homeassistant.components.http.auth] You need to use a bearer token to access /blah/blah from 192.0.2.4 +``` + +If you see this, you need to add an [`api_password`](/components/http/#api_password) to your `http:` configuration. + +### {% linkable_title Bearer token informational messages %} + +If instead, you see the following, then this is a message for component developers, to tell them that they need to update how they authenticate to Home Assistant. As an end user you don't need to do anything: + +```txt +INFO (MainThread) [homeassistant.components.http.auth] You need to use a bearer token to access /blah/blah from 192.0.2.4 +``` + ### {% linkable_title Lost owner password %} While you should hopefully be storing your passwords in a password manager, if you lose the password associated with the owner account the only way to resolve this is to delete *all* the authentication data. You do this by shutting down Home Assistant and deleting the following files from the `.storage/` folder in your [configuration folder](https://www.home-assistant.io/docs/configuration/): From bfcd5267981ca7db1a76c9ceebb0ba226103364d Mon Sep 17 00:00:00 2001 From: Alexxander0 <26937883+Alexxander0@users.noreply.github.com> Date: Mon, 10 Sep 2018 13:03:30 +0200 Subject: [PATCH 26/97] Component media_player.spotify doenst support sonos device (#6204) * Update media_player.spotify.markdown spotify media player doenst support sonos * :pencil2: Spelling/Grammar tweaks --- source/_components/media_player.spotify.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_components/media_player.spotify.markdown b/source/_components/media_player.spotify.markdown index 8de7240135f..0f2c27f5d05 100644 --- a/source/_components/media_player.spotify.markdown +++ b/source/_components/media_player.spotify.markdown @@ -75,3 +75,6 @@ You can send playlists to spotify via the "media_content_type": "playlist" and " In this example this is a URI link to the Reggae Infusions playlist, [this support document from Spotify](https://support.spotify.com/us/using_spotify/share_music/why-do-you-have-two-different-link-formats/) explains how to get this URI value to use for playlists in the Spotify component. +## {% linkable_title Unsupported devices %} + +- **Sonos**: Although its a Spotify Connect device, it is not supported by the official Spotify API. From 0600c2cabddf4b9b3c9244822dd568484c8d4bfd Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 10 Sep 2018 13:57:31 +0200 Subject: [PATCH 27/97] Add draft blog post --- _config.yml | 4 +- source/_posts/2018-09-15-release-78.markdown | 393 +++++++++++++++++++ 2 files changed, 395 insertions(+), 2 deletions(-) create mode 100644 source/_posts/2018-09-15-release-78.markdown diff --git a/_config.yml b/_config.yml index 60823e3e2d0..59c65eb54bb 100644 --- a/_config.yml +++ b/_config.yml @@ -141,9 +141,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 77 +current_minor_version: 78 current_patch_version: 0 -date_released: 2018-08-29 +date_released: 2018-09-15 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2018-09-15-release-78.markdown b/source/_posts/2018-09-15-release-78.markdown new file mode 100644 index 00000000000..b595c05b9a8 --- /dev/null +++ b/source/_posts/2018-09-15-release-78.markdown @@ -0,0 +1,393 @@ +--- +layout: post +title: "0.78: XXX - Update date" +description: "XXX" +date: 2018-09-10 00:01:00 +date_formatted: "September 15, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2018-09-0.78/social.png +--- + + + +## {% linkable_title New Platforms %} + +- Add temperature sensors to the velbus component ([@Cereal2nd] - [#16203]) ([velbus docs]) ([sensor.velbus docs]) (new-platform) +- Add Volkszaehler sensor ([@fabaff] - [#16188]) ([sensor.volkszaehler docs]) (new-platform) +- Switchmate ([@Danielhiversen] - [#15535]) ([switch.switchmate docs]) (new-platform) +- Add support for Habitica ([@ASMfreaK] - [#15744]) ([habitica docs]) ([sensor.habitica docs]) (new-platform) +- Geo Location component ([@exxamalte] - [#15953]) ([feedreader docs]) ([geo_location docs]) (new-platform) +- Add Cover to the Insteon component ([@teharris1] - [#16215]) ([insteon docs]) ([cover.insteon docs]) (new-platform) +- switchbot ([@Danielhiversen] - [#16396]) ([switch.switchbot docs]) (new-platform) +- Add Yale Smart Alarm component ([@domwillcode] - [#16377]) ([alarm_control_panel.yale_smart_alarm docs]) (new-platform) +- Add OpenTherm Gateway climate platform ([@mvn23] - [#16299]) ([climate.opentherm_gw docs]) (new-platform) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Rewrite of Trafikverket weather - Multiple sensor types supported ([@endor-force] - [#15935]) ([sensor.trafikverket_weatherstation docs]) (breaking change) +- Fix geizhals price parsing ([@JulianKahnert] - [#15990]) ([sensor.geizhals docs]) (breaking change) +- Update to EnvoyReader 0.2, support for more hardware ([@jesserizzo] - [#16212]) ([sensor.enphase_envoy docs]) (breaking change) +- Fix Mi Flora median calculation ([@PaulAnnekov] - [#16085]) ([sensor.miflora docs]) (breaking change) +- Added Twitch v5 support to the twitch platform ([@ioangogo] - [#16428]) ([sensor.twitch docs]) (breaking change) +- Update radiotherm ([@cpw] - [#15031]) ([climate.radiotherm docs]) (breaking change) + +## {% linkable_title All changes %} + +- Add 'moon_phase' to Dark Sky sensor ([@fabaff] - [#16179]) ([sensor.darksky docs]) +- Zoneminder SSL fix ([@djm300] - [#16157]) ([zoneminder docs]) +- update python-velbus library version ([@thomasdelaet] - [#16194]) ([velbus docs]) +- MQTT: Log transmitted as well as received messages ([@smurfix] - [#16195]) ([mqtt docs]) +- Upgrade sqlalchemy to 1.2.11 ([@fabaff] - [#16192]) ([sensor.sql docs]) +- Add battery warning, rssi level and check for availability ([@fucm] - [#16193]) ([sensor.tahoma docs]) +- Inconsistent entity_id when multiple sensors ([@grea09] - [#16205]) ([sensor.dnsip docs]) +- Add temperature sensors to the velbus component ([@Cereal2nd] - [#16203]) ([velbus docs]) ([sensor.velbus docs]) (new-platform) +- Rewrite of Trafikverket weather - Multiple sensor types supported ([@endor-force] - [#15935]) ([sensor.trafikverket_weatherstation docs]) (breaking change) +- Add device_tracker.bluetooth_update service ([@kariudo] - [#15252]) ([device_tracker docs]) +- Fix geizhals price parsing ([@JulianKahnert] - [#15990]) ([sensor.geizhals docs]) (breaking change) +- Add Volkszaehler sensor ([@fabaff] - [#16188]) ([sensor.volkszaehler docs]) (new-platform) +- openalpr flag `WITH_TEST` should be `WITH_TESTS` ([@vrih] - [#16218]) +- Upgrade alpha_vantage to 2.1.0 ([@fabaff] - [#16217]) ([sensor.alpha_vantage docs]) +- Store devices as dict instead of list ([@Kane610] - [#16229]) +- Improve package loadable ([@balloob] - [#16237]) +- Switchmate ([@Danielhiversen] - [#15535]) ([switch.switchmate docs]) (new-platform) +- Add support for discrete states to MyQ cover ([@schmittx] - [#16251]) ([cover.myq docs]) +- bump version ([@dgomes] - [#16262]) ([upnp docs]) +- Replace Authorization by Authentication ([@cgtobi] - [#16259]) ([hangouts docs]) +- Add device info to Chromecast ([@balloob] - [#16261]) ([media_player.cast docs]) +- Add device info for sonos ([@balloob] - [#16263]) ([media_player.sonos docs]) +- Add device info Nest ([@balloob] - [#16265]) ([climate.nest docs]) +- Add Hue device info ([@balloob] - [#16267]) ([hue docs]) ([light.hue docs]) +- Nest Thermostat has software version ([@awarecan] - [#16275]) ([climate.nest docs]) +- Add support for Habitica ([@ASMfreaK] - [#15744]) ([habitica docs]) ([sensor.habitica docs]) (new-platform) +- Fix so that entities are properly unloaded with config entry ([@Kane610] - [#16281]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([scene.deconz docs]) ([sensor.deconz docs]) ([switch.deconz docs]) +- Geo Location component ([@exxamalte] - [#15953]) ([feedreader docs]) ([geo_location docs]) (new-platform) +- Bump songpal dependency ([@rytilahti] - [#16297]) ([media_player.songpal docs]) +- Use asterisk_mbox 0.5.0 client ([@PhracturedBlue] - [#16296]) ([asterisk_mbox docs]) +- Upgrade Adafruit-DHT to 1.3.4 ([@thomaslian] - [#16327]) ([sensor.dht docs]) +- Add unique ID ([@schmittx] - [#16323]) ([cover.myq docs]) +- Add Cover to the Insteon component ([@teharris1] - [#16215]) ([insteon docs]) ([cover.insteon docs]) (new-platform) +- Fix missing humidity sensor ([@danielperna84] - [#16337]) ([homematic docs]) +- Support Sonos Beam HDMI input ([@phil65] - [#16340]) ([media_player.sonos docs]) +- Make last_seen attribute a timezone aware datetime in UTC ([@pnbruckner] - [#16348]) ([device_tracker docs]) +- Handle netatmo exception ([@Danielhiversen] - [#16344]) ([sensor.netatmo docs]) +- Add support for sound_mode for Yamaha rxv media_player ([@Joshi425] - [#16352]) ([media_player.yamaha docs]) +- Add unique_id to MQTT Light ([@bieniu] - [#16303]) ([light.mqtt docs]) +- Update to EnvoyReader 0.2, support for more hardware ([@jesserizzo] - [#16212]) ([sensor.enphase_envoy docs]) (breaking change) +- Snips: Added special slot values, session_id and slotname_raw ([@tschmidty69] - [#16185]) ([snips docs]) +- Upgrade hbmqtt to 0.9.4 ([@awarecan] - [#16356]) ([mqtt docs]) +- Upgrade Sphinx to 1.7.7 ([@fabaff] - [#16359]) +- Upgrade qnapstats to 0.2.7 ([@fabaff] - [#16360]) ([sensor.qnap docs]) +- Upgrade mutagen to 1.41.1 ([@fabaff] - [#16361]) ([tts docs]) +- Upgrade shodan to 1.10.0 ([@fabaff] - [#16363]) ([sensor.shodan docs]) +- Upgrade to youtube_dl to 2018.09.01 ([@fabaff] - [#16365]) ([media_extractor docs]) +- Added 'nomapnt', 'outcurnt', 'loadapnt' fields ([@MarcSN311] - [#16176]) ([sensor.apcupsd docs]) +- Generic Thermostat: add support for climate.turn_on/climate.turn_off ([@aronsky] - [#16080]) ([climate.generic_thermostat docs]) +- Add support for Tahoma Lighting Receiver on/off io ([@fucm] - [#15925]) ([tahoma docs]) ([switch.tahoma docs]) +- Update discord.py ([@htotoo] - [#16248]) ([notify docs]) +- Upgrade python-telegram-bot to 11.0.0 ([@fabaff] - [#16373]) ([telegram_bot docs]) +- Upgrade attrs to 18.2.0 ([@fabaff] - [#16372]) +- Update server.py ([@awarecan] - [#16375]) ([mqtt docs]) +- add_entities for switchmate ([@Danielhiversen] - [#16368]) ([switch.switchmate docs]) +- Support for playing radio preset by Onkyo media_player ([@pszafer] - [#16258]) ([cover.mqtt docs]) ([media_player.onkyo docs]) +- Bug fix for Tibber ([@Danielhiversen] - [#16397]) ([sensor.tibber docs]) +- zha: Bump to zigpy 0.2.0/bellows 0.7.0 ([@rcloran] - [#16404]) ([zha docs]) +- Fix SystemMonitor IP address sensor ([@ReneNulschDE] - [#16394]) ([sensor.systemmonitor docs]) +- add ExpressBus icon key to sensor.mvg ([@9R] - [#16387]) ([sensor.mvglive docs]) +- Device and entity registry remove config entry on unload ([@Kane610] - [#16247]) +- Add config flow for OpenUV ([@bachya] - [#16159]) ([openuv docs]) ([binary_sensor.openuv docs]) ([sensor.openuv docs]) +- Service to load new deCONZ devices without restart ([@Kane610] - [#16308]) ([deconz docs]) +- Delegate mqtt topic match validation to the paho mqtt client ([@rohankapoorcom] - [#16403]) ([mqtt docs]) +- Clean up dlink and some bug fix ([@Danielhiversen] - [#16346]) ([switch.dlink docs]) +- Implement correct state for RFlink cover ([@nudded] - [#16304]) ([cover.rflink docs]) +- Fix Mi Flora median calculation ([@PaulAnnekov] - [#16085]) ([sensor.miflora docs]) (breaking change) +- Add context to scripts and automations ([@balloob] - [#16415]) ([automation docs]) ([script docs]) ([automation.event docs]) ([automation.homeassistant docs]) ([automation.numeric_state docs]) ([automation.state docs]) ([automation.template docs]) ([automation.zone docs]) +- Fix openuv.config_flow unit test ([@awarecan] - [#16419]) +- Upgrade sense library to 0.4.2 ([@kbickar] - [#16429]) ([sensor.sense docs]) +- switchbot ([@Danielhiversen] - [#16396]) ([switch.switchbot docs]) (new-platform) +- Fix camera proxy to not require api_password to function ([@PhracturedBlue] - [#16450]) ([camera docs]) ([camera.proxy docs]) +- Upgrade shodan to 1.10.1 ([@fabaff] - [#16460]) ([sensor.shodan docs]) +- Upgrade Sphinx to 1.7.8 ([@fabaff] - [#16459]) +- update rfxtrx lib ([@Danielhiversen] - [#16463]) ([rfxtrx docs]) +- Added Twitch v5 support to the twitch platform ([@ioangogo] - [#16428]) ([sensor.twitch docs]) (breaking change) +- Fix waze_travel_time component startup ([@tsvi] - [#16465]) ([sensor.waze_travel_time docs]) +- Update license to official GitHub template ([@OverloadUT] - [#16470]) +- Add Yale Smart Alarm component ([@domwillcode] - [#16377]) ([alarm_control_panel.yale_smart_alarm docs]) (new-platform) +- Update radiotherm ([@cpw] - [#15031]) ([climate.radiotherm docs]) (breaking change) +- Support SNMPv3 and asyncio in snmp switch ([@mtdcr] - [#14754]) ([switch.snmp docs]) +- Fix GitHub change to resolve conflicts ([@fabaff] - [#16477]) ([switch.snmp docs]) +- Add OpenTherm Gateway climate platform ([@mvn23] - [#16299]) ([climate.opentherm_gw docs]) (new-platform) +- Support SNMPv3 and asyncio in snmp sensor ([@mtdcr] - [#14753]) ([sensor.snmp docs]) +- Add rate of change to statistics sensor ([@flo-wer] - [#15632]) ([sensor.statistics docs]) +- Restore status attribute for xiaomi_vacuum ([@tamasv] - [#16366]) ([vacuum docs]) ([vacuum.xiaomi_miio docs]) +- Check if API key is valid and users available ([@fabaff] - [#16494]) ([sensor.lastfm docs]) +- Update name legacy api password ([@balloob] - [#16455]) +- Fix Netgear LTESensor docstring ([@scop] - [#16501]) ([sensor.netgear_lte docs]) +- Update pyHS100 to 0.3.3 ([@amelchio] - [#16502]) ([light.tplink docs]) ([switch.tplink docs]) +- Move voluptuous-serialize to core requirement ([@awarecan] - [#16507]) ([config docs]) +- adds listener for OnAVStart and OnAVChange ([@tadly] - [#16495]) ([media_player.kodi docs]) +- Order imports ([@fabaff] - [#16515]) +- Upgrade aiohttp to 3.4.4 ([@awarecan] - [#16486]) +- Add a base_url configuration setting to tts. ([@lddubeau] - [#16478]) ([tts docs]) +- Upgrade youtube_dl to 2018.09.10 ([@fabaff] - [#16534]) ([media_extractor docs]) +- Upgrade keyring to 15.0.0 ([@fabaff] - [#16536]) + +[#14753]: https://github.com/home-assistant/home-assistant/pull/14753 +[#14754]: https://github.com/home-assistant/home-assistant/pull/14754 +[#15031]: https://github.com/home-assistant/home-assistant/pull/15031 +[#15252]: https://github.com/home-assistant/home-assistant/pull/15252 +[#15535]: https://github.com/home-assistant/home-assistant/pull/15535 +[#15632]: https://github.com/home-assistant/home-assistant/pull/15632 +[#15744]: https://github.com/home-assistant/home-assistant/pull/15744 +[#15925]: https://github.com/home-assistant/home-assistant/pull/15925 +[#15935]: https://github.com/home-assistant/home-assistant/pull/15935 +[#15953]: https://github.com/home-assistant/home-assistant/pull/15953 +[#15990]: https://github.com/home-assistant/home-assistant/pull/15990 +[#16080]: https://github.com/home-assistant/home-assistant/pull/16080 +[#16085]: https://github.com/home-assistant/home-assistant/pull/16085 +[#16157]: https://github.com/home-assistant/home-assistant/pull/16157 +[#16159]: https://github.com/home-assistant/home-assistant/pull/16159 +[#16176]: https://github.com/home-assistant/home-assistant/pull/16176 +[#16179]: https://github.com/home-assistant/home-assistant/pull/16179 +[#16185]: https://github.com/home-assistant/home-assistant/pull/16185 +[#16188]: https://github.com/home-assistant/home-assistant/pull/16188 +[#16192]: https://github.com/home-assistant/home-assistant/pull/16192 +[#16193]: https://github.com/home-assistant/home-assistant/pull/16193 +[#16194]: https://github.com/home-assistant/home-assistant/pull/16194 +[#16195]: https://github.com/home-assistant/home-assistant/pull/16195 +[#16203]: https://github.com/home-assistant/home-assistant/pull/16203 +[#16205]: https://github.com/home-assistant/home-assistant/pull/16205 +[#16212]: https://github.com/home-assistant/home-assistant/pull/16212 +[#16215]: https://github.com/home-assistant/home-assistant/pull/16215 +[#16217]: https://github.com/home-assistant/home-assistant/pull/16217 +[#16218]: https://github.com/home-assistant/home-assistant/pull/16218 +[#16229]: https://github.com/home-assistant/home-assistant/pull/16229 +[#16237]: https://github.com/home-assistant/home-assistant/pull/16237 +[#16247]: https://github.com/home-assistant/home-assistant/pull/16247 +[#16248]: https://github.com/home-assistant/home-assistant/pull/16248 +[#16251]: https://github.com/home-assistant/home-assistant/pull/16251 +[#16258]: https://github.com/home-assistant/home-assistant/pull/16258 +[#16259]: https://github.com/home-assistant/home-assistant/pull/16259 +[#16261]: https://github.com/home-assistant/home-assistant/pull/16261 +[#16262]: https://github.com/home-assistant/home-assistant/pull/16262 +[#16263]: https://github.com/home-assistant/home-assistant/pull/16263 +[#16265]: https://github.com/home-assistant/home-assistant/pull/16265 +[#16267]: https://github.com/home-assistant/home-assistant/pull/16267 +[#16275]: https://github.com/home-assistant/home-assistant/pull/16275 +[#16281]: https://github.com/home-assistant/home-assistant/pull/16281 +[#16296]: https://github.com/home-assistant/home-assistant/pull/16296 +[#16297]: https://github.com/home-assistant/home-assistant/pull/16297 +[#16299]: https://github.com/home-assistant/home-assistant/pull/16299 +[#16303]: https://github.com/home-assistant/home-assistant/pull/16303 +[#16304]: https://github.com/home-assistant/home-assistant/pull/16304 +[#16308]: https://github.com/home-assistant/home-assistant/pull/16308 +[#16323]: https://github.com/home-assistant/home-assistant/pull/16323 +[#16327]: https://github.com/home-assistant/home-assistant/pull/16327 +[#16337]: https://github.com/home-assistant/home-assistant/pull/16337 +[#16340]: https://github.com/home-assistant/home-assistant/pull/16340 +[#16344]: https://github.com/home-assistant/home-assistant/pull/16344 +[#16346]: https://github.com/home-assistant/home-assistant/pull/16346 +[#16348]: https://github.com/home-assistant/home-assistant/pull/16348 +[#16352]: https://github.com/home-assistant/home-assistant/pull/16352 +[#16356]: https://github.com/home-assistant/home-assistant/pull/16356 +[#16359]: https://github.com/home-assistant/home-assistant/pull/16359 +[#16360]: https://github.com/home-assistant/home-assistant/pull/16360 +[#16361]: https://github.com/home-assistant/home-assistant/pull/16361 +[#16363]: https://github.com/home-assistant/home-assistant/pull/16363 +[#16365]: https://github.com/home-assistant/home-assistant/pull/16365 +[#16366]: https://github.com/home-assistant/home-assistant/pull/16366 +[#16368]: https://github.com/home-assistant/home-assistant/pull/16368 +[#16372]: https://github.com/home-assistant/home-assistant/pull/16372 +[#16373]: https://github.com/home-assistant/home-assistant/pull/16373 +[#16375]: https://github.com/home-assistant/home-assistant/pull/16375 +[#16377]: https://github.com/home-assistant/home-assistant/pull/16377 +[#16387]: https://github.com/home-assistant/home-assistant/pull/16387 +[#16394]: https://github.com/home-assistant/home-assistant/pull/16394 +[#16396]: https://github.com/home-assistant/home-assistant/pull/16396 +[#16397]: https://github.com/home-assistant/home-assistant/pull/16397 +[#16403]: https://github.com/home-assistant/home-assistant/pull/16403 +[#16404]: https://github.com/home-assistant/home-assistant/pull/16404 +[#16415]: https://github.com/home-assistant/home-assistant/pull/16415 +[#16419]: https://github.com/home-assistant/home-assistant/pull/16419 +[#16428]: https://github.com/home-assistant/home-assistant/pull/16428 +[#16429]: https://github.com/home-assistant/home-assistant/pull/16429 +[#16450]: https://github.com/home-assistant/home-assistant/pull/16450 +[#16455]: https://github.com/home-assistant/home-assistant/pull/16455 +[#16459]: https://github.com/home-assistant/home-assistant/pull/16459 +[#16460]: https://github.com/home-assistant/home-assistant/pull/16460 +[#16463]: https://github.com/home-assistant/home-assistant/pull/16463 +[#16465]: https://github.com/home-assistant/home-assistant/pull/16465 +[#16470]: https://github.com/home-assistant/home-assistant/pull/16470 +[#16477]: https://github.com/home-assistant/home-assistant/pull/16477 +[#16478]: https://github.com/home-assistant/home-assistant/pull/16478 +[#16486]: https://github.com/home-assistant/home-assistant/pull/16486 +[#16494]: https://github.com/home-assistant/home-assistant/pull/16494 +[#16495]: https://github.com/home-assistant/home-assistant/pull/16495 +[#16501]: https://github.com/home-assistant/home-assistant/pull/16501 +[#16502]: https://github.com/home-assistant/home-assistant/pull/16502 +[#16507]: https://github.com/home-assistant/home-assistant/pull/16507 +[#16515]: https://github.com/home-assistant/home-assistant/pull/16515 +[#16534]: https://github.com/home-assistant/home-assistant/pull/16534 +[#16536]: https://github.com/home-assistant/home-assistant/pull/16536 +[@9R]: https://github.com/9R +[@ASMfreaK]: https://github.com/ASMfreaK +[@Cereal2nd]: https://github.com/Cereal2nd +[@Danielhiversen]: https://github.com/Danielhiversen +[@Joshi425]: https://github.com/Joshi425 +[@JulianKahnert]: https://github.com/JulianKahnert +[@Kane610]: https://github.com/Kane610 +[@MarcSN311]: https://github.com/MarcSN311 +[@OverloadUT]: https://github.com/OverloadUT +[@PaulAnnekov]: https://github.com/PaulAnnekov +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@ReneNulschDE]: https://github.com/ReneNulschDE +[@amelchio]: https://github.com/amelchio +[@aronsky]: https://github.com/aronsky +[@awarecan]: https://github.com/awarecan +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bieniu]: https://github.com/bieniu +[@cgtobi]: https://github.com/cgtobi +[@cpw]: https://github.com/cpw +[@danielperna84]: https://github.com/danielperna84 +[@dgomes]: https://github.com/dgomes +[@djm300]: https://github.com/djm300 +[@domwillcode]: https://github.com/domwillcode +[@endor-force]: https://github.com/endor-force +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@flo-wer]: https://github.com/flo-wer +[@fucm]: https://github.com/fucm +[@grea09]: https://github.com/grea09 +[@htotoo]: https://github.com/htotoo +[@ioangogo]: https://github.com/ioangogo +[@jesserizzo]: https://github.com/jesserizzo +[@kariudo]: https://github.com/kariudo +[@kbickar]: https://github.com/kbickar +[@lddubeau]: https://github.com/lddubeau +[@mtdcr]: https://github.com/mtdcr +[@mvn23]: https://github.com/mvn23 +[@nudded]: https://github.com/nudded +[@phil65]: https://github.com/phil65 +[@pnbruckner]: https://github.com/pnbruckner +[@pszafer]: https://github.com/pszafer +[@rcloran]: https://github.com/rcloran +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@rytilahti]: https://github.com/rytilahti +[@schmittx]: https://github.com/schmittx +[@scop]: https://github.com/scop +[@smurfix]: https://github.com/smurfix +[@tadly]: https://github.com/tadly +[@tamasv]: https://github.com/tamasv +[@teharris1]: https://github.com/teharris1 +[@thomasdelaet]: https://github.com/thomasdelaet +[@thomaslian]: https://github.com/thomaslian +[@tschmidty69]: https://github.com/tschmidty69 +[@tsvi]: https://github.com/tsvi +[@vrih]: https://github.com/vrih +[alarm_control_panel.yale_smart_alarm docs]: /components/alarm_control_panel.yale_smart_alarm/ +[asterisk_mbox docs]: /components/asterisk_mbox/ +[automation docs]: /components/automation/ +[automation.event docs]: /docs/automation/trigger/#event-trigger +[automation.homeassistant docs]: /docs/automation/trigger/#home-assistant-trigger +[automation.numeric_state docs]: /docs/automation/trigger/#numeric-state-trigger +[automation.state docs]: /docs/automation/trigger/#state-trigger +[automation.template docs]: /docs/automation/trigger/#template-trigger +[automation.zone docs]: /docs/automation/trigger/#zone-trigger +[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ +[binary_sensor.openuv docs]: /components/binary_sensor.openuv/ +[camera docs]: /components/camera/ +[camera.proxy docs]: /components/camera.proxy/ +[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ +[climate.nest docs]: /components/climate.nest/ +[climate.opentherm_gw docs]: /components/climate.opentherm_gw/ +[climate.radiotherm docs]: /components/climate.radiotherm/ +[config docs]: /components/config/ +[cover.insteon docs]: /components/cover.insteon/ +[cover.mqtt docs]: /components/cover.mqtt/ +[cover.myq docs]: /components/cover.myq/ +[cover.rflink docs]: /components/cover.rflink/ +[deconz docs]: /components/deconz/ +[device_tracker docs]: /components/device_tracker/ +[feedreader docs]: /components/feedreader/ +[geo_location docs]: /components/geo_location/ +[habitica docs]: /components/habitica/ +[hangouts docs]: /components/hangouts/ +[homematic docs]: /components/homematic/ +[hue docs]: /components/hue/ +[insteon docs]: /components/insteon/ +[light.deconz docs]: /components/light.deconz/ +[light.hue docs]: /components/light.hue/ +[light.mqtt docs]: /components/light.mqtt/ +[light.tplink docs]: /components/light.tplink/ +[media_extractor docs]: /components/media_extractor/ +[media_player.cast docs]: /components/media_player.cast/ +[media_player.kodi docs]: /components/media_player.kodi/ +[media_player.onkyo docs]: /components/media_player.onkyo/ +[media_player.songpal docs]: /components/media_player.songpal/ +[media_player.sonos docs]: /components/media_player.sonos/ +[media_player.yamaha docs]: /components/media_player.yamaha/ +[mqtt docs]: /components/mqtt/ +[notify docs]: /components/notify/ +[openuv docs]: /components/openuv/ +[rfxtrx docs]: /components/rfxtrx/ +[scene.deconz docs]: /components/scene.deconz/ +[script docs]: /components/script/ +[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ +[sensor.apcupsd docs]: /components/sensor.apcupsd/ +[sensor.darksky docs]: /components/sensor.darksky/ +[sensor.deconz docs]: /components/sensor.deconz/ +[sensor.dht docs]: /components/sensor.dht/ +[sensor.dnsip docs]: /components/sensor.dnsip/ +[sensor.enphase_envoy docs]: /components/sensor.enphase_envoy/ +[sensor.geizhals docs]: /components/sensor.geizhals/ +[sensor.habitica docs]: /components/sensor.habitica/ +[sensor.lastfm docs]: /components/sensor.lastfm/ +[sensor.miflora docs]: /components/sensor.miflora/ +[sensor.mvglive docs]: /components/sensor.mvglive/ +[sensor.netatmo docs]: /components/sensor.netatmo/ +[sensor.netgear_lte docs]: /components/sensor.netgear_lte/ +[sensor.openuv docs]: /components/sensor.openuv/ +[sensor.qnap docs]: /components/sensor.qnap/ +[sensor.sense docs]: /components/sensor.sense/ +[sensor.shodan docs]: /components/sensor.shodan/ +[sensor.snmp docs]: /components/sensor.snmp/ +[sensor.sql docs]: /components/sensor.sql/ +[sensor.statistics docs]: /components/sensor.statistics/ +[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ +[sensor.tahoma docs]: /components/sensor.tahoma/ +[sensor.tibber docs]: /components/sensor.tibber/ +[sensor.trafikverket_weatherstation docs]: /components/sensor.trafikverket_weatherstation/ +[sensor.twitch docs]: /components/sensor.twitch/ +[sensor.velbus docs]: /components/sensor.velbus/ +[sensor.volkszaehler docs]: /components/sensor.volkszaehler/ +[sensor.waze_travel_time docs]: /components/sensor.waze_travel_time/ +[snips docs]: /components/snips/ +[switch.deconz docs]: /components/switch.deconz/ +[switch.dlink docs]: /components/switch.dlink/ +[switch.snmp docs]: /components/switch.snmp/ +[switch.switchbot docs]: /components/switch.switchbot/ +[switch.switchmate docs]: /components/switch.switchmate/ +[switch.tahoma docs]: /components/switch.tahoma/ +[switch.tplink docs]: /components/switch.tplink/ +[tahoma docs]: /components/tahoma/ +[telegram_bot docs]: /components/telegram_bot/ +[tts docs]: /components/tts/ +[upnp docs]: /components/upnp/ +[vacuum docs]: /components/vacuum/ +[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ +[velbus docs]: /components/velbus/ +[zha docs]: /components/zha/ +[zoneminder docs]: /components/zoneminder/ From 513ef6f63a367bdfea0e5b4b60699d523be885d1 Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Mon, 10 Sep 2018 22:52:45 -0700 Subject: [PATCH 28/97] Fix a typo in date which hide configuration page (#6253) --- source/_docs/configuration.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown index c863c66382e..2e57862c030 100644 --- a/source/_docs/configuration.markdown +++ b/source/_docs/configuration.markdown @@ -2,7 +2,7 @@ layout: page title: "Configuring Home Assistant" description: "Configuring Home Assistant." -date: 2018-09-18 16:15 +date: 2018-09-08 16:15 sidebar: true comments: false sharing: true From 80b34251e007892b88d93a689f2273078fdcf421 Mon Sep 17 00:00:00 2001 From: bastshoes Date: Tue, 11 Sep 2018 20:39:05 +0300 Subject: [PATCH 29/97] Adding warning regarding legacy_api password Currently there is an issue #16441. Leagacy_api password not loaded if api_password located in package. --- source/_docs/authentication/providers.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown index 728ecb58b2d..6d3aa2360b0 100644 --- a/source/_docs/authentication/providers.markdown +++ b/source/_docs/authentication/providers.markdown @@ -30,6 +30,10 @@ To make the transition from API password to authentication system easier, we've Home Assistant automatically configures the standard auth providers and you **do not** need to specify `auth_providers` in your `configuration.yaml` file. Specifying `auth_providers` in your configuration will disable all auth providers that are not listed and can reduce your security or create difficulties logging in.

+

+Legacy API password auth provider wouldn't be loaded if your API password located in separete package. This is because Home Assistant process `auth_provider` during the `core` section loading, it is earlier then do the `packages` processing. +

+ Authentication providers are configured in your `configuration.yaml` under the `homeassistant:` block: ```yaml From fe9cef1124da903c728a4e9e206f1b129bb9fa5f Mon Sep 17 00:00:00 2001 From: themanieldaniel Date: Tue, 11 Sep 2018 13:47:43 -0400 Subject: [PATCH 30/97] Update konnected.markdown --- source/_components/konnected.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/konnected.markdown b/source/_components/konnected.markdown index 16612ca4731..7b4c5117312 100644 --- a/source/_components/konnected.markdown +++ b/source/_components/konnected.markdown @@ -32,13 +32,13 @@ A `konnected` section must be present in the `configuration.yaml` file that spec konnected: access_token: REPLACE_ME_WITH_A_RANDOM_STRING devices: - - id: 8bcd53 + - id: 438a388bcd53 binary_sensors: - zone: 1 type: door switches: - zone: out - - id: 438a38 + - id: 8bcd53438a38 binary_sensors: - pin: 2 type: door @@ -62,7 +62,7 @@ devices: type: list keys: id: - description: The MAC address of the WiFi module with colons/punctuation removed. You can either use the full 12-character MAC address or only the last 6 characters. This is visible in the device's WiFi SSID and hostname. + description: The MAC address of the WiFi module with colons/punctuation removed. You musst use the full 12-character MAC address with lower case letters. This is visible in the device's WiFi SSID and hostname. required: true type: string binary_sensors: From 24b06fc0463dd979fc09d45512f72c8bd83946da Mon Sep 17 00:00:00 2001 From: Will Marler Date: Tue, 11 Sep 2018 11:49:38 -0600 Subject: [PATCH 31/97] Fix a link in lets_encrypt howto re: password (#6256) The link points to the "basic information" config page but should point to the HTTP component config page. There is no password to be set in basic information. --- source/_docs/ecosystem/certificates/lets_encrypt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index d8c82f80d42..0b62214a923 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -14,7 +14,7 @@ If you are using Hass.io or Hassbian, do not use this guide. Instead, use the [D

-Before exposing your Home Assistant instance to the outside world it is ESSENTIAL that you have set a password following the advice on the [http](/docs/configuration/basic/) page. +Before exposing your Home Assistant instance to the outside world it is ESSENTIAL that you have set a password following the advice on the [http](/components/http/) page.

From ed265c8e761c8f20835b9fa8f6eefed82804a175 Mon Sep 17 00:00:00 2001 From: Tobias Nordahl Kristensen Date: Wed, 12 Sep 2018 12:47:27 +0200 Subject: [PATCH 32/97] Note about data logging. (#6251) * Note about data logging. Also mentioned here: https://community.home-assistant.io/t/motion-detection-with-android-ip-camera-solved/35846/7?u=exetico * Convert it to a note --- source/_components/android_ip_webcam.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/android_ip_webcam.markdown b/source/_components/android_ip_webcam.markdown index c616b33a35e..b11ac13595e 100644 --- a/source/_components/android_ip_webcam.markdown +++ b/source/_components/android_ip_webcam.markdown @@ -37,6 +37,10 @@ Configuration variables: - **switches** array (*Optional*): Conditions to display settings in the frontend. See the list of supported settings. - **motion_sensor** (*Optional*): Activate motion sensor if auto_discovery is disabled. +

+ You need to enable logging in the Android app (`Data logging` > `Enable data logging`), if you wish to see the sensor states in Home Assistant. The sensor states stays as `unknown`, until it's enabled. +

+ ### {% linkable_title Supported features %} Sensors: From f6aed097e8293018000eb340bea585d0e14c6fcc Mon Sep 17 00:00:00 2001 From: Jonathan Herlin Date: Wed, 12 Sep 2018 12:49:27 +0200 Subject: [PATCH 33/97] Spelling mistake? (#6260) "Setting" seems more correct to me than "Seeting" --- source/_components/tradfri.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/tradfri.markdown b/source/_components/tradfri.markdown index 5eb66113cba..8c16a9a17e2 100644 --- a/source/_components/tradfri.markdown +++ b/source/_components/tradfri.markdown @@ -55,7 +55,7 @@ After updating the firmware of your Trådfri gateway it might be necessary to re Please make sure you have `autoconf` installed (`$ sudo apt-get install autoconf`) if you want to use this component. Also, installing some dependencies might take considerable time (>1 h) on slow devices. -### {% linkable_title Seeting the `api_key` %} +### {% linkable_title Setting the `api_key` %} Do not use the `api_key` variable in `configuration.yaml`. The API key is only needed once at initial setup and will be stored. From a16cedbe4f6fd7eb1064bf0764e5f9e7feaab1ce Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 12 Sep 2018 16:05:51 +0200 Subject: [PATCH 34/97] Update mqtt.markdown --- source/_components/mqtt.markdown | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/source/_components/mqtt.markdown b/source/_components/mqtt.markdown index 275cac866ed..c9d73254459 100644 --- a/source/_components/mqtt.markdown +++ b/source/_components/mqtt.markdown @@ -11,19 +11,14 @@ logo: mqtt.png ha_category: Hub featured: true ha_release: pre 0.7 -ha_iot_class: depends +ha_iot_class: local push --- MQTT (aka MQ Telemetry Transport) is a machine-to-machine or "Internet of Things" connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport. Your first step to get MQTT and Home Assistant working is to choose a [broker](/docs/mqtt/broker). -To integrate MQTT into Home Assistant, add the following section to your `configuration.yaml` file. Keep in mind that the minimal setup will run with [an embedded MQTT broker](/docs/mqtt/broker#embedded-broker): - -```yaml -# Example configuration.yaml entry -mqtt: -``` +To integrate MQTT into Home Assistant, add the following section to your `configuration.yaml` file. To connect to your [own MQTT broker](/docs/mqtt/broker#run-your-own): @@ -33,9 +28,15 @@ mqtt: broker: IP_ADDRESS_BROKER ``` -

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

+You can also use the [embedded MQTT broker](/docs/mqtt/broker#embedded-broker). A separate broker is advised for more stability. + +```yaml +# Example configuration.yaml entry +mqtt: + password: hello +``` + +This allows you to connect to the MQTT broker with user `homeassistant` and password `hello`. ## {% linkable_title Additional features %} From c47cb41b46f2763708ad0a7484ee4cb9f08fd282 Mon Sep 17 00:00:00 2001 From: Niklas Janz Date: Thu, 13 Sep 2018 15:08:51 +0200 Subject: [PATCH 35/97] Added the usage of PostgreSQL unix sockets (#6272) * Added db_url for PostreSQL via unix socket * Added informations about sockets + instructions for pg_hba.conf --- source/_components/recorder.markdown | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index eb859687fdd..7ffae0d13d8 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -154,12 +154,19 @@ If the `recorder` component is activated then some components support `restore_s | MySQL (pymysql) | `mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | | PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | | PostgreSQL | `postgresql://scott:tiger@SERVER_IP/DB_NAME` | +| PostgreSQL (Socket) | `postgresql://@/DB_NAME` | | MS SQL Server | `mssql+pymssql://user:pass@SERVER_IP/DB_NAME?charset=utf8` |

If you use MariaDB 10 you need to add port 3307 to the SERVER_IP, e.g., `mysql://user:password@SERVER_IP:3307/DB_NAME?charset=utf8`.

+

+Unix Socket connections always bring performance advantages over TCP, if the database on the same host as the `recorder` instance (i.e. `localhost`).

+ +

+If you want to use Unix Sockets for PostgreSQL you need to modify the `pg_hba.conf`. See [PostgreSQL](#postgresql)

+ ### {% linkable_title Database startup %} If you are running a database server instance on the same server as Home Assistant then you must ensure that this service starts before Home Assistant. For a Linux instance running Systemd (Raspberry Pi, Debian, Ubuntu and others) then you should edit the service file. @@ -225,6 +232,22 @@ $ sudo apt-get install postgresql-server-dev-X.Y $ pip3 install psycopg2 ``` +For using Unix Sockets, add the following line to your [`pg_hba.conf`](https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html): + +`local DB_NAME USER_NAME peer` + +Where `DB_NAME` is the name of your database and `USER_NAME` is the name of the user running the Home Assistant instance (see [securing your installation](/docs/configuration/securing/)). + +Reload the PostgreSQL configuration after that: +```bash +$ sudo -i -u postgres psql -c "SELECT pg_reload_conf();" + pg_reload_conf +---------------- + t +(1 row) +``` +A service restart will work as well. + ### {% linkable_title MS SQL Server %} For MS SQL Server you may have to install a few dependencies: From 2aba5d54d0934582becccf60f9b3d1a19667821c Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 13 Sep 2018 15:10:40 +0200 Subject: [PATCH 36/97] Update editor.markdown (#6271) --- source/_docs/scripts/editor.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/scripts/editor.markdown b/source/_docs/scripts/editor.markdown index a69ae296923..9ccc8252d42 100644 --- a/source/_docs/scripts/editor.markdown +++ b/source/_docs/scripts/editor.markdown @@ -10,7 +10,7 @@ footer: true redirect_from: /docs/script/editor/ --- -In Home Assistant 0.52 we introduced the first version of our automation editor. If you just created a new configuration with Home Assistant then you're all set! Go to the UI and enjoy. +In Home Assistant 0.52 we introduced the first version of our script editor. If you just created a new configuration with Home Assistant then you're all set! Go to the UI and enjoy.
From db797550e065d40abeb774e35a14b63ec2c806e2 Mon Sep 17 00:00:00 2001 From: rpitera Date: Thu, 13 Sep 2018 09:11:32 -0400 Subject: [PATCH 37/97] Clarify conditional card docs (#6266) Clarify that conditions are processed as an 'and' condition, not an 'and/or' when using multiple entity conditions. --- source/_lovelace/conditional.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_lovelace/conditional.markdown b/source/_lovelace/conditional.markdown index 4bf17345887..d2f7f881315 100644 --- a/source/_lovelace/conditional.markdown +++ b/source/_lovelace/conditional.markdown @@ -42,6 +42,8 @@ card: *one is required (`state` or `state_not`) +Note: Conditions with more than one entity are treated as an 'and' condition. This means that for the card to show, *all* entities must meet the state requirements set. + ### {% linkable_title Examples %} ```yaml From fb2fdbb539af313584ab188d57b1efb242a9a9c2 Mon Sep 17 00:00:00 2001 From: Vikram Gorla Date: Fri, 14 Sep 2018 12:00:07 +0200 Subject: [PATCH 38/97] Update link to Supported Languages (#6277) Looking at the implementation, it uses Google Translate as backend and not Google Cloud Speech engine, updating the link where supported languages can be seen. --- source/_components/tts.google.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/tts.google.markdown b/source/_components/tts.google.markdown index 3056b50d94e..75160c41c21 100644 --- a/source/_components/tts.google.markdown +++ b/source/_components/tts.google.markdown @@ -25,7 +25,7 @@ tts: Configuration variables: - **language** (*Optional*): The language to use. Defaults to `en`. - - [Complete list of supported languages](https://cloud.google.com/speech-to-text/docs/languages). + - [Complete list of supported languages (Languages where "Talk" feature is enabled in Google Translate)](https://translate.google.com/intl/en_ALL/about/languages/), use 2 digit language code which you can find at the end of url when you click on Language name. A full configuration sample: From aefac32409ca38ba0cf0b221d099496bb2802c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ab=C3=ADlio=20Costa?= Date: Sat, 15 Sep 2018 09:52:33 +0100 Subject: [PATCH 39/97] Add note on yeelight music mode (#6283) Music mode makes the light always available. This causes HA to try to turn it on/off which may delay other operations, since yeelight will take a while to respond. --- source/_components/light.yeelight.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index c446d5950f7..a5b9547d243 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -43,6 +43,7 @@ Configuration variables: #### {% linkable_title Music mode %} Per default the bulb limits the amount of requests per minute to 60, a limitation which can be bypassed by enabling the music mode. In music mode the bulb is commanded to connect back to a socket provided by the component and it tries to keep the connection open, which may not be wanted in all use-cases. +**Also note that bulbs in music mode will not update their state to "unavailable" if they are disconnected, which can cause delays in Home Assistant**. ### {% linkable_title Initial setup %}

From 905676ba691680a1d6555f8ad8f66c84ebc02081 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sat, 15 Sep 2018 13:32:40 +0100 Subject: [PATCH 40/97] Spelling/grammar tweaks --- source/_docs/authentication/providers.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown index 6d3aa2360b0..de5e223b015 100644 --- a/source/_docs/authentication/providers.markdown +++ b/source/_docs/authentication/providers.markdown @@ -31,7 +31,7 @@ Home Assistant automatically configures the standard auth providers and you **do

-Legacy API password auth provider wouldn't be loaded if your API password located in separete package. This is because Home Assistant process `auth_provider` during the `core` section loading, it is earlier then do the `packages` processing. +The legacy API password auth provider won't be loaded if your API password is located in a package. This is because Home Assistant processes the `auth_provider` during the `core` section loading, which is earlier than the `packages` processing.

Authentication providers are configured in your `configuration.yaml` under the `homeassistant:` block: From d9c05fcb9e8f13ce2e8fd75d7cdd6c73238c98ae Mon Sep 17 00:00:00 2001 From: Ron Schaeffer Date: Sat, 15 Sep 2018 21:04:18 +0100 Subject: [PATCH 41/97] Update device_tracker.snmp.markdown (#6289) --- source/_components/device_tracker.snmp.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.snmp.markdown b/source/_components/device_tracker.snmp.markdown index faea7253981..1131fb1e1d2 100644 --- a/source/_components/device_tracker.snmp.markdown +++ b/source/_components/device_tracker.snmp.markdown @@ -13,7 +13,7 @@ ha_release: 0.7.5 --- -A lot WiFi access points and WiFi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks, and WiFi registrations. +A lot of WiFi access points and WiFi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks, and WiFi registrations.

This device tracker needs SNMP to be enabled on the router. It could be that you need to install the SNMP support manually. From 8d7caee37cd785ca2574119c859d6c1763abccac Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sat, 15 Sep 2018 21:04:43 +0100 Subject: [PATCH 42/97] Making the titles linkable (#6286) Making the titles linkable --- source/hassio/commandline.markdown | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/hassio/commandline.markdown b/source/hassio/commandline.markdown index a37177f832f..858bfda8fdf 100644 --- a/source/hassio/commandline.markdown +++ b/source/hassio/commandline.markdown @@ -16,7 +16,7 @@ Hass.io upgrade process from the SSH command line On the SSH command line, you can use the `hassio` command to retrieve logs, check the details of connected hardware, and more. -Home Assistant: +## {% linkable_title Home Assistant %} ```bash $ hassio homeassistant info @@ -28,7 +28,7 @@ $ hassio homeassistant stop $ hassio homeassistant update ``` -Supervisor: +## {% linkable_title Supervisor %} ```bash $ hassio supervisor info @@ -37,7 +37,7 @@ $ hassio supervisor reload $ hassio supervisor update ``` -Host: +## {% linkable_title Host %} ```bash $ hassio host reboot @@ -45,13 +45,15 @@ $ hassio host shutdown $ hassio host update ``` -Hardware: +## {% linkable_title Hardware %} ```bash $ hassio hardware info $ hassio hardware audio ``` +## {% linkable_title Usage examples %} + To update Home Assistant to a specific version, use the command: ```bash hassio homeassistant update --options version=x.y.z From e46d4fbd6b92db152581a447170291fa6fbb33be Mon Sep 17 00:00:00 2001 From: aisbergde Date: Sat, 15 Sep 2018 22:05:19 +0200 Subject: [PATCH 43/97] Update discovery.markdown (#6285) --- source/_components/discovery.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index 1edebdc702b..5ab929d212e 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -99,7 +99,7 @@ Valid values for ignore are: * `tellstick`: Telldus Live * `wink`: Wink Hub * `yamaha`: Yamaha media player - * `yeelight`: Yeelight Sunflower bulb + * `yeelight`: Yeelight lamps and bulbs (not only Yeelight Sunflower bulb) * `xiaomi_gw`: Xiaomi Aqara gateway Valid values for enable are: From be1223e91e3ed45b3e8a35d231a4e559b60620f4 Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Sat, 15 Sep 2018 14:33:32 -0700 Subject: [PATCH 44/97] Add issue link --- source/_docs/authentication/providers.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown index de5e223b015..8da14db4aaa 100644 --- a/source/_docs/authentication/providers.markdown +++ b/source/_docs/authentication/providers.markdown @@ -31,7 +31,7 @@ Home Assistant automatically configures the standard auth providers and you **do

-The legacy API password auth provider won't be loaded if your API password is located in a package. This is because Home Assistant processes the `auth_provider` during the `core` section loading, which is earlier than the `packages` processing. +[Issue 16441](https://github.com/home-assistant/home-assistant/issues/16441): the legacy API password auth provider won't be automatically configured if your API password is located in a package. This is because Home Assistant processes the `auth_provider` during the `core` section loading, which is earlier than the `packages` processing.

Authentication providers are configured in your `configuration.yaml` under the `homeassistant:` block: From 024731bba9d712d6429daaf487aabc5209a5ae30 Mon Sep 17 00:00:00 2001 From: Marat Levit Date: Sun, 16 Sep 2018 17:30:04 +1000 Subject: [PATCH 45/97] Fixed MariaDB example (#6291) MariaDB example had 'db_url' in the incorrect location under 'queries'. --- source/_components/sensor.sql.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.sql.markdown b/source/_components/sensor.sql.markdown index 201861f2620..248b3caa8c0 100644 --- a/source/_components/sensor.sql.markdown +++ b/source/_components/sensor.sql.markdown @@ -132,9 +132,9 @@ SELECT * FROM states WHERE entity_id='binary_sensor.xyz789' GROUP BY state ORDER ```yaml sensor: - platform: sql + db_url: mysql://user:password@localhost/hass queries: - name: DB size - db_url: mysql://user:password@localhost/hass query: 'SELECT table_schema "database", Round(Sum(data_length + index_length) / 1024, 1) "value" FROM information_schema.tables WHERE table_schema="hass" GROUP BY table_schema;' column: 'value' unit_of_measurement: kB From 23c3bcd6de852754b5bd5996a08e18cd772a128f Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 16 Sep 2018 15:24:03 +0100 Subject: [PATCH 46/97] Typo fix --- source/_components/konnected.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/konnected.markdown b/source/_components/konnected.markdown index 7b4c5117312..7caad925d3b 100644 --- a/source/_components/konnected.markdown +++ b/source/_components/konnected.markdown @@ -62,7 +62,7 @@ devices: type: list keys: id: - description: The MAC address of the WiFi module with colons/punctuation removed. You musst use the full 12-character MAC address with lower case letters. This is visible in the device's WiFi SSID and hostname. + description: The MAC address of the WiFi module with colons/punctuation removed. You must use the full 12-character MAC address with lower case letters. This is visible in the device's WiFi SSID and hostname. required: true type: string binary_sensors: From c80fafcdc0d073d56c283b52aa859781654f8dfe Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 16 Sep 2018 21:30:03 +0200 Subject: [PATCH 47/97] Update blog --- source/_posts/2018-09-15-release-78.markdown | 61 ++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/source/_posts/2018-09-15-release-78.markdown b/source/_posts/2018-09-15-release-78.markdown index b595c05b9a8..80659a88e5d 100644 --- a/source/_posts/2018-09-15-release-78.markdown +++ b/source/_posts/2018-09-15-release-78.markdown @@ -44,6 +44,24 @@ Experiencing issues introduced by this release? Please report them in our [issue - Added Twitch v5 support to the twitch platform ([@ioangogo] - [#16428]) ([sensor.twitch docs]) (breaking change) - Update radiotherm ([@cpw] - [#15031]) ([climate.radiotherm docs]) (breaking change) +## {% linkable_title Beta Fixes %} + +- Replace api_password in Camera.Push ([@dgomes] - [#16339]) ([camera.push docs]) (beta fix) +- Fail fetch auth providers if onboarding required ([@balloob] - [#16454]) ([auth docs]) (beta fix) +- Fix insteon Hub v1 support ([@teharris1] - [#16472]) ([insteon docs]) (beta fix) +- bugfix - incorrect camera type and missing sensors when multiple netatmo cameras ([@vikramgorla] - [#16490]) ([netatmo docs]) (beta fix) +- Fix arlo intilization when no base station available ([@zellux] - [#16529]) ([arlo docs]) (beta fix) +- Long-lived access token ([@awarecan] - [#16453]) ([auth docs]) (beta fix) +- Fix typo ([@balloob] - [#16556]) (beta fix) +- Fix invalid state ([@balloob] - [#16558]) (beta fix) +- Add websocket commands for refresh tokens ([@balloob] - [#16559]) ([auth docs]) (beta fix) +- Return if refresh token is current used one in WS API ([@awarecan] - [#16575]) ([auth docs]) ([websocket_api docs]) (beta fix) +- Track refresh token last usage information ([@awarecan] - [#16408]) ([auth docs]) (beta fix) +- Increasing python-websockets' version number ([@zoe1337] - [#16578]) ([media_player.webostv docs]) (beta fix) +- Add retry limit for chromecast connection ([@awarecan] - [#16471]) ([media_player.cast docs]) (beta fix) +- Fix broken bluetooth tracker ([@awarecan] - [#16589]) ([device_tracker docs]) (beta fix) +- Rewrite bluetooth le ([@pvizeli] - [#16592]) ([device_tracker docs]) (beta fix) + ## {% linkable_title All changes %} - Add 'moon_phase' to Dark Sky sensor ([@fabaff] - [#16179]) ([sensor.darksky docs]) @@ -143,6 +161,22 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add a base_url configuration setting to tts. ([@lddubeau] - [#16478]) ([tts docs]) - Upgrade youtube_dl to 2018.09.10 ([@fabaff] - [#16534]) ([media_extractor docs]) - Upgrade keyring to 15.0.0 ([@fabaff] - [#16536]) +- Updates documentation repo URL in PR template ([@frenck] - [#16537]) +- Replace api_password in Camera.Push ([@dgomes] - [#16339]) ([camera.push docs]) (beta fix) +- Fail fetch auth providers if onboarding required ([@balloob] - [#16454]) ([auth docs]) (beta fix) +- Fix insteon Hub v1 support ([@teharris1] - [#16472]) ([insteon docs]) (beta fix) +- bugfix - incorrect camera type and missing sensors when multiple netatmo cameras ([@vikramgorla] - [#16490]) ([netatmo docs]) (beta fix) +- Fix arlo intilization when no base station available ([@zellux] - [#16529]) ([arlo docs]) (beta fix) +- Long-lived access token ([@awarecan] - [#16453]) ([auth docs]) (beta fix) +- Fix typo ([@balloob] - [#16556]) (beta fix) +- Fix invalid state ([@balloob] - [#16558]) (beta fix) +- Add websocket commands for refresh tokens ([@balloob] - [#16559]) ([auth docs]) (beta fix) +- Return if refresh token is current used one in WS API ([@awarecan] - [#16575]) ([auth docs]) ([websocket_api docs]) (beta fix) +- Track refresh token last usage information ([@awarecan] - [#16408]) ([auth docs]) (beta fix) +- Increasing python-websockets' version number ([@zoe1337] - [#16578]) ([media_player.webostv docs]) (beta fix) +- Add retry limit for chromecast connection ([@awarecan] - [#16471]) ([media_player.cast docs]) (beta fix) +- Fix broken bluetooth tracker ([@awarecan] - [#16589]) ([device_tracker docs]) (beta fix) +- Rewrite bluetooth le ([@pvizeli] - [#16592]) ([device_tracker docs]) (beta fix) [#14753]: https://github.com/home-assistant/home-assistant/pull/14753 [#14754]: https://github.com/home-assistant/home-assistant/pull/14754 @@ -196,6 +230,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#16323]: https://github.com/home-assistant/home-assistant/pull/16323 [#16327]: https://github.com/home-assistant/home-assistant/pull/16327 [#16337]: https://github.com/home-assistant/home-assistant/pull/16337 +[#16339]: https://github.com/home-assistant/home-assistant/pull/16339 [#16340]: https://github.com/home-assistant/home-assistant/pull/16340 [#16344]: https://github.com/home-assistant/home-assistant/pull/16344 [#16346]: https://github.com/home-assistant/home-assistant/pull/16346 @@ -219,28 +254,43 @@ Experiencing issues introduced by this release? Please report them in our [issue [#16397]: https://github.com/home-assistant/home-assistant/pull/16397 [#16403]: https://github.com/home-assistant/home-assistant/pull/16403 [#16404]: https://github.com/home-assistant/home-assistant/pull/16404 +[#16408]: https://github.com/home-assistant/home-assistant/pull/16408 [#16415]: https://github.com/home-assistant/home-assistant/pull/16415 [#16419]: https://github.com/home-assistant/home-assistant/pull/16419 [#16428]: https://github.com/home-assistant/home-assistant/pull/16428 [#16429]: https://github.com/home-assistant/home-assistant/pull/16429 [#16450]: https://github.com/home-assistant/home-assistant/pull/16450 +[#16453]: https://github.com/home-assistant/home-assistant/pull/16453 +[#16454]: https://github.com/home-assistant/home-assistant/pull/16454 [#16455]: https://github.com/home-assistant/home-assistant/pull/16455 [#16459]: https://github.com/home-assistant/home-assistant/pull/16459 [#16460]: https://github.com/home-assistant/home-assistant/pull/16460 [#16463]: https://github.com/home-assistant/home-assistant/pull/16463 [#16465]: https://github.com/home-assistant/home-assistant/pull/16465 [#16470]: https://github.com/home-assistant/home-assistant/pull/16470 +[#16471]: https://github.com/home-assistant/home-assistant/pull/16471 +[#16472]: https://github.com/home-assistant/home-assistant/pull/16472 [#16477]: https://github.com/home-assistant/home-assistant/pull/16477 [#16478]: https://github.com/home-assistant/home-assistant/pull/16478 [#16486]: https://github.com/home-assistant/home-assistant/pull/16486 +[#16490]: https://github.com/home-assistant/home-assistant/pull/16490 [#16494]: https://github.com/home-assistant/home-assistant/pull/16494 [#16495]: https://github.com/home-assistant/home-assistant/pull/16495 [#16501]: https://github.com/home-assistant/home-assistant/pull/16501 [#16502]: https://github.com/home-assistant/home-assistant/pull/16502 [#16507]: https://github.com/home-assistant/home-assistant/pull/16507 [#16515]: https://github.com/home-assistant/home-assistant/pull/16515 +[#16529]: https://github.com/home-assistant/home-assistant/pull/16529 [#16534]: https://github.com/home-assistant/home-assistant/pull/16534 [#16536]: https://github.com/home-assistant/home-assistant/pull/16536 +[#16537]: https://github.com/home-assistant/home-assistant/pull/16537 +[#16556]: https://github.com/home-assistant/home-assistant/pull/16556 +[#16558]: https://github.com/home-assistant/home-assistant/pull/16558 +[#16559]: https://github.com/home-assistant/home-assistant/pull/16559 +[#16575]: https://github.com/home-assistant/home-assistant/pull/16575 +[#16578]: https://github.com/home-assistant/home-assistant/pull/16578 +[#16589]: https://github.com/home-assistant/home-assistant/pull/16589 +[#16592]: https://github.com/home-assistant/home-assistant/pull/16592 [@9R]: https://github.com/9R [@ASMfreaK]: https://github.com/ASMfreaK [@Cereal2nd]: https://github.com/Cereal2nd @@ -269,6 +319,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@exxamalte]: https://github.com/exxamalte [@fabaff]: https://github.com/fabaff [@flo-wer]: https://github.com/flo-wer +[@frenck]: https://github.com/frenck [@fucm]: https://github.com/fucm [@grea09]: https://github.com/grea09 [@htotoo]: https://github.com/htotoo @@ -283,6 +334,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@phil65]: https://github.com/phil65 [@pnbruckner]: https://github.com/pnbruckner [@pszafer]: https://github.com/pszafer +[@pvizeli]: https://github.com/pvizeli [@rcloran]: https://github.com/rcloran [@rohankapoorcom]: https://github.com/rohankapoorcom [@rytilahti]: https://github.com/rytilahti @@ -296,9 +348,14 @@ Experiencing issues introduced by this release? Please report them in our [issue [@thomaslian]: https://github.com/thomaslian [@tschmidty69]: https://github.com/tschmidty69 [@tsvi]: https://github.com/tsvi +[@vikramgorla]: https://github.com/vikramgorla [@vrih]: https://github.com/vrih +[@zellux]: https://github.com/zellux +[@zoe1337]: https://github.com/zoe1337 [alarm_control_panel.yale_smart_alarm docs]: /components/alarm_control_panel.yale_smart_alarm/ +[arlo docs]: /components/arlo/ [asterisk_mbox docs]: /components/asterisk_mbox/ +[auth docs]: /components/auth/ [automation docs]: /components/automation/ [automation.event docs]: /docs/automation/trigger/#event-trigger [automation.homeassistant docs]: /docs/automation/trigger/#home-assistant-trigger @@ -310,6 +367,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [binary_sensor.openuv docs]: /components/binary_sensor.openuv/ [camera docs]: /components/camera/ [camera.proxy docs]: /components/camera.proxy/ +[camera.push docs]: /components/camera.push/ [climate.generic_thermostat docs]: /components/climate.generic_thermostat/ [climate.nest docs]: /components/climate.nest/ [climate.opentherm_gw docs]: /components/climate.opentherm_gw/ @@ -338,8 +396,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_player.onkyo docs]: /components/media_player.onkyo/ [media_player.songpal docs]: /components/media_player.songpal/ [media_player.sonos docs]: /components/media_player.sonos/ +[media_player.webostv docs]: /components/media_player.webostv/ [media_player.yamaha docs]: /components/media_player.yamaha/ [mqtt docs]: /components/mqtt/ +[netatmo docs]: /components/netatmo/ [notify docs]: /components/notify/ [openuv docs]: /components/openuv/ [rfxtrx docs]: /components/rfxtrx/ @@ -389,5 +449,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [vacuum docs]: /components/vacuum/ [vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ [velbus docs]: /components/velbus/ +[websocket_api docs]: /components/websocket_api/ [zha docs]: /components/zha/ [zoneminder docs]: /components/zoneminder/ From 54063a66415611ac6e80c0b1464d498c719cc8ce Mon Sep 17 00:00:00 2001 From: Diogo Gomes Date: Tue, 11 Sep 2018 10:30:09 +0100 Subject: [PATCH 48/97] Adds token parameter to Camera.Push (#6130) * Adds token parameter to Camera.Push * update require --- source/_components/camera.push.markdown | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/source/_components/camera.push.markdown b/source/_components/camera.push.markdown index c70dee014c0..be639978032 100644 --- a/source/_components/camera.push.markdown +++ b/source/_components/camera.push.markdown @@ -25,11 +25,9 @@ The `push` camera can as an example be used with [motionEye](https://github.com/ In motionEye, under **File Storage -> Run A Command** type in: ```bash -curl -X POST -F "image=@%f" http://my.hass.server.com:8123/api/camera_push/camera.push_camera +curl -X POST -F "image=@%f" http://my.hass.server.com:8123/api/camera_push/camera.push_camera?token=12345678 ``` -Please take note that you might need to add `-H "x-ha-access: YOUR_PASSWORD"` if you have API authentication enabled. - Optionally configure motionEye to save only motion triggered images by going into **Still Images -> Capture Mode** and setting **Motion Triggered**. Tune your preferences under **Motion Detection**. In this setup, you can configure the push camera to continuously replay the last motion triggered event using a configuration such as: @@ -40,6 +38,7 @@ camera: name: MotionEye Outdoor buffer: 3 timeout: 5 + token: 12345678 ``` ## {% linkable_title Configuration %} @@ -51,6 +50,7 @@ To enable this camera in your installation, add the following to your `configura camera: - platform: push name: My Push Camera + token: 12345678 ``` {% configuration %} @@ -69,6 +69,10 @@ timeout: required: false default: 5 seconds type: time +token: + description: User provided token acting as access control, should be a large string (more then 8 chars). Required if you can't use HA new auth system (0.77). + required: false + type: string field: description: HTTP POST field containing the image file required: false From 5973770fa0db1eae1e03251c6e61fcac89b20bf6 Mon Sep 17 00:00:00 2001 From: Tom Harris Date: Mon, 10 Sep 2018 13:23:36 -0400 Subject: [PATCH 49/97] Support for Insteon Hub Version 1 (#6211) * Support for Insteon Hub Version 1 * Spelling and gramar fixes * :pencil2: Tweaks --- .gitignore | 1 + source/_components/insteon.markdown | 98 +++++++++++++++++------------ 2 files changed, 60 insertions(+), 39 deletions(-) diff --git a/.gitignore b/.gitignore index f02128325f5..933ece07209 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ source/.jekyll-metadata /.vs/slnx.sqlite-journal /.vs/VSWorkspaceState.json .vscode +*.suo diff --git a/source/_components/insteon.markdown b/source/_components/insteon.markdown index e2518a09784..7cb8e635ec7 100644 --- a/source/_components/insteon.markdown +++ b/source/_components/insteon.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Insteon" -description: "Instructions on how to setup an Insteon Modem (PLM or Hub) locally within Home Assistant." +description: "Instructions on how to set up an Insteon Modem (PLM or Hub) locally within Home Assistant." date: 2018-08-20 16:00 sidebar: true comments: false @@ -18,19 +18,20 @@ linked INSTEON devices to be used within Home Assistant as binary sensors, lights, fans, sensors and switches. Device support is provided by the underlying [insteonplm] package. It is known to work with the [2413U] USB and [2412S] RS242 flavors of PLM and the [2448A7] USB stick. It has also been -tested to work with the [2245] Hub. +tested to work with the [2242] and [2245] Hubs. [insteonplm]: https://github.com/nugget/python-insteonplm [2413U]: https://www.insteon.com/powerlinc-modem-usb [2412S]: https://www.insteon.com/powerlinc-modem-serial [2448A7]: https://www.smarthome.com/insteon-2448a7-portable-usb-adapter.html [2245]: https://www.insteon.com/insteon-hub/ +[2242]: https://www.insteon.com/support-knowledgebase/2014/9/26/insteon-hub-owners-manual ### {% linkable_title INSTEON Modem configuration %} -To setup a Powerline Modem (PLM) device such as the [2413U], use the following -configuration: +To set up an INSTEON Powerline Modem (PLM) device such as the [2413U], use the +following configuration: ```yaml # PLM configuration variables @@ -38,15 +39,26 @@ insteon: port: SERIAL_PORT ``` -To setup an INSTEON Hub such as the [2245], use the following configuration: - +To set up an INSTEON Hub model [2245], use the following configuration: + ```yaml -# Hub configuration variables +# Hub 2245 configuration variables insteon: host: HOST ip_port: IP_PORT username: USERNAME password: PASSWORD + hub_version: 2 +``` + +To set up an INSTEON Hub model [2242], use the following configuration: + +```yaml +# Hub 2242 configuration variables +insteon: + host: HOST + ip_port: IP_PORT + hub_version: 1 ``` Addtional configuration items are available: @@ -71,14 +83,23 @@ insteon: ``` Configuration variables: - **port** (*Required for PLM setup*): The serial or USB port for your device, - e.g., `/dev/ttyUSB0` -- **host** (*Required for Hub setup*): The host name or IP address of the Hub -- **ip_port** (*Optional for Hub setup*): The IP port number of the Hub. - (default value is 25105) -- **username** (*Required for Hub setup*): The username to login to the local - Hub -- **password** (*Required for Hub setup*): The password to login to the local - Hub + e.g., `/dev/ttyUSB0` or `COM3` +- **host** (*Required for Hub setup*): The host name or IP address of the Hub. +- **ip_port** (*Optional for Hub setup*): The IP port number of the Hub. For + Hub model [2245] (i.e. Hub version 2) the default port is 25105. For the Hub + model [2242] (i.e. Hub version 1) the default port is 9761. Use the Insteon + app to find the port number for your specific Hub. +- **username** (*Required for Hub version 2 setup*): The username to login in + to the local Hub. This is required for Hub [2245] (i.e. Hub version 2) setup. + You can find your Hub username on the bottom of the Hub or you can use the + Insteon app. +- **password** (*Required for Hub version 2 setup*): The password to login in + to the local Hub. This is required for Hub [2245] (i.e. Hub version 2) setup. + You can find your Hub password on the bottom of the Hub or you can use the + Insteon app. +- **hub_version** (*Required for Hub version 1 setup*): The Hub version number + where model [2242] is Hub version 1 and model [2245] is Hub version 2. + (Default is 2) - **device_override** (*Optional*): Override the default device definition - *ADDRESS* is found on the device itself in the form 1A.2B.3C or 1a2b3c - *CATEGORY* is found in the back of the device's User Guide in the form of @@ -92,16 +113,16 @@ Configuration variables: - *UNITCODE* is the X10 unit code values 1 - 16 - *PLATFORM* is the Home Assistant Platform to associate the device with. The following platforms are supported - - binary_sensor: Used for on/off devices or keypad buttons that are read only. + - binary_sensor: Used for on/off devices or keypad buttons that are read-only. - light: Used for dimmable X10 devices - switch: Used for On/Off X10 devices - *STEPS* is the number of dim/bright steps the device supports. Used for dimmable X10 devices only. Default value is 22. -- **x10_all_units_off** (*Optional*): Creates an binary_sensor that responds +- **x10_all_units_off** (*Optional*): Creates a binary_sensor that responds to the X10 standard command for All Units Off. -- **x10_all_lights_on** (*Optional*): Creates an binary_sensor that responds +- **x10_all_lights_on** (*Optional*): Creates a binary_sensor that responds to the X10 standard command for All Lights On -- **x10_all_lights_off** (*Optional*): Creates an binary_sensor that responds +- **x10_all_lights_off** (*Optional*): Creates a binary_sensor that responds to the X10 standard command for All Lights Off ### {% linkable_title Autodiscovery %} @@ -111,27 +132,27 @@ per device. Subsequent startups will occur much quicker using cached device information. If a device is not recognized during autodiscovery, you can add the device to the **device_override** configuration. -In order for a device to be discovered it must be linked to the INSTEON Modem +In order for a device to be discovered, it must be linked to the INSTEON Modem as either a responder or a controller. ### {% linkable_title Linking Devices to the INSTEON Modem %} In order for any two Insteon devices to talk with one another, they must be -linked. For an overview of device linking please read the Insteon page on +linked. For an overview of device linking, please read the Insteon page on [understanding linking]. The Insteon Modem module supports All-Linking through [Development Tools] service calls. The following services are available: - **insteon.add_all_link**: Puts the Insteon Modem (IM) into All-Linking -mode. The IM can be set as as controller or a responder. If the IM is a -controler, put the IM into linking mode then press the SET button on the -device. If the IM is a responer, press the SET button on the device then +mode. The IM can be set as a controller or a responder. If the IM is a +controller, put the IM into linking mode then press the SET button on the +device. If the IM is a responder, press the SET button on the device then put the IM into linking mode. - **insteon.delete_all_link**: Tells the Insteon Modem (IM) to remove an All-Link record from the All-Link Database of the IM and a device. Once the IM is set to delete the link, press the SET button on the corresponding device to complete the process. - **insteon.load_all_link_database**: Load the All-Link Database for a -device. WARNING - Loading a device All-Link database may take a LONG time and +device. WARNING - Loading a device All-Link database may take a LONG time and may need to be repeated to obtain all records. - **insteon.print_all_link_database**: Print the All-Link Database for a device. Requires that the All-Link Database is loaded first. @@ -174,7 +195,7 @@ devices. INSTEON devices are added to Home Assistant using the platform(s) that make the most sense given the model and features of the hardware. The features of the -INSTEON device are built into the Home Assistant platform. Changing the +INSTEON devices are built into the Home Assistant platform. Changing the platform is not recommended. There are two primary uses for the **device_override** feature. - Devices that do not respond during autodiscovery. This is common for battery @@ -185,7 +206,7 @@ platform is not recommended. There are two primary uses for the ### {% linkable_title Example Configuration with Options%} ```yaml -# Full example of insteon configuration with customizations and overrides +# Full example of Insteon configuration with customizations and overrides homeassistant: customize: @@ -205,7 +226,7 @@ insteon: ### {% linkable_title What NOT to do %} -Insteon Modem is a top level component and device discovery will identify +Insteon Modem is a top-level component and device discovery will identify the Home Assistant platform the device belongs in. As such, do not declare Insteon devices in other platforms. For example, this configuration will NOT work: @@ -224,19 +245,18 @@ events. The following events are available: - **insteon.button_on** - **address**: (required) The Insteon device address in lower case without dots (e.g. 1a2b3c) - - **button**: (Optional) The button id in lower case. For an 4 button remote - the values are a to d. For an 8 button remote the values are a to g. For - a one button remote this field is not used. + - **button**: (Optional) The button id in lower case. For a 4-button remote + the values are `a` to `d`. For an 8 button remote the values are `a` to `g`. For + a one-button remote this field is not used. - **insteon.button_of** - **address**: (required) The Insteon device address in lower case without dots (e.g. 1a2b3c) - - **button**: (Optional) The button id in lower case. For an 4 button remote - the values are a to d. For an 8 button remote the values are a to g. For - a one button remote this field is not used. + - **button**: (Optional) The button id in lower case. For a 4-button remote + the values are a to d. For an 8 button remote the values are `a` to `g`. For + a one-button remote this field is not used. -This allows the mini-remotes to be configured as - -Here is an example of how to use these events for automations: +This allows the mini-remotes to be configured as triggers for automations. Here +is an example of how to use these events for automations: ``` automation: @@ -276,8 +296,8 @@ The INSTEON Hub has three known issues that are inherent to the design of the Hub: 1. If you see multiple error messages in the log file stating the Hub -connection is closed and reconnection has failed, this generally requires -the Hub to be restarted in order to reconnect. +connection is closed, and reconnection has failed, this generally requires +the Hub to be restarted to reconnect. 2. You cannot use both Home Assistant and the INSTEON app. If you do, the changes made in the app will not appear in Home Assistant. Changes made in From 9898267aa50b58e17c8568019ba7ca0bc5c2bd7f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 16 Sep 2018 21:42:05 +0200 Subject: [PATCH 50/97] Add breaking changes --- source/_posts/2018-09-15-release-78.markdown | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/source/_posts/2018-09-15-release-78.markdown b/source/_posts/2018-09-15-release-78.markdown index 80659a88e5d..9d4eaefade9 100644 --- a/source/_posts/2018-09-15-release-78.markdown +++ b/source/_posts/2018-09-15-release-78.markdown @@ -13,6 +13,12 @@ og_image: /images/blog/2018-09-0.78/social.png +It's time for a new release and oh boy, what a time to be alive! Today marks our 5th (!!!) anniversary. That's 5 years we've been bringing privacy focused and locally controlled home automation to your home. Happy birthday to us. + +This release includes two new features for the auth system. The first one is long-lived access tokens. These are tokens that don't expire and can be used in your scripts instead of API password. Instructions on how to create and use them can be found on your profile. + +Also on your profile page is a new list of existing refresh tokens. These are all the tokens that are currently active for your account. If you ran into issues that the remember login dialog didn't show, you might have a lot. Don't worry, you can delete them all. + ## {% linkable_title New Platforms %} - Add temperature sensors to the velbus component ([@Cereal2nd] - [#16203]) ([velbus docs]) ([sensor.velbus docs]) (new-platform) @@ -37,12 +43,13 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} -- Rewrite of Trafikverket weather - Multiple sensor types supported ([@endor-force] - [#15935]) ([sensor.trafikverket_weatherstation docs]) (breaking change) -- Fix geizhals price parsing ([@JulianKahnert] - [#15990]) ([sensor.geizhals docs]) (breaking change) -- Update to EnvoyReader 0.2, support for more hardware ([@jesserizzo] - [#16212]) ([sensor.enphase_envoy docs]) (breaking change) -- Fix Mi Flora median calculation ([@PaulAnnekov] - [#16085]) ([sensor.miflora docs]) (breaking change) -- Added Twitch v5 support to the twitch platform ([@ioangogo] - [#16428]) ([sensor.twitch docs]) (breaking change) -- Update radiotherm ([@cpw] - [#15031]) ([climate.radiotherm docs]) (breaking change) +- Trafikverket weather: Instead of having multiple sensor configurations per station, add only one configuration per station and select the type of measurement data to subscribe to using monitored_conditions. +The configuration value type should no longer be used. ([@endor-force] - [#15935]) ([sensor.trafikverket_weatherstation docs]) (breaking change) +- Geizhals: config has changed. Remove domain and regex, specify locale instead: `AT`, `EU`, `DE`, `UK` or `PL`. ([@JulianKahnert] - [#15990]) ([sensor.geizhals docs]) (breaking change) +- Update to EnvoyReader 0.2, support for more hardware. Change keys in monitored_conditions from `7_days_production` and `7_days_consumption` to `seven_days_production` and `seven_days_consumption` ([@jesserizzo] - [#16212]) ([sensor.enphase_envoy docs]) (breaking change) +- Fix Mi Flora median calculation. Removed `retries` and `timeout` config parameters, they were not used for several months. Replaced `cache_value` config with `scan_interval` to fix a bug in the PR. ([@PaulAnnekov] - [#16085]) ([sensor.miflora docs]) (breaking change) +- Twitch now requires a `client_id` and so the platform got updated. ([@ioangogo] - [#16428]) ([sensor.twitch docs]) (breaking change) +- The radiotherm `fan` and `mode` state attributes were updated to reflect the real-time fan and mode states of the thermostat, rather than the overall selected state (automatic, mostly). The mode attributes still contain the selected modes (fan on/auto, heat/cool/auto). ([@cpw] - [#15031]) ([climate.radiotherm docs]) (breaking change) ## {% linkable_title Beta Fixes %} From 6523eb0e9d193b1984495f05f252343f17b52f8d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 16 Sep 2018 21:46:03 +0200 Subject: [PATCH 51/97] add component image --- .../blog/2018-09-release-0.78/components.png | Bin 0 -> 34224 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 source/images/blog/2018-09-release-0.78/components.png diff --git a/source/images/blog/2018-09-release-0.78/components.png b/source/images/blog/2018-09-release-0.78/components.png new file mode 100644 index 0000000000000000000000000000000000000000..c02f11a8c8aca57a71277e3d3b8162d55a0c5437 GIT binary patch literal 34224 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 Tdk0@yv8UM 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 literal 0 HcmV?d00001 From 3b8e9eb550a0625cb6c71a429379721acf2c7ae0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 17 Sep 2018 18:39:44 +0200 Subject: [PATCH 52/97] Update date --- source/_posts/2018-09-15-release-78.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_posts/2018-09-15-release-78.markdown b/source/_posts/2018-09-15-release-78.markdown index 9d4eaefade9..a149ccd1df6 100644 --- a/source/_posts/2018-09-15-release-78.markdown +++ b/source/_posts/2018-09-15-release-78.markdown @@ -1,9 +1,9 @@ --- layout: post -title: "0.78: XXX - Update date" -description: "XXX" -date: 2018-09-10 00:01:00 -date_formatted: "September 15, 2018" +title: "0.78: More auth, Switchmate, Yale Smart Alarm, OpenTherm" +description: "We're 5! We got some great new auth stuff in this release and support for Switchmate, Yale Smart Alarm and OpenTherm." +date: 2018-09-17 00:01:00 +date_formatted: "September 17, 2018" author: Paulus Schoutsen author_twitter: balloob comments: true From 6702f4884366cfde1d45cb7eacd8bdfeaccb901b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 15 Sep 2018 14:54:55 +0200 Subject: [PATCH 53/97] Add blog post Thinking Big --- .../_posts/2018-09-16-thinking-big.markdown | 97 ++++++++++++++++++ .../blog/2018-09-thinking-big/logo-text.svg | 1 + .../blog/2018-09-thinking-big/social.png | Bin 0 -> 130231 bytes 3 files changed, 98 insertions(+) create mode 100644 source/_posts/2018-09-16-thinking-big.markdown create mode 100644 source/images/blog/2018-09-thinking-big/logo-text.svg create mode 100644 source/images/blog/2018-09-thinking-big/social.png diff --git a/source/_posts/2018-09-16-thinking-big.markdown b/source/_posts/2018-09-16-thinking-big.markdown new file mode 100644 index 00000000000..5bd55ef22c4 --- /dev/null +++ b/source/_posts/2018-09-16-thinking-big.markdown @@ -0,0 +1,97 @@ +--- +layout: post +title: "Thinking Big" +description: "The new authentication system is live! Chat on hangouts! " +date: 2018-09-15 00:01:00 +date_formatted: "September 16, 2018" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Announcements +og_image: /images/blog/2018-09-thinking-big/social.png +--- + +Tomorrow marks the 5th anniversary of Home Assistant. I want to spend this post not only reflecting on the last 5 years, but also look at what is ahead of us, where we want to go, what we want Home Assistant to be. + +Home Assistant wasn’t born out of ideology. I built it because I got some smart lights and wanted to script them. I made that script open source and it went from there. As Home Assistant has grown, so has the world around us, and so have I. + +A lot of IoT products have been introduced since Home Assistant started. Sadly, the trend in these products is to send all data to the cloud and manage your house from there. I’ve come to realize that it’s not in the big corporations interest to make a product that focuses on privacy and local control. Our data is too useful for them. + +I don’t like this trend. I don’t like seeing more and more of our data being hoarded by a few giant companies, centralizing it in a few systems and using it to influence how we’ll be treated online. It’s our lives, our data, and we should be in control. Not some algorithm optimized for engagement. + +And so I want to introduce a goal for Home Assistant. A goal that will shape how the platform will evolve in the upcoming years. + + +## {% linkable_title The goal %} + +It’s our goal to create a people focused home automation platform. A platform that is open source and which prioritizes privacy and local control. + + - **Privacy.** All your data will be stored locally. + - **Local control.** All logic will run locally. The cloud will only be invoked as needed. + - **Open source.** The platform is freely available for users and companies alike. The more people that choose a privacy focused platform over a cloud-based one is a win for us. + - **Interoperability.** The platform implements APIs to easily share the data. We want your data to be available to any other application that you wish. + +## {% linkable_title What we’re going to build to achieve this goal %} + +Many things! However, here is a list of things that I am most enthusiastic about: + + - Remote connection to your instance to control Home Assistant while being away. We will use end-to-end encryption to ensure that the cloud can’t read your data. Powered by Home Assistant Cloud so you just have to log in and it will work. This is the next feature to be worked on for the cloud. + - Attribution. We’ve recently added both users and context. Next up is making it visible in the logbook which user was responsible for what change. + - Permissions. Using the same user and context features, we will also be able to limit access to entities to users. + - Improved device management. We’ve recently added devices to Home Assistant. As a user, you will be able to place devices in areas, see which entities are part of a device and make sure your entities are up to date. + - Accessibility. We want to make Hass.io run on as many devices as possible, making it very easy for people to get started with a private home. + - Integrate Mozilla's [Web Things API] to make it easier to interact with other home automation platforms. The introduced device management makes it perfectly aligned with the Web Things data model. + - Cloud Transparency. We want to make it visible what data is being shared with Amazon Alexa and Google Home clouds. + - Better Z-Wave. Our current integration has room for improvement. The owner of Z-Wave has announced a [public SDK](http://zwavepublic.com/), which we should explore to integrate with Home Assistant. + +## {% linkable_title What we need to achieve this goal %} + +Home Assistant has grown beyond what we can expect from people to handle in their spare time. We want to keep the community friendly, our code quality high, our upgrades smooth, our documentation up to date and our platform secure. + +In Ubiquiti we’ve found a great partner with aligned goals. They hired me in April to work full-time on Home Assistant which has already resulted in great progress – including some of the enhancements listed above. But one full-time employee is not enough. + +So I have started a new company to raise money and help Home Assistant achieve its goals: [Nabu Casa, Inc][nabu-home]. The company will run Home Assistant Cloud for a $5/month subscription. The revenue will be used to extend the cloud functionality, finance the infrastructure of the Home Assistant website and community, and pay full-time employees to contribute to Home Assistant to reach its goals. + +
Logo of Nabu Casa, Inc +
+ +Nabu Casa, Inc. will only be funded by its subscribers. That way it is guaranteed that we will do what is best for our users, the ones that provide the money. We will not raise any money from investors. Big money tends to care more about making more money than humans and privacy. We need to stay in control to ensure our goals are met. + +If you have been a user of Home Assistant Cloud for the last 9 months, we want to thank you for being part of our open beta. All members of the open beta will be automatically enrolled in the free trial and will be able to use Home Assistant Cloud for one more month till October 17, no changes in Home Assistant necessary. If you haven’t entered any payment information by the end of the trial, you will lose access to Home Assistant Cloud. + +More information: + + - [Nabu Casa, Inc homepage][nabu-home] + - [Manage your Home Assistant Cloud account][nabu-account] + +## {% linkable_title FAQ %} + +### {% linkable_title Do I have to pay to use Home Assistant and Hass.io? %} + +No. Home Assistant is open source and free to install and this will not change. Only the cloud service will be part of a paid subscription. + +### {% linkable_title Will Home Assistant and Hass.io remain open source? %} + +Yes. Nabu Casa will only be responsible for Home Assistant Cloud and it will contribute resources to help Home Assistant achieve its goals and pay for its infrastructure. + +### {% linkable_title Why not take donations? %} + +Relying on donations makes budgeting for employees impossible without exposing them and their families to the risk of not getting a paycheck at the end of the month. + +### {% linkable_title Is Home Assistant Cloud open source? %} + +The majority of Home Assistant Cloud is open source. The Alexa skill source code is [here](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/alexa/smart_home.py) (with manual setup instructions [here](https://github.com/mike-grant/haaska/)) and the Google Assistant source code is [here](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/google_assistant/smart_home.py) (with manual setup instructions [here](https://www.home-assistant.io/components/google_assistant/)). Our account page and relayer are not open source. + +### {% linkable_title Will you offer a lifetime plan for a one time fee? %} + +No. A lifetime plan to a cloud service is a pyramid scheme. It means new subscribers pay for the costs of the lifetime customers. + +### {% linkable_title I think the price is too high for what I get %} + +New features will be added in the future without a price increase. The next feature we’re planning to release is encrypted remote access to your instance. + +The subscription fee does not only cover the cost of running Home Assistant Cloud. The revenue will also be used to pay for the infrastructure of running Home Assistant and the community forums. + +[nabu-home]: https://www.nabucasa.com +[nabu-account]: https://account.nabucasa.com +[Web Things API]: https://iot.mozilla.org/wot/ diff --git a/source/images/blog/2018-09-thinking-big/logo-text.svg b/source/images/blog/2018-09-thinking-big/logo-text.svg new file mode 100644 index 00000000000..784ed048c85 --- /dev/null +++ b/source/images/blog/2018-09-thinking-big/logo-text.svg @@ -0,0 +1 @@ +logo-text \ No newline at end of file diff --git a/source/images/blog/2018-09-thinking-big/social.png b/source/images/blog/2018-09-thinking-big/social.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0a5032ead7ee02df0ac643e2398e7d4c9f6617 GIT binary patch literal 130231 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

dy+RPijg2(7U&OGpe6QDuJ9q=c>I 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 Bvbz8P literal 0 HcmV?d00001 From 99289b089414f6ba74d6ee9068576535601f1a0c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 15 Sep 2018 15:14:28 +0200 Subject: [PATCH 54/97] Update cloud docs --- source/_components/cloud.markdown | 4 +- source/cloud/alexa.markdown | 104 +----------------- source/cloud/google_assistant.markdown | 110 +------------------ source/cloud/index.markdown | 33 +----- source/cloud/troubleshooting.markdown | 31 +----- source/images/supported_brands/nabu-casa.svg | 1 + 6 files changed, 19 insertions(+), 264 deletions(-) create mode 100644 source/images/supported_brands/nabu-casa.svg diff --git a/source/_components/cloud.markdown b/source/_components/cloud.markdown index 3008a52cac4..5b6417906c4 100644 --- a/source/_components/cloud.markdown +++ b/source/_components/cloud.markdown @@ -7,13 +7,13 @@ sidebar: true comments: false sharing: true footer: true -logo: home-assistant.png +logo: nabu-casa.svg ha_release: "0.60" ha_category: Voice ha_iot_class: "Cloud Push" --- -The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services like Amazon Alexa. [Learn more.](/cloud) +The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services like Amazon Alexa and Google Assistant. [Learn more.](/cloud) ```yaml # Example configuration.yaml entry to enable the cloud component diff --git a/source/cloud/alexa.markdown b/source/cloud/alexa.markdown index 8e90a4d8eef..58cbefee6a8 100644 --- a/source/cloud/alexa.markdown +++ b/source/cloud/alexa.markdown @@ -3,110 +3,14 @@ layout: page title: "Alexa via Home Assistant Cloud" description: "Enable the Alexa integration via Home Assistant Cloud integration." date: 2017-11-17 20:00 -sidebar: true +sidebar: false comments: false sharing: true footer: true redirect_from: /components/cloud.alexa/ --- -The Alexa integration allows users to control the entities via the Home Assistant Smart Home skill for Alexa. This means that you can say things like "Alexa, turn on the kitchen light" to control your local Home Assistant. +Home Assistant Cloud is a subscription service provided by our partner Nabu Casa, Inc. Check out [their website](https://www.nabucasa.com/config/amazon_alexa/) for help with the Amazon Alexa integration via Home Assistant Cloud. -To use this integration, you need to have: - - - The cloud component set up. [Learn more](/components/cloud/) - - An Alexa enabled device like the Amazon Echo - - Activated the Home Assistant Smart Home skill via the Alexa app - -You can use `configuration.yaml` to configure the entities that are being shown to Alexa and how they are exposed. - -```yaml -# Example configuration.yaml entry configuring Alexa -cloud: - alexa: - filter: - include_entities: - - light.kitchen - - light.kitchen_left - include_domains: - - switch - exclude_entities: - - switch.outside - entity_config: - light.kitchen: - name: Custom Name for Alexa - description: The light in the kitchen - switch.stairs: - display_categories: LIGHT -``` - -{% configuration cloud %} -alexa: - description: Configuration options for the Amazon Alexa integration. - required: false - type: map - keys: - filter: - description: Filters for entities to include/exclude from Alexa. - required: false - type: map - keys: - include_entities: - description: Entity IDs to include. - required: false - type: list - include_domains: - description: Domains to include. - required: false - type: list - exclude_entities: - description: Entity IDs to exclude. - required: false - type: list - exclude_domains: - description: Domains to exclude. - required: false - type: list - entity_config: - description: Entity specific configuration for Alexa - required: false - type: map - keys: - '``': - description: Entity to configure - required: false - type: map - keys: - name: - description: Name of entity to show in Alexa - required: false - type: string - description: - description: Description of entity to show in Alexa - required: false - type: string - display_categories: - description: The display category to use in Alexa. [Available categories](https://developer.amazon.com/docs/device-apis/alexa-discovery.html#display-categories) - required: false - type: string -{% endconfiguration %} - -### {% linkable_title Possible values for customizing %} - -_Configuration via `customize:` is no longer available. Use the entity config as described above._ - -### {% linkable_title Available domains %} -Currently, the following domains are available to be used with Alexa: - -- alert -- automation (enables/disables) -- cover -- fan (supports on/off and set speed) -- group -- input_boolean -- light -- lock (lock and unlock, but unlock is untested as Amazon has disabled unlock for now) -- media_player (play, pause, stop, set volume, adjust volume, next track, and previous track) -- scene -- script (enables/disables) -- switch +

Logo of Nabu Casa, Inc +
diff --git a/source/cloud/google_assistant.markdown b/source/cloud/google_assistant.markdown index 65ea395fcca..4d17dfb7fe5 100644 --- a/source/cloud/google_assistant.markdown +++ b/source/cloud/google_assistant.markdown @@ -3,115 +3,13 @@ layout: page title: "Google Assistant via Home Assistant Cloud" description: "Enable the Google Assistant via Home Assistant Cloud integration." date: 2017-11-17 20:00 -sidebar: true +sidebar: false comments: false sharing: true footer: true --- -

-The minimum supported version of Home Assistant is 0.65.6. -

+Home Assistant Cloud is a subscription service provided by our partner Nabu Casa, Inc. Check out [their website](https://www.nabucasa.com/config/google_assistant/) for help with the Google Assistant integration via Home Assistant Cloud. -The Google Assistant integration allows users to control the entities via the Home Assistant Smart Home skill for Google Assistant. This means that you can say things like "Ok Google, turn on the kitchen light" to control your local Home Assistant. - -To use this integration, you need to have: - - - The cloud component set up. [Learn more](/components/cloud/) - - A Google Assistant enabled device like the Google Home or a mobile phone running Google Assistant. - - Activated the Home Assistant Smart Home skill for Google Assistant. - - If you have a Google Home device, use the Google Home app, select *Home control*, and then add *hass.io* using the *Add devices* option. - - If you only have a mobile phone, launch Google Assistant, select the three dots menu. Under *Settings* you'll find *Home Control*. There you can add *hass.io* using the *Add devices* option. - -You can use `configuration.yaml` to configure the entities that are being shown to Google Assistant and how they are exposed. - -```yaml -# Example configuration.yaml entry configuring Google Assistant -cloud: - google_actions: - filter: - include_entities: - - light.kitchen - - light.kitchen_left - include_domains: - - switch - exclude_entities: - - switch.outside - entity_config: - switch.kitchen: - name: Custom Name for Google Assistant - aliases: - - bright lights - - entry lights - room: living room -``` - -{% configuration cloud %} -google_actions: - description: Configuration options for the Google Assistant integration. - required: false - type: map - keys: - filter: - description: Filters for entities to include/exclude from Google Assistant. - required: false - type: map - keys: - include_entities: - description: Entity IDs to include. - required: false - type: list - include_domains: - description: Domains to include. - required: false - type: list - exclude_entities: - description: Entity IDs to exclude. - required: false - type: list - exclude_domains: - description: Domains to exclude. - required: false - type: list - entity_config: - description: Entity specific configuration for Google Assistant. - required: false - type: map - keys: - '``': - description: Entity to configure - required: false - type: map - keys: - name: - description: Name of entity to show in Google Assistant. - required: false - type: string - aliases: - description: Aliases that can also be used to refer to this entity. - required: false - type: list - room: - description: Hint for Google Assistant in which room this entity is. - required: false - type: string -{% endconfiguration %} - -### {% linkable_title Available domains %} - -Currently, the following domains are available to be used with Google Assistant, listed with their default types: - -- `group` (on/off) -- `input_boolean` (on/off) -- `scene` (on) -- `script` (on) -- `switch` (on/off) -- `fan` (on/off) -- `light` (on/off/brightness/rgb color/color temp) -- `cover` (on/off/set position (via set brightness)) -- `media_player` (on/off/set volume (via set brightness)) -- `climate` (temperature setting) - -

-After setting up the cloud, if you make any device changes such as changing the name or adding a new device simply say "Ok Google, sync my devices" to get the changes to show up. -

+
Logo of Nabu Casa, Inc +
diff --git a/source/cloud/index.markdown b/source/cloud/index.markdown index 24f5cf76aa4..92749a82231 100644 --- a/source/cloud/index.markdown +++ b/source/cloud/index.markdown @@ -3,7 +3,7 @@ layout: page title: "Home Assistant Cloud" description: "Enable the Home Assistant Cloud integration." date: 2017-11-17 20:00 -sidebar: true +sidebar: false comments: false sharing: true footer: true @@ -13,32 +13,7 @@ ha_category: Voice ha_iot_class: "Cloud Push" --- -

The Home Assistant Cloud is currently free and will become part of the upcoming Community Support Package. [Learn more](/blog/2017/12/17/introducing-home-assistant-cloud/)

+Home Assistant Cloud is a subscription service provided by our partner Nabu Casa, Inc. Check out [their website](https://www.nabucasa.com) For more information on features, pricing and how to configure Home Assistant. -The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services. The following integrations are currently available: - - - [Amazon Alexa (Amazon Echo)](/cloud/alexa/) - - [Google Assistant (Google Home)](/cloud/google_assistant/) - -### {% linkable_title How does it work? %} - -The Home Assistant Cloud has been designed with security in mind. When you activate the Cloud component, your instance will create a secure connection to the Home Assistant Cloud. There is no need for any further configuration or to expose your instance to the internet. - -Integrations like Alexa or Google will deliver messages to our cloud which we will forward to your local instance for processing. We just forward the response back. This means that we do not have to store the state of your house in our cloud, we’re just the messenger! - -You can find a list of frequently asked questions (and their answers) in [this blog post](/blog/2017/12/17/introducing-home-assistant-cloud/#faq). - -### {% linkable_title Enabling the cloud %} - -The Home Assistant Cloud is enabled by default. If not, add this to your configuration: - -```yaml -# Example configuration.yaml entry to enable the cloud component -cloud: -``` - -Once activated, go to the configuration panel in Home Assistant and create an account and log in. If you are not seeing the **Configuration** panel, make sure you have the following option enabled in your configuration.yaml` file. - -```yaml -config: -``` +
Logo of Nabu Casa, Inc +
diff --git a/source/cloud/troubleshooting.markdown b/source/cloud/troubleshooting.markdown index c9868e882f1..4e8c2a88d79 100644 --- a/source/cloud/troubleshooting.markdown +++ b/source/cloud/troubleshooting.markdown @@ -3,36 +3,13 @@ layout: page title: "Troubleshooting Home Assistant Cloud" description: "Pointers to help troubleshooting issues with Home Assistant Cloud." date: 2018-07-17 20:00 -sidebar: true +sidebar: false comments: false sharing: true footer: true --- -Alright, so you got all excited, tried to setup cloud and it failed? Not to worry, here are some common issues and how to resolve them. +Home Assistant Cloud is a subscription service provided by our partner Nabu Casa, Inc. Check out [their website](https://www.nabucasa.com/config/troubleshooting/) for help with troubleshooting. -## {% linkable_title Error fetching the cognito keyset %} - -This issue can occur by Docker being misconfigured. This issue is especially common for people using the GENERIC installation of Hass.io on top of Ubuntu Bionic or another Linux installation. It is related to IPv6 being incorrectly marked as available. - -The solution is to make sure that Docker uses a public available DNS server, like the Google ones. As root, run: - -``` -mkdir -p /etc/docker -echo '{"dns": ["8.8.8.8", "8.8.4.4"]}' > /etc/docker/daemon.json -``` - -## {% linkable_title Alexa: We were unable to link Home Assistant at this time. Please try again later %} - -Some users are experiencing an issue when they are setting up the Home Assistant skill inside the Alexa app. We are still researching what is going on. Some users have reported that the issue went away if they configured Alexa to not expose all entities. You can try this by changing your cloud configuration like this: - -```yaml -# Example configuration.yaml entry configuring Alexa -cloud: - alexa: - filter: - include_entities: - - light.kitchen -``` - -If this resolves the issue, please report it in the #cloud channel on Discord as it can help us find the entities that are causing this issue. +
Logo of Nabu Casa, Inc +
diff --git a/source/images/supported_brands/nabu-casa.svg b/source/images/supported_brands/nabu-casa.svg new file mode 100644 index 00000000000..a038f7e6890 --- /dev/null +++ b/source/images/supported_brands/nabu-casa.svg @@ -0,0 +1 @@ +logo \ No newline at end of file From 749e853718a188b57e2e7b3ae6ec2444b6caeba9 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 16 Sep 2018 21:18:31 +0200 Subject: [PATCH 55/97] Tweaks text --- source/_posts/2018-09-16-thinking-big.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2018-09-16-thinking-big.markdown b/source/_posts/2018-09-16-thinking-big.markdown index 5bd55ef22c4..daee36dcd4c 100644 --- a/source/_posts/2018-09-16-thinking-big.markdown +++ b/source/_posts/2018-09-16-thinking-big.markdown @@ -11,7 +11,7 @@ categories: Announcements og_image: /images/blog/2018-09-thinking-big/social.png --- -Tomorrow marks the 5th anniversary of Home Assistant. I want to spend this post not only reflecting on the last 5 years, but also look at what is ahead of us, where we want to go, what we want Home Assistant to be. +Today marks the 5th anniversary of Home Assistant. I want to spend this post not only reflecting on the last 5 years, but also look at what is ahead of us, where we want to go, what we want Home Assistant to be. Home Assistant wasn’t born out of ideology. I built it because I got some smart lights and wanted to script them. I made that script open source and it went from there. As Home Assistant has grown, so has the world around us, and so have I. From 560293c81ed5a56dea6ec4efd80bcfe452118116 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 17 Sep 2018 17:28:55 +0200 Subject: [PATCH 56/97] Update date --- ...inking-big.markdown => 2018-09-17-thinking-big.markdown} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename source/_posts/{2018-09-16-thinking-big.markdown => 2018-09-17-thinking-big.markdown} (98%) diff --git a/source/_posts/2018-09-16-thinking-big.markdown b/source/_posts/2018-09-17-thinking-big.markdown similarity index 98% rename from source/_posts/2018-09-16-thinking-big.markdown rename to source/_posts/2018-09-17-thinking-big.markdown index daee36dcd4c..f696770fbab 100644 --- a/source/_posts/2018-09-16-thinking-big.markdown +++ b/source/_posts/2018-09-17-thinking-big.markdown @@ -1,9 +1,9 @@ --- layout: post title: "Thinking Big" -description: "The new authentication system is live! Chat on hangouts! " -date: 2018-09-15 00:01:00 -date_formatted: "September 16, 2018" +description: "Today we're turning 5 years old. It's time to set some goals." +date: 2018-09-17 00:01:00 +date_formatted: "September 17, 2018" author: Paulus Schoutsen author_twitter: balloob comments: true From 19cd142c42b42bb244919c0947239f2e6968497d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 17 Sep 2018 18:48:13 +0200 Subject: [PATCH 57/97] Update date --- source/_posts/2018-09-17-thinking-big.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2018-09-17-thinking-big.markdown b/source/_posts/2018-09-17-thinking-big.markdown index f696770fbab..d1b482d223b 100644 --- a/source/_posts/2018-09-17-thinking-big.markdown +++ b/source/_posts/2018-09-17-thinking-big.markdown @@ -2,7 +2,7 @@ layout: post title: "Thinking Big" description: "Today we're turning 5 years old. It's time to set some goals." -date: 2018-09-17 00:01:00 +date: 2018-09-17 01:01:00 date_formatted: "September 17, 2018" author: Paulus Schoutsen author_twitter: balloob From f1d3a47240ae634181efa0d06dee49b52b34d18d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 17 Sep 2018 19:07:41 +0200 Subject: [PATCH 58/97] Update config --- _config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index f98ffe3a255..b590068ef8b 100644 --- a/_config.yml +++ b/_config.yml @@ -143,12 +143,12 @@ social: current_major_version: 0 current_minor_version: 78 current_patch_version: 0 -date_released: 2018-09-15 +date_released: 2018-09-17 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0773---september-3" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments From b10fbcd01db66abb4e61ea4697218189525d15d0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 17 Sep 2018 19:33:52 +0200 Subject: [PATCH 59/97] Fix image --- source/_posts/2018-09-15-release-78.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_posts/2018-09-15-release-78.markdown b/source/_posts/2018-09-15-release-78.markdown index a149ccd1df6..c778e032ac9 100644 --- a/source/_posts/2018-09-15-release-78.markdown +++ b/source/_posts/2018-09-15-release-78.markdown @@ -8,10 +8,10 @@ author: Paulus Schoutsen author_twitter: balloob comments: true categories: Release-Notes -og_image: /images/blog/2018-09-0.78/social.png +og_image: /images/blog/2018-09-release-0.78/components.png --- - + It's time for a new release and oh boy, what a time to be alive! Today marks our 5th (!!!) anniversary. That's 5 years we've been bringing privacy focused and locally controlled home automation to your home. Happy birthday to us. From 99e079d0e68c474bbbecaee3492db13bc9a79823 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Mon, 17 Sep 2018 20:15:15 +0100 Subject: [PATCH 60/97] Clarity edit (#6302) The description of HA starting and creating directories has mislead a few folks, trying a wording tweak --- source/_docs/installation/raspberry-pi.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/installation/raspberry-pi.markdown b/source/_docs/installation/raspberry-pi.markdown index 2ae0bc857b5..7079f6de003 100644 --- a/source/_docs/installation/raspberry-pi.markdown +++ b/source/_docs/installation/raspberry-pi.markdown @@ -83,7 +83,7 @@ Once you have installed the required python package it is now time to install Ho (homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ pip3 install homeassistant ``` -Start Home Assistant for the first time. This will complete the installation, create the `.homeassistant` configuration directory in the `/home/homeassistant` directory and install any basic dependencies. +Start Home Assistant for the first time. This will complete the installation for you, automatically creating the `.homeassistant` configuration directory in the `/home/homeassistant` directory, and installing any basic dependencies. ```bash (homeassistant) $ hass From ddc5b8892ccd8d78287e21492202da7cea06034d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 18 Sep 2018 08:11:48 +0200 Subject: [PATCH 61/97] Minor updates --- source/_components/sensor.onewire.markdown | 35 ++++++++++++++-------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/source/_components/sensor.onewire.markdown b/source/_components/sensor.onewire.markdown index d8d9076f8c1..8cd5751d780 100644 --- a/source/_components/sensor.onewire.markdown +++ b/source/_components/sensor.onewire.markdown @@ -27,17 +27,22 @@ Supported devices: The 1-Wire bus can be connected directly to the IO pins of Raspberry Pi or using dedicated interface adapter (e.g [DS9490R](https://datasheets.maximintegrated.com/en/ds/DS9490-DS9490R.pdf)). -#### Raspberry Pi setup +## {% linkable_title Raspberry Pi setup %} + In order to setup 1-Wire support on Raspberry Pi, you'll need to edit `/boot/config.txt` following [this documentation](https://www.waveshare.com/wiki/Raspberry_Pi_Tutorial_Series:_1-Wire_DS18B20_Sensor#Enable_1-Wire). Don't use the `mount_dir` option. -#### Interface adapter setup +## {% linkable_title Interface adapter setup %} + +### {% linkable_title owfs %} + When an interface adapter is used, sensors can be accessed on Linux hosts via [owfs 1-Wire file system](http://owfs.org/). When using an interface adapter and the owfs, the `mount_dir` option must be configured to correspond a directory, where owfs device tree has been mounted. -

-This component has been modified to work with devices with multiple sensors which will cause a discontinuity in recorded values. Existing devices will receive a new ID and therefore show up as new devices. +### {% linkable_title Units with multiple sensors %} + +This platform works with devices with multiple sensors which will cause a discontinuity in recorded values. Existing devices will receive a new ID and therefore show up as new devices. If you wish to maintain continuity it can be resolved in the database by renaming the old devices to the new names. -Connect to your database using the instructions from [home-assistant.io/docs/backend/database/](/docs/backend/database/). Check the names of sensors: +Connect to your database using the instructions from [Database section](/docs/backend/database/). Check the names of sensors: ```sql SELECT entity_id, COUNT(*) as count FROM states GROUP BY entity_id ORDER BY count DESC LIMIT 10; @@ -49,10 +54,10 @@ UPDATE states SET entity_id='sensor._temperature' WHERE entity_id L UPDATE states SET entity_id='sensor._pressure' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%mb%'; UPDATE states SET entity_id='sensor._humidity' WHERE entity_id LIKE 'sensor.%' AND attributes LIKE '%%%' ESCAPE ''; ``` -Remember to replace `` with the actual name of the sensor as seen in the `SELECT` query. -

-#### Home Assistant setup +Remember to replace `` with the actual name of the sensor as seen in the `SELECT` query. + +## {% linkable_title Configuration %} To enable One wire sensors in your installation, add the following to your `configuration.yaml` file: @@ -64,8 +69,14 @@ sensor: some_id: your name ``` -Configuration variables: - -- **names** array (*Optional*): ID and friendly name of your sensors. -- **mount_dir** (*Optional*): Location of device tree if owfs driver used. +{% configuration %} +names: + description: ID and friendly name of your sensors. + required: false + type: string +mount_dir: + description: Location of device tree if owfs driver used. + required: false + type: string +{% endconfiguration %} From 69820f0e03480e6f99ce55d7cf7de2fcde0c7693 Mon Sep 17 00:00:00 2001 From: Ludovico de Nittis Date: Tue, 18 Sep 2018 08:44:38 +0200 Subject: [PATCH 62/97] Add additional working brands to iAlarm page (#6298) * Add additional working brands to iAlarm page Closes #6282 * It's a platform --- source/_components/alarm_control_panel.ialarm.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/alarm_control_panel.ialarm.markdown b/source/_components/alarm_control_panel.ialarm.markdown index d72261c908f..44895675cf4 100644 --- a/source/_components/alarm_control_panel.ialarm.markdown +++ b/source/_components/alarm_control_panel.ialarm.markdown @@ -46,3 +46,4 @@ alarm_control_panel: type: string {% endconfiguration %} +This platform has also been confirmed to work with the alarm system brands Meian and Emooluxr. From 900ad16bb55aac23f3ba71a54ec4865bafe7aee5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 18 Sep 2018 09:14:11 +0200 Subject: [PATCH 63/97] Update configuration sample --- source/_components/sensor.fints.markdown | 90 ++++++++++++------------ 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/source/_components/sensor.fints.markdown b/source/_components/sensor.fints.markdown index e871ba3cb97..5181b80e176 100644 --- a/source/_components/sensor.fints.markdown +++ b/source/_components/sensor.fints.markdown @@ -10,13 +10,14 @@ footer: true ha_category: Finance ha_release: "0.70" ha_iot_class: "Local Push" -logo: home-assistant.png --- With the FinTS sensor, you can fetch your account information from your bank. This only works with banks that support the FinTS (aka. HBCI) standard. The FinTS standard used by many German banks. So if you do not have a German bank account, this will most likely not work for you. To find out if your bank supports FinTS, check the bank's website or call their hotline. ## {% linkable_title Configuration %} +To find out the configuration for your bank, check their website or call their hotline. Do not use random information you find on the Internet! As you're storing your bank account information in the Home Assistant configuration: Make sure that this configuration is not accessible to anyone. + For each account you have with the bank, a separate sensor is created. If you have several accounts with a bank, you can select which ones you want to have, and you can also give the accounts a name. {% raw %} @@ -24,52 +25,51 @@ For each account you have with the bank, a separate sensor is created. If you ha # Example configuration.yaml entry sensor: - platform: fints - bank_identification_number: - username: - pin: - url: + sensors: + - bank_identification_number: ID_FOR_YOUR_BANK + username: YOUR_FINTS_USERNAME + pin: YOUR_PIN + url: URL_FOR_YOUR_BANK ``` {% endraw %} -To find out the configuration for your bank, check their website or call their hotline. Do not use random information you find on the Internet! As you're storing your bank account information in the Home Assistant configuration: make sure that this configuration is not accessible to anyone. - {% configuration %} - sensors: - description: List of your sensors. - required: true - type: map - keys: - name: - description: (optional) name of the bank. - required: false - type: string - bank_identification_number: - description: Bank identification number, in most cases the "Bankleitzahl". - required: true - type: string - username: - description: Your FinTS username. - required: true - type: string - pin: - description: Your FinTS PIN or password. - required: true - type: string - url: - description: URL of your bank's FinTS server. - required: true - type: string - accounts: - description: (optional) You can configure with of the accounts of your bank shall be shown in Home Assistant. If this attribute is set, only the accounts listed here are shown. - required: false - type: list - keys: - account: - description: For balance accounts use the IBAN of the account for holdings accounts use the classic account number. - required: true - type: string - name: - description: (optional) Use this field to give the account a meaningful name. - required: false - type: string +sensors: + description: List of your sensors. + required: true + type: map + keys: + name: + description: (optional) name of the bank. + required: false + type: string + bank_identification_number: + description: Bank identification number, in most cases the "Bankleitzahl". + required: true + type: string + username: + description: Your FinTS username. + required: true + type: string + pin: + description: Your FinTS PIN or password. + required: true + type: string + url: + description: URL of your bank's FinTS server. + required: true + type: string + accounts: + description: (optional) You can configure with of the accounts of your bank shall be shown in Home Assistant. If this attribute is set, only the accounts listed here are shown. + required: false + type: list + keys: + account: + description: For balance accounts use the IBAN of the account for holdings accounts use the classic account number. + required: true + type: string + name: + description: (optional) Use this field to give the account a meaningful name. + required: false + type: string {% endconfiguration %} From 5ee6485ec6e71d09f0a4c4c7d1dc5dc205e4b26b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 18 Sep 2018 09:31:22 +0200 Subject: [PATCH 64/97] Add missing key and remove unused key --- source/_components/sensor.fints.markdown | 81 +++++++++++++----------- 1 file changed, 44 insertions(+), 37 deletions(-) diff --git a/source/_components/sensor.fints.markdown b/source/_components/sensor.fints.markdown index 5181b80e176..986e84e7c79 100644 --- a/source/_components/sensor.fints.markdown +++ b/source/_components/sensor.fints.markdown @@ -24,52 +24,59 @@ For each account you have with the bank, a separate sensor is created. If you ha ```yaml # Example configuration.yaml entry sensor: - - platform: fints - sensors: - - bank_identification_number: ID_FOR_YOUR_BANK - username: YOUR_FINTS_USERNAME - pin: YOUR_PIN - url: URL_FOR_YOUR_BANK + - platform: fints + bank_identification_number: ID_FOR_YOUR_BANK + username: YOUR_FINTS_USERNAME + pin: YOUR_PIN + url: URL_FOR_YOUR_BANK ``` {% endraw %} {% configuration %} -sensors: - description: List of your sensors. +name: + description: Name of the bank. + required: false + type: string +bank_identification_number: + description: Bank identification number, in most cases the "Bankleitzahl". required: true - type: map - keys: + type: string +username: + description: Your FinTS username. + required: true + type: string +pin: + description: Your FinTS PIN or password. + required: true + type: string +url: + description: URL of your bank's FinTS server. + required: true + type: string +accounts: + description: The balance accounts to show. If not set then all accounts will show up. + required: false + type: list + keys: + account: + description: The IBAN of the blance account. + required: true + type: string name: - description: (optional) name of the bank. + description: Use this field to give the account a meaningful name. required: false type: string - bank_identification_number: - description: Bank identification number, in most cases the "Bankleitzahl". +holdings: + description: The holding accounts of your bank. If not set then all accounts will show up. + required: false + type: list + keys: + account: + description: The classic account number. required: true type: string - username: - description: Your FinTS username. - required: true - type: string - pin: - description: Your FinTS PIN or password. - required: true - type: string - url: - description: URL of your bank's FinTS server. - required: true - type: string - accounts: - description: (optional) You can configure with of the accounts of your bank shall be shown in Home Assistant. If this attribute is set, only the accounts listed here are shown. + name: + description: Use this field to give the account a meaningful name. required: false - type: list - keys: - account: - description: For balance accounts use the IBAN of the account for holdings accounts use the classic account number. - required: true - type: string - name: - description: (optional) Use this field to give the account a meaningful name. - required: false - type: string + type: string {% endconfiguration %} From 0019a420cab7f8a6708213041514ff25c3ef70c8 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Tue, 18 Sep 2018 10:06:15 +0100 Subject: [PATCH 65/97] Fixing formatting (#6304) Triple back ticks need to be on their own line --- source/_docs/installation/raspberry-pi.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_docs/installation/raspberry-pi.markdown b/source/_docs/installation/raspberry-pi.markdown index 7079f6de003..31af033f9d6 100644 --- a/source/_docs/installation/raspberry-pi.markdown +++ b/source/_docs/installation/raspberry-pi.markdown @@ -114,4 +114,5 @@ When instructions tell you to activate the virtual environment, the following co ```bash $ sudo -u homeassistant -H -s -$ source /srv/homeassistant/bin/activate``` +$ source /srv/homeassistant/bin/activate +``` From 33eed3a65ad4ceccee0d34ae38fe92e4a57e84d7 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 18 Sep 2018 11:06:33 +0200 Subject: [PATCH 66/97] Add command with LC_ALL=C (fixes #6270) (#6306) --- source/_docs/z-wave/adding.markdown | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/source/_docs/z-wave/adding.markdown b/source/_docs/z-wave/adding.markdown index c52661c0c1c..3bfb7ad66d7 100644 --- a/source/_docs/z-wave/adding.markdown +++ b/source/_docs/z-wave/adding.markdown @@ -32,10 +32,10 @@ Security Z-Wave devices require a network key. Some devices only expose their fu A valid network key will be a 16 byte value, defined in the zwave section of your configuration, such as the following example: -``` +```yaml zwave: - usb_path: /dev/ttyACM0 - network_key: "0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10" + usb_path: /dev/ttyACM0 + network_key: "0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10" ``` Each individual value in the defined key can be anywhere from 0x00 to 0xFF. Define your own key by making changes to the above example key or for additional security try one of the two scripts mentioned below. @@ -43,13 +43,21 @@ Each individual value in the defined key can be anywhere from 0x00 to 0xFF. Defi ### {% linkable_title Network Key %} An easy script to generate a random key: + ```bash -cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' +$ cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' ``` On macOS, this script will generate a random key: + ```bash -cat /dev/urandom | LC_CTYPE=C tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' +$ cat /dev/urandom | LC_CTYPE=C tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' +``` + +If the above command doesn't work then replace `LC_CTYPE=C` with `LC_ALL=C`: + +```bash +$ cat /dev/urandom | LC_ALL=C tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' ```

From 0b0c6fc3dc5146a1cf6a99f11e3a9b25feff2bf5 Mon Sep 17 00:00:00 2001 From: ComputerCandy Date: Tue, 18 Sep 2018 21:13:45 +1200 Subject: [PATCH 67/97] KNX Scene needs to be zero-indexed (#6305) --- source/_components/scene.knx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/scene.knx.markdown b/source/_components/scene.knx.markdown index c9752de20c3..7fd18417d87 100644 --- a/source/_components/scene.knx.markdown +++ b/source/_components/scene.knx.markdown @@ -32,6 +32,6 @@ scene: Configuration variables: - **address** (*Required*): KNX group address of the binary sensor. -- **scene_number** (*Required*): KNX scene number to be activated. +- **scene_number** (*Required*): Zero-indexed KNX scene number to be activated. - **name** (*Optional*): A name for this device used within Home Assistant. From 7b49b4de8bab05178d5338e77cc7879ea1e22d42 Mon Sep 17 00:00:00 2001 From: aisbergde Date: Tue, 18 Sep 2018 11:15:23 +0200 Subject: [PATCH 68/97] Update sensor.template.markdown (#6293) * Update sensor.template.markdown * Update formatting --- source/_components/sensor.template.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 7d612f01607..e22d329efb0 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -54,7 +54,7 @@ sensor: required: false type: string, list unit_of_measurement: - description: Defines the units of measurement of the sensor, if any. + description: "Defines the units of measurement of the sensor, if any. This will also influence the graphical presentation in the history visualisation as continuous value. Sensors with missing `unit_of_measurement` are showing as discrete values." required: false type: string value_template: From 3ea9ce4538685602801356e30915564ed99b2f6a Mon Sep 17 00:00:00 2001 From: DubhAd Date: Tue, 18 Sep 2018 11:23:13 +0100 Subject: [PATCH 69/97] Highlighting the package names (#6269) Highlighting the package names because apparently we forgot to do so before --- source/_docs/z-wave/installation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 95a7c6f2916..7e27a19c7f0 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -24,7 +24,7 @@ On Linux platforms (other than Hass.io) there is one dependency you will need to $ sudo apt-get install libudev-dev ``` -On Python 3.6 you may also have to install libpython3.6-dev, and possibly python3.6-dev. +On Python 3.6 you may also have to install `libpython3.6-dev`, and possibly `python3.6-dev`. ### {% linkable_title macOS %} From a3538d8a8075f92c4c0cac751820d0a6f2edba0f Mon Sep 17 00:00:00 2001 From: DubhAd Date: Tue, 18 Sep 2018 13:34:00 +0100 Subject: [PATCH 70/97] Adding pre 0.77 auth migration note (#6279) Since this comes up every few days, adding a note about migrating from pre 0.77 (which yes, eventually we'll be able to remove) --- source/_docs/authentication.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown index 503725a5f7a..f2e984cf30a 100644 --- a/source/_docs/authentication.markdown +++ b/source/_docs/authentication.markdown @@ -89,3 +89,7 @@ It will allow you to open Home Assistant instance by access `http://hassbian.hom ### {% linkable_title Stuck on Loading data %} Some advert blocking software, such as Wipr, also blocks web sockets. If you're stuck on the Loading data screen, try disabling your ad blocker. + +### {% linkable_title Migrating from pre 0.77 %} + +If you were using the authentication system before 0.77, you'll likely have `auth:` and `auth_providers:` defined. You'll need to remove these and let Home Assistant [handle it automatically](https://www.home-assistant.io/docs/authentication/providers/#configuring-auth-providers). From 321ad3ac8b584599872707f73eed82929cfd827e Mon Sep 17 00:00:00 2001 From: insajd Date: Tue, 18 Sep 2018 19:46:17 +0300 Subject: [PATCH 71/97] Fix in the listing of all sensor types (#6309) In monitored_conditions key list of all items 'current_ozone_index' changed to 'current_ozone_level'. --- source/_components/openuv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/openuv.markdown b/source/_components/openuv.markdown index a4893d35c97..acb6f184bed 100644 --- a/source/_components/openuv.markdown +++ b/source/_components/openuv.markdown @@ -74,7 +74,7 @@ sensors: description: the conditions to create sensors from required: false type: list - default: all ( `current_ozone_index`, `current_uv_index`, `current_uv_level`, `max_uv_index`, `safe_exposure_time_type_1`, `safe_exposure_time_type_2`, `safe_exposure_time_type_3`, `safe_exposure_time_type_4`, `safe_exposure_time_type_5`, `safe_exposure_time_type_6` ) + default: all ( `current_ozone_level`, `current_uv_index`, `current_uv_level`, `max_uv_index`, `safe_exposure_time_type_1`, `safe_exposure_time_type_2`, `safe_exposure_time_type_3`, `safe_exposure_time_type_4`, `safe_exposure_time_type_5`, `safe_exposure_time_type_6` ) {% endconfiguration %} ## {% linkable_title Binary Sensor Types %} From 3a076534cd2765df376ad670ef89a838e53e4d4f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 18 Sep 2018 20:19:17 +0200 Subject: [PATCH 72/97] Add details about enabling the REST API (#6310) --- source/_components/switch.mystrom.markdown | 11 +++++++++++ .../components/mystrom/switch-advanced.png | Bin 0 -> 14686 bytes 2 files changed, 11 insertions(+) create mode 100644 source/images/components/mystrom/switch-advanced.png diff --git a/source/_components/switch.mystrom.markdown b/source/_components/switch.mystrom.markdown index 924087adcdd..8d2f93dc439 100644 --- a/source/_components/switch.mystrom.markdown +++ b/source/_components/switch.mystrom.markdown @@ -16,6 +16,17 @@ ha_iot_class: "Local Polling" The `mystrom` switch platform allows you to control the state of your [myStrom](https://mystrom.ch/en/) switches. The built-in sensor is measuring the power consumption while the switch is on. +## {% linkable_title Setup %} + +Make sure that you have enabled the REST API under **Advanced** in the web frontend of the switch. + +

+ +

+ + +## {% linkable_title Configuration %} + To use your myStrom switch in your installation, add the following to your `configuration.yaml` file: ```yaml diff --git a/source/images/components/mystrom/switch-advanced.png b/source/images/components/mystrom/switch-advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..58edc028a70f85516756032b793da0a604e6d479 GIT binary patch literal 14686 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 eoplv{H!|yJ$5(g Date: Wed, 19 Sep 2018 07:35:02 +0100 Subject: [PATCH 73/97] Adding a linkable title (#6312) Adding a linkable title --- source/_docs/automation.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_docs/automation.markdown b/source/_docs/automation.markdown index e50db5d9bfe..6729aa4fcb4 100644 --- a/source/_docs/automation.markdown +++ b/source/_docs/automation.markdown @@ -47,6 +47,8 @@ State changes can be used as the source of triggers and the current state can be Actions are all about calling services. To explore the available services open the Services developer tool. Services allow to change anything. For example turn on a light, run a script or enable a scene. Each service has a domain and a name. For example the service `light.turn_on` is capable of turning on any light in your system. Services can be passed parameters to for example tell which device to turn on or what color to use. +### {% linkable_title Automation initial state %} + You have to set an initial state in your automations in order for Home Assistant to enable them upon restart. ```text From cd69cc7f100839d584ebc96f9e223a200596cb97 Mon Sep 17 00:00:00 2001 From: emontnemery Date: Wed, 19 Sep 2018 08:36:14 +0200 Subject: [PATCH 74/97] Add missing platforms supported by MQTT discovery (#6295) * Update discovery.markdown * Update discovery.markdown --- source/_docs/mqtt/discovery.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index 75a56503e8a..7c14077f91e 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -14,11 +14,14 @@ The discovery of MQTT devices will enable one to use MQTT devices with only mini Supported by MQTT discovery: +- [Alarm control panels](/components/alarm_control_panel.mqtt/) - [Binary sensors](/components/binary_sensor.mqtt/) - [Cameras](/components/camera.mqtt/) - [Covers](/components/cover.mqtt/) - [Fans](/components/fan.mqtt/) +- [HVACs](/components/climate.mqtt/) - [Lights](/components/light.mqtt/) +- [Locks](/components/lock.mqtt/) - [Sensors](/components/sensor.mqtt/) - [Switches](/components/switch.mqtt/) From 1f6eb376b768834e2af46051b830c19ef25a0ed5 Mon Sep 17 00:00:00 2001 From: Rick van Hattem Date: Wed, 19 Sep 2018 14:04:44 +0200 Subject: [PATCH 75/97] Added timed lights with multiple triggers (#6314) A single sensor is often not enough when it comes to motion sensors so here's an example for multiple sensors --- ...r_10_minutes_when_motion_detected.markdown | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown b/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown index 65f5cb6b590..27320af7a8f 100644 --- a/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown +++ b/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown @@ -36,3 +36,40 @@ automation: service: homeassistant.turn_off entity_id: light.kitchen_light ``` + +Or in the case of multiple sensors/triggers: + +```yaml +automation: +- alias: Turn on hallway lights when the doorbell rings, the front door opens or if there is movement + trigger: + - platform: state + entity_id: sensor.motion_sensor, binary_sensor.front_door, binary_sensor.doorbell + to: 'on' + action: + - service: homeassistant.turn_on + data: + entity_id: + - light.hallway_0 + - light.hallway_1 + - service: timer.start + data: + entity_id: timer.hallway + +- alias: Turn off hallway lights 10 minutes after trigger + trigger: + platform: event + event_type: timer.finished + event_data: + entity_id: timer.hallway + action: + service: homeassistant.turn_off + data: + entity_id: + - light.hallway_0 + - light.hallway_1 + +timer: + hallway: + duration: '00:10:00' +``` From b885705f799f0d1ac12ff30c48372aaacf3f98dd Mon Sep 17 00:00:00 2001 From: Destix <32171782+Destix@users.noreply.github.com> Date: Wed, 19 Sep 2018 17:32:25 +0300 Subject: [PATCH 76/97] Correct title on climate modbus (#6315) * Correct title * Change title parts --- source/_components/climate.modbus.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/climate.modbus.markdown b/source/_components/climate.modbus.markdown index 62163a316aa..164ae4a4877 100644 --- a/source/_components/climate.modbus.markdown +++ b/source/_components/climate.modbus.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Modbus" +title: "Modbus Climate" description: "Instructions how to integrate a Modbus thermostat within Home Assistant." date: 2018-01-29 9:35 sidebar: true From bd861410728d1e90e9c7cdfc608e2da924e4a526 Mon Sep 17 00:00:00 2001 From: Jon Griffith <32052562+arretx@users.noreply.github.com> Date: Wed, 19 Sep 2018 23:17:05 -0700 Subject: [PATCH 77/97] Clarification of Slack integration setup (#6318) * Clarification of Slack integration setup Had a bit of trouble following along, but I finally got it and offer these updates to help anyone else. * Minor changes --- source/_components/notify.slack.markdown | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown index 3e384990109..699a57ec236 100644 --- a/source/_components/notify.slack.markdown +++ b/source/_components/notify.slack.markdown @@ -15,12 +15,22 @@ ha_release: pre 0.7 The `slack` platform allows you to deliver notifications from Home Assistant to [Slack](https://slack.com/). -If you are planning to use Slack as yourself then you need to obtain a [Slack API token](https://api.slack.com/web?sudo=1) to be able to send notifications. +## {% linkable_title Setup %} + +If you are planning to use Slack as yourself then you'll need to create a [new app](https://api.slack.com/apps) under your Slack.com account. After creating the app, access the OAuth & Permissions link under the Features heading in the sidebar. Your OAuth Access Token should be located there. This is the key that you'll use in your `configuration.yaml` file. + +

+There is an app credential Verification Token on the Basic Settings of your app. This is **not** the API key you want. +

+ +You will also need to ensure that you have added the appropriate scope when configuring your app. In this case, in the Scopes section, add the `Send messages as user` scope, e.g., (chat:write:user). It is also possible to use Slack bots as users. Just create a new bot at https://[YOUR_TEAM].slack.com/apps/build/custom-integration and use the provided token for that. You can add an icon from the frontend for Home Assistant and give the bot a meaningful name. Don't forget to invite the bot to the room where you want to get the notifications. +## {% linkable_title Configuration %} + To enable the Slack notification in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -85,6 +95,7 @@ Example for posting file from local path: } } ``` + Please note that `path` is validated against the `whitelist_external_dirs` in the `configuration.yaml`. Example for posting formatted attachment: @@ -106,4 +117,3 @@ Example for posting formatted attachment: Please note that both `message` is a required key, but is always shown, so use an empty (`""`) string for `message` if you don't want the extra text. To use notifications, please see the [getting started with automation page](/getting-started/automation/). - From 81a15489e8bfb085801a013bab4067568bfd637e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 20 Sep 2018 11:34:02 +0200 Subject: [PATCH 78/97] Update release notes --- _config.yml | 6 +++--- source/_posts/2018-09-15-release-78.markdown | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index b590068ef8b..73f04dcb2f8 100644 --- a/_config.yml +++ b/_config.yml @@ -142,13 +142,13 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 78 -current_patch_version: 0 -date_released: 2018-09-17 +current_patch_version: 1 +date_released: 2018-09-20 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#" +patch_version_notes: "#release-0781---september-20" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/source/_posts/2018-09-15-release-78.markdown b/source/_posts/2018-09-15-release-78.markdown index c778e032ac9..449b4efb79a 100644 --- a/source/_posts/2018-09-15-release-78.markdown +++ b/source/_posts/2018-09-15-release-78.markdown @@ -31,6 +31,23 @@ Also on your profile page is a new list of existing refresh tokens. These are al - Add Yale Smart Alarm component ([@domwillcode] - [#16377]) ([alarm_control_panel.yale_smart_alarm docs]) (new-platform) - Add OpenTherm Gateway climate platform ([@mvn23] - [#16299]) ([climate.opentherm_gw docs]) (new-platform) +## {% linkable_title Release 0.78.1 - September 20 %} + +- Updates documentation repo URL in PR template ([@frenck] - [#16537]) +- SnmpSensor: Fix async_update (#16679) ([@mtdcr] - [#16716]) ([sensor.snmp docs]) +- Handle chromecast CONNECTION_STATUS_DISCONNECTED event ([@awarecan] - [#16732]) ([media_player.cast docs]) +- Upgrade netdisco to 2.1.0 ([@awarecan] - [#16735]) + +[#16537]: https://github.com/home-assistant/home-assistant/pull/16537 +[#16716]: https://github.com/home-assistant/home-assistant/pull/16716 +[#16732]: https://github.com/home-assistant/home-assistant/pull/16732 +[#16735]: https://github.com/home-assistant/home-assistant/pull/16735 +[@awarecan]: https://github.com/awarecan +[@frenck]: https://github.com/frenck +[@mtdcr]: https://github.com/mtdcr +[media_player.cast docs]: /components/media_player.cast/ +[sensor.snmp docs]: /components/sensor.snmp/ + ## {% linkable_title If you need help... %} ...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. From ac31a5105a7e4c7677a81fcbb3ef44e2d3ea1469 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Thu, 20 Sep 2018 10:45:20 +0100 Subject: [PATCH 79/97] Adding links to the graphing options (#6320) Adding links to the graphing options --- source/_docs/z-wave.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index 6ee6a284fa1..6df8aca7acf 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -18,7 +18,7 @@ Before configuring the Z-Wave setup, please take a moment and read [this article ## {% linkable_title What is Z-Wave %} -Z-Wave is a wireless communication protocol designed for home automation. It uses a low power, and low bandwidth, mesh network that allows devices that aren't within direct range of each other to communicate indirectly, via other nodes. Any device that's permanently powered (not battery powered) will help build the mesh, if you don't have enough powered devices, or you locate these poorly, your mesh will be unreliable. +Z-Wave is a wireless communication protocol designed for home automation. It uses a low power, and low bandwidth, mesh network that allows devices that aren't within direct range of each other to communicate indirectly, via other nodes. Any device that's permanently powered (not battery powered) will help build the mesh, if you don't have enough powered devices, or you locate these poorly, your mesh will be unreliable. You can [view the state](https://community.home-assistant.io/t/graph-your-z-wave-mesh-python-auto-update/40549) of your mesh [by graphing it](https://community.home-assistant.io/t/z-wave-graph-without-the-python/64275). There is a limit of 232 devices in a single Z-Wave network. If you need more devices then you could set up a second Home Assistant system with its own Z-Wave network and connect these with the [MQTT Eventstream](/components/mqtt_eventstream/) or [MQTT Statestream](/components/mqtt_statestream) components. There is also a limit of 4 hops for Z-Wave, so placing the controller as centrally as you can is important. From 3d82dcda607449caa2ddf035a9d703e920a61679 Mon Sep 17 00:00:00 2001 From: aribarreto Date: Fri, 21 Sep 2018 07:16:47 -0300 Subject: [PATCH 80/97] YLDP05YL Add (#6280) --- source/_components/light.yeelight.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index a5b9547d243..83b1fda3353 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -60,6 +60,7 @@ This component is tested to work with the following models. If you have a differ - **YLDP01YL**: LED Bulb (White) - **YLDP02YL**: LED Bulb (Color) - **YLDP03YL**: LED Bulb (Color) - E26 +- **YLDP05YL**: LED Bulb (White) II - **YLDP06YL**: LED Bulb (Color) II - **YLDD01YL**: Lightstrip (Color) - **YLDD02YL**: Lightstrip (Color) From 8dd993c8a32ff8c1a7511a5cc8aaf74808ed2246 Mon Sep 17 00:00:00 2001 From: Oncleben31 Date: Fri, 21 Sep 2018 17:38:00 +0200 Subject: [PATCH 81/97] Typo correction in the 'set_fanspeed' params (#6326) it's not `fanspeed` but `fan_speed` --- source/_components/vacuum.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/vacuum.markdown b/source/_components/vacuum.markdown index 041edb7d661..5448d3d85f1 100644 --- a/source/_components/vacuum.markdown +++ b/source/_components/vacuum.markdown @@ -106,7 +106,7 @@ Set the fan speed of the vacuum. The `fanspeed` can be a label, as `balanced` or | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| | `entity_id` | yes | Only act on specific vacuum. Else targets all. | -| `fanspeed` | no | Platform dependent vacuum cleaner fan speed, with speed steps, like 'medium', or by percentage, between 0 and 100. | +| `fan_speed` | 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` %} From d841bf706adb4b1bf9af37fec61d439b6763c07d Mon Sep 17 00:00:00 2001 From: DubhAd Date: Fri, 21 Sep 2018 16:39:07 +0100 Subject: [PATCH 82/97] Clarity update (#6323) * Clarity update Even without `recorder:` in the config, the recorder is configured with the default settings. Updating the docs to reflect this. This is something that others have commented on in confusion, and I got around to verifying today on my test (0.78) system. * Update recorder.markdown --- source/_components/recorder.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index 7ffae0d13d8..d843e6f1200 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -18,7 +18,7 @@ Home Assistant uses [SQLAlchemy](http://www.sqlalchemy.org/) as Object Relationa The default database engine is [SQLite](https://www.sqlite.org/) which doesn't require any configuration. The database is stored in your Home Assistant configuration directory (`.homeassistant`) and called `home-assistant_v2.db`. -To set up the `recorder` component in your installation, add the following to your `configuration.yaml` file: +To change the defaults for `recorder` component in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -128,7 +128,7 @@ Call the service `recorder.purge` to start a purge task which deletes events and | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `keep_days` | yes | The number of history days to keep in recorder database (defaults to the component `purge_keep_days` configuration) -| `repack` | yes | Rewrite the entire database, possibly saving some disk space (only supported for SQLite) +| `repack` | yes | Rewrite the entire database, possibly saving some disk space. Only supported for SQLite and requires at least as much disk space free as the database currently uses. ### {% linkable_title Restore State %} From 52ef4c7b80503b8bc00914c1d6ca36d928873e61 Mon Sep 17 00:00:00 2001 From: Jonas Karlsson <1937941+endor-force@users.noreply.github.com> Date: Fri, 21 Sep 2018 17:40:30 +0200 Subject: [PATCH 83/97] Updated configuration examples (#6329) Cleaned up configuration examples since they had names which was logical with old way of configuring. Removed scan interval in examples --- .../sensor.trafikverket_weatherstation.markdown | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/source/_components/sensor.trafikverket_weatherstation.markdown b/source/_components/sensor.trafikverket_weatherstation.markdown index 152d95316ac..d6635769511 100644 --- a/source/_components/sensor.trafikverket_weatherstation.markdown +++ b/source/_components/sensor.trafikverket_weatherstation.markdown @@ -28,7 +28,7 @@ To enable this sensor, add the following lines to your `configuration.yaml`. ```yaml sensor: - platform: trafikverket_weatherstation - name: Trafikverket Road WeatherStation Kungälv + name: Trafikverket Kungälv api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX station: Kungälv monitored_conditions: @@ -92,7 +92,7 @@ Click [here](https://www.trafikverket.se/trafikinformation/vag/?TrafficType=pers ```yaml sensor: - platform: trafikverket_weatherstation - name: Trafikverket Road WeatherStation Kungälv + name: Trafikverket Kungälv api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX station: Kungälv monitored_conditions: @@ -104,16 +104,15 @@ sensor: - wind_direction_text - wind_speed - platform: trafikverket_weatherstation - name: Trafikverket Air WeatherStation Lanna + name: Trafikverket Lanna api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX station: Lanna monitored_conditions: - air_temp - road_temp - humidity - scan_interval: 600 - platform: trafikverket_weatherstation - name: Trafikverket Precipitation WeatherStation Nöbbele + name: Trafikverket Nöbbele api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX station: Nöbbele monitored_conditions: @@ -121,5 +120,4 @@ sensor: - road_temp - humidity - precipitation - scan_interval: 600 ``` From 4832ae832eb0eaf66f7f8d8c0191df6f2a7c309b Mon Sep 17 00:00:00 2001 From: Ravi K Date: Fri, 21 Sep 2018 12:25:20 -0500 Subject: [PATCH 84/97] There is no step 9 (#6331) There is no step 9 in the setup document. I corrected that and added a hyperlink to 'TROUBLESHOOTING THE REQUEST_SYNC SERVICE' --- source/_components/google_assistant.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 3530db78161..1b141f49abe 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -73,7 +73,7 @@ agent_user_id: required: false type: string api_key: - description: An API Key generated for the project from [Google Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see step 9 below). If not provided then the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have setup this component you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration. + description: An API Key generated for the project from [Google Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see [below](/#troubleshooting-the-request_sync-service)). If not provided then the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have setup this component you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration. required: false type: string expose_by_default: From 24b1de1bf6045340c2df4cc2e63e80de3fdaf861 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Fri, 21 Sep 2018 20:37:03 +0100 Subject: [PATCH 85/97] More titles (#6332) Added a couple of titles to make linking into the page easier. Also expanded on why capabilities are useful. --- .../device_tracker.nmap_tracker.markdown | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/source/_components/device_tracker.nmap_tracker.markdown b/source/_components/device_tracker.nmap_tracker.markdown index 061ae8a153e..11b0e0531db 100644 --- a/source/_components/device_tracker.nmap_tracker.markdown +++ b/source/_components/device_tracker.nmap_tracker.markdown @@ -2,7 +2,7 @@ layout: page title: "Nmap" description: "Instructions on how to integrate Nmap into Home Assistant." -date: 2015-03-23 19:59 +date: 2018-09-21 18:59 sidebar: true comments: false sharing: true @@ -43,6 +43,7 @@ Configuration variables: - **exclude** (*Optional*): Hosts not to include in nmap scanning. Scanning the host where Home Assistant is running can cause problems (websocket error), so excluding that host is a good idea. - **scan_options** (*Optional*): Configurable scan options for nmap. Default to `-F --host-timeout 5s` +## {% linkable_title Examples %} A full example for the `nmap` tracker could look like the following sample: @@ -73,10 +74,13 @@ In the above example, Nmap will be call with the process: An example of how the Nmap scanner can be customized: -Add the capabilities to Nmap. Be sure to specify the full path to wherever you installed Nmap: +### {% linkable_title Linux capabilities %} -`sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap -` +On Linux systems you can extend the functionality of Nmap, without having to run it as root, by using *Linux capabilities*. Be sure to specify the full path to wherever you installed Nmap: + +```bash +$ sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap +``` And you can set up the device tracker as ```yaml @@ -85,5 +89,4 @@ And you can set up the device tracker as scan_options: " --privileged -sP " ``` - See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. From 0711657f5b380b989a55fd0af8646f349c3178dc Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 21 Sep 2018 21:44:41 +0200 Subject: [PATCH 86/97] Move setup up --- source/_components/google_assistant.markdown | 65 ++++++++++---------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 1b141f49abe..3cee8f16401 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -25,6 +25,37 @@ The Google Assistant component requires a bit more setup than most due to the wa To use Google Assistant, your Home Assistant configuration has to be externally accessible with a hostname and SSL certificate. If you haven't already configured that, you should do so before continuing.

+## {% linkable_title Setup %} + +You need to create an API Key with the [Google Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see [below](/#troubleshooting-the-request_sync-service)). If you don't provided it the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have setup this component you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration. + +1. Create a new project in the [developer console](https://console.actions.google.com/). + a. Add/Import project, give it a name + b. Click on `Home Control` card, select the `Smart home` recommendation. + c. Create an Action, under the build section. Add in your Home Assistant URL: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant`, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / ip address and the port under which your Home Assistant is reachable. If you have set `api_password:` add this password to the URL. E.g., `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant?api_password=[YOUR API PASSWORD]`) + d. Click `Done`. Then click on `Overview`, which will lead you back to the app details screen. +2. `Account linking` is required for your app to interact with Home Assistant. Set this up under the `Quick Setup` section + a. Leave it at the default `No, I only want to allow account creation on my website` and select Next + b. For the `Linking type` select `OAuth` and `Implicit` + c. Client ID: The `client_id` from your Home Assistant configuration above + d. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant/auth`. If you have set `api_password:` add this password to the URL `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant/auth?api_password=[YOUR API PASSWORD]`) + e. Configure your client. Add scopes for `email` and `name`. + f. Testing instructions: Enter anything. It doesn't matter since you won't submit this app. +3. Back on the overview page. Click `Simulator` under `TEST`. You don't have to actually test . +4. If you haven't already added the component configuration to `configuration.yaml` file and restarted Home Assistant, you'll be unable to continue until you have. +5. Open the Google Assistant app and go into `Settings > Home Control` +6. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead you the screen where you can set rooms for your devices or nicknames for your devices. +7. If you want to allow other household users to control the devices: + a. Go to the settings for the project you created in point 1 in the developer console. + b. Under the gear icon, click `Permissions` + c. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role + d. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point 3 +8. If you want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project: + a. Go to the [cloud console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) + b. Select your project and click Enable Homegraph API + c. Go to Credentials, which you can find on the left navigation bar under the key icon, and select API Key from Create Credentials + d. Note down the generated API Key and use this in the configuration + ## {% linkable_title Configuration %} To enable this, add the following lines to your `configuration.yaml` file: @@ -73,11 +104,11 @@ agent_user_id: required: false type: string api_key: - description: An API Key generated for the project from [Google Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see [below](/#troubleshooting-the-request_sync-service)). If not provided then the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have setup this component you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration. + description: Your API key. required: false type: string expose_by_default: - description: Expose devices in all supported domains by default. If set to false, you need to either expose domains or add the expose configuration option to each entity in entity_config and set it to true. + description: "Expose devices in all supported domains by default. If set to false, you need to either expose domains or add the expose configuration option to each entity in `entity_config` and set it to true." required: false default: True type: boolean @@ -114,6 +145,7 @@ entity_config: {% endconfiguration %} ### {% linkable_title Available domains %} + Currently, the following domains are available to be used with Google Assistant, listed with their default types: - group (on/off) @@ -135,35 +167,6 @@ $ cat /dev/urandom | fold -w 120 | head -n 1 | base64 -w 0 | tr -dc '0-9A-Za-z' If you're not using Linux, you can use sites such as [this one](https://www.browserling.com/tools/random-string) to generate a random string (containing mixed case letters and numbers) of up to 80 characters. -### {% linkable_title Setup %} - -1. Create a new project in the [developer console](https://console.actions.google.com/). - a. Add/Import project, give it a name - b. Click on `Home Control` card, select the `Smart home` recommendation - c. Create an Action, under the build section. Add in your home assistant url: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant`, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / ip address and the port under which your Home Assistant is reachable. If you have set `api_password:` add this password to the URL - eg `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant?api_password=[YOUR API PASSWORD]`) - d. Click `Done`. Then click on `Overview`, which will lead you back to the app details screen. -2. `Account linking` is required for your app to interact with Home Assistant. Set this up under the `Quick Setup` section - a. Leave it at the default `No, I only want to allow account creation on my website` and select Next - b. For the `Linking type` select `OAuth` and `Implicit` - c. Client ID: The `client_id` from your Home Assistant configuration above - d. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant/auth`. If you have set `api_password:` add this password to the URL `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant/auth?api_password=[YOUR API PASSWORD]`) - e. Configure your client. Add scopes for `email` and `name`. - f. Testing instructions: Enter anything. It doesn't matter since you won't submit this app. -3. Back on the overview page. Click `Simulator` under `TEST` - you don't have to actually test . -4. If you haven't already added the component configuration to `configuration.yaml` and restarted Home Assistant, you'll be unable to continue until you have. -5. Open the Google Assistant app and go into `Settings > Home Control` -6. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead you the screen where you can set rooms for your devices or nicknames for your devices. -7. If you want to allow other household users to control the devices: - a. Go to the settings for the project you created in point 1 in the developer console. - b. Under the gear icon, click `Permissions` - c. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role - d. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point 3 -8. If you want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project: - a. Go to the [cloud console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) - b. Select your project and click Enable Homegraph API - c. Go to Credentials, which you can find on the left navigation bar under the key icon, and select API Key from Create Credentials - d. Note down the generated API Key and use this in the configuration - ### {% linkable_title Troubleshooting the request_sync service %} The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlehome/answer/7506443?hl=en-GB) from Home Control and relink. From 5579effea931db91267e580e318e7cfafe83eee7 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 21 Sep 2018 21:52:08 +0200 Subject: [PATCH 87/97] Update --- source/developers/credits.markdown | 209 +++++++++++++++-------------- 1 file changed, 108 insertions(+), 101 deletions(-) diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown index 6eacda0733f..5de3f71a6d2 100644 --- a/source/developers/credits.markdown +++ b/source/developers/credits.markdown @@ -2,7 +2,7 @@ layout: page title: "Credits" description: "Credits for the developers who contributed to Home Assistant." -date: 2018-08-28 07:39:11 +0000 +date: 2018-09-21 19:49:45 +0000 sidebar: true comments: false sharing: true @@ -13,7 +13,7 @@ This page contains a list of people who have contributed in one way or another t ### {% linkable_title Author %} -- [Paulus Schoutsen (@balloob)](https://github.com/balloob "7458 total commits to the home-assistant organization, 4212 commits to home-assistant, 1565 commits to home-assistant.io, 1011 commits to home-assistant-polymer, 237 commits to home-assistant-js, 126 commits to netdisco, 110 commits to developers.home-assistant, 66 commits to home-assistant-js-websocket, 38 commits to hass-release, 17 commits to LabelBot, 15 commits to home-assistant-assets, 10 commits to hassio, 9 commits to hbmqtt-auth-home-assistant, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 6 commits to custom-panel-starter-kit-react, 4 commits to ui-schema, 3 commits to hassio-addons, 3 commits to hassio-build, 2 commits to home-assistant-iOS, 2 commits to issue-bot, 2 commits to lambda-home-assistant-github, 2 commits to hassio-addons-example, 1 commit to warrant, 1 commit to home-assistant-notebooks, 1 commit to architecture") +- [Paulus Schoutsen (@balloob)](https://github.com/balloob "7690 total commits to the home-assistant organization, 4314 commits to home-assistant, 1588 commits to home-assistant.io, 1067 commits to home-assistant-polymer, 237 commits to home-assistant-js, 129 commits to developers.home-assistant, 127 commits to netdisco, 94 commits to home-assistant-js-websocket, 40 commits to hass-release, 17 commits to LabelBot, 15 commits to home-assistant-assets, 11 commits to hassio, 9 commits to hbmqtt-auth-home-assistant, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 6 commits to custom-panel-starter-kit-react, 4 commits to ui-schema, 3 commits to hassio-addons, 3 commits to hassio-build, 2 commits to issue-bot, 2 commits to home-assistant-iOS, 2 commits to hassio-addons-example, 2 commits to lambda-home-assistant-github, 1 commit to home-assistant-notebooks, 1 commit to warrant, 1 commit to architecture") ### {% linkable_title Contributors %} @@ -21,9 +21,9 @@ This page contains a list of people who have contributed in one way or another t - [7even (@hwikene)](https://github.com/hwikene "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [a-andre (@a-andre)](https://github.com/a-andre "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Aaron Bach (@bachya)](https://github.com/bachya "81 total commits to the home-assistant organization, 56 commits to home-assistant, 25 commits to home-assistant.io") +- [Aaron Bach (@bachya)](https://github.com/bachya "84 total commits to the home-assistant organization, 59 commits to home-assistant, 25 commits to home-assistant.io") - [Aaron Linville (@linville)](https://github.com/linville "2 total commits to the home-assistant organization, 2 commits to appdaemon") -- [Abílio Costa (@abmantis)](https://github.com/abmantis "24 total commits to the home-assistant organization, 14 commits to home-assistant, 6 commits to home-assistant.io, 2 commits to home-assistant-polymer, 1 commit to home-assistant-js-websocket, 1 commit to netdisco") +- [Abílio Costa (@abmantis)](https://github.com/abmantis "26 total commits to the home-assistant organization, 15 commits to home-assistant, 7 commits to home-assistant.io, 2 commits to home-assistant-polymer, 1 commit to home-assistant-js-websocket, 1 commit to netdisco") - [Adam Baxter (@voltagex)](https://github.com/voltagex "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Adam Cooper (@GenericStudent)](https://github.com/GenericStudent "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.io") - [Adam Dullage (@Dullage)](https://github.com/Dullage "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") @@ -41,37 +41,32 @@ This page contains a list of people who have contributed in one way or another t - [Albatross (@DyingAlbatross)](https://github.com/DyingAlbatross "2 total commits to the home-assistant organization, 2 commits to home-assistant.io") - [Albert Lee (@trisk)](https://github.com/trisk "20 total commits to the home-assistant organization, 12 commits to home-assistant, 8 commits to home-assistant.io") - [Alberto Arias Maestro (@albertoarias)](https://github.com/albertoarias "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Alec Rust (@AlecRust)](https://github.com/AlecRust "2 total commits to the home-assistant organization, 2 commits to home-assistant.io") - [Alessandro Mogavero (@alexmogavero)](https://github.com/alexmogavero "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [Alessandro Staniscia (@Odyno)](https://github.com/Odyno "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Alex Barcelo (@alexbarcelo)](https://github.com/alexbarcelo "7 total commits to the home-assistant organization, 4 commits to home-assistant.io, 3 commits to hassio-addons") - [Alex Harvey (@infamy)](https://github.com/infamy "29 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.io, 4 commits to hassos") -- [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "2 total commits to the home-assistant organization, 2 commits to home-assistant.io") - [Alex MF (@adsmf)](https://github.com/adsmf "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [Alex Osadchyy (@aosadchyy)](https://github.com/aosadchyy "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Alex Tzonkov (@attzonko)](https://github.com/attzonko "2 total commits to the home-assistant organization, 2 commits to home-assistant.io") -- [Alexander Bachmeier (@asbach)](https://github.com/asbach "2 total commits to the home-assistant organization, 2 commits to home-assistant.io") - [Alexander Kratzer (@hexxter)](https://github.com/hexxter "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Alexandre Perrin (@kAworu)](https://github.com/kAworu "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") -- [Alexei Chetroi (@Adminiuga)](https://github.com/Adminiuga "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") +- [Alexei Chetroi (@Adminiuga)](https://github.com/Adminiuga "12 total commits to the home-assistant organization, 11 commits to home-assistant, 1 commit to home-assistant-polymer") - [Alexis Iglauer (@ax42)](https://github.com/ax42 "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Alfie Day (@Azelphur)](https://github.com/Azelphur "12 total commits to the home-assistant organization, 12 commits to home-assistant") - [Aliaksandr (@minchik)](https://github.com/minchik "7 total commits to the home-assistant organization, 3 commits to home-assistant.io, 2 commits to appdaemon, 2 commits to home-assistant") -- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "148 total commits to the home-assistant organization, 83 commits to home-assistant.io, 53 commits to home-assistant, 7 commits to home-assistant-polymer, 3 commits to developers.home-assistant, 1 commit to hassio-addons, 1 commit to pi-gen") +- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "148 total commits to the home-assistant organization, 83 commits to home-assistant.io, 53 commits to home-assistant, 7 commits to home-assistant-polymer, 3 commits to developers.home-assistant, 1 commit to pi-gen, 1 commit to hassio-addons") - [amorsillo (@AndrewMorsillo)](https://github.com/AndrewMorsillo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Anders Fogh Eriksen (@Fogh)](https://github.com/Fogh "2 total commits to the home-assistant organization, 2 commits to home-assistant.io") -- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "245 total commits to the home-assistant organization, 199 commits to home-assistant, 44 commits to home-assistant.io, 2 commits to home-assistant-polymer") +- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "252 total commits to the home-assistant organization, 206 commits to home-assistant, 44 commits to home-assistant.io, 2 commits to home-assistant-polymer") - [andig (@andig)](https://github.com/andig "2 total commits to the home-assistant organization, 2 commits to pi-gen") -- [Andrea Campi (@andreacampi)](https://github.com/andreacampi "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.io") +- [Andrea Campi (@andreacampi)](https://github.com/andreacampi "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Andreas Björshammar (@abjorshammar)](https://github.com/abjorshammar "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Andreas Jacobsen (@andreasjacobsen93)](https://github.com/andreasjacobsen93 "8 total commits to the home-assistant organization, 6 commits to home-assistant.io, 2 commits to hassio-addons") +- [Andreas Oberritter (@mtdcr)](https://github.com/mtdcr "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.io") - [Andreas Rammhold (@andir)](https://github.com/andir "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Andreas Renberg (@IQAndreas)](https://github.com/IQAndreas "2 total commits to the home-assistant organization, 2 commits to home-assistant.io") - [Andreea\-Daniela Ene (@AndreeaEne)](https://github.com/AndreeaEne "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Andrei Pop (@andreipop2005)](https://github.com/andreipop2005 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Andrej Friesen (@ajfriesen)](https://github.com/ajfriesen "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Andrew (@aneisch)](https://github.com/aneisch "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") -- [Andrew (@aoakeson)](https://github.com/aoakeson "2 total commits to the home-assistant organization, 2 commits to home-assistant.io") -- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "821 total commits to the home-assistant organization, 686 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 22 commits to home-assistant.io") +- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "836 total commits to the home-assistant organization, 701 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 22 commits to home-assistant.io") - [Andrew Smith (@andrewmichaelsmith)](https://github.com/andrewmichaelsmith "2 total commits to the home-assistant organization, 2 commits to pi-gen") - [Andrew Stock (@watchforstock)](https://github.com/watchforstock "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Andrew Thigpen (@andythigpen)](https://github.com/andythigpen "33 total commits to the home-assistant organization, 32 commits to home-assistant, 1 commit to home-assistant-js") @@ -80,7 +75,6 @@ This page contains a list of people who have contributed in one way or another t - [Andrey (@andrey-git)](https://github.com/andrey-git "323 total commits to the home-assistant organization, 147 commits to home-assistant, 138 commits to home-assistant-polymer, 37 commits to home-assistant.io, 1 commit to home-assistant-js-websocket") - [Andrey Kupreychik (@foxel)](https://github.com/foxel "13 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.io") - [Andrzej (@andriej)](https://github.com/andriej "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") -- [Andréas Lundgren (@adevade)](https://github.com/adevade "2 total commits to the home-assistant organization, 2 commits to home-assistant.io") - [Andy Castille (@Klikini)](https://github.com/Klikini "18 total commits to the home-assistant organization, 11 commits to home-assistant, 7 commits to home-assistant.io") - [anotherthomas (@anotherthomas)](https://github.com/anotherthomas "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [Anthony Arnaud (@aarnaud)](https://github.com/aarnaud "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -117,7 +111,7 @@ This page contains a list of people who have contributed in one way or another t - [bcl1713 (@bcl1713)](https://github.com/bcl1713 "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Beat (@bdurrer)](https://github.com/bdurrer "14 total commits to the home-assistant organization, 10 commits to home-assistant.io, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Ben Bangert (@bbangert)](https://github.com/bbangert "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Ben Lebherz (@benleb)](https://github.com/benleb "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") +- [Ben Lebherz (@benleb)](https://github.com/benleb "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Ben Nuttall (@bennuttall)](https://github.com/bennuttall "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Ben Origas (@borigas)](https://github.com/borigas "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Ben Pirt (@bjpirt)](https://github.com/bjpirt "2 total commits to the home-assistant organization, 2 commits to pi-gen") @@ -136,7 +130,8 @@ This page contains a list of people who have contributed in one way or another t - [Boced66 (@boced66)](https://github.com/boced66 "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [bonanitech (@bonanitech)](https://github.com/bonanitech "9 total commits to the home-assistant organization, 9 commits to home-assistant.io") - [boojew (@boojew)](https://github.com/boojew "7 total commits to the home-assistant organization, 7 commits to home-assistant.io") -- [Boris K (@bokub)](https://github.com/bokub "12 total commits to the home-assistant organization, 6 commits to home-assistant.io, 6 commits to home-assistant") +- [Boris K (@bokub)](https://github.com/bokub "12 total commits to the home-assistant organization, 6 commits to home-assistant, 6 commits to home-assistant.io") +- [borpin (@borpin)](https://github.com/borpin "1 total commits to the home-assistant organization, 1 commit to hassos") - [bottomquark (@bottomquark)](https://github.com/bottomquark "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Boyi C (@fanthos)](https://github.com/fanthos "23 total commits to the home-assistant organization, 17 commits to home-assistant-polymer, 6 commits to home-assistant") - [Brad Dixon (@rbdixon)](https://github.com/rbdixon "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -154,7 +149,7 @@ This page contains a list of people who have contributed in one way or another t - [Brent Saltzman (@brent20)](https://github.com/brent20 "9 total commits to the home-assistant organization, 9 commits to home-assistant.io") - [Brian Cribbs (@cribbstechnologies)](https://github.com/cribbstechnologies "43 total commits to the home-assistant organization, 26 commits to home-assistant, 15 commits to home-assistant.io, 2 commits to home-assistant-polymer") - [Brian Hopkins (@btotharye)](https://github.com/btotharye "6 total commits to the home-assistant organization, 4 commits to home-assistant.io, 2 commits to home-assistant") -- [Brian J King (@brianjking)](https://github.com/brianjking "12 total commits to the home-assistant organization, 12 commits to home-assistant.io") +- [Brian J King (@brianjking)](https://github.com/brianjking "14 total commits to the home-assistant organization, 14 commits to home-assistant.io") - [Brian Jinwright (@bjinwright)](https://github.com/bjinwright "159 total commits to the home-assistant organization, 159 commits to warrant") - [BRUH Automation (@bruhautomation)](https://github.com/bruhautomation "3 total commits to the home-assistant organization, 3 commits to hassbian-scripts") - [Bruno Adele (@badele)](https://github.com/badele "22 total commits to the home-assistant organization, 22 commits to home-assistant") @@ -168,15 +163,16 @@ This page contains a list of people who have contributed in one way or another t - [Cameron Bulock (@cbulock)](https://github.com/cbulock "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to netdisco") - [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "99 total commits to the home-assistant organization, 91 commits to home-assistant.io, 5 commits to home-assistant, 1 commit to fabric-home-assistant, 1 commit to hassbian-scripts, 1 commit to homebridge-homeassistant") - [carlosmgr (@carlosmgr)](https://github.com/carlosmgr "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [cdce8p (@cdce8p)](https://github.com/cdce8p "143 total commits to the home-assistant organization, 84 commits to home-assistant, 41 commits to home-assistant.io, 11 commits to home-assistant-polymer, 5 commits to hass-release, 2 commits to developers.home-assistant") +- [cdce8p (@cdce8p)](https://github.com/cdce8p "147 total commits to the home-assistant organization, 85 commits to home-assistant, 42 commits to home-assistant.io, 13 commits to home-assistant-polymer, 5 commits to hass-release, 2 commits to developers.home-assistant") - [Cecron (@Cecron)](https://github.com/Cecron "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Cedric Van Goethem (@Zepheus)](https://github.com/Zepheus "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Cenk Gündoğan (@cgundogan)](https://github.com/cgundogan "1 total commits to the home-assistant organization, 1 commit to libcoap") +- [Censored3 (@Censored3)](https://github.com/Censored3 "2 total commits to the home-assistant organization, 2 commits to hassio-addons") - [Cezar Sá Espinola (@cezarsa)](https://github.com/cezarsa "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [cgtobi (@cgtobi)](https://github.com/cgtobi "32 total commits to the home-assistant organization, 19 commits to home-assistant, 13 commits to home-assistant.io") +- [cgtobi (@cgtobi)](https://github.com/cgtobi "34 total commits to the home-assistant organization, 21 commits to home-assistant, 13 commits to home-assistant.io") - [chanders (@chanders)](https://github.com/chanders "2 total commits to the home-assistant organization, 2 commits to hadashboard") - [Charles Blonde (@CharlesBlonde)](https://github.com/CharlesBlonde "19 total commits to the home-assistant organization, 12 commits to home-assistant, 7 commits to home-assistant.io") -- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "26 total commits to the home-assistant organization, 14 commits to home-assistant.io, 9 commits to home-assistant, 3 commits to home-assistant-polymer") +- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "33 total commits to the home-assistant organization, 16 commits to home-assistant.io, 10 commits to home-assistant, 7 commits to home-assistant-polymer") - [Charles Spirakis (@srcLurker)](https://github.com/srcLurker "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.io") - [Chayoung You (@yous)](https://github.com/yous "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Check your git settings\! (@invalid-email-address)](https://github.com/invalid-email-address "1 total commits to the home-assistant organization, 1 commit to libcoap") @@ -203,37 +199,34 @@ This page contains a list of people who have contributed in one way or another t - [Claus F\. Strasburger (@cfstras)](https://github.com/cfstras "5 total commits to the home-assistant organization, 5 commits to pi-gen") - [cogneato (@cogneato)](https://github.com/cogneato "20 total commits to the home-assistant organization, 15 commits to home-assistant.io, 3 commits to developers.home-assistant, 2 commits to hassos") - [Colin Dunn (@colindunn)](https://github.com/colindunn "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Colin Frei (@colinfrei)](https://github.com/colinfrei "5 total commits to the home-assistant organization, 3 commits to home-assistant.io, 2 commits to home-assistant") +- [Colin Frei (@colinfrei)](https://github.com/colinfrei "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Colin O'Dell (@colinodell)](https://github.com/colinodell "33 total commits to the home-assistant organization, 18 commits to home-assistant, 15 commits to home-assistant.io") - [Colin Teubner (@netopiax)](https://github.com/netopiax "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") -- [Conrad Juhl Andersen (@cnrd)](https://github.com/cnrd "15 total commits to the home-assistant organization, 7 commits to home-assistant, 5 commits to home-assistant.io, 2 commits to home-assistant-polymer, 1 commit to developers.home-assistant") +- [Conrad Juhl Andersen (@cnrd)](https://github.com/cnrd "17 total commits to the home-assistant organization, 9 commits to home-assistant, 5 commits to home-assistant.io, 2 commits to home-assistant-polymer, 1 commit to developers.home-assistant") - [Constantine Grantcharov (@conz27)](https://github.com/conz27 "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Constantine Poltyrev (@shprota)](https://github.com/shprota "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Corban Mailloux (@corbanmailloux)](https://github.com/corbanmailloux "18 total commits to the home-assistant organization, 18 commits to home-assistant.io") -- [Corey Pauley (@devspacenine)](https://github.com/devspacenine "5 total commits to the home-assistant organization, 3 commits to home-assistant.io, 2 commits to home-assistant") +- [Corey Pauley (@devspacenine)](https://github.com/devspacenine "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [corneyl (@corneyl)](https://github.com/corneyl "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Craig J\. Midwinter (@craigjmidwinter)](https://github.com/craigjmidwinter "27 total commits to the home-assistant organization, 20 commits to home-assistant, 7 commits to home-assistant.io") - [CTLS (@CTLS)](https://github.com/CTLS "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [CV (@dagobert)](https://github.com/dagobert "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [cxlwill (@cxlwill)](https://github.com/cxlwill "4 total commits to the home-assistant organization, 2 commits to hassbian-scripts, 2 commits to home-assistant-polymer") - [Dale Higgs (@dale3h)](https://github.com/dale3h "45 total commits to the home-assistant organization, 32 commits to home-assistant.io, 11 commits to home-assistant, 1 commit to hassbot, 1 commit to homebridge-homeassistant") -- [damarco (@damarco)](https://github.com/damarco "6 total commits to the home-assistant organization, 6 commits to home-assistant") +- [damarco (@damarco)](https://github.com/damarco "7 total commits to the home-assistant organization, 7 commits to home-assistant") - [Dan (@danieljkemp)](https://github.com/danieljkemp "23 total commits to the home-assistant organization, 16 commits to home-assistant, 7 commits to home-assistant.io") -- [Dan Chen (@djchen)](https://github.com/djchen "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "19 total commits to the home-assistant organization, 16 commits to home-assistant, 3 commits to home-assistant.io") -- [Dan Klaffenbach (@klada)](https://github.com/klada "4 total commits to the home-assistant organization, 4 commits to home-assistant") +- [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "17 total commits to the home-assistant organization, 14 commits to home-assistant, 3 commits to home-assistant.io") +- [Dan Klaffenbach (@klada)](https://github.com/klada "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Dan Nixon (@DanNixon)](https://github.com/DanNixon "25 total commits to the home-assistant organization, 19 commits to home-assistant, 6 commits to home-assistant.io") - [Dan Ports (@drkp)](https://github.com/drkp "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Dan Sarginson (@dansarginson)](https://github.com/dansarginson "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Dan Smith (@kk7ds)](https://github.com/kk7ds "84 total commits to the home-assistant organization, 68 commits to home-assistant, 14 commits to home-assistant.io, 2 commits to home-assistant-polymer") - [Dani (@danichispa)](https://github.com/danichispa "9 total commits to the home-assistant organization, 9 commits to home-assistant.io") - [Daniel Bowman (@vrih)](https://github.com/vrih "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to netdisco") - [Daniel Escoz (@Darkhogg)](https://github.com/Darkhogg "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") -- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "310 total commits to the home-assistant organization, 196 commits to home-assistant, 111 commits to home-assistant.io, 3 commits to home-assistant-polymer") -- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "102 total commits to the home-assistant organization, 50 commits to home-assistant, 41 commits to home-assistant.io, 11 commits to hassio-addons") +- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "330 total commits to the home-assistant organization, 210 commits to home-assistant, 117 commits to home-assistant.io, 3 commits to home-assistant-polymer") +- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "107 total commits to the home-assistant organization, 54 commits to home-assistant, 42 commits to home-assistant.io, 11 commits to hassio-addons") - [Daniel Peukert (@dpeukert)](https://github.com/dpeukert "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Daniel Schaal (@schaal)](https://github.com/schaal "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Daniel Shokouhi (@dshokouhi)](https://github.com/dshokouhi "26 total commits to the home-assistant organization, 19 commits to home-assistant.io, 7 commits to home-assistant") +- [Daniel Shokouhi (@dshokouhi)](https://github.com/dshokouhi "27 total commits to the home-assistant organization, 20 commits to home-assistant.io, 7 commits to home-assistant") - [Daniel Trnka (@trnila)](https://github.com/trnila "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [Daniel Watkins (@OddBloke)](https://github.com/OddBloke "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Daniel Welch (@danielwelch)](https://github.com/danielwelch "6 total commits to the home-assistant organization, 3 commits to home-assistant.io, 2 commits to homebridge-homeassistant, 1 commit to hassio-addons") @@ -243,14 +236,12 @@ This page contains a list of people who have contributed in one way or another t - [datafx (@datafx)](https://github.com/datafx "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Dave Banks (@djbanks)](https://github.com/djbanks "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [Dave J (@kxtcd950)](https://github.com/kxtcd950 "3 total commits to the home-assistant organization, 3 commits to hassbian-scripts") -- [DaveSergeant (@dethpickle)](https://github.com/dethpickle "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [David (@fanaticDavid)](https://github.com/fanaticDavid "16 total commits to the home-assistant organization, 12 commits to home-assistant.io, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [David Broadfoot (@dlbroadfoot)](https://github.com/dlbroadfoot "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [David De Sloovere (@DavidDeSloovere)](https://github.com/DavidDeSloovere "16 total commits to the home-assistant organization, 16 commits to home-assistant.io") - [David F\. Mulcahey (@dmulcahey)](https://github.com/dmulcahey "5 total commits to the home-assistant organization, 5 commits to home-assistant") -- [David Fiel (@dfiel)](https://github.com/dfiel "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [David Grant (@davegravy)](https://github.com/davegravy "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") -- [David McNett (@nugget)](https://github.com/nugget "10 total commits to the home-assistant organization, 5 commits to home-assistant.io, 5 commits to home-assistant") +- [David McNett (@nugget)](https://github.com/nugget "10 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.io") - [David Ohayon (@ohayon)](https://github.com/ohayon "3 total commits to the home-assistant organization, 3 commits to issue-bot") - [David Steele (@davesteele)](https://github.com/davesteele "4 total commits to the home-assistant organization, 4 commits to pi-gen") - [David Straub (@DavidMStraub)](https://github.com/DavidMStraub "10 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant.io") @@ -262,6 +253,7 @@ This page contains a list of people who have contributed in one way or another t - [deisi (@deisi)](https://github.com/deisi "10 total commits to the home-assistant organization, 10 commits to home-assistant") - [Delio Castillo (@jangeador)](https://github.com/jangeador "2 total commits to the home-assistant organization, 2 commits to hassio-addons") - [Demid Lupin (@lupin-de-mid)](https://github.com/lupin-de-mid "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") +- [Denix (@denics)](https://github.com/denics "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Dennis Karpienski (@TheRealLink)](https://github.com/TheRealLink "22 total commits to the home-assistant organization, 15 commits to home-assistant-polymer, 6 commits to home-assistant, 1 commit to netdisco") - [Derek (@itchaboy)](https://github.com/itchaboy "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") - [Derek Brooks (@broox)](https://github.com/broox "39 total commits to the home-assistant organization, 30 commits to home-assistant, 9 commits to home-assistant.io") @@ -269,13 +261,13 @@ This page contains a list of people who have contributed in one way or another t - [DetroitEE (@DetroitEE)](https://github.com/DetroitEE "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [devdelay (@devdelay)](https://github.com/devdelay "16 total commits to the home-assistant organization, 7 commits to home-assistant.io, 5 commits to home-assistant, 4 commits to homebridge-homeassistant") - [Devon Peet (@dpeet)](https://github.com/dpeet "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") -- [Diogo Gomes (@dgomes)](https://github.com/dgomes "70 total commits to the home-assistant organization, 46 commits to home-assistant, 23 commits to home-assistant.io, 1 commit to developers.home-assistant") +- [Diogo Gomes (@dgomes)](https://github.com/dgomes "74 total commits to the home-assistant organization, 49 commits to home-assistant, 24 commits to home-assistant.io, 1 commit to developers.home-assistant") - [Dmitri Pribysh (@dmand)](https://github.com/dmand "1 total commits to the home-assistant organization, 1 commit to hassos") - [Domantas (@Dohxis)](https://github.com/Dohxis "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [dramamoose (@dramamoose)](https://github.com/dramamoose "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.io") - [DrewSK (@dzsquared)](https://github.com/dzsquared "8 total commits to the home-assistant organization, 8 commits to home-assistant.io") -- [DubhAd (@DubhAd)](https://github.com/DubhAd "395 total commits to the home-assistant organization, 392 commits to home-assistant.io, 2 commits to hassos, 1 commit to developers.home-assistant") +- [DubhAd (@DubhAd)](https://github.com/DubhAd "419 total commits to the home-assistant organization, 415 commits to home-assistant.io, 2 commits to hassos, 2 commits to developers.home-assistant") - [Duoxilian (@Duoxilian)](https://github.com/Duoxilian "11 total commits to the home-assistant organization, 6 commits to home-assistant.io, 5 commits to home-assistant") - [ebpetway (@ebpetway)](https://github.com/ebpetway "55 total commits to the home-assistant organization, 55 commits to warrant") - [Egor Tsinko (@etsinko)](https://github.com/etsinko "12 total commits to the home-assistant organization, 9 commits to home-assistant, 3 commits to home-assistant.io") @@ -293,10 +285,10 @@ This page contains a list of people who have contributed in one way or another t - [Eu (@covrig)](https://github.com/covrig "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer") - [Eugenio Panadero (@azogue)](https://github.com/azogue "77 total commits to the home-assistant organization, 46 commits to home-assistant, 25 commits to home-assistant.io, 3 commits to homebridge-homeassistant, 3 commits to home-assistant-polymer") - [Ezra Bowden (@bn0)](https://github.com/bn0 "2 total commits to the home-assistant organization, 2 commits to warrant") -- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4889 total commits to the home-assistant organization, 3055 commits to home-assistant.io, 1697 commits to home-assistant, 33 commits to home-assistant-assets, 32 commits to home-assistant-notebooks, 15 commits to developers.home-assistant, 11 commits to home-assistant-polymer, 11 commits to hassio-build, 10 commits to netdisco, 7 commits to hassos, 6 commits to hassio-addons, 4 commits to hassio, 3 commits to hass-release, 2 commits to home-assistant-iOS, 1 commit to example-custom-config, 1 commit to ui-schema, 1 commit to home-assistant-js-websocket") +- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4972 total commits to the home-assistant organization, 3110 commits to home-assistant.io, 1723 commits to home-assistant, 33 commits to home-assistant-assets, 32 commits to home-assistant-notebooks, 15 commits to developers.home-assistant, 11 commits to home-assistant-polymer, 11 commits to hassio-build, 10 commits to netdisco, 7 commits to hassos, 6 commits to hassio, 6 commits to hassio-addons, 3 commits to hass-release, 2 commits to home-assistant-iOS, 1 commit to home-assistant-js-websocket, 1 commit to example-custom-config, 1 commit to ui-schema") - [Fabian Fischer (@nodomain)](https://github.com/nodomain "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [Fabian Heredia Montiel (@fabianhjr)](https://github.com/fabianhjr "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Fabien Piuzzi (@reefab)](https://github.com/reefab "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") +- [Fabien Piuzzi (@reefab)](https://github.com/reefab "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Fabrizio Furnari (@fabfurnari)](https://github.com/fabfurnari "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [fakezeta (@fakezeta)](https://github.com/fakezeta "7 total commits to the home-assistant organization, 7 commits to home-assistant") - [Felix Krause (@KrauseFx)](https://github.com/KrauseFx "27 total commits to the home-assistant organization, 27 commits to issue-bot") @@ -308,22 +300,23 @@ This page contains a list of people who have contributed in one way or another t - [florianj1 (@florianj1)](https://github.com/florianj1 "1 total commits to the home-assistant organization, 1 commit to hassio") - [florincosta (@florincosta)](https://github.com/florincosta "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.io") - [Fonta (@f0nt4)](https://github.com/f0nt4 "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") -- [Franck Nijhof (@frenck)](https://github.com/frenck "44 total commits to the home-assistant organization, 31 commits to home-assistant.io, 6 commits to hassio, 2 commits to hassio-cli, 2 commits to hassio-addons, 2 commits to home-assistant-polymer, 1 commit to appdaemon") +- [Franck Nijhof (@frenck)](https://github.com/frenck "52 total commits to the home-assistant organization, 31 commits to home-assistant.io, 10 commits to hassio, 3 commits to hassio-addons, 3 commits to home-assistant, 2 commits to hassio-cli, 2 commits to home-assistant-polymer, 1 commit to appdaemon") - [Frank (@syphernl)](https://github.com/syphernl "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Frantz (@rofrantz)](https://github.com/rofrantz "17 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to home-assistant.io, 3 commits to netdisco, 1 commit to home-assistant-js-websocket") - [Frederic Hemberger (@fhemberger)](https://github.com/fhemberger "93 total commits to the home-assistant organization, 93 commits to home-assistant.io") - [Frederik Bolding (@FrederikBolding)](https://github.com/FrederikBolding "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "224 total commits to the home-assistant organization, 110 commits to hassbian-scripts, 73 commits to home-assistant.io, 36 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer") +- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "226 total commits to the home-assistant organization, 112 commits to hassbian-scripts, 73 commits to home-assistant.io, 36 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer") - [freol35241 (@freol35241)](https://github.com/freol35241 "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [fuga2136 (@fuga2136)](https://github.com/fuga2136 "13 total commits to the home-assistant organization, 13 commits to home-assistant.io") - [Gabor SZOLLOSI (@szogi)](https://github.com/szogi "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Gabriel Oliveira (@gabrielboliveira)](https://github.com/gabrielboliveira "2 total commits to the home-assistant organization, 1 commit to hassos, 1 commit to hassio-addons") +- [geekofweek (@geekofweek)](https://github.com/geekofweek "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Geoff Norton (@kangaroo)](https://github.com/kangaroo "14 total commits to the home-assistant organization, 14 commits to home-assistant") - [George\.M (@nodinosaur)](https://github.com/nodinosaur "6 total commits to the home-assistant organization, 6 commits to home-assistant.io") - [Georgi Kirichkov (@kirichkov)](https://github.com/kirichkov "17 total commits to the home-assistant organization, 11 commits to home-assistant.io, 5 commits to home-assistant, 1 commit to appdaemon") - [Georgi Yanev (@jumpalottahigh)](https://github.com/jumpalottahigh "6 total commits to the home-assistant organization, 4 commits to home-assistant.io, 2 commits to home-assistant-polymer") - [Georgii Staroselskii (@staroselskii)](https://github.com/staroselskii "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Gerard (@gerard33)](https://github.com/gerard33 "12 total commits to the home-assistant organization, 6 commits to home-assistant.io, 6 commits to home-assistant") +- [Gerard (@gerard33)](https://github.com/gerard33 "12 total commits to the home-assistant organization, 6 commits to home-assistant, 6 commits to home-assistant.io") - [Gergely Imreh (@imrehg)](https://github.com/imrehg "16 total commits to the home-assistant organization, 11 commits to home-assistant, 5 commits to home-assistant.io") - [Gianluca Barbaro (@MrMep)](https://github.com/MrMep "24 total commits to the home-assistant organization, 16 commits to home-assistant, 8 commits to home-assistant.io") - [Giel Janssens (@gieljnssns)](https://github.com/gieljnssns "5 total commits to the home-assistant organization, 5 commits to home-assistant") @@ -331,14 +324,14 @@ This page contains a list of people who have contributed in one way or another t - [GitBook Bot (@gitbook-bot)](https://github.com/gitbook-bot "1 total commits to the home-assistant organization, 1 commit to developers.home-assistant") - [githubbuh (@githubbuh)](https://github.com/githubbuh "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") - [gitmopp (@gitmopp)](https://github.com/gitmopp "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") -- [Giuseppe (@glpatcern)](https://github.com/glpatcern "4 total commits to the home-assistant organization, 4 commits to home-assistant") +- [Giuseppe (@glpatcern)](https://github.com/glpatcern "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Glenn Waters (@gwww)](https://github.com/gwww "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [GMFalka (@GMFalka)](https://github.com/GMFalka "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Gopal Kildoliya (@gopalkildoliya)](https://github.com/gopalkildoliya "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Grant McConnaughey (@grantmcconnaughey)](https://github.com/grantmcconnaughey "8 total commits to the home-assistant organization, 8 commits to warrant") - [GreenTurtwig (@GreenTurtwig)](https://github.com/GreenTurtwig "80 total commits to the home-assistant organization, 75 commits to home-assistant.io, 5 commits to home-assistant") - [Greg Dowling (@pavoni)](https://github.com/pavoni "209 total commits to the home-assistant organization, 183 commits to home-assistant, 25 commits to home-assistant.io, 1 commit to netdisco") -- [Greg Laabs (@OverloadUT)](https://github.com/OverloadUT "20 total commits to the home-assistant organization, 16 commits to home-assistant, 4 commits to home-assistant.io") +- [Greg Laabs (@OverloadUT)](https://github.com/OverloadUT "22 total commits to the home-assistant organization, 18 commits to home-assistant, 4 commits to home-assistant.io") - [Greg MacLellan (@gregmac)](https://github.com/gregmac "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Greg Stevenson (@gstevenson)](https://github.com/gstevenson "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Gregory Benner (@Klathmon)](https://github.com/Klathmon "3 total commits to the home-assistant organization, 3 commits to home-assistant") @@ -364,7 +357,7 @@ This page contains a list of people who have contributed in one way or another t - [Hillary Fraley (@hillaryfraley)](https://github.com/hillaryfraley "12 total commits to the home-assistant organization, 12 commits to home-assistant.io") - [Hmmbob (@hmmbob)](https://github.com/hmmbob "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [honcheng (@honcheng)](https://github.com/honcheng "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") -- [huangyupeng (@huangyupeng)](https://github.com/huangyupeng "14 total commits to the home-assistant organization, 7 commits to home-assistant.io, 7 commits to home-assistant") +- [huangyupeng (@huangyupeng)](https://github.com/huangyupeng "14 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.io") - [Hugo Dupras (@jabesq)](https://github.com/jabesq "29 total commits to the home-assistant organization, 21 commits to home-assistant, 8 commits to home-assistant.io") - [Hugo Gresse (@HugoGresse)](https://github.com/HugoGresse "8 total commits to the home-assistant organization, 8 commits to home-assistant.io") - [Hugo Hromic (@hhromic)](https://github.com/hhromic "4 total commits to the home-assistant organization, 4 commits to pi-gen") @@ -375,7 +368,8 @@ This page contains a list of people who have contributed in one way or another t - [ianj001 (@ianj001)](https://github.com/ianj001 "7 total commits to the home-assistant organization, 7 commits to home-assistant.io") - [icovada (@icovada)](https://github.com/icovada "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.io") - [Igor Shults (@ishults)](https://github.com/ishults "12 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.io, 1 commit to home-assistant-polymer") -- [Ioan Loosley (@ioangogo)](https://github.com/ioangogo "11 total commits to the home-assistant organization, 11 commits to home-assistant.io") +- [Ioan Loosley (@ioangogo)](https://github.com/ioangogo "15 total commits to the home-assistant organization, 12 commits to home-assistant.io, 3 commits to home-assistant") +- [Isabella Gross Alström (@isabellaalstrom)](https://github.com/isabellaalstrom "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Issac Kelly (@issackelly)](https://github.com/issackelly "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Jaak Laineste (@jaakla)](https://github.com/jaakla "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Jacen (@jacen92)](https://github.com/jacen92 "2 total commits to the home-assistant organization, 2 commits to pi-gen") @@ -384,7 +378,7 @@ This page contains a list of people who have contributed in one way or another t - [Jack Minardi (@jminardi)](https://github.com/jminardi "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Jacob Mansfield (@cyberjacob)](https://github.com/cyberjacob "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Jacob Siverskog (@jsiverskog)](https://github.com/jsiverskog "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Jacob Tomlinson (@jacobtomlinson)](https://github.com/jacobtomlinson "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") +- [Jacob Tomlinson (@jacobtomlinson)](https://github.com/jacobtomlinson "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") - [Jaimyn Mayer (@jabelone)](https://github.com/jabelone "1 total commits to the home-assistant organization, 1 commit to hassbian-scripts") - [Jakub Bittner (@rexcze)](https://github.com/rexcze "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer") - [James Cole (@jamespcole)](https://github.com/jamespcole "94 total commits to the home-assistant organization, 93 commits to home-assistant, 1 commit to home-assistant-js") @@ -399,7 +393,7 @@ This page contains a list of people who have contributed in one way or another t - [Janne Grunau (@jannau)](https://github.com/jannau "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Jason Carter (@JasonCarter80)](https://github.com/JasonCarter80 "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.io") - [Jason Hite (@jasonmhite)](https://github.com/jasonmhite "6 total commits to the home-assistant organization, 6 commits to appdaemon") -- [Jason Hu (@awarecan)](https://github.com/awarecan "92 total commits to the home-assistant organization, 62 commits to home-assistant, 12 commits to home-assistant-polymer, 11 commits to home-assistant.io, 6 commits to developers.home-assistant, 1 commit to home-assistant-js-websocket") +- [Jason Hu (@awarecan)](https://github.com/awarecan "136 total commits to the home-assistant organization, 93 commits to home-assistant, 17 commits to home-assistant-polymer, 15 commits to home-assistant.io, 9 commits to developers.home-assistant, 1 commit to home-assistant-js-websocket, 1 commit to netdisco") - [Jason Hunter (@hunterjm)](https://github.com/hunterjm "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Jay Stevens (@Jay2645)](https://github.com/Jay2645 "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [JAYMAN-ATX (@JAYMAN-ATX)](https://github.com/JAYMAN-ATX "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") @@ -409,8 +403,8 @@ This page contains a list of people who have contributed in one way or another t - [Jeff Schroeder (@SEJeff)](https://github.com/SEJeff "17 total commits to the home-assistant organization, 17 commits to home-assistant") - [Jeff Wilson (@jawilson)](https://github.com/jawilson "25 total commits to the home-assistant organization, 19 commits to home-assistant, 6 commits to home-assistant.io") - [Jens (@jhoepken)](https://github.com/jhoepken "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") -- [Jens Østergaard Nielsen (@dingusdk)](https://github.com/dingusdk "8 total commits to the home-assistant organization, 4 commits to home-assistant.io, 4 commits to home-assistant") -- [Jerad Meisner (@jeradM)](https://github.com/jeradM "52 total commits to the home-assistant organization, 30 commits to home-assistant-polymer, 11 commits to home-assistant.io, 11 commits to home-assistant") +- [Jens Østergaard Nielsen (@dingusdk)](https://github.com/dingusdk "8 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.io") +- [Jerad Meisner (@jeradM)](https://github.com/jeradM "57 total commits to the home-assistant organization, 33 commits to home-assistant-polymer, 12 commits to home-assistant.io, 12 commits to home-assistant") - [Jeremiah Wuenschel (@jer)](https://github.com/jer "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Jeremy Williams (@jwillaz)](https://github.com/jwillaz "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") - [jeremysv (@jeremysv)](https://github.com/jeremysv "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") @@ -419,12 +413,12 @@ This page contains a list of people who have contributed in one way or another t - [Jerry Workman (@JerryWorkman)](https://github.com/JerryWorkman "9 total commits to the home-assistant organization, 9 commits to home-assistant.io") - [Jesse Hills (@jesserockz)](https://github.com/jesserockz "9 total commits to the home-assistant organization, 9 commits to home-assistant") - [Jesse Newland (@jnewland)](https://github.com/jnewland "16 total commits to the home-assistant organization, 13 commits to home-assistant, 3 commits to hubot-home-assistant") -- [JesseWebDotCom (@JesseWebDotCom)](https://github.com/JesseWebDotCom "16 total commits to the home-assistant organization, 8 commits to home-assistant.io, 8 commits to home-assistant") +- [JesseWebDotCom (@JesseWebDotCom)](https://github.com/JesseWebDotCom "16 total commits to the home-assistant organization, 8 commits to home-assistant, 8 commits to home-assistant.io") - [jgrieger1 (@jgrieger1)](https://github.com/jgrieger1 "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [jiafengwang (@jiafengwang)](https://github.com/jiafengwang "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [jimbob1001 (@jimbob1001)](https://github.com/jimbob1001 "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Joakim Nohlgård (@gebart)](https://github.com/gebart "2 total commits to the home-assistant organization, 2 commits to libcoap") -- [Joakim Sørensen (@ludeeus)](https://github.com/ludeeus "123 total commits to the home-assistant organization, 98 commits to hassbian-scripts, 22 commits to home-assistant.io, 3 commits to home-assistant") +- [Joakim Sørensen (@ludeeus)](https://github.com/ludeeus "129 total commits to the home-assistant organization, 104 commits to hassbian-scripts, 22 commits to home-assistant.io, 3 commits to home-assistant") - [jodur (@jodur)](https://github.com/jodur "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Joe Lu (@snjoetw)](https://github.com/snjoetw "25 total commits to the home-assistant organization, 19 commits to home-assistant, 5 commits to home-assistant.io, 1 commit to appdaemon") - [Joe McMonagle (@joemcmonagle)](https://github.com/joemcmonagle "13 total commits to the home-assistant organization, 13 commits to home-assistant.io") @@ -435,8 +429,9 @@ This page contains a list of people who have contributed in one way or another t - [Johan van der Kuijl (@Rubyan)](https://github.com/Rubyan "4 total commits to the home-assistant organization, 3 commits to home-assistant.io, 1 commit to appdaemon") - [Johann Kellerman (@kellerza)](https://github.com/kellerza "181 total commits to the home-assistant organization, 148 commits to home-assistant, 33 commits to home-assistant.io") - [Johannes K\. (@roadrash2108)](https://github.com/roadrash2108 "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") +- [Johannes Truschnigg (@jtru)](https://github.com/jtru "1 total commits to the home-assistant organization, 1 commit to hassos") - [John (@J-C-B)](https://github.com/J-C-B "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") -- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "218 total commits to the home-assistant organization, 156 commits to home-assistant, 40 commits to home-assistant.io, 22 commits to home-assistant-polymer") +- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "221 total commits to the home-assistant organization, 156 commits to home-assistant, 42 commits to home-assistant.io, 23 commits to home-assistant-polymer") - [John Lindley (@jwl17330536)](https://github.com/jwl17330536 "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [John Mihalic (@mezz64)](https://github.com/mezz64 "51 total commits to the home-assistant organization, 37 commits to home-assistant, 12 commits to home-assistant.io, 1 commit to hadashboard, 1 commit to home-assistant-polymer") - [Johnny Chadda (@joch)](https://github.com/joch "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") @@ -461,7 +456,7 @@ This page contains a list of people who have contributed in one way or another t - [JudgeDredd (@JudgeDreddKLC)](https://github.com/JudgeDreddKLC "10 total commits to the home-assistant organization, 10 commits to home-assistant.io") - [Juggels (@Juggels)](https://github.com/Juggels "11 total commits to the home-assistant organization, 7 commits to home-assistant, 4 commits to home-assistant.io") - [Julian Kaffke (@jaykay)](https://github.com/jaykay "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Julian Kahnert (@JulianKahnert)](https://github.com/JulianKahnert "6 total commits to the home-assistant organization, 3 commits to home-assistant.io, 3 commits to home-assistant") +- [Julian Kahnert (@JulianKahnert)](https://github.com/JulianKahnert "7 total commits to the home-assistant organization, 4 commits to home-assistant.io, 3 commits to home-assistant") - [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "31 total commits to the home-assistant organization, 24 commits to home-assistant, 7 commits to home-assistant.io") - [jumpkick (@jumpkick)](https://github.com/jumpkick "15 total commits to the home-assistant organization, 12 commits to home-assistant, 3 commits to home-assistant.io") - [Junian Triajianto (@junian)](https://github.com/junian "1 total commits to the home-assistant organization, 1 commit to pi-gen") @@ -469,21 +464,23 @@ This page contains a list of people who have contributed in one way or another t - [Justin Hayes (@GussyH)](https://github.com/GussyH "8 total commits to the home-assistant organization, 7 commits to hadashboard, 1 commit to appdaemon") - [Justin Weberg (@justweb1)](https://github.com/justweb1 "26 total commits to the home-assistant organization, 13 commits to home-assistant-polymer, 7 commits to hassbot, 4 commits to home-assistant, 1 commit to home-assistant-js, 1 commit to hassio") - [Justyn Shull (@justyns)](https://github.com/justyns "5 total commits to the home-assistant organization, 5 commits to home-assistant") +- [Jérémie Klein (@grm)](https://github.com/grm "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Karen Goode (@kfgoode)](https://github.com/kfgoode "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [karlkar (@karlkar)](https://github.com/karlkar "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 commits to home-assistant.io") -- [kbickar (@kbickar)](https://github.com/kbickar "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [kbickar (@kbickar)](https://github.com/kbickar "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Keaton Taylor (@keatontaylor)](https://github.com/keatontaylor "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.io") - [Ken Bannister (@kb2ma)](https://github.com/kb2ma "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Ken Davidson (@kwdavidson)](https://github.com/kwdavidson "14 total commits to the home-assistant organization, 12 commits to home-assistant.io, 2 commits to appdaemon") +- [Ken Davidson (@kwdavidson)](https://github.com/kwdavidson "15 total commits to the home-assistant organization, 13 commits to home-assistant.io, 2 commits to appdaemon") - [kennedyshead (@kennedyshead)](https://github.com/kennedyshead "10 total commits to the home-assistant organization, 10 commits to home-assistant") +- [Kevin Eifinger (@eifinger)](https://github.com/eifinger "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "19 total commits to the home-assistant organization, 11 commits to home-assistant, 8 commits to home-assistant.io") - [Kevin Gisi (@gisikw)](https://github.com/gisikw "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") - [Kevin Gottsman (@gottsman)](https://github.com/gottsman "8 total commits to the home-assistant organization, 8 commits to home-assistant.io") -- [Kevin Siml (@appzer)](https://github.com/appzer "4 total commits to the home-assistant organization, 4 commits to home-assistant") +- [Kevin Siml (@appzer)](https://github.com/appzer "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.io") - [Keyasha Brothern (@KMBrothern)](https://github.com/KMBrothern "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [kfcook (@kfcook)](https://github.com/kfcook "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [kireyeu (@kireyeu)](https://github.com/kireyeu "4 total commits to the home-assistant organization, 4 commits to home-assistant-notebooks") -- [Klaas Hoekema (@KlaasH)](https://github.com/KlaasH "12 total commits to the home-assistant organization, 5 commits to home-assistant.io, 5 commits to home-assistant, 2 commits to home-assistant-polymer") +- [Klaas Hoekema (@KlaasH)](https://github.com/KlaasH "12 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.io, 2 commits to home-assistant-polymer") - [Klaus (@k-laus)](https://github.com/k-laus "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [koolsb (@koolsb)](https://github.com/koolsb "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Kory Prince (@korylprince)](https://github.com/korylprince "4 total commits to the home-assistant organization, 4 commits to home-assistant-polymer") @@ -497,7 +494,7 @@ This page contains a list of people who have contributed in one way or another t - [Lennart Bernhardt (@LennyPenny)](https://github.com/LennyPenny "1 total commits to the home-assistant organization, 1 commit to hassio-build") - [Leon99 (@Leon99)](https://github.com/Leon99 "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Leonardo Saraiva (@vyper)](https://github.com/vyper "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") -- [Lev Aronsky (@aronsky)](https://github.com/aronsky "15 total commits to the home-assistant organization, 12 commits to home-assistant, 3 commits to home-assistant.io") +- [Lev Aronsky (@aronsky)](https://github.com/aronsky "16 total commits to the home-assistant organization, 13 commits to home-assistant, 3 commits to home-assistant.io") - [Lewis Juggins (@lwis)](https://github.com/lwis "66 total commits to the home-assistant organization, 53 commits to home-assistant, 12 commits to home-assistant.io, 1 commit to home-assistant-polymer") - [lichtteil (@lichtteil)](https://github.com/lichtteil "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Lindsay Ward (@lindsaymarkward)](https://github.com/lindsaymarkward "18 total commits to the home-assistant organization, 13 commits to home-assistant.io, 5 commits to home-assistant") @@ -517,20 +514,20 @@ This page contains a list of people who have contributed in one way or another t - [Luke Armstrong (@lukearmstrong)](https://github.com/lukearmstrong "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [LvivEchoes (@LvivEchoes)](https://github.com/LvivEchoes "8 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.io, 1 commit to home-assistant-polymer") - [Maarten Groeneweg (@lazytesting)](https://github.com/lazytesting "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Maciej Bieniek (@bieniu)](https://github.com/bieniu "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to home-assistant-polymer") +- [Maciej Bieniek (@bieniu)](https://github.com/bieniu "7 total commits to the home-assistant organization, 6 commits to home-assistant, 1 commit to home-assistant-polymer") - [Maciej Sokołowski (@matemaciek)](https://github.com/matemaciek "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to hassio-build") - [Maciej Wasilak (@mwasilak)](https://github.com/mwasilak "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Magnus Ihse Bursie (@magicus)](https://github.com/magicus "16 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to netdisco, 3 commits to home-assistant.io") - [Magnus Lyckå (@magnus-lycka)](https://github.com/magnus-lycka "1 total commits to the home-assistant organization, 1 commit to netdisco") - [MagnusKnutas (@MagnusKnutas)](https://github.com/MagnusKnutas "29 total commits to the home-assistant organization, 29 commits to home-assistant") - [Mal Curtis (@snikch)](https://github.com/snikch "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Malte Franken (@exxamalte)](https://github.com/exxamalte "11 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.io, 1 commit to developers.home-assistant, 1 commit to home-assistant-polymer") +- [Malte Franken (@exxamalte)](https://github.com/exxamalte "16 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.io, 1 commit to developers.home-assistant, 1 commit to home-assistant-polymer") - [Marc Egli (@frog32)](https://github.com/frog32 "12 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.io, 1 commit to hassio-addons-example") -- [Marc Forth (@mf-social)](https://github.com/mf-social "27 total commits to the home-assistant organization, 26 commits to home-assistant.io, 1 commit to fabric-home-assistant") -- [Marc Khouri (@ubnt-marc-khouri)](https://github.com/ubnt-marc-khouri "4 total commits to the home-assistant organization, 2 commits to home-assistant-polymer, 1 commit to developers.home-assistant, 1 commit to hassio-build") +- [Marc Forth (@mf-social)](https://github.com/mf-social "28 total commits to the home-assistant organization, 27 commits to home-assistant.io, 1 commit to fabric-home-assistant") +- [Marc Khouri (@ubnt-marc-khouri)](https://github.com/ubnt-marc-khouri "4 total commits to the home-assistant organization, 2 commits to home-assistant-polymer, 1 commit to hassio-build, 1 commit to developers.home-assistant") - [Marc Pabst (@marcpabst)](https://github.com/marcpabst "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Marc Plano\-Lesay (@Kernald)](https://github.com/Kernald "10 total commits to the home-assistant organization, 10 commits to home-assistant.io") -- [Marcel Hoppe (@hobbypunk90)](https://github.com/hobbypunk90 "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [Marcel Hoppe (@hobbypunk90)](https://github.com/hobbypunk90 "12 total commits to the home-assistant organization, 6 commits to home-assistant.io, 6 commits to home-assistant") - [Marcel030nl (@Marcel030nl)](https://github.com/Marcel030nl "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") - [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "159 total commits to the home-assistant organization, 89 commits to home-assistant, 67 commits to home-assistant.io, 1 commit to home-assistant-assets, 1 commit to hassio-build, 1 commit to home-assistant-polymer") - [Marcin Domański (@kabturek)](https://github.com/kabturek "2 total commits to the home-assistant organization, 2 commits to appdaemon") @@ -553,24 +550,24 @@ This page contains a list of people who have contributed in one way or another t - [Martin Berg (@mbrrg)](https://github.com/mbrrg "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.io") - [Martin Eberhardt (@DarkFox)](https://github.com/DarkFox "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") - [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "179 total commits to the home-assistant organization, 144 commits to home-assistant, 30 commits to home-assistant.io, 5 commits to developers.home-assistant") -- [Martin Rowan (@shortbloke)](https://github.com/shortbloke "6 total commits to the home-assistant organization, 3 commits to home-assistant.io, 3 commits to home-assistant") +- [Martin Rowan (@shortbloke)](https://github.com/shortbloke "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.io") - [Martin Weinelt (@mweinelt)](https://github.com/mweinelt "17 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.io, 1 commit to home-assistant-polymer") - [Martokk (@martokk)](https://github.com/martokk "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Mathew Peterson (@mathewpeterson)](https://github.com/mathewpeterson "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Matt N\. (@mnoorenberghe)](https://github.com/mnoorenberghe "54 total commits to the home-assistant organization, 25 commits to home-assistant-iOS, 17 commits to home-assistant.io, 9 commits to home-assistant, 2 commits to home-assistant-polymer, 1 commit to homebridge-homeassistant") - [Matt Rogers (@rogersmj)](https://github.com/rogersmj "20 total commits to the home-assistant organization, 20 commits to hadashboard") -- [Matt Schmitt (@schmittx)](https://github.com/schmittx "88 total commits to the home-assistant organization, 52 commits to homebridge-homeassistant, 19 commits to home-assistant, 12 commits to home-assistant.io, 3 commits to home-assistant-polymer, 2 commits to developers.home-assistant") +- [Matt Schmitt (@schmittx)](https://github.com/schmittx "90 total commits to the home-assistant organization, 52 commits to homebridge-homeassistant, 21 commits to home-assistant, 12 commits to home-assistant.io, 3 commits to home-assistant-polymer, 2 commits to developers.home-assistant") - [Matt Snyder (@oblogic7)](https://github.com/oblogic7 "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.io") +- [Matt White (@mw-white)](https://github.com/mw-white "10 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.io") - [Matt White (@matt-FFFFFF)](https://github.com/matt-FFFFFF "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Matt White (@mw-white)](https://github.com/mw-white "10 total commits to the home-assistant organization, 5 commits to home-assistant.io, 5 commits to home-assistant") - [Matteo Lampugnani (@t30)](https://github.com/t30 "7 total commits to the home-assistant organization, 7 commits to home-assistant.io") - [Matthew Donoughe (@mdonoughe)](https://github.com/mdonoughe "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Matthew Garrett (@mjg59)](https://github.com/mjg59 "30 total commits to the home-assistant organization, 22 commits to home-assistant, 7 commits to home-assistant.io, 1 commit to netdisco") - [Matthew Rollings (@stealthcopter)](https://github.com/stealthcopter "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") - [Matthew Treinish (@mtreinish)](https://github.com/mtreinish "24 total commits to the home-assistant organization, 15 commits to home-assistant, 9 commits to home-assistant.io") - [Matthias Dötsch (@brainexe)](https://github.com/brainexe "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Matthias Urlichs (@smurfix)](https://github.com/smurfix "3 total commits to the home-assistant organization, 3 commits to appdaemon") -- [Mattias Welponer (@mxworm)](https://github.com/mxworm "22 total commits to the home-assistant organization, 13 commits to home-assistant, 8 commits to home-assistant.io, 1 commit to home-assistant-polymer") +- [Matthias Urlichs (@smurfix)](https://github.com/smurfix "6 total commits to the home-assistant organization, 3 commits to appdaemon, 3 commits to home-assistant") +- [Mattias Welponer (@mxworm)](https://github.com/mxworm "24 total commits to the home-assistant organization, 14 commits to home-assistant, 9 commits to home-assistant.io, 1 commit to home-assistant-polymer") - [mattie47 (@mattie47)](https://github.com/mattie47 "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Max Mudde (@makzdot)](https://github.com/makzdot "1 total commits to the home-assistant organization, 1 commit to developers.home-assistant") - [Max Prokhorov (@mcspr)](https://github.com/mcspr "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") @@ -619,9 +616,10 @@ This page contains a list of people who have contributed in one way or another t - [mountainsandcode (@mountainsandcode)](https://github.com/mountainsandcode "9 total commits to the home-assistant organization, 6 commits to home-assistant.io, 3 commits to home-assistant") - [mueslo (@mueslo)](https://github.com/mueslo "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") - [mukundv (@mukundv)](https://github.com/mukundv "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") +- [Myles Eftos (@madpilot)](https://github.com/madpilot "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Mārtiņš Grunskis (@grunskis)](https://github.com/grunskis "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Nash Kaminski (@nkaminski)](https://github.com/nkaminski "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Nate Clark (@heythisisnate)](https://github.com/heythisisnate "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.io") +- [Nate Clark (@heythisisnate)](https://github.com/heythisisnate "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 commits to home-assistant.io") - [Nathan Flynn (@eperdeme)](https://github.com/eperdeme "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [Nathan Henrie (@n8henrie)](https://github.com/n8henrie "22 total commits to the home-assistant organization, 10 commits to home-assistant, 8 commits to home-assistant.io, 2 commits to homebridge-homeassistant, 1 commit to appdaemon, 1 commit to home-assistant-polymer") - [Nathan Knotts (@nknotts)](https://github.com/nknotts "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") @@ -655,16 +653,17 @@ This page contains a list of people who have contributed in one way or another t - [Oliver van Porten (@mcdeck)](https://github.com/mcdeck "10 total commits to the home-assistant organization, 10 commits to home-assistant") - [Oncleben31 (@oncleben31)](https://github.com/oncleben31 "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Open Home Automation (@open-homeautomation)](https://github.com/open-homeautomation "41 total commits to the home-assistant organization, 29 commits to home-assistant, 12 commits to home-assistant.io") +- [ottersen (@ottersen)](https://github.com/ottersen "11 total commits to the home-assistant organization, 11 commits to home-assistant.io") - [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "70 total commits to the home-assistant organization, 54 commits to home-assistant, 13 commits to home-assistant.io, 3 commits to home-assistant-polymer") - [oznu (@oznu)](https://github.com/oznu "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Parker Moore (@parkr)](https://github.com/parkr "60 total commits to the home-assistant organization, 60 commits to home-assistant.io") - [pascal (@passie)](https://github.com/passie "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Pascal Bach (@bachp)](https://github.com/bachp "10 total commits to the home-assistant organization, 9 commits to home-assistant, 1 commit to netdisco") -- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "3696 total commits to the home-assistant organization, 1303 commits to hassio, 675 commits to hassos, 475 commits to home-assistant, 465 commits to hassio-build, 369 commits to hassio-addons, 328 commits to home-assistant.io, 29 commits to hassio-homeassistant, 17 commits to hassio-addons-example, 13 commits to developers.home-assistant, 12 commits to hassio-cli, 7 commits to hassio-base, 1 commit to netdisco, 1 commit to home-assistant-polymer, 1 commit to home-assistant-js-websocket") +- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "3731 total commits to the home-assistant organization, 1314 commits to hassio, 676 commits to hassos, 479 commits to home-assistant, 465 commits to hassio-build, 371 commits to hassio-addons, 332 commits to home-assistant.io, 34 commits to hassio-homeassistant, 20 commits to developers.home-assistant, 17 commits to hassio-addons-example, 12 commits to hassio-cli, 7 commits to hassio-base, 2 commits to home-assistant-polymer, 1 commit to netdisco, 1 commit to home-assistant-js-websocket") - [Pat Thoyts (@patthoyts)](https://github.com/patthoyts "2 total commits to the home-assistant organization, 2 commits to netdisco") - [Patrick Aikens (@duckpuppy)](https://github.com/duckpuppy "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") -- [Paul Annekov (@PaulAnnekov)](https://github.com/PaulAnnekov "4 total commits to the home-assistant organization, 4 commits to home-assistant") +- [Paul Annekov (@PaulAnnekov)](https://github.com/PaulAnnekov "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.io") - [Paul Hendry (@pshendry)](https://github.com/pshendry "1 total commits to the home-assistant organization, 1 commit to warrant") - [Paul Jimenez (@pjz)](https://github.com/pjz "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Paul Nicholls (@pauln)](https://github.com/pauln "2 total commits to the home-assistant organization, 2 commits to netdisco") @@ -694,21 +693,22 @@ This page contains a list of people who have contributed in one way or another t - [Philip Rosenberg\-Watt (@PhilRW)](https://github.com/PhilRW "19 total commits to the home-assistant organization, 12 commits to home-assistant, 7 commits to home-assistant.io") - [Philipp Hellmich (@runningman84)](https://github.com/runningman84 "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "40 total commits to the home-assistant organization, 27 commits to home-assistant, 11 commits to home-assistant.io, 1 commit to hassio-build, 1 commit to appdaemon") -- [Phill Price (@phillprice)](https://github.com/phillprice "11 total commits to the home-assistant organization, 11 commits to home-assistant.io") -- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "34 total commits to the home-assistant organization, 21 commits to home-assistant, 12 commits to home-assistant.io, 1 commit to home-assistant-polymer") +- [Phill Price (@phillprice)](https://github.com/phillprice "12 total commits to the home-assistant organization, 12 commits to home-assistant.io") +- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "42 total commits to the home-assistant organization, 25 commits to home-assistant, 13 commits to home-assistant.io, 4 commits to home-assistant-polymer") - [PhyberApex (@PhyberApex)](https://github.com/PhyberApex "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Pierre Ståhl (@postlund)](https://github.com/postlund "50 total commits to the home-assistant organization, 33 commits to home-assistant, 11 commits to home-assistant.io, 4 commits to netdisco, 2 commits to home-assistant-polymer") - [pkonnekermetametrics (@pkonnekermetametrics)](https://github.com/pkonnekermetametrics "5 total commits to the home-assistant organization, 5 commits to warrant") +- [plyblu (@plyblu)](https://github.com/plyblu "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [PuckStar (@PuckStar)](https://github.com/PuckStar "7 total commits to the home-assistant organization, 7 commits to home-assistant.io") - [quthla (@quthla)](https://github.com/quthla "13 total commits to the home-assistant organization, 5 commits to home-assistant-polymer, 4 commits to home-assistant-iOS, 4 commits to home-assistant") -- [R Huish (@Genestealer)](https://github.com/Genestealer "23 total commits to the home-assistant organization, 23 commits to home-assistant.io") - [rafale77 (@rafale77)](https://github.com/rafale77 "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Raiford (@raiford)](https://github.com/raiford "1 total commits to the home-assistant organization, 1 commit to hassio-addons") +- [randellhodges (@randellhodges)](https://github.com/randellhodges "3 total commits to the home-assistant organization, 3 commits to home-assistant-polymer") - [rbflurry (@rbflurry)](https://github.com/rbflurry "17 total commits to the home-assistant organization, 14 commits to home-assistant.io, 3 commits to home-assistant") - [Reed Riley (@reedriley)](https://github.com/reedriley "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Rendili (@Rendili)](https://github.com/Rendili "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Rene Nulsch (@ReneNulschDE)](https://github.com/ReneNulschDE "21 total commits to the home-assistant organization, 14 commits to home-assistant, 7 commits to home-assistant.io") -- [Rene Tode (@ReneTode)](https://github.com/ReneTode "38 total commits to the home-assistant organization, 38 commits to appdaemon") +- [Rene Nulsch (@ReneNulschDE)](https://github.com/ReneNulschDE "22 total commits to the home-assistant organization, 15 commits to home-assistant, 7 commits to home-assistant.io") +- [Rene Tode (@ReneTode)](https://github.com/ReneTode "39 total commits to the home-assistant organization, 39 commits to appdaemon") - [Reza Moallemi (@moallemi)](https://github.com/moallemi "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [rhooper (@rhooper)](https://github.com/rhooper "27 total commits to the home-assistant organization, 25 commits to home-assistant, 2 commits to hadashboard") - [Riccardo Canta (@commento)](https://github.com/commento "3 total commits to the home-assistant organization, 3 commits to home-assistant") @@ -719,19 +719,22 @@ This page contains a list of people who have contributed in one way or another t - [Rick (@rcuddy)](https://github.com/rcuddy "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Rick Rubino (@rrubin0)](https://github.com/rrubin0 "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [rkabadi (@rkabadi)](https://github.com/rkabadi "17 total commits to the home-assistant organization, 17 commits to home-assistant") +- [rnizametdinov (@rnizametdinov)](https://github.com/rnizametdinov "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [Rob Capellini (@capellini)](https://github.com/capellini "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Rob Cranfill (@RobCranfill)](https://github.com/RobCranfill "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Rob Slifka (@rslifka)](https://github.com/rslifka "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") -- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1411 total commits to the home-assistant organization, 735 commits to home-assistant-iOS, 259 commits to home-assistant, 249 commits to home-assistant.io, 92 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 14 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to home-assistant-js, 3 commits to scenegen, 3 commits to appdaemon, 3 commits to hassbot, 3 commits to organization, 3 commits to hadashboard, 3 commits to home-assistant-js-websocket, 2 commits to LabelBot, 2 commits to lambda-home-assistant-github, 2 commits to fabric-home-assistant, 2 commits to micropython-home-assistant, 2 commits to home-assistant-assets, 2 commits to home-assistant-notebooks") +- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1430 total commits to the home-assistant organization, 752 commits to home-assistant-iOS, 260 commits to home-assistant, 249 commits to home-assistant.io, 93 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 14 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to organization, 3 commits to scenegen, 3 commits to appdaemon, 3 commits to home-assistant-js-websocket, 3 commits to hassbot, 3 commits to home-assistant-js, 3 commits to hadashboard, 2 commits to fabric-home-assistant, 2 commits to LabelBot, 2 commits to home-assistant-assets, 2 commits to micropython-home-assistant, 2 commits to lambda-home-assistant-github, 2 commits to home-assistant-notebooks") - [Robert (@metbril)](https://github.com/metbril "8 total commits to the home-assistant organization, 8 commits to home-assistant.io") - [Robert Accettura (@raccettura)](https://github.com/raccettura "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Robert Schütz (@dotlambda)](https://github.com/dotlambda "2 total commits to the home-assistant organization, 1 commit to netdisco, 1 commit to appdaemon") -- [Robert Svensson (@Kane610)](https://github.com/Kane610 "64 total commits to the home-assistant organization, 43 commits to home-assistant, 19 commits to home-assistant.io, 1 commit to netdisco, 1 commit to home-assistant-polymer") +- [Robert Schütz (@dotlambda)](https://github.com/dotlambda "3 total commits to the home-assistant organization, 2 commits to netdisco, 1 commit to appdaemon") +- [Robert Svensson (@Kane610)](https://github.com/Kane610 "78 total commits to the home-assistant organization, 53 commits to home-assistant, 22 commits to home-assistant.io, 1 commit to netdisco, 1 commit to developers.home-assistant, 1 commit to home-assistant-polymer") - [Robin (@robmarkcole)](https://github.com/robmarkcole "57 total commits to the home-assistant organization, 35 commits to home-assistant.io, 19 commits to home-assistant, 2 commits to home-assistant-assets, 1 commit to hassos") - [Robin Laurén (@llauren)](https://github.com/llauren "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Roddie Hasan (@eiddor)](https://github.com/eiddor "6 total commits to the home-assistant organization, 6 commits to home-assistant.io") +- [Rohan Kapoor (@rohankapoorcom)](https://github.com/rohankapoorcom "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Roi Dayan (@roidayan)](https://github.com/roidayan "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [roiff (@roiff)](https://github.com/roiff "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") +- [Rolf Schäuble (@rschaeuble)](https://github.com/rschaeuble "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Ron Klinkien (@cyberjunky)](https://github.com/cyberjunky "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Ron Miller (@brainyron)](https://github.com/brainyron "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [roqeer (@roqeer)](https://github.com/roqeer "3 total commits to the home-assistant organization, 3 commits to home-assistant") @@ -742,11 +745,12 @@ This page contains a list of people who have contributed in one way or another t - [ruohan\.chen (@crhan)](https://github.com/crhan "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Ruslan Sayfutdinov (@KapJI)](https://github.com/KapJI "1 total commits to the home-assistant organization, 1 commit to developers.home-assistant") - [Russ K (@rkubes)](https://github.com/rkubes "2 total commits to the home-assistant organization, 2 commits to pi-gen") -- [Russell Cloran (@rcloran)](https://github.com/rcloran "36 total commits to the home-assistant organization, 32 commits to home-assistant, 4 commits to homebridge-homeassistant") +- [Russell Cloran (@rcloran)](https://github.com/rcloran "37 total commits to the home-assistant organization, 33 commits to home-assistant, 4 commits to homebridge-homeassistant") - [Ryan Bahm (@rdbahm)](https://github.com/rdbahm "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Ryan Bray (@rbray89)](https://github.com/rbray89 "13 total commits to the home-assistant organization, 12 commits to hassos, 1 commit to hassio-build") - [Ryan Daigle (@rwdaigle)](https://github.com/rwdaigle "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Ryan Jarvis (@Cabalist)](https://github.com/Cabalist "1 total commits to the home-assistant organization, 1 commit to hassbian-scripts") +- [Ryan Kladar (@Kladar)](https://github.com/Kladar "1 total commits to the home-assistant organization, 1 commit to hassos") - [Ryan Kraus (@rmkraus)](https://github.com/rmkraus "193 total commits to the home-assistant organization, 163 commits to home-assistant, 15 commits to home-assistant.io, 14 commits to home-assistant-polymer, 1 commit to home-assistant-notebooks") - [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "97 total commits to the home-assistant organization, 75 commits to hassio-cli, 16 commits to home-assistant, 6 commits to home-assistant.io") - [Ryan Turner (@turnrye)](https://github.com/turnrye "6 total commits to the home-assistant organization, 6 commits to home-assistant") @@ -766,7 +770,7 @@ This page contains a list of people who have contributed in one way or another t - [Sean Wilson (@swilson)](https://github.com/swilson "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to home-assistant-polymer") - [Sebastian (@sebk-666)](https://github.com/sebk-666 "6 total commits to the home-assistant organization, 5 commits to home-assistant.io, 1 commit to netdisco") - [Sebastian (@sgso)](https://github.com/sgso "3 total commits to the home-assistant organization, 3 commits to libcoap") -- [Sebastian Muszynski (@syssi)](https://github.com/syssi "136 total commits to the home-assistant organization, 86 commits to home-assistant, 45 commits to home-assistant.io, 3 commits to netdisco, 2 commits to home-assistant-polymer") +- [Sebastian Muszynski (@syssi)](https://github.com/syssi "138 total commits to the home-assistant organization, 88 commits to home-assistant, 45 commits to home-assistant.io, 3 commits to netdisco, 2 commits to home-assistant-polymer") - [Sebastian von Minckwitz (@teodoc)](https://github.com/teodoc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Semir Patel (@analogue)](https://github.com/analogue "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [Sergey Isachenko (@zabuldon)](https://github.com/zabuldon "9 total commits to the home-assistant organization, 9 commits to home-assistant") @@ -782,8 +786,7 @@ This page contains a list of people who have contributed in one way or another t - [Sjors Spoorendonk (@sjorsjes)](https://github.com/sjorsjes "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [sjoshi10 (@sjoshi10)](https://github.com/sjoshi10 "1 total commits to the home-assistant organization, 1 commit to warrant") - [snizzleorg (@snizzleorg)](https://github.com/snizzleorg "5 total commits to the home-assistant organization, 5 commits to hadashboard") -- [squidwardy (@squidwardy)](https://github.com/squidwardy "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Sriram Vaidyanathan (@vaidyasr)](https://github.com/vaidyasr "6 total commits to the home-assistant organization, 3 commits to home-assistant.io, 3 commits to home-assistant") +- [Sriram Vaidyanathan (@vaidyasr)](https://github.com/vaidyasr "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.io") - [St\. John Johnson (@stjohnjohnson)](https://github.com/stjohnjohnson "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.io") - [starkillerOG (@starkillerOG)](https://github.com/starkillerOG "12 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant.io, 1 commit to developers.home-assistant, 1 commit to home-assistant-polymer") - [Stefan Jonasson (@stefan-jonasson)](https://github.com/stefan-jonasson "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.io") @@ -792,27 +795,27 @@ This page contains a list of people who have contributed in one way or another t - [stephanerosi (@stephanerosi)](https://github.com/stephanerosi "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.io") - [Stephen Edgar (@ntwb)](https://github.com/ntwb "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant") - [Stephen Tomkinson (@neonbunny)](https://github.com/neonbunny "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") -- [Stephen Vanterpool (@blackgold9)](https://github.com/blackgold9 "38 total commits to the home-assistant organization, 37 commits to home-assistant-iOS, 1 commit to developers.home-assistant") +- [Stephen Vanterpool (@blackgold9)](https://github.com/blackgold9 "75 total commits to the home-assistant organization, 73 commits to home-assistant-iOS, 1 commit to developers.home-assistant, 1 commit to home-assistant-polymer") - [Stephen Yeargin (@stephenyeargin)](https://github.com/stephenyeargin "25 total commits to the home-assistant organization, 24 commits to hubot-home-assistant, 1 commit to home-assistant-polymer") - [Steve Easley (@SteveEasley)](https://github.com/SteveEasley "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Steven Looman (@StevenLooman)](https://github.com/StevenLooman "9 total commits to the home-assistant organization, 7 commits to home-assistant, 2 commits to netdisco") +- [Steven Looman (@StevenLooman)](https://github.com/StevenLooman "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to netdisco") - [Stu Gott (@stu-gott)](https://github.com/stu-gott "9 total commits to the home-assistant organization, 5 commits to home-assistant.io, 4 commits to home-assistant") - [Stuart Williams (@stuwil)](https://github.com/stuwil "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Suresh Kalavala (@skalavala)](https://github.com/skalavala "32 total commits to the home-assistant organization, 32 commits to home-assistant.io") - [Sven\-Hendrik Haase (@svenstaro)](https://github.com/svenstaro "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [swanwila (@swanwila)](https://github.com/swanwila "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [System Tester (@systemtester)](https://github.com/systemtester "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") -- [Sytone (@sytone)](https://github.com/sytone "8 total commits to the home-assistant organization, 6 commits to home-assistant.io, 1 commit to developers.home-assistant, 1 commit to hassio-build") -- [Sören Oldag (@soldag)](https://github.com/soldag "15 total commits to the home-assistant organization, 8 commits to home-assistant.io, 7 commits to home-assistant") +- [Sytone (@sytone)](https://github.com/sytone "8 total commits to the home-assistant organization, 6 commits to home-assistant.io, 1 commit to hassio-build, 1 commit to developers.home-assistant") +- [Sören Oldag (@soldag)](https://github.com/soldag "16 total commits to the home-assistant organization, 8 commits to home-assistant, 8 commits to home-assistant.io") - [Tabakhase (@tabakhase)](https://github.com/tabakhase "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [tadly (@tadly)](https://github.com/tadly "4 total commits to the home-assistant organization, 4 commits to home-assistant") +- [tadly (@tadly)](https://github.com/tadly "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [tango-foxtrot (@tango-foxtrot)](https://github.com/tango-foxtrot "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Taylor Peet (@RePeet13)](https://github.com/RePeet13 "9 total commits to the home-assistant organization, 9 commits to home-assistant.io") - [Teagan Glenn (@Teagan42)](https://github.com/Teagan42 "59 total commits to the home-assistant organization, 49 commits to home-assistant, 9 commits to home-assistant.io, 1 commit to home-assistant-js") - [Ted Drain (@TD22057)](https://github.com/TD22057 "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [tedstriker (@tedstriker)](https://github.com/tedstriker "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Teemu Mikkonen (@T3m3z)](https://github.com/T3m3z "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Teemu R\. (@rytilahti)](https://github.com/rytilahti "59 total commits to the home-assistant organization, 46 commits to home-assistant, 9 commits to home-assistant.io, 4 commits to netdisco") +- [Teemu R\. (@rytilahti)](https://github.com/rytilahti "60 total commits to the home-assistant organization, 47 commits to home-assistant, 9 commits to home-assistant.io, 4 commits to netdisco") - [Teguh Sobirin (@tjstyle)](https://github.com/tjstyle "2 total commits to the home-assistant organization, 2 commits to pi-gen") - [Tentoe (@Tentoe)](https://github.com/Tentoe "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Theb-1 (@Theb-1)](https://github.com/Theb-1 "5 total commits to the home-assistant organization, 5 commits to home-assistant") @@ -835,6 +838,7 @@ This page contains a list of people who have contributed in one way or another t - [ThUnD3r\|Gr33n (@thundergreen)](https://github.com/thundergreen "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [tijuca (@tijuca)](https://github.com/tijuca "106 total commits to the home-assistant organization, 106 commits to libcoap") - [Tim Wilbrink (@TWilb)](https://github.com/TWilb "15 total commits to the home-assistant organization, 15 commits to home-assistant-iOS") +- [Timmo (@timmo001)](https://github.com/timmo001 "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Timo (@timotk)](https://github.com/timotk "1 total commits to the home-assistant organization, 1 commit to netdisco") - [timstanley1985 (@timstanley1985)](https://github.com/timstanley1985 "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [TJ Rana (@tjrana)](https://github.com/tjrana "1 total commits to the home-assistant organization, 1 commit to pi-gen") @@ -843,12 +847,12 @@ This page contains a list of people who have contributed in one way or another t - [Tobias Hoff (@ToSa27)](https://github.com/ToSa27 "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [Tobie Booth (@tobiebooth)](https://github.com/tobiebooth "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Toby Gray (@tobygray)](https://github.com/tobygray "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Tod Schmidt (@tschmidty69)](https://github.com/tschmidty69 "37 total commits to the home-assistant organization, 21 commits to home-assistant, 10 commits to home-assistant.io, 5 commits to hassio-addons, 1 commit to hassio") +- [Tod Schmidt (@tschmidty69)](https://github.com/tschmidty69 "38 total commits to the home-assistant organization, 22 commits to home-assistant, 10 commits to home-assistant.io, 5 commits to hassio-addons, 1 commit to hassio") - [toddeye (@toddeye)](https://github.com/toddeye "20 total commits to the home-assistant organization, 20 commits to home-assistant") - [Tom (@Qu3uk)](https://github.com/Qu3uk "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Tom Dickman (@tdickman)](https://github.com/tdickman "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Tom Duijf (@tomduijf)](https://github.com/tomduijf "70 total commits to the home-assistant organization, 53 commits to home-assistant, 9 commits to home-assistant.io, 6 commits to home-assistant-polymer, 2 commits to netdisco") -- [Tom Harris (@teharris1)](https://github.com/teharris1 "22 total commits to the home-assistant organization, 15 commits to home-assistant, 7 commits to home-assistant.io") +- [Tom Harris (@teharris1)](https://github.com/teharris1 "27 total commits to the home-assistant organization, 18 commits to home-assistant, 9 commits to home-assistant.io") - [Tom Hoover (@tomhoover)](https://github.com/tomhoover "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Tom Matheussen (@Tommatheussen)](https://github.com/Tommatheussen "13 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant-polymer, 3 commits to home-assistant.io") - [Tom Usher (@tomusher)](https://github.com/tomusher "1 total commits to the home-assistant organization, 1 commit to netdisco") @@ -864,7 +868,7 @@ This page contains a list of people who have contributed in one way or another t - [Trevor (@tboyce021)](https://github.com/tboyce021 "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 commits to home-assistant.io") - [Trey Hunner (@treyhunner)](https://github.com/treyhunner "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [trollkarlen (@trollkarlen)](https://github.com/trollkarlen "5 total commits to the home-assistant organization, 5 commits to home-assistant") -- [Tsvi Mostovicz (@tsvi)](https://github.com/tsvi "9 total commits to the home-assistant organization, 5 commits to home-assistant.io, 4 commits to home-assistant") +- [Tsvi Mostovicz (@tsvi)](https://github.com/tsvi "12 total commits to the home-assistant organization, 6 commits to home-assistant.io, 6 commits to home-assistant") - [Tyler Page (@iamtpage)](https://github.com/iamtpage "3 total commits to the home-assistant organization, 3 commits to home-assistant.io") - [Tõnis Tobre (@tobre6)](https://github.com/tobre6 "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [uchagani (@uchagani)](https://github.com/uchagani "8 total commits to the home-assistant organization, 7 commits to home-assistant, 1 commit to home-assistant-polymer") @@ -877,7 +881,8 @@ This page contains a list of people who have contributed in one way or another t - [Victor Cerutti (@victorcerutti)](https://github.com/victorcerutti "3 total commits to the home-assistant organization, 3 commits to home-assistant-polymer") - [Viet Dzung (@dzungpv)](https://github.com/dzungpv "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Vignesh Venkat (@vickyg3)](https://github.com/vickyg3 "11 total commits to the home-assistant organization, 7 commits to home-assistant, 4 commits to home-assistant.io") -- [Ville Skyttä (@scop)](https://github.com/scop "91 total commits to the home-assistant organization, 59 commits to home-assistant, 11 commits to home-assistant.io, 9 commits to netdisco, 4 commits to hassio-addons, 3 commits to hassio-cli, 2 commits to hassio-build, 2 commits to home-assistant-polymer, 1 commit to hassio") +- [Ville Skyttä (@scop)](https://github.com/scop "106 total commits to the home-assistant organization, 70 commits to home-assistant, 11 commits to netdisco, 11 commits to home-assistant.io, 4 commits to hassio-addons, 3 commits to hassio-cli, 2 commits to hassio-build, 2 commits to developers.home-assistant, 2 commits to home-assistant-polymer, 1 commit to hassio") +- [Villányi Bálint (@villanyibalint)](https://github.com/villanyibalint "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Vincent Van Den Berghe (@vandenberghev)](https://github.com/vandenberghev "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [viswa-swami (@viswa-swami)](https://github.com/viswa-swami "9 total commits to the home-assistant organization, 9 commits to home-assistant") - [Vlad Korniev (@vkorn)](https://github.com/vkorn "1 total commits to the home-assistant organization, 1 commit to hassio-build") @@ -890,25 +895,27 @@ This page contains a list of people who have contributed in one way or another t - [Will W\. (@tiktok7)](https://github.com/tiktok7 "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Willems Davy (@joyrider3774)](https://github.com/joyrider3774 "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [William Johansson (@radhus)](https://github.com/radhus "1 total commits to the home-assistant organization, 1 commit to hassio") -- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "119 total commits to the home-assistant organization, 81 commits to home-assistant, 36 commits to home-assistant.io, 2 commits to netdisco") +- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "123 total commits to the home-assistant organization, 83 commits to home-assistant, 37 commits to home-assistant.io, 2 commits to netdisco, 1 commit to developers.home-assistant") - [williamlehman (@williamlehman)](https://github.com/williamlehman "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Wim Haanstra (@depl0y)](https://github.com/depl0y "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [Wim Haanstra (@depl0y)](https://github.com/depl0y "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.io") - [wokar (@wokar)](https://github.com/wokar "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.io") - [Wolf\-Bastian Pöttner (@BastianPoe)](https://github.com/BastianPoe "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.io") - [Wolfgang Malgadey (@wmalgadey)](https://github.com/wmalgadey "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [XECDesign (@XECDesign)](https://github.com/XECDesign "145 total commits to the home-assistant organization, 145 commits to pi-gen") - [Xorso (@Xorso)](https://github.com/Xorso "22 total commits to the home-assistant organization, 21 commits to home-assistant, 1 commit to hassio-addons") -- [Yannick POLLART (@ypollart)](https://github.com/ypollart "8 total commits to the home-assistant organization, 4 commits to home-assistant.io, 4 commits to home-assistant") +- [Yannick POLLART (@ypollart)](https://github.com/ypollart "8 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.io") - [yasinS (@yasinS)](https://github.com/yasinS "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Yevgeniy (@sgttrs)](https://github.com/sgttrs "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [yingzong (@yingzong)](https://github.com/yingzong "1 total commits to the home-assistant organization, 1 commit to warrant") +- [yulongying (@yulongying)](https://github.com/yulongying "1 total commits to the home-assistant organization, 1 commit to home-assistant-js-websocket") - [Zen Tormey (@xehn)](https://github.com/xehn "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Zhao Lu (@zlu)](https://github.com/zlu "4 total commits to the home-assistant organization, 4 commits to home-assistant.io") - [Zio Tibia (@ziotibia81)](https://github.com/ziotibia81 "12 total commits to the home-assistant organization, 7 commits to home-assistant.io, 5 commits to home-assistant") - [Zorks (@Zorks)](https://github.com/Zorks "5 total commits to the home-assistant organization, 5 commits to home-assistant.io") +- [Zoé Bőle (@zoe1337)](https://github.com/zoe1337 "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Åskar Andersson (@olskar)](https://github.com/olskar "10 total commits to the home-assistant organization, 6 commits to home-assistant.io, 3 commits to home-assistant, 1 commit to hassbian-scripts") This page is irregularly updated using the [`credits_generator` tool](https://github.com/home-assistant/home-assistant.github.io/tree/next/credits_generator). If you think that you are missing, please let us know. -This page was last updated Tuesday, August 28th 2018, 7:39:11 am UTC. +This page was last updated Friday, September 21st 2018, 7:49:45 pm UTC. From 3984d1674c67040f5802009a8a282b4a35e1b4f5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 21 Sep 2018 22:35:12 +0200 Subject: [PATCH 88/97] Add example for JSON-formatted payload --- source/_docs/mqtt/service.markdown | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/source/_docs/mqtt/service.markdown b/source/_docs/mqtt/service.markdown index 941d79e7b78..d4a7aad206d 100644 --- a/source/_docs/mqtt/service.markdown +++ b/source/_docs/mqtt/service.markdown @@ -10,7 +10,7 @@ footer: true logo: mqtt.png --- -The MQTT component will register the service `publish` which allows publishing messages to MQTT topics. There are two ways of specifying your payload. You can either use `payload` to hard-code a payload or use `payload_template` to specify a [template](/topics/templating/) that will be rendered to generate the payload. +The MQTT component will register the service `mqtt.publish` which allows publishing messages to MQTT topics. There are two ways of specifying your payload. You can either use `payload` to hard-code a payload or use `payload_template` to specify a [template](/topics/templating/) that will be rendered to generate the payload. ```json { @@ -19,10 +19,20 @@ The MQTT component will register the service `publish` which allows publishing m } ``` +{% raw %} ```json { "topic": "home-assistant/light/1/state", - "payload_template": "{% raw %}{{ states('device_tracker.paulus') }}{% endraw %}" + "payload_template": "{{ states('device_tracker.paulus') }}" } ``` +{% endraw %} +`payload` must be a string. If you want to send JSON then you need to format/escape it properly. Like: + +```json +{ + "topic": "home-assistant/light/1/state", + "payload":"{\"Status\":\"off\", \"Data\":\"something\"}" +} +``` From 61000f5937e5d961ffc1840be782c1c63fc3f531 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 22 Sep 2018 11:23:14 +0200 Subject: [PATCH 89/97] release 78.3 --- _config.yml | 6 +++--- source/_posts/2018-09-15-release-78.markdown | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index 73f04dcb2f8..ad7f9d183c9 100644 --- a/_config.yml +++ b/_config.yml @@ -142,13 +142,13 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 78 -current_patch_version: 1 -date_released: 2018-09-20 +current_patch_version: 3 +date_released: 2018-09-22 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0781---september-20" +patch_version_notes: "#release-0783---september-22" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/source/_posts/2018-09-15-release-78.markdown b/source/_posts/2018-09-15-release-78.markdown index 449b4efb79a..a8e712f1bc4 100644 --- a/source/_posts/2018-09-15-release-78.markdown +++ b/source/_posts/2018-09-15-release-78.markdown @@ -48,6 +48,20 @@ Also on your profile page is a new list of existing refresh tokens. These are al [media_player.cast docs]: /components/media_player.cast/ [sensor.snmp docs]: /components/sensor.snmp/ +## {% linkable_title Release 0.78.2 - September 21 %} + +- Fix discovery + +## {% linkable_title Release 0.78.3 - September 22 %} + +- Bump gtts-token to 1.1.2 ([@edif30] - [#16775]) ([tts docs]) + +[#16537]: https://github.com/home-assistant/home-assistant/pull/16537 +[#16775]: https://github.com/home-assistant/home-assistant/pull/16775 +[@edif30]: https://github.com/edif30 +[@frenck]: https://github.com/frenck +[tts docs]: /components/tts/ + ## {% linkable_title If you need help... %} ...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. From 42c3f9ef447d375f86b7dff4cb6855a4d69e7a3e Mon Sep 17 00:00:00 2001 From: WofWca <39462442+WofWca@users.noreply.github.com> Date: Sat, 22 Sep 2018 17:45:09 +0700 Subject: [PATCH 90/97] Update virtualenv.markdown (#6335) --- source/_docs/installation/virtualenv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index 7c56772af73..336ced4598e 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -72,7 +72,7 @@ It is recommended to use the [advanced guide](/docs/installation/raspberry-pi/) - It's recommended to run Home Assistant as a dedicated user.

-Looking for more advanced guides? Check our [Rasbian guide](/docs/installation/raspberry-pi/) or the [other installation guides](/docs/installation/). +Looking for more advanced guides? Check our [Raspbian guide](/docs/installation/raspberry-pi/) or the [other installation guides](/docs/installation/).

### {% linkable_title After upgrading Python %} From d56c0ba90beb83b9e1cc6350716adc9eda6c7666 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sat, 22 Sep 2018 19:08:47 +0100 Subject: [PATCH 91/97] Highlighting need to config check (#6338) Highlighting the need to run a config check --- source/_docs/configuration.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown index 2e57862c030..fb4193f7265 100644 --- a/source/_docs/configuration.markdown +++ b/source/_docs/configuration.markdown @@ -36,7 +36,9 @@ If you run into trouble while configuring Home Assistant, have a look at the [co You will have to restart Home Assistant for most changes to `configuration.yaml` to take effect. You can load changes to [automations](/docs/automation/), [customize](/docs/configuration/customizing-devices/), [groups](/components/group/), and [scripts](/components/script/) without restarting if you're not using [packages](/docs/configuration/packages/). -If you've made any changes, remember to check your configuration before trying to reload or restart. +

+If you've made any changes, remember to [check your configuration](https://www.home-assistant.io/docs/configuration/troubleshooting/#problems-with-the-configuration) before trying to reload or restart. +

## {% linkable_title Migrating to a new system %} From 8e7ed187718a267ed10396a7511a594f0ea4718a Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sat, 22 Sep 2018 19:09:34 +0100 Subject: [PATCH 92/97] Adding how to config check on Hass.io (#6337) Adding how to config check on Hass.io --- source/_docs/configuration/troubleshooting.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index 0d867a2622c..f76ca7086a0 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -26,7 +26,7 @@ If you have incorrect entries in your configuration files you can use the [`chec One of the most common problems with Home Assistant is an invalid `configuration.yaml` file. - - You can test your configuration using the command line with: `hass --script check_config` + - You can test your configuration using the command line with: `hass --script check_config`. On Hass.io you can use the [hassio command](https://www.home-assistant.io/hassio/commandline/#home-assistant): `hassio homeassistant check`. - You can verify your configuration's yaml structure using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). From 1db842f371058bb523c8c412306bb9a982d55abc Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sat, 22 Sep 2018 19:10:24 +0100 Subject: [PATCH 93/97] Need an account (#6336) A few people have wondered why this doesn't magically work. Adding a note that an account is required, and how to get the API key. --- source/_addons/duckdns.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_addons/duckdns.markdown b/source/_addons/duckdns.markdown index 2f910f75b06..38c947eb6e3 100644 --- a/source/_addons/duckdns.markdown +++ b/source/_addons/duckdns.markdown @@ -10,7 +10,7 @@ footer: true featured: true --- -[Duck DNS](https://www.duckdns.org/) is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. This add-on includes support for Let's Encrypt and will automatically create and renew your certificates. +[Duck DNS](https://www.duckdns.org/) is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. This add-on includes support for Let's Encrypt and will automatically create and renew your certificates. You will need to sign up for a Duck DNS account before using this add-on. ```json { @@ -28,7 +28,7 @@ featured: true Configuration variables: - **lets_encrypt.accept_terms** (*Required*): If you accept the [Let's Encrypt Subscriber Agreement](https://letsencrypt.org/repository/), it will generate and update Let's Encrypt certificates for your DuckDNS domain. -- **token** (*Required*): Your Duck DNS API key. +- **token** (*Required*): Your Duck DNS API key, from your DuckDNS account page. - **domains** (*Required*): A list of domains to update DNS. - **seconds** (*Required*): Seconds between updates to Duck DNS. From 5429bde6d6576a5b121168b7e883c1cb876117eb Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 23 Sep 2018 11:07:48 +0100 Subject: [PATCH 94/97] Clarity about the wakeup interval (#6339) Lots of people seem to mistake the wakeup interval with how often the device reports changes --- source/_docs/z-wave/control-panel.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index dc3f19c5cc5..7618c425629 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -116,6 +116,10 @@ That would remove the broadcast group from association group 1 of the device wit You can set the *wakeup* interval (in seconds) of the device, this is shown for all devices that can be battery powered, even if they are currently mains powered. The wakeup interval only applies when those devices are battery powered. +

+The wakeup interval has no impact on the device's ability to report sensor changes. This is purely for how often the Z-Wave chip will check in with the controller. That activity consumes a lot of battery power compared to reporting sensor changes and if you reduce it you'll be reducing the battery life of your device. +

+ Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Config Parameter** to updated it. Battery powered devices will be updated the next time they wake. ### {% linkable_title Node protection %} From 3669c05f9d77d1fd524abcb69080fb5559d4731c Mon Sep 17 00:00:00 2001 From: Alexis Iglauer Date: Sun, 23 Sep 2018 12:34:54 +0100 Subject: [PATCH 95/97] Typo (#6341) --- source/_components/linode.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/linode.markdown b/source/_components/linode.markdown index 581f4822c16..ccd090b47e8 100644 --- a/source/_components/linode.markdown +++ b/source/_components/linode.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Cloud Polling" The `linode` component allows you to access the information about your [Linode](https://linode.com) systems from Home Assistant. -## {% linkable_title sETUP %} +## {% linkable_title Setup %} Obtain your oAuth2 Access Token from Linode account. From bd9b269536756d7870055f3449e41638877cd168 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 23 Sep 2018 21:20:35 +0100 Subject: [PATCH 96/97] Adding how to confirm the USB path on Hass.io (#6343) Adding how to confirm the USB path on Hass.io --- source/_docs/z-wave/installation.markdown | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 7e27a19c7f0..a734e976e51 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -161,14 +161,20 @@ $ ls /dev/cu.usbmodem* ### {% linkable_title Hass.io %} -To enable Z-Wave, plug your Z-Wave USB stick into your Raspberry Pi 3 and add the following to your `configuration.yaml`: +To enable Z-Wave, plug your Z-Wave USB stick into your system and add the following to your `configuration.yaml`: ```yaml zwave: usb_path: /dev/ttyACM0 ``` -Depending on your Z-Wave device it may instead be `/dev/ttyAMA0` (eg Razberry board) or `/dev/ttyUSB0` (eg HUBUZB-1). +If the above defaults don't work, you can check what hardware has been found using the [hassio command](/hassio/commandline/#hardware): + +```bash +$ hassio hardware info +``` + +Or you can use the UI and look in the *System* section of the *Hass.io* menu. There you'll find a *Hardware* button which will list all the hardware found. ### {% linkable_title RancherOS %} From 71eb1b509dbfeb0e084028092a95a3a040e70eea Mon Sep 17 00:00:00 2001 From: ChrisTBarnes <25248909+ChrisTBarnes@users.noreply.github.com> Date: Mon, 24 Sep 2018 09:40:05 +0100 Subject: [PATCH 97/97] Update upgrading.markdown (#6348) --- source/_docs/installation/hassbian/upgrading.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/installation/hassbian/upgrading.markdown b/source/_docs/installation/hassbian/upgrading.markdown index 1a6b37d4968..c9eb4af4d81 100644 --- a/source/_docs/installation/hassbian/upgrading.markdown +++ b/source/_docs/installation/hassbian/upgrading.markdown @@ -20,7 +20,7 @@ $ sudo apt-get -y upgrade #### {% linkable_title Updating Home Assistant %}

-You can use `hassbian-config` to automate the process by running `sudo hassbian-config upgrade homeassistant` +You can use `hassbian-config` to automate the process by running `sudo hassbian-config upgrade home-assistant`

To update the Home Assistant installation execute the following command as the `pi` user.