From fc35bd0497b863e06776c17da9669c514920c5ca Mon Sep 17 00:00:00 2001 From: GreenTurtwig Date: Sun, 16 Jul 2017 14:46:37 +0100 Subject: [PATCH 01/71] Update with correct usage of hex colorrs for themes --- source/_posts/2017-07-16-release-49.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2017-07-16-release-49.markdown b/source/_posts/2017-07-16-release-49.markdown index 821b818fa6b..10ab8ca15e9 100644 --- a/source/_posts/2017-07-16-release-49.markdown +++ b/source/_posts/2017-07-16-release-49.markdown @@ -23,7 +23,7 @@ You can specify themes using new configuration options under frontend. frontend: themes: green: - primary-color: #6ca518; + primary-color: "#6CA518" ``` Once a theme is defined, use the new frontend service `frontend.set_theme` to activate it. More information in [the docs][frontend docs]. From b6b4ff80d80901b0021107b47991bd167474f06d Mon Sep 17 00:00:00 2001 From: Alok Saboo Date: Sun, 16 Jul 2017 10:38:32 -0400 Subject: [PATCH 02/71] Fixed typos in media_extractor docs (#2992) --- source/_components/media_extractor.markdown | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/source/_components/media_extractor.markdown b/source/_components/media_extractor.markdown index 812a00f2e17..888568ac343 100644 --- a/source/_components/media_extractor.markdown +++ b/source/_components/media_extractor.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Media Extractor" -description: "Instructions how to integrate the Media Extrator into Home Assistant." +description: "Instructions how to integrate the Media Extractor into Home Assistant." date: 2017-07-12 07:00 sidebar: true comments: false @@ -15,7 +15,7 @@ ha_release: 0.49 The `media_extractor` component gets an stream URL and send it to a media player entity. -To use the media extrator service in your installation, add the following to your `configuration.yaml` file: +To use the media extractor service in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -30,8 +30,6 @@ This will download the file from the given URL. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | Name(s) of entities to seek media on, eg. `media_player.living_room_chromecast`. Defaults to all. +| `entity_id` | yes | Name(s) of entities to seek media on, e.g., `media_player.living_room_chromecast`. Defaults to all. | `media_content_id` | no | The ID of the content to play. Platform dependent. | `media_content_type` | no | The type of the content to play. Must be one of MUSIC, TVSHOW, VIDEO, EPISODE, CHANNEL or PLAYLIST MUSIC. - - From 521f6cc877a64cfc6b4ee1f790f650ca7f104afc Mon Sep 17 00:00:00 2001 From: rpitera Date: Sun, 16 Jul 2017 10:38:49 -0400 Subject: [PATCH 03/71] Fix link to readme file (#2991) Correct link to readme from README.md to README.rst. --- source/_docs/ecosystem/appdaemon.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown index 00bedb9e40f..01395996c39 100755 --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -107,7 +107,7 @@ Of course if I wanted to make this App or its predecessor reusable I would have In addition, Apps can write to `AppDaemon`'s logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple. -For full installation instructions, see [README.md](https://github.com/home-assistant/appdaemon/blob/dev/README.md) in the `AppDaemon` repository. +For full installation instructions, see [README.md](https://github.com/home-assistant/appdaemon/blob/dev/README.rst) in the `AppDaemon` repository. There is also full documentation for the API and associated configuration in [API.md](https://github.com/home-assistant/appdaemon/blob/dev/API.md). From ae531f7af7708d53059fcf34b1ceabc717a5885d Mon Sep 17 00:00:00 2001 From: Open Home Automation Date: Sun, 16 Jul 2017 16:40:08 +0200 Subject: [PATCH 04/71] Update notify.lametric.markdown (#2987) --- source/_components/notify.lametric.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_components/notify.lametric.markdown b/source/_components/notify.lametric.markdown index 70ad2a4cdc0..53a3e96f5b9 100644 --- a/source/_components/notify.lametric.markdown +++ b/source/_components/notify.lametric.markdown @@ -11,6 +11,8 @@ ha_category: Notify ha_release: 0.49 --- +This component allows to send notification to a LaMetric device. It need the LaMetric platform to be configured first. + ```yaml notify: name: lametric1 @@ -18,3 +20,8 @@ notify: display_time: 20 icon: i555 ``` + +- **name** (*Optional*): The name of the LaMetric device. Usually it is "My Lametric" +- **display_time** (*Optional*): Defines how long the message should be displayed (in seconds). +- **icon** (*Optional*): An icon or animation. Check out the list of all icons her: https://developer.lametric.com/icons +Note that icons always begin with "i" while animations begin with "a". This is part of the name, you can't just use the number. From 1f0983eb72283d578fd2b91cb56802c2b3b79448 Mon Sep 17 00:00:00 2001 From: Open Home Automation Date: Sun, 16 Jul 2017 16:40:12 +0200 Subject: [PATCH 05/71] Update lametric.markdown (#2986) --- source/_components/lametric.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/_components/lametric.markdown b/source/_components/lametric.markdown index 36d6b6d4868..a74e64f5ce8 100644 --- a/source/_components/lametric.markdown +++ b/source/_components/lametric.markdown @@ -11,6 +11,14 @@ ha_category: Hub ha_release: 0.49 --- +[LaMetric Time](http://lametric.com) is a smart clock that can be used to access applications, listen to web radio and display notifications. + +There is currently support for the following device types within Home Assistant: + +- [Notify](/components/notify.lametric) + +The LaMetric Time can only be accessed by authorized applications. Therefore, each application that wants to access the LaMetric time needs to be registered at the LaMetric Developer webpage. Sign Up and login to the developer webpage. Click the Create button in the upper right corner, then select Notification App and click Create again. Enter an app name, a description and a redirect URL. Finally, click Save to create the application. For the newly created app you will obtain a client id and a client secret that is required in the following configuration. + ```yaml # configuration.yaml example lametric: From 95fac389858a3e81b5321e01cdaefd8b34a575f5 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 16 Jul 2017 07:42:11 -0700 Subject: [PATCH 06/71] Fix London Underground --- source/_components/ha.markdown | 19 ------------------- .../sensor.london_underground.markdown | 2 +- 2 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 source/_components/ha.markdown diff --git a/source/_components/ha.markdown b/source/_components/ha.markdown deleted file mode 100644 index ec4168a82ce..00000000000 --- a/source/_components/ha.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Home Assistant 0.49" -description: "" -date: 2016-12-16 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Other -ha_release: 0.49 ---- - -Details about the latest release can always be found at: - -- [Release blog posts](https://home-assistant.io/blog/categories/release-notes/) -- [GitHub releases](https://github.com/home-assistant/home-assistant/releases) -- [Python Package Index](https://pypi.python.org/pypi/homeassistant/) diff --git a/source/_components/sensor.london_underground.markdown b/source/_components/sensor.london_underground.markdown index a9139412989..f540ded26e7 100644 --- a/source/_components/sensor.london_underground.markdown +++ b/source/_components/sensor.london_underground.markdown @@ -2,7 +2,7 @@ layout: page title: "London Undergound" description: "Display the current status of London underground & overground lines within Home Assistant." -date: 2017-07-30 18:45 +date: 2017-07-15 18:45 sidebar: true comments: false sharing: true From 85b755c91e4ffffb435f610b8bb5669b1b0109bb Mon Sep 17 00:00:00 2001 From: Rowan Date: Sun, 16 Jul 2017 15:57:53 +0100 Subject: [PATCH 07/71] Added logos for LaMetric and CityBikes --- source/_components/lametric.markdown | 1 + source/_components/notify.lametric.markdown | 3 ++- source/_components/sensor.citybikes.markdown | 1 + source/images/supported_brands/citybikes.png | Bin 0 -> 11908 bytes source/images/supported_brands/lametric.png | Bin 0 -> 4969 bytes 5 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 source/images/supported_brands/citybikes.png create mode 100644 source/images/supported_brands/lametric.png diff --git a/source/_components/lametric.markdown b/source/_components/lametric.markdown index a74e64f5ce8..0f172ad40de 100644 --- a/source/_components/lametric.markdown +++ b/source/_components/lametric.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +logo: lametric.png ha_category: Hub ha_release: 0.49 --- diff --git a/source/_components/notify.lametric.markdown b/source/_components/notify.lametric.markdown index 53a3e96f5b9..8adb8c094eb 100644 --- a/source/_components/notify.lametric.markdown +++ b/source/_components/notify.lametric.markdown @@ -7,7 +7,8 @@ sidebar: true comments: false sharing: true footer: true -ha_category: Notify +logo: lametric.png +ha_category: Notifications ha_release: 0.49 --- diff --git a/source/_components/sensor.citybikes.markdown b/source/_components/sensor.citybikes.markdown index 44a222ddc7a..d924831da61 100644 --- a/source/_components/sensor.citybikes.markdown +++ b/source/_components/sensor.citybikes.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +logo: citybikes.png ha_category: Sensor ha_release: 0.49 --- diff --git a/source/images/supported_brands/citybikes.png b/source/images/supported_brands/citybikes.png new file mode 100644 index 0000000000000000000000000000000000000000..e214866fef40a803ad478fd1bc2b95b5c90f3634 GIT binary patch literal 11908 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 KMNUMnLSTZyU4ttC literal 0 HcmV?d00001 diff --git a/source/images/supported_brands/lametric.png b/source/images/supported_brands/lametric.png new file mode 100644 index 0000000000000000000000000000000000000000..5e8e319a6bf5892791237eda2ca4d64a284b00d2 GIT binary patch literal 4969 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 Date: Sun, 16 Jul 2017 17:41:08 +0200 Subject: [PATCH 08/71] LIFX: add zones attribute (#2804) --- source/_components/light.lifx.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/light.lifx.markdown b/source/_components/light.lifx.markdown index a8d5d3bb1ba..805cb67e680 100644 --- a/source/_components/light.lifx.markdown +++ b/source/_components/light.lifx.markdown @@ -41,6 +41,7 @@ Change the light to a new state. | ---------------------- | ----------- | | `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. | `transition` | Duration (in seconds) for the light to fade to the new state. +| `zones` | List of integers for the zone numbers to affect (each LIFX Z strip has 8 zones, starting at 0). | `infrared` | Automatic infrared level (0..255) when light brightness is low (for compatible bulbs). | `power` | Turn the light on (`True`) or off (`False`). Leave out to keep the power as it is. | `...` | Use `color_name`, `brightness` etc. from [`light.turn_on`]({{site_root}}/components/light/#service-lightturn_on) to specify the new state. From b4cfed174cdbaa4b78dbb938a27a8cbdc3376bb4 Mon Sep 17 00:00:00 2001 From: Rowan Date: Sun, 16 Jul 2017 16:49:09 +0100 Subject: [PATCH 09/71] Fix Yeelight Sunflower and Xiaomi vacuum logos --- source/_components/light.yeelightsunflower.markdown | 1 + source/_components/switch.xiaomi_vacuum.markdown | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/light.yeelightsunflower.markdown b/source/_components/light.yeelightsunflower.markdown index 97d2a0a6d2e..1b0e441970d 100644 --- a/source/_components/light.yeelightsunflower.markdown +++ b/source/_components/light.yeelightsunflower.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +logo: yeelight.png ha_category: Light ha_release: 0.39 ha_iot_class: "Local Polling" diff --git a/source/_components/switch.xiaomi_vacuum.markdown b/source/_components/switch.xiaomi_vacuum.markdown index 151a1ff47e3..f0be339ee8d 100644 --- a/source/_components/switch.xiaomi_vacuum.markdown +++ b/source/_components/switch.xiaomi_vacuum.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -logo: xiaomi_vacuum.png +logo: xiaomi.png ha_category: Switch ha_release: 0.48 --- From c6ac411d1f978699d3a2b62bb72d930240978033 Mon Sep 17 00:00:00 2001 From: Rowan Date: Sun, 16 Jul 2017 16:56:06 +0100 Subject: [PATCH 10/71] Added logos for Dublin Bus and London Underground --- .../sensor.dublin_bus_transport.markdown | 2 +- .../sensor.london_underground.markdown | 2 +- source/images/supported_brands/dublin_bus.jpg | Bin 0 -> 5885 bytes .../supported_brands/london_underground.png | Bin 0 -> 8833 bytes 4 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 source/images/supported_brands/dublin_bus.jpg create mode 100644 source/images/supported_brands/london_underground.png diff --git a/source/_components/sensor.dublin_bus_transport.markdown b/source/_components/sensor.dublin_bus_transport.markdown index d009ea2bef7..3b3161cdf10 100644 --- a/source/_components/sensor.dublin_bus_transport.markdown +++ b/source/_components/sensor.dublin_bus_transport.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -logo: train.png +logo: dublin_bus.jpg ha_category: Transport ha_iot_class: "Cloud Polling" ha_release: 0.36 diff --git a/source/_components/sensor.london_underground.markdown b/source/_components/sensor.london_underground.markdown index f540ded26e7..ea849275426 100644 --- a/source/_components/sensor.london_underground.markdown +++ b/source/_components/sensor.london_underground.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -logo: train.png +logo: london_underground.png ha_category: Transport ha_iot_class: "Cloud Polling" ha_release: 0.49 diff --git a/source/images/supported_brands/dublin_bus.jpg b/source/images/supported_brands/dublin_bus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..798fb51f181051ccc0dd3d164e4330527118281f GIT binary patch literal 5885 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 De9Tju literal 0 HcmV?d00001 From a4418da1749dc0d7a8b29bcd4b7bd48906d65487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Sun, 16 Jul 2017 18:02:48 +0200 Subject: [PATCH 11/71] Update Apple TV documentation (#2858) --- .../media_player.apple_tv.markdown | 82 +++++++++++++++++- .../components/apple_tv/authenticate.png | Bin 0 -> 125100 bytes .../components/apple_tv/credentials.png | Bin 0 -> 59482 bytes 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 source/images/components/apple_tv/authenticate.png create mode 100644 source/images/components/apple_tv/credentials.png diff --git a/source/_components/media_player.apple_tv.markdown b/source/_components/media_player.apple_tv.markdown index 9b49da82a6c..ea6a03173b6 100644 --- a/source/_components/media_player.apple_tv.markdown +++ b/source/_components/media_player.apple_tv.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: apple.png ha_category: Media Player -ha_iot_class: "Local Polling" +ha_iot_class: "Local Push" ha_release: 0.38 featured: true --- @@ -28,6 +28,8 @@ media_player: - platform: apple_tv host: IP_ADDRESS login_id: LOGIN_ID + start_off: false + credentials: CREDENTIALS ``` Configuration variables: @@ -35,6 +37,8 @@ Configuration variables: - **host** (*Required*): The IP-address of the device - **login_id** (*Required*): An identifier used to login to the device, see below - **name** (*Optional*): The name of the device used in the frontend +- **start_off** (*Optional*): Set to true if device should start in fake standby +- **credentials** (*Optional*): Credentials used for AirPlay playback In order to connect to the device you need a *login id*. The easiest way to obtain this identifier is to use the application ``atvremote``. It should be available in the same environment as you installed Home-Assistant. To install this utility, run ``pip3 install --upgrade pyatv``. The run atvremote scan for all devices (try again if a device is missing): @@ -42,10 +46,84 @@ In order to connect to the device you need a *login id*. The easiest way to obta $ atvremote scan Found Apple TVs: - Apple TV at 10.0.10.22 (login id: 00000000-1234-5678-9012-345678901234) + +Note: You must use 'pair' with devices that have home sharing disabled ``` -Just copy and paste the login id from the device you want to add. For more details about `atvremote`, see: [this page](https://github.com/postlund/pyatv/blob/master/docs/atvremote.rst). +Just copy and paste the login id from the device you want to add. For more details about `atvremote`, see: [this page](http://pyatv.readthedocs.io/en/master/atvremote.html). + +## {% linkable_title Guides %} + +### {% linkable_title My Apple TV turns on when I restart Home Assistant %} + +The Apple TV will automatically turn on if a request is sent to it, e.g. if a button is pressed, something is streamed to it via AirPlay or if current state (currently playing) is accessed. This is how Apple has designed it and it will cause problems if you are using HDMI CEC. Every time Home Assistant is started, a new request is sent to the device to figure out what is currently playing. When using CEC, this will wake up your TV and other devices you have configured. + +So, if your TV is randomly turning on, this is probably the reason. As stated, this is by design and there is no real fix for it. There's also no known way to turn off the Apple TV via the procotol used for communication. You basically have the following options: + +- Do not use this platform +- Disable HDMI CEC on your Apple TV +- Use "fake standby" + +The first two points are quite obvious. Fake standby is a concept implemented in this platform that disables all requests to the device and make it appear as being "off" in the web interface. This will make sure that the device is not woken up, but it will of course not show any information or allow you to control it. It is however easy to turn it on (or off) in the web interface or using an automation with `turn_on`. To make it more useful, you can write automations that turns it on or off depending on some other device, like the input source on your receiver. + +To put a device into fake standby when starting Home Assistant, add `start_off: true` to your configuration. + +

+Turning the device on/off in the user interface will *not* turn the physical device on/off according to description above. +

+ + +### {% linkable_title Setting up device authentication %} + +If you, when playing media with `play_url`, get the following error message: + +*“This AirPlay connection requires iOS 7.1 or later, OS X 10.10 or later, or iTunes 11.2 or later.”* + +then device authentication is required. Press the icon in the upper left corner and select the leftmost icon according to the image below: + + + +Select `media_player` as domain, `apple_tv_authenticate` as service and enter `{'entity_id': 'XXX'}` into "Service Data", but replace XXX with the entity id of your device (e.g. `media_player.apple_tv`). Press the button and hopefully you are presented with an input dialog asking for a pin code: + + + +If no dialog appears, go back to the states view and show it from there. A PIN code should now be visible on your TV, just enter it into the dialog and press "Confirm". You should see if it succeeded in the state view: + + + +Copy the credentials and insert it into your configuration (make sure you copy everything, it should be 81 characters): + +```yaml +# Example configuration.yaml entry +media_player: + - platform: apple_tv + host: 10.0.0.20 + login_id: 00000000-1234-5678-9012-345678901234 + credentials: 1B8C387DDB59BDF6:CF5ABB6A2C070688F5926ADB7C010F6DF847252C15F9BDB6DA3E09D6591E90E5 +``` + +Restart Home Assistant and now you should be able to use `play_url` as before. + +## {% linkable_title Services %} + +### {% linkable_title Service `apple_tv_authenticate` %} + +In order to play media on an Apple TV with device authentication enabled (e.g. ATV4 with tvOS 10.2+), Home Assistant must properly authenticated. This method starts the process and presents the credentials needed for playback as a persistent notification. Please see guide above for usage. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of Apple TVs. + +### {% linkable_title Service `apple_tv_press_buttons` %} + +Send one or more button presses to the device. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of Apple TVs. +| `buttons` | no | List of buttons. Supported buttons are: `up`, `down`, `left`, `right`, `menu`, `top_menu` and `select`. ## {% linkable_title Notes and Limitations %} - Pairing is currently not supported +- Updates is sometimes not propagated correctly on ATV4 \ No newline at end of file diff --git a/source/images/components/apple_tv/authenticate.png b/source/images/components/apple_tv/authenticate.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9a4020f772e22f44a80343c1c6271a13cee644 GIT binary patch literal 125100 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%0D?XHZwNMUF%j@4P?qO~%yxgMoIz-D`d#GW*?!CH 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 DnRPAM literal 0 HcmV?d00001 diff --git a/source/images/components/apple_tv/credentials.png b/source/images/components/apple_tv/credentials.png new file mode 100644 index 0000000000000000000000000000000000000000..90b04fb55607e7bfe00b6e33bde507879996b0c7 GIT binary patch literal 59482 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 h%sXND Date: Sun, 16 Jul 2017 11:36:23 -0700 Subject: [PATCH 12/71] Add founder vision --- sass/custom/_paulus.scss | 19 +++++++++++++++++++ source/index.html | 8 ++++++++ 2 files changed, 27 insertions(+) diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index 4a1bd4a6cf2..f5045c8db22 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -162,6 +162,25 @@ $primary-color: #049cdb; } } + .founder-vision { + margin-top: 24px; + + a { + display: block; + text-decoration: none; + color: white; + padding: 30px 15px; + font-size: 2.25rem; + line-height: 1.33333; + transition: background-color .5s; + background-color: #038FC7; + border-radius: 4px; + + &:hover { + background-color: lighten(#038FC7, 10%); + } + } + } } // https://fortawesome.github.io/Font-Awesome/3.2.1/icons/ diff --git a/source/index.html b/source/index.html index 087e0ab37cf..143112152d3 100644 --- a/source/index.html +++ b/source/index.html @@ -60,6 +60,14 @@ hide_github_edit: true + +
- - -
+ +
+
+

Home Assistant in the press

+ + ProductHunt.com logo + + Linux.com logo + + Wired.com logo + + OpenSource.com logo +
+
From 8cfcd84e975044c485fc73f31f857ce84fad1570 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 16 Jul 2017 12:24:04 -0700 Subject: [PATCH 14/71] Fix feedreader warning --- source/_components/feedreader.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/feedreader.markdown b/source/_components/feedreader.markdown index fbd68c63e5d..6fd6bfedd45 100644 --- a/source/_components/feedreader.markdown +++ b/source/_components/feedreader.markdown @@ -52,8 +52,8 @@ automation: service: persistent_notification.create data_template: title: "New HA Podcast available" - message: "New Podcast available - {{ as_timestamp(now()) | timestamp_custom('%I:%M:%S %p %d%b%Y', true) }}" - notification_id: "{{ trigger.event.data.title }}" + message: {% raw %}"New Podcast available - {{ as_timestamp(now()) | timestamp_custom('%I:%M:%S %p %d%b%Y', true) }}" + notification_id: "{{ trigger.event.data.title }}"{% endraw %} ``` *Any field under the `` tag in the feed can be used for example `trigger.event.data.content` will get the body of the feed entry. From 6109bacd26c0c0494660352176cc39c6692fc153 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 16 Jul 2017 14:35:52 -0700 Subject: [PATCH 15/71] Add apastrophe --- source/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/index.html b/source/index.html index b251d04e1fa..6cc53fb9748 100644 --- a/source/index.html +++ b/source/index.html @@ -48,7 +48,7 @@ hide_github_edit: true - Read our founders vision for the perfect home automation + Read our founder's vision for the perfect home automation From 70c7c32552feacb3ed27d24f8613b7481ad16df2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 16 Jul 2017 17:45:28 -0700 Subject: [PATCH 16/71] Tweak perfect home automatoin button padding --- sass/custom/_paulus.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index 2463b76a205..d428797a7f3 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -122,7 +122,7 @@ $primary-color: #049cdb; display: block; text-decoration: none; color: white; - padding: 30px 15px; + padding: 15px; font-size: 2.25rem; line-height: 1.33333; transition: background-color .5s; From e0cc348b977c2c7f0f574dcc1ef7d31cf0904a12 Mon Sep 17 00:00:00 2001 From: Alok Saboo Date: Mon, 17 Jul 2017 12:40:33 -0400 Subject: [PATCH 17/71] Cleaned up Microsoft Face docs (#2993) --- source/_components/microsoft_face.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_components/microsoft_face.markdown b/source/_components/microsoft_face.markdown index 8b9f95c28ad..d7d8cdc7ed0 100644 --- a/source/_components/microsoft_face.markdown +++ b/source/_components/microsoft_face.markdown @@ -14,9 +14,9 @@ ha_release: "0.37" The `microsoft_face` component platform is the main component for Microsoft Azure Cognitive service [Face](https://www.microsoft.com/cognitive-services/en-us/face-api). All data are stored in your own private instance in the Azure cloud. -You need an API key which is free but requires a [Azure registration](https://azure.microsoft.com/de-de/free/) using your microsoft ID. The free resource (*F0*) is limited to 20 requests per minute and 30k requests in a month. If you don't want to use the Azure cloud, you can also get an API key by registering with [cognitive-services](https://www.microsoft.com/cognitive-services/en-us/subscriptions). However, all keys on cognitive services must be recreated every 90 days. +You need an API key, which is free, but requires an [Azure registration](https://azure.microsoft.com/de-de/free/) using your Microsoft ID. The free resource (*F0*) is limited to 20 requests per minute and 30k requests in a month. If you don't want to use the Azure cloud, you can also get an API key by registering with [cognitive-services](https://www.microsoft.com/cognitive-services/en-us/subscriptions). Please note that all keys on cognitive services must be recreated every 90 days. -To enable the Microsoft Face component, add the following lines to your `configuration.yaml`: +To enable the Microsoft Face component, add the following to your `configuration.yaml`: ```yaml # Example configuration.yaml entry @@ -33,9 +33,9 @@ Configuration variables: ### {% linkable_title Person and Groups %} -For most services, you need to set up a group or a person. This limits the processing and detection to elements provided by the group. Home Assistent creates an entty for all groups and allows you to show the state, person and IDs directly on the frontend. +For most services, you need to set up a group or a person. This limits the processing and detection to elements provided by the group. Home Assistant creates an entity for all groups and allows you to show the state, person, and IDs directly on the frontend. -The following services are available for managing this feature. They can be called via the Frontend, a script, or the REST API. +The following services are available for managing this feature and can be called via the Frontend, a script, or the REST API. - *microsoft_face.create_group* - *microsoft_face.delete_group* From bc9adb7d4b2e3daa318dc869f0e94842d5ec502d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Mon, 17 Jul 2017 18:46:16 +0200 Subject: [PATCH 18/71] Change incorrect domain to apple_tv (#2994) --- source/_components/media_player.apple_tv.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/media_player.apple_tv.markdown b/source/_components/media_player.apple_tv.markdown index ea6a03173b6..6ad9e5ae351 100644 --- a/source/_components/media_player.apple_tv.markdown +++ b/source/_components/media_player.apple_tv.markdown @@ -83,7 +83,7 @@ then device authentication is required. Press the icon in the upper left corner -Select `media_player` as domain, `apple_tv_authenticate` as service and enter `{'entity_id': 'XXX'}` into "Service Data", but replace XXX with the entity id of your device (e.g. `media_player.apple_tv`). Press the button and hopefully you are presented with an input dialog asking for a pin code: +Select `apple_tv` as domain, `apple_tv_authenticate` as service and enter `{'entity_id': 'XXX'}` into "Service Data", but replace XXX with the entity id of your device (e.g. `media_player.apple_tv`). Press the button and hopefully you are presented with an input dialog asking for a pin code: @@ -126,4 +126,4 @@ Send one or more button presses to the device. ## {% linkable_title Notes and Limitations %} - Pairing is currently not supported -- Updates is sometimes not propagated correctly on ATV4 \ No newline at end of file +- Updates is sometimes not propagated correctly on ATV4 From 1a18543c354c7f248e9f6be03567f8951304e5f6 Mon Sep 17 00:00:00 2001 From: Gavin Mogan Date: Mon, 17 Jul 2017 09:49:22 -0700 Subject: [PATCH 19/71] Added bose soundtouch as an allowed value (#2995) --- source/_components/discovery.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index c93c0927cc3..2a0af4c408f 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -54,6 +54,7 @@ Valid values for ignore are: * `apple_tv`: Apple TV * `axis`: (Axis Communications security devices) + * `bose_soundtouch`: Bose Soundtouch speakers * `denonavr`: Denon Network Receivers * `directv`: DirecTV * `flux_led`: Flux Led/MagicLight From 7abc2055823c60834f106768b1fd96a49b65f664 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Mon, 17 Jul 2017 10:08:10 -0700 Subject: [PATCH 20/71] Document Avion's ability to obtain configuration automatically (#2766) The Avion upstream code now has support for pulling switch information from the central server directly. Document that. --- source/_components/light.avion.markdown | 29 +++++++++++++++++-------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/source/_components/light.avion.markdown b/source/_components/light.avion.markdown index 6fbcab8a579..4c973d33377 100644 --- a/source/_components/light.avion.markdown +++ b/source/_components/light.avion.markdown @@ -21,21 +21,32 @@ To enable these lights, add the following lines to your `configuration.yaml` fil # Example configuration.yaml entry light: - platform: avion - devices: - 00:21:4D:00:00:01: - name: Light 1 - api_key: Gr35a/rt3RgaRenl9ag8Ba== - 00:21:3D:20:00:a1: - name: Bulb 2 - api_key: Gr35a/rt3RgaRenl9ag8Ba== + username: testuser@fakedomain.com + password: foobar ``` Configuration variables: -- **devices**: A list of devices with their bluetooth address, a custom name to use in the frontend and the API key. The API key can be obtained by executing the following command: - +- **username** (*Optional*): The username used in the Avion app. If username and password are both provided, any associated switches will automatically be added to your configuration. +- **password** (*Optional*): The password used in the Avion app. +- **devices** (*Optional*): An optional list of devices with their bluetooth address, a custom name to use in the frontend and the API key. The API key can be obtained by executing the following command: ``` curl -X POST -H "Content-Type: application/json" -d '{"email": "fakename@example.com", "password": "password"}' https://admin.avi-on.com/api/sessions | jq ``` with the email and password fields replaced with those used when registering the device via the mobile app. The passphrase field of the output should be used as the API key in the configuration. + +If username and password are not supplied, devices must be configured manually like so: + +```yaml +# Manual device configuration.yaml entry +light: + - platform: avion + devices: + 00:21:4D:00:00:01: + name: Light 1 + api_key: Gr35a/rt3RgaRenl9ag8Ba== + 00:21:3D:20:00:a1: + name: Light 2 + api_key: Gr35a/rt3RgaRenl9ag8Ba== +``` From fa3c0c2dd94fd3b6aa5a31fb75e35edbd9772afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Maggioni?= Date: Mon, 17 Jul 2017 19:10:46 +0200 Subject: [PATCH 21/71] Update Plex docs for SSL connections (#2932) * Update Plex docs for SSL connections (home-assistant/home-assistant#8341) * Stricter values allowed in the configurator https://github.com/home-assistant/home-assistant/pull/8341/commits/f8808c6443e2bac412d4b889192cd79b00328040 --- source/_components/media_player.plex.markdown | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source/_components/media_player.plex.markdown b/source/_components/media_player.plex.markdown index f7184f07a68..b0dace56a53 100644 --- a/source/_components/media_player.plex.markdown +++ b/source/_components/media_player.plex.markdown @@ -29,6 +29,8 @@ If your Plex server has local authentication enabled or multiple users defined, If you don't know your token, see [Finding your account token / X-Plex-Token](https://support.plex.tv/hc/en-us/articles/204059436). +If your server enforces SSL connections, write "`on`" or "`true`" in the _"Use SSL"_ field. If it does not have a valid SSL certificate available but you still want to use it, write "`on`" or "`true`" in the _"Do not verify SSL"_ field as well. +

@@ -44,12 +46,14 @@ media_player: In case [discovery](/components/discovery/) does not work (GDM disabled or non-local plex server), you can create `~/.homeassistant/plex.conf` manually. ```json -{"IP_ADDRESS:PORT": {"token": "TOKEN"}} +{"IP_ADDRESS:PORT": {"token": "TOKEN", "ssl": false, "verify": true}} ``` -- **IP_ADDRESS** (*Required*): IP address of the Plex Media Server -- **PORT** (*Required*): Port where Plex is listening. Default is 32400 +- **IP_ADDRESS** (*Required*): IP address of the Plex Media Server. +- **PORT** (*Required*): Port where Plex is listening. Default is 32400. - **TOKEN** (*Optional*): Only if authentication is required. Set to `null` (without quotes) otherwise. +- **ssl** (*Optional*): Whether to use SSL or not. _(Boolean)_ +- **verify** (*Optional*): Whether to allow invalid or self-signed SSL certificates or not. _(Boolean)_ ## Customization You can customize the Plex component by adding any of the variables below to your configuration: @@ -129,4 +133,4 @@ Plays a song, playlist, TV episode, or video on a connected client. INFO:homeassistant.components.media_player.plex:No server found at: http://192.168.1.10:32400 ``` - If this occurs, try changing the setting `Secure connections` in your Plex Media Server to `Preferred` (instead of `Required`). The Plex component does not currently support HTTPS. + If this occurs, check the setting `Server`>`Network`>`Secure connections` in your Plex Media Server: if it is set to `Preferred` or `Required`, you may need to manually set the `ssl` and `verify` booleans in the `plex.conf` file to, respectively, `true` and `false`. See the **"Setup"** section above for details. From 65aec2ba7013e3aa6567afc6e51169211787dcb4 Mon Sep 17 00:00:00 2001 From: GMFalka Date: Mon, 17 Jul 2017 19:11:26 +0200 Subject: [PATCH 22/71] Update notify.telegram.markdown (#2938) * Update notify.telegram.markdown Folder whitelisting required for file sending. Note included. If the formating is wrong, please help fixing it :) * Update notify.telegram.markdown * Update notify.telegram.markdown Added documentation link --- source/_components/notify.telegram.markdown | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/_components/notify.telegram.markdown b/source/_components/notify.telegram.markdown index e82e8485d4d..d6be5030a2d 100644 --- a/source/_components/notify.telegram.markdown +++ b/source/_components/notify.telegram.markdown @@ -121,6 +121,19 @@ Configuration variables: - **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard. - **inline_keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. +

+Since Homeassistant version 0.48 you have to [whitelist the source folder](/docs/configuration/basic/) of the file you want to include in the notification. + +```yaml +configuration.yaml +... +homeassistant: + whitelist_external_dirs: + - /tmp + - /home/kenji/data +``` +

+ ### {% linkable_title Document support %} From 9cfa4d97dadcc48dea0b10bf4a605157d0b9866f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 16 Jul 2017 13:47:00 +0200 Subject: [PATCH 23/71] Add new entries --- source/help/index.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/help/index.markdown b/source/help/index.markdown index 320076e1ef7..69d8cc494df 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -29,6 +29,7 @@ Have you found an issue in your Home Assistant installation? Please report it. R ### {% linkable_title Videos, talks, workshops and alike %} +- [Why we can't have the Internet of Nice Things: A home automation primer](https://www.openwest.org/custom/description.php?id=92) at [OpenWest 2017](https://www.openwest.org)- July 2017 - [Home Automation with Home Assistant](https://github.com/jjmontesl/talk-hass-pydaygalicia2017) at [PyDay Galicia 2017](https://pyday2017.python-vigo.es/gl/)- June 2017 - [Home Automation with Python](https://www.youtube.com/watch?v=KNFZSSCPUyM) at [GLT 2017](https://glt17.linuxtage.at) - April 2017 - [Home Assistant workshop](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2017-clt-workshop) at [CLT 2017](https://chemnitzer.linux-tage.de/2017/de/) - March 2017 @@ -43,6 +44,9 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? ### {% linkable_title Media coverage %} +Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). + +- [Why can't we have the Internet of Nice Things?](https://opensource.com/article/17/7/home-automation-primer) - July 2017 - [Jupiter Broadcasting - No Privacy Compromise Home Automation](http://www.jupiterbroadcasting.com/115566/no-privacy-compromise-home-automation/) - June 2017 - [Castálio Podcast - Episódio 102: Marcelo Mello - Red Hat e Automação Residencial com Home Assistant](https://youtu.be/hZq8ucpzjCs) - May 2017 - [Paulus Schoutsen and Home Assistant - Episode 8](http://codepop.com/open-sourcecraft/episodes/paulus-schoutsen/) - March 2017 From adc69db0e6e3457ed64518c14ed5100fe76d1b81 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 17 Jul 2017 22:31:10 +0200 Subject: [PATCH 24/71] Add wired article --- source/help/index.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/help/index.markdown b/source/help/index.markdown index 69d8cc494df..3f71c9d9838 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -55,6 +55,7 @@ Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). - [A Look at HASSbian: Raspberry Pi for Home Automation](http://www.piboards.com/2017/03/07/a-look-at-hassbian-raspberry-pi-for-home-automation/)- March 2017 - [Home Assistant with Paulus Schoutsen - Episode 94](https://www.podcastinit.com/episode-94-home-assistant-with-paulus-schoutsen/) - January 2017 - [Episode #11](https://pythonbytes.fm/episodes/show/11/django-2.0-is-dropping-python-2-entirely-pipenv-for-profile-functionality-and-pythonic-home-automation) at minute 15:20 by [Python Bytes](https://pythonbytes.fm/) - January 2017 +- [Now you can hide your smart home on the darknet](https://www.wired.com/2016/07/now-can-hide-smart-home-darknet/) - July 2016 - [Home Assistant: The Python Approach to Home Automation](https://www.linux.com/news/home-assistant-python-approach-home-automation-video) - June 2016 - [Secure home automation, without clouds or dedicated hubs](http://linuxgizmos.com/secure-home-automation-without-clouds-or-dedicated-hubs/) - June 2016 - [Weekend Project: Setting up Home Assistant on your PC or Mac](http://www.automatedhome.co.uk/software/weekend-project-setting-up-home-assistant-on-your-pc-or-mac.html) by [automated home](http://www.automatedhome.co.uk/) - April 2016 From 98089618c412b65305e43e259cdc69d5ff4341bf Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 17 Jul 2017 22:33:27 +0200 Subject: [PATCH 25/71] Update --- source/help/talking-points.markdown | 2 +- source/help/trivia.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/help/talking-points.markdown b/source/help/talking-points.markdown index 4c1a952f0c9..b8675a1abc6 100644 --- a/source/help/talking-points.markdown +++ b/source/help/talking-points.markdown @@ -12,7 +12,7 @@ footer: true People are starting to present Home Assistant at meetings and get-togethers. Below you find a couple of bullet points for your presentation. - [Numbers, numbers, numbers](/help/trivia/) and other details -- Over 600 implementations +- Over 700 implementations - Not depending on cloud services. We like to keep your privacy private - Control all your devices from a single, mobile-friendly, interface - Written in Python3 with 94% test coverage diff --git a/source/help/trivia.markdown b/source/help/trivia.markdown index 990b2395f85..fb985dc2fe2 100644 --- a/source/help/trivia.markdown +++ b/source/help/trivia.markdown @@ -43,7 +43,7 @@ This sections just contains some random numbers of the Home Assistant eco-system ### {% linkable_title Commit per year %} -The numbers below only covers the [main git repository](https://github.com/home-assistant/home-assistant/) and doesn't take the helpers ([home-assistant.io](https://github.com/home-assistant/home-assistant.io), [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer), and [home-assistant-js](https://github.com/home-assistant/home-assistant-js)) into account. +The numbers below only covers the [main git repository](https://github.com/home-assistant/home-assistant/) and doesn't take the helpers ([home-assistant.io](https://github.com/home-assistant/home-assistant.io), [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer), etc.) into account. ```bash 2013: 147 From da7ddb1bc02edea0e7813c3bf877b56a865bbae5 Mon Sep 17 00:00:00 2001 From: Chris Vanclercq Date: Tue, 18 Jul 2017 12:17:06 +0200 Subject: [PATCH 26/71] Update compatibility list (#3001) Successfully tested my UE49K6300AWXXN. --- source/_components/media_player.samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 9c7b760ec08..79dbf31494b 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -50,6 +50,7 @@ Currently known supported models: - D6505 - D6300SF - U6000 (port must be set to 8001) +- U6300 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - K6500AF (port must be set to 8001) - KS8005 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - K5600AK (partially supported, turn on works but state is not updated) From bb6bab823fbb0152f3c6376f684cb07e61879493 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 18 Jul 2017 12:25:34 +0200 Subject: [PATCH 27/71] Update index.markdown --- source/hassio/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/hassio/index.markdown b/source/hassio/index.markdown index ebe99c5a784..654b37bfb1c 100644 --- a/source/hassio/index.markdown +++ b/source/hassio/index.markdown @@ -16,7 +16,7 @@ Hass.io turns your Raspberry Pi (or other device) into the ultimate home automat The advantages of using Hass.io: - Free and open source - - Optimized for the Raspberry Pi + - Optimized for embedded device like Raspberry Pi - 100% local home automation - Easy installation and updates (powered by [ResinOS] and [Docker]) - Management user interface integrated into Home Assistant From a959d384b77485d2abec1cdf6b895c30b63cbb78 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 18 Jul 2017 17:51:51 +0200 Subject: [PATCH 28/71] Update name --- source/developers/frontend_creating_custom_ui.markdown | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/developers/frontend_creating_custom_ui.markdown b/source/developers/frontend_creating_custom_ui.markdown index a7816cbd529..5b05e8a1680 100644 --- a/source/developers/frontend_creating_custom_ui.markdown +++ b/source/developers/frontend_creating_custom_ui.markdown @@ -11,17 +11,17 @@ ha_release: 0.38 --- If you would like to use your own [State card](/developers/frontend_add_card/) without merging your code into [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer/) you can create your own implementation. -- Put the element source file and its dependencies in `www/custom_ui/` directory under your homeassistant config directory. +Put the element source file and its dependencies in `www/custom_ui/` directory under your Home Assistant [configuration](/docs/configuration/) directory. For example if creating a state card for the `light` domain named `my_custom_light_card` put `state-card-my_custom_light_card.html` in `www/custom_ui/`. That file should implement `` tag with Polymer. -In `state-card-my_custom_light_card.html` you should use `` to import all the dependencies **not** used by Homeassistant UI. -Do not import any dependencies used by Homeassistant UI. +In `state-card-my_custom_light_card.html` you should use `` to import all the dependencies **not** used by Home Assistant's UI. +Do not import any dependencies used by the Home Assistant UI. Importing those will work in `development: 1` mode, but will fail in production mode. -- In the `customize:` section of `configuration.yaml` put `custom_ui_state_card: `. +In the `customize:` section of the `configuration.yaml` file put `custom_ui_state_card: `. For example: ```yaml @@ -31,5 +31,4 @@ homeassistant: custom_ui_state_card: my_custom_light_card ``` - For more possibilities, see the [Custom UI section](/cookbook/#user-interface) on our Examples page. From a3198ce7725ca106ce4f79859fc7e438fcb3448d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 18 Jul 2017 21:43:49 +0200 Subject: [PATCH 29/71] Add missing period --- source/_docs/configuration/secrets.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_docs/configuration/secrets.markdown b/source/_docs/configuration/secrets.markdown index 14170759340..afff7091505 100644 --- a/source/_docs/configuration/secrets.markdown +++ b/source/_docs/configuration/secrets.markdown @@ -46,20 +46,22 @@ When you start splitting your configuration into multiple files, you might end u To see where secrets are being loaded from you can either add an option to your `secrets.yaml` file or use the `check_config` script. *Option 1*: Print where secrets are retrieved from to the Home Assistant log by adding the following to `secrets.yaml`: + ```yaml logger: debug ``` This will not print the actual secret's value to the log. *Option 2*: View where secrets are retrieved from and the contents of all `secrets.yaml` files used, you can use the `check_config` script from the command line: + ```bash hass --script check_config --secrets ``` -This will print all your secrets +This will print all your secrets. ### {% linkable_title Storing passwords in a keyring managed by your OS %} -Using [Keyring](https://github.com/jaraco/keyring) is an alternative way to `secrets.yaml`. They can be managed from the command line via the keyring script. +Using [Keyring](https://github.com/jaraco/keyring) is an alternative way to `secrets.yaml`. They can be managed from the command line via the `keyring` script. ```bash $ hass --script keyring --help From 590e49b004fc278924bb7bf83d6cc9aa6bb394d9 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 18 Jul 2017 22:35:50 +0200 Subject: [PATCH 30/71] Update installation.markdown --- source/hassio/installation.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index d44d08f866b..a4511ad7670 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -34,10 +34,10 @@ For advanced users, it is also possible to try Hass.io on your Linux server or i [Etcher]: https://etcher.io/ [resinos-network]: https://docs.resin.io/deployment/network/2.0.0/ -[pi1]: https://github.com/home-assistant/hassio-build/releases/download/0.8/resinos-hassio-0.8-raspberrypi.img.bz2 -[pi2]: https://github.com/home-assistant/hassio-build/releases/download/0.8/resinos-hassio-0.8-raspberrypi2.img.bz2 -[pi3]: https://github.com/home-assistant/hassio-build/releases/download/0.8/resinos-hassio-0.8-raspberrypi3.img.bz2 -[nuc]: https://github.com/home-assistant/hassio-build/releases/download/0.8/resinos-hassio-0.8-intel-nuc.img.bz2 +[pi1]: https://github.com/home-assistant/hassio-build/releases/download/0.9/resinos-hassio-0.9-raspberrypi.img.bz2 +[pi2]: https://github.com/home-assistant/hassio-build/releases/download/0.9/resinos-hassio-0.9-raspberrypi2.img.bz2 +[pi3]: https://github.com/home-assistant/hassio-build/releases/download/0.9/resinos-hassio-0.9-raspberrypi3.img.bz2 +[nuc]: https://github.com/home-assistant/hassio-build/releases/download/0.9/resinos-hassio-0.9-intel-nuc.img.bz2 [linux]: https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio [local]: http://hassio.local:8123 [samba]: /addons/samba/ From 0bc747a7c3de344cfe87b8827173f1a51b04e8f2 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 19 Jul 2017 16:50:33 +0200 Subject: [PATCH 31/71] Update installation.markdown --- source/hassio/installation.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index a4511ad7670..1deb8120e0b 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -34,10 +34,10 @@ For advanced users, it is also possible to try Hass.io on your Linux server or i [Etcher]: https://etcher.io/ [resinos-network]: https://docs.resin.io/deployment/network/2.0.0/ -[pi1]: https://github.com/home-assistant/hassio-build/releases/download/0.9/resinos-hassio-0.9-raspberrypi.img.bz2 -[pi2]: https://github.com/home-assistant/hassio-build/releases/download/0.9/resinos-hassio-0.9-raspberrypi2.img.bz2 -[pi3]: https://github.com/home-assistant/hassio-build/releases/download/0.9/resinos-hassio-0.9-raspberrypi3.img.bz2 -[nuc]: https://github.com/home-assistant/hassio-build/releases/download/0.9/resinos-hassio-0.9-intel-nuc.img.bz2 +[pi1]: https://github.com/home-assistant/hassio-build/releases/download/0.10/resinos-hassio-0.10-raspberrypi.img.bz2 +[pi2]: https://github.com/home-assistant/hassio-build/releases/download/0.10/resinos-hassio-0.10-raspberrypi2.img.bz2 +[pi3]: https://github.com/home-assistant/hassio-build/releases/download/0.10/resinos-hassio-0.10-raspberrypi3.img.bz2 +[nuc]: https://github.com/home-assistant/hassio-build/releases/download/0.10/resinos-hassio-0.10-intel-nuc.img.bz2 [linux]: https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio [local]: http://hassio.local:8123 [samba]: /addons/samba/ From 1ba9914d2d14ac497337607269c78476bd2736fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Wr=C3=B3bel?= Date: Wed, 19 Jul 2017 13:49:55 -0400 Subject: [PATCH 32/71] Add information about HomeBridge friendly name attribute (#3014) --- source/_docs/configuration/customizing-devices.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index a5d6074e7ec..8da78ab7a68 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -58,6 +58,7 @@ homeassistant: | Attribute | Description | | --------- | ----------- | | `friendly_name` | Name of the entity. +| `homebridge_name` | Name of the entity in `HomeBridge`. | `hidden` | Set to `true` to hide the entity. | `homebridge_hidden` | Set to `true` to hide the entity from `HomeBridge`. | `emulated_hue` | Set to `false` to hide the entity from emulated_hue. From 76e86aba56c8e22ab722733b2fe11a184ac37287 Mon Sep 17 00:00:00 2001 From: Omar Usman Date: Thu, 20 Jul 2017 01:52:30 +0800 Subject: [PATCH 33/71] Change notify component name. (#3009) --- source/_components/notify.clicksend.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/notify.clicksend.markdown b/source/_components/notify.clicksend.markdown index fd4380b746c..96a43adfe12 100644 --- a/source/_components/notify.clicksend.markdown +++ b/source/_components/notify.clicksend.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "ClickSend" +title: "ClickSend SMS" description: "Instructions on how to add ClickSend notifications to Home Assistant." date: 2017-06-22 00:00 sidebar: true From dfd885963efa30ecd6f02855c44f462041c80ec0 Mon Sep 17 00:00:00 2001 From: BUUT! Date: Wed, 19 Jul 2017 19:53:14 +0200 Subject: [PATCH 34/71] Update media_player.apple_tv.markdown (#3008) Line 86: replaced single quotes with double quotes in {"entity_id": "XXX"} because of improper JSON and resulting failed command. --- source/_components/media_player.apple_tv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/media_player.apple_tv.markdown b/source/_components/media_player.apple_tv.markdown index 6ad9e5ae351..ea19c6d893a 100644 --- a/source/_components/media_player.apple_tv.markdown +++ b/source/_components/media_player.apple_tv.markdown @@ -83,7 +83,7 @@ then device authentication is required. Press the icon in the upper left corner -Select `apple_tv` as domain, `apple_tv_authenticate` as service and enter `{'entity_id': 'XXX'}` into "Service Data", but replace XXX with the entity id of your device (e.g. `media_player.apple_tv`). Press the button and hopefully you are presented with an input dialog asking for a pin code: +Select `apple_tv` as domain, `apple_tv_authenticate` as service and enter `{"entity_id": "XXX"}` into "Service Data", but replace XXX with the entity id of your device (e.g. `media_player.apple_tv`). Press the button and hopefully you are presented with an input dialog asking for a pin code: From c071586d1d2fbb01ef8b8ddd909751f099cd92e0 Mon Sep 17 00:00:00 2001 From: yankees9920 Date: Wed, 19 Jul 2017 13:53:52 -0400 Subject: [PATCH 35/71] Update emulated_hue.markdown (#3006) minor fix for `HA IP Addresss` not showing because it wasn't in a code block --- source/_components/emulated_hue.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/emulated_hue.markdown b/source/_components/emulated_hue.markdown index c50f15861ed..64511328b5f 100644 --- a/source/_components/emulated_hue.markdown +++ b/source/_components/emulated_hue.markdown @@ -113,7 +113,7 @@ You can verify that the `emulated_hue` component has been loaded and is respondi - `http://:8300/description.xml` - This URL should return a descriptor file in the form of an XML file. - `http://:8300/api/pi/lights` - This will return a list of devices, lights, scenes, groups, etc.. that `emulated_hue` is exposing to Alexa. -For Google Home, verify that the URLs above are using port 80, rather than port 8300 (i.e. http://:80/description.xml). +For Google Home, verify that the URLs above are using port 80, rather than port 8300 (i.e. `http://:80/description.xml`). An additional step is required to run Home Assistant as non-root user and use port 80 when using the AiO script. Execute the following command to allow `emulated_hue` to use port 80 as non-root user. From c5adab37b6e70467152a17e52de79bc3572003ca Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 19 Jul 2017 21:39:24 +0200 Subject: [PATCH 36/71] update image to 1.0 --- source/hassio/installation.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index 1deb8120e0b..772658c5f83 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -34,10 +34,10 @@ For advanced users, it is also possible to try Hass.io on your Linux server or i [Etcher]: https://etcher.io/ [resinos-network]: https://docs.resin.io/deployment/network/2.0.0/ -[pi1]: https://github.com/home-assistant/hassio-build/releases/download/0.10/resinos-hassio-0.10-raspberrypi.img.bz2 -[pi2]: https://github.com/home-assistant/hassio-build/releases/download/0.10/resinos-hassio-0.10-raspberrypi2.img.bz2 -[pi3]: https://github.com/home-assistant/hassio-build/releases/download/0.10/resinos-hassio-0.10-raspberrypi3.img.bz2 -[nuc]: https://github.com/home-assistant/hassio-build/releases/download/0.10/resinos-hassio-0.10-intel-nuc.img.bz2 +[pi1]: https://github.com/home-assistant/hassio-build/releases/download/1.0/resinos-hassio-1.0-raspberrypi.img.bz2 +[pi2]: https://github.com/home-assistant/hassio-build/releases/download/1.0/resinos-hassio-1.0-raspberrypi2.img.bz2 +[pi3]: https://github.com/home-assistant/hassio-build/releases/download/1.0/resinos-hassio-1.0-raspberrypi3.img.bz2 +[nuc]: https://github.com/home-assistant/hassio-build/releases/download/1.0/resinos-hassio-1.0-intel-nuc.img.bz2 [linux]: https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio [local]: http://hassio.local:8123 [samba]: /addons/samba/ From eaadfc46da0be8f688d150676589052a35bd4317 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 20 Jul 2017 14:46:08 +0200 Subject: [PATCH 37/71] Create google_assistant.markdown --- source/_addons/google_assistant.markdown | 74 ++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 source/_addons/google_assistant.markdown diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown new file mode 100644 index 00000000000..136b694760d --- /dev/null +++ b/source/_addons/google_assistant.markdown @@ -0,0 +1,74 @@ +--- +layout: page +title: "Google Assistant" +description: "Enhance your Hass.io installation with google assistant." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +--- + +[Google Assistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms. It runs on-device and is Private by Design. + +To enable access to the Google Assistant API, do the following: +1) In the Cloud Platform Console, go to the Projects page. Select an existing project or create a new [project] +2) Enable the Google Assistant [API] on the project you selected +3) Create a [service account] and download the json credentials. + +Now install and activate the [Samba] add-on so you can upload your training data. Connect to the "share" Samba share and copy your training data over. Name the file `assistant.zip`. + +Now it's time to start Snips for the first time. When the Snips add-on starts, it will output your audio devices: + +```plain +**** List of PLAYBACK Hardware Devices **** +card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] + Subdevices: 8/8 + Subdevice #0: subdevice #0 + Subdevice #1: subdevice #1 + Subdevice #2: subdevice #2 + Subdevice #3: subdevice #3 + Subdevice #4: subdevice #4 + Subdevice #5: subdevice #5 + Subdevice #6: subdevice #6 + Subdevice #7: subdevice #7 +card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] + Subdevices: 1/1 + Subdevice #0: subdevice #0 +``` + +You need to use this information to configure the `mic` and `speaker` configuration options. The format is `,`. On a Raspberry Pi 3, `0,0` is the built-in headset port, `0,1` is the HDMI port. + +Now that you've found the microphone and speaker addresses, it's time to configure Google Assistant and restart the add-on. + +### Add-On configuration + +```json +{ + "mic": "1,0", + "speaker": "1,0", + "service_account": "service_account.json", +} +``` + +Configuration variables: + +- **mqtt_bridge** (*Optional*): Snips uses MQTT to communicate and defaults to their own broker. Use this config option to bridge their broker to your own. +- **mic**: This is the hardware address of your microphone. Look at the Snips + +### {% linkable_title Home Assistant configuration %} + +Use the Home Assistant [Snips.ai component][comp] to integrate the add-on into Home Assistant. + +```yaml +snips: +``` + + + +[Google Assistant]: https://assistant.google.com/ +[Samba]: /addons/samba/ +[comp]: /components/snips/ +[project]: https://console.cloud.google.com/project +[API]: https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview +[service account]: https://console.developers.google.com/apis/credentials/serviceaccountkey From 436ee296479dc7fb7c37c4f6664ef870cdffab0e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 20 Jul 2017 14:57:09 +0200 Subject: [PATCH 38/71] Update google_assistant.markdown --- source/_addons/google_assistant.markdown | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 136b694760d..f3febe93fc7 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -9,16 +9,16 @@ sharing: true footer: true --- -[Google Assistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms. It runs on-device and is Private by Design. +[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms. It runs on-device and is Private by Design. To enable access to the Google Assistant API, do the following: 1) In the Cloud Platform Console, go to the Projects page. Select an existing project or create a new [project] 2) Enable the Google Assistant [API] on the project you selected -3) Create a [service account] and download the json credentials. +3) Create a [service account][serviceaccount] and download the json credentials. -Now install and activate the [Samba] add-on so you can upload your training data. Connect to the "share" Samba share and copy your training data over. Name the file `assistant.zip`. +Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your training data over. Name the file `service_account.json`. -Now it's time to start Snips for the first time. When the Snips add-on starts, it will output your audio devices: +Now it's time to start Snips for the first time. When the Google Assistant add-on starts, it will output your audio devices: ```plain **** List of PLAYBACK Hardware Devices **** @@ -53,8 +53,8 @@ Now that you've found the microphone and speaker addresses, it's time to configu Configuration variables: -- **mqtt_bridge** (*Optional*): Snips uses MQTT to communicate and defaults to their own broker. Use this config option to bridge their broker to your own. -- **mic**: This is the hardware address of your microphone. Look at the Snips +- **mic**: This is the hardware address of your microphone. Look at the add-on output +- **speaker**: This is the hardware address of your speakers. Look at the add-on output ### {% linkable_title Home Assistant configuration %} @@ -64,11 +64,9 @@ Use the Home Assistant [Snips.ai component][comp] to integrate the add-on into H snips: ``` - - -[Google Assistant]: https://assistant.google.com/ +[GoogleAssistant]: https://assistant.google.com/ [Samba]: /addons/samba/ [comp]: /components/snips/ [project]: https://console.cloud.google.com/project [API]: https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview -[service account]: https://console.developers.google.com/apis/credentials/serviceaccountkey +[serviceaccount]: https://console.developers.google.com/apis/credentials/serviceaccountkey From 939e9501cb4a8663e86e8969a5faa0f276ae50d8 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 20 Jul 2017 14:58:32 +0200 Subject: [PATCH 39/71] Update google_assistant.markdown --- source/_addons/google_assistant.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index f3febe93fc7..dd964360b0e 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms. It runs on-device and is Private by Design. +[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms. and interact with [API.ai] with Home-Assistant. To enable access to the Google Assistant API, do the following: 1) In the Cloud Platform Console, go to the Projects page. Select an existing project or create a new [project] @@ -65,6 +65,7 @@ snips: ``` [GoogleAssistant]: https://assistant.google.com/ +[API.ai] https://api.ai/ [Samba]: /addons/samba/ [comp]: /components/snips/ [project]: https://console.cloud.google.com/project From 3c17ab70c2b29ed7cd38573dc7d67ffa82189a38 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 20 Jul 2017 15:00:18 +0200 Subject: [PATCH 40/71] Update google_assistant.markdown --- source/_addons/google_assistant.markdown | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index dd964360b0e..7f8573abfcc 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms. and interact with [API.ai] with Home-Assistant. +[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms. and interact with [api.ai] with Home-Assistant. To enable access to the Google Assistant API, do the following: 1) In the Cloud Platform Console, go to the Projects page. Select an existing project or create a new [project] @@ -58,16 +58,12 @@ Configuration variables: ### {% linkable_title Home Assistant configuration %} -Use the Home Assistant [Snips.ai component][comp] to integrate the add-on into Home Assistant. - -```yaml -snips: -``` +Use the Home Assistant [api.ai component][comp] to integrate the add-on into Home Assistant. [GoogleAssistant]: https://assistant.google.com/ -[API.ai] https://api.ai/ +[api.ai] https://api.ai/ [Samba]: /addons/samba/ -[comp]: /components/snips/ +[comp]: /components/apiai/ [project]: https://console.cloud.google.com/project [API]: https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview [serviceaccount]: https://console.developers.google.com/apis/credentials/serviceaccountkey From d090c653361b869082cee9ad5c77dc915ff6cc12 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 20 Jul 2017 15:00:49 +0200 Subject: [PATCH 41/71] Update google_assistant.markdown --- source/_addons/google_assistant.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 7f8573abfcc..4add3e9fae5 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -60,8 +60,9 @@ Configuration variables: Use the Home Assistant [api.ai component][comp] to integrate the add-on into Home Assistant. + [GoogleAssistant]: https://assistant.google.com/ -[api.ai] https://api.ai/ +[api.ai]: https://api.ai/ [Samba]: /addons/samba/ [comp]: /components/apiai/ [project]: https://console.cloud.google.com/project From c0d0b08dc2d6158e0fbc47618a6a97b0e207322b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 20 Jul 2017 15:01:24 +0200 Subject: [PATCH 42/71] Update google_assistant.markdown --- source/_addons/google_assistant.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 4add3e9fae5..832438e8aeb 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -18,7 +18,7 @@ To enable access to the Google Assistant API, do the following: Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your training data over. Name the file `service_account.json`. -Now it's time to start Snips for the first time. When the Google Assistant add-on starts, it will output your audio devices: +Now it's time to start Google Assistant for the first time. When the Google Assistant add-on starts, it will output your audio devices: ```plain **** List of PLAYBACK Hardware Devices **** From 6389d0048da96b30fbf82803864f3a6a0f2765a1 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 20 Jul 2017 15:01:52 +0200 Subject: [PATCH 43/71] Update google_assistant.markdown --- source/_addons/google_assistant.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 832438e8aeb..3bba0733392 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms. and interact with [api.ai] with Home-Assistant. +[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact over [api.ai] with Home-Assistant. To enable access to the Google Assistant API, do the following: 1) In the Cloud Platform Console, go to the Projects page. Select an existing project or create a new [project] From ee7e4a26b29ef7e35bb6a4d610194eb90b6fe4d1 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 20 Jul 2017 17:11:47 +0200 Subject: [PATCH 44/71] Update google_assistant.markdown --- source/_addons/google_assistant.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 3bba0733392..850d3b9242c 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -16,7 +16,7 @@ To enable access to the Google Assistant API, do the following: 2) Enable the Google Assistant [API] on the project you selected 3) Create a [service account][serviceaccount] and download the json credentials. -Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your training data over. Name the file `service_account.json`. +Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your training data over. Name the file `google_assistant.json`. Now it's time to start Google Assistant for the first time. When the Google Assistant add-on starts, it will output your audio devices: From ffc8921b5dafba84d3b6e37ba75dc71f94842cb4 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 20 Jul 2017 17:35:22 +0200 Subject: [PATCH 45/71] Update google_assistant.markdown --- source/_addons/google_assistant.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 850d3b9242c..c6d7d9ca922 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact over [api.ai] with Home-Assistant. +[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact over [api.ai] with Home-Assistant. You can also use [Google Actions][GoogleActions] to make extended functionality. To enable access to the Google Assistant API, do the following: 1) In the Cloud Platform Console, go to the Projects page. Select an existing project or create a new [project] @@ -62,6 +62,7 @@ Use the Home Assistant [api.ai component][comp] to integrate the add-on into Hom [GoogleAssistant]: https://assistant.google.com/ +[GoogleActions]: https://actions.google.com/ [api.ai]: https://api.ai/ [Samba]: /addons/samba/ [comp]: /components/apiai/ From 39dab47f0c53bb17d65d22b9bdd236a8da33e408 Mon Sep 17 00:00:00 2001 From: jwillaz Date: Thu, 20 Jul 2017 10:39:21 -0700 Subject: [PATCH 46/71] Add lightstrip and names to verified models list (#3022) * Add lightstrip and names to verified models list * Remove whitespaces --- source/_components/light.yeelight.markdown | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index 056b6246da2..cc6dd8b5ac0 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -52,7 +52,14 @@ Determine your bulb ip (using router, software, ping ...)

-This component is tested to work with models YLDP01YL, YLDP02YL and YLDP03YL. If you have a different model and it is working please let us know. +This component is tested to work with the following models: + +- **YLDP01YL**: LED Bulb (White) +- **YLDP02YL**: LED Bulb (Color) +- **YLDP03YL**: LED Bulb (Color) - E26 +- **YLDD02YL**: Lightstrip (Color) + +If you have a different model and it is working please let us know.

From 911c873002d2cc8231b56ade6dd919ebe5c067f4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 20 Jul 2017 21:39:02 -0700 Subject: [PATCH 47/71] Update media_player.vizio.markdown --- source/_components/media_player.vizio.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/media_player.vizio.markdown b/source/_components/media_player.vizio.markdown index b5bbaec40d6..80c83f4f7f5 100644 --- a/source/_components/media_player.vizio.markdown +++ b/source/_components/media_player.vizio.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: vizio-smartcast.png ha_category: Media Player -featured: true +featured: false ha_release: 0.49 ha_iot_class: "Local Polling" --- From 629171738cde7b524823c3fadc8154f8cbab0f57 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 21 Jul 2017 10:47:43 +0200 Subject: [PATCH 48/71] Update mosquitto.markdown --- source/_addons/mosquitto.markdown | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown index 065e86e9d74..b483f850122 100644 --- a/source/_addons/mosquitto.markdown +++ b/source/_addons/mosquitto.markdown @@ -18,7 +18,11 @@ Set up a [mosquitto](https://mosquitto.org/) MQTT broker. "anonymous": true, "logins": [ {"username": "testuser", "password": "mypw"} - ] + ], + "customize": { + "active": false, + "folder": "mosquitto + } } ``` @@ -30,6 +34,7 @@ Configuration variables: - **ssl** (*Optional*): Listen to broker on port 8883 with SSL/TLS. This requires certificates. Defaults to `false`. - **anonymous** (*Optional*): Allow anonymous connection. If *logins* is set, anonymous user can only read data. Defaults to `true`. - **logins** (*Optional*): A list of user that will be created with *username* and *password*. +- **customize** (*Optional*): If you enable it, it read additional config files (`*.conf`) from `/share/mosquitto`. ### {% linkable_title Home Assistant configuration %} From 3447d51a67eadbc76f5000feed40271bc7ab08b9 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 21 Jul 2017 11:50:49 +0200 Subject: [PATCH 49/71] Update ssh.markdown --- source/_addons/ssh.markdown | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/_addons/ssh.markdown b/source/_addons/ssh.markdown index 280cf6ae914..3fe75d5450f 100644 --- a/source/_addons/ssh.markdown +++ b/source/_addons/ssh.markdown @@ -9,7 +9,10 @@ sharing: true footer: true --- -Setting up an [SSH](https://openssh.org/) server allows access to your Hass.io folders with any SSH client. +Setting up an [SSH](https://openssh.org/) server allows access to your Hass.io folders with any SSH client. It include also a cli to access into Hass.IO api. Try it out: +```bash +$ hassio help +```

This add-on will not enable you to install packages or do anything as root. This is not allowed with Hass.io.

From 717a60f4b498700779af55ca7f7fd6bf5e112568 Mon Sep 17 00:00:00 2001 From: cribbstechnologies Date: Fri, 21 Jul 2017 14:15:35 -0400 Subject: [PATCH 50/71] include deprecation warning in docs (#3033) I've answered questions about this no less than 10 times. Is the breaking change to remove type milestoned yet? --- source/_components/emulated_hue.markdown | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/source/_components/emulated_hue.markdown b/source/_components/emulated_hue.markdown index 64511328b5f..0dbf81d2780 100644 --- a/source/_components/emulated_hue.markdown +++ b/source/_components/emulated_hue.markdown @@ -28,7 +28,6 @@ To enable the emulated Hue bridge, add one of the following configs to your `con ```yaml # Google Home example configuration.yaml entry emulated_hue: - type: google_home listen_port: 80 # Google Home does not work on different ports. ``` @@ -36,13 +35,11 @@ emulated_hue: ```yaml # Amazon Echo example configuration.yaml entry emulated_hue: - type: alexa - listen_port: 80 ``` Configuration variables: -- **type** (*Optional*): The type of assistant who we are emulated for. Either `alexa` or `google_home`, defaults to `google_home`. +- **type** (*Optional*): The type of assistant who we are emulated for. Either `alexa` or `google_home`, defaults to `google_home`. **This configuration option is deprecated and will be removed in a future release. It is no longer necessary to define type.** - **host_ip** (*Optional*): The IP address that your Home Assistant installation is running on. If you do not specify this option, the component will attempt to determine the IP address on its own. - **listen_port** (*Optional*): The port the Hue bridge API web server will run on. If not specified, this defaults to 8300. This can be any free port on your system. From 8ce9bd8dc92b43b1601b99a57d99cfe453a0557a Mon Sep 17 00:00:00 2001 From: Felix Ippolitov Date: Fri, 21 Jul 2017 21:19:20 +0300 Subject: [PATCH 51/71] Update media_player.samsungtv.markdown (#3030) --- source/_components/media_player.samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 79dbf31494b..c0c93d45376 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -47,6 +47,7 @@ Currently known supported models: - EH5300 - EH5600 - F6400AF +- F6400 - D6505 - D6300SF - U6000 (port must be set to 8001) From e183ecaa64ce203c31a9a8b806e6f4c2e48d9f71 Mon Sep 17 00:00:00 2001 From: Wilco van Duinkerken Date: Fri, 21 Jul 2017 20:20:13 +0200 Subject: [PATCH 52/71] Add websocket proxy to / for nginx subdomain setup (#3020) Without the proxy_http_version and proxy_header upgrades an the nginx subdomain setup generates socket errors on the login page. This makes that users can't login. Adding the websocket lines both to the "/" location as well as the "/api/websocket" location solves the issue. Solution copied from: KickHackerz, mar 1 answer on https://community.home-assistant.io/t/ngnix-so-confused-doing-something-wrong/12736/3. --- source/_docs/ecosystem/nginx_subdomain.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_docs/ecosystem/nginx_subdomain.markdown b/source/_docs/ecosystem/nginx_subdomain.markdown index 2bc9413b7e4..ccc12832876 100644 --- a/source/_docs/ecosystem/nginx_subdomain.markdown +++ b/source/_docs/ecosystem/nginx_subdomain.markdown @@ -36,6 +36,10 @@ server { location / { proxy_pass http://localhost:8123/; proxy_set_header Host $host; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; } location /api/websocket { From 227dcd29af8687258024ecd892790c335b1fa512 Mon Sep 17 00:00:00 2001 From: Alok Saboo Date: Fri, 21 Jul 2017 14:22:22 -0400 Subject: [PATCH 53/71] Added alternate path for virtualenv and cleaned up hassio docs (#3032) * Added alternate path for virtualenv * Clean up docs * Fixed typos * Fixed typos --- source/_components/emulated_hue.markdown | 11 ++++++----- source/hassio/external_storage.markdown | 7 +++---- source/hassio/installation.markdown | 4 ++-- source/hassio/run_local.markdown | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/source/_components/emulated_hue.markdown b/source/_components/emulated_hue.markdown index 0dbf81d2780..71868cba927 100644 --- a/source/_components/emulated_hue.markdown +++ b/source/_components/emulated_hue.markdown @@ -49,11 +49,11 @@ Configuration variables: - **upnp_bind_multicast** (*Optional*): Whether or not to bind the UPNP (SSDP) listener to the multicast address (239.255.255.250) or instead to the (unicast) host_ip address specified above (or automatically determined). The default is true, which will work for most situations. In special circumstances, like running in a FreeBSD or FreeNAS jail, you may need to disable this. - **off_maps_to_on_domains** (*Optional*): The domains that maps an "off" command to an "on" command. - + For example, if `script` is included in the list, and you ask Alexa to "turn off the *water plants* script," the command will be handled as if you asked her to turn on the script. - + If not specified, this defaults to the following list: - + - `script` - `scene` @@ -84,7 +84,7 @@ emulated_hue: - light ``` -With additional customization you will be able to specify the behaviour of the existing entities. +With additional customization you will be able to specify the behavior of the existing entities. ```yaml # Example customization @@ -110,13 +110,14 @@ You can verify that the `emulated_hue` component has been loaded and is respondi - `http://:8300/description.xml` - This URL should return a descriptor file in the form of an XML file. - `http://:8300/api/pi/lights` - This will return a list of devices, lights, scenes, groups, etc.. that `emulated_hue` is exposing to Alexa. -For Google Home, verify that the URLs above are using port 80, rather than port 8300 (i.e. `http://:80/description.xml`). +For Google Home, verify that the URLs above are using port 80, rather than port 8300 (i.e. `http://:80/description.xml`). An additional step is required to run Home Assistant as non-root user and use port 80 when using the AiO script. Execute the following command to allow `emulated_hue` to use port 80 as non-root user. ```bash sudo setcap 'cap_net_bind_service=+ep' /srv/homeassistant/homeassistant_venv/bin/python3 ``` +Please note that your path may be different depending on your installation method. For example, if you followed the [Virtualenv instructions](https://home-assistant.io/docs/installation/virtualenv/), your path will be `/srv/homeassistant/bin/python3`. ### {% linkable_title License %} diff --git a/source/hassio/external_storage.markdown b/source/hassio/external_storage.markdown index 43a6bba3a6f..201ebbec411 100644 --- a/source/hassio/external_storage.markdown +++ b/source/hassio/external_storage.markdown @@ -12,12 +12,11 @@ footer: true ### {% linkable_title ResinOS / Generic %} -Map the usb drive into add-on with `devices` options. If you need it on multiple add-ons you can use the `/share` folder which is accessable from multiple add-ons. -It is also possible to create a add-on that only mount stuff to `share`. +Map the USB drive into add-on with `devices` options. If you need it on multiple add-ons you can use the `/share` folder which is accessible from multiple add-ons. +It is also possible to create an add-on that only mounts stuff to `share`. -You can format the usb device with multiple volumes and map it to the specific add-on. +You can format the USB device with multiple volumes and map it to a specific add-on. ### {% linkable_title Generic %} The `share` is default on `/usr/share/hassio/share` so you can mount your volumes into this folder. - diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index 772658c5f83..a201a64793a 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -11,13 +11,13 @@ footer: true Hass.io images are available for all available Raspberry Pi and Intel NUC platforms. -- Download the appropriate image for your Raspberry Pi / intel nuc: +- Download the appropriate image for your Raspberry Pi / Intel NUC: - [Raspberry Pi / Zero][pi1] - [Raspberry Pi 2][pi2] - [Raspberry Pi 3][pi3] - [Intel NUC][nuc] - Flash the downloaded image to an SD card using [Etcher]. -- Optional - Setup the WiFi or static ip: On the SD-card, edit the `system-connections/resin-sample` file and follow the [ResinOS howto][resinos-network]. +- Optional - Setup the WiFi or static IP: On the SD-card, edit the `system-connections/resin-sample` file and follow the [ResinOS howto][resinos-network]. - Insert SD card to Raspberry Pi and turn it on. On first boot, it downloads the latest version of Home Assistant which takes ~20 minutes (slower/faster depending on the platform). - You will be able to reach your installation at [http://hassio.local:8123][local]. - Enable either the [Samba add-on][samba] or the [SSH add-on][ssh] to manage your configuration. diff --git a/source/hassio/run_local.markdown b/source/hassio/run_local.markdown index a93e9b211ad..12921406db3 100644 --- a/source/hassio/run_local.markdown +++ b/source/hassio/run_local.markdown @@ -9,11 +9,11 @@ sharing: true footer: true --- -Hass.io is a managed environment. This means that you're unable to install applications that you can embed into Home Assistant using the `command_line` sensor/switch. +Hass.io is a managed environment. This means that you can install applications that can be embedded into Home Assistant using the `command_line` sensor/switch. There are two options if you need to run a script to read data from a sensor or send commands to other devices on Hass.IO. -First option is to write a custom component for Home Assistant. Using Python you can communicate with your device. For custom component, look at the [devoloper site][custom-component]. +First option is to write a custom component for Home Assistant. Using Python you can communicate with your device. For custom component, look at the [developer site][custom-component]. The second option is to make a local add-on for Hass.io that sends the data to Home Assistant via MQTT. Before we dive into this, read up on [Hass.io add-on development][addons-tutorial]. From 26e4cfe4d7544f61904e03b8cbc9ca626916b2a2 Mon Sep 17 00:00:00 2001 From: haXs Date: Fri, 21 Jul 2017 20:37:31 +0100 Subject: [PATCH 54/71] Added steps to run installer by hand (#3019) Had an issue out of the box, got some help on Discord to run the installer manually and was asked to put it into the docs --- source/_docs/hassbian/installation.markdown | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/_docs/hassbian/installation.markdown b/source/_docs/hassbian/installation.markdown index cf39fde867e..e1e2cd5516b 100644 --- a/source/_docs/hassbian/installation.markdown +++ b/source/_docs/hassbian/installation.markdown @@ -19,7 +19,10 @@ The easiest way to install Home Assistant on your Raspberry Pi is by using HASSb These instructions are also available as a [video](https://www.youtube.com/watch?v=iIz6XqDwHEk). Additional information is available in this [video](https://www.youtube.com/watch?v=tCGlQSsQ-Mc). -After initial boot, you can reach Home Assistant in your browser at [http://hassbian.local:8123]. If you want to login via SSH, the default username is `pi` and password is `raspberry` (please change this by running `passwd`). The Home Assistant configuration is located at `/home/homeassistant/.homeassistant/`. +After initial boot an installer will run in the background and takes around 15 minutes to complete, after it has finished you can reach Home Assistant in your browser at [http://hassbian.local:8123]. If you want to login via SSH, the default username is `pi` and password is `raspberry` (please change this by running `passwd`). The Home Assistant configuration is located at `/home/homeassistant/.homeassistant/`. + +If you find that the web page is not reachable after 30 minutes or so, check that you have files in `/home/homeassistant/.homeassistant/`, if there are no files in this location then run the installer manually using this command: `sudo systemctl start install_homeassistant.service`. + The following extras are included on the image: From 8179ddb1e1bc84b41e4908227d71368b3ba42606 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 21 Jul 2017 23:54:15 +0200 Subject: [PATCH 55/71] Update samba.markdown --- source/_addons/samba.markdown | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/source/_addons/samba.markdown b/source/_addons/samba.markdown index bfca0c16c01..d99f5e28617 100644 --- a/source/_addons/samba.markdown +++ b/source/_addons/samba.markdown @@ -16,11 +16,16 @@ This allows you to set up a [Samba](https://samba.org/) server to access hass.io "name": "hassio", "workgroup": "WORKGROUP", "guest": true, - "map_config": true, - "map_addons": true, - "map_ssl": false, + "map": { + "config": true, + "addons": true, + "share": true, + "backup": true, + "ssl": false, + } "username": "", - "password": "" + "password": "", + "interface": "eth0" } ``` @@ -29,8 +34,7 @@ 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`. -- **map_addons** (*Optional*): Expose local custom addons folder. Defaults to `true`. -- **map_ssl** (*Optional*): Expose SSL folder. Be careful with this option! Defaults to `false`. +- **map** (*Optional*): Control whitch folder will be expose. `config` is for Home Assistant configuration folder. `addons` for local custom repositiory. `share` is a folder that can access from add-ons and Home Assistant too. `backup` for access to snapshot files. `ssl` for certificate storage, be careful with this option! Defaults to `true`. - **username** (*Optional*): The username for logging in if guest login is not used. - **password** (*Optional*): Password for `username`. An empty password is not supported. +- **interface** (*Optional*): Interface on that will start the share. Normaly is `eth0` for ethernet wired connection and `wlan0` for wireless connection. From 790d56c84f1ac701d4e7ab93ab145b68fd6c39a8 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 21 Jul 2017 23:54:30 +0200 Subject: [PATCH 56/71] Update samba.markdown --- source/_addons/samba.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/samba.markdown b/source/_addons/samba.markdown index d99f5e28617..9393e2f0351 100644 --- a/source/_addons/samba.markdown +++ b/source/_addons/samba.markdown @@ -22,7 +22,7 @@ This allows you to set up a [Samba](https://samba.org/) server to access hass.io "share": true, "backup": true, "ssl": false, - } + }, "username": "", "password": "", "interface": "eth0" From abdab1bdb9000201f99c79fd5c5bc79aca981dcc Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 21 Jul 2017 23:55:39 +0200 Subject: [PATCH 57/71] Update dhcp_server.markdown --- source/_addons/dhcp_server.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/dhcp_server.markdown b/source/_addons/dhcp_server.markdown index 1eb8c8f5f25..d603d40819c 100644 --- a/source/_addons/dhcp_server.markdown +++ b/source/_addons/dhcp_server.markdown @@ -47,7 +47,7 @@ Configuration variables:  - **range_end** (*Required*): End address for dhcp leases.  - **broadcast** (*Required*): Network broadcast address.  - **gateway** (*Required*): A List of gateways. - - **interface** (*Required*): Inteface on that will be listen. + - **interface** (*Required*): Inteface on that will be listen. Normaly is `eth0` for ethernet wired connection and `wlan0` for wireless connection. - **hosts** (*Optional*): A list of fixed IPs for devices. - **name** (*Required*): Name/hostname of your device.  - **mac** (*Required*): Mac address of your device. From 000d5e1f2e497f44afd8d2ea646a24738346eea3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 21 Jul 2017 23:56:37 +0200 Subject: [PATCH 58/71] Update dnsmasq.markdown --- source/_addons/dnsmasq.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/dnsmasq.markdown b/source/_addons/dnsmasq.markdown index 79639249005..a7b6dee257a 100644 --- a/source/_addons/dnsmasq.markdown +++ b/source/_addons/dnsmasq.markdown @@ -33,4 +33,4 @@ Configuration variables: - **defaults** (*Required*): A list of dns server to forward default requests. - **forwards** (*Optional*): A list of domains that will forward to a specific server. - **hosts** (*Optional*): A list of hosts to resolve it static. -- **interface** (*Optional*): If a interface is set, it listen only on this interface. Need to set for resinos. +- **interface** (*Optional*): If a interface is set, it listen only on this interface. Need to set for resinos. Normaly is `eth0` for ethernet wired connection and `wlan0` for wireless connection. From 7ba8315200e635da4a01f832af5fa49649f17f65 Mon Sep 17 00:00:00 2001 From: datafx Date: Sat, 22 Jul 2017 01:47:38 -0400 Subject: [PATCH 59/71] Added instruction for Microsoft SQL Server (#3035) --- source/_components/recorder.markdown | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index 67968c69ca7..ecf4a2003c2 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -14,7 +14,7 @@ ha_release: pre 0.7 The `recorder` component is storing details in a database which then are handled by the [`history` component](/components/history/). -Home Assistant uses [SQLAlchemy](http://www.sqlalchemy.org/) as Object Relational Mapper (ORM). This means that you can now use **any** SQL backend for the recorder that is supported by SQLAlchemy, like [MySQL](https://www.mysql.com/), [MariaDB](https://mariadb.org/), or [PostgreSQL](https://www.postgresql.org/). +Home Assistant uses [SQLAlchemy](http://www.sqlalchemy.org/) as Object Relational Mapper (ORM). This means that you can now use **any** SQL backend for the recorder that is supported by SQLAlchemy, like [MySQL](https://www.mysql.com/), [MariaDB](https://mariadb.org/), [PostgreSQL](https://www.postgresql.org/), or [MS SQL Server](https://www.microsoft.com/en-us/sql-server/). The default database engine is [SQLite](https://www.sqlite.org/) which doesn't require any configuration. The database is stored in your Home Assistant configuration directory (`.homeassistant`) and called `home-assistant_v2.db`. @@ -96,6 +96,7 @@ If you only want to hide events from e.g. your history, take a look at the [`his | MySQL (pymysql) | `mysql+pymysql://user:password@SERVER_IP/DB_NAME` | | PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | | PostgreSQL | `postgresql://scott:tiger@SERVER_IP/DB_NAME` | +| MS SQL Server | `mssql+pymssql://user:pass@SERVER_IP/?charset=utf8` | ## {% linkable_title Installation notes %} @@ -127,3 +128,20 @@ For PostgreSQL you may have to install a few dependencies: $ sudo apt-get install postgresql-server-dev-X.Y $ pip3 install psycopg2 ``` + +### {% linkable_title MS SQL Server %} + +For MS SQL Server you may have to install a few dependencies: + +```bash +$ sudo apt-get install freetds-dev +$ pip3 install pymssql +``` + +If you are in a virtual environment, don't forget to activate it before installing the pymssql package. + +```bash +$ sudo su -s /bin/bash homeassistant +$ source /srv/homeassistant/bin/activate +$ pip3 install pymssql +``` From edbb4883003fe53b06b9787556636aad3f97318f Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 22 Jul 2017 16:50:47 +0200 Subject: [PATCH 60/71] Update google_assistant.markdown --- source/_addons/google_assistant.markdown | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index c6d7d9ca922..ba8a619463e 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -12,9 +12,9 @@ footer: true [Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact over [api.ai] with Home-Assistant. You can also use [Google Actions][GoogleActions] to make extended functionality. To enable access to the Google Assistant API, do the following: -1) In the Cloud Platform Console, go to the Projects page. Select an existing project or create a new [project] -2) Enable the Google Assistant [API] on the project you selected -3) Create a [service account][serviceaccount] and download the json credentials. +1. In the Cloud Platform Console, go to the Projects page. Select an existing project or create a new [project] +2. Enable the Google Assistant [API] on the project you selected +3. Create an [OAuth Client ID][oauthclient] as type "others" and download the json file with arrow done on the right site. Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your training data over. Name the file `google_assistant.json`. @@ -39,6 +39,8 @@ card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] You need to use this information to configure the `mic` and `speaker` configuration options. The format is `,`. On a Raspberry Pi 3, `0,0` is the built-in headset port, `0,1` is the HDMI port. +We need also connect our Google Assistant with google account. Try open the oauth2 interface with http://hassio.local:9324 and follow the steps on that page. + Now that you've found the microphone and speaker addresses, it's time to configure Google Assistant and restart the add-on. ### Add-On configuration @@ -68,4 +70,4 @@ Use the Home Assistant [api.ai component][comp] to integrate the add-on into Hom [comp]: /components/apiai/ [project]: https://console.cloud.google.com/project [API]: https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview -[serviceaccount]: https://console.developers.google.com/apis/credentials/serviceaccountkey +[oauthclient]: https://console.developers.google.com/apis/credentials/oauthclient From 181703c00ae0e696e97aace171f391d77d63e314 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 22 Jul 2017 16:58:02 +0200 Subject: [PATCH 61/71] Update google_assistant.markdown --- source/_addons/google_assistant.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index ba8a619463e..3862d1c2bd4 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -49,7 +49,7 @@ Now that you've found the microphone and speaker addresses, it's time to configu { "mic": "1,0", "speaker": "1,0", - "service_account": "service_account.json", + "client_secrets": "google_assistant.json", } ``` From 4c27e02e2dc2146fd9df27cb7b80cb9a088f3b4c Mon Sep 17 00:00:00 2001 From: IoTmessenger Date: Sat, 22 Jul 2017 19:34:45 +0200 Subject: [PATCH 62/71] Update sensor.buienradar.markdown text (#3036) While implementing the buienradar sensor, I have noticed some sensors not showing up in my card. Some monitored_conditions were missing an '_' in their naming convention. I have already made the changes in the text above. --- source/_components/sensor.buienradar.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/_components/sensor.buienradar.markdown b/source/_components/sensor.buienradar.markdown index 2bba6a25e68..c82397198cf 100644 --- a/source/_components/sensor.buienradar.markdown +++ b/source/_components/sensor.buienradar.markdown @@ -27,7 +27,7 @@ sensor: - symbol - humidity - temperature - - windspeed + - wind_speed - pressure ``` @@ -67,11 +67,11 @@ Full configuration example where location is manually specified: - symbol - humidity - temperature - - groundtemperature - - windspeed - - windforce - - winddirection - - windazimuth + - ground_temperature + - wind_speed + - wind_force + - wind_direction + - wind_direction_azimuth - pressure - visibility - windgust From 67d5dd954ccb3e64791990b0359260a7dc012197 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 22 Jul 2017 20:38:47 +0200 Subject: [PATCH 63/71] Update --- source/developers/credits.markdown | 211 +++++++++++++++-------------- 1 file changed, 110 insertions(+), 101 deletions(-) diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown index 67225ed322a..d02bafbff1d 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-07-04 06:40:12 +0000 +date: 2017-07-22 18:38:29 +0000 sidebar: true comments: false sharing: true @@ -13,39 +13,42 @@ 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 "5508 total commits to the home-assistant organization, 3364 commits to home-assistant, 1138 commits to home-assistant.github.io, 554 commits to home-assistant-polymer, 244 commits to home-assistant-js, 110 commits to netdisco, 40 commits to home-assistant-js-websocket, 16 commits to hass-release, 12 commits to home-assistant-assets, 7 commits to example-custom-config, 7 commits to micropython-home-assistant, 4 commits to LabelBot, 2 commits to lambda-home-assistant-github, 2 commits to issue-bot, 2 commits to python-hassbian, 2 commits to hassio, 1 commit to hassio-addons-example, 1 commit to hassio-addons, 1 commit to home-assistant-iOS, 1 commit to home-assistant-notebooks") +- [Paulus Schoutsen (@balloob)](https://github.com/balloob "5561 total commits to the home-assistant organization, 3387 commits to home-assistant, 1149 commits to home-assistant.github.io, 569 commits to home-assistant-polymer, 244 commits to home-assistant-js, 110 commits to netdisco, 40 commits to home-assistant-js-websocket, 18 commits to hass-release, 12 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 4 commits to LabelBot, 2 commits to hassio-addons-example, 2 commits to python-hassbian, 2 commits to hassio, 2 commits to lambda-home-assistant-github, 2 commits to issue-bot, 1 commit to home-assistant-notebooks, 1 commit to hassio-addons, 1 commit to home-assistant-iOS") ### {% linkable_title Contributors %} (in alphabetical order) - [15goudreau (@15goudreau)](https://github.com/15goudreau "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") +- [Aaron Bach (@bachya)](https://github.com/bachya "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Aaron Linville (@linville)](https://github.com/linville "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Aaron Malone (@aaroncm)](https://github.com/aaroncm "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Aaron Morris (@Morrisai)](https://github.com/Morrisai "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Aaron Polley (@xarnze)](https://github.com/xarnze "2 total commits to the home-assistant organization, 1 commit to home-assistant, 1 commit to home-assistant.github.io") - [Aaron Wolen (@aaronwolen)](https://github.com/aaronwolen "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [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") -- [Abílio Costa (@abmantis)](https://github.com/abmantis "5 total commits to the home-assistant organization, 5 commits to home-assistant") +- [Abílio Costa (@abmantis)](https://github.com/abmantis "6 total commits to the home-assistant organization, 6 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 "2 total commits to the home-assistant organization, 1 commit to home-assistant-polymer, 1 commit to home-assistant") - [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 "175 total commits to the home-assistant organization, 113 commits to home-assistant, 30 commits to home-assistant.github.io, 28 commits to home-assistant-polymer, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant") +- [Adam Mills (@armills)](https://github.com/armills "179 total commits to the home-assistant organization, 115 commits to home-assistant, 31 commits to home-assistant.github.io, 29 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") - [Adrian Goins (@oskapt)](https://github.com/oskapt "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") -- [Adrien Ball (@adrienball)](https://github.com/adrienball "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Adrian Popa (@mad-ady)](https://github.com/mad-ady "2 total commits to the home-assistant organization, 1 commit to home-assistant-polymer, 1 commit to home-assistant.github.io") +- [Adrien Ball (@adrienball)](https://github.com/adrienball "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [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 "10 total commits to the home-assistant organization, 8 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Alan Fischer (@alanfischer)](https://github.com/alanfischer "11 total commits to the home-assistant organization, 9 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 (@alexrockt)](https://github.com/alexrockt "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [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 "25 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io") @@ -56,16 +59,18 @@ This page contains a list of people who have contributed in one way or another t - [Alexander Bandukwala (@7h3kk1d)](https://github.com/7h3kk1d "1 total commits to the home-assistant organization, 1 commit 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 Rust (@binarybucks)](https://github.com/binarybucks "1 total commits to the home-assistant organization, 1 commit 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") - [Alexandre Perrin (@kAworu)](https://github.com/kAworu "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Alfie Day (@Azelphur)](https://github.com/Azelphur "12 total commits to the home-assistant organization, 12 commits to home-assistant") +- [Aliaksandr (@minchik)](https://github.com/minchik "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Allan Glen (@allanglen)](https://github.com/allanglen "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "65 total commits to the home-assistant organization, 45 commits to home-assistant.github.io, 18 commits to home-assistant, 1 commit to hassio-addons, 1 commit to pi-gen") +- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "67 total commits to the home-assistant organization, 47 commits to home-assistant.github.io, 18 commits to home-assistant, 1 commit to hassio-addons, 1 commit to pi-gen") - [amigian74 (@amigian74)](https://github.com/amigian74 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [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 "80 total commits to the home-assistant organization, 57 commits to home-assistant, 21 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "90 total commits to the home-assistant organization, 64 commits to home-assistant, 24 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") @@ -74,23 +79,24 @@ This page contains a list of people who have contributed in one way or another t - [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 (@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 "373 total commits to the home-assistant organization, 252 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 8 commits to home-assistant.github.io") +- [Andrew (@aneisch)](https://github.com/aneisch "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "450 total commits to the home-assistant organization, 328 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 9 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") +- [Andrew Smith (@andrewmichaelsmith)](https://github.com/andrewmichaelsmith "2 total commits to the home-assistant organization, 2 commits to pi-gen") - [Andrew Starr-Bochicchio (@andrewsomething)](https://github.com/andrewsomething "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [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 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [Andrey (@andrey-git)](https://github.com/andrey-git "129 total commits to the home-assistant organization, 71 commits to home-assistant, 34 commits to home-assistant-polymer, 24 commits to home-assistant.github.io") +- [Andrey (@andrey-git)](https://github.com/andrey-git "141 total commits to the home-assistant organization, 77 commits to home-assistant, 39 commits to home-assistant-polymer, 25 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 "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 "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") - [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 "2 total commits to the home-assistant organization, 1 commit to netdisco, 1 commit to home-assistant") +- [Anthony Hughes (@tony2nite)](https://github.com/tony2nite "3 total commits to the home-assistant organization, 1 commit to netdisco, 1 commit to home-assistant, 1 commit to home-assistant.github.io") - [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- "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to netdisco") @@ -106,8 +112,7 @@ This page contains a list of people who have contributed in one way or another t - [ArrayLabs (@arraylabs)](https://github.com/arraylabs "7 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io") - [Arthur Leonard Andersen (@leoc)](https://github.com/leoc "9 total commits to the home-assistant organization, 9 commits to home-assistant") - [Arttu mahlakaarto (@amahlaka)](https://github.com/amahlaka "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Assaf Inbal (@shmuelzon)](https://github.com/shmuelzon "11 total commits to the home-assistant organization, 8 commits to homebridge-homeassistant, 3 commits to home-assistant") -- [atorralba (@atorralba)](https://github.com/atorralba "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Assaf Inbal (@shmuelzon)](https://github.com/shmuelzon "12 total commits to the home-assistant organization, 9 commits to homebridge-homeassistant, 3 commits to home-assistant") - [Aubin Paul (@outlyer)](https://github.com/outlyer "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Audun Ytterdal (@auduny)](https://github.com/auduny "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to home-assistant.github.io") - [aufano (@aufano)](https://github.com/aufano "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -122,6 +127,7 @@ This page contains a list of people who have contributed in one way or another t - [Beau Simensen (@simensen)](https://github.com/simensen "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Ben Bangert (@bbangert)](https://github.com/bbangert "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to home-assistant.github.io") - [Ben Doerr (@bendoerr)](https://github.com/bendoerr "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Ben Nuttall (@bennuttall)](https://github.com/bennuttall "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Ben Origas (@borigas)](https://github.com/borigas "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Ben Thomas (@wazoo)](https://github.com/wazoo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Ben Van Mechelen (@benvm)](https://github.com/benvm "1 total commits to the home-assistant organization, 1 commit to home-assistant") @@ -130,50 +136,44 @@ This page contains a list of people who have contributed in one way or another t - [Benjamin Parzella (@bparzella)](https://github.com/bparzella "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [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") +- [bergemalm (@bergemalm)](https://github.com/bergemalm "2 total commits to the home-assistant organization, 2 commits 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 "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") -- [BradleyDHobbs (@BradleyDHobbs)](https://github.com/BradleyDHobbs "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Brahma Fear (@brahmafear)](https://github.com/brahmafear "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") - [Brandon Mathis (@imathis)](https://github.com/imathis "484 total commits to the home-assistant organization, 484 commits to home-assistant.github.io") - [Brandon Weeks (@brandonweeks)](https://github.com/brandonweeks "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [brburns (@brburns)](https://github.com/brburns "2 total commits to the home-assistant organization, 2 commits to netdisco") -- [Brendan Berg (@captainnapalm)](https://github.com/captainnapalm "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Brendon Baumgartner (@bbrendon)](https://github.com/bbrendon "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") - [Brent Hughes (@bah2830)](https://github.com/bah2830 "26 total commits to the home-assistant organization, 17 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to netdisco") - [Brent Saltzman (@brent20)](https://github.com/brent20 "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Brenton Zillins (@bzillins)](https://github.com/bzillins "2 total commits to the home-assistant organization, 1 commit to home-assistant, 1 commit to home-assistant.github.io") +- [Brenton Zillins (@bzillins)](https://github.com/bzillins "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Brian Hopkins (@btotharye)](https://github.com/btotharye "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Brian J King (@brianjking)](https://github.com/brianjking "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") - [Brian Karani Ndwiga (@rayrayndwiga)](https://github.com/rayrayndwiga "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Brian Torres-Gil (@btorresgil)](https://github.com/btorresgil "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Brigham Brown (@brigham)](https://github.com/brigham "1 total commits to the home-assistant organization, 1 commit to home-assistant.github.io") - [Britton Clapp (@britton-clapp)](https://github.com/britton-clapp "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [BRUH Automation (@bruhautomation)](https://github.com/bruhautomation "4 total commits to the home-assistant organization, 3 commits to hassbian-scripts, 1 commit to home-assistant.github.io") - [Bruno Adele (@badele)](https://github.com/badele "22 total commits to the home-assistant organization, 22 commits to home-assistant") - [Bruno Binet (@bbinet)](https://github.com/bbinet "1 total commits to the home-assistant organization, 1 commit to hassio-build") -- [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") +- [Bryce Edwards (@hoopty)](https://github.com/hoopty "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits 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 "8 total commits to the home-assistant organization, 7 commits to home-assistant, 1 commit to home-assistant.github.io") +- [Caleb (@finish06)](https://github.com/finish06 "7 total commits to the home-assistant organization, 7 commits to home-assistant") - [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 "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 homebridge-homeassistant, 1 commit to hassbian-scripts") +- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "87 total commits to the home-assistant organization, 79 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to fabric-home-assistant, 1 commit to homebridge-homeassistant, 1 commit to hassbian-scripts") - [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") +- [Cecron (@Cecron)](https://github.com/Cecron "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Cenk Gündoğan (@cgundogan)](https://github.com/cgundogan "1 total commits to the home-assistant organization, 1 commit to libcoap") - [cgtobi (@cgtobi)](https://github.com/cgtobi "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") - [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 "10 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant.github.io") +- [Charles Blonde (@CharlesBlonde)](https://github.com/CharlesBlonde "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 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") @@ -195,7 +195,7 @@ This page contains a list of people who have contributed in one way or another t - [chrom3 (@chrom3)](https://github.com/chrom3 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [chrysn (@chrysn)](https://github.com/chrysn "65 total commits to the home-assistant organization, 65 commits to libcoap") - [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 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Ciquattro (@CiquattroFPV)](https://github.com/CiquattroFPV "3 total commits to the home-assistant organization, 3 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") - [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") @@ -203,12 +203,13 @@ This page contains a list of people who have contributed in one way or another t - [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 "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") +- [Constantine Poltyrev (@shprota)](https://github.com/shprota "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Corban Mailloux (@corbanmailloux)](https://github.com/corbanmailloux "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 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 "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") +- [Craig J. Ward (@wardcraigj)](https://github.com/wardcraigj "14 total commits to the home-assistant organization, 9 commits to home-assistant, 5 commits to home-assistant.github.io") +- [cribbstechnologies (@cribbstechnologies)](https://github.com/cribbstechnologies "37 total commits to the home-assistant organization, 24 commits to home-assistant, 11 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 hassbot, 1 commit to homebridge-homeassistant") +- [Dale Higgs (@dale3h)](https://github.com/dale3h "26 total commits to the home-assistant organization, 15 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 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") @@ -218,9 +219,9 @@ This page contains a list of people who have contributed in one way or another t - [Dan Van Brunt (@iDVB)](https://github.com/iDVB "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Dani (@danichispa)](https://github.com/danichispa "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") - [Daniel Escoz (@Darkhogg)](https://github.com/Darkhogg "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "296 total commits to the home-assistant organization, 202 commits to home-assistant, 92 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "303 total commits to the home-assistant organization, 209 commits to home-assistant, 92 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [Daniel Matuschek (@usul27)](https://github.com/usul27 "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "55 total commits to the home-assistant organization, 32 commits to home-assistant.github.io, 23 commits to home-assistant") +- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "56 total commits to the home-assistant organization, 32 commits to home-assistant.github.io, 24 commits to home-assistant") - [Daniel Peukert (@dpeukert)](https://github.com/dpeukert "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Daniel Stone (@daniel-stoneuk)](https://github.com/daniel-stoneuk "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Daniel Watkins (@OddBloke)](https://github.com/OddBloke "4 total commits to the home-assistant organization, 4 commits to home-assistant-ansible") @@ -249,8 +250,9 @@ 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 Gomes (@dgomes)](https://github.com/dgomes "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Diogo Soares (@diogos88)](https://github.com/diogos88 "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 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") - [DrewSK (@dzsquared)](https://github.com/dzsquared "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") @@ -268,8 +270,8 @@ This page contains a list of people who have contributed in one way or another t - [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 "38 total commits to the home-assistant organization, 24 commits to home-assistant, 14 commits to home-assistant.github.io") -- [Fabian Affolter (@fabaff)](https://github.com/fabaff "3845 total commits to the home-assistant organization, 2420 commits to home-assistant.github.io, 1264 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 "49 total commits to the home-assistant organization, 29 commits to home-assistant, 18 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant") +- [Fabian Affolter (@fabaff)](https://github.com/fabaff "3887 total commits to the home-assistant organization, 2439 commits to home-assistant.github.io, 1282 commits to home-assistant, 59 commits to home-assistant-ansible, 23 commits to home-assistant-dev-helper, 22 commits to home-assistant-assets, 22 commits to home-assistant-notebooks, 21 commits to home-assistant-cli, 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") @@ -279,6 +281,7 @@ This page contains a list of people who have contributed in one way or another t - [felix schwenzel (@diplix)](https://github.com/diplix "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [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") +- [Flavien Charlon (@Flavien)](https://github.com/Flavien "1 total commits to the home-assistant organization, 1 commit 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, 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") @@ -288,7 +291,7 @@ This page contains a list of people who have contributed in one way or another t - [François Martin (@martinfrancois)](https://github.com/martinfrancois "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Frederic Hemberger (@fhemberger)](https://github.com/fhemberger "93 total commits to the home-assistant organization, 93 commits to home-assistant.github.io") - [Fredrik Haglund (@PetitCircuitLab)](https://github.com/PetitCircuitLab "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "140 total commits to the home-assistant organization, 60 commits to home-assistant.github.io, 50 commits to hassbian-scripts, 25 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer") +- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "143 total commits to the home-assistant organization, 61 commits to home-assistant.github.io, 50 commits to hassbian-scripts, 27 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer") - [freol35241 (@freol35241)](https://github.com/freol35241 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [froz (@froz)](https://github.com/froz "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [fuga2136 (@fuga2136)](https://github.com/fuga2136 "13 total commits to the home-assistant organization, 13 commits to home-assistant.github.io") @@ -307,13 +310,14 @@ 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") +- [gitmopp (@gitmopp)](https://github.com/gitmopp "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [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") - [GreenTurtwig (@GreenTurtwig)](https://github.com/GreenTurtwig "74 total commits to the home-assistant organization, 67 commits to home-assistant.github.io, 7 commits to home-assistant") - [Greg (@theCMack)](https://github.com/theCMack "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Greg Dowling (@pavoni)](https://github.com/pavoni "243 total commits to the home-assistant organization, 216 commits to home-assistant, 25 commits to home-assistant.github.io, 2 commits to netdisco") +- [Greg Dowling (@pavoni)](https://github.com/pavoni "245 total commits to the home-assistant organization, 218 commits to home-assistant, 25 commits to home-assistant.github.io, 2 commits to netdisco") - [Greg MacLellan (@gregmac)](https://github.com/gregmac "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Greg Stevenson (@gstevenson)](https://github.com/gstevenson "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Gregor Gruener (@ggruner)](https://github.com/ggruner "1 total commits to the home-assistant organization, 1 commit to home-assistant") @@ -333,13 +337,13 @@ This page contains a list of people who have contributed in one way or another t - [HBDK (@HBDK)](https://github.com/HBDK "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Heath Paddock (@heathbar)](https://github.com/heathbar "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Heiko Rothe (@mKeRix)](https://github.com/mKeRix "20 total commits to the home-assistant organization, 15 commits to home-assistant, 5 commits to home-assistant.github.io") -- [Hellowlol (@Hellowlol)](https://github.com/Hellowlol "3 total commits to the home-assistant organization, 3 commits to netdisco") +- [Hellowlol (@Hellowlol)](https://github.com/Hellowlol "4 total commits to the home-assistant organization, 3 commits to netdisco, 1 commit to appdaemon") - [Helmut Januschka (@hjanuschka)](https://github.com/hjanuschka "3 total commits to the home-assistant organization, 3 commits to issue-bot") - [Henning Dickten (@hensing)](https://github.com/hensing "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Henrik Nicolaisen (@hmn)](https://github.com/hmn "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Hermann Kraus (@herm)](https://github.com/herm "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Hernán Rossetto (@hmronline)](https://github.com/hmronline "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [hexa- (@mweinelt)](https://github.com/mweinelt "17 total commits to the home-assistant organization, 10 commits to home-assistant, 7 commits to home-assistant.github.io") +- [hexa- (@mweinelt)](https://github.com/mweinelt "16 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io") - [heytcass (@heytcass)](https://github.com/heytcass "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Hillary Fraley (@hillaryfraley)](https://github.com/hillaryfraley "12 total commits to the home-assistant organization, 12 commits to home-assistant.github.io") - [hokagegano (@hokagegano)](https://github.com/hokagegano "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -361,13 +365,15 @@ This page contains a list of people who have contributed in one way or another t - [Jack Minardi (@jminardi)](https://github.com/jminardi "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Jacob Mansfield (@cyberjacob)](https://github.com/cyberjacob "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Jacob Minnis (@jminn)](https://github.com/jminn "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Jacob Siverskog (@jsiverskog)](https://github.com/jsiverskog "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Jacob Tomlinson (@jacobtomlinson)](https://github.com/jacobtomlinson "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant") - [Jake McCrary (@jakemcc)](https://github.com/jakemcc "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [James Cole (@jamespcole)](https://github.com/jamespcole "94 total commits to the home-assistant organization, 93 commits to home-assistant, 1 commit to home-assistant-js") +- [James Marsh (@doctorjames)](https://github.com/doctorjames "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Jamie van Dyke (@fearoffish)](https://github.com/fearoffish "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-iOS") - [JammyDodger231 (@JammyDodger231)](https://github.com/JammyDodger231 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Jan Harkes (@jaharkes)](https://github.com/jaharkes "110 total commits to the home-assistant organization, 100 commits to home-assistant, 10 commits to netdisco") -- [Jan Losinski (@janLo)](https://github.com/janLo "16 total commits to the home-assistant organization, 12 commits to home-assistant, 4 commits to home-assistant.github.io") +- [Jan Losinski (@janLo)](https://github.com/janLo "17 total commits to the home-assistant organization, 13 commits to home-assistant, 4 commits to home-assistant.github.io") - [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") @@ -383,7 +389,7 @@ This page contains a list of people who have contributed in one way or another t - [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 "19 total commits to the home-assistant organization, 14 commits to home-assistant, 5 commits to home-assistant.github.io") +- [Jeff Wilson (@jawilson)](https://github.com/jawilson "21 total commits to the home-assistant organization, 16 commits to home-assistant, 5 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") @@ -394,6 +400,7 @@ This page contains a list of people who have contributed in one way or another t - [Jesse Osiecki (@stratosmacker)](https://github.com/stratosmacker "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Jesse Zoldak (@jzoldak)](https://github.com/jzoldak "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [JesseWebDotCom (@JesseWebDotCom)](https://github.com/JesseWebDotCom "16 total commits to the home-assistant organization, 8 commits to home-assistant, 8 commits to home-assistant.github.io") +- [jgrieger1 (@jgrieger1)](https://github.com/jgrieger1 "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [jgriff2 (@jgriff2)](https://github.com/jgriff2 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Jim Rollenhagen (@jimrollenhagen)](https://github.com/jimrollenhagen "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [jnimmo (@jnimmo)](https://github.com/jnimmo "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -406,7 +413,7 @@ This page contains a list of people who have contributed in one way or another t - [Joeboyc2 (@Joeboyc2)](https://github.com/Joeboyc2 "15 total commits to the home-assistant organization, 14 commits to home-assistant.github.io, 1 commit to home-assistant") - [Joel Asher Friedman (@joelash)](https://github.com/joelash "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [joemcmonagle (@joemcmonagle)](https://github.com/joemcmonagle "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") -- [Johan Bloemberg (@aequitas)](https://github.com/aequitas "39 total commits to the home-assistant organization, 32 commits to home-assistant, 6 commits to home-assistant.github.io, 1 commit to netdisco") +- [Johan Bloemberg (@aequitas)](https://github.com/aequitas "41 total commits to the home-assistant organization, 33 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco") - [Johan Carlquist (@theseal)](https://github.com/theseal "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [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") @@ -415,31 +422,32 @@ This page contains a list of people who have contributed in one way or another t - [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 "38 total commits to the home-assistant organization, 26 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to hadashboard") +- [John Mihalic (@mezz64)](https://github.com/mezz64 "39 total commits to the home-assistant organization, 27 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 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") +- [Jonatan Castro (@jcastro)](https://github.com/jcastro "5 total commits to the home-assistant organization, 5 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 "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 Carter (@iKarith)](https://github.com/iKarith "9 total commits to the home-assistant organization, 9 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 (@karlw00t)](https://github.com/karlw00t "2 total commits to the home-assistant organization, 2 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") +- [Josh Anderson (@andersonshatch)](https://github.com/andersonshatch "6 total commits to the home-assistant organization, 3 commits to homebridge-homeassistant, 3 commits to home-assistant") - [Josh Nichols (@technicalpickles)](https://github.com/technicalpickles "24 total commits to the home-assistant organization, 15 commits to home-assistant, 9 commits to home-assistant.github.io") - [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 "7 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 1 commit to home-assistant") +- [JudgeDredd (@kentcalero)](https://github.com/kentcalero "8 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 1 commit to home-assistant") - [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") +- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "2 total commits to the home-assistant organization, 2 commits 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") -- [Justin Dray (@justin8)](https://github.com/justin8 "7 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Justin Dray (@justin8)](https://github.com/justin8 "8 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 1 commit to home-assistant") - [Justin Hayes (@GussyH)](https://github.com/GussyH "7 total commits to the home-assistant organization, 7 commits to hadashboard") - [Justin Moy (@justincmoy)](https://github.com/justincmoy "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [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") @@ -452,9 +460,10 @@ This page contains a list of people who have contributed in one way or another t - [Keith (@seedzero)](https://github.com/seedzero "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Keith Lamprecht (@Nixon506E)](https://github.com/Nixon506E "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Ken Bannister (@kb2ma)](https://github.com/kb2ma "1 total commits to the home-assistant organization, 1 commit to libcoap") +- [Ken Davidson (@kwdavidson)](https://github.com/kwdavidson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [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, 3 commits to home-assistant.github.io") +- [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 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") @@ -464,13 +473,14 @@ This page contains a list of people who have contributed in one way or another t - [Klaas Hoekema (@KlaasH)](https://github.com/KlaasH "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") - [Krasimir Chariyski (@Chariyski)](https://github.com/Chariyski "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Krasimir Zhelev (@zhelev)](https://github.com/zhelev "2 total commits to the home-assistant organization, 1 commit to netdisco, 1 commit to home-assistant") +- [Kyle Decot (@kyledecot)](https://github.com/kyledecot "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Kyle Gordon (@kylegordon)](https://github.com/kylegordon "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Kyle Hendricks (@kylehendricks)](https://github.com/kylehendricks "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Kyle R (@qcryptic)](https://github.com/qcryptic "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [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 "9 total commits to the home-assistant organization, 7 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Lev Aronsky (@aronsky)](https://github.com/aronsky "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 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") @@ -492,6 +502,7 @@ This page contains a list of people who have contributed in one way or another t - [Magnus Ihse Bursie (@magicus)](https://github.com/magicus "16 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to netdisco, 3 commits to home-assistant.github.io") - [Magnus Lyckå (@magnus-lycka)](https://github.com/magnus-lycka "1 total commits to the home-assistant organization, 1 commit to netdisco") - [MagnusKnutas (@MagnusKnutas)](https://github.com/MagnusKnutas "29 total commits to the home-assistant organization, 29 commits to home-assistant") +- [Maikel Wever (@maikelwever)](https://github.com/maikelwever "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Mal Curtis (@snikch)](https://github.com/snikch "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Malte Franken (@exxamalte)](https://github.com/exxamalte "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Manoj (@vmulpuru)](https://github.com/vmulpuru "1 total commits to the home-assistant organization, 1 commit to home-assistant") @@ -499,61 +510,52 @@ 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 "11 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Marc Plano-Lesay (@Kernald)](https://github.com/Kernald "12 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits 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") +- [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "111 total commits to the home-assistant organization, 59 commits to home-assistant, 52 commits to home-assistant.github.io") - [Marcin Jaworski (@yawor)](https://github.com/yawor "12 total commits to the home-assistant organization, 12 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") - [Mark Carline (@markcarline)](https://github.com/markcarline "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Mark Huson (@mehuman)](https://github.com/mehuman "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") -- [Mark King (@vemek)](https://github.com/vemek "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Mark Oude Veldhuis (@markoudev)](https://github.com/markoudev "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Mark Oude Veldhuis (@markoudev)](https://github.com/markoudev "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Markus Becker (@markushx)](https://github.com/markushx "6 total commits to the home-assistant organization, 6 commits to libcoap") - [Markus Peter (@bimbar)](https://github.com/bimbar "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") - [Markus Stenberg (@fingon)](https://github.com/fingon "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Martin Berg (@mbrrg)](https://github.com/mbrrg "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Martin Bernstorff (@ryqiem)](https://github.com/ryqiem "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "122 total commits to the home-assistant organization, 97 commits to home-assistant, 25 commits to home-assistant.github.io") -- [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 Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "124 total commits to the home-assistant organization, 99 commits to home-assistant, 25 commits to home-assistant.github.io") - [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") +- [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 homebridge-homeassistant") - [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") +- [Matt Schmitt (@schmittx)](https://github.com/schmittx "2 total commits to the home-assistant organization, 2 commits 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") -- [Matthew Schick (@mattsch)](https://github.com/mattsch "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Matthew Treinish (@mtreinish)](https://github.com/mtreinish "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Matthias Grawinkel (@meatz)](https://github.com/meatz "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Matthew Bowen (@mgbowen)](https://github.com/mgbowen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Matthew Garrett (@mjg59)](https://github.com/mjg59 "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Matthew Schick (@mattsch)](https://github.com/mattsch "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Matthew Treinish (@mtreinish)](https://github.com/mtreinish "13 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to home-assistant.github.io") - [Max Rumpf (@Maxr1998)](https://github.com/Maxr1998 "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [mboeru (@mboeru)](https://github.com/mboeru "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS") +- [mertenats (@mertenats)](https://github.com/mertenats "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [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 "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 Fester (@michaelfester)](https://github.com/michaelfester "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Michael Fester (@michaelfester)](https://github.com/michaelfester "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [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") -- [Michael Heinemann (@heinemml)](https://github.com/heinemml "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Michael Kutý (@michaelkuty)](https://github.com/michaelkuty "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Michael Heinemann (@heinemml)](https://github.com/heinemml "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [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 "55 total commits to the home-assistant organization, 29 commits to home-assistant, 22 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") +- [Miha Lunar (@SmilyOrg)](https://github.com/SmilyOrg "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [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 Christianson (@MikeChristianson)](https://github.com/MikeChristianson "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Mike Megally (@cmsimike)](https://github.com/cmsimike "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Mike Roberts (@m-roberts)](https://github.com/m-roberts "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [mikey (@pfista)](https://github.com/pfista "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -564,11 +566,12 @@ 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 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") +- [mjj4791 (@mjj4791)](https://github.com/mjj4791 "10 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 2 commits to home-assistant") - [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") - [moskovskiy82 (@moskovskiy82)](https://github.com/moskovskiy82 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [motir (@motir)](https://github.com/motir "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [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") - [Mārtiņš Grunskis (@grunskis)](https://github.com/grunskis "1 total commits to the home-assistant organization, 1 commit to netdisco") @@ -581,8 +584,8 @@ This page contains a list of people who have contributed in one way or another t - [Nemanja Stefanovic (@nemik)](https://github.com/nemik "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [neonbunny (@neonbunny)](https://github.com/neonbunny "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Ness (@Xx-Ness-xX)](https://github.com/Xx-Ness-xX "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Nick Sabinske (@quadportnick)](https://github.com/quadportnick "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Nick Touran (@partofthething)](https://github.com/partofthething "37 total commits to the home-assistant organization, 25 commits to home-assistant, 12 commits to home-assistant.github.io") +- [Nick (@quadportnick)](https://github.com/quadportnick "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Nick Touran (@partofthething)](https://github.com/partofthething "38 total commits to the home-assistant organization, 25 commits to home-assistant, 13 commits to home-assistant.github.io") - [Nick Vella (@nvella)](https://github.com/nvella "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to homebridge-homeassistant") - [Nick Waring (@nickwaring)](https://github.com/nickwaring "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Nicolas Graziano (@ngraziano)](https://github.com/ngraziano "3 total commits to the home-assistant organization, 3 commits to home-assistant") @@ -602,12 +605,13 @@ This page contains a list of people who have contributed in one way or another t - [Ole-Kenneth (@olekenneth)](https://github.com/olekenneth "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [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") - [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 "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 (@scarface-4711)](https://github.com/scarface-4711 "18 total commits to the home-assistant organization, 11 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 "29 total commits to the home-assistant organization, 21 commits to home-assistant, 8 commits to home-assistant.github.io") +- [Open Home Automation (@open-homeautomation)](https://github.com/open-homeautomation "39 total commits to the home-assistant organization, 29 commits to home-assistant, 10 commits to home-assistant.github.io") +- [oznu (@oznu)](https://github.com/oznu "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Parker Moore (@parkr)](https://github.com/parkr "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 "1554 total commits to the home-assistant organization, 588 commits to hassio, 366 commits to home-assistant, 223 commits to hassio-addons, 181 commits to home-assistant.github.io, 180 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 "1686 total commits to the home-assistant organization, 650 commits to hassio, 371 commits to home-assistant, 242 commits to hassio-addons, 220 commits to hassio-build, 187 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 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") @@ -617,8 +621,8 @@ This page contains a list of people who have contributed in one way or another t - [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 "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Per Sandström (@persandstrom)](https://github.com/persandstrom "122 total commits to the home-assistant organization, 98 commits to home-assistant, 12 commits to home-assistant-polymer, 12 commits to home-assistant.github.io") +- [Per Osbäck (@perosb)](https://github.com/perosb "5 total commits to the home-assistant organization, 5 commits to home-assistant") +- [Per Sandström (@persandstrom)](https://github.com/persandstrom "124 total commits to the home-assistant organization, 98 commits to home-assistant, 14 commits to home-assistant.github.io, 12 commits to home-assistant-polymer") - [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 "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") @@ -631,8 +635,8 @@ This page contains a list of people who have contributed in one way or another t - [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") - [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "20 total commits to the home-assistant organization, 13 commits to home-assistant, 7 commits to home-assistant.github.io") -- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") -- [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") +- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "8 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.github.io") +- [Pierre Ståhl (@postlund)](https://github.com/postlund "31 total commits to the home-assistant organization, 21 commits to home-assistant, 6 commits to home-assistant.github.io, 4 commits to netdisco") - [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 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") @@ -652,7 +656,7 @@ This page contains a list of people who have contributed in one way or another t - [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 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 "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 scenegen, 3 commits to hassbot, 3 commits to hadashboard, 3 commits to home-assistant-js-websocket, 3 commits to home-assistant-js, 3 commits to appdaemon, 3 commits to home-assistant-cli, 3 commits to organization, 2 commits to micropython-home-assistant, 2 commits to home-assistant-notebooks, 2 commits to home-assistant-dev-helper, 2 commits to home-assistant-ansible, 2 commits to lambda-home-assistant-github, 2 commits to LabelBot, 2 commits to fabric-home-assistant, 2 commits to home-assistant-assets") +- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1191 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, 80 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 scenegen, 3 commits to appdaemon, 3 commits to home-assistant-js, 3 commits to hassbot, 3 commits to home-assistant-js-websocket, 3 commits to home-assistant-cli, 3 commits to organization, 3 commits to hadashboard, 2 commits to micropython-home-assistant, 2 commits to home-assistant-dev-helper, 2 commits to home-assistant-ansible, 2 commits to home-assistant-notebooks, 2 commits to LabelBot, 2 commits to fabric-home-assistant, 2 commits to home-assistant-assets, 2 commits to lambda-home-assistant-github") - [Robby Grossman (@freerobby)](https://github.com/freerobby "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Robin (@robmarkcole)](https://github.com/robmarkcole "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") @@ -670,27 +674,28 @@ This page contains a list of people who have contributed in one way or another t - [rubund (@rubund)](https://github.com/rubund "6 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io") - [RunOnGitHub (@RunOnGitHub)](https://github.com/RunOnGitHub "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Ruslan Kiianchuk (@zoresvit)](https://github.com/zoresvit "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Russell Cloran (@rcloran)](https://github.com/rcloran "8 total commits to the home-assistant organization, 4 commits to homebridge-homeassistant, 4 commits to home-assistant") +- [Russell Cloran (@rcloran)](https://github.com/rcloran "16 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to homebridge-homeassistant, 2 commits to home-assistant.github.io") - [Ryan Borstelmann (@SlothCroissant)](https://github.com/SlothCroissant "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Ryan Bray (@rbray89)](https://github.com/rbray89 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Ryan Daigle (@rwdaigle)](https://github.com/rwdaigle "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [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") +- [Sabesto (@Sabesto)](https://github.com/Sabesto "3 total commits to the home-assistant organization, 3 commits 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") - [Sam Whited (@SamWhited)](https://github.com/SamWhited "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [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 "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 "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") +- [Sean Dague (@sdague)](https://github.com/sdague "58 total commits to the home-assistant organization, 39 commits to home-assistant, 10 commits to home-assistant.github.io, 5 commits to home-assistant-polymer, 3 commits to netdisco, 1 commit to home-assistant-js") +- [Sean Gollschewsky (@gollo)](https://github.com/gollo "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [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") @@ -720,17 +725,20 @@ This page contains a list of people who have contributed in one way or another t - [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") +- [Teemu R. (@rytilahti)](https://github.com/rytilahti "31 total commits to the home-assistant organization, 23 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco") - [Teguh Sobirin (@tjstyle)](https://github.com/tjstyle "2 total commits to the home-assistant organization, 2 commits to pi-gen") - [Terry Carlin (@terrycarlin)](https://github.com/terrycarlin "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [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") +- [thecynic (@thecynic)](https://github.com/thecynic "4 total commits to the home-assistant organization, 4 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 "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") +- [Thibault Cohen (@titilambert)](https://github.com/titilambert "36 total commits to the home-assistant organization, 23 commits to home-assistant, 13 commits to home-assistant.github.io") +- [Thibault Maekelbergh (@thibmaek)](https://github.com/thibmaek "2 total commits to the home-assistant organization, 2 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") +- [Thomas Phillips (@thomas-teknique)](https://github.com/thomas-teknique "2 total commits to the home-assistant organization, 2 commits to pi-gen") +- [Thomas Purchas (@thomaspurchas)](https://github.com/thomaspurchas "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Thomas Pötsch (@thp-comnets)](https://github.com/thp-comnets "7 total commits to the home-assistant organization, 7 commits to libcoap") - [thrawnarn (@thrawnarn)](https://github.com/thrawnarn "1 total commits to the home-assistant organization, 1 commit to netdisco") - [ThUnD3r|Gr33n (@thundergreen)](https://github.com/thundergreen "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") @@ -745,9 +753,10 @@ 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 "6 total commits to the home-assistant organization, 4 commits to home-assistant-polymer, 2 commits to home-assistant") +- [Tom Matheussen (@Tommatheussen)](https://github.com/Tommatheussen "7 total commits to the home-assistant organization, 4 commits to home-assistant-polymer, 3 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") +- [Tony Torralba (@atorralba)](https://github.com/atorralba "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Toshik (@Toshik)](https://github.com/Toshik "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [tradiuz (@tradiuz)](https://github.com/tradiuz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [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") @@ -759,25 +768,25 @@ This page contains a list of people who have contributed in one way or another t - [Tõnis Tobre (@tobre6)](https://github.com/tobre6 "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Valentin Alexeev (@valentinalexeev)](https://github.com/valentinalexeev "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") - [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 "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Vlad Korniev (@vkorn)](https://github.com/vkorn "1 total commits to the home-assistant organization, 1 commit to hassio-build") +- [viswa-swami (@viswa-swami)](https://github.com/viswa-swami "6 total commits to the home-assistant organization, 6 commits to home-assistant") +- [Vlad Korniev (@vkorn)](https://github.com/vkorn "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to hassio-build") - [vllungu (@vllungu)](https://github.com/vllungu "3 total commits to the home-assistant organization, 3 commits to libcoap") - [vrs01 (@vrs01)](https://github.com/vrs01 "13 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 5 commits to appdaemon") - [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 "14 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 1 commit to fabric-home-assistant") +- [Will Heid (@bassclarinetl2)](https://github.com/bassclarinetl2 "15 total commits to the home-assistant organization, 14 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") - [Will W. (@tiktok7)](https://github.com/tiktok7 "6 total commits to the home-assistant organization, 4 commits to home-assistant, 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") +- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "68 total commits to the home-assistant organization, 50 commits to home-assistant, 18 commits to home-assistant.github.io") - [wind-rider (@wind-rider)](https://github.com/wind-rider "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [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 "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [XECDesign (@XECDesign)](https://github.com/XECDesign "77 total commits to the home-assistant organization, 77 commits to pi-gen") +- [XECDesign (@XECDesign)](https://github.com/XECDesign "97 total commits to the home-assistant organization, 97 commits to pi-gen") - [Xorso (@Xorso)](https://github.com/Xorso "22 total commits to the home-assistant organization, 21 commits to home-assistant, 1 commit to hassio-addons") -- [Yannick POLLART (@ypollart)](https://github.com/ypollart "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Yannick POLLART (@ypollart)](https://github.com/ypollart "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Yannick Simard (@TheRaven)](https://github.com/TheRaven "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Yasin Soliman (@yasinS)](https://github.com/yasinS "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Yum (@goofz)](https://github.com/goofz "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -790,4 +799,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 Tuesday, July 4th 2017, 6:40:12 am UTC. +This page was last updated Saturday, July 22nd 2017, 6:38:29 pm UTC. From 83f1bfd4ba89f2abc0c1997187e2cdd755501177 Mon Sep 17 00:00:00 2001 From: Andrew Cockburn Date: Sat, 22 Jul 2017 17:24:18 -0400 Subject: [PATCH 64/71] Update installation.markdown --- .../ecosystem/appdaemon/installation.markdown | 32 +------------------ 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/source/_docs/ecosystem/appdaemon/installation.markdown b/source/_docs/ecosystem/appdaemon/installation.markdown index cd6d1cf4cd9..46acc734e85 100644 --- a/source/_docs/ecosystem/appdaemon/installation.markdown +++ b/source/_docs/ecosystem/appdaemon/installation.markdown @@ -12,34 +12,4 @@ redirect_from: /ecosystem/appdaemon/installation/ Installation is either by `pip3` or Docker. -## {% linkable_title Clone the Repository %} - -For either method you will need to clone the **AppDaemon** repository to the current local directory on your machine. - -``` bash -$ git clone https://github.com/acockburn/appdaemon.git -``` - -Change your working directory to the repository root. Moving forward, we will be working from this directory. - -``` bash -$ cd appdaemon -``` - -## {% linkable_title Install using Docker %} - -To build the Docker image run the following: - -``` bash -$ docker build -t appdaemon . -``` - -(Note the period at the end of the above command) - -## {% linkable_title Install using `pip3` %} - -Before running `AppDaemon` you will need to install the package: - -```bash -$ sudo pip3 install . -``` +Follow [these instructions](https://github.com/home-assistant/appdaemon/blob/dev/README.rst) for full details. From d29eb9a396862f67a2cfafb620b27de80daa49ec Mon Sep 17 00:00:00 2001 From: IoTmessenger Date: Sun, 23 Jul 2017 16:39:22 +0200 Subject: [PATCH 65/71] Revert "Update sensor.buienradar.markdown text" (#3042) * Revert "Update installation.markdown" This reverts commit 83f1bfd4ba89f2abc0c1997187e2cdd755501177. * Revert "Update" This reverts commit 67d5dd954ccb3e64791990b0359260a7dc012197. * Revert "Update sensor.buienradar.markdown text (#3036)" This reverts commit 4c27e02e2dc2146fd9df27cb7b80cb9a088f3b4c. --- source/_components/sensor.buienradar.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/_components/sensor.buienradar.markdown b/source/_components/sensor.buienradar.markdown index c82397198cf..2bba6a25e68 100644 --- a/source/_components/sensor.buienradar.markdown +++ b/source/_components/sensor.buienradar.markdown @@ -27,7 +27,7 @@ sensor: - symbol - humidity - temperature - - wind_speed + - windspeed - pressure ``` @@ -67,11 +67,11 @@ Full configuration example where location is manually specified: - symbol - humidity - temperature - - ground_temperature - - wind_speed - - wind_force - - wind_direction - - wind_direction_azimuth + - groundtemperature + - windspeed + - windforce + - winddirection + - windazimuth - pressure - visibility - windgust From 58e973dbd7e382f1121c7055ee920a1b0ea83633 Mon Sep 17 00:00:00 2001 From: Alok Saboo Date: Sun, 23 Jul 2017 10:41:09 -0400 Subject: [PATCH 66/71] Cleaned up binary_sensor docs (#3039) --- source/_components/binary_sensor.markdown | 36 +++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/source/_components/binary_sensor.markdown b/source/_components/binary_sensor.markdown index 25d5e31f559..a2cc7ee8518 100644 --- a/source/_components/binary_sensor.markdown +++ b/source/_components/binary_sensor.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Binary Sensor" -description: "Instructions how to setup your binary sensors with Home Assistant." +description: "Instructions on how-to setup binary sensors with Home Assistant." date: 2015-11-20 14:00 sidebar: true comments: false @@ -9,27 +9,27 @@ sharing: true footer: true --- -Binary sensors are gathering information about state of switches, contacts, pins, and alike. The return value of those sensors is usually digital (1/0). This means that those sensors knows only two states: **0/off/low/closed/false** and **1/on/high/open/true**. +Binary sensors gather information about state of switches, contacts, pins, and alike. The return value of those sensors is usually digital (1/0). This means that those sensors knows only two states: **0/off/low/closed/false** and **1/on/high/open/true**. -Knowing that there are only two states allows Home Assistant to represent the sensor better in the frontend. +Knowing that there are only two states allows Home Assistant to represent these sensors in a better way in the frontend according to their functionality. -The display style of each entity can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors: +The way these sensors are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors: - **None**: Generic on/off -- **cold**: On means cold (or too cold) -- **connectivity**: On means connection present, Off means no connection -- **gas**: CO, CO2, etc -- **heat**: On means hot (or too hot) +- **cold**: `On` means cold +- **connectivity**: `On` means connection present, `Off` means no connection +- **gas**: `On` means gas detected +- **heat**: `On` means hot - **light**: Lightness threshold -- **moisture**: Specifically a wetness sensor -- **motion**: Motion sensor -- **moving**: On means moving, Off means stopped -- **occupancy**: On means occupied, Off means not occupied -- **opening**: Door, window, etc. On means open, Off means closed -- **power**: Power, over-current, etc -- **safety**: On means unsafe, Off means safe -- **smoke**: Smoke detector -- **sound**: On means sound detected, Off means no sound -- **vibration**: On means vibration detected, Off means no vibration +- **moisture**: `On` means wet +- **motion**: `On` means motion detected +- **moving**: `On` means moving, `Off` means stopped +- **occupancy**: `On` means occupied, `Off` means not occupied +- **opening**: `On` means open, `Off` means closed +- **power**: Power, over-current, etc. +- **safety**: `On` means unsafe, `Off` means safe +- **smoke**: `On` means smoke detected +- **sound**: `On` means sound detected, `Off` means no sound +- **vibration**: `On` means vibration detected, `Off` means no vibration For analog sensors please check the [component overview](https://home-assistant.io/components/#sensor). From cbb7598b81ba358a8fe570f1ba0d6d08b343c82e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 23 Jul 2017 17:11:29 +0200 Subject: [PATCH 67/71] Update addon_config.markdown --- source/developers/hassio/addon_config.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/developers/hassio/addon_config.markdown b/source/developers/hassio/addon_config.markdown index d6ed5d0527f..426d3808ec2 100644 --- a/source/developers/hassio/addon_config.markdown +++ b/source/developers/hassio/addon_config.markdown @@ -97,6 +97,7 @@ The config for an add-on is stored in `config.json`. | arch | no | List of supported arch: `armhf`, `aarch64`, `amd64`, `i386`. Default all. | url | no | Homepage of the addon. Here you can explain the add-ons and options. | startup | yes | `initialize` will start addon on setup of hassio. `system` is for things like database and base not on other things. `services` will start before homeassistant. `application` is after homeassistant will start or `once` for application they don't run as deamon. +| webui | no | A URL for webinterface of this add-on. Like `http://[HOST]:[PORT:2839]/dashboard`, the port need the internal port, we replace it later with the effective port. | boot | yes | `auto` by system and manual or only `manual` | ports | no | Network ports to expose from the container. Format is `"container-port/type": host-port`. | host_network | no | If that is True, the add-on run on host network. From b3d544e5dd286517b1023fc77ab12fd050ec0af3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 23 Jul 2017 18:39:53 +0200 Subject: [PATCH 68/71] Update zwave.markdown --- source/hassio/zwave.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/hassio/zwave.markdown b/source/hassio/zwave.markdown index d6ef71f79a1..374d3bdb4d6 100644 --- a/source/hassio/zwave.markdown +++ b/source/hassio/zwave.markdown @@ -15,3 +15,8 @@ To enable Z-Wave, plug your Z-Wave USB stick into your Raspberry Pi 3 and add th zwave: usb_path: /dev/ttyACM0 ``` + +If you need GPIO for you Z-Wave module add follow line into `config.txt`: +``` +dtoverlay=pi3-miniuart-bt +``` From c7eb7888af563e688261a72387ccc7613d7ba6e6 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 23 Jul 2017 18:59:41 +0200 Subject: [PATCH 69/71] Update zwave.markdown --- source/hassio/zwave.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/hassio/zwave.markdown b/source/hassio/zwave.markdown index 374d3bdb4d6..1bb70e851ba 100644 --- a/source/hassio/zwave.markdown +++ b/source/hassio/zwave.markdown @@ -16,7 +16,7 @@ zwave: usb_path: /dev/ttyACM0 ``` -If you need GPIO for you Z-Wave module add follow line into `config.txt`: +If you need GPIO on raspberry-pi3 for you Z-Wave module add follow line into `config.txt`: ``` dtoverlay=pi3-miniuart-bt ``` From f5bc6517a6e3539c3ce036b8fc2f1b9db680cb00 Mon Sep 17 00:00:00 2001 From: mjj4791 Date: Sun, 23 Jul 2017 19:05:43 +0200 Subject: [PATCH 70/71] More details on name-property (#3044) Added more details on the relation between the 'name', 'monitored_condition' and the resulting 'entity id' for the sensor See discussion here: https://community.home-assistant.io/t/dutch-precipitation-forecast-based-on-buienradar-nl/4697/89 --- source/_components/sensor.buienradar.markdown | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/_components/sensor.buienradar.markdown b/source/_components/sensor.buienradar.markdown index 2bba6a25e68..b7a4b8714a9 100644 --- a/source/_components/sensor.buienradar.markdown +++ b/source/_components/sensor.buienradar.markdown @@ -33,7 +33,13 @@ 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`. +- **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]_[default sensor display name]`, for example: + - `sensor.lopik_temperature`, since the name of the sensor is set to `lopik` and the default display name for monitored condition `temperature` is `Temperature` + - `sensor.lopik_wind_force`, since the name of the sensor is set to `lopik` and the default display name for monitored condition `windforce` is `Wind force` + + If no name is specified the sensors will be called `sensor.br_[default sensor display name]`, for example: + - `sensor.br_wind_speed`, since no name has been set for the sensor and the default display name for monitored condition `windspeed` is `Wind speed` + - `sensor.br_ground_temperature`, since no name has been set for the sensor and the default display name for monitored condition `groundtemperature` is `Ground 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.nl. - **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.nl. - **timeframe** (*Optional*): Minutes to look ahead for precipitation (5..120) [default: 60]. From e464238e69cd76c0c2009fb23b3a9b554caac0ef Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 23 Jul 2017 14:36:03 -0700 Subject: [PATCH 71/71] Hass.io tweaks --- source/_addons/duckdns.markdown | 1 + source/_addons/google_assistant.markdown | 31 +++++++++++++++--------- source/_addons/lets_encrypt.markdown | 1 + source/_addons/mosquitto.markdown | 1 + source/_addons/samba.markdown | 1 + source/_addons/snips.markdown | 8 +++--- source/_addons/ssh.markdown | 1 + source/addons/index.html | 23 ++++++++++++++---- source/hassio/index.markdown | 5 ++-- 9 files changed, 50 insertions(+), 22 deletions(-) diff --git a/source/_addons/duckdns.markdown b/source/_addons/duckdns.markdown index d7b8394c6b4..36d2ef0da4a 100644 --- a/source/_addons/duckdns.markdown +++ b/source/_addons/duckdns.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +featured: true --- [Duck DNS](https://duckdns.org/) is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 3862d1c2bd4..d9c3219220a 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -1,26 +1,28 @@ --- layout: page title: "Google Assistant" -description: "Enhance your Hass.io installation with google assistant." +description: "Enhance your Hass.io installation with Google Assistant." date: 2017-04-30 13:28 sidebar: true comments: false sharing: true footer: true +featured: true --- -[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact over [api.ai] with Home-Assistant. You can also use [Google Actions][GoogleActions] to make extended functionality. +[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact over [api.ai] with Home-Assistant. You can also use [Google Actions][GoogleActions] to extend its functionality. To enable access to the Google Assistant API, do the following: -1. In the Cloud Platform Console, go to the Projects page. Select an existing project or create a new [project] -2. Enable the Google Assistant [API] on the project you selected -3. Create an [OAuth Client ID][oauthclient] as type "others" and download the json file with arrow done on the right site. -Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your training data over. Name the file `google_assistant.json`. +1. In the [Cloud Platform Console][project], go to the Projects page. Select an existing project or create a new project +2. Open the project. In the top of the page search for Google Assistant API or use [this link][API] and enable it. +3. Create an [OAuth Client ID][oauthclient], pick type "Other", click "Create" and download the JSON file by clicking the Download JSON button on the right side. -Now it's time to start Google Assistant for the first time. When the Google Assistant add-on starts, it will output your audio devices: +Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your credentials over. Name the file `google_assistant.json`. -```plain +Now it's time to start Google Assistant for the first time. When the Google Assistant add-on starts, it will output your audio devices in the "Logs" card. You might have to hit "refresh" to get the latest logs: + +```text **** List of PLAYBACK Hardware Devices **** card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] Subdevices: 8/8 @@ -35,20 +37,25 @@ card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] Subdevices: 1/1 Subdevice #0: subdevice #0 +card 1: Microphone [Yeti Stereo Microphone], device 0: USB Audio [USB Audio] + Subdevices: 1/1 + Subdevice #0: subdevice #0 ``` -You need to use this information to configure the `mic` and `speaker` configuration options. The format is `,`. On a Raspberry Pi 3, `0,0` is the built-in headset port, `0,1` is the HDMI port. +You need to use this information to point the add-on at the right speakers and microphone. The information describes different cards and devices. On a Raspberry Pi 3, card 0 - device 0 is the built-in headset port, card 0 - device 1 is the HDMI port. In the example above, the USB microphone showed up as card 1 - device 0. -We need also connect our Google Assistant with google account. Try open the oauth2 interface with http://hassio.local:9324 and follow the steps on that page. +Find the microphone and speakers that you want to use and note down their device and card number. We will need that to configure the add-on options `mic` (microphone to use) and `speaker` (speaker to use). The format for these options is `,`. Change the configuration options and click save. -Now that you've found the microphone and speaker addresses, it's time to configure Google Assistant and restart the add-on. +The next step is to authenticate your Google account with Google Assistant. Start the add-on and click on the "OPEN WEB UI" button to start authentication. ### Add-On configuration +Configuration example that uses the USB microphone and use the built-in headset audio output on the Raspberry Pi. Note that card and device numbers can differ on your device. + ```json { "mic": "1,0", - "speaker": "1,0", + "speaker": "0,0", "client_secrets": "google_assistant.json", } ``` diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown index 022911183fa..b8004b9d2b2 100644 --- a/source/_addons/lets_encrypt.markdown +++ b/source/_addons/lets_encrypt.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +featured: true --- Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This will create a certificate on the first run and renew it if the certificate is expiring in the next 30 days. diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown index b483f850122..397b7b8f95c 100644 --- a/source/_addons/mosquitto.markdown +++ b/source/_addons/mosquitto.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +featured: true --- Set up a [mosquitto](https://mosquitto.org/) MQTT broker. diff --git a/source/_addons/samba.markdown b/source/_addons/samba.markdown index 9393e2f0351..c755b8abbb6 100644 --- a/source/_addons/samba.markdown +++ b/source/_addons/samba.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +featured: true --- This allows you to set up a [Samba](https://samba.org/) server to access hass.io folders using Windows network shares. diff --git a/source/_addons/snips.markdown b/source/_addons/snips.markdown index a4006419dac..954d04d613e 100644 --- a/source/_addons/snips.markdown +++ b/source/_addons/snips.markdown @@ -17,7 +17,7 @@ Now install and activate the [Samba] add-on so you can upload your training data Now it's time to start Snips for the first time. When the Snips add-on starts, it will output your audio devices: -```plain +```text **** List of PLAYBACK Hardware Devices **** card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] Subdevices: 8/8 @@ -34,9 +34,11 @@ card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] Subdevice #0: subdevice #0 ``` -You need to use this information to configure the `mic` and `speaker` configuration options. The format is `,`. On a Raspberry Pi 3, `0,0` is the built-in headset port, `0,1` is the HDMI port. +You need to use this information to point the add-on at the right speakers and microphone. The information describes different cards and devices. On a Raspberry Pi 3, card 0 - device 0 is the built-in headset port, card 0 - device 1 is the HDMI port. In the example above, the USB microphone showed up as card 1 - device 0. -Now that you've found the microphone and speaker addresses, it's time to configure Snips and restart the add-on. +Find the microphone and speakers that you want to use and note down their device and card number. We will need that to configure the add-on options `mic` (microphone to use) and `speaker` (speaker to use). The format for these options is `,`. Change the configuration options and click save. + +Now start the add-on. ### Add-On configuration diff --git a/source/_addons/ssh.markdown b/source/_addons/ssh.markdown index 3fe75d5450f..44cdbe6c8f4 100644 --- a/source/_addons/ssh.markdown +++ b/source/_addons/ssh.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +featured: true --- Setting up an [SSH](https://openssh.org/) server allows access to your Hass.io folders with any SSH client. It include also a cli to access into Hass.IO api. Try it out: diff --git a/source/addons/index.html b/source/addons/index.html index 02f4b6c292f..669f68fc393 100644 --- a/source/addons/index.html +++ b/source/addons/index.html @@ -12,17 +12,30 @@ regenerate: true

Add-ons for Hass.io allows the user to extend the functionality around Home Assistant. This can be running an application that Home Assistant can integrate with (like an MQTT broker) or to share the configuration via Samba for easy editing from other computers. Add-ons can be configured via the Hass.io panel in Home Assistant.

+

+ Check the Hass.io forums for add-on repositories managed by the community. +

+ {% assign addons = site.addons | sort: 'title' %} +

{% linkable_title Featured add-ons %}

+
    -{% for addon in addons %} +{% for addon in addons %}{% if addon.featured %}
  • {{ addon.title }}
    {{ addon.description }}
  • -{% endfor %} +{% endif %}{% endfor %}
-

- Check the Hass.io forums for add-on repositories managed by the community. -

+

{% linkable_title Other add-ons %}

+ +
    +{% for addon in addons %}{% if addon.featured != true %} +
  • + {{ addon.title }}
    + {{ addon.description }} +
  • +{% endif %}{% endfor %} +
diff --git a/source/hassio/index.markdown b/source/hassio/index.markdown index 654b37bfb1c..7fc9ceb660e 100644 --- a/source/hassio/index.markdown +++ b/source/hassio/index.markdown @@ -21,14 +21,15 @@ The advantages of using Hass.io: - Easy installation and updates (powered by [ResinOS] and [Docker]) - Management user interface integrated into Home Assistant - Easily create and restore full backups of your whole configuration. - - One click install of many popular add-ons including voice assistant via [Snips.ai], encryption via [Let's Encrypt] and dynamic DNS via [Duck DNS].

[Browse available add-ons »][all] - - Active community that is helpful and sharing add-ons including AppDaemon, Homebridge and InfluxDB.

[Browse the forums »][forums]
[Join the Hass.io chat »][chat]
[Browse community add-on repositories »][comm-add-ons] + - Easily install many popular add-ons including [Google Assistant], encryption via [Let's Encrypt] and dynamic DNS via [Duck DNS].

[Browse available add-ons »][all]

+ - Active community that is helpful and sharing add-ons including AppDaemon, Homebridge and InfluxDB.

[Browse the forums »][forums]
[Join the Hass.io chat »][chat]
[Browse community add-on repositories »][comm-add-ons]

Hass.io dashboard

+[Google Assistant]: /addons/google_assistant/ [Snips.ai]: /addons/snips/ [Let's Encrypt]: /addons/lets_encrypt/ [Duck DNS]: /addons/duckdns/