From 4d68b7247210a48545f674891b197820f561043a Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Sun, 22 May 2016 15:27:06 +0300 Subject: [PATCH 1/9] New parameters (#498) --- source/_components/light.qwikswitch.markdown | 5 +---- source/_components/qwikswitch.markdown | 12 ++++++++---- source/_components/switch.qwikswitch.markdown | 6 ++---- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/source/_components/light.qwikswitch.markdown b/source/_components/light.qwikswitch.markdown index 61880ae5736..e1f600c98f3 100644 --- a/source/_components/light.qwikswitch.markdown +++ b/source/_components/light.qwikswitch.markdown @@ -16,7 +16,4 @@ ha_release: "0.20" The `qwikswitch` light platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) relays and dimmers as lights from within Home Assistant. -They will be automatically discovered if the discovery component is enabled. - -For more configuration information see the [QwikSwitch component](/components/qwikswitch/) documentation. - +The platform is configured through the [QwikSwitch component](/components/qwikswitch/). diff --git a/source/_components/qwikswitch.markdown b/source/_components/qwikswitch.markdown index dd65621918c..098bc7c1db2 100644 --- a/source/_components/qwikswitch.markdown +++ b/source/_components/qwikswitch.markdown @@ -16,7 +16,7 @@ ha_release: "0.20" The `qwikswitch` component is the main component to integrate various [QwikSwitch](http://www.qwikswitch.co.za/) devices with Home Assistant. -Loading the `qwikswitch` component will automatically adds all devices from the QS Mobile application. QS Mobile controls the QSUSB Modem device. +Loading the `qwikswitch` component automatically adds all devices from the QS Mobile application. QS Mobile controls the QSUSB Modem device. Currently QwikSwitch relays and LED dimmers are supported (tested). QwikSwitch relay devices can be [switches](/components/switch.qwikswitch/) or [lights](/components/light.qwikswitch/) in Home-Assistant. If the device name in the QSUSB app ends with ` Switch` it will be created as a switch, otherwise as a light. @@ -31,6 +31,8 @@ qwikswitch: Configuration variables: - **url** (*Required*): The URL including the port of your QwikSwitch hub. +- **dimmer_adjust** (*Optional*): A decimal value to adjust the brightness of the dimmer exponentially. Increasing this value allows dimmers that reaches full brightness with low values in QS Mobile to appear more linear in Home Assistant. Recommended values between 1 and 2 and the default is 1. +- **button_events** (*Optional*): A comma separated list of button types that will generate events. Details below. ### {% linkable_title QwikSwitch Buttons %} @@ -44,11 +46,13 @@ automation: event_type: qwikswitch.button.@12df34 ``` -`event_type` names should be in the format **qwikswitch.button.@__ID__**. where **@__ID__** will be captured in the Home Assistant log when pressing the button. Alternatively, you can also access the listen API call by going to 'http://127.0.0.1:2020/&listen' and then pressing the button. +`event_type` names should be in the format **qwikswitch.button.@__ID__**. where **@__ID__** will be captured in the Home Assistant log when pressing the button. Alternatively, you can also get the device ID from the QS Mobile application or using the listen API call by browsing to `http://127.0.0.1:2020/&listen` and then pressing the button. -Currently Event will be created for the following commands (cmd) value in the Listen packet: +By default events will be fired if the value in the command (cmd) field of the listen packet equals: - `TOGGLE` - Normal QwikSwitch Transmitter button - `SCENE EXE` - QwikSwitch Scene Transmitter buttons - `LEVEL` - QwikSwitch OFF Transmitter buttons -Technically this could work for Keyfobs, door sensors, and PIR transmitters as well. +The list of recognized commands can be extended for Keyfobs, door sensors, and PIR transmitters with the **button_events** configuration option. **button_events** contain a comma separated list of commands that will fire Home Assistant events. By default it is: TOGGLE,SCENE EXE,LEVEL. + +On some QS Mobile servers button events are only generated for switches added to the QS Mobile application, so it might be best to test button presses through the `/&listen` API diff --git a/source/_components/switch.qwikswitch.markdown b/source/_components/switch.qwikswitch.markdown index 8c2b4833f5f..9b07aa24d0d 100644 --- a/source/_components/switch.qwikswitch.markdown +++ b/source/_components/switch.qwikswitch.markdown @@ -16,8 +16,6 @@ ha_release: "0.20" The `qwikswitch` platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) relays as switches from within Home Assistant. -If the device name in the QSUSB app ends with `Switch` it will be created as a switch, otherwise as a [light](/components/light.qwikswitch/). +If the device name in the QS Mobile application ends with `Switch` it will be created as a switch, otherwise as a [light](/components/light.qwikswitch/). -They will be automatically discovered from the QSUSB API if the discovery component is enabled. - -For more configuration information see the [QwikSwitch component](/components/qwikswitch/) documentation. +The platform is configured through the [QwikSwitch component](/components/qwikswitch/). From 41f6365e212553756bfdf1e0ba24a9c37de10892 Mon Sep 17 00:00:00 2001 From: rubund Date: Wed, 1 Jun 2016 13:18:46 +0200 Subject: [PATCH 2/9] Added documentation for EnOcean component (#515) * Added documentation for enocean components * More clearly state the limitations of the EnOcean support --- .../binary_sensor.enocean.markdown | 29 ++++++++++++ source/_components/enocean.markdown | 42 ++++++++++++++++++ source/_components/light.enocean.markdown | 33 ++++++++++++++ source/_components/sensor.enocean.markdown | 32 +++++++++++++ source/_components/switch.enocean.markdown | 31 +++++++++++++ source/images/supported_brands/enocean.png | Bin 0 -> 9137 bytes 6 files changed, 167 insertions(+) create mode 100644 source/_components/binary_sensor.enocean.markdown create mode 100644 source/_components/enocean.markdown create mode 100644 source/_components/light.enocean.markdown create mode 100644 source/_components/sensor.enocean.markdown create mode 100644 source/_components/switch.enocean.markdown create mode 100644 source/images/supported_brands/enocean.png diff --git a/source/_components/binary_sensor.enocean.markdown b/source/_components/binary_sensor.enocean.markdown new file mode 100644 index 00000000000..24cdbf89023 --- /dev/null +++ b/source/_components/binary_sensor.enocean.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: "EnOcean Binary Sensor" +description: "Instructions on how to set up EnOcean binary sensors within Home Assistant." +date: 2016-05-25 23:49 +sidebar: true +comments: false +sharing: true +footer: true +logo: enocean.png +ha_category: Binary Sensor +--- + +This can typically be one of those batteryless wall switches. Currently only one type has been tested: Eltako FT55. Other devices will most likely not work without changing the Home-Asisstant code. + + +To use your EnOcean device, you first have to set up your [EnOcean hub](../enocean) and then add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: enocean + id: [0x01,0x90,0x84,0x3C] +``` + +Configuration variables: + +- **id** (*Required*): The ID of the device. This is the 4 bytes long number written on the dimmer. +- **platform** (*Required*): Set to `enocean`. diff --git a/source/_components/enocean.markdown b/source/_components/enocean.markdown new file mode 100644 index 00000000000..ea9fa21df69 --- /dev/null +++ b/source/_components/enocean.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "EnOcean" +description: "Connect EnOcean devices to home-assistant" +date: 2016-05-25 23:39 +sidebar: true +comments: false +sharing: true +footer: true +logo: enocean.png +ha_category: Hub +--- + +The [EnOcean](https://en.wikipedia.org/wiki/EnOcean) standard is supported by many different vendors. There are switches and sensors of many different kinds, and typically they employ energy harvesting to get power such that no batteries are unnecessary. + +The `enocean` component adds support for some of these devices. You will need a controller like the [USB300](https://www.enocean.com/en/enocean_modules/usb-300-oem/) in order for it to work. + +There is currently support for the following device types within Home Assistant: + +- [Binary Sensor](../binary_sensor.enocean) (wall switches) +- [Sensor](../sensor.enocean) (power meters) +- [Light](../light.enocean) (dimmers) +- [Switch](../switch.enocean) + +However, only a few devices have been confirmed to work. These are: + +- Eltako FUD61 dimmer +- Eltako FT55 battery-less wall switch +- Permundo PSC234 (switch and power monitor) + +Other devices will most likely need some changes in the Home-Assistant code in order to work. Support for teaching of devices is also missing at this time. + +# Configuration + +```yaml +# Example configuration.yaml entry +enocean: + device: /dev/ttyUSB0 +``` + +If no device is specified, the default will be **/dev/ttyUSB0** + diff --git a/source/_components/light.enocean.markdown b/source/_components/light.enocean.markdown new file mode 100644 index 00000000000..560500de3e1 --- /dev/null +++ b/source/_components/light.enocean.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "EnOcean Light" +description: "Instructions on how to set up EnOcean lights within Home Assistant." +date: 2016-05-25 23:49 +sidebar: true +comments: false +sharing: true +footer: true +logo: enocean.png +ha_category: Light +--- + +An EnOcean light can take many formes. Currently only one type has been tested: Eltako FUD61 dimmer. + + +To use your EnOcean device, you first have to set up your [EnOcean hub](../enocean) and then add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - name: Living_room + platform: enocean + id: [0x01,0x90,0x84,0x3C] + sender_id: [0xFF,0xC6,0xEA,0x04] +``` + +Configuration variables: + +- **id** (*Required*): The ID of the device. This is the 4 bytes long number written on the dimmer. +- **sender_id** (*Required*): The Sender ID of the device. This is a 4 bytes long number. +- **platform** (*Required*): Set to `enocean`. +- **name** (*Required*): An identifier for the switch diff --git a/source/_components/sensor.enocean.markdown b/source/_components/sensor.enocean.markdown new file mode 100644 index 00000000000..f635a8d2e33 --- /dev/null +++ b/source/_components/sensor.enocean.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "EnOcean Sensor" +description: "Instructions how to integrate TellStick sensors into Home Assistant." +date: 2016-05-26 01:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: enocean.png +ha_category: Sensor +--- + + +The `enocean` sensor platform currently only allows reading out the power measured in a Permundo PSC234 switch. + +To use your EnOcean device, you first have to set up your [EnOcean hub](../enocean) and then add the following to your `configuration.yaml` file: + + +```yaml +# Example configuration.yaml entry +sensor: + - name: Television + platform: enocean + id: [0x01,0x90,0x84,0x3C] +``` + +Configuration variables: + +- **id** (*Required*): The ID of the device. This is a 4 bytes long number. +- **platform** (*Required*): Set to `enocean`. +- **name** (*Required*): An identifier for the switch diff --git a/source/_components/switch.enocean.markdown b/source/_components/switch.enocean.markdown new file mode 100644 index 00000000000..3c6fc5e3467 --- /dev/null +++ b/source/_components/switch.enocean.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "EnOcean Switch" +description: "Instructions on how to set up EnOcean switches within Home Assistant." +date: 2016-05-25 23:49 +sidebar: true +comments: false +sharing: true +footer: true +logo: enocean.png +ha_category: Switch +--- + +An EnOcean switch can take many forms. Currently only one type has been tested: Permundo PSC234 + + +To use your EnOcean device, you first have to set up your [EnOcean hub](../enocean) and then add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + - name: Television + platform: enocean + id: [0x01,0x90,0x84,0x3C] +``` + +Configuration variables: + +- **id** (*Required*): The ID of the device. This is a 4 bytes long number. +- **platform** (*Required*): Set to `enocean`. +- **name** (*Required*): An identifier for the switch diff --git a/source/images/supported_brands/enocean.png b/source/images/supported_brands/enocean.png new file mode 100644 index 0000000000000000000000000000000000000000..61aba3285026905bf0906db0a8342990e661feb7 GIT binary patch literal 9137 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 AYXATM literal 0 HcmV?d00001 From 1d7e6419cabd47f66002ac77c651038fc2804685 Mon Sep 17 00:00:00 2001 From: Greg Dowling Date: Thu, 2 Jun 2016 07:12:21 +0100 Subject: [PATCH 3/9] Add docs for warning config. Fix bug. (#492) --- source/_components/binary_sensor.template.markdown | 3 ++- source/_components/sensor.template.markdown | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/source/_components/binary_sensor.template.markdown b/source/_components/binary_sensor.template.markdown index 03af11a3a0a..3fd245870a7 100644 --- a/source/_components/binary_sensor.template.markdown +++ b/source/_components/binary_sensor.template.markdown @@ -30,6 +30,7 @@ Configuration variables: - **friendly_name** (*Optional*): Name to use in the Frontend. - **sensor_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload. + - **warnings** (*Optional*): Turn off warnings (useful if the sensor is loaded before devices it depends on). ## {% linkable_title Examples %} @@ -44,7 +45,7 @@ sensor: platform: template sensors: furnace_on: - value_template: {{ states.sensor.furnace.state > 2.5 }} + value_template: {% raw %}`{{ states.sensor.furnace.state > 2.5 }}`{% endraw %} friendly_name: 'Furnace Running sensor_class: heat ``` diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 956d276aca9..ca42bcaf90f 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -34,6 +34,7 @@ Configuration variables: - **friendly_name** (*Optional*): Name to use in the Frontend. - **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. - **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload. + - **warnings** (*Optional*): Turn off warnings (useful if the sensor is loaded before devices it depends on). ## {% linkable_title Examples %} @@ -54,9 +55,9 @@ sensor: unit_of_measurement: '°' ``` -### {% linkable_title Multi line example with an if test %} +### {% linkable_title Multi line example with an if test (and warnings disabled)%} -This example shows a multiple line template with and is test. It looks at a sensing switch and shows on/off in the frontend. +This example shows a multiple line template with and if test. It looks at a sensing switch and shows on/off in the frontend. It disables warnings to avoid log messages where the switch it depends on isn't loaded yet. ```yaml sensor: @@ -75,6 +76,7 @@ sensor: failed {%- endif %}{% endraw %} + warnings: Off ``` (please note the blank line to close the multi-line template) From 993e6f6709f0767d40807a789c04bb79f8aa54a1 Mon Sep 17 00:00:00 2001 From: Nolan Gilley Date: Thu, 2 Jun 2016 02:45:19 -0400 Subject: [PATCH 4/9] Flux switch (#523) * flux switch docs * fix indentation --- source/_components/switch.flux.markdown | 47 +++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 source/_components/switch.flux.markdown diff --git a/source/_components/switch.flux.markdown b/source/_components/switch.flux.markdown new file mode 100644 index 00000000000..23b1a645ce7 --- /dev/null +++ b/source/_components/switch.flux.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: "Flux Switch" +description: "Instructions how to have switches call command line commands." +date: 2016-06-01 17:41 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Switch +ha_release: 0.21 +--- + +The Flux switch platform will change the temperature of your lights similar to +the way flux works on your computer, using circadian rhythm. They will be bright +during the day, and gradually fade to a red/orange at night. + +The component will update your lights based on the the time of day. It will only +affect lights that are turned on and listed in the flux configuration. + +During the day (in between `start time` and `sunset time`), it will fade the lights from +the `start_colortemp` to the `sunset_colortemp`. After sunset (between `sunset_time` +and `stop_time`), the lights will fade from the the `sunset_colortemp` to the +`stop_colortemp`. If the lights are still on after the `stop_time` it will continue +to change the light to the `stop_colortemp` until the light is turned off. The fade +effect is created by updating the lights every 30 seconds with a 30 second transition time. + +If you don't wish to have flux update on 30 second intervals, you can leave the +switch turned off and use automation rules that call the service `switch.flux_update` +whenever you want the lights updated. + +Example `configuration.yaml`: +```yaml +switch: + platform: flux + lights: + - light.desk + - light.lamp + name: Fluxer # optional, default Flux + start_time: 7:00 # optional, default sunrise + stop_time: 23:00 # optional, default 22:00 + start_colortemp: 4000 # optional, default 4000 + sunset_colortemp: 3000 # optional, default 3000 + stop_colortemp: 1900 # optional, default 1900 + brightness: 200 # optional, default calculated by RGB_to_xy +``` + From cf01ef35605c7a8cd00a78b0d7fc3e2544088ff7 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 2 Jun 2016 00:01:32 -0700 Subject: [PATCH 5/9] Remove incorrect new blog post instruction from README --- README.markdown | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.markdown b/README.markdown index 4f5f2528c9c..892844c479d 100644 --- a/README.markdown +++ b/README.markdown @@ -6,12 +6,6 @@ This is the source for the [Home-Assistant.io website](https://home-assistant.io Setting up to contribute to documentation and the process for submitting pull requests is [explained here](https://home-assistant.io/developers/website/). -## Create a new blog post - -```bash -$ rake new_post["title"] -``` - ## Site preview ```bash From e0180ddb1a55ed3d7f4ab9930874b40e32722739 Mon Sep 17 00:00:00 2001 From: Jacob Tomlinson Date: Thu, 2 Jun 2016 14:46:28 +0100 Subject: [PATCH 6/9] Added rfxtrx rollershutter (#525) * Added rfxtrx rollershutter * Updated date and target release --- .../_components/rollershutter.rfxtrx.markdown | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 source/_components/rollershutter.rfxtrx.markdown diff --git a/source/_components/rollershutter.rfxtrx.markdown b/source/_components/rollershutter.rfxtrx.markdown new file mode 100644 index 00000000000..7a1160fa072 --- /dev/null +++ b/source/_components/rollershutter.rfxtrx.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "RFXtrx Rollershutter" +description: "Instructions how to integrate RFXtrx roller shutters into Home Assistant." +date: 2016-06-02 14:20 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Rollershutter +ha_release: 0.21 +--- + +The `rfxtrx` platform support Siemens/LightwaveRF roller shutters that communicate in the frequency range of 433.92 MHz. + +First you have to set up your [rfxtrx hub.](/components/rfxtrx/) +The easiest way to find your roller shutters is to add this to your `configuration.yaml`: + +```yaml +rollershutter: + platform: rfxtrx + automatic_add: True +``` + +Launch your homeassistant and go the website. +Push your remote and your device should be added. + +Once added it will show an id (e.g `0b11000102ef9f210010f70`) and you can verify that it works from the frontend. +Then you should update your configuration to: +```yaml +rollershutter: + platform: rfxtrx + devices: + 0b11000102ef9f210010f70: + name: device_name +``` + +Example configuration: +```yaml +# Example configuration.yaml entry +rollershutter: + platform: rfxtrx + automatic_add: False + signal_repetitions: 2 + devices: + 0b1100ce3213c7f210010f70: + name: Bedroom Shutter + 0b11000a02ef2gf210010f50: + name: Bathroom Shutter + 0b1111e003af16aa10000060: + name: Lounge Shutter +``` + +Configuration variables: + +- **devices** (*Required*): A list of devices with their name to use in the frontend. +- **automatic_add** (*Optional*): To enable the automatic addition of new roller shutters. +- **signal_repetitions** *Optional*: Because the rxftrx device sends its actions via radio and from most receivers it's impossible to know if the signal was received or not. Therefore you can configure the roller shutter to try to send each signal repeatedly. +- **fire_event** *Optional*: Fires an event even if the state is the same as before. Can be used for automations. From 56ef0acef8e3b4c988e4ddb177b8919c43fffdb1 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 3 Jun 2016 14:47:16 +0200 Subject: [PATCH 7/9] Add azimuth --- source/_components/sun.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/sun.markdown b/source/_components/sun.markdown index 08bcf3e25a8..8a9ecdc6e0e 100644 --- a/source/_components/sun.markdown +++ b/source/_components/sun.markdown @@ -35,7 +35,7 @@ Configuration variables: ### {% linkable_title Implementation Details %} -The suns event listener will call the service when the sun rises or sets with an offset. +The sun's event listener will call the service when the sun rises or sets with an offset. The sun event need to have the type 'sun', which service to call, which event (sunset or sunrise) and the offset. @@ -62,3 +62,4 @@ The sun event need to have the type 'sun', which service to call, which event (s | `next_rising` | Date and time of the next sun rising (in UTC). | `next_setting` | Date and time of the next sun setting (in UTC). | `elevation` | Solar elevation. This is the angle between the sun and the horizon. Negative values mean the sun is below the horizon. +| `azimuth` | Solar azimuth. The angle is shown clockwise from north. From 25242530e47748cf5f113aa6ef9424973df5be51 Mon Sep 17 00:00:00 2001 From: Olimpiu Rob Date: Fri, 3 Jun 2016 16:51:29 +0300 Subject: [PATCH 8/9] Added Osram Lightify documentation (#518) --- .../_components/light.osramlightify.markdown | 25 ++++++++++++++++++ .../images/supported_brands/osramlightify.png | Bin 0 -> 29742 bytes 2 files changed, 25 insertions(+) create mode 100644 source/_components/light.osramlightify.markdown create mode 100644 source/images/supported_brands/osramlightify.png diff --git a/source/_components/light.osramlightify.markdown b/source/_components/light.osramlightify.markdown new file mode 100644 index 00000000000..0ac64a1f923 --- /dev/null +++ b/source/_components/light.osramlightify.markdown @@ -0,0 +1,25 @@ +--- +layout: page +title: "Osram Lightify" +description: "Instructions how to integrate Osram Lightify into Home Assistant." +date: 2016-05-29 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: osramlightify.png +ha_category: Light +--- + +The `osramlightify` platform allows you to integrate your [Osram Lightify](http://www.osram.com/osram_com/products/led-technology/lightify/index.jsp) into Home Assistant. + +```yaml +# Example configuration.yaml entry +light: + platform: osramlightify + host: 192.168.0.50 +``` +Configuration variables: + +- **host** (*Required*): IP address of the Osram Lightify bridge, eg. `192.168.1.50` + diff --git a/source/images/supported_brands/osramlightify.png b/source/images/supported_brands/osramlightify.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a66bed6376f8c10306befffec3f3c146e56b59 GIT binary patch literal 29742 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 M07*qoM6N<$f_y!TjsO4v literal 0 HcmV?d00001 From 1102f5ab3cb22c6e4c8ae3f0119b70303f636ff7 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 7 Jun 2016 19:39:43 +0200 Subject: [PATCH 9/9] Add contributors --- source/developers/credits.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown index 4558fd9b04e..dd9c9acaae3 100644 --- a/source/developers/credits.markdown +++ b/source/developers/credits.markdown @@ -22,10 +22,12 @@ This page contains a list of people who have contributed in one way or another t - [Adrien Brault](https://github.com/adrienbrault) - [Alex Harvey](https://github.com/infamy) - [Allan Glen](https://github.com/allanglen) +- [amorsillo](https://github.com/fignuts) - [Andrew](https://github.com/aoakeson) - [Andrew LeCody](https://github.com/aceat64) - [Andy Loughran](https://github.com/andylockran) - [andythigpen](https://github.com/andythigpen) +- [Ardi Mehist](https://github.com/omgapuppy) - [Arthur Leonard Andersen](https://github.com/leoc) - [Austin](https://github.com/trainman419) - [Azelphur](https://github.com/Azelphur) @@ -53,6 +55,7 @@ This page contains a list of people who have contributed in one way or another t - [Eric Rolf](https://github.com/xrolfex) - [ettisan](https://github.com/ettisan) - [Fabian Affolter](https://github.com/fabaff) +- [Felix](https://github.com/xifle) - [Finbarr Brady](https://github.com/fbradyirl) - [Flavio Castelli](https://github.com/flavio) - [Florian Holzapfel](https://github.com/florianholzapfel) @@ -112,6 +115,7 @@ This page contains a list of people who have contributed in one way or another t - [Moon Shot](https://github.com/moonshot) - [Nick Touran](https://github.com/partofthething) - [Nick Waring](https://github.com/nickwaring) +- [Nils Uliczka](https://github.com/darookee) - [Nolan Gilley](https://github.com/nkgilley) - [Oliver van Porten](https://github.com/mcdeck) - [Øystein Hansen](https://github.com/oeysteinhansen) @@ -122,9 +126,12 @@ This page contains a list of people who have contributed in one way or another t - [Rev Michael Greb](https://github.com/mikegrb) - [rhooper](https://github.com/rhooper) - [Richard Arends](https://github.com/Mosibi) +- [Richard Cox](https://github.com/khabi) - [rkabadi](https://github.com/rkabadi) - [Robbie Trencheny](https://github.com/robbiet480) +- [Rob Olimpiu](https://github.com/olimpiurob) - [Rowan Hine](https://github.com/GreenTurtwig) +- [rubund](https://github.com/rubund) - [Ryan Kraus](https://github.com/rmkraus) - [Ryan Turner](https://github.com/ryanturner) - [sander76](https://github.com/sander76) @@ -142,8 +149,10 @@ This page contains a list of people who have contributed in one way or another t - [Tom Duijf](https://github.com/tomduijf) - [trollkarlen](https://github.com/trollkarlen) - [vitorespindola](https://github.com/vitorespindola) +- [Warren Konkel](https://github.com/wkonkel) - [William Scanlon](https://github.com/w1ll1am23) - [wind-rider](https://github.com/wind-rider) +- [wokar](https://github.com/wokar) - [Zac Mrowicki](https://github.com/zmrow) This page is irregularly updated. As a base we use the Github [contributors overview](https://github.com/home-assistant/home-assistant/graphs/contributors) of the Home Assistant git repository and the [overview](https://github.com/home-assistant/home-assistant.io/graphs/contributors) for [home-assistant.io](https://home-assistant.io). If you think that you are missing, please let us know or add yourself.