From 6e3e782ffb7b0ce6bc37b7048ce372d0a239508c Mon Sep 17 00:00:00 2001 From: Eitan Mosenkis Date: Mon, 4 Dec 2017 08:50:18 +0200 Subject: [PATCH 01/40] Update component discovery doc for accuracy. (#4049) * Update component discovery doc for accuracy. * Replace name with a notional one --- .../developers/component_discovery.markdown | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/source/developers/component_discovery.markdown b/source/developers/component_discovery.markdown index bdf66005e86..a645235de94 100644 --- a/source/developers/component_discovery.markdown +++ b/source/developers/component_discovery.markdown @@ -2,7 +2,7 @@ layout: page title: "Component Discovery" description: "How to make component discovery work." -date: 2016-04-16 14:24 -07:00 +date: 2017-11-23 07:27 +02:00 sidebar: true comments: false sharing: true @@ -23,22 +23,37 @@ To have your device be discovered, you will have to extend the NetDisco library ### {% linkable_title Listening to `SERVICE_DISCOVERED` events %} -From your component, you will have to set up the listening for specific services. Given below is an example how one would listen for discovered Chromecasts: +From your component, you will have to set up the listening for specific services. Given below is an example how one would listen for a discovered AwesomeDevice: ```python -from homeassistant.loader import get_component +from homeassistant.components.discovery import SERVICE_AWESOMEDEVICE +from homeassistant.helpers import discovery + +DOMAIN = 'awesomedevice' + +DEPENDENCIES = ['http'] def setup(hass, config): - discovery = get_component('discovery') + cfg = config.get(DOMAIN) - def chromecast_discovered(service, info): - """ Called when a Chromecast has been discovered. """ - print("Discovered a new Chromecast: {}".format(info)) + def device_discovered(service, info): + """ Called when a Awesome device has been discovered. """ + print("Discovered a new Awesome device: {}".format(info)) discovery.listen( - hass, discovery.services.GOOGLE_CAST, chromecast_discovered) + hass, SERVICE_AWESOMEDEVICE, device_discovered) + + return True ``` ### {% linkable_title Auto-loading your component upon discovery %} -The Discovery component is capable of setting up your components before firing the `SERVICE_DISCOVERD` event. To do this you will have to update the [`SERVICE_HANDLERS`](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/discovery.py#L29) constant in [the `discovery` component](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/discovery.py). +The `discovery` component is capable of setting up your components before firing the `EVENT_PLATFORM_DISCOVERED` event. To do this you will have to update the [`SERVICE_HANDLERS`](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/discovery.py#L40) constant in [the `discovery` component](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/discovery.py): + +```python +SERVICE_AWESOMEDEVICE = 'awesomedevice' + +SERVICE_HANDLERS = { + ... + SERVICE_AWESOMEDEVICE: ('awesomedevice', None), +} From ee1ba3c2eb0bf78060e60b788192ba378087d99e Mon Sep 17 00:00:00 2001 From: zhujisheng <30714273+zhujisheng@users.noreply.github.com> Date: Mon, 4 Dec 2017 14:51:02 +0800 Subject: [PATCH 02/40] =?UTF-8?q?Update=20baidu=20TTS=E2=80=98s=20logo=20(?= =?UTF-8?q?#4135)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update to the correct formatted logo. --- source/images/supported_brands/baiducloud.png | Bin 1239 -> 37492 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source/images/supported_brands/baiducloud.png b/source/images/supported_brands/baiducloud.png index bdfd421703bea92fa3c3ad419631764804130ec4..27a008ebf7ef2673a2974be4ef05fac54519d64c 100644 GIT binary patch literal 37492 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 I_i#Z`w?)i`qZDva;Rm_z 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 U*}L8f{Qv*}07*qoM6N<$f+ykeN&o-= literal 1239 zcmeAS@N?(olHy`uVBq!ia0vp^>wwsXgBeJks41KRq!tDEgt!9f|AQN_=#@1AU1?ep zgjvy zvV5bQM01(MUp!`DU|#R(;uw-~@9M3WMT;Cn+8*)?1PUJEExi9&?5x@IfBCr!Vx``& z^*mO2`&s*H$cgBq8+#Ql?Km7(8+y3-Lsuym>-!3}ZLaFova3G(KALk~f5jPDGmV1* z6)k(~=CU|4X8qdYv1-X9j?W84b=d;E(_aR(UF-HzezW(grh6q*=$hkG7JT8@-n#Jb zer21>N?Wbl!zT0Qet5pL@-#>El=fJm?NXbq)*YX2#c{J$hM{ZILeqa04Y#vTxK-5p z=QVE1G@r|TAWd=P^HwmuXyQO30{>mMX)h8)&DV3}&;PaX>lSp+N$r?@WL?p|sG|zI&Rs3O z$N6~Y)Hlj`dkX&o%y;Amsz1elsokeOdzV1J8R^w9JmDru%^HcH+&oZdzOxqoxwB4(y zW^+MwPIBF}J4&-tzeg6`e7Enw|8u$1TqfOoJMY~gu^9`U-FrVje{JTvOkj_+;_Kz+ zM(fLU?)-E}cT``j1h zJ=(ICC+}n~&xE7pauZM2Ya{sLP zldh59A(Ilm{l&xY9sVnRRJZ9zzTf$ybdtNK=u5L5tDQIxHLtR4xcK#g-@>lf>DSd7 zE?vFgr26i{&U2x;8Ix;_P0RN+HreTB=7rB)DC!n*BDc;V_T7ewCvs&&ekC=u?6-cd wWxd7o+qWsV=RTCII2z8tUAiy-zopr0In*s-~a#s From fe29bfce80f1b506a09d7823c26b2b849565e5aa Mon Sep 17 00:00:00 2001 From: Frantz Date: Mon, 4 Dec 2017 08:57:42 +0200 Subject: [PATCH 03/40] Update google_assistant.markdown (#4120) --- source/_components/google_assistant.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 3c3edcc5a13..41b99f916ac 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -56,6 +56,7 @@ google_assistant: - `fan` - `scene` - `script` + - `climate` You can also customize your devices similar to other components by adding keys to entities: From 38dc270db447acabed93b66bd0032d85d87893d1 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 4 Dec 2017 08:31:44 +0100 Subject: [PATCH 04/40] Update configuration variables description style (#4134) * Update configuration variables description style * Remove defaults --- .../_components/binary_sensor.rest.markdown | 64 +++++++++++++---- source/_components/sensor.rest.markdown | 68 +++++++++++++++---- source/_components/switch.rest.markdown | 54 ++++++++++++--- 3 files changed, 148 insertions(+), 38 deletions(-) diff --git a/source/_components/binary_sensor.rest.markdown b/source/_components/binary_sensor.rest.markdown index 0a5c789d36e..4739781d2fb 100644 --- a/source/_components/binary_sensor.rest.markdown +++ b/source/_components/binary_sensor.rest.markdown @@ -47,25 +47,61 @@ binary_sensor: method: POST ``` -Configuration variables: - -- **resource** (*Required*): The resource or endpoint that contains the value. -- **method** (*Optional*): The method of the request. Default is GET. -- **name** (*Optional*): Name of the REST binary sensor. -- **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value. -- **payload** (*Optional*): The payload to send with a POST request. Usually formed as a dictionary. -- **verify_ssl** (*Optional*): Verify the certification of the endpoint. Default to True. -- **authentication** (*Optional*): Type of the HTTP authentication. `basic` or `digest`. -- **username** (*Optional*): The username for accessing the REST endpoint. -- **password** (*Optional*): The password for accessing the REST endpoint. -- **headers** (*Optional*): The headers for the requests. +{% configuration %} +resource: + description: The resource or endpoint that contains the value. + required: true + type: string + default: string +method: + description: The method of the request. + required: false + type: string + default: GET +name: + description: Name of the REST binary sensor. + required: false + type: string + default: REST Binary Sensor +device_class: + description: "The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend." + required: false + type: string +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." + required: false + type: template +payload: + description: The payload to send with a POST request. Usually formed as a dictionary. + required: false + type: string +verify_ssl: + description: Verify the certification of the endpoint. + required: false + type: boolean + default: True +authentication: + description: Type of the HTTP authentication. `basic` or `digest`. + required: false + type: string +username: + description: The username for accessing the REST endpoint. + required: false + type: string +password: + description: The password for accessing the REST endpoint. + required: false + type: string +headers: + description: The headers for the requests. + required: false + type: list, string +{% endconfiguration %}

Make sure that the URL exactly matches your endpoint or resource.

- ## {% linkable_title Examples %} In this section you find some real life examples of how to use this sensor. diff --git a/source/_components/sensor.rest.markdown b/source/_components/sensor.rest.markdown index aa34b219058..15a366f78e4 100644 --- a/source/_components/sensor.rest.markdown +++ b/source/_components/sensor.rest.markdown @@ -36,20 +36,60 @@ sensor: payload: '{ "device" : "heater" }' ``` -Configuration variables: - -- **resource** (*Required*): The resource or endpoint that contains the value. -- **method** (*Optional*): The method of the request. Default is `GET`. -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value. -- **payload** (*Optional*): The payload to send with a POST request. Depends on the service, but usually formed as JSON. -- **name** (*Optional*): Name of the REST sensor. -- **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. -- **verify_ssl** (*Optional*): Verify the certification of the endpoint. Default to `True`. -- **authentication** (*Optional*): Type of the HTTP authentication. `basic` or `digest`. -- **username** (*Optional*): The username for accessing the REST endpoint. -- **password** (*Optional*): The password for accessing the REST endpoint. -- **headers** (*Optional*): The headers for the requests. -- **json_attributes** (*Optional*): A list of keys to extract values from a JSON dictionary result and then set as sensor attributes. Default is an empty list. +{% configuration %} +resource: + description: The resource or endpoint that contains the value. + required: true + type: string + default: string +method: + description: The method of the request. + required: false + type: string + default: GET +name: + description: Name of the REST sensor. + required: false + type: string + default: REST Sensor +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." + required: false + type: template +payload: + description: The payload to send with a POST request. Depends on the service, but usually formed as JSON. + required: false + type: string +verify_ssl: + description: Verify the certification of the endpoint. + required: false + type: boolean + default: True +unit_of_measurement: + description: Defines the units of measurement of the sensor, if any. + required: false + type: string +authentication: + description: Type of the HTTP authentication. `basic` or `digest`. + required: false + type: string +username: + description: The username for accessing the REST endpoint. + required: false + type: string +password: + description: The password for accessing the REST endpoint. + required: false + type: string +headers: + description: The headers for the requests. + required: false + type: list, string +json_attributes: + description: A list of keys to extract values from a JSON dictionary result and then set as sensor attributes. + reqired: false + type: list, string +{% endconfiguration %}

Make sure that the URL exactly matches your endpoint or resource. diff --git a/source/_components/switch.rest.markdown b/source/_components/switch.rest.markdown index d9e22107b6e..776882cd54b 100644 --- a/source/_components/switch.rest.markdown +++ b/source/_components/switch.rest.markdown @@ -25,16 +25,50 @@ switch: resource: http://IP_ADDRESS/ENDPOINT ``` -Configuration variables: - -- **resource** (*Required*): The resource or endpoint that contains the value. -- **name** (*Optional*): Name of the REST switch. -- **method** (*Optional*): HTTP method to use (`post` or `put`). Defaults to `post`. -- **username** (*Optional*): The username for accessing the REST endpoint. -- **password** (*Optional*): The password for accessing the REST endpoint. -- **body_on** (*Optional*): The body of the POST request that commands the switch to become enabled. Default is "ON". This value can be a [template](/topics/templating/). -- **body_off** (*Optional*): The body of the POST request that commands the switch to become disabled. Default is "OFF". This value can also be a [template](/topics/templating/). -- **is_on_template** (*Optional*): A [template](/docs/configuration/templating/#processing-incoming-data) that determines the state of the switch from the value returned by the GET request on the resource URL. This template should compute to a boolean (True or False). If the value is valid JSON, it will be available in the template as the variable `value_json`. Default is equivalent to `'{% raw %}{{ value_json == body_on }}{% endraw %}'`. This means that by default, the state of the switch is on if and only if the response to the GET request matches . +{% configuration %} +resource: + description: The resource or endpoint that contains the value. + required: true + type: string + default: string +method: + description: "The method of the request. Supported `post` or `put`." + required: false + type: string + default: POST +name: + description: Name of the REST Switch. + required: false + type: string + default: REST Binary Switch +timeout: + description: Timeout for the request. + required: false + type: int + default: 10 +body_on: + description: "The body of the POST request that commands the switch to become enabled. This value can be a [template](/topics/templating/)." + required: false + type: string + default: ON +body_off: + description: "The body of the POST request that commands the switch to become disabled. This value can also be a [template](/topics/templating/)." + required: false + type: string + default: OFF +is_on_template: + description: "A [template](/docs/configuration/templating/#processing-incoming-data) that determines the state of the switch from the value returned by the GET request on the resource URL. This template should compute to a boolean (True or False). If the value is valid JSON, it will be available in the template as the variable `value_json`. Default is equivalent to `'{% raw %}{{ value_json == body_on }}{% endraw %}'`. This means that by default, the state of the switch is on if and only if the response to the GET request matches." + required: false + type: string +username: + description: The username for accessing the REST endpoint. + required: false + type: string +password: + description: The password for accessing the REST endpoint. + required: false + type: string +{% endconfiguration %}

Make sure that the URL matches exactly your endpoint or resource. From 9daa6d61cd86e25bd3ddffda9e5db975abb6b417 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 4 Dec 2017 08:31:55 +0100 Subject: [PATCH 05/40] Update configuration variable description style (#4132) --- source/_components/sensor.temper.markdown | 24 +++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/source/_components/sensor.temper.markdown b/source/_components/sensor.temper.markdown index 37229ebed40..227cc42f80a 100644 --- a/source/_components/sensor.temper.markdown +++ b/source/_components/sensor.temper.markdown @@ -22,18 +22,30 @@ sensor: - platform: temper ``` -Configuration option: - -- **name** (*Optional*): The name you would like to give the sensor in Home Assistant. -- **scale** (*Optional*): The scale for the sensor. -- **offset** (*Optional*): The offset to fix reported vales. +{% configuration %} +offset: + description: The offset to fix reported vales. + required: false + type: int + default: o +scale: + description: The scale for the sensor. + required: false + type: int + default: 1 +name: + description: The name to use when displaying this switch. + required: false + type: string + default: myStrom Switch +{% endconfiguration %} Since some of these sensors consistently show higher temperatures the scale and offset values can be used to fine-tune your sensor. The calculation follows the formula `scale * sensor value + offset`. The TEMPer sensors can only be accessed as root by default. To fix the USB permissions on your system create the file `/etc/udev/rules.d/99-tempsensor.rules` and add the following line to it: -``` +```text SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="7401", MODE="666" ``` From b5a77718e664fe3668bfb236d93ef787a6b849df Mon Sep 17 00:00:00 2001 From: LaurensBot Date: Mon, 4 Dec 2017 07:32:35 +0000 Subject: [PATCH 06/40] Update climate.generic_thermostat.markdown (#4130) As of version 0.59 it will retain the target temperature set before restart if this variable is not configured. Added this to the documentation. --- source/_components/climate.generic_thermostat.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/climate.generic_thermostat.markdown b/source/_components/climate.generic_thermostat.markdown index e477044c300..8b11055f3a1 100644 --- a/source/_components/climate.generic_thermostat.markdown +++ b/source/_components/climate.generic_thermostat.markdown @@ -32,7 +32,7 @@ Configuration variables: - **target_sensor** (*Required*): `entity_id` for a temperature sensor, target_sensor.state must be temperature. - **min_temp** (*Optional*): Set minimum set point available (default: 7) - **max_temp** (*Optional*): Set maximum set point available (default: 35) -- **target_temp** (*Optional*): Set initial target temperature. Failure to set this variable will result in target temperature being set to null on startup. +- **target_temp** (*Optional*): Set initial target temperature. Failure to set this variable will result in target temperature being set to null on startup. As of version 0.59 it will retain the target temperature set before restart if this variable is not configured. - **ac_mode** (*Optional*): Set the switch specified in the *heater* option to be treated as a cooling device instead of a heating device. - **min_cycle_duration** (*Optional*): Set a minimum amount of time that the switch specified in the *heater* option must be in it's current state prior to being switched either off or on. - **cold_tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched on. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will start when the sensor equals or goes below 24.5. From 256679010f9479e44dc7b3dddc41bb7b4071ccd6 Mon Sep 17 00:00:00 2001 From: Jeroen ter Heerdt Date: Mon, 4 Dec 2017 12:04:55 +0100 Subject: [PATCH 07/40] Update tts.microsoft.markdown (#4136) --- source/_components/tts.microsoft.markdown | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/_components/tts.microsoft.markdown b/source/_components/tts.microsoft.markdown index dd0c6e419bf..036dfed524e 100644 --- a/source/_components/tts.microsoft.markdown +++ b/source/_components/tts.microsoft.markdown @@ -28,12 +28,12 @@ Configuration variables: - **api_key** (*Required*): Your API key. - **language** (*Optional*): The language to use. Defaults to `en-us`. Accepted values are listed in the documentation mentioned below. Note that if you set the language to anything other than the default of `en-us`, you will need to specify a matching voice type as well. -- **gender** (*Optional*): The gender you would like to use for the voice. Accepted values are `Female` and `Male`. Defaults to `Female` -- **type** (*Optional*): The voice type you want to use. Accepted values are listed in the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/Speech/api-reference-rest/bingvoiceoutput). Defaults to `ZiraRUS` -- **rate** (*Optional*): Change the rate of speaking. Example values: `-25%`, `+50%`. Defaults to `+0%` (no change) -- **volume** (*Optional*): Change the volume of the output. Example values: `-20%`, `+70%`. Defaults to `+0%` (no change) -- **pitch** (*Optional*): Change the pitch of the output. Example values: `high`. Defaults to `default` (no change) -- **contour** (*Optional*): Change the contour of the output. This overrides the pitch setting. See the [W3 SSML specification](http://www.w3.org/TR/speech-synthesis/#pitch_contour) for what it does. Example value: `(0%,+0%) (100%,+100%)` +- **gender** (*Optional*): The gender you would like to use for the voice. Accepted values are `Female` and `Male`. Defaults to `Female`. +- **type** (*Optional*): The voice type you want to use. Accepted values are listed as the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/Speech/api-reference-rest/bingvoiceoutput). Defaults to `ZiraRUS`. +- **rate** (*Optional*): Change the rate of speaking in percentage. Example values: `25`, `50`. Defaults to `0` (no change). +- **volume** (*Optional*): Change the volume of the output in percentage. Example values: `-20`, `70`. Defaults to `0` (no change). +- **pitch** (*Optional*): Change the pitch of the output. Example values: `high`. Defaults to `default` (no change). +- **contour** (*Optional*): Change the contour of the output in percentages. This overrides the pitch setting. See the [W3 SSML specification](http://www.w3.org/TR/speech-synthesis/#pitch_contour) for what it does. Example value: `(0,0) (100,100)`. A full configuration sample including optional configuration variables: @@ -45,8 +45,8 @@ tts: language: en-gb gender: Male type: George, Apollo - rate: +20% - volume: -50% + rate: 20 + volume: -50 pitch: high - contour: (0%, +0%) (100%, +100%) + contour: (0, 0) (100, 100) ``` From 7d86801e3c63f12214d867f50a66a2037d9f5051 Mon Sep 17 00:00:00 2001 From: endor-force <1937941+endor-force@users.noreply.github.com> Date: Mon, 4 Dec 2017 22:18:19 +0100 Subject: [PATCH 08/40] Cleaned up tellstick info (#4137) Cleaned up some text, added info relevant for plugin v 0.2 with ability for service calls. --- source/_addons/tellstick.markdown | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/source/_addons/tellstick.markdown b/source/_addons/tellstick.markdown index 52d783f4335..6fca3c8594e 100644 --- a/source/_addons/tellstick.markdown +++ b/source/_addons/tellstick.markdown @@ -2,7 +2,7 @@ layout: page title: "TellStick" description: "Telldus TellStick service enabler and tools." -date: 2017-11-30 21:43 +date: 2017-12-04 21:31 sidebar: true comments: false sharing: true @@ -33,8 +33,7 @@ Configuration variables: -In order to communicate with the add-on you will also need to add Hass.io specific data in the `configuration.yaml` file. -For regular Home Assistant you only add `tellstick:` but for Hass.io and this add-on you need to add internal communication details. +You will need to add internal communication details to `configuration.yaml` to enable the integration from Hass.io and the add-on. ```yaml @@ -50,6 +49,7 @@ tellstick: To add [lights](https://home-assistant.io/components/light.tellstick/), [sensors](https://home-assistant.io/components/sensor.tellstick/) and [switches](https://home-assistant.io/components/switch.tellstick/) you follow the guidelines for each type individually that is [described for Home Assistant](https://home-assistant.io/components/tellstick/) +The add-on will also enable you to interact with tdtool via a Home Assistant services call, see example below for selflearning device. ## {% linkable_title Examples %} @@ -78,3 +78,15 @@ Example for adding more devices in the add-on configuration (note the comma sepa ] } ``` + + + +If you wish to teach a selflearning device in your TellStick configuration: + +Go to Home Assistant [service call](http//hassio.local:8123/dev-service) in Developer tools +Select +- Domain `hassio` +- Service: `addon_stdin` +- Service Data: `{"addon":"core_tellstick","input":"learn 1"}` + +Replace `1` with the corresponding ID of the device in your TellStick configuration. From c436f8da12c9827ef515a212a7a96051deedeec6 Mon Sep 17 00:00:00 2001 From: sagilo Date: Tue, 5 Dec 2017 19:09:30 +0200 Subject: [PATCH 09/40] Update media_player.samsungtv.markdown (#4141) --- 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 2caaf7b0778..025b2de4ef1 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -67,6 +67,7 @@ Currently tested but not working models: - JS9000 - State is always "on" and unable to control (but port 8001 *is* open) - JS9500 - State is always "on" and unable to control (but port 8001 *is* open) - MU6170UXZG (port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on).) +- MU6300 (port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on).) If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.samsungtv.markdown). The first letter (U, P, L, H & K) represent the screen type, e.g. LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size. From 6ce4a9f2309efd9bd8314155ed4b1e1626ba0154 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 5 Dec 2017 18:16:00 +0100 Subject: [PATCH 10/40] Add new example --- source/_components/sensor.scrape.markdown | 25 +++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.scrape.markdown b/source/_components/sensor.scrape.markdown index 2ab59be72c6..41e77ec52be 100644 --- a/source/_components/sensor.scrape.markdown +++ b/source/_components/sensor.scrape.markdown @@ -45,6 +45,7 @@ In this section you find some real life examples of how to use this sensor. Ther The current release Home Assistant is published on [https://home-assistant.io/](https://home-assistant.io/) +{% raw %} ```yaml sensor: # Example configuration.yaml entry @@ -52,13 +53,15 @@ sensor: resource: https://home-assistant.io name: Release select: ".current-version h1" - value_template: '{% raw %}{{ value.split(":")[1] }}{% endraw %}' + value_template: '{{ value.split(":")[1] }}' ``` +{% endraw %} ### {% linkable_title Available implementations %} Get the counter for all our implementations from the [Component overview](/components/) page. +{% raw %} ```yaml # Example configuration.yaml entry sensor: @@ -66,8 +69,9 @@ sensor: resource: https://home-assistant.io/components/ name: Home Assistant impl. select: 'a[href="#all"]' - value_template: '{% raw %}{{ value.split("(")[1].split(")")[0] }}{% endraw %}' + value_template: '{{ value.split("(")[1].split(")")[0] }}' ``` +{% endraw %} ### {% linkable_title Get a value out of a tag %} @@ -109,3 +113,20 @@ sensor: select: 'enclosure:nth-of-type(1)' attribute: url ``` + +### {% linkable_title Energy price %} + +This example tries to retrieve the price for electricity. + +{% raw %} +```yaml +# Example configuration.yaml entry +sensor: + - platform: scrape + resource: https://elen.nu/timpriser-pa-el-for-elomrade-se3-stockholm/ + name: Electricity price + select: ".elspot-content" + value_template: '{{ value.split(" ")[0] }}' + unit_of_measurement: "öre/kWh" +``` +{% endraw %} From ec70fb5e6a448318497c5f0f1c9545d246a31cfc Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 5 Dec 2017 22:17:04 -0800 Subject: [PATCH 11/40] Release 0.59.2 --- _config.yml | 6 ++--- source/_posts/2017-12-03-release-59.markdown | 26 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index de05f2cbf1c..f8987527d79 100644 --- a/_config.yml +++ b/_config.yml @@ -140,11 +140,11 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 59 -current_patch_version: 1 -date_released: 2017-12-04 +current_patch_version: 2 +date_released: 2017-12-06 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0591---december-4" +patch_version_notes: "#release-0592---december-6" # Minor release (Example #release-0431---april-25): diff --git a/source/_posts/2017-12-03-release-59.markdown b/source/_posts/2017-12-03-release-59.markdown index 38f1f744860..98c4d669b2f 100644 --- a/source/_posts/2017-12-03-release-59.markdown +++ b/source/_posts/2017-12-03-release-59.markdown @@ -60,6 +60,15 @@ If you follow our [twitter feed](https://twitter.com/home_assistant) then you ma - Fix color wheel in group more info dialogs ([@NovapaX] - [#10934]) - Dominos no order fix ([@wardcraigj] - [#10935]) ([dominos docs]) +## {% linkable_title Release 0.59.2 - December 6 %} + +- Require FF43 for latest js ([@andrey-git] - [#10941]) +- Fix linksys_ap.py by inheriting DeviceScanner ([@mateuszdrab] - [#10947]) ([device_tracker.linksys_ap docs]) +- Upgrade tellduslive library version (closes https://github.com/home-assistant/home-assistant/issues/10922) ([@molobrakos] - [#10950]) ([tellduslive docs]) +- Allow chime to work for wink siren/chime ([@w1ll1am23] - [#10961]) ([wink docs]) +- Reload closest store on api menu request ([@wardcraigj] - [#10962]) ([dominos docs]) +- Revert pychromecast update ([@balloob] - [#10989]) ([media_player.cast docs]) + ## {% linkable_title If you need help... %} ...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. @@ -403,3 +412,20 @@ Experiencing issues introduced by this release? Please report them in our [issue [@NovapaX]: https://github.com/NovapaX [@wrboyce]: https://github.com/wrboyce [notify.nfandroidtv docs]: https://home-assistant.io/components/notify.nfandroidtv/ +[#10941]: https://github.com/home-assistant/home-assistant/pull/10941 +[#10947]: https://github.com/home-assistant/home-assistant/pull/10947 +[#10950]: https://github.com/home-assistant/home-assistant/pull/10950 +[#10961]: https://github.com/home-assistant/home-assistant/pull/10961 +[#10962]: https://github.com/home-assistant/home-assistant/pull/10962 +[#10989]: https://github.com/home-assistant/home-assistant/pull/10989 +[@andrey-git]: https://github.com/andrey-git +[@balloob]: https://github.com/balloob +[@mateuszdrab]: https://github.com/mateuszdrab +[@molobrakos]: https://github.com/molobrakos +[@w1ll1am23]: https://github.com/w1ll1am23 +[@wardcraigj]: https://github.com/wardcraigj +[device_tracker.linksys_ap docs]: https://home-assistant.io/components/device_tracker.linksys_ap/ +[dominos docs]: https://home-assistant.io/components/dominos/ +[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ +[tellduslive docs]: https://home-assistant.io/components/tellduslive/ +[wink docs]: https://home-assistant.io/components/wink/ From f567c18850ea47ffe8f707bd9f1c7090d8ff7f1d Mon Sep 17 00:00:00 2001 From: joemcmonagle Date: Wed, 6 Dec 2017 02:10:35 -0500 Subject: [PATCH 12/40] Update joaoapps_join.markdown (#4144) * Update joaoapps_join.markdown After publishing, the website displays this quotes as curly/smart quotation marks which breaks copy and paste See where someone ran into this issue on a reddit post here: https://www.reddit.com/r/homeassistant/comments/7dvqka/anybody_using_joaoapps_join_error_parsing_json/ * Minor changes --- source/_components/joaoapps_join.markdown | 27 +++++++++++------------ 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/source/_components/joaoapps_join.markdown b/source/_components/joaoapps_join.markdown index e27aa82e1a1..c0b94b2eb58 100644 --- a/source/_components/joaoapps_join.markdown +++ b/source/_components/joaoapps_join.markdown @@ -13,22 +13,21 @@ ha_release: "0.24" --- -The Join platform exposes services from [Join](http://joaoapps.com/join). In Home Assistant, the Join features are divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the component allows us to access the other special features that Join offers. +The `joaoapps_join` component exposes services from [Join](http://joaoapps.com/join). In Home Assistant, the Join features are divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the component allows us to access the other special features that Join offers. In the `configuration.yaml` file you need to provide the api key and device id or name of the target device. You can find your device id and api key [here](https://joinjoaomgcd.appspot.com/). To set it up, add the following information to your `configuration.yaml` file: ```yaml +# Example configuration.yaml entry notify: - platform: joaoapps_join api_key: asd97823jb628a34fwsdfwefd5384345tf2d - device_id: d5asdfasdf54645h45h368761dfe5gt8a *optional - device_ids: d5asdfasdf54645h45h368761dfe5gt8a, a4asdfasdf54645h45h368761dfe5gt3b *optional - device_names: Pixel, iPhone *optional - name: Phones *optional - - + device_id: d5asdfasdf54645h45h368761dfe5gt8a + device_ids: d5asdfasdf54645h45h368761dfe5gt8a, a4asdfasdf54645h45h368761dfe5gt3b + device_names: Pixel, iPhone + name: Phones joaoapps_join: - name: android device_id: group.android @@ -42,20 +41,20 @@ Configuration variables: - **device_ids** (*Optional*): Comma separated list of device ids. - **device_names** (*Optional*): Comma separated list of device names. -The notify service has two optional parameters: `icon` and `vibration`. You can use them like so: +The notify service has two optional parameters: `icon` and `vibration`. You can use them like so: ```json {"message":"Hello from Home Assistant!","title":"Home Assistant","data":{"icon":"https://goo.gl/xeetdy", "vibration":"0,65,706,86,657,95,668,100"}} ``` -The services exposed in the joaoapps_join component can be used with the service data described below: +The services exposed in the `joaoapps_join` component can be used with the service data described below: | Service | Data | |------------------------------ |------------------------------------------------------------------ | | joaoapps_join/ring | | -| joaoapps_join/send_sms | {"number":"5553334444", "message":"Hello!"} | -| joaoapps_join/send_tasker | {"command":"test"} | -| joaoapps_join/send_url | {"url":"http://google.com"} | -| joaoapps_join/send_wallpaper | {"url":"http://www.planwallpaper.com/static/images/ZhGEqAP.jpg"} | -| joaoapps_join/send_file | {"url":"http://download.thinkbroadband.com/5MB.zip"} | +| joaoapps_join/send_sms | `{"number":"5553334444", "message":"Hello!"}` | +| joaoapps_join/send_tasker | `{"command":"test"}` | +| joaoapps_join/send_url | `{"url":"http://google.com"}` | +| joaoapps_join/send_wallpaper | `{"url":"http://www.planwallpaper.com/static/images/ZhGEqAP.jpg"}` | +| joaoapps_join/send_file | `{"url":"http://download.thinkbroadband.com/5MB.zip"}` | From 8e199af48886916cc415bdab3efa668e1ce2df25 Mon Sep 17 00:00:00 2001 From: DoloresHA Date: Wed, 6 Dec 2017 02:24:45 -0500 Subject: [PATCH 13/40] change homeassistant.appapi to appdaemon.appapi (#4058) As far as I understand it (I'm a noob), there is no such thing as homeassistant.appapi , but rather should be appdaemon.appapi. I encountered this issue as described in this thread: https://community.home-assistant.io/t/appdaemon-first-steps/24820/6?u=dolores --- source/_docs/ecosystem/appdaemon.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown index e2a8d23d68f..ca2a59f65e4 100755 --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -58,7 +58,7 @@ This is also fairly easy to achieve with Home Assistant automations, but we are Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callback function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: ```python -import homeassistant.appapi as appapi +import appdaemon.appapi as appapi class FlashyMotionLights(appapi.AppDaemon): @@ -79,7 +79,7 @@ This is starting to get a little more complex in Home Assistant automations, req Now let's extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Let's warn someone inside the house that there has been motion outside by flashing a lamp on and off ten times. We are reacting to the motion as before by turning on the light and setting a timer to turn it off again, but in addition, we set a 1-second timer to run `flash_warning()`, which, when called, toggles the inside light and sets another timer to call itself a second later. To avoid re-triggering forever, it keeps a count of how many times it has been activated and bales out after ten iterations. ```python -import homeassistant.appapi as appapi +import appdaemon.appapi as appapi class MotionLights(appapi.AppDaemon): From 82956902b1ac8e01128a72b036581da08dece3c8 Mon Sep 17 00:00:00 2001 From: Touliloup Date: Wed, 6 Dec 2017 08:46:41 +0100 Subject: [PATCH 14/40] Update Samsung TV Component compatibility list (#4123) * Update Samsung TV Component compatibility list Change related to correction made for: https://github.com/home-assistant/home-assistant/issues/10905 * Update media_player.samsungtv.markdown --- source/_components/media_player.samsungtv.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 025b2de4ef1..a17ccb902c7 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -55,6 +55,7 @@ Currently known supported models: - 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) +- MU6170UXZG (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KS7502 (port must be set to 8001, and `pip3 install websocket-client` must be executed, turn on doesn't work, turn off works fine) - K5600AK (partially supported, turn on works but state is not updated) - UE65KS8005 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button) @@ -66,8 +67,7 @@ Currently tested but not working models: - JU7500 - Unable to see state and unable to control - JS9000 - State is always "on" and unable to control (but port 8001 *is* open) - JS9500 - State is always "on" and unable to control (but port 8001 *is* open) -- MU6170UXZG (port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on).) -- MU6300 (port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on).) +- MU6300 - Port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on) If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.samsungtv.markdown). The first letter (U, P, L, H & K) represent the screen type, e.g. LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size. From 9fcb597f3c7bdda93ddd2e2f9453eca1a44eb249 Mon Sep 17 00:00:00 2001 From: Dan Nixon Date: Wed, 6 Dec 2017 08:47:32 +0000 Subject: [PATCH 15/40] Document enable_leds option on TP-Link sockets (#4143) * Document enable_leds option on TP-Link sockets Documents home-assistant PR: https://github.com/home-assistant/home-assistant/pull/10980 * Switch to new style --- source/_components/switch.tplink.markdown | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/source/_components/switch.tplink.markdown b/source/_components/switch.tplink.markdown index f54235fede7..ee56f356880 100644 --- a/source/_components/switch.tplink.markdown +++ b/source/_components/switch.tplink.markdown @@ -32,9 +32,22 @@ switch: host: IP_ADDRESS ``` -Configuration variables: - -- **host** (*Required*): The IP address of your TP-Link switch, eg. `192.168.1.32`. -- **name** (*Optional*): The name to use when displaying this switch. +{% configuration %} +name: + description: The name to use when displaying this switch. + required: false + type: string + default: Random Sensor +host: + description: "The IP address of your TP-Link switch, eg. `192.168.1.32`." + required: true + type: string +enable_leds: + description: If the LEDs on the switch (WiFi and power) should be lit. + required: false + type: boolean + default: true +{% endconfiguration %} + From e6984c0a82c9ac2ee0cddce5bd22b4783bac3ce6 Mon Sep 17 00:00:00 2001 From: Carlo Costanzo Date: Wed, 6 Dec 2017 16:40:11 -0500 Subject: [PATCH 16/40] Add additional supported model and add in table. (#4148) --- source/_components/neato.markdown | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/_components/neato.markdown b/source/_components/neato.markdown index 6e0849e6f01..3a4c86cac01 100644 --- a/source/_components/neato.markdown +++ b/source/_components/neato.markdown @@ -28,6 +28,13 @@ Configuration variables: - **username** (*Required*): Username for the Neato account. - **password** (*Required*): Password for the Neato account. +The Home Assistant Neato platform has not been tested with all models of Botvac. + + | BotVac Model | Tested | + | --- | --- | + | Botvac Connected | SUCCESS | + | Botvac D7 Connected | SUCCESS | +

-The Home Assistant Neato platform has only be tested with a Botvac Connected. There is no support for the Botvac D3 Connected and Botvac D5 Connected robots at this time. +There is no support for the Botvac D3 Connected and Botvac D5 Connected robots at this time.

From 33640d18af28acb410ccf43a881d86ba177bd525 Mon Sep 17 00:00:00 2001 From: Questler Date: Wed, 6 Dec 2017 22:41:27 +0100 Subject: [PATCH 17/40] Update init.d.markdown (#4147) * Update init.d.markdown Added code for Python virtual environment * Update init.d.markdown * Update init.d.markdown --- source/_docs/autostart/init.d.markdown | 91 ++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/source/_docs/autostart/init.d.markdown b/source/_docs/autostart/init.d.markdown index 9f67cbdb2b5..6605b6e10b9 100644 --- a/source/_docs/autostart/init.d.markdown +++ b/source/_docs/autostart/init.d.markdown @@ -142,3 +142,94 @@ case "$1" in echo "Usage: $0 {start|stop|restart|install|uninstall}" esac ``` + +### {% linkable_title Python virtual environment %} + +```bash +#!/bin/sh +### BEGIN INIT INFO +# Provides: hass +# Required-Start: $local_fs $network $named $time $syslog +# Required-Stop: $local_fs $network $named $time $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: Home\ Assistant +### END INIT INFO + +# /etc/init.d Service Script for Home Assistant +# Created with: https://gist.github.com/naholyr/4275302#file-new-service-sh +PRE_EXEC="cd /srv/homeassistant && python3 -m venv . && source bin/activate &&" +# Typically /usr/bin/hass +HASS_BIN="hass" +RUN_AS="USER" +PID_FILE="/var/run/hass.pid" +CONFIG_DIR="/home/USER/.homeassistant" +FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --daemon" +REDIRECT="> $CONFIG_DIR/home-assistant.log 2>&1" + +start() { + if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then + echo 'Service already running' >&2 + return 1 + fi + echo 'Starting service…' >&2 + local CMD="$PRE_EXEC $HASS_BIN $FLAGS $REDIRECT;" + su -s /bin/bash -c "$CMD" $RUN_AS + echo 'Service started' >&2 +} + +stop() { + if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then + echo 'Service not running' >&2 + return 1 + fi + echo 'Stopping service…' >&2 + kill $(cat "$PID_FILE") + while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done; + echo 'Service stopped' >&2 +} + +install() { + echo "Installing Home Assistant Daemon (hass-daemon)" + echo "999999" > $PID_FILE + chown $RUN_AS $PID_FILE + mkdir -p $CONFIG_DIR + chown $RUN_AS $CONFIG_DIR +} + +uninstall() { + echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] " + local SURE + read SURE + if [ "$SURE" = "yes" ]; then + stop + rm -fv "$PID_FILE" + echo "Notice: The config directory has not been removed" + echo $CONFIG_DIR + update-rc.d -f hass-daemon remove + rm -fv "$0" + echo "Home Assistant Daemon has been removed. Home Assistant is still installed." + fi +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + install) + install + ;; + uninstall) + uninstall + ;; + restart) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart|install|uninstall}" +esac +``` From 0159cb6f103c4c6ec63c6bc2d1d721ec72a00cfd Mon Sep 17 00:00:00 2001 From: b1g1an Date: Thu, 7 Dec 2017 11:39:37 +0000 Subject: [PATCH 18/40] Add format for configuration.yaml if using username and password (#4149) * Add format for configuration.yaml if using username and password * Minor changes --- source/_addons/mosquitto.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown index a99487c1f92..5512542ed20 100644 --- a/source/_addons/mosquitto.markdown +++ b/source/_addons/mosquitto.markdown @@ -50,3 +50,12 @@ To use the Mosquitto as [broker](/docs/mqtt/broker/#run-your-own) add the follow mqtt: broker: core-mosquitto ``` + +If username and password are set up in add-on, your `configuration.yaml` file should contain that data. + +```yaml +mqtt: + broker: core-mosquitto + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` From 5fd64662807b8acab80752280b75889d26e7a29d Mon Sep 17 00:00:00 2001 From: "Jacques-D. Piguet" Date: Thu, 7 Dec 2017 15:57:38 +0100 Subject: [PATCH 19/40] Missing dependancy for Debian I'm not sure since what Debian version... --- source/_docs/installation/virtualenv.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index ffcfff5c9ab..e2f09733afa 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -29,6 +29,11 @@ $ sudo apt-get upgrade $ sudo apt-get install python3-pip python3-dev $ sudo pip3 install --upgrade virtualenv ``` +For Debian (8.9+?) installation, add: +```bash +$ sudo apt-get install python3-venv +``` + ## {% linkable_title Step 2: Setup virtualenv %} From 4c740e5ee5d0a79ce4257cea16be5b095559329b Mon Sep 17 00:00:00 2001 From: DubhAd Date: Thu, 7 Dec 2017 15:46:55 +0000 Subject: [PATCH 20/40] Update docs Added the fact that the name is a config option. Also provided an example of the list of workdays. --- source/_components/binary_sensor.workday.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/binary_sensor.workday.markdown b/source/_components/binary_sensor.workday.markdown index 45f1d2386cc..3864850d146 100644 --- a/source/_components/binary_sensor.workday.markdown +++ b/source/_components/binary_sensor.workday.markdown @@ -22,10 +22,12 @@ To enable the `workday` sensor in your installation, add the following to your ` binary_sensor: - platform: workday country: DE + workdays: [ mon, wed, fri ] ``` Configuration variables: +- **name** (*Optional*): A name for this sensor. Defaults to *Workday Sensor* - **country** (*Required*): Country code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation. - **province** (*Optional*): Province code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation. Defaults to None. - **workdays** (*Optional*): List of workdays. Defaults to `mon`, `tue`, `wed`, `thu`, `fri`. From 06b8b5e90d29184893deba5b606d26e896f2ac29 Mon Sep 17 00:00:00 2001 From: Carlo Costanzo Date: Thu, 7 Dec 2017 14:47:11 -0500 Subject: [PATCH 21/40] Added in trigger data Because it took me YEARS to figure out. --- source/_docs/automation/templating.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index 7f721876bd9..74f0427f48c 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -69,6 +69,7 @@ The following tables show the available trigger data per platform. | ---- | ---- | | `trigger.platform` | Hardcoded: `event`. | `trigger.event` | Event object that matched. +| `trigger.event.data` | Optional data ### {% linkable_title mqtt %} From d7bde092f368fd8056b01bb62b98d41fd7999990 Mon Sep 17 00:00:00 2001 From: Eitan Mosenkis Date: Thu, 7 Dec 2017 23:33:30 +0200 Subject: [PATCH 22/40] Close unterminated code block. (#4155) --- source/developers/component_discovery.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/developers/component_discovery.markdown b/source/developers/component_discovery.markdown index a645235de94..2911adaa26d 100644 --- a/source/developers/component_discovery.markdown +++ b/source/developers/component_discovery.markdown @@ -57,3 +57,4 @@ SERVICE_HANDLERS = { ... SERVICE_AWESOMEDEVICE: ('awesomedevice', None), } +``` From c1704be891c56542c44c46704e3c0fed859c845d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 7 Dec 2017 22:49:05 +0100 Subject: [PATCH 23/40] Simple add it to the list --- source/_docs/installation/virtualenv.markdown | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index e2f09733afa..97a5f8c36f5 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -26,14 +26,9 @@ The basic guide is for testing Home Assistant. Also check the advanced guide for ```bash $ sudo apt-get update $ sudo apt-get upgrade -$ sudo apt-get install python3-pip python3-dev +$ sudo apt-get install python3-pip python3-dev python3-venv $ sudo pip3 install --upgrade virtualenv ``` -For Debian (8.9+?) installation, add: -```bash -$ sudo apt-get install python3-venv -``` - ## {% linkable_title Step 2: Setup virtualenv %} From b49db59eabbdd442ba05b7d1af027ca41c380ff5 Mon Sep 17 00:00:00 2001 From: endor-force <1937941+endor-force@users.noreply.github.com> Date: Fri, 8 Dec 2017 06:20:52 +0100 Subject: [PATCH 24/40] Updated service call information (#4156) --- source/_addons/tellstick.markdown | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/source/_addons/tellstick.markdown b/source/_addons/tellstick.markdown index 6fca3c8594e..9320e6b2371 100644 --- a/source/_addons/tellstick.markdown +++ b/source/_addons/tellstick.markdown @@ -79,14 +79,31 @@ Example for adding more devices in the add-on configuration (note the comma sepa } ``` - +## Service calls If you wish to teach a selflearning device in your TellStick configuration: -Go to Home Assistant [service call](http//hassio.local:8123/dev-service) in Developer tools -Select -- Domain `hassio` -- Service: `addon_stdin` -- Service Data: `{"addon":"core_tellstick","input":"learn 1"}` +Go to Home Assistant [service call](http//hassio.local:8123/dev-service) in Developer tools and select +- Service `hassio.addon_stdin` +- Service Data: `{"addon":"core_tellstick","input":{"function":"learn","device":"1"}}` Replace `1` with the corresponding ID of the device in your TellStick configuration. + +You can also use this to list devices or sensors and read the output in the add-on log: +`{"addon":"core_tellstick","input":{"function":"list-sensors"}}` + + +#### Supported service commands + +- `"function":"list"`: List currently configured devices with name and device id and all discovered sensors. + +- `"function":"list-sensors"` +- `"function":"list-devices"`: Alternative devices/sensors listing: Shows devices and/or sensors using key=value format (with tabs as separators, one device/sensor per line, no header lines.) + +- `"function":"on":"device":"x"`: Turns on device. ’x’ could either be an integer of the device-id, or the name of the device. + +- `"function":"off":"device":"x"`: Turns off device. ’x’ could either be an integer of the device-id, or the name of the device. + +- `"function":"bell":"device":"x"`: Sends bell command to devices supporting this. ’x’ could either be an integer of the device-id, or the name of the device. + +- `"function":"learn":"device":"x"`: Sends a special learn command to devices supporting this. This is normaly devices of ’selflearning’ type. ’x’ could either be an integer of the device-id, or the name of the device. From b4af0118c6d19afb6f140365e958d7fbdbbdbd00 Mon Sep 17 00:00:00 2001 From: Joe McMonagle Date: Fri, 8 Dec 2017 10:18:13 -0500 Subject: [PATCH 25/40] Broken Link on Mi Flora Page (#4160) Suggesting this link to Xiaomi's website as hopefully this page won't disappear on us, but if anyone has a better page to suggest, I'd happy with that too. Just want to limit the broken links and figured the vendor's page should be most static --- source/_components/sensor.miflora.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.miflora.markdown b/source/_components/sensor.miflora.markdown index 67f6ecd25f3..739ce1e2c0f 100644 --- a/source/_components/sensor.miflora.markdown +++ b/source/_components/sensor.miflora.markdown @@ -13,7 +13,7 @@ ha_release: 0.29 ha_iot_class: "Local Polling" --- -The `miflora` sensor platform allows one to monitor to plants. The [Mi Flora plant sensor](https://www.aliexpress.com/item/Newest-Original-Xiaomi-Flora-Monitor-Digital-Plants-Flowers-Soil-Water-Light-Tester-Sensor-Monitor-for-Aquarium/32685750372.html) is a small Bluetooth Low Energy device that monitors not only the moisture, but also light, temperature and conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case. +The `miflora` sensor platform allows one to monitor to plants. The [Mi Flora plant sensor](https://xiaomi-mi.com/sockets-and-sensors/xiaomi-huahuacaocao-flower-care-smart-monitor/) is a small Bluetooth Low Energy device that monitors not only the moisture, but also light, temperature and conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case. Start a scan to determine the MAC addresses of the sensor: From 28be4487cfc36dcbfb911c070b64055d5597de6e Mon Sep 17 00:00:00 2001 From: endor-force <1937941+endor-force@users.noreply.github.com> Date: Fri, 8 Dec 2017 16:33:53 +0100 Subject: [PATCH 26/40] Updated layout due to problems in presentation. (#4163) * Updated layout due to problems in presentation. - Removed URL link to hassio.local - Changed presentation/line breaks for example service calls * Fix link instead of removing it --- source/_addons/tellstick.markdown | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/source/_addons/tellstick.markdown b/source/_addons/tellstick.markdown index 9320e6b2371..94fb78ba515 100644 --- a/source/_addons/tellstick.markdown +++ b/source/_addons/tellstick.markdown @@ -12,13 +12,11 @@ featured: false Setting up the [Tellstick](http://telldus.com) service and tools contained in the [telldus-core](http://developer.telldus.com/) package and adding configuration to enable Tellstick and Tellstick Duo to work on your Hass.io. - To use this add-on, you first install it from the list of Built-in add-ons in Hass.io. After installation you are presented with a default and example configuration, to alter this you must follow both the JSON format and also be aligned with the [valid parameters for Tellstick configuration file (tellstick.conf)](https://developer.telldus.com/wiki/TellStick_conf). After any changes has been made to the configuration you need to restart the add-on for the changes to take effect. - Configuration variables: - **id** (*Required*): This is a number and must be unique for each device. @@ -30,9 +28,6 @@ Configuration variables: - **fade** (*Optional*): Fade is either `true` or `false` and tells a dimmer if is should fade smooth or instant between values (only for IKEA protocol as it seems). - **code** (*Optional*): A number series based on ones and zeroes often used for dip-switch based devices. - - - You will need to add internal communication details to `configuration.yaml` to enable the integration from Hass.io and the add-on. @@ -45,8 +40,6 @@ tellstick: ``` - - To add [lights](https://home-assistant.io/components/light.tellstick/), [sensors](https://home-assistant.io/components/sensor.tellstick/) and [switches](https://home-assistant.io/components/switch.tellstick/) you follow the guidelines for each type individually that is [described for Home Assistant](https://home-assistant.io/components/tellstick/) The add-on will also enable you to interact with tdtool via a Home Assistant services call, see example below for selflearning device. @@ -83,9 +76,10 @@ Example for adding more devices in the add-on configuration (note the comma sepa If you wish to teach a selflearning device in your TellStick configuration: -Go to Home Assistant [service call](http//hassio.local:8123/dev-service) in Developer tools and select -- Service `hassio.addon_stdin` -- Service Data: `{"addon":"core_tellstick","input":{"function":"learn","device":"1"}}` +Go to Home Assistant [service call](http://hassio.local:8123/dev-service) in Developer tools and select. +- Service: `hassio.addon_stdin` +- Enter service Data: + `{"addon":"core_tellstick","input":{"function":"learn","device":"1"}}` Replace `1` with the corresponding ID of the device in your TellStick configuration. From ad764826354016e0c4e8db739a3d8980c00eb2a1 Mon Sep 17 00:00:00 2001 From: Joe McMonagle Date: Fri, 8 Dec 2017 10:34:08 -0500 Subject: [PATCH 27/40] Broken links on plant page. (#4159) * Broken links on plant page. Just updating some broken links * Update links and sample --- source/_components/plant.markdown | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/_components/plant.markdown b/source/_components/plant.markdown index b1c5ec976bc..daba937a936 100644 --- a/source/_components/plant.markdown +++ b/source/_components/plant.markdown @@ -51,16 +51,18 @@ Configuration variables: ## {% linkable_title Examples %} ### Using plain MQTT sensor to get the data This is a practical example that uses a multiple of `MQTT sensors` to supply the readings used by the `plant` sensor. -Another good source of this data would be the [Mi Flora](https://home-assistant.io/components/sensor.miflora/) component. +Another good source of this data would be the [Mi Flora](/components/sensor.miflora/) component. If the sensor data is within the min/max values the status will be `ok`, if not the status will be `problem`. You can use this to trigger a notification, if there is a problem with your plant. Of course you can only monitor attributes of your plant, where the sensor is configured and is providing the data. ## Data Source -The main sources of the data will usually be a [MiFlora sensor](sensor.miflora) or a [MQTT sensor](sensor.mqtt) receiving the data from a [PlantGateway](https://github.com/ChristianKuehnel/plantgateway). +The main sources of the data will usually be a [MiFlora sensor](/components/sensor.miflora/) or a [MQTT sensor](/components/sensor.miflora/) receiving the data from a [PlantGateway](https://github.com/ChristianKuehnel/plantgateway). If you want to get the date via a PlantGateway, this is a typical configuration for the MQTT sensors: + +{% raw %} ```yaml # Example configuration.yaml entry plant: @@ -99,5 +101,6 @@ sensor: state_topic: my_plant_topic value_template: '{{ value_json.brightness }}' ``` +{% endraw %} You have to replace the `state_topic` with the value that you configured in the PlantGateway. It also depends on the global configuration of your MQTT server. From 7097dea187f762c32673431887e3c58bfaa119f9 Mon Sep 17 00:00:00 2001 From: Joe McMonagle Date: Fri, 8 Dec 2017 10:35:56 -0500 Subject: [PATCH 28/40] Update sensor.template to show entity_id example (#4158) Right now this page has no examples using the optional entity_id field. I think we should include it in the top example because otherwise the template sensor will react to all state changes rather than just the one or two the user will care about. May also be nice to show an example of a list for the template sensor, but we do include one on the Binary Sensor Template page so maybe that's sufficient? --- source/_components/sensor.template.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 0811978b617..c5d5aba6cee 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -27,6 +27,7 @@ sensor: sensors: solar_angle: friendly_name: "Sun angle" + entity_id: sun.sun unit_of_measurement: 'degrees' value_template: "{{ states.sun.sun.attributes.elevation }}" From 5d09b8fe95a50d8e00f2656f20cf714b338804fa Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Fri, 8 Dec 2017 23:52:39 +0100 Subject: [PATCH 29/40] Revert "Added note about template triggers (#4018)" (#4097) --- source/_docs/automation/trigger.markdown | 5 ----- 1 file changed, 5 deletions(-) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index c4b3ee2793a..a54145e0956 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -138,10 +138,6 @@ The US Naval Observatory has a [tool](http://aa.usno.navy.mil/data/docs/AltAz.ph ### {% linkable_title Template trigger %} -

- If your template trigger has no `entity_id` listed, then it is evaluted on *every* state change for *every* entity. Instead you should create a [template sensor](/components/sensor.template/) or [template binary sensor](/components/binary_sensor.template/) and use that in your automation. -

- Template triggers work by evaluating a [template] on each state change. The trigger will fire if the state change caused the template to render 'true'. This is achieved by having the template result in a true boolean expression (`{% raw %}{{ is_state('device_tracker.paulus', 'home') }}{% endraw %}`) or by having the template render 'true' (example below). With template triggers you can also evaluate attribute changes by using is_state_attr (`{% raw %}{{ is_state_attr('climate.living_room', 'away_mode', 'off') }}{% endraw %}`) @@ -149,7 +145,6 @@ With template triggers you can also evaluate attribute changes by using is_state automation: trigger: platform: template - entity_id: device_tracker.paulus value_template: "{% raw %}{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}{% endraw %}" ``` From 627121b638d95cd8b13bf45729bd8abf8e97945d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Dec 2017 16:55:35 +0100 Subject: [PATCH 30/40] Add c't article --- source/help/index.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/help/index.markdown b/source/help/index.markdown index aecf32601f7..36173302df5 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -48,6 +48,7 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). +- [Hausautomations-Schaltzentrale Home Assistant auf Python-Basis](https://www.heise.de/ct/ausgabe/2017-26-Hausautomations-Schaltzentrale-Home-Assistant-3909532.html) - December 2017 - [Using Home Assistant the ARTIK Cloud](https://developer.artik.io/documentation/developer-guide/wireless-iot/hass.html) - September 2017 - [Control home automation hardware with Home Assistant](http://www.linux-magazine.com/Issues/2017/203/Home-Assistant) - August 2017 - [Smart Home Home Assistant KNX Alexa Sprachsteuerung](http://onesmarthome.de/smart-home-home-assistant-knx-alexa-sprachsteuerung/) - August 2017 From e836068f1c06bd20a08f6f3403d516aa6c60b469 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Dec 2017 22:25:04 +0100 Subject: [PATCH 31/40] Add c't article --- source/index.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/index.html b/source/index.html index 63e1dde1083..bbb78b9dc34 100644 --- a/source/index.html +++ b/source/index.html @@ -122,6 +122,8 @@ description: Open-source home automation platform running on Python 3. Track and Linux Magazine logo + Ct logo + From 9f71765db6ad89c8cc366d7e81dd3ae68a59085e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 9 Dec 2017 22:52:21 +0100 Subject: [PATCH 32/40] Add logo --- source/images/press/ct.png | Bin 0 -> 53409 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 source/images/press/ct.png diff --git a/source/images/press/ct.png b/source/images/press/ct.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8ed08bba10ef15fc5e98c1a1d867cdf26ff296 GIT binary patch literal 53409 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 literal 0 HcmV?d00001 From b79ea1afec0d73fd4988d7ba6ab6f84b3402a40f Mon Sep 17 00:00:00 2001 From: idfxken Date: Sun, 10 Dec 2017 09:19:29 +0100 Subject: [PATCH 33/40] Update media_player.denonavr.markdown (#4179) --- source/_components/media_player.denonavr.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.denonavr.markdown b/source/_components/media_player.denonavr.markdown index a64c85c44b3..9d9e50da1d4 100644 --- a/source/_components/media_player.denonavr.markdown +++ b/source/_components/media_player.denonavr.markdown @@ -18,6 +18,7 @@ The `denonavr` platform allows you to control a [Denon Network Receivers](http:/ Supported devices: +- Denon AVR-X1300W - Denon AVR-X2000 - Denon AVR-X2100W - Denon AVR-X4100W From 73362ce804e3b785a89cb840ffad217c3d1b9821 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 10 Dec 2017 08:20:42 +0000 Subject: [PATCH 34/40] Usability updates (#4177) Added a link to a web site to generate random strings. Added a note about ./gactions being for Linux. --- source/_components/google_assistant.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 41b99f916ac..5b42af9ec81 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -40,6 +40,8 @@ google_assistant: `cat /dev/urandom|fold -w 120|head -n 1|base64 -w 0|tr -dc '0-9A-Za-z'|cut -c -80` +If you're not using Linux, you can use sites such as [this one](https://www.browserling.com/tools/random-string) to generate a random string (containing mixed case letters and numbers) of up to 80 characters. + *Configuration Variables:* * *expose_by_default* (Optional): Expose devices in all supported domains by default. * *project_id* (Required): Project ID from the Google Developer console (looks like `words-2ab12`) @@ -112,7 +114,7 @@ homeassistant: 2. Go to Build under the Actions SDK box 3. Copy the command that looks like: `gactions update --action_package PACKAGE_NAME --project doctest-2d0b8` -4. Replace `PACKAGE_NAME` with `project.json` and run that command from the same directory you saved `project.json` in (you'll need to put `./` before `gactions` so that it reads `./gactions`). It should output a URL like `https://console.actions.google.com/project/doctest-2d0b8/overview` - go there. +4. Replace `PACKAGE_NAME` with `project.json` and run that command from the same directory you saved `project.json` in (you'll need to put `./` before `gactions` so that it reads `./gactions` if you're running on Linux). It should output a URL like `https://console.actions.google.com/project/doctest-2d0b8/overview` - go there. 5. You'll need to fill out most of the information on that page, but none of it really matters since you won't be addressing the App directly, only through the Smart Home functionality built into Google Assistant. 6. The final item on that page `Account linking` is required for your app to interact with Home Assistant. 1. Grant type: `Implicit` From 69abc96b896db59541e8f8582af53b0c2d83d4c4 Mon Sep 17 00:00:00 2001 From: DubhAd Date: Sun, 10 Dec 2017 08:21:55 +0000 Subject: [PATCH 35/40] Fix spacing (#4176) The host line has 3 spaces, not 2, at the start --- source/_components/maxcube.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/maxcube.markdown b/source/_components/maxcube.markdown index c26cbe114bc..c9645e9fc59 100644 --- a/source/_components/maxcube.markdown +++ b/source/_components/maxcube.markdown @@ -30,7 +30,7 @@ A `maxcube` section must be present in the `configuration.yaml` file and contain ```yaml # Example configuration.yaml entry maxcube: - host: 192.168.0.20 + host: 192.168.0.20 ``` Configuration variables: - **host** (*Required*): The IP address of the eQ-3 MAX! Cube to use. From ad3727addef431c9073889c965bbfd6410f9a270 Mon Sep 17 00:00:00 2001 From: arjenfvellinga Date: Sun, 10 Dec 2017 09:37:04 +0100 Subject: [PATCH 36/40] Additional configuration steps if request_sync fails. (#4171) --- source/_components/google_assistant.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index 5b42af9ec81..253a6bb7826 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -137,3 +137,10 @@ homeassistant: 4. Note down the generated API Key and use this in the configuration *Note:* The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlehome/answer/7506443?hl=en-GB) from Home Control and relink. + +*Note:* The request_sync service may fail with a 404 if the project_id of the Homegraph API differs from the project_id of the Actions SDK found in the preferences of your project on [developer console](https://console.actions.google.com). Resolve this by: + 1. Removing your project on the [developer console](https://console.actions.google.com). + 2. Add a new project in the [cloud console](https://console.cloud.google.com). Here you get a new project_id. + 3. Enable Homegraph API to the new project. + 4. Generete a new API key. + 5. Again create a new project in the [developer console](https://console.actions.google.com/). Described above. But at the step 'Build under the Actions SDK box' choose your newly created project. By this they share the same project_id. From fbfdef74428f12c9b39f0ce88f1900a57f6c9746 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 10 Dec 2017 09:38:39 +0100 Subject: [PATCH 37/40] Remove duplicate images and update docs (#4181) --- source/_components/camera.onvif.markdown | 4 ++-- source/images/OpenCV_Logo.png | Bin 10564 -> 0 bytes source/images/onvif.png | Bin 3613 -> 0 bytes 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 source/images/OpenCV_Logo.png delete mode 100644 source/images/onvif.png diff --git a/source/_components/camera.onvif.markdown b/source/_components/camera.onvif.markdown index fe8561afa32..9c48b6b4243 100644 --- a/source/_components/camera.onvif.markdown +++ b/source/_components/camera.onvif.markdown @@ -13,9 +13,9 @@ ha_release: 0.47 --- -The `ONVIF` platform allows you to use an ONVIF camera in Home Assistant. This requires FFmpeg component to be already configured. +The `onvif` camera platform allows you to use an ONVIF camera in Home Assistant. This requires the [`ffmpeg` component](/components/ffmpeg/) to be already configured. -To enable your ONVIF in your installation, add the following to your `configuration.yaml` file: +To enable your ONVIF camera in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/images/OpenCV_Logo.png b/source/images/OpenCV_Logo.png deleted file mode 100644 index ba8bcf97285f6c2f33b99d03220cf686e4088df3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10564 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 aE55Q>M0%fnKVA1v2n88c=_)A`=>Gs6yY1cp diff --git a/source/images/onvif.png b/source/images/onvif.png deleted file mode 100644 index 2ae6ddc58bf6254022a8ea6836f27045cf1cfea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3613 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 From 58fbae50286287069d4b780f4392fe4f4571986a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 10 Dec 2017 10:44:51 +0100 Subject: [PATCH 38/40] Update --- source/developers/credits.markdown | 192 ++++++++++++++++------------- 1 file changed, 105 insertions(+), 87 deletions(-) diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown index b9ccc04b948..11483764f6e 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-11-24 23:17:36 +0000 +date: 2017-12-10 09:44:29 +0000 sidebar: true comments: false sharing: true @@ -13,14 +13,14 @@ 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 "6012 total commits to the home-assistant organization, 3571 commits to home-assistant, 1305 commits to home-assistant.github.io, 649 commits to home-assistant-polymer, 244 commits to home-assistant-js, 118 commits to netdisco, 44 commits to home-assistant-js-websocket, 26 commits to hass-release, 14 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 6 commits to LabelBot, 5 commits to hassio, 3 commits to hassio-addons, 2 commits to issue-bot, 2 commits to lambda-home-assistant-github, 2 commits to hassio-addons-example, 2 commits to hassio-build, 2 commits to python-hassbian, 1 commit to home-assistant-notebooks, 1 commit to home-assistant-iOS") +- [Paulus Schoutsen (@balloob)](https://github.com/balloob "6062 total commits to the home-assistant organization, 3589 commits to home-assistant, 1314 commits to home-assistant.github.io, 671 commits to home-assistant-polymer, 244 commits to home-assistant-js, 118 commits to netdisco, 44 commits to home-assistant-js-websocket, 26 commits to hass-release, 14 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 6 commits to LabelBot, 5 commits to hassio, 3 commits to hassio-addons, 2 commits to python-hassbian, 2 commits to issue-bot, 2 commits to hassio-addons-example, 2 commits to hassio-build, 2 commits to lambda-home-assistant-github, 1 commit to warrant, 1 commit to home-assistant-notebooks, 1 commit to home-assistant-iOS") ### {% linkable_title Contributors %} (in alphabetical order) - [7even (@hwikene)](https://github.com/hwikene "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Aaron Bach (@bachya)](https://github.com/bachya "33 total commits to the home-assistant organization, 21 commits to home-assistant, 12 commits to home-assistant.github.io") +- [Aaron Bach (@bachya)](https://github.com/bachya "34 total commits to the home-assistant organization, 22 commits to home-assistant, 12 commits to home-assistant.github.io") - [Aaron Linville (@linville)](https://github.com/linville "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [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 "1 total commits to the home-assistant organization, 1 commit to home-assistant") @@ -28,10 +28,10 @@ This page contains a list of people who have contributed in one way or another t - [Abílio Costa (@abmantis)](https://github.com/abmantis "20 total commits to the home-assistant organization, 12 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-js-websocket, 1 commit to home-assistant-polymer") - [Adam (@SilvrrGIT)](https://github.com/SilvrrGIT "9 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 1 commit to home-assistant") - [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 Cooper (@GenericStudent)](https://github.com/GenericStudent "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Adam Cooper (@GenericStudent)](https://github.com/GenericStudent "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") - [Adam Dullage (@Dullage)](https://github.com/Dullage "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [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 "260 total commits to the home-assistant organization, 144 commits to home-assistant, 63 commits to home-assistant-polymer, 49 commits to home-assistant.github.io, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant") +- [Adam Mills (@armills)](https://github.com/armills "265 total commits to the home-assistant organization, 145 commits to home-assistant, 67 commits to home-assistant-polymer, 49 commits to home-assistant.github.io, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant") - [Adam Stone (@astone123)](https://github.com/astone123 "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Adrian Popa (@mad-ady)](https://github.com/mad-ady "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Adrien Ball (@adrienball)](https://github.com/adrienball "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -40,16 +40,16 @@ This page contains a list of people who have contributed in one way or another t - [aetolus (@aetolus)](https://github.com/aetolus "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [AHS (@ahofelt)](https://github.com/ahofelt "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Alan Bowman (@alanbowman)](https://github.com/alanbowman "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Alan Fischer (@alanfischer)](https://github.com/alanfischer "18 total commits to the home-assistant organization, 15 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Alan Fischer (@alanfischer)](https://github.com/alanfischer "20 total commits to the home-assistant organization, 16 commits to home-assistant, 4 commits to home-assistant.github.io") - [Alasdair Nicol (@alasdairnicol)](https://github.com/alasdairnicol "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Albatross (@DyingAlbatross)](https://github.com/DyingAlbatross "2 total commits to the home-assistant organization, 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") - [Alessandro Mogavero (@alexmogavero)](https://github.com/alexmogavero "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [Alex (@alexrockt)](https://github.com/alexrockt "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Alex (@MungoRae)](https://github.com/MungoRae "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 (@alexrockt)](https://github.com/alexrockt "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Alex Barcelo (@alexbarcelo)](https://github.com/alexbarcelo "2 total commits to the home-assistant organization, 2 commits to hassio-addons") +- [Alex Barcelo (@alexbarcelo)](https://github.com/alexbarcelo "3 total commits to the home-assistant organization, 3 commits to hassio-addons") - [Alex Harvey (@infamy)](https://github.com/infamy "25 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io") - [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Alex MF (@adsmf)](https://github.com/adsmf "1 total commits to the home-assistant organization, 1 commit to hassio-addons") @@ -61,11 +61,11 @@ This page contains a list of people who have contributed in one way or another t - [Alfie Day (@Azelphur)](https://github.com/Azelphur "12 total commits to the home-assistant organization, 12 commits to home-assistant") - [Aliaksandr (@minchik)](https://github.com/minchik "7 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to appdaemon, 2 commits to home-assistant") - [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 "115 total commits to the home-assistant organization, 67 commits to home-assistant.github.io, 45 commits to home-assistant, 1 commit to pi-gen, 1 commit to home-assistant-polymer, 1 commit to hassio-addons") +- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "117 total commits to the home-assistant organization, 67 commits to home-assistant.github.io, 45 commits to home-assistant, 3 commits to home-assistant-polymer, 1 commit to pi-gen, 1 commit to hassio-addons") - [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") - [Anders Fogh Eriksen (@Fogh)](https://github.com/Fogh "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "117 total commits to the home-assistant organization, 84 commits to home-assistant, 31 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "119 total commits to the home-assistant organization, 86 commits to home-assistant, 31 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 Björshammar (@abjorshammar)](https://github.com/abjorshammar "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Andreas Cambitsis (@acambitsis)](https://github.com/acambitsis "1 total commits to the home-assistant organization, 1 commit to home-assistant") @@ -74,17 +74,17 @@ 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") - [Andrej Friesen (@ajfriesen)](https://github.com/ajfriesen "2 total commits to the home-assistant organization, 2 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 "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 "626 total commits to the home-assistant organization, 494 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 19 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 Cockburn (@acockburn)](https://github.com/acockburn "629 total commits to the home-assistant organization, 497 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 19 commits to home-assistant.github.io") - [Andrew LeCody (@aceat64)](https://github.com/aceat64 "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Andrew Smith (@andrewmichaelsmith)](https://github.com/andrewmichaelsmith "2 total commits to the home-assistant organization, 2 commits to pi-gen") - [Andrew Stock (@watchforstock)](https://github.com/watchforstock "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Andrew Thigpen (@andythigpen)](https://github.com/andythigpen "33 total commits to the home-assistant organization, 32 commits to home-assistant, 1 commit to home-assistant-js") - [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 "227 total commits to the home-assistant organization, 97 commits to home-assistant, 96 commits to home-assistant-polymer, 34 commits to home-assistant.github.io") -- [Andrey Kupreychik (@foxel)](https://github.com/foxel "4 total commits to the home-assistant organization, 4 commits to home-assistant") +- [Andrey (@andrey-git)](https://github.com/andrey-git "244 total commits to the home-assistant organization, 106 commits to home-assistant, 102 commits to home-assistant-polymer, 36 commits to home-assistant.github.io") +- [Andrey Kupreychik (@foxel)](https://github.com/foxel "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [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") - [Andréas Lundgren (@adevade)](https://github.com/adevade "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Andy Castille (@Klikini)](https://github.com/Klikini "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io") @@ -103,7 +103,7 @@ This page contains a list of people who have contributed in one way or another t - [Ardetus (@Ardetus)](https://github.com/Ardetus "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Ardi Mehist (@omgapuppy)](https://github.com/omgapuppy "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Ari Lotter (@arilotter)](https://github.com/arilotter "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") -- [arjenfvellinga (@arjenfvellinga)](https://github.com/arjenfvellinga "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [arjenfvellinga (@arjenfvellinga)](https://github.com/arjenfvellinga "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Arno (@aetjansen)](https://github.com/aetjansen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [ArrayLabs (@arraylabs)](https://github.com/arraylabs "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Arthur Leonard Andersen (@leoc)](https://github.com/leoc "9 total commits to the home-assistant organization, 9 commits to home-assistant") @@ -116,36 +116,35 @@ This page contains a list of people who have contributed in one way or another t - [Austin (@trainman419)](https://github.com/trainman419 "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Avraham David Gelbfish (@adgelbfish)](https://github.com/adgelbfish "2 total commits to the home-assistant organization, 1 commit to hadashboard, 1 commit to pi-gen") - [azeroth12 (@azeroth12)](https://github.com/azeroth12 "1 total commits to the home-assistant organization, 1 commit to appdaemon") +- [Balázs Suhajda (@suhajdab)](https://github.com/suhajdab "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Baran Kaynak (@barankaynak)](https://github.com/barankaynak "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Barry Williams (@bazwilliams)](https://github.com/bazwilliams "10 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to netdisco, 2 commits to home-assistant.github.io") - [Bart S. (@zBart)](https://github.com/zBart "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Bart274 (@Bart274)](https://github.com/Bart274 "26 total commits to the home-assistant organization, 17 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Bas Schipper (@basschipper)](https://github.com/basschipper "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") - [bastshoes (@bastshoes)](https://github.com/bastshoes "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Beat (@bdurrer)](https://github.com/bdurrer "12 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 1 commit to home-assistant-polymer, 1 commit to home-assistant") +- [bcl1713 (@bcl1713)](https://github.com/bcl1713 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Beat (@bdurrer)](https://github.com/bdurrer "11 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Ben (@unixben)](https://github.com/unixben "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Ben Bangert (@bbangert)](https://github.com/bbangert "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Ben Doerr (@bendoerr)](https://github.com/bendoerr "2 total commits to the home-assistant organization, 2 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") - [Benjamin Parzella (@bparzella)](https://github.com/bparzella "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Benoit BESSET (@bbesset)](https://github.com/bbesset "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [bestlibre (@bestlibre)](https://github.com/bestlibre "16 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to hassio, 1 commit to hassio-build, 1 commit to home-assistant-polymer") - [BigMoby (@bigmoby)](https://github.com/bigmoby "2 total commits to the home-assistant organization, 2 commits 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") - [BioSehnsucht (@BioSehnsucht)](https://github.com/BioSehnsucht "12 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 3 commits to home-assistant, 2 commits to home-assistant-polymer") - [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") +- [Björn Orri (@bjornorri)](https://github.com/bjornorri "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS") - [Björn Ramberg (@bjorne)](https://github.com/bjorne "1 total commits to the home-assistant organization, 1 commit to hassio-build") - [Blanyal D'Souza (@blanyal)](https://github.com/blanyal "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Blender3D (@Blender3D)](https://github.com/Blender3D "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Boced66 (@boced66)](https://github.com/boced66 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [boltgolt (@Boltgolt)](https://github.com/Boltgolt "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [boojew (@boojew)](https://github.com/boojew "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant") - [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") - [Boyi C (@fanthos)](https://github.com/fanthos "9 total commits to the home-assistant organization, 4 commits to home-assistant-polymer, 3 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Brad Buran (@bburan)](https://github.com/bburan "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [bpoirriez (@bpoirriez)](https://github.com/bpoirriez "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Brad Johnson (@bradsk88)](https://github.com/bradsk88 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Brahma Fear (@brahmafear)](https://github.com/brahmafear "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") - [Bram Kragten (@bramkragten)](https://github.com/bramkragten "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") @@ -153,25 +152,24 @@ This page contains a list of people who have contributed in one way or another t - [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") - [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 Hughes (@bah2830)](https://github.com/bah2830 "27 total commits to the home-assistant organization, 18 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to netdisco") - [Brent Kerlin (@bkerlin)](https://github.com/bkerlin "1 total commits to the home-assistant organization, 1 commit to hassio-build") -- [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 "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Brian Cribbs (@cribbstechnologies)](https://github.com/cribbstechnologies "44 total commits to the home-assistant organization, 27 commits to home-assistant, 15 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Brent Saltzman (@brent20)](https://github.com/brent20 "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") +- [Brian Cribbs (@cribbstechnologies)](https://github.com/cribbstechnologies "43 total commits to the home-assistant organization, 26 commits to home-assistant, 15 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [Brian Fitzgerald (@Brianfit)](https://github.com/Brianfit "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Brian Gehrich (@bgehrich)](https://github.com/bgehrich "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Brian Hopkins (@btotharye)](https://github.com/btotharye "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") - [Brian J King (@brianjking)](https://github.com/brianjking "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") +- [Brian Jinwright (@bjinwright)](https://github.com/bjinwright "159 total commits to the home-assistant organization, 159 commits to warrant") - [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 "3 total commits to the home-assistant organization, 3 commits to hassbian-scripts") - [Bruno Adele (@badele)](https://github.com/badele "22 total commits to the home-assistant organization, 22 commits to home-assistant") - [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 "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") -- [c727 (@c727)](https://github.com/c727 "13 total commits to the home-assistant organization, 9 commits to home-assistant-polymer, 4 commits to home-assistant.github.io") +- [c727 (@c727)](https://github.com/c727 "15 total commits to the home-assistant organization, 9 commits to home-assistant-polymer, 6 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 "7 total commits to the home-assistant organization, 7 commits to home-assistant") -- [Cameron Bulock (@cbulock)](https://github.com/cbulock "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to netdisco") -- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "89 total commits to the home-assistant organization, 81 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to fabric-home-assistant, 1 commit to hassbian-scripts, 1 commit to homebridge-homeassistant") +- [Cameron Bulock (@cbulock)](https://github.com/cbulock "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") +- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "90 total commits to the home-assistant organization, 82 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to fabric-home-assistant, 1 commit to hassbian-scripts, 1 commit to homebridge-homeassistant") - [carlosmgr (@carlosmgr)](https://github.com/carlosmgr "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Carter (@BluGeni)](https://github.com/BluGeni "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [cdce8p (@cdce8p)](https://github.com/cdce8p "14 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant-polymer, 2 commits to home-assistant") @@ -209,17 +207,19 @@ This page contains a list of people who have contributed in one way or another t - [Claus F. Strasburger (@cfstras)](https://github.com/cfstras "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Colin Dunn (@colindunn)](https://github.com/colindunn "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Colin O'Dell (@colinodell)](https://github.com/colinodell "24 total commits to the home-assistant organization, 13 commits to home-assistant, 11 commits to home-assistant.github.io") +- [Colin Teubner (@netopiax)](https://github.com/netopiax "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Constantine Grantcharov (@conz27)](https://github.com/conz27 "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Constantine Poltyrev (@shprota)](https://github.com/shprota "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Corban Mailloux (@corbanmailloux)](https://github.com/corbanmailloux "18 total commits to the home-assistant organization, 18 commits to home-assistant.github.io") - [Corey Pauley (@devspacenine)](https://github.com/devspacenine "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits 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 "18 total commits to the home-assistant organization, 13 commits to home-assistant, 5 commits to home-assistant.github.io") +- [Craig J. Ward (@wardcraigj)](https://github.com/wardcraigj "23 total commits to the home-assistant organization, 17 commits to home-assistant, 6 commits to home-assistant.github.io") - [cxlwill (@cxlwill)](https://github.com/cxlwill "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer") - [Dale Higgs (@dale3h)](https://github.com/dale3h "33 total commits to the home-assistant organization, 21 commits to home-assistant.github.io, 10 commits to home-assistant, 1 commit to hassbot, 1 commit to homebridge-homeassistant") - [Dan (@danieljkemp)](https://github.com/danieljkemp "23 total commits to the home-assistant organization, 16 commits to home-assistant, 7 commits to home-assistant.github.io") - [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "14 total commits to the home-assistant organization, 12 commits to home-assistant, 2 commits to home-assistant.github.io") - [Dan Faulknor (@danielfaulknor)](https://github.com/danielfaulknor "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Dan Nixon (@DanNixon)](https://github.com/DanNixon "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Dan Ports (@drkp)](https://github.com/drkp "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Dan Sarginson (@dansarginson)](https://github.com/dansarginson "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Dan Smith (@kk7ds)](https://github.com/kk7ds "84 total commits to the home-assistant organization, 68 commits to home-assistant, 14 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") @@ -227,7 +227,7 @@ This page contains a list of people who have contributed in one way or another t - [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 "364 total commits to the home-assistant organization, 242 commits to home-assistant, 119 commits to home-assistant.github.io, 3 commits to home-assistant-polymer") -- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "69 total commits to the home-assistant organization, 36 commits to home-assistant.github.io, 30 commits to home-assistant, 3 commits to hassio-addons") +- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "73 total commits to the home-assistant organization, 37 commits to home-assistant.github.io, 33 commits to home-assistant, 3 commits to hassio-addons") - [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 Schaal (@schaal)](https://github.com/schaal "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Daniel Stone (@daniel-stoneuk)](https://github.com/daniel-stoneuk "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -235,14 +235,14 @@ This page contains a list of people who have contributed in one way or another t - [Daniel Welch (@danielwelch)](https://github.com/danielwelch "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") - [DanielXYZ2000 (@DanielXYZ2000)](https://github.com/DanielXYZ2000 "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to hassio-addons") - [Daniyar Yeralin (@yeralin)](https://github.com/yeralin "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [dasos (@dasos)](https://github.com/dasos "10 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to netdisco") +- [dasos (@dasos)](https://github.com/dasos "11 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to netdisco") - [datafx (@datafx)](https://github.com/datafx "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Dave (@d4v3d)](https://github.com/d4v3d "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Dave Banks (@djbanks)](https://github.com/djbanks "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [Dave J (@kxtcd950)](https://github.com/kxtcd950 "3 total commits to the home-assistant organization, 3 commits to hassbian-scripts") - [DaveSergeant (@dethpickle)](https://github.com/dethpickle "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [David (@fanaticDavid)](https://github.com/fanaticDavid "12 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant") -- [David De Sloovere (@DavidDeSloovere)](https://github.com/DavidDeSloovere "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") +- [David De Sloovere (@DavidDeSloovere)](https://github.com/DavidDeSloovere "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [David Grant (@davegravy)](https://github.com/davegravy "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") - [David Jackson (@David-Jackson)](https://github.com/David-Jackson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [David McNett (@nugget)](https://github.com/nugget "10 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.github.io") @@ -261,34 +261,38 @@ 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") - [Derek (@itchaboy)](https://github.com/itchaboy "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") +- [Derek Brooks (@broox)](https://github.com/broox "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [dersger (@dersger)](https://github.com/dersger "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to home-assistant-polymer") - [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") - [Devon Peet (@dpeet)](https://github.com/dpeet "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Diogo Gomes (@dgomes)](https://github.com/dgomes "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") +- [Diogo Gomes (@dgomes)](https://github.com/dgomes "10 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant.github.io") - [Domantas (@Dohxis)](https://github.com/Dohxis "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant") +- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "4 total commits to the home-assistant organization, 2 commits to home-assistant, 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 "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") -- [DubhAd (@DubhAd)](https://github.com/DubhAd "74 total commits to the home-assistant organization, 74 commits to home-assistant.github.io") +- [DubhAd (@DubhAd)](https://github.com/DubhAd "90 total commits to the home-assistant organization, 90 commits to home-assistant.github.io") - [Duoxilian (@Duoxilian)](https://github.com/Duoxilian "11 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 5 commits to home-assistant") -- [Edwin Smulders (@Dutchy-)](https://github.com/Dutchy- "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant") +- [ebpetway (@ebpetway)](https://github.com/ebpetway "55 total commits to the home-assistant organization, 55 commits to warrant") +- [Edwin Smulders (@Dutchy-)](https://github.com/Dutchy- "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Egor Tsinko (@etsinko)](https://github.com/etsinko "10 total commits to the home-assistant organization, 8 commits to home-assistant, 2 commits to home-assistant.github.io") - [Eitan Mosenkis (@emosenkis)](https://github.com/emosenkis "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to netdisco") +- [eldanb (@eldanb)](https://github.com/eldanb "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Eleftherios Chamakiotis (@lexam79)](https://github.com/lexam79 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Ellis Percival (@flyte)](https://github.com/flyte "31 total commits to the home-assistant organization, 25 commits to home-assistant, 6 commits to home-assistant.github.io") - [Emil Horpen Hetty (@emilhetty)](https://github.com/emilhetty "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [emlt (@emlt)](https://github.com/emlt "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [endor-force (@endor-force)](https://github.com/endor-force "2 total commits to the home-assistant organization, 1 commit to hassio-build, 1 commit to hassio-addons") +- [endor-force (@endor-force)](https://github.com/endor-force "5 total commits to the home-assistant organization, 4 commits to hassio-addons, 1 commit to hassio-build") - [engrbm87 (@engrbm87)](https://github.com/engrbm87 "3 total commits to the home-assistant organization, 3 commits to appdaemon") - [Eric Hagan (@ehagan)](https://github.com/ehagan "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Eric Oosting (@eoosting)](https://github.com/eoosting "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Eric Rolf (@xrolfex)](https://github.com/xrolfex "13 total commits to the home-assistant organization, 13 commits to home-assistant") - [Eric Thompson (@er0ck)](https://github.com/er0ck "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "101 total commits to the home-assistant organization, 92 commits to home-assistant, 6 commits to home-assistant.github.io, 3 commits to netdisco") +- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "109 total commits to the home-assistant organization, 96 commits to home-assistant, 10 commits to home-assistant.github.io, 3 commits to netdisco") - [Erik-jan Riemers (@riemers)](https://github.com/riemers "13 total commits to the home-assistant organization, 13 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 "76 total commits to the home-assistant organization, 45 commits to home-assistant, 25 commits to home-assistant.github.io, 3 commits to homebridge-homeassistant, 3 commits to home-assistant-polymer") -- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4298 total commits to the home-assistant organization, 2777 commits to home-assistant.github.io, 1431 commits to home-assistant, 29 commits to home-assistant-notebooks, 24 commits to home-assistant-assets, 11 commits to hassio-build, 10 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 2 commits to hassio, 1 commit to home-assistant-js-websocket") +- [Ezra Bowden (@bn0)](https://github.com/bn0 "2 total commits to the home-assistant organization, 2 commits to warrant") +- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4347 total commits to the home-assistant organization, 2813 commits to home-assistant.github.io, 1444 commits to home-assistant, 29 commits to home-assistant-notebooks, 24 commits to home-assistant-assets, 11 commits to hassio-build, 10 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 2 commits to hassio, 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 "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [fakezeta (@fakezeta)](https://github.com/fakezeta "7 total commits to the home-assistant organization, 7 commits to home-assistant") @@ -298,7 +302,7 @@ This page contains a list of people who have contributed in one way or another t - [Ferry van Zeelst (@StaticCube)](https://github.com/StaticCube "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") - [Finbarr Brady (@fbradyirl)](https://github.com/fbradyirl "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [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") -- [Florian Klien (@flowolf)](https://github.com/flowolf "15 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 3 commits to home-assistant") +- [Florian Klien (@flowolf)](https://github.com/flowolf "16 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 3 commits to home-assistant") - [florincosta (@florincosta)](https://github.com/florincosta "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") - [Fonta (@f0nt4)](https://github.com/f0nt4 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Franck Nijhof (@frenck)](https://github.com/frenck "13 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 1 commit to hassio") @@ -307,7 +311,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 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Frederic Hemberger (@fhemberger)](https://github.com/fhemberger "93 total commits to the home-assistant organization, 93 commits to home-assistant.github.io") - [Fredrik Fjeld (@fredrikfjeld)](https://github.com/fredrikfjeld "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "175 total commits to the home-assistant organization, 74 commits to hassbian-scripts, 69 commits to home-assistant.github.io, 27 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer") +- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "176 total commits to the home-assistant organization, 74 commits to hassbian-scripts, 70 commits to home-assistant.github.io, 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") @@ -329,7 +333,8 @@ This page contains a list of people who have contributed in one way or another t - [GMFalka (@GMFalka)](https://github.com/GMFalka "3 total commits to the home-assistant organization, 3 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 "80 total commits to the home-assistant organization, 73 commits to home-assistant.github.io, 7 commits to home-assistant") +- [Grant McConnaughey (@grantmcconnaughey)](https://github.com/grantmcconnaughey "8 total commits to the home-assistant organization, 8 commits to warrant") +- [GreenTurtwig (@GreenTurtwig)](https://github.com/GreenTurtwig "81 total commits to the home-assistant organization, 73 commits to home-assistant.github.io, 8 commits to home-assistant") - [Greg Dowling (@pavoni)](https://github.com/pavoni "250 total commits to the home-assistant organization, 223 commits to home-assistant, 25 commits to home-assistant.github.io, 2 commits to netdisco") - [Greg Laabs (@OverloadUT)](https://github.com/OverloadUT "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Greg MacLellan (@gregmac)](https://github.com/gregmac "1 total commits to the home-assistant organization, 1 commit to pi-gen") @@ -338,6 +343,7 @@ This page contains a list of people who have contributed in one way or another t - [Greg. A. (@gautric)](https://github.com/gautric "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [groth-its (@groth-its)](https://github.com/groth-its "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [GTH (@gunnarhelgason)](https://github.com/gunnarhelgason "2 total commits to the home-assistant organization, 2 commits to appdaemon") +- [Guillaume Rischard (@grischard)](https://github.com/grischard "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Gustav Ahlberg (@Gyran)](https://github.com/Gyran "20 total commits to the home-assistant organization, 20 commits to home-assistant") - [gwendalg (@gwendalg)](https://github.com/gwendalg "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Hajime Morrita (@omo)](https://github.com/omo "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") @@ -359,7 +365,7 @@ This page contains a list of people who have contributed in one way or another t - [hexa- (@mweinelt)](https://github.com/mweinelt "17 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [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") -- [honcheng (@honcheng)](https://github.com/honcheng "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") +- [honcheng (@honcheng)](https://github.com/honcheng "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") - [Hugo Dupras (@jabesq)](https://github.com/jabesq "28 total commits to the home-assistant organization, 20 commits to home-assistant, 8 commits to home-assistant.github.io") - [Hugo Gresse (@HugoGresse)](https://github.com/HugoGresse "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [Hung Le (@hungle)](https://github.com/hungle "1 total commits to the home-assistant organization, 1 commit to libcoap") @@ -389,7 +395,7 @@ This page contains a list of people who have contributed in one way or another t - [JammyDodger231 (@JammyDodger231)](https://github.com/JammyDodger231 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Jan Almeroth (@jalmeroth)](https://github.com/jalmeroth "7 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [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 "20 total commits to the home-assistant organization, 16 commits to home-assistant, 4 commits to home-assistant.github.io") +- [Jan Losinski (@janLo)](https://github.com/janLo "21 total commits to the home-assistant organization, 16 commits to home-assistant, 5 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") - [Janne Grunau (@jannau)](https://github.com/jannau "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -411,7 +417,7 @@ This page contains a list of people who have contributed in one way or another t - [Jeremy (@Wutname1)](https://github.com/Wutname1 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Jeremy Williams (@jwillaz)](https://github.com/jwillaz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [jeremysv (@jeremysv)](https://github.com/jeremysv "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jeroen ter Heerdt (@jeroenterheerdt)](https://github.com/jeroenterheerdt "20 total commits to the home-assistant organization, 12 commits to home-assistant, 8 commits to home-assistant.github.io") +- [Jeroen ter Heerdt (@jeroenterheerdt)](https://github.com/jeroenterheerdt "24 total commits to the home-assistant organization, 14 commits to home-assistant, 10 commits to home-assistant.github.io") - [Jerold Albertson (@jeroldalbertson-wf)](https://github.com/jeroldalbertson-wf "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Jerry Workman (@JerryWorkman)](https://github.com/JerryWorkman "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Jesse Hills (@jesserockz)](https://github.com/jesserockz "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -420,16 +426,16 @@ This page contains a list of people who have contributed in one way or another t - [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") -- [jimbob1001 (@jimbob1001)](https://github.com/jimbob1001 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [jimbob1001 (@jimbob1001)](https://github.com/jimbob1001 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Joakim Nohlgård (@gebart)](https://github.com/gebart "2 total commits to the home-assistant organization, 2 commits to libcoap") - [Joakim Sørensen (@ludeeus)](https://github.com/ludeeus "27 total commits to the home-assistant organization, 14 commits to hassbian-scripts, 13 commits to home-assistant.github.io") - [Job (@jmvermeulen)](https://github.com/jmvermeulen "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [jodur (@jodur)](https://github.com/jodur "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Joe Lee (@xnoodle)](https://github.com/xnoodle "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Joe Lu (@snjoetw)](https://github.com/snjoetw "10 total commits to the home-assistant organization, 8 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Joe Lu (@snjoetw)](https://github.com/snjoetw "11 total commits to the home-assistant organization, 9 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Joe McMonagle (@joemcmonagle)](https://github.com/joemcmonagle "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") - [joe248 (@joe248)](https://github.com/joe248 "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Joeboyc2 (@Joeboyc2)](https://github.com/Joeboyc2 "15 total commits to the home-assistant organization, 15 commits to home-assistant.github.io") -- [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 "43 total commits to the home-assistant organization, 35 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco") - [Johan Haals (@jhaals)](https://github.com/jhaals "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to appdaemon") - [Johan Klintberg (@moogblob)](https://github.com/moogblob "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -437,7 +443,7 @@ This page contains a list of people who have contributed in one way or another t - [Johann Kellerman (@kellerza)](https://github.com/kellerza "144 total commits to the home-assistant organization, 114 commits to home-assistant, 30 commits to home-assistant.github.io") - [Johannes K. (@roadrash2108)](https://github.com/roadrash2108 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [John (@J-C-B)](https://github.com/J-C-B "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "194 total commits to the home-assistant organization, 146 commits to home-assistant, 36 commits to home-assistant.github.io, 12 commits to home-assistant-polymer") +- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "200 total commits to the home-assistant organization, 148 commits to home-assistant, 37 commits to home-assistant.github.io, 15 commits to home-assistant-polymer") - [John Coggeshall (@coogle)](https://github.com/coogle "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [John Lindley (@jwl17330536)](https://github.com/jwl17330536 "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [John McLaughlin (@loghound)](https://github.com/loghound "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -445,7 +451,7 @@ This page contains a list of people who have contributed in one way or another t - [Johnny Chadda (@joch)](https://github.com/joch "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [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 Griffith (@arretx)](https://github.com/arretx "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") +- [Jon Griffith (@arretx)](https://github.com/arretx "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") - [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") - [Jonas Pedersen (@JonasPed)](https://github.com/JonasPed "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Jonatan Castro (@jcastro)](https://github.com/jcastro "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") @@ -463,8 +469,9 @@ This page contains a list of people who have contributed in one way or another t - [jpcomtois (@jpcomtois)](https://github.com/jpcomtois "1 total commits to the home-assistant organization, 1 commit to libcoap") - [JudgeDredd (@JudgeDreddKLC)](https://github.com/JudgeDreddKLC "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") - [Juggels (@Juggels)](https://github.com/Juggels "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Julian Kaffke (@jaykay)](https://github.com/jaykay "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [Julian Kahnert (@JulianKahnert)](https://github.com/JulianKahnert "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "14 total commits to the home-assistant organization, 9 commits to home-assistant, 5 commits to home-assistant.github.io") +- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "17 total commits to the home-assistant organization, 11 commits to home-assistant, 6 commits to home-assistant.github.io") - [jumpkick (@jumpkick)](https://github.com/jumpkick "15 total commits to the home-assistant organization, 12 commits to home-assistant, 3 commits to home-assistant.github.io") - [Justin Dray (@justin8)](https://github.com/justin8 "9 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 2 commits to home-assistant") - [Justin Hayes (@GussyH)](https://github.com/GussyH "7 total commits to the home-assistant organization, 7 commits to hadashboard") @@ -472,7 +479,7 @@ This page contains a list of people who have contributed in one way or another t - [Justyn Shull (@justyns)](https://github.com/justyns "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Jürgen W (@jurgenweber)](https://github.com/jurgenweber "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Kai (@luxus)](https://github.com/luxus "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Kane610 (@Kane610)](https://github.com/Kane610 "15 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco") +- [Kane610 (@Kane610)](https://github.com/Kane610 "16 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-polymer") - [Karen Goode (@kfgoode)](https://github.com/kfgoode "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [karlkar (@karlkar)](https://github.com/karlkar "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Keaton Taylor (@keatontaylor)](https://github.com/keatontaylor "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") @@ -506,7 +513,7 @@ This page contains a list of people who have contributed in one way or another t - [Leon99 (@Leon99)](https://github.com/Leon99 "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to appdaemon") - [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 "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 "63 total commits to the home-assistant organization, 50 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Lewis Juggins (@lwis)](https://github.com/lwis "64 total commits to the home-assistant organization, 51 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [lichtteil (@lichtteil)](https://github.com/lichtteil "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Lindsay Ward (@lindsaymarkward)](https://github.com/lindsaymarkward "17 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 4 commits to home-assistant") - [linuxlurak (@linuxlurak)](https://github.com/linuxlurak "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to hadashboard") @@ -517,14 +524,16 @@ This page contains a list of people who have contributed in one way or another t - [LucaSoldi (@LucaSoldi)](https://github.com/LucaSoldi "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Lucien Guimier (@guimier)](https://github.com/guimier "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Ludovic (@ldvc)](https://github.com/ldvc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") +- [Ludovico de Nittis (@RyuzakiKK)](https://github.com/RyuzakiKK "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Lukas (@lukas-hetzenecker)](https://github.com/lukas-hetzenecker "14 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Lukas Barth (@tinloaf)](https://github.com/tinloaf "22 total commits to the home-assistant organization, 12 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Lukas Barth (@tinloaf)](https://github.com/tinloaf "24 total commits to the home-assistant organization, 13 commits to home-assistant, 9 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [Lukas Ecklmayr (@outrun0506)](https://github.com/outrun0506 "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") +- [Lukas Porubcan (@Luc3as)](https://github.com/Luc3as "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Luke Armstrong (@lukearmstrong)](https://github.com/lukearmstrong "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Luuk (@Maharball1)](https://github.com/Maharball1 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [LvivEchoes (@LvivEchoes)](https://github.com/LvivEchoes "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") +- [LvivEchoes (@LvivEchoes)](https://github.com/LvivEchoes "8 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Maciej Bieniek (@bieniu)](https://github.com/bieniu "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Maciej Sokołowski (@matemaciek)](https://github.com/matemaciek "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to hassio-build") +- [Maciej Sokołowski (@matemaciek)](https://github.com/matemaciek "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to hassio-build") - [Maciej Wasilak (@mwasilak)](https://github.com/mwasilak "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Magnus Ihse Bursie (@magicus)](https://github.com/magicus "16 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to netdisco, 3 commits to home-assistant.github.io") - [Magnus Lyckå (@magnus-lycka)](https://github.com/magnus-lycka "1 total commits to the home-assistant organization, 1 commit to netdisco") @@ -538,8 +547,9 @@ This page contains a list of people who have contributed in one way or another t - [Marc Pabst (@mxtra)](https://github.com/mxtra "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [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 "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "139 total commits to the home-assistant organization, 76 commits to home-assistant, 61 commits to home-assistant.github.io, 1 commit to home-assistant-assets, 1 commit to home-assistant-polymer") +- [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "140 total commits to the home-assistant organization, 77 commits to home-assistant, 61 commits to home-assistant.github.io, 1 commit to home-assistant-assets, 1 commit to home-assistant-polymer") - [Marcin Jaworski (@yawor)](https://github.com/yawor "12 total commits to the home-assistant organization, 12 commits to appdaemon") +- [Marcus Schmidt (@mar-schmidt)](https://github.com/mar-schmidt "2 total commits to the home-assistant organization, 2 commits 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") - [Mark Coombes (@marthoc)](https://github.com/marthoc "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Mark Grosen (@mgsb)](https://github.com/mgsb "1 total commits to the home-assistant organization, 1 commit to netdisco") @@ -557,23 +567,24 @@ This page contains a list of people who have contributed in one way or another t - [Martin Rowan (@shortbloke)](https://github.com/shortbloke "2 total commits to the home-assistant organization, 2 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") +- [Mateusz Drab (@mateuszdrab)](https://github.com/mateuszdrab "2 total commits to the home-assistant organization, 2 commits 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 "48 total commits to the home-assistant organization, 24 commits to home-assistant-iOS, 16 commits to home-assistant.github.io, 7 commits to home-assistant, 1 commit to home-assistant-polymer") +- [Matt N. (@mnoorenberghe)](https://github.com/mnoorenberghe "49 total commits to the home-assistant organization, 24 commits to home-assistant-iOS, 16 commits to home-assistant.github.io, 7 commits to home-assistant, 1 commit to homebridge-homeassistant, 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 "27 total commits to the home-assistant organization, 20 commits to homebridge-homeassistant, 5 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Matt Schmitt (@schmittx)](https://github.com/schmittx "30 total commits to the home-assistant organization, 20 commits to homebridge-homeassistant, 6 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Matt White (@mw-white)](https://github.com/mw-white "10 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.github.io") -- [matt2005 (@matt2005)](https://github.com/matt2005 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [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 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Matthew Donoughe (@mdonoughe)](https://github.com/mdonoughe "2 total commits to the home-assistant organization, 2 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 Hilton (@matt2005)](https://github.com/matt2005 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [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 "16 total commits to the home-assistant organization, 10 commits to home-assistant, 6 commits to home-assistant.github.io") +- [Matthew Treinish (@mtreinish)](https://github.com/mtreinish "17 total commits to the home-assistant organization, 11 commits to home-assistant, 6 commits to home-assistant.github.io") - [mattie47 (@mattie47)](https://github.com/mattie47 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [mauriciobonani (@mauriciobonani)](https://github.com/mauriciobonani "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Max Rumpf (@Maxr1998)](https://github.com/Maxr1998 "3 total commits to the home-assistant organization, 3 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") -- [Menno Blom (@b10m)](https://github.com/b10m "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to netdisco") +- [Menno Blom (@b10m)](https://github.com/b10m "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant, 1 commit to netdisco") - [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") @@ -600,14 +611,14 @@ This page contains a list of people who have contributed in one way or another t - [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") - [Mikkel Høgh (@mikl)](https://github.com/mikl "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Milan V. (@milanvo)](https://github.com/milanvo "17 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Milan V. (@milanvo)](https://github.com/milanvo "18 total commits to the home-assistant organization, 10 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [MinchinWeb (@MinchinWeb)](https://github.com/MinchinWeb "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [miniconfig (@miniconfig)](https://github.com/miniconfig "27 total commits to the home-assistant organization, 20 commits to home-assistant, 7 commits to home-assistant.github.io") - [Minims (@Minims)](https://github.com/Minims "3 total commits to the home-assistant organization, 3 commits to homebridge-homeassistant") - [Mister Wil (@MisterWil)](https://github.com/MisterWil "17 total commits to the home-assistant organization, 11 commits to home-assistant, 6 commits to home-assistant.github.io") - [Mitchell Cash (@mitchellcash)](https://github.com/mitchellcash "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [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 "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [Mitko Masarliev (@masarliev)](https://github.com/masarliev "7 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io") - [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 "22 total commits to the home-assistant organization, 15 commits to home-assistant.github.io, 7 commits to home-assistant") - [Molodax (@Molodax)](https://github.com/Molodax "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") @@ -642,7 +653,7 @@ This page contains a list of people who have contributed in one way or another t - [nodomain (@nodomain)](https://github.com/nodomain "9 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant") - [Nolan Gilley (@nkgilley)](https://github.com/nkgilley "116 total commits to the home-assistant organization, 91 commits to home-assistant, 25 commits to home-assistant.github.io") - [NotoriousBDG (@notoriousbdg)](https://github.com/notoriousbdg "3 total commits to the home-assistant organization, 3 commits to hassio-addons") -- [NovapaX (@NovapaX)](https://github.com/NovapaX "7 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant-polymer, 1 commit to home-assistant-assets") +- [NovapaX (@NovapaX)](https://github.com/NovapaX "9 total commits to the home-assistant organization, 4 commits to home-assistant-polymer, 4 commits to home-assistant, 1 commit to home-assistant-assets") - [ntalekt (@ntalekt)](https://github.com/ntalekt "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Nuno Sousa (@nunofgs)](https://github.com/nunofgs "7 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to homebridge-homeassistant") - [obgm (@obgm)](https://github.com/obgm "480 total commits to the home-assistant organization, 480 commits to libcoap") @@ -651,33 +662,29 @@ 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 "5 total commits to the home-assistant organization, 3 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 "23 total commits to the home-assistant organization, 13 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to netdisco") +- [Oliver (@scarface-4711)](https://github.com/scarface-4711 "24 total commits to the home-assistant organization, 14 commits to home-assistant, 9 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") -- [Omar Usman (@omarusman)](https://github.com/omarusman "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Open Home Automation (@open-homeautomation)](https://github.com/open-homeautomation "41 total commits to the home-assistant organization, 29 commits to home-assistant, 12 commits to home-assistant.github.io") - [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [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") +- [Parker Moore (@parkr)](https://github.com/parkr "60 total commits to the home-assistant organization, 60 commits to home-assistant.github.io") - [pascal (@passie)](https://github.com/passie "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Pascal Bach (@bachp)](https://github.com/bachp "10 total commits to the home-assistant organization, 9 commits to home-assistant, 1 commit to netdisco") -- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "2199 total commits to the home-assistant organization, 859 commits to hassio, 426 commits to home-assistant, 306 commits to hassio-build, 300 commits to hassio-addons, 290 commits to home-assistant.github.io, 16 commits to hassio-addons-example, 1 commit to netdisco, 1 commit to home-assistant-js-websocket") +- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "2219 total commits to the home-assistant organization, 864 commits to hassio, 430 commits to home-assistant, 316 commits to hassio-build, 301 commits to hassio-addons, 290 commits to home-assistant.github.io, 16 commits to hassio-addons-example, 1 commit to netdisco, 1 commit to home-assistant-js-websocket") - [patkap (@patkap)](https://github.com/patkap "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Patrick Aikens (@duckpuppy)](https://github.com/duckpuppy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Patrick White (@pw)](https://github.com/pw "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Patrik (@ggravlingen)](https://github.com/ggravlingen "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Patrik Hermansson (@bphermansson)](https://github.com/bphermansson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Paul Jimenez (@pjz)](https://github.com/pjz "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Paul Hendry (@pshendry)](https://github.com/pshendry "1 total commits to the home-assistant organization, 1 commit to warrant") - [Paul Sokolovsky (@pfalcon)](https://github.com/pfalcon "6 total commits to the home-assistant organization, 3 commits to netdisco, 3 commits to home-assistant") - [Pavel Ponomarev (@awsum)](https://github.com/awsum "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer") - [PawelWMS (@PawelWMS)](https://github.com/PawelWMS "12 total commits to the home-assistant organization, 12 commits to libcoap") - [Pedro Navarro (@pedronavf)](https://github.com/pedronavf "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Pedro Pombeiro (@PombeirP)](https://github.com/PombeirP "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Per Osbäck (@perosb)](https://github.com/perosb "12 total commits to the home-assistant organization, 10 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Per Osbäck (@perosb)](https://github.com/perosb "12 total commits to the home-assistant organization, 12 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") -- [Petar Petrov (@MindFreeze)](https://github.com/MindFreeze "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Pete Peterson (@petey)](https://github.com/petey "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [PeteBa (@PeteBa)](https://github.com/PeteBa "8 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [PeteBa (@PeteBa)](https://github.com/PeteBa "6 total commits to the home-assistant organization, 5 commits to home-assistant, 1 commit to home-assistant-polymer") - [Peter Epley (@epleypa)](https://github.com/epleypa "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Petr Vraník (@konikvranik)](https://github.com/konikvranik "11 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io") - [pezinek (@pezinek)](https://github.com/pezinek "8 total commits to the home-assistant organization, 8 commits to home-assistant") @@ -688,14 +695,16 @@ This page contains a list of people who have contributed in one way or another t - [Phil Kates (@philk)](https://github.com/philk "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [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 "36 total commits to the home-assistant organization, 23 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to hassio-build, 1 commit to appdaemon") +- [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "36 total commits to the home-assistant organization, 23 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to appdaemon, 1 commit to hassio-build") - [Phill Price (@phillprice)](https://github.com/phillprice "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io") -- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "15 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "20 total commits to the home-assistant organization, 11 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Pierre Ståhl (@postlund)](https://github.com/postlund "44 total commits to the home-assistant organization, 29 commits to home-assistant, 9 commits to home-assistant.github.io, 4 commits to netdisco, 2 commits to home-assistant-polymer") - [Piratonym (@Piratonym)](https://github.com/Piratonym "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [pkonnekermetametrics (@pkonnekermetametrics)](https://github.com/pkonnekermetametrics "5 total commits to the home-assistant organization, 5 commits to warrant") - [PuckStar (@PuckStar)](https://github.com/PuckStar "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [R Huish (@Genestealer)](https://github.com/Genestealer "20 total commits to the home-assistant organization, 20 commits to home-assistant.github.io") -- [rbflurry (@rbflurry)](https://github.com/rbflurry "14 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 3 commits to home-assistant") +- [Rasmus (@rasmusbe)](https://github.com/rasmusbe "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [rbflurry (@rbflurry)](https://github.com/rbflurry "16 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 3 commits to home-assistant") - [Reed Riley (@reedriley)](https://github.com/reedriley "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Rendili (@Rendili)](https://github.com/Rendili "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Rene Tode (@ReneTode)](https://github.com/ReneTode "25 total commits to the home-assistant organization, 25 commits to appdaemon") @@ -706,11 +715,11 @@ This page contains a list of people who have contributed in one way or another t - [Riccardo Canta (@commento)](https://github.com/commento "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Richard Arends (@Mosibi)](https://github.com/Mosibi "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Richard Cox (@Khabi)](https://github.com/Khabi "15 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io") -- [Richard Leurs (@R1chardTM)](https://github.com/R1chardTM "14 total commits to the home-assistant organization, 7 commits to home-assistant, 6 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Richard Leurs (@R1chardTM)](https://github.com/R1chardTM "15 total commits to the home-assistant organization, 8 commits to home-assistant, 6 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [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 "1315 total commits to the home-assistant organization, 646 commits to home-assistant-iOS, 259 commits to home-assistant, 248 commits to home-assistant.github.io, 91 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to home-assistant-js, 3 commits to scenegen, 3 commits to appdaemon, 3 commits to hadashboard, 3 commits to hassbot, 3 commits to home-assistant-js-websocket, 3 commits to organization, 2 commits to LabelBot, 2 commits to lambda-home-assistant-github, 2 commits to fabric-home-assistant, 2 commits to home-assistant-assets, 2 commits to micropython-home-assistant, 2 commits to home-assistant-notebooks") +- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1315 total commits to the home-assistant organization, 646 commits to home-assistant-iOS, 259 commits to home-assistant, 248 commits to home-assistant.github.io, 91 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to home-assistant-js, 3 commits to hassbot, 3 commits to scenegen, 3 commits to appdaemon, 3 commits to hadashboard, 3 commits to home-assistant-js-websocket, 3 commits to organization, 2 commits to LabelBot, 2 commits to home-assistant-assets, 2 commits to fabric-home-assistant, 2 commits to micropython-home-assistant, 2 commits to lambda-home-assistant-github, 2 commits to home-assistant-notebooks") - [Robby Grossman (@freerobby)](https://github.com/freerobby "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Robin (@robmarkcole)](https://github.com/robmarkcole "15 total commits to the home-assistant organization, 9 commits to home-assistant.github.io, 6 commits to home-assistant") - [Robin Laurén (@llauren)](https://github.com/llauren "1 total commits to the home-assistant organization, 1 commit to appdaemon") @@ -718,6 +727,7 @@ This page contains a list of people who have contributed in one way or another t - [Roi Dayan (@roidayan)](https://github.com/roidayan "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [roiff (@roiff)](https://github.com/roiff "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Ron Klinkien (@cyberjunky)](https://github.com/cyberjunky "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") +- [Ron Miller (@brainyron)](https://github.com/brainyron "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [roqeer (@roqeer)](https://github.com/roqeer "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Ross Schulman (@rschulman)](https://github.com/rschulman "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [rpitera (@rpitera)](https://github.com/rpitera "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") @@ -749,13 +759,15 @@ This page contains a list of people who have contributed in one way or another t - [Sebastian von Minckwitz (@teodoc)](https://github.com/teodoc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Semir Patel (@analogue)](https://github.com/analogue "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [Sergey Isachenko (@zabuldon)](https://github.com/zabuldon "6 total commits to the home-assistant organization, 6 commits to home-assistant") +- [Sergey Vishnikin (@armicron)](https://github.com/armicron "33 total commits to the home-assistant organization, 33 commits to warrant") - [sfam (@sfam)](https://github.com/sfam "65 total commits to the home-assistant organization, 58 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-polymer") -- [sharukins (@sharukins)](https://github.com/sharukins "2 total commits to the home-assistant organization, 2 commits to hassio-build") +- [sharukins (@sharukins)](https://github.com/sharukins "3 total commits to the home-assistant organization, 3 commits to hassio-build") - [Shiny (@Br3nda)](https://github.com/Br3nda "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [siebert (@siebert)](https://github.com/siebert "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Simon (@echox)](https://github.com/echox "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Simon Szustkowski (@simonszu)](https://github.com/simonszu "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant") - [Sjors Spoorendonk (@sjorsjes)](https://github.com/sjorsjes "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") +- [sjoshi10 (@sjoshi10)](https://github.com/sjoshi10 "1 total commits to the home-assistant organization, 1 commit to warrant") - [snizzleorg (@snizzleorg)](https://github.com/snizzleorg "5 total commits to the home-assistant organization, 5 commits to hadashboard") - [St. John Johnson (@stjohnjohnson)](https://github.com/stjohnjohnson "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") - [Stefan Jonasson (@stefan-jonasson)](https://github.com/stefan-jonasson "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io") @@ -777,7 +789,7 @@ 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 "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [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 "43 total commits to the home-assistant organization, 34 commits to home-assistant, 7 commits to home-assistant.github.io, 2 commits to netdisco") +- [Teemu R. (@rytilahti)](https://github.com/rytilahti "44 total commits to the home-assistant organization, 35 commits to home-assistant, 7 commits to home-assistant.github.io, 2 commits to netdisco") - [Teguh Sobirin (@tjstyle)](https://github.com/tjstyle "2 total commits to the home-assistant organization, 2 commits to pi-gen") - [Tentoe (@Tentoe)](https://github.com/Tentoe "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Theb-1 (@Theb-1)](https://github.com/Theb-1 "5 total commits to the home-assistant organization, 5 commits to home-assistant") @@ -813,6 +825,7 @@ This page contains a list of people who have contributed in one way or another t - [TopdRob (@TopdRob)](https://github.com/TopdRob "7 total commits to the home-assistant organization, 7 commits to home-assistant") - [Torkild Retvedt (@torkildr)](https://github.com/torkildr "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [Toshik (@Toshik)](https://github.com/Toshik "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") +- [Touliloup (@RiRomain)](https://github.com/RiRomain "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [tradiuz (@tradiuz)](https://github.com/tradiuz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [trbs (@trbs)](https://github.com/trbs "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Trevor (@tboyce021)](https://github.com/tboyce021 "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 commits to home-assistant.github.io") @@ -820,8 +833,9 @@ This page contains a list of people who have contributed in one way or another t - [Tristan Caulfield (@Bahnburner)](https://github.com/Bahnburner "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [trollkarlen (@trollkarlen)](https://github.com/trollkarlen "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Tsvi Mostovicz (@tsvi)](https://github.com/tsvi "9 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 4 commits to home-assistant") -- [Tyler Page (@iamtpage)](https://github.com/iamtpage "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Tyler Page (@iamtpage)](https://github.com/iamtpage "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [Tõnis Tobre (@tobre6)](https://github.com/tobre6 "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") +- [uchagani (@uchagani)](https://github.com/uchagani "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Uli (@uehler)](https://github.com/uehler "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [UnrealKazu (@UnrealKazu)](https://github.com/UnrealKazu "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [upsert (@upsert)](https://github.com/upsert "1 total commits to the home-assistant organization, 1 commit to netdisco") @@ -834,12 +848,14 @@ This page contains a list of people who have contributed in one way or another t - [vllungu (@vllungu)](https://github.com/vllungu "3 total commits to the home-assistant organization, 3 commits to libcoap") - [vrs01 (@vrs01)](https://github.com/vrs01 "20 total commits to the home-assistant organization, 14 commits to home-assistant.github.io, 6 commits to appdaemon") - [Wagner Sartori Junior (@trunet)](https://github.com/trunet "1 total commits to the home-assistant organization, 1 commit to netdisco") +- [Wesley Young (@wesdyoung)](https://github.com/wesdyoung "1 total commits to the home-assistant organization, 1 commit to warrant") - [Wilco Land (@Wilco89)](https://github.com/Wilco89 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Will Boyce (@wrboyce)](https://github.com/wrboyce "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Will Heid (@bassclarinetl2)](https://github.com/bassclarinetl2 "20 total commits to the home-assistant organization, 19 commits to home-assistant.github.io, 1 commit to fabric-home-assistant") - [Will W. (@tiktok7)](https://github.com/tiktok7 "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Willems Davy (@joyrider3774)](https://github.com/joyrider3774 "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant") - [William Johansson (@radhus)](https://github.com/radhus "1 total commits to the home-assistant organization, 1 commit to hassio") -- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "102 total commits to the home-assistant organization, 68 commits to home-assistant, 32 commits to home-assistant.github.io, 2 commits to netdisco") +- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "104 total commits to the home-assistant organization, 70 commits to home-assistant, 32 commits to home-assistant.github.io, 2 commits to netdisco") - [williamlehman (@williamlehman)](https://github.com/williamlehman "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [wind-rider (@wind-rider)](https://github.com/wind-rider "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [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") @@ -849,14 +865,16 @@ This page contains a list of people who have contributed in one way or another t - [Xorso (@Xorso)](https://github.com/Xorso "22 total commits to the home-assistant organization, 21 commits to home-assistant, 1 commit to hassio-addons") - [Yannick POLLART (@ypollart)](https://github.com/ypollart "8 total commits to the home-assistant organization, 4 commits to home-assistant, 4 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") +- [yingzong (@yingzong)](https://github.com/yingzong "1 total commits to the home-assistant organization, 1 commit to warrant") - [Yum (@goofz)](https://github.com/goofz "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Zac Hatfield Dodds (@Zac-HD)](https://github.com/Zac-HD "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Zen Tormey (@xehn)](https://github.com/xehn "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Zhao Lu (@zlu)](https://github.com/zlu "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [ziotibia81 (@ziotibia81)](https://github.com/ziotibia81 "10 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 4 commits to home-assistant") +- [ziotibia81 (@ziotibia81)](https://github.com/ziotibia81 "12 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 5 commits to home-assistant") +- [Zorks (@Zorks)](https://github.com/Zorks "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Åskar Andersson (@olskar)](https://github.com/olskar "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to hassbian-scripts") This page is irregularly updated using the [`credits_generator` tool](https://github.com/home-assistant/home-assistant.github.io/tree/next/credits_generator). If you think that you are missing, please let us know. -This page was last updated Friday, November 24th 2017, 11:17:36 pm UTC. +This page was last updated Sunday, December 10th 2017, 9:44:29 am UTC. From 311ac66b34bbb142e55787e4cd5f386fe3ff94a1 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 10 Dec 2017 10:46:07 +0100 Subject: [PATCH 39/40] Add sections --- credits_generator/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/credits_generator/README.md b/credits_generator/README.md index 03c187d2d8a..ee89f678174 100644 --- a/credits_generator/README.md +++ b/credits_generator/README.md @@ -3,11 +3,17 @@ credits_generator This tool can be used to update the [Home Assistant's Credits page](https://home-assistant.io/developers/credits/). +Setup +----- + ```bash $ cd credits_generator $ npm install ``` +Usage +----- + Set your personal GitHub access token as environmental variable. ```bash @@ -17,6 +23,7 @@ $ export GITHUB_TOKEN= Run the script. ```bash +$ cd credits_generator $ node update_credits.js ``` From 2ea5ae88ebca2008c615814b3b74844f6dba7722 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 10 Dec 2017 10:46:38 +0100 Subject: [PATCH 40/40] Add new section --- source/developers/maintenance.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/developers/maintenance.markdown b/source/developers/maintenance.markdown index 4f48326ceb3..182aba26bce 100644 --- a/source/developers/maintenance.markdown +++ b/source/developers/maintenance.markdown @@ -11,6 +11,8 @@ footer: true This page documents a couple of points for maintaining the Home Assistant code. Most of the tasks don't need to be performed on a regular base thus the steps, used tools, or details are preserved here. +## {% linkable_title Source code %} + ### {% linkable_title Line separator %} People are using various operating systems to develop components and platforms for Home Assistant. This could lead to different line endings on file. We prefer `LN`. Especially Microsoft Windows tools tend to use `CRLF`. @@ -39,4 +41,8 @@ $ script/gen_requirements_all.py Start a test run of Home Assistant. If that was successful, include all files in a Pull Request. Add a short summary of the changes, a sample configuration entry, details about the tests you performed to ensure the update works, and other useful information to the description. +## {% linkable_title Documentation %} + +- Merge `current` into `next` on a regular base. +- Optimize the images.