From 6bc3041fe2215c9940cd27062625871bc6d2c364 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 22 Jun 2017 00:17:49 -0700 Subject: [PATCH 01/42] Add search powered by Algolia --- sass/custom/_paulus.scss | 42 +++++++++++++++++++++++ sass/oscailte/base/_navigation.scss | 12 +++++-- source/_includes/custom/header.html | 8 +++++ source/_includes/custom/navigation.html | 1 + source/_includes/javascripts/algolia.html | 20 +++++++++++ source/_includes/javascripts/scripts.html | 3 +- source/_layouts/default.html | 4 +-- 7 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 source/_includes/javascripts/algolia.html diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index 651eacf82b6..4a1bd4a6cf2 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -1,5 +1,47 @@ @charset "UTF-8"; +$primary-color: #049cdb; + +.site-header { + position: relative; +} + +.search-container { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: white; + padding-top: 19px; + padding-right: 15%; + + .search { + max-width: 500px; + width: 100%; + border-bottom: 2px solid $primary-color; + float: right; + + .algolia-autocomplete { + width: calc(100% - 58px); + margin: 0 10px; + } + + input { + border: 0; + width: 100%; + } + } +} + +@media only screen and (max-width: $menu-collapse) { + .search-container { + z-index: 20; + padding-right: 5px; + padding-left: 5px; + } +} + .hero { background-color: #038FC7; padding-bottom: 0; diff --git a/sass/oscailte/base/_navigation.scss b/sass/oscailte/base/_navigation.scss index 6478e6aec4f..24f68005e6c 100644 --- a/sass/oscailte/base/_navigation.scss +++ b/sass/oscailte/base/_navigation.scss @@ -81,17 +81,23 @@ header .grid { font-weight: normal; font-size: 14px; line-height: 1; + + &.show-search { + padding-left: 0; + padding-right: 0; + } } .menu > li > a:hover, .menu > li > a:focus{ background: $site-background; box-shadow: inset 0px 5px $navigation-color; color: $navigation-color; - padding: 40px 12px 24px; + padding-top: 40px; + padding-bottom: 24px; } -.toggle{ - z-index: 20; +.toggle{ + z-index: 20; } @media only screen and (max-width: $menu-collapse){ diff --git a/source/_includes/custom/header.html b/source/_includes/custom/header.html index 15f04816fdc..d0b387b1c1c 100644 --- a/source/_includes/custom/header.html +++ b/source/_includes/custom/header.html @@ -9,4 +9,12 @@ + + diff --git a/source/_includes/custom/navigation.html b/source/_includes/custom/navigation.html index d6188c1408e..1179c86bef7 100644 --- a/source/_includes/custom/navigation.html +++ b/source/_includes/custom/navigation.html @@ -16,4 +16,5 @@
  • Developers
  • Blog
  • Need help?
  • +
  • diff --git a/source/_includes/javascripts/algolia.html b/source/_includes/javascripts/algolia.html new file mode 100644 index 00000000000..a8540981b1d --- /dev/null +++ b/source/_includes/javascripts/algolia.html @@ -0,0 +1,20 @@ + + + diff --git a/source/_includes/javascripts/scripts.html b/source/_includes/javascripts/scripts.html index 3c82a307581..32903641a22 100644 --- a/source/_includes/javascripts/scripts.html +++ b/source/_includes/javascripts/scripts.html @@ -5,8 +5,9 @@ {% include javascripts/google_analytics.html %} {% include javascripts/disqus.html %} +{% include javascripts/algolia.html %} {% if page.sidebar != false %} {% include javascripts/github.html %} {% include javascripts/delicious.html %} -{% endif %} \ No newline at end of file +{% endif %} diff --git a/source/_layouts/default.html b/source/_layouts/default.html index f6ff101ca12..5c8e47d068f 100644 --- a/source/_layouts/default.html +++ b/source/_layouts/default.html @@ -6,7 +6,7 @@ layout: compress -
    + @@ -42,4 +42,4 @@ layout: compress {% include javascripts/scripts.html %} - \ No newline at end of file + From 09bea107363ec0fc400bc596e1aba1af8396a059 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 23 Jun 2017 09:13:36 -0700 Subject: [PATCH 02/42] Make components visible for people without JavaScript --- source/_components/climate.maxcube.markdown | 2 +- source/components/index.html | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/source/_components/climate.maxcube.markdown b/source/_components/climate.maxcube.markdown index ac6e5299ba9..0b918cf1033 100644 --- a/source/_components/climate.maxcube.markdown +++ b/source/_components/climate.maxcube.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "eQ-3 MAX! Cube binary sensors" +title: "eQ-3 MAX! Cube thermostat" description: "Instructions on how to integrate eQ-3 MAX! components with Home Assistant via eQ-3 MAX! Cube." date: 2017-02-04 22:00 sidebar: true diff --git a/source/components/index.html b/source/components/index.html index b0b6dfed3e8..410f4cda0a7 100644 --- a/source/components/index.html +++ b/source/components/index.html @@ -257,3 +257,13 @@ allComponents.pop(); // remove placeholder element at the end applyFilter(); })(); + + From baab7ed50c896490d83d086d0c3c94cd48f86b53 Mon Sep 17 00:00:00 2001 From: mjj4791 Date: Fri, 23 Jun 2017 21:58:51 +0200 Subject: [PATCH 03/42] Update sensor.buienradar.markdown (#2866) add description of name and how it influences the entity names of the sensors --- source/_components/sensor.buienradar.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/sensor.buienradar.markdown b/source/_components/sensor.buienradar.markdown index 3608dc014b4..16d71583302 100644 --- a/source/_components/sensor.buienradar.markdown +++ b/source/_components/sensor.buienradar.markdown @@ -33,8 +33,9 @@ sensor: Configuration variables: +- **name** (*Optional*): You can specify a name of the component, but do not have to. If you specify a name, the sensors will get an entity name of 'sensor.[name]\_[monitored_condition]', for example: 'sensor.lopik_temperature'; if no name is specified the sensors will be called 'sensor.br_[monitored_condition]', for example 'sensor.br_temperature'. - **latitude** (*Optional*): Latitude to use for selection of data source location. Longitude and latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. -- **longitude** (*Optional*): Longitude to use for selection of data source location. Longitude & latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. +- **longitude** (*Optional*): Longitude to use for selection of data source location. Longitude and latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. - **monitored_conditions** array (*Required*): One or more conditions to display in the frontend. - **stationname**: The name of the selected meteo-station. - **symbol**: A symbol for the current weather. From 463da350450d82a5ce7a6639ab525956119662b5 Mon Sep 17 00:00:00 2001 From: mjj4791 Date: Fri, 23 Jun 2017 21:59:21 +0200 Subject: [PATCH 04/42] Update weather.buienradar.markdown (#2867) add description of _name_ and how it influences the entity name --- source/_components/weather.buienradar.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/_components/weather.buienradar.markdown b/source/_components/weather.buienradar.markdown index 99a981350a9..b39bb8f52e2 100644 --- a/source/_components/weather.buienradar.markdown +++ b/source/_components/weather.buienradar.markdown @@ -26,8 +26,9 @@ weather: Configuration variables: -- **latitude** (*Optional*): Latitude to use for selection of data source location. Longitude & latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. -- **longitude**(*Optional*): Longitude to use for selection of data source location. Longitude & latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. +- **name** (*Optional*): You can specify a name of the component, but do not have to. If you specify a name, the weather component will get an entity name of 'weather.[name]'; if no name is specified, it will try to set its name to 'weather.BR_[stationname]'. However at the moment in time the entity is created, no data has been retrieved yet, so the entity will get named 'weather.BR_unknown_station'. Later the station name will be known and get updated, but the entity name remains. +- **latitude** (*Optional*): Latitude to use for selection of data source location. Longitude and latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. +- **longitude**(*Optional*): Longitude to use for selection of data source location. Longitude and latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar. - **forecast** (*Optional*): 'True' to add a temperature forecast, 'False' to suppress it. From 52ab99289d0bfadadbefedc85f06d434e3faeb7b Mon Sep 17 00:00:00 2001 From: ciotlosm Date: Fri, 23 Jun 2017 23:03:01 +0300 Subject: [PATCH 05/42] Use sshfs example (#2871) * Use sshfs Example how to use sshfs instead of using samba. * Update format --- source/_addons/ssh.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_addons/ssh.markdown b/source/_addons/ssh.markdown index 2361e378ab4..710521d675b 100644 --- a/source/_addons/ssh.markdown +++ b/source/_addons/ssh.markdown @@ -35,3 +35,12 @@ If you're coming from Rasbian or similar, use `root` rather than `pi` when conne Permission denied (publickey,keyboard-interactive) ```

    + +

    +If you install this addon you can use `sshfs` as well to access files from a remote system where you have git and your favourite editing tools installed. + +```bash +$ mkdir ~/ha_config +$ sshfs -o allow_other,defer_permissions root@h[your_hassio_ip]:/config ~/ha_config +``` +

    From f3c5887cd022f4b2438d3a833841c2c3d3b122d0 Mon Sep 17 00:00:00 2001 From: Ness Date: Fri, 23 Jun 2017 15:04:40 -0500 Subject: [PATCH 06/42] Update cron job command (#2873) /usr/bin/letsencrypt does not exist anymore, the file is located in ~/certbot/ --- 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 e1d2e464c41..d952e497495 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -495,7 +495,7 @@ $ crontab -e * Scroll to the bottom of the file and paste in the following line ```text -30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log +30 2 * * 1 ~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 ``` * Save the file and exit From 6012782bb020d6b36e724772613840a44cc62f75 Mon Sep 17 00:00:00 2001 From: mjj4791 Date: Fri, 23 Jun 2017 23:14:22 +0200 Subject: [PATCH 07/42] Update sensor.buienradar.markdown (#2879) set ha_version to 0.47 (and not 0.44, which was the version dev started) --- source/_components/sensor.buienradar.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.buienradar.markdown b/source/_components/sensor.buienradar.markdown index 16d71583302..258b936c43f 100644 --- a/source/_components/sensor.buienradar.markdown +++ b/source/_components/sensor.buienradar.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: buienradar.png ha_category: Weather -ha_release: 0.44 +ha_release: 0.47 ha_iot_class: "Cloud Polling" --- From 76f022c6003eba54454f3dc112313d653507b2f3 Mon Sep 17 00:00:00 2001 From: mjj4791 Date: Fri, 23 Jun 2017 23:14:44 +0200 Subject: [PATCH 08/42] Update weather.buienradar.markdown (#2880) update ha_release to 0.47 (version component was released) and not 0.44 (when dev started) --- source/_components/weather.buienradar.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/weather.buienradar.markdown b/source/_components/weather.buienradar.markdown index b39bb8f52e2..07da95af18c 100644 --- a/source/_components/weather.buienradar.markdown +++ b/source/_components/weather.buienradar.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: buienradar.png ha_category: Weather -ha_release: 0.44 +ha_release: 0.47 ha_iot_class: "Cloud Polling" --- From ebf718df9ee914dd84641b24f2eff28ebf861c7b Mon Sep 17 00:00:00 2001 From: Olav Alexander Mjelde Date: Sat, 24 Jun 2017 17:47:51 +0200 Subject: [PATCH 09/42] Added log level needed in configuration.yaml (#2884) Tested working with this log level --- source/_cookbook/fail2ban.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/_cookbook/fail2ban.markdown b/source/_cookbook/fail2ban.markdown index c9c0ff3550b..74ebccad4b5 100644 --- a/source/_cookbook/fail2ban.markdown +++ b/source/_cookbook/fail2ban.markdown @@ -14,6 +14,14 @@ This is a quick guide on how to setup fail2ban for Home Assistant. This was orig First install `fail2ban`. On Debian/Ubuntu this would be `apt-get install fail2ban`. On other distros you can google it. +Then make sure logging is enabled in `/home/homeassistant/.homeassistant/configuration.yaml` for your HA instance: +``` +logger: + default: critical + logs: + homeassistant.components.http: warning +``` + Next we will be creating these three files : - `/etc/fail2ban/fail2ban.local` From 6119e4219158d565d0c5a9727224d165b88a53a3 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 24 Jun 2017 17:50:06 +0200 Subject: [PATCH 10/42] Relace HASS with Home Assistant and set format --- source/_cookbook/fail2ban.markdown | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/_cookbook/fail2ban.markdown b/source/_cookbook/fail2ban.markdown index 74ebccad4b5..8eed73efb0c 100644 --- a/source/_cookbook/fail2ban.markdown +++ b/source/_cookbook/fail2ban.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "fail2ban for HASS" -description: "Setting up fail2ban to read HASS log files to improve security." +title: "fail2ban" +description: "Setting up fail2ban to read Home Assistant's log files to improve security." date: 2017-05-24 10:05 sidebar: true comments: false @@ -14,8 +14,9 @@ This is a quick guide on how to setup fail2ban for Home Assistant. This was orig First install `fail2ban`. On Debian/Ubuntu this would be `apt-get install fail2ban`. On other distros you can google it. -Then make sure logging is enabled in `/home/homeassistant/.homeassistant/configuration.yaml` for your HA instance: -``` +Then make sure logging is enabled in your `configuration.yaml` file for your Home Assistant instance: + +```yaml logger: default: critical logs: From 68d41b8629633536e0dafd62a637e4f355e8e389 Mon Sep 17 00:00:00 2001 From: Georgi Yanev Date: Sun, 25 Jun 2017 01:39:37 +0300 Subject: [PATCH 11/42] Make component cards 100% width on mobile (#2886) --- sass/custom/_component_page.scss | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sass/custom/_component_page.scss b/sass/custom/_component_page.scss index a0cb1d53718..e3830dc2f8f 100644 --- a/sass/custom/_component_page.scss +++ b/sass/custom/_component_page.scss @@ -14,6 +14,16 @@ } } +@media only screen and (max-width: $palm-end) { + #components-page { + .hass-option-cards { + .option-card { + width: 100%; + } + } + } +} + @media only screen and (max-width: $lap-end) { #components-page { .filter-button-group { @@ -246,4 +256,4 @@ transform:scale(0); opacity:0 } -} \ No newline at end of file +} From 32bfbe35d472932489f1bcab5252721d73dcc75e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 25 Jun 2017 12:13:00 +0200 Subject: [PATCH 12/42] Update --- source/developers/credits.markdown | 170 ++++++++++++++--------------- 1 file changed, 85 insertions(+), 85 deletions(-) diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown index a99b2517f81..85287f35a57 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: 2017-06-10 09:18:30 +0000 +date: 2017-06-25 10:12:23 +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 "5430 total commits to the home-assistant organization, 3330 commits to home-assistant, 1117 commits to home-assistant.github.io, 539 commits to home-assistant-polymer, 244 commits to home-assistant-js, 110 commits to netdisco, 40 commits to home-assistant-js-websocket, 13 commits to hass-release, 12 commits to home-assistant-assets, 7 commits to micropython-home-assistant, 4 commits to example-custom-config, 2 commits to python-hassbian, 2 commits to LabelBot, 2 commits to issue-bot, 2 commits to lambda-home-assistant-github, 2 commits to hassio, 1 commit to home-assistant-iOS, 1 commit to home-assistant-notebooks, 1 commit to hassio-addons, 1 commit to hassio-addons-example") +- [Paulus Schoutsen (@balloob)](https://github.com/balloob "5474 total commits to the home-assistant organization, 3348 commits to home-assistant, 1132 commits to home-assistant.github.io, 545 commits to home-assistant-polymer, 244 commits to home-assistant-js, 110 commits to netdisco, 40 commits to home-assistant-js-websocket, 14 commits to hass-release, 12 commits to home-assistant-assets, 7 commits to example-custom-config, 7 commits to micropython-home-assistant, 3 commits to LabelBot, 2 commits to lambda-home-assistant-github, 2 commits to hassio, 2 commits to python-hassbian, 2 commits to issue-bot, 1 commit to hassio-addons-example, 1 commit to home-assistant-notebooks, 1 commit to home-assistant-iOS, 1 commit to hassio-addons") ### {% linkable_title Contributors %} @@ -28,9 +28,11 @@ This page contains a list of people who have contributed in one way or another t - [Abhishek Anand (@aa755)](https://github.com/aa755 "2 total commits to the home-assistant organization, 1 commit to home-assistant, 1 commit to home-assistant.github.io") - [abmantis (@abmantis)](https://github.com/abmantis "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Achilleas Pipinellis (@axilleas)](https://github.com/axilleas "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") +- [Adam (@SilvrrGIT)](https://github.com/SilvrrGIT "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") - [Adam Allport (@AAllport)](https://github.com/AAllport "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") +- [Adam Baxter (@voltagex)](https://github.com/voltagex "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Adam Garcia (@pancho-villa)](https://github.com/pancho-villa "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Adam Mills (@armills)](https://github.com/armills "160 total commits to the home-assistant organization, 107 commits to home-assistant, 25 commits to home-assistant.github.io, 24 commits to home-assistant-polymer, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant") +- [Adam Mills (@armills)](https://github.com/armills "172 total commits to the home-assistant organization, 112 commits to home-assistant, 30 commits to home-assistant.github.io, 26 commits to home-assistant-polymer, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant") - [ADeeds (@ADeeds)](https://github.com/ADeeds "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [AdithyanI (@AdithyanI)](https://github.com/AdithyanI "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Aditya Shevade (@adibis)](https://github.com/adibis "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") @@ -38,20 +40,19 @@ This page contains a list of people who have contributed in one way or another t - [Adrien Brault (@adrienbrault)](https://github.com/adrienbrault "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Adrián López (@adrianlzt)](https://github.com/adrianlzt "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant") - [Alan Bowman (@alanbowman)](https://github.com/alanbowman "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to home-assistant.github.io") -- [Alan Fischer (@alanfischer)](https://github.com/alanfischer "7 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Alan Fischer (@alanfischer)](https://github.com/alanfischer "9 total commits to the home-assistant organization, 7 commits to home-assistant, 2 commits to home-assistant.github.io") - [Albert Lee (@trisk)](https://github.com/trisk "13 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io") - [Alberto Arias Maestro (@albertoarias)](https://github.com/albertoarias "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Aleksey Gureiev (@alg)](https://github.com/alg "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Alessandro Mogavero (@alexmogavero)](https://github.com/alexmogavero "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant.github.io") - [Alex (@asbach)](https://github.com/asbach "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Alex Calderon (@AlexCalderon02)](https://github.com/AlexCalderon02 "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") -- [Alex Harvey (@infamy)](https://github.com/infamy "23 total commits to the home-assistant organization, 13 commits to home-assistant, 10 commits to home-assistant.github.io") -- [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") +- [Alex Harvey (@infamy)](https://github.com/infamy "25 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io") +- [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Alex Popov (@AlexVPopov)](https://github.com/AlexVPopov "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") -- [Alex Tzonkov (@attzonko)](https://github.com/attzonko "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Alex Tzonkov (@attzonko)](https://github.com/attzonko "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Alex Vernacchia (@vernak2539)](https://github.com/vernak2539 "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Alexander Bandukwala (@7h3kk1d)](https://github.com/7h3kk1d "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") -- [Alexander Fortin (@shaftoe)](https://github.com/shaftoe "23 total commits to the home-assistant organization, 16 commits to home-assistant, 7 commits to home-assistant.github.io") - [Alexander Groß (@agross)](https://github.com/agross "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Alexander Kratzer (@hexxter)](https://github.com/hexxter "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Alexander Slansky (@aslansky)](https://github.com/aslansky "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") @@ -63,16 +64,16 @@ This page contains a list of people who have contributed in one way or another t - [amorsillo (@AndrewMorsillo)](https://github.com/AndrewMorsillo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Anastasia A. (@Sacret)](https://github.com/Sacret "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Anders Gjendem (@agjendem)](https://github.com/agjendem "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") -- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "72 total commits to the home-assistant organization, 52 commits to home-assistant, 18 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "78 total commits to the home-assistant organization, 55 commits to home-assistant, 21 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [Andrea Falcone (@asfalcone)](https://github.com/asfalcone "5 total commits to the home-assistant organization, 5 commits to issue-bot") - [Andreas Ahrens (@DevvAndreas)](https://github.com/DevvAndreas "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Andreas Cambitsis (@acambitsis)](https://github.com/acambitsis "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Andreas Jacobsen (@andreasjacobsen93)](https://github.com/andreasjacobsen93 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Andreas Jacobsen (@andreasjacobsen93)](https://github.com/andreasjacobsen93 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.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.github.io") - [Andreea-Daniela Ene (@AndreeaEne)](https://github.com/AndreeaEne "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Andrew (@aneisch)](https://github.com/aneisch "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Andrew (@aoakeson)](https://github.com/aoakeson "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Andrew (@aneisch)](https://github.com/aneisch "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Andrew Cockburn (@acockburn)](https://github.com/acockburn "240 total commits to the home-assistant organization, 122 commits to appdaemon, 85 commits to hadashboard, 25 commits to scenegen, 8 commits to home-assistant.github.io") - [Andrew LeCody (@aceat64)](https://github.com/aceat64 "2 total commits to the home-assistant organization, 1 commit to home-assistant, 1 commit to home-assistant.github.io") - [Andrew Patton (@acusti)](https://github.com/acusti "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") @@ -80,18 +81,18 @@ This page contains a list of people who have contributed in one way or another t - [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") - [Andrew Williams (@nikdoof)](https://github.com/nikdoof "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [andrew-curtis (@andrew-curtis)](https://github.com/andrew-curtis "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Andrey (@andrey-git)](https://github.com/andrey-git "119 total commits to the home-assistant organization, 64 commits to home-assistant, 31 commits to home-assistant-polymer, 24 commits to home-assistant.github.io") +- [andrew-curtis (@andrew-curtis)](https://github.com/andrew-curtis "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") +- [Andrey (@andrey-git)](https://github.com/andrey-git "126 total commits to the home-assistant organization, 70 commits to home-assistant, 32 commits to home-assistant-polymer, 24 commits to home-assistant.github.io") - [Andrey Petrov (@anpetrov)](https://github.com/anpetrov "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Andrzej (@andriej)](https://github.com/andriej "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") -- [Andy Castille (@Klikini)](https://github.com/Klikini "2 total commits to the home-assistant organization, 1 commit to home-assistant, 1 commit to home-assistant.github.io") +- [Andy Castille (@Klikini)](https://github.com/Klikini "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Andy Lindeman (@alindeman)](https://github.com/alindeman "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Andy Loughran (@andylockran)](https://github.com/andylockran "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [andyat (@andyat)](https://github.com/andyat "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Anthony Hughes (@tony2nite)](https://github.com/tony2nite "1 total commits to the home-assistant organization, 1 commit to netdisco") +- [Anthony Hughes (@tony2nite)](https://github.com/tony2nite "2 total commits to the home-assistant organization, 1 commit to netdisco, 1 commit to home-assistant") - [Antoine Bertin (@Diaoul)](https://github.com/Diaoul "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Anton Glukhov (@toxxin)](https://github.com/toxxin "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Anton Lundin (@glance-)](https://github.com/glance- "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to netdisco") +- [Anton Lundin (@glance-)](https://github.com/glance- "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to netdisco") - [Anton Sarukhanov (@antsar)](https://github.com/antsar "6 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Antonio Párraga Navarro (@aparraga)](https://github.com/aparraga "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Anubhaw Arya (@aarya123)](https://github.com/aarya123 "2 total commits to the home-assistant organization, 1 commit to home-assistant, 1 commit to home-assistant.github.io") @@ -115,7 +116,7 @@ This page contains a list of people who have contributed in one way or another t - [Barry Williams (@bazwilliams)](https://github.com/bazwilliams "10 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to netdisco, 2 commits to home-assistant.github.io") - [Bart274 (@Bart274)](https://github.com/Bart274 "26 total commits to the home-assistant organization, 17 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Bartek Celary (@bcelary)](https://github.com/bcelary "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") -- [Bas Schipper (@basschipper)](https://github.com/basschipper "2 total commits to the home-assistant organization, 1 commit to home-assistant, 1 commit to home-assistant.github.io") +- [Bas Schipper (@basschipper)](https://github.com/basschipper "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") - [Bas Stottelaar (@basilfx)](https://github.com/basilfx "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Beat (@bdurrer)](https://github.com/bdurrer "12 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 1 commit to home-assistant-polymer, 1 commit to home-assistant") - [Beau Simensen (@simensen)](https://github.com/simensen "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") @@ -130,12 +131,13 @@ This page contains a list of people who have contributed in one way or another t - [Benny de Leeuw (@leeuwte)](https://github.com/leeuwte "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Benoit BESSET (@bbesset)](https://github.com/bbesset "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [bestlibre (@bestlibre)](https://github.com/bestlibre "13 total commits to the home-assistant organization, 7 commits to home-assistant, 4 commits to home-assistant.github.io, 1 commit to hassio, 1 commit to hassio-build") +- [Bike Dude (@netzmacher)](https://github.com/netzmacher "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Bill Nelson (@xhostplus)](https://github.com/xhostplus "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Bjarni Ivarsson (@bjarniivarsson)](https://github.com/bjarniivarsson "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant-polymer") - [bl8rnr (@bl8rnr)](https://github.com/bl8rnr "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Blanyal D'Souza (@blanyal)](https://github.com/blanyal "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Boced66 (@boced66)](https://github.com/boced66 "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") -- [boojew (@boojew)](https://github.com/boojew "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [boojew (@boojew)](https://github.com/boojew "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Boris K (@bokub)](https://github.com/bokub "11 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 5 commits to home-assistant") - [Brad Buran (@bburan)](https://github.com/bburan "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Brad Johnson (@bradsk88)](https://github.com/bradsk88 "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -161,9 +163,9 @@ This page contains a list of people who have contributed in one way or another t - [Bryce Edwards (@hoopty)](https://github.com/hoopty "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [BUUT! (@buut-vrij)](https://github.com/buut-vrij "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Caius Cioran (@caiuspb)](https://github.com/caiuspb "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Caleb (@finish06)](https://github.com/finish06 "6 total commits to the home-assistant organization, 5 commits to home-assistant, 1 commit to home-assistant.github.io") +- [Caleb (@finish06)](https://github.com/finish06 "8 total commits to the home-assistant organization, 7 commits to home-assistant, 1 commit to home-assistant.github.io") - [Cameron Bulock (@cbulock)](https://github.com/cbulock "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant") -- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "83 total commits to the home-assistant organization, 75 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to hassbian-scripts, 1 commit to fabric-home-assistant, 1 commit to homebridge-homeassistant") +- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "84 total commits to the home-assistant organization, 76 commits to home-assistant.github.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") - [Carter (@BluGeni)](https://github.com/BluGeni "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Cedric Gatay (@CedricGatay)](https://github.com/CedricGatay "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") @@ -172,7 +174,7 @@ This page contains a list of people who have contributed in one way or another t - [ChadCurvin (@ChadCurvin)](https://github.com/ChadCurvin "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [chanders (@chanders)](https://github.com/chanders "2 total commits to the home-assistant organization, 2 commits to hadashboard") - [CHAPELLE Quentin (@quentinchap)](https://github.com/quentinchap "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") -- [Charles Blonde (@CharlesBlonde)](https://github.com/CharlesBlonde "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") +- [Charles Blonde (@CharlesBlonde)](https://github.com/CharlesBlonde "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") - [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.github.io") - [Chayoung You (@yous)](https://github.com/yous "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.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") @@ -187,7 +189,7 @@ This page contains a list of people who have contributed in one way or another t - [Chris R. Miller (@mysteriouspants)](https://github.com/mysteriouspants "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Chris Sims (@jcsims)](https://github.com/jcsims "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Chris Smolen (@smolz)](https://github.com/smolz "10 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 4 commits to appdaemon") -- [chris-thorn (@chris-thorn)](https://github.com/chris-thorn "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") +- [Chris Thorn (@chris-thorn)](https://github.com/chris-thorn "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Christiaan Blom (@Deinara)](https://github.com/Deinara "8 total commits to the home-assistant organization, 7 commits to home-assistant, 1 commit to home-assistant.github.io") - [Christian Brædstrup (@LinuxChristian)](https://github.com/LinuxChristian "8 total commits to the home-assistant organization, 7 commits to home-assistant, 1 commit to home-assistant.github.io") - [Christian Studer (@cstuder)](https://github.com/cstuder "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -198,27 +200,22 @@ This page contains a list of people who have contributed in one way or another t - [chrysn (@chrysn)](https://github.com/chrysn "65 total commits to the home-assistant organization, 65 commits to libcoap") - [Chun-wei Kuo (@Domon)](https://github.com/Domon "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [chz^3 (@chzchzchz)](https://github.com/chzchzchz "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Ciquattro (@CiquattroFPV)](https://github.com/CiquattroFPV "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") +- [Ciquattro (@CiquattroFPV)](https://github.com/CiquattroFPV "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [clach04 (@clach04)](https://github.com/clach04 "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Claudiu Farcas (@farcasclaudiu)](https://github.com/farcasclaudiu "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Claus F. Strasburger (@cfstras)](https://github.com/cfstras "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Clemens Wolff (@c-w)](https://github.com/c-w "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Cláudio Ribeiro (@DailyMatters)](https://github.com/DailyMatters "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [codeavenger07 (@codeavenger07)](https://github.com/codeavenger07 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Colin O'Dell (@colinodell)](https://github.com/colinodell "20 total commits to the home-assistant organization, 12 commits to home-assistant, 8 commits to home-assistant.github.io") -- [Conrad Juhl Andersen (@cnrd)](https://github.com/cnrd "2 total commits to the home-assistant organization, 1 commit to home-assistant, 1 commit to home-assistant.github.io") +- [Conrad Juhl Andersen (@cnrd)](https://github.com/cnrd "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Constantine Grantcharov (@conz27)](https://github.com/conz27 "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Cooper Dale (@Cooper-Dale)](https://github.com/Cooper-Dale "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Corban Mailloux (@corbanmailloux)](https://github.com/corbanmailloux "17 total commits to the home-assistant organization, 16 commits to home-assistant.github.io, 1 commit to home-assistant") - [corneyl (@corneyl)](https://github.com/corneyl "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Craig Hills (@chills42)](https://github.com/chills42 "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Craig J. Ward (@wardcraigj)](https://github.com/wardcraigj "13 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io") -- [cribbstechnologies (@cribbstechnologies)](https://github.com/cribbstechnologies "33 total commits to the home-assistant organization, 23 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [cribbstechnologies (@cribbstechnologies)](https://github.com/cribbstechnologies "36 total commits to the home-assistant organization, 24 commits to home-assistant, 10 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [CTLS (@CTLS)](https://github.com/CTLS "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Dale Higgs (@dale3h)](https://github.com/dale3h "24 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 9 commits to home-assistant, 1 commit to homebridge-homeassistant, 1 commit to hassbot") +- [Dale Higgs (@dale3h)](https://github.com/dale3h "24 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 9 commits to home-assistant, 1 commit to hassbot, 1 commit to homebridge-homeassistant") - [Dan (@danieljkemp)](https://github.com/danieljkemp "22 total commits to the home-assistant organization, 15 commits to home-assistant, 7 commits to home-assistant.github.io") -- [Dan Burke (@danburke)](https://github.com/danburke "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") -- [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "14 total commits to the home-assistant organization, 11 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "13 total commits to the home-assistant organization, 11 commits to home-assistant, 2 commits to home-assistant.github.io") - [Dan Ford (@dpford)](https://github.com/dpford "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Dan Ports (@drkp)](https://github.com/drkp "3 total commits to the home-assistant organization, 3 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.github.io, 2 commits to home-assistant-polymer") @@ -257,6 +254,7 @@ This page contains a list of people who have contributed in one way or another t - [Dennis Karpienski (@TheRealLink)](https://github.com/TheRealLink "24 total commits to the home-assistant organization, 15 commits to home-assistant-polymer, 6 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") - [Dennis Sutch (@sutch)](https://github.com/sutch "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [devdelay (@devdelay)](https://github.com/devdelay "16 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 5 commits to home-assistant, 4 commits to homebridge-homeassistant") +- [Diogo Gomes (@dgomes)](https://github.com/dgomes "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Diogo Soares (@diogos88)](https://github.com/diogos88 "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [dpressle (@dpressle)](https://github.com/dpressle "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [dramamoose (@dramamoose)](https://github.com/dramamoose "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") @@ -272,11 +270,11 @@ This page contains a list of people who have contributed in one way or another t - [Eric Jansen (@ej81)](https://github.com/ej81 "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Eric Rolf (@xrolfex)](https://github.com/xrolfex "13 total commits to the home-assistant organization, 13 commits to home-assistant") - [Eric Thompson (@er0ck)](https://github.com/er0ck "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "93 total commits to the home-assistant organization, 85 commits to home-assistant, 5 commits to home-assistant.github.io, 3 commits to netdisco") +- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "94 total commits to the home-assistant organization, 86 commits to home-assistant, 5 commits to home-assistant.github.io, 3 commits to netdisco") - [Erik-jan Riemers (@riemers)](https://github.com/riemers "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io") - [ettisan (@ettisan)](https://github.com/ettisan "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Eugenio Panadero (@azogue)](https://github.com/azogue "16 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io") -- [Fabian Affolter (@fabaff)](https://github.com/fabaff "3757 total commits to the home-assistant organization, 2367 commits to home-assistant.github.io, 1229 commits to home-assistant, 59 commits to home-assistant-ansible, 23 commits to home-assistant-dev-helper, 22 commits to home-assistant-notebooks, 21 commits to home-assistant-cli, 17 commits to home-assistant-assets, 10 commits to home-assistant-polymer, 8 commits to netdisco, 1 commit to home-assistant-js-websocket") +- [Eugenio Panadero (@azogue)](https://github.com/azogue "29 total commits to the home-assistant organization, 17 commits to home-assistant, 12 commits to home-assistant.github.io") +- [Fabian Affolter (@fabaff)](https://github.com/fabaff "3816 total commits to the home-assistant organization, 2407 commits to home-assistant.github.io, 1248 commits to home-assistant, 59 commits to home-assistant-ansible, 23 commits to home-assistant-dev-helper, 22 commits to home-assistant-notebooks, 21 commits to home-assistant-cli, 17 commits to home-assistant-assets, 10 commits to home-assistant-polymer, 8 commits to netdisco, 1 commit to home-assistant-js-websocket") - [Fabian Heredia Montiel (@fabianhjr)](https://github.com/fabianhjr "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Fabrizio Furnari (@fabfurnari)](https://github.com/fabfurnari "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [fakezeta (@fakezeta)](https://github.com/fakezeta "7 total commits to the home-assistant organization, 7 commits to home-assistant") @@ -287,7 +285,7 @@ This page contains a list of people who have contributed in one way or another t - [Ferry van Zeelst (@StaticCube)](https://github.com/StaticCube "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") - [Finbarr Brady (@fbradyirl)](https://github.com/fbradyirl "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Flavio Castelli (@flavio)](https://github.com/flavio "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Florian Holzapfel (@florianholzapfel)](https://github.com/florianholzapfel "11 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 4 commits to home-assistant, 3 commits to netdisco") +- [Florian Holzapfel (@florianholzapfel)](https://github.com/florianholzapfel "11 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to netdisco") - [florincosta (@florincosta)](https://github.com/florincosta "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") - [Fonta (@f0nt4)](https://github.com/f0nt4 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Frank (@syphernl)](https://github.com/syphernl "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") @@ -313,6 +311,7 @@ This page contains a list of people who have contributed in one way or another t - [Gianpaolo Macario (@gmacario)](https://github.com/gmacario "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Giel Janssens (@gieljnssns)](https://github.com/gieljnssns "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Gilles Margerie (@Gilles95)](https://github.com/Gilles95 "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Giuseppe (@glpatcern)](https://github.com/glpatcern "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [GMFalka (@GMFalka)](https://github.com/GMFalka "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Gopal Kildoliya (@gopalkildoliya)](https://github.com/gopalkildoliya "6 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io") - [Graeme Smith (@Instagraeme)](https://github.com/Instagraeme "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -327,8 +326,9 @@ This page contains a list of people who have contributed in one way or another t - [Gustav Ahlberg (@Gyran)](https://github.com/Gyran "20 total commits to the home-assistant organization, 20 commits to home-assistant") - [gwendalg (@gwendalg)](https://github.com/gwendalg "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Hajime Morrita (@omo)](https://github.com/omo "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Hamid (@hamid-elaosta)](https://github.com/hamid-elaosta "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Hao Hu (@howiehu)](https://github.com/howiehu "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [happyleavesaoc (@happyleavesaoc)](https://github.com/happyleavesaoc "94 total commits to the home-assistant organization, 72 commits to home-assistant, 21 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [happyleavesaoc (@happyleavesaoc)](https://github.com/happyleavesaoc "99 total commits to the home-assistant organization, 77 commits to home-assistant, 21 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Harald Nagel (@haraldnagel)](https://github.com/haraldnagel "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io") - [Hari Menon (@floydpink)](https://github.com/floydpink "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Harris Borawski (@hborawski)](https://github.com/hborawski "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -375,18 +375,19 @@ This page contains a list of people who have contributed in one way or another t - [Jan Pobořil (@iBobik)](https://github.com/iBobik "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Jan Wh (@janwh)](https://github.com/janwh "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Jan-Preben Mossin (@jpmossin)](https://github.com/jpmossin "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Janne Grunau (@jannau)](https://github.com/jannau "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Janne Grunau (@jannau)](https://github.com/jannau "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant") - [Jared Beckham (@jtbeckha)](https://github.com/jtbeckha "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Jared J. (@jjensn)](https://github.com/jjensn "2 total commits to the home-assistant organization, 1 commit to netdisco, 1 commit 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.github.io") - [Jason Hite (@jasonmhite)](https://github.com/jasonmhite "6 total commits to the home-assistant organization, 6 commits to appdaemon") - [Javier González Calleja (@gonzalezcalleja)](https://github.com/gonzalezcalleja "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Jay Love (@jslove)](https://github.com/jslove "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Jean Regisser (@jeanregisser)](https://github.com/jeanregisser "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Jean Regisser (@jeanregisser)](https://github.com/jeanregisser "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Jean-Michel Julien (@KurdyMalloy)](https://github.com/KurdyMalloy "1 total commits to the home-assistant organization, 1 commit to libcoap") +- [Jean-Michel Ruiz (@coolcow)](https://github.com/coolcow "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Jean-Philippe Bouillot (@Jypy)](https://github.com/Jypy "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [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 "16 total commits to the home-assistant organization, 13 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Jeff Wilson (@jawilson)](https://github.com/jawilson "17 total commits to the home-assistant organization, 14 commits to home-assistant, 3 commits to home-assistant.github.io") - [Jeffrey Lin (@linjef)](https://github.com/linjef "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Jeremiah Wuenschel (@jer)](https://github.com/jer "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Jeremy (@Wutname1)](https://github.com/Wutname1 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -414,22 +415,22 @@ This page contains a list of people who have contributed in one way or another t - [Johan Klintberg (@moogblob)](https://github.com/moogblob "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Johann Kellerman (@kellerza)](https://github.com/kellerza "144 total commits to the home-assistant organization, 114 commits to home-assistant, 30 commits to home-assistant.github.io") - [Johannes K. (@roadrash2108)](https://github.com/roadrash2108 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "178 total commits to the home-assistant organization, 141 commits to home-assistant, 30 commits to home-assistant.github.io, 7 commits to home-assistant-polymer") +- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "180 total commits to the home-assistant organization, 141 commits to home-assistant, 31 commits to home-assistant.github.io, 8 commits to home-assistant-polymer") - [John Coggeshall (@coogle)](https://github.com/coogle "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [John Lindley (@jwl17330536)](https://github.com/jwl17330536 "18 total commits to the home-assistant organization, 11 commits to hadashboard, 6 commits to home-assistant.github.io, 1 commit to home-assistant") - [John McLaughlin (@loghound)](https://github.com/loghound "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [John Mihalic (@mezz64)](https://github.com/mezz64 "36 total commits to the home-assistant organization, 24 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to hadashboard") +- [John Mihalic (@mezz64)](https://github.com/mezz64 "37 total commits to the home-assistant organization, 25 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to hadashboard") - [John Williams (@Jaidan)](https://github.com/Jaidan "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [johnappletree (@johnappletree)](https://github.com/johnappletree "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Jon (@JonMurphy)](https://github.com/JonMurphy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Jon Caruana (@joncar)](https://github.com/joncar "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") - [Jon Evans (@craftyjon)](https://github.com/craftyjon "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Jon Maddox (@maddox)](https://github.com/maddox "102 total commits to the home-assistant organization, 78 commits to home-assistant, 16 commits to homebridge-homeassistant, 8 commits to home-assistant.github.io") -- [Jonatan Castro (@jcastro)](https://github.com/jcastro "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Jonatan Castro (@jcastro)](https://github.com/jcastro "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Jonathan Baginski (@patchedsoul)](https://github.com/patchedsoul "115 total commits to the home-assistant organization, 87 commits to fabric-home-assistant, 28 commits to home-assistant.github.io") - [joopert (@joopert)](https://github.com/joopert "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Jordan Keith (@zeddD1abl0)](https://github.com/zeddD1abl0 "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Jose Juan Montes (@jjmontesl)](https://github.com/jjmontesl "7 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Jose Juan Montes (@jjmontesl)](https://github.com/jjmontesl "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io") - [Joseph Carter (@iKarith)](https://github.com/iKarith "8 total commits to the home-assistant organization, 8 commits to pi-gen") - [Joseph Piron (@eagleamon)](https://github.com/eagleamon "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Josh Anderson (@andersonshatch)](https://github.com/andersonshatch "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to homebridge-homeassistant") @@ -437,7 +438,7 @@ This page contains a list of people who have contributed in one way or another t - [Josh Wright (@JshWright)](https://github.com/JshWright "29 total commits to the home-assistant organization, 21 commits to home-assistant, 8 commits to home-assistant.github.io") - [jpcomtois (@jpcomtois)](https://github.com/jpcomtois "1 total commits to the home-assistant organization, 1 commit to libcoap") - [JudgeDredd (@kentcalero)](https://github.com/kentcalero "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Juggels (@Juggels)](https://github.com/Juggels "7 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Juggels (@Juggels)](https://github.com/Juggels "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") - [Julian Kahnert (@JulianKahnert)](https://github.com/JulianKahnert "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Julien Danjou (@jd)](https://github.com/jd "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [jumpkick (@jumpkick)](https://github.com/jumpkick "15 total commits to the home-assistant organization, 12 commits to home-assistant, 3 commits to home-assistant.github.io") @@ -447,7 +448,7 @@ This page contains a list of people who have contributed in one way or another t - [Justin Weberg (@justweb1)](https://github.com/justweb1 "28 total commits to the home-assistant organization, 13 commits to home-assistant-polymer, 7 commits to hassbot, 4 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-js, 1 commit to hassio") - [Justyn Shull (@justyns)](https://github.com/justyns "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Kai (@luxus)](https://github.com/luxus "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") -- [Kane610 (@Kane610)](https://github.com/Kane610 "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") +- [Kane610 (@Kane610)](https://github.com/Kane610 "6 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") - [Karen Goode (@kfgoode)](https://github.com/kfgoode "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [kaustubhphatak (@kaustubhphatak)](https://github.com/kaustubhphatak "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [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.github.io") @@ -456,7 +457,7 @@ This page contains a list of people who have contributed in one way or another t - [Ken Bannister (@kb2ma)](https://github.com/kb2ma "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Kevin (@Mister-Espria)](https://github.com/Mister-Espria "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Kevin Christensen (@nivekmai)](https://github.com/nivekmai "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 3 commits to home-assistant") +- [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") - [Kevin Gisi (@gisikw)](https://github.com/gisikw "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Kevin Gottsman (@gottsman)](https://github.com/gottsman "7 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 1 commit to home-assistant") - [Kevin Panaro (@kevinpanaro)](https://github.com/kevinpanaro "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -472,13 +473,13 @@ This page contains a list of people who have contributed in one way or another t - [lamiskin (@lamiskin)](https://github.com/lamiskin "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [lee-js (@lee-js)](https://github.com/lee-js "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Leonardo Saraiva (@vyper)](https://github.com/vyper "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Lev Aronsky (@aronsky)](https://github.com/aronsky "7 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Lev Aronsky (@aronsky)](https://github.com/aronsky "9 total commits to the home-assistant organization, 7 commits to home-assistant, 2 commits to home-assistant.github.io") - [Lewis Juggins (@lwis)](https://github.com/lwis "52 total commits to the home-assistant organization, 41 commits to home-assistant, 10 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [lichtteil (@lichtteil)](https://github.com/lichtteil "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [LightIsLife (@LightIsLife)](https://github.com/LightIsLife "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Lindsay Ward (@lindsaymarkward)](https://github.com/lindsaymarkward "17 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 4 commits to home-assistant") - [linuxlurak (@linuxlurak)](https://github.com/linuxlurak "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to hadashboard") -- [Luar Roji (@cyberplant)](https://github.com/cyberplant "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Luar Roji (@cyberplant)](https://github.com/cyberplant "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") - [LucaSoldi (@LucaSoldi)](https://github.com/LucaSoldi "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Lucien Guimier (@guimier)](https://github.com/guimier "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Ludeeus (@ludeeus)](https://github.com/ludeeus "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") @@ -500,10 +501,11 @@ This page contains a list of people who have contributed in one way or another t - [Marc Egli (@frog32)](https://github.com/frog32 "9 total commits to the home-assistant organization, 7 commits to home-assistant, 2 commits to home-assistant.github.io") - [Marc Forth (@mf-social)](https://github.com/mf-social "11 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 1 commit to fabric-home-assistant") - [Marc Pabst (@mxtra)](https://github.com/mxtra "2 total commits to the home-assistant organization, 1 commit to home-assistant-polymer, 1 commit to home-assistant") -- [Marc Plano-Lesay (@Kernald)](https://github.com/Kernald "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") +- [Marc Plano-Lesay (@Kernald)](https://github.com/Kernald "11 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 1 commit to home-assistant") - [Marcel030nl (@Marcel030nl)](https://github.com/Marcel030nl "6 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 1 commit to home-assistant") - [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "103 total commits to the home-assistant organization, 55 commits to home-assistant, 48 commits to home-assistant.github.io") - [Marcin Jaworski (@yawor)](https://github.com/yawor "10 total commits to the home-assistant organization, 10 commits to appdaemon") +- [Marco Sirabella (@mjsir911)](https://github.com/mjsir911 "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Marijn Giesen (@marijngiesen)](https://github.com/marijngiesen "7 total commits to the home-assistant organization, 5 commits to hadashboard, 2 commits to home-assistant.github.io") - [mariwing (@mariwing)](https://github.com/mariwing "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Mark (@scmmmh)](https://github.com/scmmmh "1 total commits to the home-assistant organization, 1 commit to home-assistant") @@ -520,12 +522,14 @@ This page contains a list of people who have contributed in one way or another t - [Martin J. Laubach (@mjl)](https://github.com/mjl "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Martin Nöhrer (@matrixx567)](https://github.com/matrixx567 "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Martin Rowan (@shortbloke)](https://github.com/shortbloke "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Martin Tremblay (@MartyTremblay)](https://github.com/MartyTremblay "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Martin Vacula (@MatoKafkac)](https://github.com/MatoKafkac "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Martokk (@martokk)](https://github.com/martokk "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Mathew Peterson (@mathewpeterson)](https://github.com/mathewpeterson "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Matt N. (@mnoorenberghe)](https://github.com/mnoorenberghe "23 total commits to the home-assistant organization, 15 commits to home-assistant.github.io, 7 commits to home-assistant, 1 commit to home-assistant-polymer") - [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 "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") +- [matt2005 (@matt2005)](https://github.com/matt2005 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Matteo Lampugnani (@t30)](https://github.com/t30 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [Matthew Bowen (@mgbowen)](https://github.com/mgbowen "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to home-assistant") - [Matthew Garrett (@mjg59)](https://github.com/mjg59 "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io") @@ -536,7 +540,7 @@ This page contains a list of people who have contributed in one way or another t - [mboeru (@mboeru)](https://github.com/mboeru "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS") - [Micha LaQua (@milaq)](https://github.com/milaq "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Michael (@hartmms)](https://github.com/hartmms "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Michael Auchter (@auchter)](https://github.com/auchter "12 total commits to the home-assistant organization, 12 commits to home-assistant") +- [Michael Auchter (@auchter)](https://github.com/auchter "13 total commits to the home-assistant organization, 13 commits to home-assistant") - [Michael Buffington (@elbowdonkey)](https://github.com/elbowdonkey "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Michael Furtak (@mfurtak)](https://github.com/mfurtak "5 total commits to the home-assistant organization, 5 commits to issue-bot") - [Michael Gilbert (@Zyell)](https://github.com/Zyell "8 total commits to the home-assistant organization, 8 commits to home-assistant") @@ -545,9 +549,10 @@ This page contains a list of people who have contributed in one way or another t - [Michael Luggen (@l00mi)](https://github.com/l00mi "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Michael Requeny (@requenym)](https://github.com/requenym "14 total commits to the home-assistant organization, 14 commits to home-assistant.github.io") - [Michael Shim (@shimeez)](https://github.com/shimeez "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant") -- [Michaël Arnauts (@michaelarnauts)](https://github.com/michaelarnauts "49 total commits to the home-assistant organization, 24 commits to home-assistant, 21 commits to home-assistant.github.io, 3 commits to home-assistant-polymer, 1 commit to netdisco") +- [Michaël Arnauts (@michaelarnauts)](https://github.com/michaelarnauts "50 total commits to the home-assistant organization, 25 commits to home-assistant, 21 commits to home-assistant.github.io, 3 commits to home-assistant-polymer, 1 commit to netdisco") - [Michel Settembrino (@MS-Informatique)](https://github.com/MS-Informatique "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [micw (@micw)](https://github.com/micw "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Miha Lunar (@SmilyOrg)](https://github.com/SmilyOrg "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Mikayla Hutchinson (@mhutch)](https://github.com/mhutch "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Mike Hennessy (@henworth)](https://github.com/henworth "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Mike Megally (@cmsimike)](https://github.com/cmsimike "1 total commits to the home-assistant organization, 1 commit to home-assistant") @@ -561,12 +566,15 @@ This page contains a list of people who have contributed in one way or another t - [Mitesh Patel (@gurumitts)](https://github.com/gurumitts "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") - [Mitko Masarliev (@masarliev)](https://github.com/masarliev "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [mje-nz (@mje-nz)](https://github.com/mje-nz "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [mjj4791 (@mjj4791)](https://github.com/mjj4791 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [mnestor (@mnestor)](https://github.com/mnestor "6 total commits to the home-assistant organization, 5 commits to home-assistant, 1 commit to home-assistant-polymer") - [Molodax (@Molodax)](https://github.com/Molodax "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Moon Shot (@moonshot)](https://github.com/moonshot "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Morten Lied Johansen (@mortenlj)](https://github.com/mortenlj "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [moskovskiy82 (@moskovskiy82)](https://github.com/moskovskiy82 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [mountainsandcode (@mountainsandcode)](https://github.com/mountainsandcode "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [mtl010957 (@mtl010957)](https://github.com/mtl010957 "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Myles Eftos (@madpilot)](https://github.com/madpilot "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Mārtiņš Grunskis (@grunskis)](https://github.com/grunskis "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Nate (@BillyNate)](https://github.com/BillyNate "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Nathan Flynn (@eperdeme)](https://github.com/eperdeme "1 total commits to the home-assistant organization, 1 commit to hassio-addons") @@ -588,8 +596,8 @@ This page contains a list of people who have contributed in one way or another t - [Nikolas Beutler (@biacz)](https://github.com/biacz "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Nils Uliczka (@darookee)](https://github.com/darookee "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [NMA (@nma83)](https://github.com/nma83 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [nodomain (@nodomain)](https://github.com/nodomain "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant") -- [Nolan Gilley (@nkgilley)](https://github.com/nkgilley "111 total commits to the home-assistant organization, 86 commits to home-assistant, 25 commits to home-assistant.github.io") +- [nodomain (@nodomain)](https://github.com/nodomain "9 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant") +- [Nolan Gilley (@nkgilley)](https://github.com/nkgilley "112 total commits to the home-assistant organization, 87 commits to home-assistant, 25 commits to home-assistant.github.io") - [nordlead2005 (@nordlead2005)](https://github.com/nordlead2005 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Nuno Sousa (@nunofgs)](https://github.com/nunofgs "7 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to homebridge-homeassistant") - [nunojusto (@nunojusto)](https://github.com/nunojusto "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -599,36 +607,32 @@ This page contains a list of people who have contributed in one way or another t - [Oleksii Serdiuk (@leppa)](https://github.com/leppa "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Olimpiu Rob (@olimpiurob)](https://github.com/olimpiurob "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Oliv3rDog (@Oliv3rDog)](https://github.com/Oliv3rDog "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Oliver (@scarface-4711)](https://github.com/scarface-4711 "13 total commits to the home-assistant organization, 7 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to netdisco") +- [Oliver (@scarface-4711)](https://github.com/scarface-4711 "17 total commits to the home-assistant organization, 10 commits to home-assistant, 6 commits to home-assistant.github.io, 1 commit to netdisco") - [Oliver van Porten (@mcdeck)](https://github.com/mcdeck "10 total commits to the home-assistant organization, 10 commits to home-assistant") -- [Open Home Automation (@open-homeautomation)](https://github.com/open-homeautomation "22 total commits to the home-assistant organization, 18 commits to home-assistant, 4 commits to home-assistant.github.io") -- [OpenDave15 (@OpenDave15)](https://github.com/OpenDave15 "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Omar Usman (@omarusman)](https://github.com/omarusman "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Open Home Automation (@open-homeautomation)](https://github.com/open-homeautomation "23 total commits to the home-assistant organization, 19 commits to home-assistant, 4 commits to home-assistant.github.io") - [Parker Moore (@parkr)](https://github.com/parkr "62 total commits to the home-assistant organization, 62 commits to home-assistant.github.io") - [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 "1459 total commits to the home-assistant organization, 560 commits to hassio, 358 commits to home-assistant, 193 commits to hassio-addons, 169 commits to home-assistant.github.io, 163 commits to hassio-build, 14 commits to hassio-addons-example, 1 commit to netdisco, 1 commit to home-assistant-js-websocket") +- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "1510 total commits to the home-assistant organization, 574 commits to hassio, 363 commits to home-assistant, 208 commits to hassio-addons, 175 commits to hassio-build, 174 commits to home-assistant.github.io, 14 commits to hassio-addons-example, 1 commit to netdisco, 1 commit to home-assistant-js-websocket") - [patkap (@patkap)](https://github.com/patkap "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Patrick Aikens (@duckpuppy)](https://github.com/duckpuppy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Patrick White (@pw)](https://github.com/pw "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Patrik (@ggravlingen)](https://github.com/ggravlingen "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Paul Philippov (@themactep)](https://github.com/themactep "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Pavel Ponomarev (@awsum)](https://github.com/awsum "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer") - [PawelWMS (@PawelWMS)](https://github.com/PawelWMS "12 total commits to the home-assistant organization, 12 commits to libcoap") - [Pedro Navarro (@pedronavf)](https://github.com/pedronavf "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Pedro Pombeiro (@PombeirP)](https://github.com/PombeirP "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Per Osbäck (@perosb)](https://github.com/perosb "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [Per Osbäck (@perosb)](https://github.com/perosb "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Per Sandström (@persandstrom)](https://github.com/persandstrom "119 total commits to the home-assistant organization, 95 commits to home-assistant, 12 commits to home-assistant-polymer, 12 commits to home-assistant.github.io") - [Pete Peterson (@petey)](https://github.com/petey "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [PetePriority (@PetePriority)](https://github.com/PetePriority "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") +- [PetePriority (@PetePriority)](https://github.com/PetePriority "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [petkov (@petkov)](https://github.com/petkov "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Petr Vraník (@konikvranik)](https://github.com/konikvranik "11 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io") -- [pezinek (@pezinek)](https://github.com/pezinek "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [pezinek (@pezinek)](https://github.com/pezinek "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Phil (@godloth)](https://github.com/godloth "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") - [Phil Haack (@Haacked)](https://github.com/Haacked "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Phil Hansen (@Hansen8601)](https://github.com/Hansen8601 "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Phil Hawthorne (@philhawthorne)](https://github.com/philhawthorne "9 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Phil Kates (@philk)](https://github.com/philk "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Phil Hawthorne (@philhawthorne)](https://github.com/philhawthorne "11 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 4 commits to home-assistant") - [Phileep (@Phileep)](https://github.com/Phileep "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Philip Hofstetter (@pilif)](https://github.com/pilif "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Philip Lundrigan (@philipbl)](https://github.com/philipbl "65 total commits to the home-assistant organization, 56 commits to home-assistant, 9 commits to home-assistant.github.io") @@ -637,7 +641,7 @@ This page contains a list of people who have contributed in one way or another t - [Pierre Ståhl (@postlund)](https://github.com/postlund "26 total commits to the home-assistant organization, 18 commits to home-assistant, 4 commits to netdisco, 4 commits to home-assistant.github.io") - [pinksocks (@pinksocks)](https://github.com/pinksocks "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Piratonym (@Piratonym)](https://github.com/Piratonym "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [PuckStar (@PuckStar)](https://github.com/PuckStar "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") +- [PuckStar (@PuckStar)](https://github.com/PuckStar "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [R Huish (@Genestealer)](https://github.com/Genestealer "18 total commits to the home-assistant organization, 18 commits to home-assistant.github.io") - [R1chardTM (@R1chardTM)](https://github.com/R1chardTM "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") - [rbflurry (@rbflurry)](https://github.com/rbflurry "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") @@ -647,16 +651,13 @@ This page contains a list of people who have contributed in one way or another t - [Rev Michael Greb (@mikegrb)](https://github.com/mikegrb "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [rhooper (@rhooper)](https://github.com/rhooper "30 total commits to the home-assistant organization, 25 commits to home-assistant, 3 commits to home-assistant.github.io, 2 commits to hadashboard") - [Riccardo Canta (@commento)](https://github.com/commento "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Riccardo Massari (@maxdrift)](https://github.com/maxdrift "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Richard Arends (@Mosibi)](https://github.com/Mosibi "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Richard Cox (@Khabi)](https://github.com/Khabi "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io") - [Richard Cunningham (@rythie)](https://github.com/rythie "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [RickyTaterSalad (@RickyTaterSalad)](https://github.com/RickyTaterSalad "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [rkabadi (@rkabadi)](https://github.com/rkabadi "17 total commits to the home-assistant organization, 17 commits to home-assistant") - [Rob Capellini (@capellini)](https://github.com/capellini "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Rob Johnson (@robjohnson189)](https://github.com/robjohnson189 "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Rob Slifka (@rslifka)](https://github.com/rslifka "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1188 total commits to the home-assistant organization, 531 commits to home-assistant-iOS, 255 commits to home-assistant, 247 commits to home-assistant.github.io, 78 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 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 hadashboard, 3 commits to home-assistant-js, 3 commits to home-assistant-cli, 3 commits to hassbot, 3 commits to home-assistant-js-websocket, 2 commits to home-assistant-dev-helper, 2 commits to fabric-home-assistant, 2 commits to home-assistant-ansible, 2 commits to home-assistant-notebooks, 2 commits to micropython-home-assistant, 2 commits to lambda-home-assistant-github, 2 commits to home-assistant-assets, 1 commit to LabelBot") +- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1189 total commits to the home-assistant organization, 531 commits to home-assistant-iOS, 255 commits to home-assistant, 247 commits to home-assistant.github.io, 78 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 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 home-assistant-js-websocket, 3 commits to home-assistant-cli, 3 commits to hadashboard, 3 commits to organization, 3 commits to hassbot, 2 commits to LabelBot, 2 commits to home-assistant-assets, 2 commits to home-assistant-dev-helper, 2 commits to lambda-home-assistant-github, 2 commits to fabric-home-assistant, 2 commits to micropython-home-assistant, 2 commits to home-assistant-ansible, 2 commits to home-assistant-notebooks") - [Robby Grossman (@freerobby)](https://github.com/freerobby "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [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.github.io") @@ -680,7 +681,6 @@ This page contains a list of people who have contributed in one way or another t - [Ryan Kraus (@rmkraus)](https://github.com/rmkraus "193 total commits to the home-assistant organization, 161 commits to home-assistant, 17 commits to home-assistant.github.io, 14 commits to home-assistant-polymer, 1 commit to home-assistant-notebooks") - [Ryan Parrish (@stickystyle)](https://github.com/stickystyle "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Ryan Turner (@ryanturner)](https://github.com/ryanturner "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Róbert Nagy (@vrnagy)](https://github.com/vrnagy "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Sacha Telgenhof (@stelgenhof)](https://github.com/stelgenhof "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Sam Holmes (@sam3d)](https://github.com/sam3d "4 total commits to the home-assistant organization, 4 commits to pi-gen") - [Sam Jongenelen (@SamJongenelen)](https://github.com/SamJongenelen "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -688,13 +688,13 @@ This page contains a list of people who have contributed in one way or another t - [sam-io (@sam-io)](https://github.com/sam-io "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") - [Samuel Bétrisey (@betrisey)](https://github.com/betrisey "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Samuel Mertenat (@mertenats)](https://github.com/mertenats "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [sander76 (@sander76)](https://github.com/sander76 "38 total commits to the home-assistant organization, 34 commits to home-assistant, 4 commits to home-assistant.github.io") +- [sander76 (@sander76)](https://github.com/sander76 "39 total commits to the home-assistant organization, 35 commits to home-assistant, 4 commits to home-assistant.github.io") - [schneefux (@schneefux)](https://github.com/schneefux "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Scott Bradshaw (@swbradshaw)](https://github.com/swbradshaw "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Scott Griffin (@scottocs11)](https://github.com/scottocs11 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [Scott O'Neil (@americanwookie)](https://github.com/americanwookie "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") - [Scott Reston (@ih8gates)](https://github.com/ih8gates "9 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Sean Dague (@sdague)](https://github.com/sdague "52 total commits to the home-assistant organization, 36 commits to home-assistant, 7 commits to home-assistant.github.io, 5 commits to home-assistant-polymer, 3 commits to netdisco, 1 commit to home-assistant-js") +- [Sean Dague (@sdague)](https://github.com/sdague "54 total commits to the home-assistant organization, 37 commits to home-assistant, 8 commits to home-assistant.github.io, 5 commits to home-assistant-polymer, 3 commits to netdisco, 1 commit to home-assistant-js") - [Sebastian (@sebk-666)](https://github.com/sebk-666 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Sebastian (@sgso)](https://github.com/sgso "3 total commits to the home-assistant organization, 3 commits to libcoap") - [Sebastian Hartnick (@goir)](https://github.com/goir "1 total commits to the home-assistant organization, 1 commit to home-assistant") @@ -702,7 +702,6 @@ This page contains a list of people who have contributed in one way or another t - [sfam (@sfam)](https://github.com/sfam "65 total commits to the home-assistant organization, 58 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-polymer") - [Shawna (@Nightarrow85)](https://github.com/Nightarrow85 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [siebert (@siebert)](https://github.com/siebert "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [SilvrrGIT (@SilvrrGIT)](https://github.com/SilvrrGIT "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") - [Simon Elsbrock (@else)](https://github.com/else "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Simon Szustkowski (@simonszu)](https://github.com/simonszu "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant") - [Sjors Spoorendonk (@sjorsjes)](https://github.com/sjorsjes "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") @@ -718,10 +717,10 @@ This page contains a list of people who have contributed in one way or another t - [Stéphane Bidoul (ACSONE) (@sbidoul)](https://github.com/sbidoul "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [System Tester (@systemtester)](https://github.com/systemtester "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Sytone (@sytone)](https://github.com/sytone "10 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant-cli, 2 commits to home-assistant") -- [Sören Oldag (@soldag)](https://github.com/soldag "11 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 4 commits to home-assistant") +- [Sören Oldag (@soldag)](https://github.com/soldag "12 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 5 commits to home-assistant") - [Teagan Glenn (@Teagan42)](https://github.com/Teagan42 "58 total commits to the home-assistant organization, 49 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to home-assistant-js") - [techtrails (@techtrails)](https://github.com/techtrails "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [tedstriker (@tedstriker)](https://github.com/tedstriker "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [tedstriker (@tedstriker)](https://github.com/tedstriker "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Teemu Mikkonen (@T3m3z)](https://github.com/T3m3z "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") - [Teemu Patja (@tpatja)](https://github.com/tpatja "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Teemu R. (@rytilahti)](https://github.com/rytilahti "28 total commits to the home-assistant organization, 20 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco") @@ -730,8 +729,8 @@ This page contains a list of people who have contributed in one way or another t - [Theb-1 (@Theb-1)](https://github.com/Theb-1 "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [thecynic (@thecynic)](https://github.com/thecynic "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Theodor Lindquist (@theolind)](https://github.com/theolind "27 total commits to the home-assistant organization, 25 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Thiago Oliveira (@chilicheech)](https://github.com/chilicheech "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Thibault Cohen (@titilambert)](https://github.com/titilambert "30 total commits to the home-assistant organization, 19 commits to home-assistant, 11 commits to home-assistant.github.io") +- [Thiago Oliveira (@chilicheech)](https://github.com/chilicheech "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Thibault Cohen (@titilambert)](https://github.com/titilambert "34 total commits to the home-assistant organization, 21 commits to home-assistant, 13 commits to home-assistant.github.io") - [ThinkPadNL (@ThinkPadNL)](https://github.com/ThinkPadNL "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Thomas (@ktpx)](https://github.com/ktpx "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Thomas Petazzoni (@tpetazzoni)](https://github.com/tpetazzoni "1 total commits to the home-assistant organization, 1 commit to libcoap") @@ -749,7 +748,7 @@ This page contains a list of people who have contributed in one way or another t - [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.github.io, 6 commits to home-assistant-polymer, 2 commits to netdisco") - [Tom Hoover (@tomhoover)](https://github.com/tomhoover "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Tom Matheussen (@Tommatheussen)](https://github.com/Tommatheussen "4 total commits to the home-assistant organization, 4 commits to home-assistant-polymer") +- [Tom Matheussen (@Tommatheussen)](https://github.com/Tommatheussen "6 total commits to the home-assistant organization, 4 commits to home-assistant-polymer, 2 commits to home-assistant") - [Tom Usher (@tomusher)](https://github.com/tomusher "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Tomi Tuhkanen (@ttu)](https://github.com/ttu "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Toshik (@Toshik)](https://github.com/Toshik "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") @@ -757,6 +756,7 @@ This page contains a list of people who have contributed in one way or another t - [Trevor (@tboyce021)](https://github.com/tboyce021 "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io") - [Trey Hunner (@treyhunner)](https://github.com/treyhunner "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.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 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Tyler Crumpton (@tylercrumpton)](https://github.com/tylercrumpton "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Tyler Page (@iamtpage)](https://github.com/iamtpage "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Tõnis Tobre (@tobre6)](https://github.com/tobre6 "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") @@ -764,10 +764,10 @@ This page contains a list of people who have contributed in one way or another t - [Valentin VĂLCIU (@axiac)](https://github.com/axiac "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [viswa-swami (@viswa-swami)](https://github.com/viswa-swami "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [vllungu (@vllungu)](https://github.com/vllungu "3 total commits to the home-assistant organization, 3 commits to libcoap") -- [vrs01 (@vrs01)](https://github.com/vrs01 "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") +- [vrs01 (@vrs01)](https://github.com/vrs01 "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Wagner Sartori Junior (@trunet)](https://github.com/trunet "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Wilco Land (@Wilco89)](https://github.com/Wilco89 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Will Heid (@bassclarinetl2)](https://github.com/bassclarinetl2 "13 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 1 commit to fabric-home-assistant") +- [Will Heid (@bassclarinetl2)](https://github.com/bassclarinetl2 "14 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 1 commit to fabric-home-assistant") - [Will Hughes (@insertjokehere)](https://github.com/insertjokehere "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Willems Davy (@joyrider3774)](https://github.com/joyrider3774 "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant") - [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "63 total commits to the home-assistant organization, 45 commits to home-assistant, 18 commits to home-assistant.github.io") @@ -775,7 +775,7 @@ This page contains a list of people who have contributed in one way or another t - [Wojciech Bederski (@wuub)](https://github.com/wuub "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.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.github.io") - [Wolf-Bastian Pöttner (@BastianPoe)](https://github.com/BastianPoe "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Wolfgang Malgadey (@wmalgadey)](https://github.com/wmalgadey "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Wolfgang Malgadey (@wmalgadey)](https://github.com/wmalgadey "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [XECDesign (@XECDesign)](https://github.com/XECDesign "77 total commits to the home-assistant organization, 77 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 Simard (@TheRaven)](https://github.com/TheRaven "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -790,4 +790,4 @@ This page contains a list of people who have contributed in one way or another t 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 Saturday, June 10th 2017, 9:18:30 am UTC. +This page was last updated Sunday, June 25th 2017, 10:12:23 am UTC. From 46f1742240a96541d58724df448f9c4a35fc2556 Mon Sep 17 00:00:00 2001 From: Giuseppe Date: Mon, 26 Jun 2017 07:21:14 +0200 Subject: [PATCH 13/42] Fixed module names after PR #8030 (#2875) The module names have been consistently lower-cased, this is to reflect the change on the docs. --- source/_components/sensor.netatmo.markdown | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/_components/sensor.netatmo.markdown b/source/_components/sensor.netatmo.markdown index 398a341a607..e92471bdb15 100644 --- a/source/_components/sensor.netatmo.markdown +++ b/source/_components/sensor.netatmo.markdown @@ -52,10 +52,10 @@ Configuration variables: - **rain**: Estimated rainfall for today in mm. - **sum_rain_1**: Rainfall in the last hour in mm. - **sum_rain_24**: Rainfall in mm from 00:00am - 23:59pm. - - **WindAngle**: Wind angle - - **WindStrength**: Wind strength - - **GustAngle**: Wind gust angle - - **GustStrength**: Wind gust strength + - **windangle**: Wind angle + - **windstrength**: Wind strength + - **gustangle**: Wind gust angle + - **guststrength**: Wind gust strength - **min_temp**: Min temperature for today - **max_temp**: Max temperature for today - **rf_status**: Current radio status per module. (90=low, 60=highest) @@ -69,4 +69,3 @@ You can find your modules name in your [online NetAtmo account](https://my.netat

    - From 14d2c3ce939230993f78f710bd0125408fa7c86f Mon Sep 17 00:00:00 2001 From: vrs01 Date: Mon, 26 Jun 2017 18:32:12 +0200 Subject: [PATCH 14/42] Mention how to install 'rubygems' (#2890) * Update installation.markdown * Update command --- .../ecosystem/hadashboard/installation.markdown | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/source/_docs/ecosystem/hadashboard/installation.markdown b/source/_docs/ecosystem/hadashboard/installation.markdown index 4d1fe7ff258..0ccc654744d 100755 --- a/source/_docs/ecosystem/hadashboard/installation.markdown +++ b/source/_docs/ecosystem/hadashboard/installation.markdown @@ -84,9 +84,17 @@ $ cd hadashboard ### {% linkable_title 2. Install Dashing and prereqs %} -Essentially, you want to make sure that you have Ruby installed on your local machine. Then, install the Dashing gem: +Essentially, you want to make sure that you have Ruby installed on your local machine. -``` bash +For Debian based distribution do: + +```bash +$ sudo apt-get install rubygems +``` + +Then, install the Dashing gem: + +```bash $ gem install dashing ``` From 76dd3fdff5f95f007810a798afcac65df1ee4576 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 26 Jun 2017 18:39:20 +0200 Subject: [PATCH 15/42] Minor updates --- .../ecosystem/hadashboard/hapush.markdown | 6 ++--- .../hadashboard/installation.markdown | 25 ++++++++----------- .../ecosystem/hadashboard/reboot.markdown | 6 ++--- .../ecosystem/hadashboard/updating.markdown | 4 +-- 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/source/_docs/ecosystem/hadashboard/hapush.markdown b/source/_docs/ecosystem/hadashboard/hapush.markdown index 6445a12ae3e..558c3c1cc03 100755 --- a/source/_docs/ecosystem/hadashboard/hapush.markdown +++ b/source/_docs/ecosystem/hadashboard/hapush.markdown @@ -43,7 +43,7 @@ $ sudo pip3 install --upgrade requests ## {% linkable_title Configuring hapush (all installation methods) %} -When you have all the prereqs in place, copy the hapush.cfg.example file to hapush.cfg then edit it to reflect your environment: +When you have all the prereqs in place, copy the `hapush.cfg.example` file to `hapush.cfg` then edit it to reflect your environment: ``` ha_url = "http://192.168.1.10:8123" @@ -61,13 +61,13 @@ logfile = "/etc/hapush/hapush.log" ## {% linkable_title Running hapush %} -For a manual installation you can then run hapush from the command line as follows: +For a manual installation you can then run `hapush` from the command-line as follows: ```bash $ ./hapush.py hapush.cfg ``` -For docker installs, hapush will be started automatically when you run the startup command. +For Docker installs, hapush will be started automatically when you run the startup command. If all is well, you should start to see `hapush` responding to events as they occur. For a docker installation you should see these messages in `hapush/hapush.log`. diff --git a/source/_docs/ecosystem/hadashboard/installation.markdown b/source/_docs/ecosystem/hadashboard/installation.markdown index 0ccc654744d..253d1567fa5 100755 --- a/source/_docs/ecosystem/hadashboard/installation.markdown +++ b/source/_docs/ecosystem/hadashboard/installation.markdown @@ -10,13 +10,14 @@ footer: true redirect_from: /ecosystem/hadashboard/installation/ --- -Installation can be performed using Docker (Contributed by [marijngiesen](https://github.com/marijngiesen)) or manually if Docker doesn't work for you. We also have a Raspberry PI version of Docker contributed by [snizzleorg](https://community.home-assistant.io/users/snizzleorg/activity) +Installation can be performed using Docker (Contributed by [marijngiesen](https://github.com/marijngiesen)) or manually if Docker doesn't work for you. We also have a Raspberry Pi version of Docker contributed by [snizzleorg](https://community.home-assistant.io/users/snizzleorg/activity). ## {% linkable_title Using Docker (Non Raspian) %} Assuming you already have Docker installed, installation is fairly easy. ### {% linkable_title Clone the Repository %} + Clone the **hadashboard** repository to the current local directory on your machine. ``` bash @@ -57,15 +58,13 @@ By default, the docker instance should pick up your timezone but if you want to ### {% linkable_title Docker on Raspberry Pi %} -Raspberry pi needs to use a different docker build file so the build command is slightly different: +Raspberry Pi needs to use a different Docker build file so the build command is slightly different: ```bash $ sudo docker build -f Docker-raspi/Dockerfile -t hadashboard . ``` -Apart from that the other steps are identical. - -*Note - this is pretty slow even on a PI3, be prepared for it to take an hour or two to build all of the extensions and install everything* +Apart from that the other steps are identical. Running Docker is pretty slow even on a PI3, be prepared for it to take an hour or two to build all of the extensions and install everything* ## {% linkable_title Manual Installation %} @@ -82,7 +81,7 @@ Change your working directory to the repository root. Moving forward, we will be $ cd hadashboard ``` -### {% linkable_title 2. Install Dashing and prereqs %} +### {% linkable_title 2. Install Dashing and prerequirments %} Essentially, you want to make sure that you have Ruby installed on your local machine. @@ -98,9 +97,7 @@ Then, install the Dashing gem: $ gem install dashing ``` -From your repository root, make sure that all dependencies are available. - -Note: on some systems you may also need to install bundler: +From your repository root, make sure that all dependencies are available. On some systems you may also need to install `bundler`: ```bash $ gem install bundler @@ -112,9 +109,7 @@ When installed run it: $ bundle ``` -Bundle will now install all the ruby prereqs for running dashing. - -Note: Prereqs will vary across different machines. So far users have reported requirements for some additional installs to allow the bundle to complete succesfully: +Bundle will now install all the ruby prerequirements for running dashing. Prerequirements will vary across different machines. So far users have reported requirements for some additional installs to allow the bundle to complete succesfully: - ruby-dev - `sudo apt-get install ruby-dev` - node-js - `sudo apt-get install nodejs` @@ -123,18 +118,18 @@ Note: Prereqs will vary across different machines. So far users have reported re You will need to research what works on your particular architecture and also bear in mind that version numbers may change over time. -Note: This is currently running on various versions of Ruby and there are no strong dependencies however your mileage may vary. +This is currently running on various versions of Ruby and there are no strong dependencies however your mileage may vary. ## {% linkable_title Updating configuration (Manual and Docker) %} -Next, in the `./lib` directory, copy the ha_conf.rb.example file to ha_conf.rb and edit its settings to reflect your installation, pointing to the machine Home Assistant is running on and adding your api_key. +Next, in the `./lib` directory, copy the `ha_conf.rb.example` file to `ha_conf.rb` and edit its settings to reflect your installation, pointing to the machine Home Assistant is running on and adding your API key. ```ruby $ha_url = "http://192.168.1.10:8123" $ha_apikey = "your key" ``` -- `$ha_url` is a reference to your home assistant installation and must include the correct port number and scheme (`http://` or `https://` as appropriate) +- `$ha_url` is a reference to your Home Assistant installation and must include the correct port number and scheme (`http://` or `https://` as appropriate) - `$ha_apikey` should be set to your key if you have one, otherwise it can remain blank. The file also contains example newsfeeds for the News widget: diff --git a/source/_docs/ecosystem/hadashboard/reboot.markdown b/source/_docs/ecosystem/hadashboard/reboot.markdown index 3f912b0268f..ca00dc08fe5 100755 --- a/source/_docs/ecosystem/hadashboard/reboot.markdown +++ b/source/_docs/ecosystem/hadashboard/reboot.markdown @@ -10,8 +10,8 @@ footer: true redirect_from: /ecosystem/hadashboard/reboot/ --- -To run Dashing and `hapush` at reboot, I have provided sample init scripts in the `./init` directory. These have been tested on a Raspberry Pi - your mileage may vary on other systems. +To run Dashing and `hapush` at reboot, checkout out the sample init scripts in the `./init` directory. These have been tested on a Raspberry Pi - your mileage may vary on other systems. -Instructions for automatically starting a docker install can be found [here](https://docs.docker.com/engine/admin/host_integration/). +Instructions for automatically starting a Docker installation can be found [here](https://docs.docker.com/engine/admin/host_integration/). -For docker you may also want to use docker-compose - there is a sample compose file in the `./init` directory. +For Docker you may also want to use `docker-compose` - there is a sample compose file in the `./init` directory. diff --git a/source/_docs/ecosystem/hadashboard/updating.markdown b/source/_docs/ecosystem/hadashboard/updating.markdown index 6854a554151..2c2196e5de7 100755 --- a/source/_docs/ecosystem/hadashboard/updating.markdown +++ b/source/_docs/ecosystem/hadashboard/updating.markdown @@ -16,10 +16,10 @@ To update the dashboard after new code has been released, just run the following $ git pull origin ``` -For some releases you may also need to rerun the bundle command: +For some releases you may also need to rerun the `bundle` command: ``` bash $ bundle ``` -For docker users, you will also need to rerun the docker build process. +For Docker users, you will also need to rerun the Docker build process. From dcb1aea4d771e7fe2a2bac157587dd2bfb8f9a0d Mon Sep 17 00:00:00 2001 From: Will W Date: Tue, 27 Jun 2017 03:13:55 +0900 Subject: [PATCH 16/42] input_select: add note about boolean equivalents (#2891) * input_select: add note about boolean equivalents * Put note in box --- source/_components/input_select.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_components/input_select.markdown b/source/_components/input_select.markdown index 45dbc19c0d8..d41555c13ab 100644 --- a/source/_components/input_select.markdown +++ b/source/_components/input_select.markdown @@ -43,6 +43,10 @@ Configuration variables: Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. +

    +Because YAML defines [booleans](http://yaml.org/type/bool.html) as equivalent, any variations of 'On', 'Yes', 'Y', 'Off', 'No', or 'N' (regardless of case) used as option names will be replaced by True and False unless they are defined in quotation marks. +

    + ### {% linkable_title Services %} This components provide three services to modify the state of the `input_select`: From 0f91fcfc7d91473d7c3267f4cd53df6ae7263abb Mon Sep 17 00:00:00 2001 From: vrs01 Date: Tue, 27 Jun 2017 07:29:37 +0200 Subject: [PATCH 17/42] Typo (#2893) * Typo * Typo --- source/_docs/ecosystem/hadashboard/installation.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/ecosystem/hadashboard/installation.markdown b/source/_docs/ecosystem/hadashboard/installation.markdown index 253d1567fa5..a9c024bf8aa 100755 --- a/source/_docs/ecosystem/hadashboard/installation.markdown +++ b/source/_docs/ecosystem/hadashboard/installation.markdown @@ -42,7 +42,7 @@ When the build completes, you can run the dashboard with the following command f $ docker run --name="hadashboard" -d -v /dashboards:/app/dashboards -v /lib/ha_conf.rb:/app/lib/ha_conf.rb -v /hapush:/app/hapush --net=host hadashboard ``` -If you are running docker on windows you should not use the `--net` command and explicitly specify the port, aslo for security reason `--net=host` should not be used so the following can also be used in unix. This will also set the process to start when the docker process starts so you do not have to worry about reboots. To map the volumes make sure you have ticked the shred drives in the settings. In this example I am using `c:\hadashboard` as the location where the git clone was done and mapping to port 3030 on the host. +If you are running docker on windows you should not use the `--net` command and explicitly specify the port, also for security reason `--net=host` should not be used so the following can also be used in unix. This will also set the process to start when the docker process starts so you do not have to worry about reboots. To map the volumes make sure you have ticked the shred drives in the settings. In this example I am using `c:\hadashboard` as the location where the git clone was done and mapping to port 3030 on the host. ```powershell docker run --restart=always --name="hadashboard" -p 3030:3030 -d -v C:/hadashboard/dashboards:/app/dashboards -v C:/hadashboard/lib/ha_conf.rb:/app/lib/ha_conf.rb -v C:/hadashboard/hapush:/app/hapush hadashboard @@ -64,7 +64,7 @@ Raspberry Pi needs to use a different Docker build file so the build command is $ sudo docker build -f Docker-raspi/Dockerfile -t hadashboard . ``` -Apart from that the other steps are identical. Running Docker is pretty slow even on a PI3, be prepared for it to take an hour or two to build all of the extensions and install everything* +Apart from that the other steps are identical. Running Docker is pretty slow even on a PI3, be prepared for it to take an hour or two to build all of the extensions and install everything. ## {% linkable_title Manual Installation %} From d6fe827f475dc4b8e354a2adce58fb2b71fe10ed Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 27 Jun 2017 08:29:58 +0200 Subject: [PATCH 18/42] Add new OID for Archer VR600 and make table (fixes #2863) (#2895) --- .../_components/device_tracker.snmp.markdown | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/source/_components/device_tracker.snmp.markdown b/source/_components/device_tracker.snmp.markdown index d8559db08c0..65630b80fc0 100644 --- a/source/_components/device_tracker.snmp.markdown +++ b/source/_components/device_tracker.snmp.markdown @@ -16,20 +16,23 @@ 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 insances and metrics, like network interfaces, disks, and wifi registrations.

    -This device tracker needs SNMP to be enabled on the router. +This device tracker needs SNMP to be enabled on the router. It could be that you need to install the SNMP support manually.

    OID examples: -- Mikrotik: `1.3.6.1.4.1.14988.1.1.1.2.1.1` (confirmed, unknown RouterOS version/model) -- Mikrotik: `1.3.6.1.2.1.4.22.1.2` (confirmed, RouterOS 6.x on RB2011) -- Aruba: `1.3.6.1.4.1.14823.2.3.3.1.2.4.1.2` (untested) -- BiPAC 7800DXL: `1.3.6.1.2.1.17.7.1.2.2.1.1` (confirmed on firmware 2.32e) -- OpenWrt: `1.3.6.1.2.1.4.22.1.2` (tested on Chaos Calmer 15.05 firmware, need to install snmpd package) -- pfSense: `1.3.6.1.2.1.4.22.1.2` (tested on 2.2.4-RELEASE, need to enable SNMP service) -- TPLink: `1.3.6.1.2.1.3.1.1.2.19.1` (Archer VR2600v, need to enable SNMP service) -- EdgeRouter `1.3.6.1.2.1.4.22.1.2` (EdgeRouter Lite v1.9.0, need to enable SNMP service) -- Ruckus: `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` (Ruckus ZoneDirector, tested on 9.13.3) +| Brand | Device/Firmware | OID | +|---|---|---|---| +| Mikrotik | unknown RouterOS version/model | `1.3.6.1.4.1.14988.1.1.1.2.1.1` | +| Mikrotik | RouterOS 6.x on RB2011 | `1.3.6.1.2.1.4.22.1.2` | +| Aruba | (untested) | `1.3.6.1.4.1.14823.2.3.3.1.2.4.1.2` | +| pfSense | 2.2.4 | `1.3.6.1.2.1.4.22.1.2` | +| BiPAC | 7800DXL Firmware 2.32e | `1.3.6.1.2.1.17.7.1.2.2.1.1` | +| OpenWrt | Chaos Calmer 15.05 | `1.3.6.1.2.1.4.22.1.2` | +| TP-Link | Archer VR2600v | `1.3.6.1.2.1.3.1.1.2.19.1` | +| TP-Link | Archer VR600 | `1.3.6.1.2.1.3.1.1.2` | +| EdgeRouter | Lite v1.9.0 | `1.3.6.1.2.1.4.22.1.2` | +| Ruckus | ZoneDirector 9.13.3 | `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` | To use the SNMP version 1 platform in your installation, add the following to your `configuration.yaml` file: From 6ca606fc46bb6a553cc5a387f147c117377e3fc6 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 27 Jun 2017 08:30:33 +0200 Subject: [PATCH 19/42] Less details for NZ (fixes #2764) (#2896) --- source/developers/cla_sign.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/developers/cla_sign.html b/source/developers/cla_sign.html index 02e6f76fdbd..94965ccd5cb 100644 --- a/source/developers/cla_sign.html +++ b/source/developers/cla_sign.html @@ -263,7 +263,8 @@ footer: true s_a[163] = "Drenthe|Flevoland|Friesland|Gelderland|Groningen|Limburg|Noord-Brabant|Noord-Holland|Overijssel|Utrecht|Zeeland|Zuid-Holland"; s_a[164] = "Netherlands Antilles"; s_a[165] = "Iles Loyaute|Nord|Sud"; - s_a[166] = "Akaroa|Amuri|Ashburton|Bay of Islands|Bruce|Buller|Chatham Islands|Cheviot|Clifton|Clutha|Cook|Dannevirke|Egmont|Eketahuna|Ellesmere|Eltham|Eyre|Featherston|Franklin|Golden Bay|Great Barrier Island|Grey|Hauraki Plains|Hawera|Hawke's Bay|Heathcote|Hikurangi|Hobson|Hokianga|Horowhenua|Hurunui|Hutt|Inangahua|Inglewood|Kaikoura|Kairanga|Kiwitea|Lake|Mackenzie|Malvern|Manaia|Manawatu|Mangonui|Maniototo|Marlborough|Masterton|Matamata|Mount Herbert|Ohinemuri|Opotiki|Oroua|Otamatea|Otorohanga|Oxford|Pahiatua|Paparua|Patea|Piako|Pohangina|Raglan|Rangiora|Rangitikei|Rodney|Rotorua|Runanga|Saint Kilda|Silverpeaks|Southland|Stewart Island|Stratford|Strathallan|Taranaki|Taumarunui|Taupo|Tauranga|Thames-Coromandel|Tuapeka|Vincent|Waiapu|Waiheke|Waihemo|Waikato|Waikohu|Waimairi|Waimarino|Waimate|Waimate West|Waimea|Waipa|Waipawa|Waipukurau|Wairarapa South|Wairewa|Wairoa|Waitaki|Waitomo|Waitotara|Wallace|Wanganui|Waverley|Wellington|Westland|Whakatane|Whangarei|Whangaroa|Woodville"; + // New Zealand + s_a[166] = "Auckland|Bay of Plenty|Canterbury|Gisborne|Hawke's Bay|Manawatu-Wanganui|Marlborough|Nelson|Northland|Otago|Southland|Taranaki|Tasman|Waikato|Wellington|West Coast"; s_a[167] = "Atlantico Norte|Atlantico Sur|Boaco|Carazo|Chinandega|Chontales|Esteli|Granada|Jinotega|Leon|Madriz|Managua|Masaya|Matagalpa|Nueva Segovia|Rio San Juan|Rivas"; s_a[168] = "Agadez|Diffa|Dosso|Maradi|Niamey|Tahoua|Tillaberi|Zinder"; s_a[169] = "Abia|Abuja Federal Capital Territory|Adamawa|Akwa Ibom|Anambra|Bauchi|Bayelsa|Benue|Borno|Cross River|Delta|Ebonyi|Edo|Ekiti|Enugu|Gombe|Imo|Jigawa|Kaduna|Kano|Katsina|Kebbi|Kogi|Kwara|Lagos|Nassarawa|Niger|Ogun|Ondo|Osun|Oyo|Plateau|Rivers|Sokoto|Taraba|Yobe|Zamfara"; From 75f808140256f64b0b0798229d3a5017fe7c4e49 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 27 Jun 2017 23:19:11 +0200 Subject: [PATCH 20/42] Create mariadb.markdown --- source/_addons/mariadb.markdown | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 source/_addons/mariadb.markdown diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown new file mode 100644 index 00000000000..0aa1bfe0df1 --- /dev/null +++ b/source/_addons/mariadb.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "MariaDB" +description: "MariaDB Server is one of the most popular database servers in the world." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Set up a [mariadb](https://mariadb.org/) SQL server. It support multible database, users and permission. + +```json +{ + "databases": ["homeassistant"], + "logins": [ + { + "username": "hass", + "host": "localhost", + "password": null + } + ], + "rights": [ + { + "username": "hass", + "host": "localhost", + "database": "homeassistant", + "grant": "ALL PRIVILEGES ON" + } + ] +} +``` + +Configuration variables: + +- **databases** (*Require*): Listen of databases. +- **logins** (*Require*): Listen of logindata they will create or update. + - **username** (*Require*): Username for login. + - **host** (*Require*): Host for login, if you need a login with multibe hosts, use '%'. + - **password** (*Require*): Password for login. +- **rights** (*Require*): Listen of rights to be handle. + - **username** (*Require*): Username for grant rights. + - **host** (*Require*): Host is a part of username like above. + - **database** (*Require*): Database name to grant this user rights to. + - **grant** (*Require*): SQL grant part for access too. From 18c209afaa55e0849588f46f5eb2f7c774e7bf99 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 28 Jun 2017 00:24:27 +0200 Subject: [PATCH 21/42] Update mariadb.markdown --- source/_addons/mariadb.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown index 0aa1bfe0df1..b5d09e27d4b 100644 --- a/source/_addons/mariadb.markdown +++ b/source/_addons/mariadb.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -Set up a [mariadb](https://mariadb.org/) SQL server. It support multible database, users and permission. +Set up a [mariadb](https://mariadb.org/) SQL server. It support multible database, users and permission. If you want only connect from inside use `172.17.0.1` as host address. ```json { @@ -17,14 +17,14 @@ Set up a [mariadb](https://mariadb.org/) SQL server. It support multible databas "logins": [ { "username": "hass", - "host": "localhost", + "host": "172.17.0.1", "password": null } ], "rights": [ { "username": "hass", - "host": "localhost", + "host": "172.17.0.1", "database": "homeassistant", "grant": "ALL PRIVILEGES ON" } From 17f46a4ef7e16e3ef12eaca6267ffebe797389a1 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 28 Jun 2017 08:49:46 +0200 Subject: [PATCH 22/42] Update dnsmasq.markdown --- source/_addons/dnsmasq.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_addons/dnsmasq.markdown b/source/_addons/dnsmasq.markdown index 31ddd01fcfd..fe4687f4412 100644 --- a/source/_addons/dnsmasq.markdown +++ b/source/_addons/dnsmasq.markdown @@ -11,6 +11,10 @@ footer: true Setup and manage a [Dnsmasq](http://thekelleys.org.uk/dnsmasq/doc.html) dns server. This allow your to manipulate some dns requests. I.e. that inside your network, your homeassistant domain will resolve with a internal address. +

    +`interface` options are for resinos based installation. On other system you can set it to `""`, for listen on every interface. +

    + ```json { "defaults": ["8.8.8.8", "8.8.4.4"], From 073f8b61c7e150ba774a7d0f69148d83a670156c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 28 Jun 2017 08:51:39 +0200 Subject: [PATCH 23/42] Update mariadb.markdown --- source/_addons/mariadb.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown index b5d09e27d4b..f4ef0350eda 100644 --- a/source/_addons/mariadb.markdown +++ b/source/_addons/mariadb.markdown @@ -44,3 +44,12 @@ Configuration variables: - **host** (*Require*): Host is a part of username like above. - **database** (*Require*): Database name to grant this user rights to. - **grant** (*Require*): SQL grant part for access too. + +## {% linkable_title Home Assistant configuration %} + +Use the following configuration in Home Assistant to use the database above: + +```yaml +recorder: + db_url: mysql://hass:password@127.0.0.1/homeassistant +``` From a1bfc0ae47430953d98525fb2ffa386bbd9ac7f6 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 28 Jun 2017 08:52:26 +0200 Subject: [PATCH 24/42] Update mariadb.markdown --- source/_addons/mariadb.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown index f4ef0350eda..548d4d0c145 100644 --- a/source/_addons/mariadb.markdown +++ b/source/_addons/mariadb.markdown @@ -18,7 +18,7 @@ Set up a [mariadb](https://mariadb.org/) SQL server. It support multible databas { "username": "hass", "host": "172.17.0.1", - "password": null + "password": "securePassword" } ], "rights": [ @@ -51,5 +51,5 @@ Use the following configuration in Home Assistant to use the database above: ```yaml recorder: - db_url: mysql://hass:password@127.0.0.1/homeassistant + db_url: mysql://hass:securePassword@127.0.0.1/homeassistant ``` From 834d1e1bfb7db5a2d08261ebbcbe303911a41d69 Mon Sep 17 00:00:00 2001 From: Alok Saboo Date: Wed, 28 Jun 2017 16:03:36 -0400 Subject: [PATCH 25/42] Added scan_interval defaults (#2898) --- source/_components/binary_sensor.command_line.markdown | 1 + source/_components/sensor.command_line.markdown | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/source/_components/binary_sensor.command_line.markdown b/source/_components/binary_sensor.command_line.markdown index 3a612d04b3a..05a482a5fb1 100644 --- a/source/_components/binary_sensor.command_line.markdown +++ b/source/_components/binary_sensor.command_line.markdown @@ -33,6 +33,7 @@ Configuration variables: - **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON". - **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF". - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. +- **scan_interval** (*Optional*): Defines number of seconds for polling interval (defaults to 60 seconds). ## {% linkable_title Examples %} diff --git a/source/_components/sensor.command_line.markdown b/source/_components/sensor.command_line.markdown index c0a39d4093e..ba1bee321aa 100644 --- a/source/_components/sensor.command_line.markdown +++ b/source/_components/sensor.command_line.markdown @@ -31,7 +31,7 @@ Configuration variables: - **name** (*Optional*): Name of the command sensor. - **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. -- **scan_interval** (*Optional*): Defines number of seconds for polling interval. +- **scan_interval** (*Optional*): Defines number of seconds for polling interval (defaults to 60 seconds). ## {% linkable_title Examples %} @@ -104,7 +104,7 @@ sensor: ### {% linkable_title Read value out of a remote text file %} -If you own a devices which are storing values in text files which are accessible over HTTP then you can use the same approach as shown in the previous section. Instead of looking at the JSON response we directly grab the sensor's value. +If you own a devices which are storing values in text files which are accessible over HTTP then you can use the same approach as shown in the previous section. Instead of looking at the JSON response we directly grab the sensor's value. ```yaml sensor: From beba8952bcd70d279b96713d681dfada70ec24cc Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 28 Jun 2017 20:14:12 -0700 Subject: [PATCH 26/42] Remove brand name from the title --- ...7-06-20-things-you-should-know-about-senic-covi.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown b/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown index b2fec1960fe..0b8fe36efec 100644 --- a/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown +++ b/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown @@ -1,7 +1,7 @@ --- layout: post -title: "[Update: fixed] A frank and serious warning about Senic COVI" -description: "The picture painted by Senic COVI is not as great as it seems." +title: "[Update: fixed] A frank and serious warning about X" +description: "The picture painted is not as great as it seems." date: 2017-06-20 01:04:05 +0000 date_formatted: "June 20, 2017" author: Paulus Schoutsen & Robbie Trencheny @@ -12,6 +12,8 @@ categories: Public-Service-Announcement **Update June 21:** Senic has removed our name from their materials and have [issued an apology][apology]. We wish them best of luck with the launch of COVI. +**Update June 28:** Removed the brand name from the title to reduce the search ranking. + *Original post:* From a72c71cace88f546883cdd5a85e30637e1147e78 Mon Sep 17 00:00:00 2001 From: Alok Saboo Date: Fri, 30 Jun 2017 02:05:16 -0400 Subject: [PATCH 27/42] Fixed typos (#2903) --- source/_components/axis.markdown | 2 +- source/_components/blink.markdown | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_components/axis.markdown b/source/_components/axis.markdown index bdf70c5a40c..bf4736548d3 100644 --- a/source/_components/axis.markdown +++ b/source/_components/axis.markdown @@ -23,7 +23,7 @@ Home Assistant will automatically discover their presence on your network. $ sudo apt-get install python3-gi gir1.2-gstreamer-1.0 ``` -Depending on how you run Home Assistant you might be needed to symlink the `gi` module into your environment. +Depending on how you run Home Assistant, you may need to symlink the `gi` module into your environment. Hassbian: diff --git a/source/_components/blink.markdown b/source/_components/blink.markdown index 21cd6b4447b..217dcce7438 100644 --- a/source/_components/blink.markdown +++ b/source/_components/blink.markdown @@ -36,9 +36,9 @@ Once loaded, your front end will have the following components: * A camera image for each camera in your system. * A binary_sensor per camera that indicates whether motion detection is enabled. * A binary_sensor for the system that indicates if the system is armed or disarmed. -* A sesnor per camera that reports temperature. +* A sensor per camera that reports temperature. * A sensor per camera that reports battery level. -* A sensor per camera that reports unread notification (ie. detected motion events). +* A sensor per camera that reports unread notification (i.e., detected motion events). Since the cameras are battery operated, the images are only updated in Home Assistant when the user manually forces a new photo. This image can be updated with the `snap_picture` service to force Home Assistant to request an update from Blink's servers. As a note, all of the camera-specific sensors are only polled when a new image is requested from the camera. This means that relying on any of these sensors to provide timely and accurate data is not recommended. @@ -59,7 +59,7 @@ For `arm_system`, the value sent can be either `True` or `False` and will arm an } ``` -Arm camera follows a similar structure, but each indidivual camera can have motion detection enabled or disabled. Because of this, you also need to supply a name. For example, if you have a camera named "Living Room" and you want to turn off motion detection on that camera, you would call the `arm_camera` service with the following payload: +Arm camera follows a similar structure, but each individual camera can have motion detection enabled or disabled. Because of this, you also need to supply a name. For example, if you have a camera named "Living Room" and you want to turn off motion detection on that camera, you would call the `arm_camera` service with the following payload: ```json { From c27559866d332bd90f0e1b44b5a8629238b4f7de Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 30 Jun 2017 08:28:23 +0200 Subject: [PATCH 28/42] Update samba.markdown --- source/_addons/samba.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_addons/samba.markdown b/source/_addons/samba.markdown index baba4d50372..bfca0c16c01 100644 --- a/source/_addons/samba.markdown +++ b/source/_addons/samba.markdown @@ -13,6 +13,7 @@ This allows you to set up a [Samba](https://samba.org/) server to access hass.io ```json { + "name": "hassio", "workgroup": "WORKGROUP", "guest": true, "map_config": true, @@ -25,6 +26,7 @@ This allows you to set up a [Samba](https://samba.org/) server to access hass.io Configuration variables: +- **name** (*Optional*): default `hassio`. Set netbios name of hassio device. - **workgroup** (*Optional*): default `WORKGROUP`. Set network workgroup. - **guest** (*Optional*): Allow login without a username or password. Defaults to `true`. - **map_config** (*Optional*): Expose Home Assistant configuration folder. Defaults to `true`. From 102658a59a29bd48471d0aa9de92bdebd285ea10 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 30 Jun 2017 08:32:21 +0200 Subject: [PATCH 29/42] Update lets_encrypt.markdown --- source/_addons/lets_encrypt.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown index 2b7d51b470d..022911183fa 100644 --- a/source/_addons/lets_encrypt.markdown +++ b/source/_addons/lets_encrypt.markdown @@ -17,6 +17,7 @@ This add-on need port 80/443 to verify the certificate request, please stop all ```json { + "challenge": "https", "email": "example@example.com", "domains": ["example.com", "mqtt.example.com", "hass.example.com"] } @@ -24,6 +25,7 @@ This add-on need port 80/443 to verify the certificate request, please stop all Configuration variables: +- **challenge** (*Optional*): Default it use 443 ('https') you can change it to 'http' for use port 80. - **email** (*Required*): Your email address for registration on Let's Encrypt. - **domains** (*Required*): A list of domains to create/renew the certificate. From a7ef65a9e4a115459904fbe117018d1d44c1c7ed Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 30 Jun 2017 19:15:08 +0200 Subject: [PATCH 30/42] Update for 0.48 --- source/_components/ha.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/ha.markdown b/source/_components/ha.markdown index a3ae92104a6..ba629a567f3 100644 --- a/source/_components/ha.markdown +++ b/source/_components/ha.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Home Assistant 0.47" +title: "Home Assistant 0.48" description: "" date: 2016-12-16 17:00 sidebar: true @@ -9,7 +9,7 @@ sharing: true footer: true logo: home-assistant.png ha_category: Other -ha_release: 0.47 +ha_release: 0.48 --- Details about the latest release can always be found at: From f439ef6a784e205213319e2e82a8a77600a65387 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 30 Jun 2017 21:14:14 -0700 Subject: [PATCH 31/42] Version bump to 0.48 --- _config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_config.yml b/_config.yml index f75ef6d8ad2..bd0bda31b29 100644 --- a/_config.yml +++ b/_config.yml @@ -142,13 +142,13 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 47 -current_patch_version: 1 -date_released: 2017-06-21 +current_minor_version: 48 +current_patch_version: 0 +date_released: 2017-07-01 # 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-0471---june-21" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): From 43cc78efa00a64fc2a49904aa1128af446c9c045 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 1 Jul 2017 09:42:30 +0200 Subject: [PATCH 32/42] Fix link and update details --- source/developers/releasing.markdown | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/developers/releasing.markdown b/source/developers/releasing.markdown index c4dd92b88c1..efcbf5cc10c 100644 --- a/source/developers/releasing.markdown +++ b/source/developers/releasing.markdown @@ -9,20 +9,21 @@ sharing: true footer: true --- -This page describes the steps for publishing a new Home Assistant release. +This page describes the steps for publishing a new Home Assistant release. Those steps requires that you don't use forks but work with the repositories themself. ### {% linkable_title GitHub (3 days before release) %} 1. Merge `master` into `dev` to make the PR mergeable. -2. Cut a release branch from `dev`. Example name `release-0-46`. -3. Create a pull request from release branch to `master` with the upcoming release number as the title. PR message contains intro, highlighting major changes, and an overview of all changes tagging each author. Use [hass-release]https://github.com/home-assistant/hass-release) to collect the details. +2. Cut a release branch from `dev`. Example name `release-0-49`. +3. Create a pull request from the release branch to `master` with the upcoming release number as the title. PR message contains intro, highlighting major changes, and an overview of all changes tagging each author. Use [hass-release](https://github.com/home-assistant/hass-release) to collect the details. 4. Update `homeassistant/const.py` with the correct version number (remove the `dev` tag) and push that commit to release branch. 5. From now until the release branch has been merged, we tag bugfixes with the milestone for the release (create if doesn't exist). +4. Update `homeassistant/const.py` with the upcoming version number (including the `dev` tag) and push that commit to the `dev` branch. ### {% linkable_title Website (3 days before release) %} 1. Merge `current` into `next` -2. Cut release branch of `next`. For example `release-0-46`. +2. Cut release branch of `next`. For example `release-0-49`. 3. Open a PR from release branch to `current` with the upcoming release number as the title. ### {% linkable_title GitHub %} From 46e4f5a33e44c08a1a500329098f174cb53613ec Mon Sep 17 00:00:00 2001 From: Michael Fester Date: Sat, 1 Jul 2017 23:27:06 +0200 Subject: [PATCH 33/42] Documentation for Snips components (#2892) * Documentation for Snips components * Fix version * Fix typos * Update video link --- source/_components/snips.markdown | 93 ++++++++++++++++++++ source/images/screenshots/snips_modules.png | Bin 0 -> 40124 bytes source/images/screenshots/snips_nlu.png | Bin 0 -> 49459 bytes source/images/supported_brands/snips.png | Bin 0 -> 5583 bytes 4 files changed, 93 insertions(+) create mode 100644 source/_components/snips.markdown create mode 100644 source/images/screenshots/snips_modules.png create mode 100644 source/images/screenshots/snips_nlu.png create mode 100644 source/images/supported_brands/snips.png diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown new file mode 100644 index 00000000000..63e8009af48 --- /dev/null +++ b/source/_components/snips.markdown @@ -0,0 +1,93 @@ +--- +layout: page +title: "Snips" +description: "Instructions how to integrate Snips within Home Assistant." +date: 2017-06-22 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: snips.png +ha_category: Voice +ha_release: 0.48 +--- + +The [Snips Voice Platform](https://www.snips.ai) allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on Privacy. It runs 100% on-device, and does not require an Internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management. + +![Snips Modules](/images/screenshots/snips_modules.png) + +Snips takes voice or text as input, and produces *intents* as output, which are explicit representations of an intention behind an utterance, and which can subsequently be used by Home Assistant to perform appropriate actions. + +![Snips Modules](/images/screenshots/snips_nlu.png) + + +## {% linkable_title The Snips Voice Platform %} + +### Installation + +The Snips Voice Platform is installed on Raspberry Pi with the following command: + +```sh +(pi) $ curl https://install.snips.ai -sSf | sh +``` + +### Creating an assistant + +
    + +
    + +Snips assistants are created via the [Snips Console](https://console.snips.ai). Once trained, the assistant should be downloaded and copied to the Raspberry Pi: + +```sh +$ scp assistantproj_XXX.zip pi@pi_hostname:/home/pi/assistant.zip +``` + +and installed locally via the `snips-install-assistant` helper script: + +```sh +(pi) $ sudo snips-install-assistant assistant.zip +``` + +### Running Snips + +Make sure that a microphone is plugged to the Raspberry Pi. If you are having trouble setting up audio, we have written a guide on [Raspberry Pi Audio Configuration](https://github.com/snipsco/snips-platform-documentation/wiki/1.-Setup-the-Snips-Voice-Platform-on-your-Raspberry-Pi#configuring-the-audio). + +Start the Snips Voice Platform using the `snips` command: + +```sh +(pi) $ snips +``` + +Snips is now ready to take voice commands from the microphone. To trigger the listening, simply say + +> Hey Snips + +followed by a command, e.g. + +> Set the lights to green in the living room + +We should see the transcribed phrase in the logs, as well as a properly parsed intent. The intent is published on MQTT, on the `hermes/nlu/intentParsed` topic. The Snips Home Assistant component subscribes to this topic, and handles the intent according to the rules defined in `configuration.yaml`, as explained below. + +## Home Assistant configuration + +By default, the Snips MQTT broker runs on port 9898. We should tell Home Assistant to use this as a broker, rather than its own, by adding the following section to `configuration.yaml`: + +```yaml +mqtt: + broker: 127.0.0.1 + port: 9898 +``` + +In Home Assistant, we trigger actions based on intents produced by Snips. This is done in `configuration.yaml`. For instance, the following block handles `ActivateLightColors` intents (included in the Snips IoT intent bundle) to change light colors: + +```yaml +snips: + intents: + ActivateLightColor: + action: + - service: light.turn_on + data_template: + entity_id: light.{% raw %}{{ objectLocation | replace(" ","_") }}{% endraw %} + color_name: {% raw %}{{ objectColor }}{% endraw %} +``` diff --git a/source/images/screenshots/snips_modules.png b/source/images/screenshots/snips_modules.png new file mode 100644 index 0000000000000000000000000000000000000000..60235f65681e1a0e445bcc8b46b7de578a47669c GIT binary patch literal 40124 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%0DtkaA9u+=3^{HFAJCn<*qLLJe(0~ zdLcEd82@?J>z7I>o_MK_6QN60LLVd77k>UY9bcV%A`h{ zL!=G423h>Sj4M8D*YqNG-=5REw0Qk44PE@`YKf!h88^v?pz^z*k zj7<5@>&zC-3hf+3fih3%iYcpVvp1OqlIA!##M`Xnil*!@-p~z1B*oWRJz@fMo$b=v z>pDUxaK5csNR72LH@x2}ztP$?Smi?}-fPr!S!EWA1Fx$a)m{>Ur; zBD!9>}SXs zzOpL(7<{5SLG}jz@{G^4oAkQt>|VMY6|_S84^HnB>|d)3O}WHi8^4!t1YBbi3Ej2k z!9d$$QopthGQ)ITpjfH-R`B5ujpm~!VY<|UKa<`LQLX`|&a=^oe7#Lb-L~lK)Gu7U zept5KeuV+Kb+llURnVSC#?E?n)qsbC(J=cor2^109pWCv~7mhM{~S zFUm^oL?yrU=Knf>5_)o+t=f6MN3ZqO55Q)H2Ypc_|3-){-B1YoZcBh?GtLE#>*XTVk!U8z%46~aDuo_erH;Bj!aYWefx|VMg zxe_KXn%9IahJ4v(g6A#n!a)KskI+U0WQoCvXF*Ah4K8RLCH)52N7rnc6sdPuT!0Ig z7luevGAUn89~UNHDp0S@V*vpb^>T`AGNv;*F0ouyf$%-)iUreI?#2`kttb!B@(N0! zJ_k%Jo91Prh|%E!M{nU;+ndR$>Ja`fmMjB;=CnE7u$SO2!{WTko^HannqdXBwHR zpV&q;V7u4OIPWsXni{=jSQ9C$UJ2z!yV6g8c}prt(05SdjsB_Iil+=8s^$v4HC9cC z$WT(@{}l&){cmG0?AqDxcmXmKV;c2S=6~Q;8uX7u{*Ces)wQAg7jcdU&SV?Bg0S-2 zuj|{_UTw3VeKgKae17nwxsf_~x(b$rB?Loo?@AXNIt1-~x7#l7HD2M=vmRtl9`|_! zUm`)_pV5kCZ$OvR#w12{!+jIC~`RzS?1Qjjl3U0OjqI z{@W|{XE*1cC3kNwoExg1l$pPp|H6kcqhv5!K&ccCNv!z`idV}Ea;<8E%EcPrLpw?R z%mS4XGH;=e`E6VZPAL?F1W2oh8(RNv3?L+&q<`-xQA?HR_L)!R8WoNH@S)x12%7^w za7ZQp1$V#DHkj)lEou~Ix8h@>5f6*9?IPumH1v=mZ1fsN`M`(Nm5~jGp~H!+uPf+- zA$BNKRTyFYpe@d#;SK5VcEgPi>Fx5ppK;`!DTLT_b!7#K8et!gdxCbiv$6=SFWXMy zm|ba=e#lis%mOcu-M6g9>dt9XK1$_?NoFsNP~v_b%ygv0Whr+12ZL1+yulWxm-t-c zkx379jE;V(pvaz)%F&eJx%CcoPdQWHJ zPA=`E20_R{Ky0SFFXqCs1MWY#j?UL#FahH-t6?=Ll z<$|=C{?&0;&_LzSR~VC<>*s*n0n?9!RpxF-s_MFkPxg(BXID<&Xb2N+#WnK!MW|Bb zDCJ`7{z~Zis#SPa_?P(5a-~Q*bHe~?Pd$gesqbT71`1W+B{_<$28bTn@;(Kr-C?`W zOhmow7Sj&8<5C-a)%B*54e@ed_$YZA2hndhFKeH5@8nZ4!~Ruw;RipEJdD@5pUly@ zg6x(oNTEpNS3>`5hu(Jk*x>8?9KI0md}n-Yi%rJ9a--sJ?=P){oGz!kPd95HHS3ky zB!CRBPQS7XUbpvMbu#|M40J*~FiK1=Eqd>6BKIE4>N(=|s}Ew2v~YZGp49~EiMAMx z@(4BatlMGnaFW_M8zaw4nWG*jhoZ%#KQ`uWthdZm^Ac(rEvyu|dHaR|u7D&YMUAD>GS-l+)}-0fQ>w_k8qZ}59N zUq`1;XF<~t(Z<){Z5M}n9VN31eJ9dVl1*?9oTz)@(q&U)|JTsacd9Vo)qF#fHVGXzi!e<%a! zGWE}9E(MW>Dtr}s0esMnxcAuH*?7}%xJS@-s8I6yd^BMs8>*A<8t5sym?8G$oYaV^ zO3MTPXL=|!P354UaVW!fywaV!;_!#z`3+ULDl_2pg#Ma7+SDL)HoE4iLEVj?Bx#qw zv*5E}UEmCRZ$aeR^^1GD$9+O=U9*z6lN8sZsPeS**X6U}M9x%dRtc-TCX&w#EfMN5 z-UGt+_0m;ak5~Dbc&Z?gUFo5ax2JLDUuzUq|MhSR|2<;*hw})P`hEZ3=mU1RZh3fo6 zEe>0|ocR~Pk)%LP@}QxzvXGON@~vs5KeL=hTBf!rlgg+lcdS9skZlA>L~x14Px#tT zgk018SIFq;fi>!}tcNdeZc2GAU7&ky;kz$5GQ1tGdfD5m%r`#g6!vYXUrLQ`1K;17 z^y@-~?4dN-?&j{`u<|fbxD)sdZYI;3zjENIAfZZ^C^ow?aJy!?vq~m})Nz1mGbAfO zF>5PHazS63RVMjn|84n!Z+$R-oDj~aa%}_ecJd6XGt4{!6Ax{83P?hHv|0jf74E z1TK|HxMYSEz5y3ftq0)4L~{-TkQdE-?p|B9sk_|Ap@TQ$b`lEJ1+-dk1!!zRisoTp z*C~%!~O{souuYF!53L$M6?^f2>-!bR}V~Rd_H&g7xR})pC-!#*1%iv3ilFh72q3 zu-J6^4vP#$Yvsx7O+Gkd@UQE;>UsH+b>HtVWj&@@aHF9;FNA0rm@tq+L>9)4Ykq;x z@yj!V=XEaQodgZ}yoD89`o7lCj7CbXh$&fW{)=CJ4PM$I;E(08&&8mM?QJXZ5tD~{ z(5>@dwylo#HBq-Z?fjq4P5BM4mVP*C);jv;Q5gasXT8g0>?I{%GpdbAR%I_ji3?WG z4US2LrgOXpwuhq}U{y?Cym$nj!; zor-}1B+TMoJe+z zx&mbwbO$s3aQ)hkfcGf@K3snn{;4*=tFwQ(b@c`w64+9h+oo>1Usu>LHm4p}(bll= zqzQM_XpXUUA+pe^Y(y;n9+<=en=g+y(RznvM;)WHF&F7>laXDc35|+Y7EOH+dn>mt zpi{vMyQnQUYtHRVXRX+(`BiE-*~_|(d^$vYVAkN=-#_z3+awB43DSB4)9?+gd1)Yl zHO?3Hr(jQXeFZU3_C7MnO9GT6&ZQr9<0I@tBz@kUttjg}w zVtSEfn8Unqd2_A9AlIG|{>ctaB0_9cdUi?9OB14q?F7ASci?7RTsLr_=8F6{wTJ3nVax2_m$5klY}209z{g&S)k4~h zYG1hmpAQ}z%8wFn>BkDezw1)3n#<)n##xVcr=v<3xp(CZMmdjslivW>ybTQb`2O=| zl6j3;8Kp;&stNMBhu=`YR0o|xBpZIc+qA+dj~SB(V%)Xh8XjYtSldM~bDqqxfRJQjfD7d)MgE zAW>;j_I&SyPbtblCG>=eEwlr}o}uM>V(O7T0-qC)N{Gdj5n6Aa!0D+l8pH2rCw^17 z^}@wf){%i=WcrzO_ZR-vYY4{LD=IMTOkVB3G;JN4&NI>veSKvf>DZ;0<|Sd4KZ;Do z?j|M5?M=Ei)d$XI=kto8?I+3t>-8b5VuinTA|Ey_awrWc3Paxbj)u30wH7s7Sk6=y z>XDC1K8+ELUhW^Xg81ab8wTksg9%w8{5XMc0(PzDZ92_VytP%_IoC-z_D%NGHYK=j zJQ@v-@@;RF5HaL_fUzr71l5yDh+Cm-mdX^0JyB{k&y|4D3-yj@S zYF-;{IQ{O0t+q?q`DB2Qb_+Qo&Q5VSzUU%#^6}CBvvzIu^7uLlr&<$a5lpH1zLNMv z)QBe^u3hQ8=2qm<@Q9}Lo3prv0_U*-%%X$uX`Xv;@Cz?QS@X|HM7V^e(Gm`!3JC^aQcsnSs;a@4vP&!k;sG9R}xv~#;-;ftAeVRW>{V#*B53SeyxZ` z$*4#8fr*^kK!BQh4n`8-bt1u;5V)pSJHZqa4d)ce9v}(l1&c58V_UQ={aJacQ7NBV zUTM2Y1nNNanRxW2z}y4M{8aL3{7RuJ7ablNLpZnGh9MicJSePZ%6aPak{}vx$pI>mL*m%U zH+#VSkxEi#6j+mfJz zhX-P5B2l=p^z9N%LCPyO7|&mtHNBy|-Fo+bukG>9_c2a~ZVOqzzZ=N`EE&*;Z)J z!B^>SQvryz)pS9tUwoldm9#t@J1|gJURWJFM>ndIm%un)Y2eS;I3WJ8z!oMvHz=@b z$~LQiqt^S@oGjMWHL)E6_?2 zZh-zAvq%}#Pm3*l`Ga6e`1+yd^6A9A(L(9oQ8<%S8n#zQ$;DW^gH@FVejOnS>6Mk< zPYS=idiNYyUEHI+cKj#~x1`TftB^Uh^XZ8dIZWnD@6GecsZ=S-?P#BzdU^vId~Aw% za)zw9zCEAn;vb);|Md*`*Yb70`ieLF_VvYVbk};Td!cN|KO!9Kys2yb#i$+9!PDgs zR+H1xu|{FL!Svv>>5I}sfi}(1(NnLJhSI~p3(mQAh+%?hJsLbpLKRS=(n`-sImK-s zqy!T+ukR0o1Ny}lTlCq`d4yk<4(FE!znq$p3zet|fG^qB&*sOJXuC;gw^O!;cIRRY z2-Wd64*i8ePY+@m32-eO293CzCh?yR_Na%cxX7Y96KusPvAtw;SogF-sg{zd5Q94v z%U(y7(Oj8rIa5hQLsMU^TPqeA{b!`!G2&_X{4Ng7(XnppT$p9=H!yhQa`pR=I`<-T zbl`a45eZwhd~={rgXdtozv<>h+!KD@m_WB^=h*U=dsqLu8Maui`X@A-kA~ii>m~pC ze8Fvh=IxZdg>%{9H21~V<@ZSl(R1?hF3fDw#Z4DunocL9)T+7J_{~&QN zZuH6Nm19_V3CE0PjWUa+euc}yeql8XCL*-*)cPLmUw7Ka-hFm}B*eX_6B_<`e(i1t z>ag4PO`P1P1kIY}FykP|-VfqvL+&3AmvK|g4AYKJ8e1zGE3=?=upi&PQOkW%QNa4b zNzwJ>!v}Jaz87~?GuNJH8EzTcim#Pvd#$P5lw>|w6Dj@(&Q<0G_YnW zfD3kS-F~p(DMPwir}Q*-zr>%JR!YpEoNTjyoQ92&#dt7+6+Y0{i!2JVWO>SQQ(`x= z+if>=%~-VhU2U1?dMEF53-$S~EwGb-YFYUpGlV_l=4GDF;fud**G#}VoD#dqY?gM{ z21AxhTv2kN$@x93btPZxc!qj?YyF&9a_aF3{MV-w5AkKws?c{>l&(?J$o0 z8}3HZ60LItMVJ``)fMq&%_Q&oj?tR2&qcA%{dHuY%k6F?bOFVOh)pdScg`8=frLKF zmGHqDt`VkV6LHH!W8FTxD2Im}Giil^`{zLt9_x$mkxsaK4G*2$9v72N{c}#W>6+vo zHgnUl;+;WvWehnj1%G|=(LOV@3<^lGv8{-I!l4|JyC1}zv8WU)rSdGeuMtYVH_1eL zCDXp*+K0OusqC}88p26~!#;$`S+0r0X|(ff^0BTvcZqHHl2!%@ZD>r0Ohw|1Zln@* zC0E=WEk)@iH|by#;MP7B(d<#SoLexOp}Ay8RoczrKF*xr2UUr5w|@==e6-(`D+p&tx`fmhcj1#<}nM-#6sT<*;DQ z5?Y|BIq_~Mr8)Oz)+@c+%T_PE+Sys9>{fP=r{GOZR?A}3eY(a}v(4uw&51tev)}&e&Kar2rw7OR%PD`N6U7sF^muRXuYOrNHzL zfw@y<>T*Le@5TD+Sk4ZQYH&ae>}V6f;)q5Qko#Ob%1WmidFHfgEhd*6J62>!*nZ0M z*lw63X?Jq5Eah;Ls7`*n4h=Gv6xJz;B~_ojdP-i3>#oxqHJTpZ*##E?=lo`fUf{;! ze9-sw#lEd}_*3b;a5u&6yS@Oe-MDYyH$dfN@p`0kD|nv)J2Zp$D=KIl^$&su=4h9h z)Q^BEK{tu`N`v3(4)2j*3+g+Mk@-rtpU*1Gpozr@8)|yVv+RV!IEd#(?QeS<+%;iy zv%#ah2Hl0KBY-4-+2Olb>g_3Kw2qr=`+*BMfg(#OQ`@E$7zXxn4&+o@;V(U_E`+aV zUU)UFFfJL^Fx@%s@7q_2-%7@p8MlMoDxPQ0 z)7_p0EtPain_0AgbQ&)=w}6AA=^DtlHPBRv%|m}rg^T0KMQV;=`$La3e^>1mn^^95 zULS2T$FE2Kqe0NA5$ap>0oS-!22Hp1Ro`x)a3tDXd#P5zqS+NXPb$?+>VKHuYBYFf zS*b$%D<*KoQEO^)`PUKH?p-Xp(9BJ^b{6HHVs+xH!cVMn~}%- z+Yc_Yik=s$Aln)i_}9$^V1<2uc{d91Jl~zGC2%}`l|U=DFJ{u;QM<#vu}aYY{YFnQ z3(POzla?i%t?&i^-dQ)QeYBAvgmWFuHA!hY4q-`I^RSgyo*1|_waE&j+ zHN2tAJeoMQ4>CR3AXv@ZB46e6NwyKPfZvHO>W^ru$--)r!p84=yvg~S=_PGie}|0BY>G7Gpn7qu3R>JC6Jrjej#hsco;cR&3d!d_#NkH(=kYFL4dqNCG(D z1216qa1jI0bY7DzbhyJReLIwdIp^v1x!-WHnh7egKTR%1m2ipLnA)rBXHYFo=T>-& z4DQE*6G>trQ)RPhgn&>@8ahlDipJ|>=%A69md#rs?!Id{qZTZuldZD{aRg{LLM1@n zgOVJ*;XB_!4iqSm*o!Mjx0<~tVL>rGb(#^G(c^MWlkX;4m~m@S=Tgd34H-M zy}D2m1&}G%u}v+LAS*5w%tud~R`gpn_g(GlSq4NjN)JvNmZ=-p9j_^TsKQ|6pPBLF zo&o<^uMQCn(!pYa%c{C(>O4VkzsX}vvu|+(*_Lka?yYU2fg3#>&h``YPt$^Lc^BHN zG_ohl23xD1Mq{S3@9#1hO3=$ z><>n)ltH72D7K%tl>if_7hZ~bD8N0Ok(PQFC&;*X%` zRMX1kUiKS7^26s}<3}WeZ#`p?XmN@{2YcuWFlf!SL^CO6AnKBur$0-CVc*~V;o{HB zduzCZ2CmWCCgkykOae=AQCM&_BBO4eL1!+uV&+?|uJJnrNjRoI=~=`SrZv)XzVpBICG!r-{iRK-> zg$8@mt$Yl@!}&nWU5%z3kFGLx?~GFyp;mI*T$>SZ^x6Ng>XnhNDp`{0 zUkz!r7$&5s>W4rTl36}x_`#tw|BtYyGokjkz018oSHF(s{bA4Z1&6frIBI1su_T^| zg>*jVcaJE2gLm_6(#}`zq|XK#jo|NQ!c(FXY8(mTiU?h2;*bzO*hhIWx5Lafnth4D zvj*aEa_;F>DW#`TI~5fiv{@2V`(D<;2#Au+Nl|2>T5Cp6t@Uggl=Yoifuge=&bdOtqt@3wDhTBK3( zw2`oq=3D~!&-Kvn%~}K0`Eu#)M%BayytU_Iu4QMo{DLd6Z^xo7U)hHPbXuO@y#MX#_2QJQM$zhMye^xJ!dX7bCy`-V_+#M z!ICP7@qLblef7;sLR6xgz@?7_S2YZ1vCCMIa|FXx1o|QK7|9ax{wO%8<6`nGz|?Kx z=1qq=>8T6-7qiiMZ0_YQIQ0+!6bvw}sA;uyHk!GIl)I@BN9?f~>J^Psi?*wUYFDW7 zyflp8PMpZ~8clu`(-jDd9T2ZMEL|vjtY)XysdoKmN^GH+3@J8jOt7QY8`wHv0%>v2 z*a{TzOl-hp6^3Y*nIa2~)W5PcFE2}h{HKF{H%ZmXpw1ft!L1zBv$g*I(!pj$1~_-J zF$;QM$Uff1`ZB@g6_hkd7TV104%HbNEi%l}?62?TK2_7!)drMZenPk$@fa3dkeC&imEh$RMvA|nDA7-N@F>+H z;ht-E3mYCpA#`WUt(14zao{SQdk$%yD^h7^$!o-p0zyEwW6T$fEq;+pQBUafSodme zJP}RAC3`4RDM!m_H`UBoXmMGz+`9Q`=^^BL_p8}`be(7Ku^Jo7IC=WL!iCTvI?cfu zp7;S9>{bBrBH?dyy|2@$3{4UP-xSN*yXV9#9nFk*he_QO$7JEoOSYgU4ukyI;fp7- z861_0b7}Fte$rPP9p_jp}lM1iWUzh$*~8__viI8H!;Y+cgL_=f^Rut+*O$UOrGPqa1CoI0QA}Sy@l*HlFOvrp zMS47FQhGlWanl(#u1^S_*=PoEJUz=a!GF%+NlLH z>!oyL#y{bZCBJVso*c&`hb2Rq+B}JW47UChAX$~qy30?Z-N#rPhbPu4r*MycE~jx+ z@CocO6-|fzs_S{@(535W0v?_5^TXh7F4TfEBs*c43<17>JIXV!@M#3 zES?gT+$jwya7mhG^B-AHOc2t|oM2^!puZe%qVdVl(BdD>>~{`66c^QmF$=C9xt2K^Pd zu~w@?%6zhf8;^riapEyH7;o{;|6|1qwRz6b#8*{aTY;PI52wFBXY~{_=9COpY6`7X zM!s8aFOyxwQTF$WIZXFmX)m(y7J{pG#xpd#*%U<`>T`Ox9@2VlZYs7f3CwA^(2Ak~ zjc-iLRU4D^pC%8K(!iP3q-)3?_|yf8zOm{Q>}N?5{YK~7Y9mPMV1xA~S`SMPzqbmI zaM!SbZt0PLRjI(==Asvdp(Y zjr75V{gp4?|MXVsTcAR^+>eBGOgX$yPJEAzKo||>7#ZPs^S3^nqm)tx4VJM6UJY%Z zOD)jCB;O8uapWFFET`PWv;2~tMB8)uHrOzh&+U23w5-RP6-LUn85U5Tl8u>sxxX;i8phqU@16Wx)o?sdZ6UBGt_c|gFfTGInB3OYydQQ3)t;R7>sw{ zf|XTSYY+E<9XCxYb;#@;g4uDQt$?O=z{!I%X7y$1oUoQ`GwNvyI-EY^bly9NZk`&( zvyW>~e=YLC8hydWC$Hv-br~$cTw<|U&WA+zdZ!9GBWAr!#b8YZtQ=EdI>WpLS$|ch zUlY}xYy#4C>lrr<3Y|IZ982$=Jmlk2>6uMG1Gh92@mUXl)W%ymoGW}glny(VBqOniMXlnh^~x6eAz6okb%g{ z-SQ!^^DFJfJyIEw2#M0mDeuIJ4yK!x)sx_p`^A~JHlY~3<87Cr+$;ZRvEdk@$D47e z(RlUFGb#$vXQ^4_dilijHAbk0o1k#Bd+m^0-mP6)o}?Q|zgc&Mh4#F_s?4B=ykHBu zuYDKdf5_uk7~Ws7mZ-AsS@yo1Sv&(y@70XCRiYr4=9~`7Y*AgooD{4c+Vd>yI5f{H zv4j_I;@n91TdNewT$~f5aZJ6=>J2a6PdUZL=oRDc4-7Go!|L$3C(#f{MsAf9u*U3i zYELgMZxF@kH)5Yo?usZIhW~MM$Sarcha!?=ZmRI2%O|3y8cr^>97Ud7q!!Wc=lza0z%k9nojxz6+;Xj;!xy$&xY38snGPy9x# z)0g)2=YD@asig{M>v1&m z$gJP3A2(C0flldvviY}GWmnxk&LA~UY!YF1xxCmTvQ}5`REN~=p)c)ByA^4F4Ky>VJTJbUOqFbiP+O*duAgON#^O;_)1}2D8O^MHU3#av?V0g=Qu0TgTOk#rfP0 zc1DRGp9NfAtJW4e$VjjgubZa+PYcTj?pk*z&-0xEb>p`6zYKwAa~rkeiasj=<9138 zin4UOSd*3jX7i|5eHjL1-3SsNN%x!TV=J)wUwQO-d~MU ztrV%z09(<Cy+`45!fMlqWH|5T5JkF7|-mo)DYl0#ELa zGfpau^FVf(da_+4kE*E5c2yVSNK=EiJ)0jYmXsHX2pp_g60h(^T3bzm9$=V~N%?{S46g!(-)NFXaxZ=J?guIjcN3@q8Y3@jj&~X!}CZcGEG^#D4kt$d^~akB|lD zBArpelHFB#veP}`_&mSUJlvgeblna}f8r#Ja z`fTwP7XteV`?#s|oin<`CMz~Jmvg63vx?Nx8?Bc7|ES%wu43A`W z)i_#I!~c5+W%h1pRdAV@{S+zLOx%NkIsBc|f-*-^ix3OAydft66E2HY2j3uoY$%jtbR3-A*=;Ef4T)j5H>&d6W=Sn6a#_5UwyOkN8_|DAMs zV(^v^In}?YrUxvgS!>h9{V}h^JnD2 zUq?oCt@?q|DuD+_!1{*K#eu#4$sU8(jx{8oVNJIh0KN4igbhL%#8^SAOr-ler`rg- z;{?sXkrEPIC6{HrIi*1fKsV_~cKH^({%~2&rlvSX;{OQQeV!ay6~`Lv?r^Zbh{Q9^ z=m7tJNy2ZF{TVe!g(I9q0Qb2OLJjbh#p^oGd9UrPMG4Ww-9YZ+=-fJ?@%N z(Yaj7mvL}Q)(GQHwhZQDR?ktnr&LYl19d8L_Z&8_dk-6r1KBX2!hyqRdKQ>zV@Yhl zVcFp6!Hq0mneNf-GXWR#?+XHBq}O2?3Q8<@9%)>Z3PFB#1Npwq{c2_wY3d_e9$Azr z-ukgi*eYNT5B0N()9VnQ--Ib%7EZpAW>>)$iIGy5UkZmZh-Y&!>Y(oi>GII_t)r^` zSIP>Djngm=q?QM(gCciJo+9@>II<61D-{cNc^fbNAk!##V;$ZHhD(y6wnND45bnl* z;2LDIw^wQVn|^_bNjrN&xa`qf%>;$`0y`w~hGBDXF8|VslRfa*#4M`_`!Kzxb#j+Nu~AS~0iSwsns2!Chmn zIsCzotoRU!V(pcW{^n0uC&0Use0~y}wPWjFl0(JG>WCG#f|>ziP5DAZe62ejHq8$i zYzsBQNE-FNzrUgY#2>g^`Uxsi#wCDIyg6U!{C;=J$^aB;eqGaYZBCHlaBa5TQnYOeQURm)JqEYQ zRvM(usFy7R&7f_X%C3$Ubs7=+ClrS7A>46fN7*c~dv775l!nxX-g_YK;HKIqA4D9G z8-FN)b_jo*--i$KuSVVt`!bH9pLu)^UxgyG`97gc}LwoOSJTthlDMBfvJqN-OTq- zteD!ZdfaFW_t(h(yV8pCIg1K5`}(epjY2t=AB`VAczyf1R4p=_Bz1AH-ItL_39dKw^`67%{^eL zxn|YN)AoBNIE|8wROfNk!|%OkVK(MG0jEG=Oju#ckQ2&;%|5W88BkPHrD5Usp|Q~5u^z-bn>p{ zY-0cSL+a(?UG(A2+UsR2>zJ6ej@^K`i0@A?_X#8J&T-@Vy}n%}h5Yh|h?u91d%1{& zZ7Spb3p2~GJ~8hN2>Kn^JiiCF&|73Db^s@_Z9`Mo>O=;gbADmf$@^3B~rF}HY=mYZ_AB{#U)^7DO z08YR)oWaE=2u{wa)EDr3)pw?teLB26X@?t-rHgr8t$5~(gFK;`Qtq*dPX*1JRZGZu zR`_+cT+7v1Yk6EL=`>?FpUq~hreH+7KUH(r1+1?d(R=eY?cD;p8-Jx3{HN{(FfAj8p{<2l$gdqV8#N$as8g(k7{-Ck0fi^!4+wvU3_NiUL1Y!-xvzC!rD0|h z37htA7{8zPQBV0}ey52?X{E7~kN1i!og&Y;ro&>67L7T)qM7wd3aT%>g7w3}7!v0W zju

    Yl;yxNmCOCt6`x|nOYCH0xsczIR30bDO1#7Lw_pn%^My)NxedC%eWz_oA(dS z=I%N^KgCQ^uKi>>5n!T)CM{Z!qA+w^f`S^LxU!f58f13(+dMYfkln^jgLMNSe)0(0 zkI^c82a~0un6}-QdR#GA2P^rzO91pO`mF)=J07fdjHz*UP8~QMyV8-o&8YM2k-EZM z<%k5HThLheClppdz^*^`L=g5%nSUPr?}P3)=E4aVB~u>z57slfPyhS4;>H}*{@7== zXnXtifJfTOxj3JzZP^djFDE2|4svB)^O5w5QXNpF&qT}2^O0Pfv^r5pyBmB;b+5OT z2a|?FzBh5xv~(hom}?yS8dv@Q>ev!$Jb6s^9rIticgkzLRJ;f*>wbgz{#YUIBz(nB zsdyo?yIK7ypv#SZ&{S+%NcE_IB*IBkCHt_a7;@NRNAX zX6k7p$^#-A4ykg_?r<4;txc&_Cr|uev!M69RPW$ex)>#7`#Tpe3BDrTK`P$uRbK9g z2^0L6`ZY({CPpzm!pY08R@F3fXjWTv>+JBpQR`dNN~i73h|zw2Yr`Jlv0>W&Ap=^&-$gVrJ9Hn&KEzNfj@*>&1x2cYmr?6oz;`|_YhfFo zvhfs1)OEA^r(Mp<7j*md61Pvwi6y~cgPPZ~z7hv=sB{fZ-?`1tf~h^iFO@n8Y+Qwj zS#M??Oexzw_39V|H+^4NyB+UmR3fk2QeV1xWB;>JbO>K-$o1K043{|lC z(ejT)BO{j6XxDF^9|-oNKlT3T)q5S18ZEbg_D~?ND^^`F!H(|bIFbEG z3vAaIUlokrLv@+@A2u*JW)jW+e)q!>i&UIcUYFEHSPgPHX81i-NbwJ%-6Wz`G34Ks z8lv$=nT31@T)sv_h{BbN}qpXUTe4vOP zsDI6C`$#;ZMogjP!Adh8QQZ;S4U*v%F!)vqm2CMjZ$MLIGw=<;TH2@HktbxYizj<9 z{?!RV2)Vw>1)@gP*xX+;oj=^vM@Wmu|0@Mg9hL?wed=RkyD)G zSc8oh5bj&ae$rlu`}_^vX}@&*5({)SzY>Q2KfAa|Vq-+7vtrug3)~;qIp0aTwx#2C z#c>~*Eb;9?w>%aQ1&f;9i@LH-9XK*FujNN&7?ZGC$C=s3w>(+1!KQkWul}YR8zee| zfo5Eh{c6vriJA7BHR25`y($a=5b3a7ur1!RA=q`9XruoK6U=>WTwhbzPH=YB^^jQn51+LXj1Wem+N7t+r*naV-+nn=L zmVjI%<9YF_uBV~&T&{F3FNJ5*=Qx^9e(a)~;Qd!WLgCZu_)ecW5?^mx#xG=9vwrRQ zweNM=CWUm|RQVcKQ0iNBW)@SSbc~M5OApUJU@G&RC>9etS!VM=&4MKxSi5d*X{iJOiW(@n+nDr3hr;YQVs*P^nWZyoui{U-~;tHe1XEAsbmd%NRW>86P$tGs~; zUoZ2{U&sH9Gq=6H@h(p~QxaZJHpDZ@Uf(8reOKMqdDkZ0sFGk-c2AYso4UEZclk+# zrG8u`F}KTNUR&Mtkh;1Q7#Pz{-u+9sVIa7B<-W4*C;rvG+ctTcBBJV5Ot`+KEI0f5 zjgN=IY3+H(x zFJ3NSf{0dyjZ9^{+1EFPy}5O5U7=~Xw| z2tOg!gzM|T+RA*huWu8n2WHv7Z>u%0-LwBK18n;!-7bAS|M|S6C)XYqEO-eEC5I%I zoF&)R#lDrg26dw5KQ582nIE_R+;WHI+dIL^e~}ZL*zKr+?u)a(F;SR%l<+yuiI}6 zU6us1oqvEhDPFoW z=cnUU1;N`-s#d&X4+~s5zw0IMPt{$IWPr^xSi7om154DGs4oln_FRz{xw-Ii@AjN? zZ-TR*Z@$`}yHI2I@@X%RCw_JK)aRWvdygIW-eYD}zkdZye?$eo6M3o{BJnJb12cOc|!;5qD}5!-po|lHm}s;tSdq_kQF2Rz?lDf z)s%0Dh9HPF4>vIKqoSR)H@tX>OHUYKsU(AgduASPEb>Sz%-8TK7zTc;*2W z5)Wnq(_p%+Uoj&2fWq)Pa9ktyb>OXLl!Bx}4e0mC_RBHwa0WT&fGML;^r({|VG;wJ z=Nt`XNd6g37)beKG+`jhxzU6%nlJ`;Rq{_f^P0d8{Rk-;1|aZs^>bP0l+XkKog>Ma literal 0 HcmV?d00001 diff --git a/source/images/screenshots/snips_nlu.png b/source/images/screenshots/snips_nlu.png new file mode 100644 index 0000000000000000000000000000000000000000..b589f3f1cfcd1b8259ad4770b6189685aaad302b GIT binary patch literal 49459 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 JqLbDk{|~k_$NvBT literal 0 HcmV?d00001 diff --git a/source/images/supported_brands/snips.png b/source/images/supported_brands/snips.png new file mode 100644 index 0000000000000000000000000000000000000000..ec98a5f2a6fdddc2a9f132c10013d5ee75d918bc GIT binary patch literal 5583 zcmd5=^;=W#`)8DZAkrzRARr}gKnX#mCm|^fBHf(>W`GDtIXXm;l$IDZBnA?rL27i2 zj!~mN2mS5)7ksblxwhTc+5NiX+|P4f=M|x)p-e%>OooStN1>{sppAzIiUodqkPri( z5QXqP;0xrbt^5qH6vc|c!=sB(Rd}lF2inTGIYOsL*Lk(C1s<&2k7N8uS76V~1LJa7 z;%-y^6qZ-f3e$I>wYCRa!M@wT9rz-WW8z0X7?Scd-#!>r!&oZt*~sVdoxC7Vh@}b9 zZ1Y6~uDYXor*}}Y2eXcl=|Ef5fp6G^=gMYNKXIsN?8i`&zl#?doQZ*%5Gu%DFEefq zqHi~!{xyGEuk{?A2T2w$56Ue1^B4}kV#DTwMeu%IS{x$+*CIy`?Z z5Z`T60xk}GV8KaLpi8ZJFaBBD9QDNif_YHI;{X1jp7PJimG`3fm(&s$2T}aZw1*LY z99m^g z-4$O5PRJgqyS@ z2bR03Q%l6@ZZs6^k_WCCXDL&@WlffVx+pJ`U_xXAZ|L-Lg=oiI@p&q!B2IiV+>OW3Z>%Ms*AyfL>^S{cuvdP9RP7GjATz*oO zAC9$zv4p9aT#yjxN?Yn*#hcy@elkgdz77gi++4Awy z>SiuYSy=wkri@9Q+#1K+S`IXh8~W=VbR2Ic^WgnQyr=con{ZZeS*=1PPry!KQ$XOO^-=>d%50jv7}<< zQvciUcX1iBm}{nJ;LcV^$!2qdXnv*x`G)s$;~oj$&GAi=$Zeil!(Khmig z9td$7=L~183h)kq6zelpjhkVXKQmeN^5rv%y;caQ|Jcz2MZQRRO+K~7?KsX{WdRk< z&#)oy`PeOhn?N8$dDAU=b7F8mk;x2ZA~rZLtD5P`#v0nK$o<;D2e~q8XE6qckub@y zn?kz{eC^*e9}g!x*SI%`_)hgD8<=7EmM_n?`s{O};}5d@zKLqe%_Q*d)P4t7xgJGZ z`Lt2Ei1#JOP5bb3qW^Hi7jId8e$>iX>H0$e*Sz={DRb`jMe1sGp#vGk!eFkfo7A&9 z_Y3J3^@)V;_tI}9IipsitdO&Qs)k1*e#Ax0ok>MFCJ#C7ZyPuDY^SmRiDPeOppAK5 zeimBV92-ftFzp%5^e{I+s!u{}rGDcZ?Q&45p;fPC_~A&LL}~5xf<7;uo%ZA5ypE*3 zKUTcQhN)h)2}6NfLN0{UOZQ%?_~nf|+PZag$u=&ARbpD2Dq z&REj4{Q}1%7U<(I8CH-B6NsL0MPMUOi_N38J45zI8C|Cv_k_&ZvhvmjlguS-uxnT! z51Ae{h7e)of^Fp>9Tk70P3ulI%>-pRc`dU6xZTqL{cnn^)5J3BbkV2m&vxFBV8S+E0 z+@V<+^hUz&+2;e#1Ig*TU1(}2FGkCLRDS_a5Zu78vaPj!_kdaUd_PI3L@U+hE(g(2 zbk544jS*c&aJ@2de{Lh+uvF1{<;778L$lVQe&YC(Fw2z3V(8Q#@WccSd>=IY)XpC< zd)&;nQL?Y5r>e&R9H$>%+F7xnq>7s~(c};PrktHO_25@NK$q+Y*-D}!w^k`V}=3XXZPf#FS%p9cJBE8v8wZsD%mQ3ek2fW zn^hfr7YnwlmAR}t^glU9fKWW>BZ=Dl4Wy4dd%-Q^#%b>ZB+|1yC<5&_qV(K9~iNg<) zV5wnSfGeASkbKwh^k4@|up= zykl?XGWg6eT%r__?oQkSkqKIgeIBHJ>}(`OJXDcjrPQf`o@O%3L}0ok9TP(WyX@CT zmV!(o-KqF*)!43SZJ5+ex!~pCv3k?Ch@7}TTh);&)aF!sdrxai@3OgupQNxkLG!bd z<&d1cM%vhp?2$;=6S_DVY^>;%b5bTRziZ|?Mw^`*J8Xkys ze31E2_aNL0rMH;Fq*6{v++sYtJ_g??1#2Ep&Ef|wECrBV)!pxAQfYXvFU@{YFqI%6 z>ASG`Td!sUDQ-QRyEutgG7x;}S&Q4QYeTgLwH6KxST3}m?3s`h1^1(WVW!%sZL zLK!u(*5eJmI9JHcUH^KUhC-*{3&&cvf%32X9*fZuB$k;+(}BXf z@7U{BgI1+W=AU}rVpwi*4l*4ZO6?ij*(Fth63QTdns~(R1T)N0q=oThHCM$H+)Cx}O&IWq=#A`>yRw(^q3UlZ8;%?D##e*M5 zL%L&n3pO18z4|&66WMq+BcVX1UaR@ILss__ctUMB1Hh~IoK82s$k=(r3lZe>y?Z{C zglA-Saah(OiLi%IovZy$!fA$dCzY{yo(iS&9>!JS8!$=y5WmN;1hLW^lw122xoM;A zizao0W~Rldt}6p1Z&ws?WHi@&w(lJ;4a)S-%jnpJ_2kQC%yLhDCyJzp=aO;vy(L=4 zzLQpZa-42#h-HhRL8=*7^KZYvi4wQwTCHL+c;@-;2G3IO8d#srV8=F`n1EEfzrLD( zc;c}7$13v7d4M`xUoJ+LSft)n`bgc^aG*rQVKuL5pG<2dHF~3-O5F#Z?_cFcuRY@W zjtasg5pKLCWMX&Wm#dPh8h&g{cDGT~8AIiYBPY;CI?`-M$a?e37xQL4G8T+>kdjwi zWl78}{8)N=dVa7hF`D0a*PIDAB+?6JdP>PedJ@L6*(s6qB7LH*N#!viS2 zS81yq(tbY)@u%r2BXM(-n|RQuf1mi)#K40RcByempjo&u&+iWN-=vN|%|$ISAa-xE zP>;vaXq1aqE}-CS2ksv|1*?iM@n+o1&SjeZLS+qW6a6X6(r8P_I}`O^36rx3xfVai zsC*vMYkvM}5i`o-64>3uTr)#IX9HGrq5V1b`jMZi1W3r{te3e`Ef-TA>9&Wq&4|DV z!`sm(_6mC!I|M@6nhTT9T#r2aqos4KW?ldcH%+-Lx5jgp0?m5z{v`AG6-&tYBcqoz zYrldg?FWS+HdGv|58v!s95*dRz6zE-`3mW>z?v~@y6sS#uc~hoY1%5NJ_71%W$Mum zXjRnY$4B4iQLnUVC?yh$s%?*!PdBJDMxhJqw6^$vA_e$^niO}A-52p(_B(FGj26#; zzpKLUvI4E1kFqY5omZd#B(RC{E6wa~%x*tr`Z8HAPbT1KtAH% zYQ_y#H+fBdqw(Fs!NWTe>P{H$mcE$E_D-(*#Xko6#a0;2X;xtUkXySEnXLKp1z7t@ zV6PH95BrlS!b%f>zN6Hy0~1pH_u&@lP>BI2+jjXH;2c`~uZpL_*bV1NZ7o z_voG_BiA)dX*2V#DZ^azb`<_x(a7)eiHU=5fh{vGT?O~n6p9@BH+}cNHKvaa=}Ll4 z#?>mj2TvVt$Kn?vAAOnp#HUl~Duh+6+mc|B6)*Nkb*{gEn|S$PPpqq`_SPz#&3oJw z?|E)R7fN~x+ZNuCTVubL>px*Fi>XC3CqJrK^&P5}Ju3HxpQO}nmv$AP;@yBZ+V^6K z8-bO6d$_Vf^OJTzfLQgW$WK#5l-*@4TH5c?i8KuHK&2m=A9lRMgOQB$3NG~AOse2EW&u~Ty!-AdUJM@fijoKdl;`l2r}YUy&rHp6;~PWJ1- zf=iO=G{e3>#GZIarREF)hI(Bw)?h=^&UVH17ab!L71VFk=>r7ss0{OExPQu3nAfCH z#~RAJK;Gt?825fD-E-mj$UtW}B@;VNOB*$|7_Xn^SMWllhsW3>k$)vN}*Q`WU#KTxE9&tx)nEYCq?h0 zgJkg@!6t2QcHo6~n?-DgzRc87&<^>znkNNK^q=)t?S)Iu#>cxnaXh7Ef+oZFMwe6N z1T%`?daEamj3E~d&zXnwAgdeqk(J-%RM~7bQ1VB!v!&Ls3hAYx?_)1vluYq%01tRC zT_Y&FC{g1@vNYM%Mp>JVk{PJexzpy?(A9KYpUZ!V-N0ef6I}+mYHRBAdib|;6Mnc7 zLEMBI2axgI-NQkd*-w*`g1NBVs>TO)sHyWb|9-hyqtJ>6$eMjRelGrp#Ggj$lZBhM z!3dOJRqtxyHi6bEy%^Vnw#+Ct3X!#iP*BN#el#g^vqDHu8qQRbGqQIFd%}GB)LHuQ z1JjqnNAD$VL?_AGfo33TUFpWW-4 zA%4u3&g7Q&Yw!NUHkG2D!;`O1WyeX(iIkiddUdrm@kRU74+&o$n+;2+R7J{&Mb%e1 zDqs2Qtn@~O=*7VVK$m)j>Ux$s<34s2xux7?!I6MICI1u{Fd`6t!(SBw1`Lm>ve^aw zwLtL}m|HS@U7u^|sz3mkiu%uuIKgX;iU_!mw1fql*K(DX0RZ5A$N$jyT4p1oj>YFA z(V9>M)VQyu0Kl~(QhSX}3y=iu+g~gH1~ml$M!c6sU9Yk4s{qeL4tZ;a>!9@jK;cGL z@vJjvY>lO!)rV3H^TApJiEcEI+NhGk7RCX;l*JC7x8cC(5VTA9lU-%^`Hx#i;!skW zO`p<>*KGZDpy8}5^4{dZi6&WGYQ*}@1i&?UvB>ONkCUGwZI|J$Zqm^Er@h_A0}8_< zerb9w(LptUBNs#HJ<4}oB?vG`EpCqzT_?Fl2>ee&%OK;r=KqgQ&?}I`oRtJS`}#7V P(Bi2oYABRGvv~VIt^cu( literal 0 HcmV?d00001 From cef16817cd766244ddda8575240402cb5d9c5fd1 Mon Sep 17 00:00:00 2001 From: Jeff Wilson Date: Sat, 1 Jul 2017 20:22:57 -0400 Subject: [PATCH 34/42] Insteon local fan (#2390) * Add fan to insteon_local full config * Add insteon_local fan page * Update 'ha_release' --- source/_components/fan.insteon_local.markdown | 34 +++++++++++++++++++ source/_components/insteon_local.markdown | 3 ++ 2 files changed, 37 insertions(+) create mode 100644 source/_components/fan.insteon_local.markdown diff --git a/source/_components/fan.insteon_local.markdown b/source/_components/fan.insteon_local.markdown new file mode 100644 index 00000000000..a1afd9d1a0d --- /dev/null +++ b/source/_components/fan.insteon_local.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Insteon (Local) Fan" +description: "Instructions how to setup the Insteon Hub Fans locally within Home Assistant." +date: 2017-04-06 11:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: insteon.png +ha_category: fan +ha_version: 0.48 +--- + +The `insteon_local` fan component lets you control your fan connected to an [Insteon Hub](http://www.insteon.com/insteon-hub/) with Home Assistant. + +To integrate add a fan, configure your hub Insteon(local) with Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml platform entry +insteon_local: + host: YOUR HUB IP + username: YOUR HUB USERNAME + password: YOUR HUB PASSWORD + timeout: 10 + port: 25105 +``` + +To add fans to your set-up, add the platform to your light configuration: +```yaml +fan: + - platform: insteon_local +``` + diff --git a/source/_components/insteon_local.markdown b/source/_components/insteon_local.markdown index 1b1343083a3..96a339f0f03 100644 --- a/source/_components/insteon_local.markdown +++ b/source/_components/insteon_local.markdown @@ -50,5 +50,8 @@ light: switch: - platform: insteon_local + +fan: + - platform: insteon_local ``` From be9debf763e9d3eb536f7134b692e055c2adf879 Mon Sep 17 00:00:00 2001 From: Yannick POLLART Date: Sun, 2 Jul 2017 02:23:45 +0200 Subject: [PATCH 35/42] rfxtrx binary sensor component documentation (#2336) * First draft of RFXtrx binary sensor doc page. * Updated rfxtrx binary sensor doc. * binary_sensors.rfxtrx: updated doc according to latest PR changes. * Updated rfxtrx binary sensor documentation * Update binary_sensor.rfxtrx.markdown Tried to clarify the data_bits description. * Updated device_class property. --- .../_components/binary_sensor.rfxtrx.markdown | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 source/_components/binary_sensor.rfxtrx.markdown diff --git a/source/_components/binary_sensor.rfxtrx.markdown b/source/_components/binary_sensor.rfxtrx.markdown new file mode 100644 index 00000000000..d2c2df56c8d --- /dev/null +++ b/source/_components/binary_sensor.rfxtrx.markdown @@ -0,0 +1,136 @@ +--- +layout: page +title: "RFXtrx Binary Sensor" +description: "Instructions how to integrate RFXtrx binary sensors into Home Assistant." +date: 2017-03-26 12:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: rfxtrx.png +ha_category: Binary Sensor +--- + +The `rfxtrx` platform support binary sensors that communicate in the frequency range of 433.92 MHz. The rfxtrx binary sensor component provides support for them. + +Many cheap sensors available on the web today are based on a particular RF chip called *PT-2262*. Depending on the running firmware on the RFXcom box, some of them may be recognized under the X10 protocol but most of them are recognized under the *Lighting4* protocol. The rfxtrx binary sensor component provides some special options for them, while other rfxtrx protocols should work too. + +# Setting up your devices +Once you have set up your [rfxtrx hub](/components/rfxtrx/), the easiest way to find your binary sensors is to add this to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +binary_sensor: + platform: rfxtrx + automatic_add: True +``` + +Open your local home-assistant web UI and go to the "states" page. Then make sure to trigger your sensor. You should see a new entity appear in the *Current entites* list, starting with "binary_sensor." and some hexadecimal digits. Those hexadecimal digits are your device id. + +For example: "binary_sensor.0913000022670e013b70". Here your device id is `0913000022670e013b70`. Then you should update your configuration to: + +```yaml +# Example configuration.yaml entry +binary_sensor: + platform: rfxtrx + devices: + 0913000022670e013b70: + name: device_name +``` + +Do not forget to tweak the configuration variables: + +- **automatic_add** (*Optional*): To enable the automatic addition of new binary sensors. +- **device_class** (*Optional*): The [type or class of the sensor](/components/binary_sensor/) to set the icon in the frontend. +- **off_delay** (*Optional*): For sensors that only sends 'On' state updates, this variable sets a delay after which the sensor state will be updated back to 'Off'. + + +Binary sensors have only two states - "on" and "off". Many door or window opening sensors will send a signal each time the door/window is open or closed. However, depending on their hardware or on their purpose, some sensors are only able to signal their "on" state: + +- Most motion sensors send a signal each time they detect motion. They stay "on" for a few seconds and go back to sleep, ready to signal other motion events. Usually, they do not send a signal when they go back to sleep. +- Some doorbells may also only send "on" signals when their toggle switch is pressed, but no "off" signal when the switch is released. + +For those devices, use the *off_delay* parameter. It defines a delay after which a device will go back to an "Off" state. That "Off" state will be fired internally by Home Assistant, just as if the device fired it by itself. If a motion sensor can only send signals once every 5 seconds, sets the *off_delay* parameter to *seconds: 5*. + + +Example configuration: + +```yaml +# Example configuration.yaml entry +binary_sensor: + platform: rfxtrx + automatic_add: True + devices: + 091300006ca2c6001080: + name: motion_hall + device_class: motion + off_delay: + seconds: 5 +``` + +## Options for PT-2262 devices under the Lighting4 protocol + +When a data packet is transmitted by a PT-2262 device using the Lighting4 protocol, there is no way to automatically extract the device identifier and the command from the packet. Each device has its own id/command length combination and the fields lengths are not included in the data. One device that sends 2 different commands will be seen as 2 devices on Home Assistant. For sur cases, the following options are available in order to circumvent the problem: + +- **data_bits** (*Optional*): Defines how many bits are used for commands inside the data packets sent by the device. +- **command_on** (*Optional*): Defines the data bits value that is sent by the device upon an 'On' command. +- **command_off** (*Optional*): Defines the data bits value that is sent by the device upon an 'Off' command. + +Let's try to add a new PT-2262 sensor using the "automatic_add" option and have a look at Home Assistant system log. + +Have your sensor trigger the "On" state for the first time. Some messages will appear: + +``` +INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Added binary sensor 0913000022670e013970 (Device_id: 22670e Class: LightingDevice Sub: 0) +``` + +Here the sensor has the id *22670e*. + +Now have your sensor trigger the "Off" state and look for the following message in the Home Assistant log. You should see that your device has been detected as a *new* device when triggering its "Off" state: + +``` +INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Added binary sensor 09130000226707013d70 (Device_id: 226707 Class: LightingDevice Sub: 0) +``` + +Here the device id is *226707*, which is almost similar to the *22670e* we had on the "On" event a few seconds ago. + +From those two values, you can guess that the actual id of your device is *22670*, and that *e* and *7* are commands for "On" and "Off" states respectively. As one hexadecimal digit uses 4 bits, we can conclude that the device is using 4 data bits. + +So here is the actual configuration section for the binary sensor: + +```yaml +platform: rfxtrx +automatic_add: True +devices: + 0913000022670e013b70: + name: window_room2 + device_class: opening + data_bits: 4 + command_on: 0xe + command_off: 0x7 +``` + +The *automatic_add* option makes the rfxtrx binary sensor component calculate and display the configuration options for you in the Home Assistant logs: + +``` +INFO (Thread-6) [homeassistant.components.rfxtrx] rfxtrx: found possible device 226707 for 22670e with the following configuration: +data_bits=4 +command_on=0xe +command_off=0x7 +INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Found possible matching deviceid 22670e. +``` + +This automatic guess should work most of the time but there is no guarantee on that. You should activate it only when you want +to configure your new devices and leave it off otherwise. + +## Known working devices + +The following devices are known to work with the rfxtrx binary sensor component. There are too many other to list. + +- Motion detectors: + - Kerui P817 and P829. + - Chuango PIR-700. + +- Door / window sensors: + - Kerui D026 door / window sensor: can trigger on "open" and "close". Has a temper switch. + - Nexa LMST-606 Magnetic contact switch. From 940e2b1b1ee4fbcfae3d14f5017ad636637ba392 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 1 Jul 2017 17:36:52 -0700 Subject: [PATCH 36/42] Release 0.48 blog post --- _config.yml | 2 +- .../binary_sensor.verisure.markdown | 15 + source/_components/comfoconnect.markdown | 55 ++ source/_components/fan.comfoconnect.markdown | 47 +- .../_components/media_player.denon.markdown | 48 +- .../media_player.denonavr.markdown | 67 +++ .../_components/sensor.comfoconnect.markdown | 17 + source/_components/shiftr.markdown | 2 +- source/_posts/2017-07-02-release-48.markdown | 513 ++++++++++++++++++ source/components/index.html | 2 +- .../images/blog/2017-07-0.48/components.png | Bin 0 -> 77663 bytes 11 files changed, 677 insertions(+), 91 deletions(-) create mode 100644 source/_components/binary_sensor.verisure.markdown create mode 100644 source/_components/comfoconnect.markdown create mode 100644 source/_components/media_player.denonavr.markdown create mode 100644 source/_components/sensor.comfoconnect.markdown create mode 100644 source/_posts/2017-07-02-release-48.markdown create mode 100644 source/images/blog/2017-07-0.48/components.png diff --git a/_config.yml b/_config.yml index bd0bda31b29..661d64ea5bd 100644 --- a/_config.yml +++ b/_config.yml @@ -144,7 +144,7 @@ social: current_major_version: 0 current_minor_version: 48 current_patch_version: 0 -date_released: 2017-07-01 +date_released: 2017-07-02 # 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/_components/binary_sensor.verisure.markdown b/source/_components/binary_sensor.verisure.markdown new file mode 100644 index 00000000000..f6ecb7b3c9c --- /dev/null +++ b/source/_components/binary_sensor.verisure.markdown @@ -0,0 +1,15 @@ +--- +layout: page +title: "Verisure Binary Sensor" +description: "Instructions how to integrate Verisure binary sensors into Home Assistant." +date: 2016-02-23 21:31 +0100 +sidebar: true +comments: false +sharing: true +footer: true +logo: verisure.png +ha_category: Binary Sensor +ha_iot_class: "Cloud Polling" +--- + +Integrates Verisure binary sensors into Home Assistant. See the [main component](/components/verisure/) for configuration instructions. diff --git a/source/_components/comfoconnect.markdown b/source/_components/comfoconnect.markdown new file mode 100644 index 00000000000..fcce2b619f0 --- /dev/null +++ b/source/_components/comfoconnect.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Zehnder ComfoAir Q Ventilation" +description: "Instructions how to integrate Zehnder ComfoAir Q350/450/600 ventilation systems into Home Assistant." +date: 2017-06-28 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: zehnder.png +ha_category: Hub +ha_release: "0.48" +--- + +The `comfoconnect` component lets you control Zehnder ComfoAir [Q350](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q350-st)/[450](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q450-st)/[600](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q600-st) +ventilation units from Home Assistant. You need a [ComfoConnect LAN C](http://www.zehnder.co.uk/products-and-systems/comfortable-indoor-ventilation/ms-comfoair-q/ideal-control#node-21233) +bridge to connect the unit to your local network. + +There is an official iPhone and Android app to configure and control your unit. This platform connects with the help of +the unofficial [pycomfoconnect](https://github.com/michaelarnauts/comfoconnect) library. + +The component has a fan platform to view and control the ventilation speed, and a sensors platform to read out the outdoor temperature and humidity, the indoor temperature and humidity, and the extract and supply air flow (in m³ per hour). + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +comfoconnect: + host: 192.168.1.213 +``` + +Configuration variables: + +- **host** (*Required*): The ip or hostname of the ComfoConnect LAN C bridge. +- **name** (*Optional*): The name of this device as you want to see it in Home Assistant. +- **token** (*Optional*): The token you want to use when registering with the device. This is a random 32 char hexadecimal string. The default value is `00000000000000000000000000000001`. +- **user_agent** (*Optional*): The name you want to supply when registering with the device. The default value is `Home Assistant`. +- **pin** (*Optional*): The pin code to use when registering. This is `0000` by default. You only need to change this if you have changed the factory default pin. + +To register the sensors, add the following to your `configuration.yaml` file: + +```yaml +sensor: + - platform: comfoconnect + resources: + - current_temperature + - current_humidity + - outside_temperature + - outside_humidity + - air_flow_supply + - air_flow_exhaust +``` + +

    +Note that it's not possible to have multiple connection to the bridge at the same time. This component will keep the connection open, and if you open the app, it will ask you to disconnect Home Assistant. If you close the app again, Home Assistant will reconnect automatically. +

    diff --git a/source/_components/fan.comfoconnect.markdown b/source/_components/fan.comfoconnect.markdown index 3e1d338e6fa..d24d4eb1845 100644 --- a/source/_components/fan.comfoconnect.markdown +++ b/source/_components/fan.comfoconnect.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Zehnder ComfoAir Q Ventilation" -description: "Instructions how to integrate Zehnder ComfoAir Q350/450/600 ventilation systems into Home Assistant." +title: "Zehnder ComfoAir Q Ventilation fans" +description: "Instructions how to integrate Zehnder ComfoAir Q350/450/600 fans into Home Assistant." date: 2017-06-28 18:00 sidebar: true comments: false @@ -12,45 +12,6 @@ ha_category: Fan ha_release: "0.48" --- -The `comfoconnect` component lets you control Zehnder ComfoAir [Q350](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q350-st)/[450](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q450-st)/[600](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q600-st) -ventilation units from Home Assistant. You need a [ComfoConnect LAN C](http://www.zehnder.co.uk/products-and-systems/comfortable-indoor-ventilation/ms-comfoair-q/ideal-control#node-21233) -bridge to connect the unit to your local network. +Please see the [main component] for information how to set it up. -There is an official iPhone and Android app to configure and control your unit. This platform connects with the help of -the unofficial [pycomfoconnect](https://github.com/michaelarnauts/comfoconnect) library. - -The component has a fan platform to view and control the ventilation speed, and a sensors platform to read out the outdoor temperature and humidity, the indoor temperature and humidity, and the extract and supply air flow (in m³ per hour). - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -climate: - - platform: comfoconnect - host: 192.168.1.213 -``` - -Configuration variables: - -- **host** (*Required*): The ip or hostname of the ComfoConnect LAN C bridge. -- **name** (*Optional*): The name of this device as you want to see it in Home Assistant. -- **token** (*Optional*): The token you want to use when registering with the device. This is a random 32 char hexadecimal string. The default value is `00000000000000000000000000000001`. -- **user_agent** (*Optional*): The name you want to supply when registering with the device. The default value is `Home Assistant`. -- **pin** (*Optional*): The pin code to use when registering. This is `0000` by default. You only need to change this if you have changed the factory default pin. - -To register the sensors, add the following to your `configuration.yaml` file: - -```yaml -sensor: - - platform: comfoconnect - resources: - - current_temperature - - current_humidity - - outside_temperature - - outside_humidity - - air_flow_supply - - air_flow_exhaust -``` - -

    -Note that it's not possible to have multiple connection to the bridge at the same time. This component will keep the connection open, and if you open the app, it will ask you to disconnect Home Assistant. If you close the app again, Home Assistant will reconnect automatically. -

    +[main component]: /components/comfoconnect/ diff --git a/source/_components/media_player.denon.markdown b/source/_components/media_player.denon.markdown index f6c4ec6ac4c..b8c0e380133 100644 --- a/source/_components/media_player.denon.markdown +++ b/source/_components/media_player.denon.markdown @@ -13,8 +13,7 @@ ha_iot_class: "Local Polling" ha_release: 0.7.2 --- - -The `denon` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. +The `denon` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon AVR] platform. Supported devices: @@ -22,22 +21,6 @@ Supported devices: - Denon RCD-N8 (untested) - Denon RCD-N9 (partial support) - Denon AVR receivers with integrated Network support (partial support) -- Denon AVR-X2000 (via denonavr platform) -- Denon AVR-X2100W (via denonavr platform) -- Denon AVR-X4100W (via denonavr platform) -- Denon AVR-1912 (via denonavr platform) -- Denon AVR-2312CI (via denonavr platform) -- Denon AVR-3311CI (via denonavr platform) -- Marantz M-CR603 (via denonavr platform) -- Marantz M-RC610 (via denonavr platform) -- Marantz SR5008 (via denonavr platform) -- Marantz NR1604 (via denonavr platform) -- Other Denon AVR receivers (via denonavr platform (untested)) -- Marantz receivers (experimental via denonavr platform) - -
    -If you have something else using the IP controller for your Denon AVR 3808CI, such as your URC controller, it will not work! There is either a bug or security issue with some models where only one device could be controlling the IP functionality.
    -
    To add a Denon Network Receiver to your installation, add the following to your `configuration.yaml` file: @@ -55,36 +38,11 @@ Configuration variables: - **name** (*Optional*): Name of the device. A few notes for platform: denon + - The receiver handles only one telnet connection and refuses others. - Be careful with the volume. 100% or even 50% is very loud. - To be able to wake up the receiver, activate the "remote" setting in the receiver's settings. - Play and pause are supported, toggling is not possible. - Seeking cannot be implemented as the UI sends absolute positions. Only seeking via simulated button presses is possible. - -**denonavr platform** -```yaml -# Example configuration.yaml entry -media_player: - - platform: denonavr - host: IP_ADDRESS - name: NAME - show_all_sources: True / False - zones: - - zone: Zone2 / Zone3 - name: NAME -``` - -Configuration variables: - -- **host** (*Optional*): IP address of the device. Example: 192.168.1.32. If not set, auto discovery is used. -- **name** (*Optional*): Name of the device. If not set, friendlyName of receiver is used. -- **show_all_sources** (*Optional*): If True all sources are displayed in sources list even if they are marked as deleted in the receiver. If False deleted sources are not displayed (default). Some receivers have a bug that marks all sources as deleted in the interface. In this case this option could help. -- **zones** (*Optional*): List of additional zones to be activated. They are displayed as additional media players with the same functionality Main Zone of the device supports - - **zone**: Zone which should be activated. Valid options are Zone2 and Zone3 - - **name** (*Optional*): Name of the zone. If not set the name of the main device + zone as suffix is taken. - -A few notes for platform: denonavr -- Additional option the control Denon AVR receivers with a builtin web server is using the HTTP interface with denonavr platform. -- denonavr platform supports some additional functionalities like album covers, custom input source names and auto discovery. -- Marantz receivers seem to a have quite simliar interface. Thus if you own one, give it a try. +[Denon AVR]: /components/media_player.denonavr/ diff --git a/source/_components/media_player.denonavr.markdown b/source/_components/media_player.denonavr.markdown new file mode 100644 index 00000000000..e88156d613f --- /dev/null +++ b/source/_components/media_player.denonavr.markdown @@ -0,0 +1,67 @@ +--- +layout: page +title: "Denon AVR Network Receivers" +description: "Instructions how to integrate Denon AVR Network Receivers into Home Assistant." +date: 2015-09-08 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: denon.png +ha_category: Media Player +ha_iot_class: "Local Polling" +ha_release: 0.7.2 +--- + + +The `denonavr` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon] platform. + +Supported devices: + +- Denon AVR-X2000 +- Denon AVR-X2100W +- Denon AVR-X4100W +- Denon AVR-1912 +- Denon AVR-2312CI +- Denon AVR-3311CI +- Marantz M-CR603 +- Marantz M-RC610 +- Marantz SR5008 +- Marantz NR1604 +- Other Denon AVR receivers (untested) +- Marantz receivers (experimental) + +
    +If you have something else using the IP controller for your Denon AVR 3808CI, such as your URC controller, it will not work! There is either a bug or security issue with some models where only one device could be controlling the IP functionality.
    +
    + +To add a Denon Network Receiver to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: denonavr + host: IP_ADDRESS + name: NAME + show_all_sources: True / False + zones: + - zone: Zone2 / Zone3 + name: NAME +``` + +Configuration variables: + +- **host** (*Optional*): IP address of the device. Example: 192.168.1.32. If not set, auto discovery is used. +- **name** (*Optional*): Name of the device. If not set, friendlyName of receiver is used. +- **show_all_sources** (*Optional*): If True all sources are displayed in sources list even if they are marked as deleted in the receiver. If False deleted sources are not displayed (default). Some receivers have a bug that marks all sources as deleted in the interface. In this case this option could help. +- **zones** (*Optional*): List of additional zones to be activated. They are displayed as additional media players with the same functionality Main Zone of the device supports + - **zone**: Zone which should be activated. Valid options are Zone2 and Zone3 + - **name** (*Optional*): Name of the zone. If not set the name of the main device + zone as suffix is taken. + +A few notes: + +- Additional option the control Denon AVR receivers with a builtin web server is using the HTTP interface with denonavr platform. +- denonavr platform supports some additional functionalities like album covers, custom input source names and auto discovery. +- Marantz receivers seem to a have quite simliar interface. Thus if you own one, give it a try. + +[Denon]: /components/media_player.denon/ diff --git a/source/_components/sensor.comfoconnect.markdown b/source/_components/sensor.comfoconnect.markdown new file mode 100644 index 00000000000..78d22454b9b --- /dev/null +++ b/source/_components/sensor.comfoconnect.markdown @@ -0,0 +1,17 @@ +--- +layout: page +title: "Zehnder ComfoAir Q Ventilation sensors" +description: "Instructions how to integrate Zehnder ComfoAir Q350/450/600 sensors into Home Assistant." +date: 2017-06-28 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: zehnder.png +ha_category: Sensor +ha_release: "0.48" +--- + +Please see the [main component] for information how to set it up. + +[main component]: /components/comfoconnect/ diff --git a/source/_components/shiftr.markdown b/source/_components/shiftr.markdown index e022cd1a7b9..16ae6a53f05 100644 --- a/source/_components/shiftr.markdown +++ b/source/_components/shiftr.markdown @@ -2,7 +2,7 @@ layout: page title: "Shiftr.io" description: "Transfer events to Shiftr.io." -date: 2017-07-16 07:00 +date: 2017-06-16 07:00 sidebar: true comments: false sharing: true diff --git a/source/_posts/2017-07-02-release-48.markdown b/source/_posts/2017-07-02-release-48.markdown new file mode 100644 index 00000000000..bed118848cd --- /dev/null +++ b/source/_posts/2017-07-02-release-48.markdown @@ -0,0 +1,513 @@ +--- +layout: post +title: "0.48: Snips.ai, Shiftr.io and a massive History query speed up" +description: "Build your own local voice assistant with the new Snips.ai component, visualize your data with Shiftr.io and enjoy faster history browsing." +date: 2017-07-02 00:02:05 +0000 +date_formatted: "July 2, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2017-07-0.48/components.png +--- + + + +It's time for a great new release! + +We've started the process of upgrading our frontend technology. If you notice something not working that did work before, please open [an issue][issue-polymer]. + +[Pascal][@pvizeli] has added a new option to Home Assistant core to set a list of whitelisted folders that Home Assistant can read from. When a component allows to send files (like Telegram), it will only be allowed to send files from those directories. The only default whitelisted folder is the public `/www` directory. + +Z-Wave will, as announced in the [last release](/blog/2017/06/17/release-47/), be defaulting to generate the new entity ids. More info in the [blog post](/blog/2017/06/15/zwave-entity-ids/). You can still opt-in for the old style. + +```yaml +zwave: + new_entity_ids: false +``` + +## Big speed up in querying the history + +Thanks to the work by [@cmsimike] in [#8255] you'll see a significant speed up when using the history view. In his local tests queries went from 1 minute to 90ms! ⚡️ + +## Snips.ai component + +Snips has contributed a component to integrate with their Snips.ai local voice assistant. This will allow you to hook a speaker and a microphone into your Raspberry Pi and make your own local Amazon Echo quickly. See [the docs][snips docs] for further instructions. + +Also a shoutout to [@michaelarnauts] for keeping an eye on our Docker build and once again reducing the file size 👍 + +[issue-polymer]: https://github.com/home-assistant/home-assistant-polymer/issues + +## New Platforms + +- Add initial support for Shiftr.io ([@fabaff] - [#7974]) ([shiftr docs]) (new-platform) +- Upnp properties ([@dgomes] - [#8067]) ([upnp docs]) ([sensor.upnp docs]) (new-platform) +- Add support for Insteon FanLinc fan ([@jawilson] - [#6959]) ([insteon_local docs]) ([fan.insteon_local docs]) (new-platform) +- add knx cover support ([@tiktok7] - [#7997]) ([knx docs]) ([cover.knx docs]) (new-platform) +- Add I2c BME280 temperature, humidity and pressure sensor for Raspberry Pi ([@azogue] - [#7989]) ([sensor.bme280 docs]) (new-platform) +- Add I2c HTU21D temperature and humidity sensor for Raspberry Pi ([@azogue] - [#8049]) ([sensor.htu21d docs]) (new-platform) +- Add new BH1750 light level sensor ([@azogue] - [#8050]) ([sensor.bh1750 docs]) (new-platform) +- Rfxtrx binary sensor ([@ypollart] - [#6794]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) (new-platform) +- Add ClickSend notify service. ([@omarusman] - [#8135]) ([notify.clicksend docs]) (new-platform) +- Add device tracker for Linksys Smart Wifi devices ([@mortenlj] - [#8144]) ([device_tracker.linksys_smart docs]) (new-platform) +- Openhardwaremonitor ([@depl0y] - [#8056]) ([sensor.openhardwaremonitor docs]) (new-platform) +- WIP: Verisure app api ([@persandstrom] - [#7394]) ([verisure docs]) ([alarm_control_panel.verisure docs]) ([binary_sensor.verisure docs]) ([sensor.verisure docs]) ([switch.verisure docs]) (new-platform) +- telegram_bot platform to only send messages ([@azogue] - [#8186]) (new-platform) +- Comfoconnect fan component ([@michaelarnauts] - [#8073]) ([comfoconnect docs]) ([fan.comfoconnect docs]) ([sensor.comfoconnect docs]) (new-platform) +- Implement templates for covers ([@PhracturedBlue] - [#8100]) ([cover.template docs]) (new-platform) +- Snips ASR and NLU component ([@michaelfester] - [#8156]) ([snips docs]) (new-platform) + +## {% linkable_title If you need help... %} +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. 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][issue]. Make sure to fill in all fields of the issue template. + + + +## Breaking Changes + +- We have added a new option to whitelist folders that can be used as sources for sending files. You will need to use this option if you are using files with the telegram component. ([@pvizeli] - [#8189]) (breaking change) + +```yaml +homeassistant: + whitelist_external_dirs: + - /tmp + - /home/kenji/data +``` + +- Vera battery levels will no longer have the percent sign appended ([@philhawthorne] - [#8069]) ([vera docs]) (breaking change) +- Notify - SMTP: Added SMTP SSL/TLS support so now you should specify which encryption to use. ([@sn0oz] - [#7960]) ([notify.smtp docs]) (breaking change) + +``` +notify: + - name: mail + platform: smtp + server: !secret smtp_server + sender: !secret mail_alert + username: !secret mail_username + password: !secret mail_password + recipient: !secret mail_admin + encryption: tls # Or starttls, none +``` + +- Light - LIFX: The `lifx_effect_breathe` call was deprecated in version 0.47 and has now been removed. You can use `lifx_effect_pulse` with `mode: breathe` for the same effect. ([@amelchio] - [#8222]) ([light.lifx docs]) (breaking change) +- LimitlessLED: No longer automatically fades the lights when turning the light off. Can be restored with a new config option. ([@SmilyOrg] - [#7369]) ([light.limitlessled docs]) (breaking change) + +```yaml +light: + platform: limitlessled + bridges: + + - host: !secret limitless_v6_ip + port: 5987 + version: 6 + groups: + + - number: 1 + type: rgbww + name: Safari Glow + fade: none +``` + +## All changes + +- Update numpy 1.13.0 ([@pvizeli] - [#8059]) ([image_processing.opencv docs]) +- No update in MQTT Binary Sensor #7478 ([@pezinek] - [#8057]) +- Use standard entity_ids for zwave entities ([@armills] - [#7786]) ([zwave docs]) ([light.zwave docs]) (breaking change) +- Fix some warnings found by quantifiedcode ([@andrey-git] - [#8027]) ([insteon_hub docs]) ([tellduslive docs]) ([calendar.google docs]) +- Always enable monkey patch ([@balloob] - [#8054]) +- Remove % sign from Vera Battery Levels ([@philhawthorne] - [#8069]) ([vera docs]) (breaking change) +- Allow config of latitude and longitude ([@jshore1296] - [#8068]) ([sensor.wunderground docs]) +- Failed to parse response from WU API: 'record' (and 'recordyear') #7747 ([@pezinek] - [#8058]) ([sensor.wunderground docs]) +- Add initial support for Shiftr.io ([@fabaff] - [#7974]) ([shiftr docs]) (new-platform) +- Add option to set language of openweathermap sensor, and handle updating errors ([@azogue] - [#8046]) ([sensor.openweathermap docs]) +- Bump pyEmby version to account for API changes ([@mezz64] - [#8070]) ([media_player.emby docs]) +- bump ups ([@happyleavesaoc] - [#8075]) ([sensor.ups docs]) +- bump usps version ([@happyleavesaoc] - [#8074]) ([sensor.usps docs]) +- Add to zwave services descriptions ([@andrey-git] - [#8072]) +- Fix attribute entity ([@pvizeli] - [#8066]) (breaking change) +- Added 'all_plants' group and support for plant groups state. ([@aronsky] - [#8063]) ([group docs]) ([plant docs]) +- Fix EntityComponent handle entities without a name ([@balloob] - [#8065]) +- Update pyunifi component to use APIError passed from pyunifi 2.13. Better accommodate login failures with wrapper in pyunifi 2.13. ([@finish06] - [#7899]) ([device_tracker.unifi docs]) +- Stopping the logfile spam by piping STDERR to /dev/null ([@madpilot] - [#8081]) ([switch.wake_on_lan docs]) +- mpd: implement support for seek, shuffle, and clear playlist ([@auchter] - [#8090]) ([media_player.mpd docs]) +- Cleanup .coveragerc ([@michaelarnauts] - [#8088]) +- update pywebpush to 1.0.5 ([@perosb] - [#8084]) ([notify.html5 docs]) +- media player Kodi: handle TransportError exceptions when calling JSONRPC API methods ([@azogue] - [#8047]) ([media_player.kodi docs]) +- Upnp properties ([@dgomes] - [#8067]) ([upnp docs]) ([sensor.upnp docs]) (new-platform) +- Add support for Insteon FanLinc fan ([@jawilson] - [#6959]) ([insteon_local docs]) ([fan.insteon_local docs]) (new-platform) +- add knx cover support ([@tiktok7] - [#7997]) ([knx docs]) ([cover.knx docs]) (new-platform) +- More updates to zwave services.yaml file ([@andrey-git] - [#8083]) +- Fix lights issue #8098 ([@tsvi] - [#8101]) ([light.vera docs]) +- increase timeout for setWebhook to 10s ([@azogue] - [#8102]) ([telegram_bot.webhooks docs]) +- Added SMTP SSL/TLS support ([@sn0oz] - [#7960]) ([notify.smtp docs]) (breaking change) +- Fix Dyson async_add_job ([@CharlesBlonde] - [#8113]) ([fan.dyson docs]) ([sensor.dyson docs]) +- Update InfluxDB to handle datetime objects and multiple decimal points ([@philhawthorne] - [#8080]) ([influxdb docs]) +- Remove config details (see docs) ([@fabaff] - [#8119]) ([cover.knx docs]) +- Only mark active DHCP clients as present ([@cyberplant] - [#8110]) ([device_tracker.mikrotik docs]) +- Add option to specify the location of the API (fixes #8115) ([@fabaff] - [#8118]) ([sensor.pi_hole docs]) +- Fixed iTach command parsing with empty data ([@alanfischer] - [#8104]) ([remote.itach docs]) +- Upgrade mutagen to 1.38 ([@fabaff] - [#8126]) ([tts docs]) +- Upgrade paho-mqtt to 1.3.0 ([@fabaff] - [#8125]) ([mqtt docs]) ([shiftr docs]) +- Upgrade sqlalchemy to 1.1.11 ([@fabaff] - [#8124]) ([recorder docs]) +- Upgrade aiohttp to 2.2.0 ([@fabaff] - [#8121]) +- Upgrade RestrictedPython dependency ([@balloob] - [#8132]) ([python_script docs]) +- Added RFXTRX UV badge ([@lunar-consultancy] - [#8129]) ([rfxtrx docs]) +- Do not call update() in constructor ([@fabaff] - [#8120]) ([sensor.netdata docs]) +- Change Error Message when Turning off ISY994 Light ([@SConaway] - [#8131]) ([light.isy994 docs]) +- Allow iteration in python_script ([@balloob] - [#8134]) ([python_script docs]) +- Add current balance to hydroquebec sensor ([@titilambert] - [#8138]) ([sensor.hydroquebec docs]) +- Decora light: Fix brightness level in UI ([@titilambert] - [#8139]) ([light.decora docs]) +- Add I2c BME280 temperature, humidity and pressure sensor for Raspberry Pi ([@azogue] - [#7989]) ([sensor.bme280 docs]) (new-platform) +- Upgrade libsoundtouch to prevent Python3.6 errors with enum. #7733 #8103 ([@CharlesBlonde] - [#8143]) ([media_player.soundtouch docs]) +- Adds CPU temp monitoring, and allow startup when endpoint is not yet available. ([@jjmontestl] - [#8093]) ([sensor.glances docs]) +- Add I2c HTU21D temperature and humidity sensor for Raspberry Pi ([@azogue] - [#8049]) ([sensor.htu21d docs]) (new-platform) +- Add new BH1750 light level sensor ([@azogue] - [#8050]) ([sensor.bh1750 docs]) (new-platform) +- LimitlessLED: Configurable fade-out behavior ([@SmilyOrg] - [#7369]) ([light.limitlessled docs]) (breaking change) +- Harmony auto discovery via netdisco ([@tony2nite] - [#7741]) ([remote.harmony docs]) +- Rfxtrx binary sensor ([@ypollart] - [#6794]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) (new-platform) +- Add support of Zone2 and Zone3 ([@scarface-4711] - [#8025]) ([media_player.denonavr docs]) +- Upgrade python-telegram-bot to 6.1.0 ([@fabaff] - [#8151]) ([telegram_bot docs]) +- Upgrade libsoundtouch to 0.6.2 ([@fabaff] - [#8149]) ([media_player.soundtouch docs]) +- Switch rachiopy to pypi ([@andrey-git] - [#8040]) ([switch.rachio docs]) +- ubus: Refresh session on Access denied ([@glance-] - [#8111]) +- Added invert flag for position for actuators that uses 100% for fully closed position ([@open-homeautomation] - [#8147]) +- add telegram_bot service: delete_message ([@azogue] - [#8153]) ([telegram_bot docs]) +- Fixed rfxtrx binary_sensor off command ([@basschipper] - [#8160]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) +- Use version 1.3 of radiotherm ([@twilde] - [#8164]) ([climate.radiotherm docs]) +- Tado climate device ([@wmalgadey] - [#8041]) ([tado docs]) ([climate.tado docs]) +- Add ClickSend notify service. ([@omarusman] - [#8135]) ([notify.clicksend docs]) (new-platform) +- Add libboost-python1.62-dev (fixes #7851) ([@fabaff] - [#7868]) +- Uninstall enum34 in python3.6 docker image ([@jeanregisser] - [#8103]) +- Revert "Add libboost-python1.62-dev (fixes #7851)" ([@balloob] - [#8182]) +- Add device tracker for Linksys Smart Wifi devices ([@mortenlj] - [#8144]) ([device_tracker.linksys_smart docs]) (new-platform) +- Update buienradar.py ([@lrmate] - [#8173]) ([sensor.buienradar docs]) +- Fix radiotherm model CT50 ([@tubaman] - [#8181]) ([climate.radiotherm docs]) +- Throw exception if _convert_for_display called on non Number ([@sdague] - [#8178]) ([climate docs]) ([climate.mysensors docs]) +- Added buienradar precipitation forecast average & total sensors ([@basschipper] - [#8171]) ([sensor.buienradar docs]) ([weather.buienradar docs]) +- Axis service vapix call ([@Kane610] - [#7794]) ([axis docs]) ([camera.axis docs]) +- added optional node_id to MQTT discovery ([@AlexMekkering] - [#8096]) +- Add offset option to sensor.gtfs ([@Kernald] - [#7980]) +- Switch to new zwave entity ids by default ([@armills] - [#8192]) ([zwave docs]) +- Pushed to version 0.5.1 of the library ([@scarface-4711] - [#8190]) ([media_player.denonavr docs]) +- Fix MySensors climate ([@balloob] - [#8193]) ([climate.mysensors docs]) +- Fix plants calling async methods from sync context ([@balloob] - [#8200]) +- Split mock_service ([@balloob] - [#8198]) +- add option to set content_type in camera.generic to support 'svg cameras' ([@azogue] - [#8188]) +- Remove unnecessary thread_ident assignment ([@armills] - [#8194]) +- Openhardwaremonitor ([@depl0y] - [#8056]) ([sensor.openhardwaremonitor docs]) (new-platform) +- Add security layer to send file output things ([@pvizeli] - [#8189]) (breaking change) +- Fix Plex component to use port number in discovery. ([@voltagex] - [#8197]) ([media_player.plex docs]) +- EntityComponent to retry platforms that are not ready yet ([@balloob] - [#8209]) +- WIP: Verisure app api ([@persandstrom] - [#7394]) ([verisure docs]) ([alarm_control_panel.verisure docs]) ([binary_sensor.verisure docs]) ([sensor.verisure docs]) ([switch.verisure docs]) (new-platform) +- guess the content_type in local_file cameras ([@azogue] - [#8217]) ([camera.local_file docs]) +- Improve executor pool size / speedup python 3.5 ([@pvizeli] - [#8215]) +- LIFX: Move light effects to external library ([@amelchio] - [#8222]) ([light.lifx docs]) (breaking change) +- Fixed mqtt subscription filter on sys $ topics ([@natemason] - [#8166]) ([mqtt docs]) +- telegram_bot platform to only send messages ([@azogue] - [#8186]) (new-platform) +- add percentage (DPT_Scaling) KNX sensors ([@tiktok7] - [#8168]) ([sensor.knx docs]) +- Fix homeassistant.start trigger ([@azogue] - [#8220]) +- Cleanup automations yaml ([@balloob] - [#8223]) +- Do not call update() in constructor ([@fabaff] - [#8148]) ([sensor.glances docs]) +- KNX Cover tilt control ([@open-homeautomation] - [#8159]) ([cover.knx docs]) +- Comfoconnect fan component ([@michaelarnauts] - [#8073]) ([comfoconnect docs]) ([fan.comfoconnect docs]) ([sensor.comfoconnect docs]) (new-platform) +- Upgrade python-digitalocean to 1.12 ([@fabaff] - [#8241]) ([digital_ocean docs]) +- update i2csense requirement ([@azogue] - [#8242]) ([sensor.bh1750 docs]) ([sensor.bme280 docs]) ([sensor.htu21d docs]) +- Update docstrings ([@fabaff] - [#8244]) ([comfoconnect docs]) ([fan.comfoconnect docs]) +- Do not call update() in constructor ([@fabaff] - [#8247]) ([binary_sensor.arest docs]) ([sensor.arest docs]) +- better logging to debug when a message is not sent ([@azogue] - [#8248]) ([telegram_bot docs]) +- LIFX: Small code cleanups ([@amelchio] - [#8228]) ([light.lifx docs]) +- Use 'hass.data' instead of global ([@fabaff] - [#8245]) ([digital_ocean docs]) ([binary_sensor.digital_ocean docs]) ([switch.digital_ocean docs]) +- Use constant and update ordering ([@fabaff] - [#8246]) ([arlo docs]) ([camera.arlo docs]) +- Add PlatformNotReady support for Sensibo ([@andrey-git] - [#8252]) ([climate.sensibo docs]) +- verisure component names ([@persandstrom] - [#8251]) ([binary_sensor.verisure docs]) ([camera.verisure docs]) ([lock.verisure docs]) ([switch.verisure docs]) +- further document add_node_secure ([@kentcalero] - [#8229]) +- Upgrade libnacl to 1.5.1 ([@fabaff] - [#8259]) ([device_tracker.owntracks docs]) +- Docker cleanup. ([@michaelarnauts] - [#8226]) +- Implement templates for covers ([@PhracturedBlue] - [#8100]) ([cover.template docs]) (new-platform) +- Adding done_message to alert ([@karlw00t] - [#8116]) ([alert docs]) +- Camera services arm disarm including Netgear Arlo ([@viswa-swami] - [#7961]) ([camera.arlo docs]) +- Update modbus.py ([@lrmate] - [#8256]) ([binary_sensor.modbus docs]) +- components.knx - KNXMultiAddressDevice corrections ([@tiktok7] - [#8275]) ([knx docs]) +- Snips ASR and NLU component ([@michaelfester] - [#8156]) ([snips docs]) (new-platform) +- Create an index on the states table to help hass startup time ([@cmsimike] - [#8255]) + +[#6794]: https://github.com/home-assistant/home-assistant/pull/6794 +[#6959]: https://github.com/home-assistant/home-assistant/pull/6959 +[#7369]: https://github.com/home-assistant/home-assistant/pull/7369 +[#7394]: https://github.com/home-assistant/home-assistant/pull/7394 +[#7741]: https://github.com/home-assistant/home-assistant/pull/7741 +[#7786]: https://github.com/home-assistant/home-assistant/pull/7786 +[#7794]: https://github.com/home-assistant/home-assistant/pull/7794 +[#7868]: https://github.com/home-assistant/home-assistant/pull/7868 +[#7899]: https://github.com/home-assistant/home-assistant/pull/7899 +[#7960]: https://github.com/home-assistant/home-assistant/pull/7960 +[#7961]: https://github.com/home-assistant/home-assistant/pull/7961 +[#7974]: https://github.com/home-assistant/home-assistant/pull/7974 +[#7980]: https://github.com/home-assistant/home-assistant/pull/7980 +[#7989]: https://github.com/home-assistant/home-assistant/pull/7989 +[#7997]: https://github.com/home-assistant/home-assistant/pull/7997 +[#8025]: https://github.com/home-assistant/home-assistant/pull/8025 +[#8027]: https://github.com/home-assistant/home-assistant/pull/8027 +[#8040]: https://github.com/home-assistant/home-assistant/pull/8040 +[#8041]: https://github.com/home-assistant/home-assistant/pull/8041 +[#8046]: https://github.com/home-assistant/home-assistant/pull/8046 +[#8047]: https://github.com/home-assistant/home-assistant/pull/8047 +[#8049]: https://github.com/home-assistant/home-assistant/pull/8049 +[#8050]: https://github.com/home-assistant/home-assistant/pull/8050 +[#8054]: https://github.com/home-assistant/home-assistant/pull/8054 +[#8056]: https://github.com/home-assistant/home-assistant/pull/8056 +[#8057]: https://github.com/home-assistant/home-assistant/pull/8057 +[#8058]: https://github.com/home-assistant/home-assistant/pull/8058 +[#8059]: https://github.com/home-assistant/home-assistant/pull/8059 +[#8063]: https://github.com/home-assistant/home-assistant/pull/8063 +[#8065]: https://github.com/home-assistant/home-assistant/pull/8065 +[#8066]: https://github.com/home-assistant/home-assistant/pull/8066 +[#8067]: https://github.com/home-assistant/home-assistant/pull/8067 +[#8068]: https://github.com/home-assistant/home-assistant/pull/8068 +[#8069]: https://github.com/home-assistant/home-assistant/pull/8069 +[#8070]: https://github.com/home-assistant/home-assistant/pull/8070 +[#8072]: https://github.com/home-assistant/home-assistant/pull/8072 +[#8073]: https://github.com/home-assistant/home-assistant/pull/8073 +[#8074]: https://github.com/home-assistant/home-assistant/pull/8074 +[#8075]: https://github.com/home-assistant/home-assistant/pull/8075 +[#8080]: https://github.com/home-assistant/home-assistant/pull/8080 +[#8081]: https://github.com/home-assistant/home-assistant/pull/8081 +[#8083]: https://github.com/home-assistant/home-assistant/pull/8083 +[#8084]: https://github.com/home-assistant/home-assistant/pull/8084 +[#8088]: https://github.com/home-assistant/home-assistant/pull/8088 +[#8090]: https://github.com/home-assistant/home-assistant/pull/8090 +[#8093]: https://github.com/home-assistant/home-assistant/pull/8093 +[#8096]: https://github.com/home-assistant/home-assistant/pull/8096 +[#8100]: https://github.com/home-assistant/home-assistant/pull/8100 +[#8101]: https://github.com/home-assistant/home-assistant/pull/8101 +[#8102]: https://github.com/home-assistant/home-assistant/pull/8102 +[#8103]: https://github.com/home-assistant/home-assistant/pull/8103 +[#8104]: https://github.com/home-assistant/home-assistant/pull/8104 +[#8110]: https://github.com/home-assistant/home-assistant/pull/8110 +[#8111]: https://github.com/home-assistant/home-assistant/pull/8111 +[#8113]: https://github.com/home-assistant/home-assistant/pull/8113 +[#8116]: https://github.com/home-assistant/home-assistant/pull/8116 +[#8118]: https://github.com/home-assistant/home-assistant/pull/8118 +[#8119]: https://github.com/home-assistant/home-assistant/pull/8119 +[#8120]: https://github.com/home-assistant/home-assistant/pull/8120 +[#8121]: https://github.com/home-assistant/home-assistant/pull/8121 +[#8124]: https://github.com/home-assistant/home-assistant/pull/8124 +[#8125]: https://github.com/home-assistant/home-assistant/pull/8125 +[#8126]: https://github.com/home-assistant/home-assistant/pull/8126 +[#8129]: https://github.com/home-assistant/home-assistant/pull/8129 +[#8131]: https://github.com/home-assistant/home-assistant/pull/8131 +[#8132]: https://github.com/home-assistant/home-assistant/pull/8132 +[#8134]: https://github.com/home-assistant/home-assistant/pull/8134 +[#8135]: https://github.com/home-assistant/home-assistant/pull/8135 +[#8138]: https://github.com/home-assistant/home-assistant/pull/8138 +[#8139]: https://github.com/home-assistant/home-assistant/pull/8139 +[#8143]: https://github.com/home-assistant/home-assistant/pull/8143 +[#8144]: https://github.com/home-assistant/home-assistant/pull/8144 +[#8147]: https://github.com/home-assistant/home-assistant/pull/8147 +[#8148]: https://github.com/home-assistant/home-assistant/pull/8148 +[#8149]: https://github.com/home-assistant/home-assistant/pull/8149 +[#8151]: https://github.com/home-assistant/home-assistant/pull/8151 +[#8153]: https://github.com/home-assistant/home-assistant/pull/8153 +[#8156]: https://github.com/home-assistant/home-assistant/pull/8156 +[#8159]: https://github.com/home-assistant/home-assistant/pull/8159 +[#8160]: https://github.com/home-assistant/home-assistant/pull/8160 +[#8164]: https://github.com/home-assistant/home-assistant/pull/8164 +[#8166]: https://github.com/home-assistant/home-assistant/pull/8166 +[#8168]: https://github.com/home-assistant/home-assistant/pull/8168 +[#8171]: https://github.com/home-assistant/home-assistant/pull/8171 +[#8173]: https://github.com/home-assistant/home-assistant/pull/8173 +[#8178]: https://github.com/home-assistant/home-assistant/pull/8178 +[#8181]: https://github.com/home-assistant/home-assistant/pull/8181 +[#8182]: https://github.com/home-assistant/home-assistant/pull/8182 +[#8186]: https://github.com/home-assistant/home-assistant/pull/8186 +[#8188]: https://github.com/home-assistant/home-assistant/pull/8188 +[#8189]: https://github.com/home-assistant/home-assistant/pull/8189 +[#8190]: https://github.com/home-assistant/home-assistant/pull/8190 +[#8192]: https://github.com/home-assistant/home-assistant/pull/8192 +[#8193]: https://github.com/home-assistant/home-assistant/pull/8193 +[#8194]: https://github.com/home-assistant/home-assistant/pull/8194 +[#8197]: https://github.com/home-assistant/home-assistant/pull/8197 +[#8198]: https://github.com/home-assistant/home-assistant/pull/8198 +[#8200]: https://github.com/home-assistant/home-assistant/pull/8200 +[#8209]: https://github.com/home-assistant/home-assistant/pull/8209 +[#8215]: https://github.com/home-assistant/home-assistant/pull/8215 +[#8217]: https://github.com/home-assistant/home-assistant/pull/8217 +[#8220]: https://github.com/home-assistant/home-assistant/pull/8220 +[#8222]: https://github.com/home-assistant/home-assistant/pull/8222 +[#8223]: https://github.com/home-assistant/home-assistant/pull/8223 +[#8226]: https://github.com/home-assistant/home-assistant/pull/8226 +[#8228]: https://github.com/home-assistant/home-assistant/pull/8228 +[#8229]: https://github.com/home-assistant/home-assistant/pull/8229 +[#8241]: https://github.com/home-assistant/home-assistant/pull/8241 +[#8242]: https://github.com/home-assistant/home-assistant/pull/8242 +[#8244]: https://github.com/home-assistant/home-assistant/pull/8244 +[#8245]: https://github.com/home-assistant/home-assistant/pull/8245 +[#8246]: https://github.com/home-assistant/home-assistant/pull/8246 +[#8247]: https://github.com/home-assistant/home-assistant/pull/8247 +[#8248]: https://github.com/home-assistant/home-assistant/pull/8248 +[#8251]: https://github.com/home-assistant/home-assistant/pull/8251 +[#8252]: https://github.com/home-assistant/home-assistant/pull/8252 +[#8255]: https://github.com/home-assistant/home-assistant/pull/8255 +[#8256]: https://github.com/home-assistant/home-assistant/pull/8256 +[#8259]: https://github.com/home-assistant/home-assistant/pull/8259 +[#8275]: https://github.com/home-assistant/home-assistant/pull/8275 +[@AlexMekkering]: https://github.com/AlexMekkering +[@CharlesBlonde]: https://github.com/CharlesBlonde +[@Kane610]: https://github.com/Kane610 +[@Kernald]: https://github.com/Kernald +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@SConaway]: https://github.com/SConaway +[@SmilyOrg]: https://github.com/SmilyOrg +[@alanfischer]: https://github.com/alanfischer +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@aronsky]: https://github.com/aronsky +[@auchter]: https://github.com/auchter +[@azogue]: https://github.com/azogue +[@balloob]: https://github.com/balloob +[@basschipper]: https://github.com/basschipper +[@cmsimike]: https://github.com/cmsimike +[@cyberplant]: https://github.com/cyberplant +[@depl0y]: https://github.com/depl0y +[@dgomes]: https://github.com/dgomes +[@fabaff]: https://github.com/fabaff +[@finish06]: https://github.com/finish06 +[@glance-]: https://github.com/glance- +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@jawilson]: https://github.com/jawilson +[@jeanregisser]: https://github.com/jeanregisser +[@jjmontestl]: https://github.com/jjmontestl +[@jshore1296]: https://github.com/jshore1296 +[@karlw00t]: https://github.com/karlw00t +[@kentcalero]: https://github.com/kentcalero +[@lrmate]: https://github.com/lrmate +[@lunar-consultancy]: https://github.com/lunar-consultancy +[@madpilot]: https://github.com/madpilot +[@mezz64]: https://github.com/mezz64 +[@michaelarnauts]: https://github.com/michaelarnauts +[@michaelfester]: https://github.com/michaelfester +[@mortenlj]: https://github.com/mortenlj +[@natemason]: https://github.com/natemason +[@omarusman]: https://github.com/omarusman +[@open-homeautomation]: https://github.com/open-homeautomation +[@perosb]: https://github.com/perosb +[@persandstrom]: https://github.com/persandstrom +[@pezinek]: https://github.com/pezinek +[@philhawthorne]: https://github.com/philhawthorne +[@pvizeli]: https://github.com/pvizeli +[@scarface-4711]: https://github.com/scarface-4711 +[@sdague]: https://github.com/sdague +[@sn0oz]: https://github.com/sn0oz +[@tiktok7]: https://github.com/tiktok7 +[@titilambert]: https://github.com/titilambert +[@tony2nite]: https://github.com/tony2nite +[@tsvi]: https://github.com/tsvi +[@tubaman]: https://github.com/tubaman +[@twilde]: https://github.com/twilde +[@viswa-swami]: https://github.com/viswa-swami +[@voltagex]: https://github.com/voltagex +[@wmalgadey]: https://github.com/wmalgadey +[@ypollart]: https://github.com/ypollart +[alarm_control_panel.verisure docs]: /components/alarm_control_panel.verisure/ +[alert docs]: /components/alert/ +[arlo docs]: /components/arlo/ +[axis docs]: /components/axis/ +[binary_sensor.arest docs]: /components/binary_sensor.arest/ +[binary_sensor.digital_ocean docs]: /components/binary_sensor.digital_ocean/ +[binary_sensor.modbus docs]: /components/binary_sensor.modbus/ +[binary_sensor.rfxtrx docs]: /components/binary_sensor.rfxtrx/ +[binary_sensor.verisure docs]: /components/binary_sensor.verisure/ +[calendar.google docs]: /components/calendar.google/ +[camera.arlo docs]: /components/camera.arlo/ +[camera.axis docs]: /components/camera.axis/ +[camera.local_file docs]: /components/camera.local_file/ +[camera.verisure docs]: /components/camera.verisure/ +[climate docs]: /components/climate/ +[climate.mysensors docs]: /components/climate.mysensors/ +[climate.radiotherm docs]: /components/climate.radiotherm/ +[climate.sensibo docs]: /components/climate.sensibo/ +[climate.tado docs]: /components/climate.tado/ +[comfoconnect docs]: /components/comfoconnect/ +[cover.knx docs]: /components/cover.knx/ +[cover.template docs]: /components/cover.template/ +[device_tracker.linksys_smart docs]: /components/device_tracker.linksys_smart/ +[device_tracker.mikrotik docs]: /components/device_tracker.mikrotik/ +[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ +[device_tracker.unifi docs]: /components/device_tracker.unifi/ +[digital_ocean docs]: /components/digital_ocean/ +[fan.comfoconnect docs]: /components/fan.comfoconnect/ +[fan.dyson docs]: /components/fan.dyson/ +[fan.insteon_local docs]: /components/fan.insteon_local/ +[group docs]: /components/group/ +[image_processing.opencv docs]: /components/image_processing.opencv/ +[influxdb docs]: /components/influxdb/ +[insteon_hub docs]: /components/insteon_hub/ +[insteon_local docs]: /components/insteon_local/ +[knx docs]: /components/knx/ +[light.decora docs]: /components/light.decora/ +[light.isy994 docs]: /components/light.isy994/ +[light.lifx docs]: /components/light.lifx/ +[light.limitlessled docs]: /components/light.limitlessled/ +[light.vera docs]: /components/light.vera/ +[light.zwave docs]: /components/light.zwave/ +[lock.verisure docs]: /components/lock.verisure/ +[media_player.denonavr docs]: /components/media_player.denonavr/ +[media_player.emby docs]: /components/media_player.emby/ +[media_player.kodi docs]: /components/media_player.kodi/ +[media_player.mpd docs]: /components/media_player.mpd/ +[media_player.plex docs]: /components/media_player.plex/ +[media_player.soundtouch docs]: /components/media_player.soundtouch/ +[mqtt docs]: /components/mqtt/ +[mqtt.discovery docs]: /components/mqtt.discovery/ +[notify.clicksend docs]: /components/notify.clicksend/ +[notify.html5 docs]: /components/notify.html5/ +[notify.smtp docs]: /components/notify.smtp/ +[plant docs]: /components/plant/ +[python_script docs]: /components/python_script/ +[recorder docs]: /components/recorder/ +[recorder.migration docs]: /components/recorder.migration/ +[recorder.models docs]: /components/recorder.models/ +[remote.harmony docs]: /components/remote.harmony/ +[remote.itach docs]: /components/remote.itach/ +[rfxtrx docs]: /components/rfxtrx/ +[sensor.arest docs]: /components/sensor.arest/ +[sensor.bh1750 docs]: /components/sensor.bh1750/ +[sensor.bme280 docs]: /components/sensor.bme280/ +[sensor.buienradar docs]: /components/sensor.buienradar/ +[sensor.comfoconnect docs]: /components/sensor.comfoconnect/ +[sensor.dyson docs]: /components/sensor.dyson/ +[sensor.glances docs]: /components/sensor.glances/ +[sensor.htu21d docs]: /components/sensor.htu21d/ +[sensor.hydroquebec docs]: /components/sensor.hydroquebec/ +[sensor.knx docs]: /components/sensor.knx/ +[sensor.netdata docs]: /components/sensor.netdata/ +[sensor.openhardwaremonitor docs]: /components/sensor.openhardwaremonitor/ +[sensor.openweathermap docs]: /components/sensor.openweathermap/ +[sensor.pi_hole docs]: /components/sensor.pi_hole/ +[sensor.upnp docs]: /components/sensor.upnp/ +[sensor.ups docs]: /components/sensor.ups/ +[sensor.usps docs]: /components/sensor.usps/ +[sensor.verisure docs]: /components/sensor.verisure/ +[sensor.wunderground docs]: /components/sensor.wunderground/ +[shiftr docs]: /components/shiftr/ +[snips docs]: /components/snips/ +[switch.digital_ocean docs]: /components/switch.digital_ocean/ +[switch.rachio docs]: /components/switch.rachio/ +[switch.verisure docs]: /components/switch.verisure/ +[switch.wake_on_lan docs]: /components/switch.wake_on_lan/ +[tado docs]: /components/tado/ +[telegram_bot docs]: /components/telegram_bot/ +[telegram_bot.webhooks docs]: /components/telegram_bot.webhooks/ +[tellduslive docs]: /components/tellduslive/ +[tts docs]: /components/tts/ +[upnp docs]: /components/upnp/ +[vera docs]: /components/vera/ +[verisure docs]: /components/verisure/ +[weather.buienradar docs]: /components/weather.buienradar/ +[zwave docs]: /components/zwave/ +[forum]: https://community.home-assistant.io/ +[gitter]: https://gitter.im/home-assistant/home-assistant +[issue]: https://github.com/home-assistant/home-assistant/issues diff --git a/source/components/index.html b/source/components/index.html index 410f4cda0a7..836e3152dcb 100644 --- a/source/components/index.html +++ b/source/components/index.html @@ -10,7 +10,7 @@ footer: true is_homepage: true hide_github_edit: true body_id: components-page -regenerate: true +regenerate: false --- {% assign count = site.components | size %} diff --git a/source/images/blog/2017-07-0.48/components.png b/source/images/blog/2017-07-0.48/components.png new file mode 100644 index 0000000000000000000000000000000000000000..d29afcfe63ddf5aedf981142ec9d4c41161663b4 GIT binary patch literal 77663 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%0DsxbhL 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 literal 0 HcmV?d00001 From 8899ffda932e7bcda0a93c33adb52e52a6d83e20 Mon Sep 17 00:00:00 2001 From: mauriciobonani Date: Sun, 2 Jul 2017 06:05:13 -0400 Subject: [PATCH 37/42] Inconsistency fix (#2907) --- .../turn_on_light_for_10_minutes_when_motion_detected.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 4da386bbbc9..34a244aaa57 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 @@ -23,7 +23,7 @@ automation: to: 'on' action: service: homeassistant.turn_on - entity_id: light.kitchen + entity_id: light.kitchen_light - alias: Turn off kitchen light 10 minutes after last movement trigger: From bc02116da79f9d7c22d152065df798f92429bc8c Mon Sep 17 00:00:00 2001 From: Open Home Automation Date: Sun, 2 Jul 2017 12:06:01 +0200 Subject: [PATCH 38/42] Move KNX sensor to correct category (sensor) (#2918) --- source/_components/sensor.knx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.knx.markdown b/source/_components/sensor.knx.markdown index 6fee026f346..535f5bf3b3e 100644 --- a/source/_components/sensor.knx.markdown +++ b/source/_components/sensor.knx.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: knx.png -ha_category: DIY +ha_category: Sensor ha_release: 0.29 ha_iot_class: "Local Push" --- From 84376a98c599e6c552d257b4de03271c765461d5 Mon Sep 17 00:00:00 2001 From: Open Home Automation Date: Sun, 2 Jul 2017 12:06:27 +0200 Subject: [PATCH 39/42] Move KNX thermostat to correct category (climate) (#2917) --- source/_components/climate.knx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/climate.knx.markdown b/source/_components/climate.knx.markdown index 6297448c231..9f951ad4990 100644 --- a/source/_components/climate.knx.markdown +++ b/source/_components/climate.knx.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: knx.png -ha_category: DIY +ha_category: Climate ha_release: 0.25 ha_iot_class: "Local Polling" --- From d457976845b3d45ad1ef5055d665c6beb8949a9e Mon Sep 17 00:00:00 2001 From: Open Home Automation Date: Sun, 2 Jul 2017 12:07:00 +0200 Subject: [PATCH 40/42] Move to correct category (#2916) --- source/_components/switch.knx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/switch.knx.markdown b/source/_components/switch.knx.markdown index ea0789f6fd8..32a054b187b 100644 --- a/source/_components/switch.knx.markdown +++ b/source/_components/switch.knx.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: knx.png -ha_category: DIY +ha_category: Switch ha_release: 0.24 ha_iot_class: "Local Polling" --- From 1759e1cae86124d7aad11e0b75d19e47cdcdb250 Mon Sep 17 00:00:00 2001 From: Open Home Automation Date: Sun, 2 Jul 2017 12:07:23 +0200 Subject: [PATCH 41/42] Move to correct category (#2915) --- source/_components/light.knx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/light.knx.markdown b/source/_components/light.knx.markdown index 359912a3777..5726fc8ace7 100644 --- a/source/_components/light.knx.markdown +++ b/source/_components/light.knx.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: knx.png -ha_category: DIY +ha_category: Light ha_release: 0.44 ha_iot_class: "Local Polling" --- From 3063e570085e4481d2291e8cba07367576a6f473 Mon Sep 17 00:00:00 2001 From: Brent Saltzman Date: Sun, 2 Jul 2017 05:10:31 -0500 Subject: [PATCH 42/42] Clarify how to hide the group control switch (#2910) Not clear that value to "Control" should be "hidden" (not true/false) --- source/_components/group.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/group.markdown b/source/_components/group.markdown index 78005f8fb4c..ea8d1f7c221 100644 --- a/source/_components/group.markdown +++ b/source/_components/group.markdown @@ -59,7 +59,7 @@ Configuration variables: - **view** (*Optional*): If yes then the entry will be shown as a view (tab) at the top. - **name** (*Optional*): Name of the group. - **icon** (*Optional*): If the group is a view, this icon will show at the top in the frontend instead of the name. If it's not a view, then the icon shows when this group is used in another group. -- **control** (*Optional*): If hidden then the group switch will be hidden. +- **control** (*Optional*): Set value to `hidden`. If hidden then the group switch will be hidden. - **entities** (*Required*): array or comma delimited string, list of entities to group.