diff --git a/_config.yml b/_config.yml
index 38d26c045e..45147f16ca 100644
--- a/_config.yml
+++ b/_config.yml
@@ -139,9 +139,9 @@ social:
# Home Assistant release details
current_major_version: 0
-current_minor_version: 67
+current_minor_version: 69
current_patch_version: 0
-date_released: 2018-04-13
+date_released: 2018-05-11
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.
diff --git a/plugins/configuration.rb b/plugins/configuration.rb
index 52bcf87fb9..30a5196d72 100644
--- a/plugins/configuration.rb
+++ b/plugins/configuration.rb
@@ -2,7 +2,7 @@ module Jekyll
class ConfigurationBlock < Liquid::Block
TYPE_LINKS = {
'action' => '/docs/scripts/',
- 'device_class' => '/components/%{component}/#device_class',
+ 'device_class' => '/components/%{component}/#device-class',
'template' => '/docs/configuration/templating/',
}
diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss
index 2a9e1fb4eb..c64bdb7da2 100644
--- a/sass/custom/_paulus.scss
+++ b/sass/custom/_paulus.scss
@@ -4,6 +4,10 @@ $primary-color: #049cdb;
.site-header {
position: relative;
+
+ .site-title {
+ font-weight: normal;
+ }
}
.search-container {
@@ -377,18 +381,26 @@ p.note {
}
.copyright {
- text-align: center;
+ text-align: left;
- i {
- font-size: 3em;
- margin-right: 8px;
- position: relative;
- top: -5px;
+ .company {
+ .title {
+ font-size: 1.5em;
+ }
+
+ img {
+ vertical-align: middle;
+ }
+
+ i {
+ font-size: 2em;
+ padding: 0 5px;
+ }
}
- .credit {
- text-align: left;
- display: inline-block;
- font-size: .8em;
+
+ ul {
+ margin: 0;
+ list-style: none;
}
}
diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown
index c0cbf10bbe..0ac8d01994 100644
--- a/source/_addons/lets_encrypt.markdown
+++ b/source/_addons/lets_encrypt.markdown
@@ -2,7 +2,7 @@
layout: page
title: "Let's Encrypt"
description: "Automatically manage your SSL certificate using Let's Encrypt."
-date: 2017-04-30 13:28
+date: 2018-04-18 10:55
sidebar: true
comments: false
sharing: true
@@ -41,4 +41,24 @@ http:
If you use another port such as `8123` or an SSL proxy, change the port number.
+## {% linkable_title Enabling auto-renewals %}
+
+Out of the box, the add-on will not automatically renew your certificate. In fact, it only starts, tries to get/renew your certificte, and then stops. It's up to you to manually start it again whenever your certificate comes close to expiry.
+
+However, you can automate this process using Home Assistant.
+
+Use this in your `automations.yaml` to attempt certificate renewal each day at midnight:
+
+```yaml
+- id: letsencrypt-renewal
+ alias: "Let's Encrypt Renewal"
+ trigger:
+ - platform: time
+ at: '00:00:00'
+ action:
+ - service: hassio.addon_restart
+ data:
+ addon: core_letsencrypt
+```
+
[DuckDNS add-on]: /addons/duckdns/
diff --git a/source/_addons/snips.markdown b/source/_addons/snips.markdown
index 55a1dca239..851afd8e7d 100644
--- a/source/_addons/snips.markdown
+++ b/source/_addons/snips.markdown
@@ -2,14 +2,14 @@
layout: page
title: "Snips.ai"
description: "Enhance your Hass.io installation with a local voice assistant."
-date: 2018-03-22 13:28
+date: 2018-05-02 13:28
sidebar: true
comments: false
sharing: true
footer: true
---
-[Snips.ai] is an AI-powered voice assistant that runs on the Raspberry Pi 3 and x86 platforms. It runs on-device and is Private by Design.
+[Snips.ai](https://snips.ai/) is an AI-powered voice assistant that runs on the Raspberry Pi 3 and x86 platforms. It runs on-device and is Private by Design.
The Snips add-on depends on the Mosquitto add on to bridge to Home Assistant, so make sure that is installed.
@@ -17,7 +17,7 @@ HomeAssistant comes with certain Intents builtin to handle common tasks. A compl
The Snips addon by default comes with an assistant that allows you to turn on lights or switches, open covers, or add and list items to a shopping list if that component is enabled.
-If using a USB microphone and speakers plugged into the raspberry pi output, Snips will work without any change to the configuration. Trying saying things like:
+If using a USB microphone and speakers plugged into the Raspberry Pi output, Snips will work without any change to the configuration. Trying saying things like:
```
Turn on kitchen light
@@ -25,42 +25,16 @@ Open garage door
What is on my shopping list
```
-To get started creating your own configuration, follow [their tutorial](https://github.com/snipsco/snips-platform-documentation/wiki/2.-Create-an-assistant-using-an-existing-bundle) to create an assistant and download the training data. You can add the HomeAssistant bundle to your assistant to enable the built-in intents, and add or create your own intents to do more complex tasks.
+To get started creating your own configuration, follow [their tutorial](https://snips.gitbook.io/documentation/console) to create an assistant and download the training data. You can also add the HomeAssistant Skill to your assistant to enable the built-in intents, and add or create your own intents to do more complex tasks.
-Now install and activate the [Samba] add-on so you can upload your training data. Connect to the "share" Samba share and copy your training data over. Name the file `assistant.zip`.
+Now install and activate the [Samba](/addons/samba/) add-on so you can upload your training data. Connect to the "share" Samba share and copy your assistant over. Name the file `assistant.zip` or whatever you have configured in the configuration options.
-Now it's time to start Snips for the first time. When the Snips add-on starts, it will output your audio devices. If you are using a USB mic and the raspberry pi output, you won't need to change anything:
+Now it's time to start Snips for the first time. You can configure the microphone and sound card using the Add-on interface. Now start the add-on.
-```text
-**** List of PLAYBACK Hardware Devices ****
-card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
- Subdevices: 8/8
- Subdevice #0: subdevice #0
- Subdevice #1: subdevice #1
- Subdevice #2: subdevice #2
- Subdevice #3: subdevice #3
- Subdevice #4: subdevice #4
- Subdevice #5: subdevice #5
- Subdevice #6: subdevice #6
- Subdevice #7: subdevice #7
-card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
- Subdevices: 1/1
- Subdevice #0: subdevice #0
-```
-
-You need to use this information to point the add-on at the right speakers and microphone. The information describes different cards and devices. On a Raspberry Pi 3, card 0 - device 0 is the built-in headset port, card 0 - device 1 is the HDMI port. In the example above, the USB microphone showed up as card 1 - device 0.
-
-Find the microphone and speakers that you want to use and note down their device and card number. We will need that to configure the add-on options `mic` (microphone to use) and `speaker` (speaker to use). The format for these options is `,`. Change the configuration options and click save.
-
-Now start the add-on.
-
-### Add-On configuration
+### {% linkable_title Add-On configuration %}
```json
{
- "mic": "1,0",
- "speaker": "1,0",
- "assistant": "assistant.zip",
"mqtt_bridge": {
"active": true,
"host": "172.17.0.1",
@@ -68,23 +42,76 @@ Now start the add-on.
"user": "",
"password": ""
},
+ "assistant": "assistant.zip",
+ "language": "en",
+ "custom_tts": false,
+ "tts_platform": "amazon_polly"
}
```
Configuration variables:
-- **mqtt_bridge** : Snips uses MQTT to communicate and defaults to their own broker. Use this config option to bridge their broker to your the Mosquitto add-on.
-- **mic**: This is the hardware address of your microphone. Look at the Snips output if you are using different hardware.
+- **mqtt_bridge**: Snips uses MQTT to communicate and defaults to their own broker. Use this config option to bridge their broker to your the Mosquitto add-on.
+- **assistant**: The name of your custom assistant in `/share`. If no assistant is found then a default assistant will be used.
+- **language**: Language. This is used to select the default custom assistant, Currently `en`, `de` and `fr` are supported.
+- **custom_tts**: Whether to use a TTS provider from Home Assistant for a variety of voices.
+- **tts_platform**: Which TTS platform to use.
### {% linkable_title Home Assistant configuration %}
-Use the Home Assistant [Snips.ai component][comp] to integrate the add-on into Home Assistant.
+A simple configuration just requires this. Consult [Snips.ai component](/components/snips/) for more options.
```yaml
snips:
```
-[Snips.ai]: https://snips.ai/
+### {% linkable_title Home Assistant configuration %}
+
+There is an active [discord](https://discordapp.com/invite/3939Kqx) channel for further support.
+
+### {% linkable_title Examples %}
+
+So now you can turn lights on and off, let's check the weather. Log on to the [console](https://console.snips.ai/). If this is your first time, create a new assistant and add the Home Assistant skill, along with the Weather skill by snips. Download your assistant manually and copy it to the `/share` folder on your HassIO installation using the Samba addon.
+
+Next create a weather sensor, e.g., one for (Dark Sky)[/components/sensor.darksky/] and put the `api_key` in your `secrets.yaml` file.
+
+```yaml
+- platform: darksky
+ name: "Dark Sky Weather"
+ api_key: !secret dark_sky_key
+ update_interval:
+ minutes: 10
+ monitored_conditions:
+ - summary
+ - hourly_summary
+ - temperature
+ - temperature_max
+ - temperature_min
+```
+Next add this to your `configuration.yaml` file to reference a new `intent_script` component. This is a good practice to [split your configuration files](/docs/configuration/splitting_configuration/) up.
+
+```yaml
+intent_script: !include intent_script.yaml
+```
+
+Finally, create this `intent_script.yaml` file in your configuration directory.
+
+{% raw %}
+```yaml
+searchWeatherForecast:
+ speech:
+ type: plain
+ text: >
+ The weather is currently
+ {{ states('sensor.dark_sky_weather_temperature') | round(0) }}
+ degrees outside and {{ states('sensor.dark_sky_weather_summary') }}.
+ The high today will be
+ {{ states('sensor.dark_sky_weather_daily_high_temperature') | round(0)}}
+ and {{ states('sensor.dark_sky_weather_hourly_summary') }}
+```
+{% endraw %}
+
+Now just restart HassIO and ask it what the weather is like.
+
[their tutorial]: https://github.com/snipsco/snips-platform-documentation/wiki/2.-Create-an-assistant-using-an-existing-bundle
-[Samba]: /addons/samba/
-[comp]: /components/snips/
+
diff --git a/source/_components/alarm_control_panel.alarmdecoder.markdown b/source/_components/alarm_control_panel.alarmdecoder.markdown
index 476773df3e..98810aaa2a 100644
--- a/source/_components/alarm_control_panel.alarmdecoder.markdown
+++ b/source/_components/alarm_control_panel.alarmdecoder.markdown
@@ -27,7 +27,9 @@ The Alarm Decoder component gives you access to several services for you to cont
- `alarm_disarm`: Disarms the alarm from any state. Also clears a `check_zone` flag after an alarm was triggered.
- `alarmdecoder_alarm_toggle_chime`: Toggles the alarm's chime state.
-**Note**: `alarm_arm_custom_bypass` and `alarm_trigger`, while available in the services list in Home Assistant, are not currently implemented in the Alarm Decoder component.
+
+`alarm_arm_custom_bypass` and `alarm_trigger`, while available in the services list in Home Assistant, are not currently implemented in the Alarm Decoder platform.
+
### {% linkable_title Attributes %}
diff --git a/source/_components/binary_sensor.hive.markdown b/source/_components/binary_sensor.hive.markdown
index ef695f4601..49486d62d7 100644
--- a/source/_components/binary_sensor.hive.markdown
+++ b/source/_components/binary_sensor.hive.markdown
@@ -14,11 +14,12 @@ ha_iot_class: "Cloud Polling"
---
-The 'hive' binary sensor component integrates your Hive sensors into Home Assistant.
+The `hive` binary sensor component integrates your Hive sensors into Home Assistant.
-The Hive sensor component supports the following Hive products:
-- **Hive Window or Door Sensor**
-- **Hive Motion Sensor**
+The platform supports the following Hive products:
+
+- Hive Window or Door Sensor
+- Hive Motion Sensor
diff --git a/source/_components/binary_sensor.markdown b/source/_components/binary_sensor.markdown
index 588b4df27f..fe8f4a5107 100644
--- a/source/_components/binary_sensor.markdown
+++ b/source/_components/binary_sensor.markdown
@@ -11,6 +11,8 @@ footer: true
Binary sensors gather information about the state of devices which have a "digital" return value (either 1 or 0). These can be switches, contacts, pins, etc. These sensors only have two states: **0/off/low/closed/false** and **1/on/high/open/true**. Knowing that there are only two states allows Home Assistant to represent these sensors in a better way in the frontend according to their functionality.
+### {% linkable_title Device Class %}
+
The way these sensors are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors:
- **None**: Generic on/off. This is the default and doesn't need to be set.
@@ -39,3 +41,8 @@ The way these sensors are displayed in the frontend can be modified in the [cust
- **window**: `On` means open, `Off` means closed
For analog sensors please check the [component overview](/components/#sensor).
+
+
+
+Example of various device classes icons in `On` and `Off` state.
+
diff --git a/source/_components/binary_sensor.modbus.markdown b/source/_components/binary_sensor.modbus.markdown
index 55450b908e..62f5765dd3 100644
--- a/source/_components/binary_sensor.modbus.markdown
+++ b/source/_components/binary_sensor.modbus.markdown
@@ -15,10 +15,12 @@ ha_iot_class: "Local Push"
The `modbus` binary sensor allows you to gather data from [Modbus](http://www.modbus.org/) coils.
+## {% linkable_title Configuration %}
+
To use your Modbus binary sensors in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
binary_sensor:
- platform: modbus
coils:
@@ -39,7 +41,7 @@ Configuration variables:
It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation.
-### {% linkable_title Full example %}
+## {% linkable_title Full example %}
Example a sensor with a 10 seconds scan interval:
diff --git a/source/_components/binary_sensor.mqtt.markdown b/source/_components/binary_sensor.mqtt.markdown
index 1c6a6d87ef..92ac12ccb0 100644
--- a/source/_components/binary_sensor.mqtt.markdown
+++ b/source/_components/binary_sensor.mqtt.markdown
@@ -133,7 +133,7 @@ The configuration will look like the example below:
{% raw %}
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
binary_sensor:
- platform: mqtt
name: Bathroom
diff --git a/source/_components/binary_sensor.pilight.markdown b/source/_components/binary_sensor.pilight.markdown
index 7d2ccf976b..ee7a729196 100644
--- a/source/_components/binary_sensor.pilight.markdown
+++ b/source/_components/binary_sensor.pilight.markdown
@@ -15,10 +15,12 @@ ha_iot_class: "Local Polling"
The `pilight` binary sensor platform implement the [pilight hub](/components/pilight/) binary sensor functionality. Two type of Pilight binary sensor configuration available. A normal sensor which send the on and off state cyclical and a trigger sensor which send only a trigger when an event happened (for example lots of cheap PIR motion detector).
+
+
To enable a Pilight binary sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
binary_sensor:
- platform: pilight
variable: 'state'
diff --git a/source/_components/binary_sensor.qwikswitch.markdown b/source/_components/binary_sensor.qwikswitch.markdown
new file mode 100644
index 0000000000..e3fd446a3b
--- /dev/null
+++ b/source/_components/binary_sensor.qwikswitch.markdown
@@ -0,0 +1,18 @@
+---
+layout: page
+title: "QwikSwitch Binary Sensor"
+description: "Instructions on how to integrate Qwikswitch dimmers and relays as sensors into Home Assistant."
+date: 2016-05-04 00:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: qwikswitch.png
+ha_category: Sensor
+ha_iot_class: "Local Push"
+ha_release: "0.68"
+---
+
+The `qwikswitch` binary_sensor platform allows you to use your [QwikSwitch](http://www.qwikswitch.co.za/) sensors within Home Assistant.
+
+The platform is configured through the [QwikSwitch component](/components/qwikswitch/).
diff --git a/source/_components/binary_sensor.random.markdown b/source/_components/binary_sensor.random.markdown
index d8a0129120..b1208681a8 100644
--- a/source/_components/binary_sensor.random.markdown
+++ b/source/_components/binary_sensor.random.markdown
@@ -16,6 +16,8 @@ ha_release: 0.57
The `random` binary sensor platform is creating random states (`True`, 1, `on` or `False`, 0, `off`). This can be useful if you want to test automation rules. It generates a new state every time it is polled.
+## {% linkable_title Configuration %}
+
To enable the random binary sensor, add the following lines to your `configuration.yaml`:
```yaml
diff --git a/source/_components/binary_sensor.workday.markdown b/source/_components/binary_sensor.workday.markdown
index b63d8f778d..1ba1f8bd8c 100644
--- a/source/_components/binary_sensor.workday.markdown
+++ b/source/_components/binary_sensor.workday.markdown
@@ -26,7 +26,7 @@ To enable the `workday` sensor in your installation, add the following to your `
binary_sensor:
- platform: workday
country: DE
- workdays: [ mon, wed, fri ]
+ workdays: [mon, wed, fri]
```
Configuration variables:
diff --git a/source/_components/bmw_connected_drive.markdown b/source/_components/bmw_connected_drive.markdown
index 52d223a9c2..94f493ff24 100644
--- a/source/_components/bmw_connected_drive.markdown
+++ b/source/_components/bmw_connected_drive.markdown
@@ -12,7 +12,7 @@ ha_category: Hub
ha_release: 0.64
---
-This component lets you retrieve data on your BMW vehicle from the BMW Connected Drive portal. You need to have a working BMW Connected Drive account and a Connected Drive enabled vehicle for this to work.
+This component lets you retrieve data on your BMW vehicle from the BMW Connected Drive portal. You need to have a working BMW Connected Drive account, and a Connected Drive enabled vehicle for this to work.
For compatibility with your BMW vehicle check the [bimmer_connected page](https://github.com/m1n3rva/bimmer_connected) on github.
@@ -52,6 +52,38 @@ bmw_connected_drive:
type: string
{% endconfiguration %}
+## {% linkable_title Services %}
+
+The `bmw_connected_drive` component offers several services. In case you need to provide the vehicle identification number (VIN) as a parameter, you can see the VIN in the attributes of the device tracker for the vehicle. The VIN is a 17 digit alphanumeric string, e.g., `WBANXXXXXX1234567`.
+
+Using these services will impact the state of your vehicle. So use these services with care!
+
+### {% linkable_title Locking and unlocking %}
+
+The vehicle can be locked and unlocked via the lock component that is created automatically for each vehicle. Before invoking these services, make sure it's safe to lock/unlock the vehicle in the current situation.
+
+### {% linkable_title Air condition %}
+
+The air condition of the vehicle can be activated with the service `bmw_connected_drive.activate_air_conditioning`.
+
+What exactly is started here depends on the type of vehicle. It might range from just ventilation over auxiliary heating to real air conditioning. If your vehicle is equipped with auxiliary heating, only trigger this service if the vehicle is parked in a location where it is safe to use it (e.g., not in an underground parking or closed garage).
+
+The vehicle is identified via the parameter `vin`.
+
+### {% linkable_title Sound the horn %}
+
+The service `bmw_connected_drive.sound_horn` sounds the horn of the vehicle. Use this feature responsibly, as it might annoy your neighbors. The vehicle is identified via the parameter `vin`.
+
+### {% linkable_title Flash the lights %}
+
+The service `bmw_connected_drive.light_flash' flashes the lights of the vehicle. The vehicle is identified via the parameter `vin`.
+
+### {% linkable_title Update the state %}
+
+The service `bmw_connected_drive.update_state`fetches the last state of the vehicles of all your accounts from the BMW server. This does *not* trigger an update from the vehicle; it gets the data from the BMW servers. So this service does *not* interact with your vehicles.
+
+This service does not require any attributes.
+
## {% linkable_title Disclaimer %}
This software is not affiliated with or endorsed by BMW Group.
diff --git a/source/_components/calendar.google.markdown b/source/_components/calendar.google.markdown
index d046396835..9825c5f9cc 100644
--- a/source/_components/calendar.google.markdown
+++ b/source/_components/calendar.google.markdown
@@ -16,7 +16,7 @@ ha_release: 0.33
The `google` calendar platform allows you to connect to your [Google Calendars](https://calendar.google.com) and generate binary sensors. The sensors created can trigger based on any event on the calendar or only for matching events. When you first setup this component it will generate a new configuration file `google_calendars.yaml` that will contain information about all of the calendars you can see.
-### {% linkable_title Prerequisites %}
+## {% linkable_title Prerequisites %}
Generate a Client ID and Client Secret on [Google Developers Console](https://console.developers.google.com/start/api?id=calendar).
@@ -30,7 +30,7 @@ Generate a Client ID and Client Secret on [Google Developers Console](https://co
1. Save the client ID and secret as you will need to put these in your `configuration.yaml` file.
1. Click on "Library", search for "Google Calendar API" and enable it.
-### {% linkable_title Basic Setup %}
+## {% linkable_title Configuration %}
To integrate Google Calendar in Home Assistant, add the following section to your `configuration.yaml` file:
@@ -61,7 +61,7 @@ The next steps will require you to have Home Assistant running.
After you have it running complete the Google authentication that pops up. It will give you a URL and a code to enter. This will grant your Home Assistant service access to all the Google Calendars that the account you authenticate with can read. This is a Read-Only view of these calendars.
-### {% linkable_title Calendar Configuration %}
+## {% linkable_title Calendar Configuration %}
Editing the `google_calendars.yaml` file.
@@ -95,7 +95,8 @@ Variables:
- **track**: (*Required*): Should we create a sensor `True` or ignore it `False`?
- **search**: (*Optional*): If set will only trigger for matched events.
- **offset**: (*Optional*): A set of characters that precede a number in the event title for designating a pre-trigger state change on the sensor. (Default: `!!`)
-
+ - **ignore_availablilty**: (*Optional*): Should we respect `free`/`busy` flags? (Defaults to `true`)
+
From this we will end up with the binary sensors `calendar.test_unimportant` and `calendar.test_important` which will toggle themselves on/off based on events on the same calendar that match the search value set for each. You'll also have a sensor `calendar.test_everything` that will not filter events out and always show the next event available.
But what if you only wanted it to toggle based on all events? Just leave out the *search* parameter.
diff --git a/source/_components/calendar.todoist.markdown b/source/_components/calendar.todoist.markdown
index d3ad45c8c4..c416ddb50d 100644
--- a/source/_components/calendar.todoist.markdown
+++ b/source/_components/calendar.todoist.markdown
@@ -111,7 +111,7 @@ Home Assistant does its best to determine what task in each project is "most" im
Todoist also comes with access to a service, `calendar.todoist_new_task`. This service can be used to create a new Todoist task. You can specify labels and a project, or you can leave them blank, and the task will go to your "Inbox" project.
-Here's an example JSON payload:
+Here are two example JSON payloads resulting in the same task:
```json
{
@@ -123,6 +123,17 @@ Here's an example JSON payload:
}
```
+```json
+{
+ "content": "Pick up the mail",
+ "project": "Errands",
+ "labels":"Homework,School",
+ "priority":3,
+ "due_date_string":"tomorrow at 14:00",
+ "due_date_lang":"en"
+}
+```
+
- **content** (*Required*): The name of the task you want to create.
- **project** (*Optional*): The project to put the task in.
@@ -131,6 +142,11 @@ Here's an example JSON payload:
- **priority** (*Optional*): The priority of the task, from 1-4. Again, 1 means least important, and 4 means most important.
-- **due_date** (*Optional*): When the task should be due, in either YYYY-MM-DD format or YYYY-MM-DD HH:MM format.
+- **due_date_string** (*Optional*): When the task should be due, in [natural language](https://support.todoist.com/hc/en-us/articles/205325931-Dates-and-Times). Mutually exclusive with `due_date`
+
+- **due_date_lang** (*Optional*): When `due_date_string` is set, it is posisble to set the language.
+ Valid languages are: `en`, `da`, `pl`, `zh`, `ko`, `de`, `pt`, `ja`, `it`, `fr`, `sv`, `ru`, `es`, `nl`
+
+- **due_date** (*Optional*): When the task should be due, in either YYYY-MM-DD format or YYYY-MM-DD HH:MM format. Mutually exclusive with `due_date_string`.
Note that there's (currently) no way to mark tasks as done through Home Assistant; task names do not necessarily have to be unique, so you could find yourself in a situation where you close the wrong task.
diff --git a/source/_components/camera.local_file.markdown b/source/_components/camera.local_file.markdown
index 8175ee35db..b2b953041d 100644
--- a/source/_components/camera.local_file.markdown
+++ b/source/_components/camera.local_file.markdown
@@ -1,7 +1,7 @@
---
layout: page
title: "Local File"
-description: "Instructions on how to use Local File as a Camera within Home Assistant."
+description: "Instructions how to use Local File as a Camera within Home Assistant."
date: 2016-06-12 17:00
sidebar: true
comments: false
@@ -13,9 +13,9 @@ ha_iot_class: "Local Polling"
ha_release: 0.22
---
-The `local_file` camera platform allows you to integrate any readable image file from disk into Home Assistant as a camera. If the image is updated on the file system the image displayed in Home Assistant will also be updated.
+The `local_file` camera platform allows you to integrate an image file from disk into Home Assistant as a camera. If the image is updated on the file system the image displayed in Home Assistant will also be updated. The service `local_file_update_file_path` can be used to update the image using an automation.
-This can for example be used with various camera platforms that save a temporary images locally. It can also be used to display a graph that you render periodically and will then be displayed in Home Assistant.
+The `local_file` camera can for example be used with various camera platforms that save a temporary images locally. It can also be used to display a graph that you render periodically and will then be displayed in Home Assistant.
To enable this camera in your installation, add the following to your `configuration.yaml` file:
@@ -31,7 +31,11 @@ Configuration variables:
- **file_path** (*Required*): File to serve as the camera.
- **name** (*Optional*): Name of the camera
-
-The given `file_path` must be an existing file because the camera platform setup make a readable check on it.
-
+### {% linkable_title Service `camera.local_file_update_file_path` %}
+Use this service to change the file displayed by the camera.
+
+| Service data attribute | Description |
+| -----------------------| ----------- |
+| `entity_id` | String of the `entity_id` of the camera to update. |
+| `file_path` | The full path to the new image file to be displayed. |
diff --git a/source/_components/climate.fritzbox.markdown b/source/_components/climate.fritzbox.markdown
new file mode 100644
index 0000000000..65975ca77c
--- /dev/null
+++ b/source/_components/climate.fritzbox.markdown
@@ -0,0 +1,28 @@
+---
+layout: page
+title: "Fritzbox Thermostat"
+description: "Instructions on how to integrate the AVM Fritzbox thermostat."
+date: 2017-11-12 17:10
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: avm.png
+ha_category: Climate
+ha_release: 0.68
+ha_iot_class: "Local Polling"
+---
+
+
+To get AVM fritzbox thermostat follow the instructions for the general [Fritzbox](/components/fritzbox/).
+
+
+### {% linkable_title Attributes %}
+
+The are several attributes that can be useful for automations and templates.
+
+| Attribute | Description |
+| --------- | ----------- |
+| `device_locked` | The state of the key lock at the device.
+| `locked` | The state of the lock for configuring the device via the app or the Fritzbox web interface.
+| `low_battery` | The low battery state indication.
diff --git a/source/_components/climate.hive.markdown b/source/_components/climate.hive.markdown
index dd3fd41ca5..12f4688553 100644
--- a/source/_components/climate.hive.markdown
+++ b/source/_components/climate.hive.markdown
@@ -14,13 +14,15 @@ ha_iot_class: "Cloud Polling"
---
-The 'hive' climate component integrates your Hive thermostat and hot water into Home Assistant, enabling control of setting the **mode** and setting the **target temperature**.
+The `hive` climate platform integrates your Hive thermostat and hot water into Home Assistant, enabling control of setting the **mode** and setting the **target temperature**.
+
A short boost for Hive Heating or Hive Hot water can be set by using the **Aux Heat** function, this will turn on the boost feature for Hive Heating or Hive Hot water for 30 minutes at 0.5 degrees higher than the current temperature.
-The Hive climate component supports the following Hive products:
-- **Hive Active Heating**
-- **Hive Multizone**
-- **Hot water control**
+The platform supports the following Hive products:
+
+- Hive Active Heating
+- Hive Multizone
+- Hot water control
diff --git a/source/_components/climate.modbus.markdown b/source/_components/climate.modbus.markdown
new file mode 100644
index 0000000000..eeb376ef8e
--- /dev/null
+++ b/source/_components/climate.modbus.markdown
@@ -0,0 +1,71 @@
+---
+layout: page
+title: "Modbus"
+description: "Instructions how to integrate a Modbus thermostat within Home Assistant."
+date: 2018-01-29 9:35
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: modbus.png
+ha_category: Thermostat
+ha_release: 0.68
+ha_iot_class: "Local Polling"
+---
+
+
+The `modbus` thermostat allows you to use a sensor value (current temperature) and target value (target temperature) from [Modbus](http://www.modbus.org/) registers.
+
+## {% linkable_title Configuration %}
+
+To use your Modbus thermostat in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+climate:
+ - platform: modbus
+ name: Watlow F4T
+ slave: 1
+ target_temp_register: 2782
+ current_temp_register: 27586
+```
+
+{% configuration %}
+name:
+ description: Name of the device
+ required: true
+ type: string
+slave:
+ description: The number of the slave (Optional for tcp and upd Modbus, use 1).
+ required: true
+ type: int
+target_temp_register:
+ description: Register number for target temperature (Setpoint).
+ required: true
+ type: int
+current_temp_register:
+ description: Register number for current temperature (Process value).
+ required: true
+ type: int
+data_type:
+ description: Response representation (int, uint, float, custom). If float selected, value will converted to IEEE 754 floating point format.
+ required: false
+ type: string
+ default: float
+count:
+ description: Number of registers to read.
+ required: false
+ type: int
+precision:
+ description: Number of valid decimals.
+ required: false
+ type: int
+ default: 0
+{% endconfiguration %}
+
+
+### {% linkable_title Services %}
+
+| Service | Description |
+| ------- | ----------- |
+| set_temperature | Set Temperature. Requires `value` to be passed in, which is the desired target temperature. `value` should be in the same type as `data_type` |
diff --git a/source/_components/conversation.markdown b/source/_components/conversation.markdown
index d9dff87aa5..e9bb86aaab 100644
--- a/source/_components/conversation.markdown
+++ b/source/_components/conversation.markdown
@@ -87,3 +87,9 @@ intent_script:
- "{% if color == 'blue' %}255{% else %}0{% endif %}"
{% endraw %}
```
+
+#### {% linkable_title Service `conversation.process` %}
+
+| Service data attribute | Optional | Description |
+|------------------------|----------|--------------------------------------------------|
+| `text` | yes | Transcribed text |
diff --git a/source/_components/cover.gogogate2.markdown b/source/_components/cover.gogogate2.markdown
index bf6d62d37b..a24ef1fd02 100644
--- a/source/_components/cover.gogogate2.markdown
+++ b/source/_components/cover.gogogate2.markdown
@@ -20,7 +20,7 @@ The `gogogate2` cover platform lets you control Gogogate2-Enabled garage doors t
To use your Gogogate2 cover in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
cover:
- platform: gogogate2
username: email@email.com
diff --git a/source/_components/cover.mqtt.markdown b/source/_components/cover.mqtt.markdown
index 8af2d728aa..81358f8776 100755
--- a/source/_components/cover.mqtt.markdown
+++ b/source/_components/cover.mqtt.markdown
@@ -15,6 +15,8 @@ ha_release: 0.18
The `mqtt` cover platform allows you to control an MQTT cover (such as blinds, a rollershutter, or a garage door).
+## {% linkable_title Configuration %}
+
The device state (`open` or `closed`) will be updated only after a new message is published on `state_topic` matching `state_open` or `state_closed`. If these messages are published with the `retain` flag set, the cover will receive an instant state update after subscription and Home Assistant will display the correct state on startup. Otherwise, the initial state displayed in Home Assistant will be `unknown`.
There is an attribute that stores the relative position of the device, where 0 means the device is `closed` and all other intermediate positions means the device is `open`.
@@ -164,7 +166,7 @@ In this section you will find some real life examples of how to use this platfor
The example below shows a full configuration for a cover without tilt.
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
cover:
- platform: mqtt
name: "MQTT Cover"
@@ -188,8 +190,9 @@ cover:
The example below shows a full configuration for a cover.
+{% raw %}
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
cover:
- platform: mqtt
name: "MQTT Cover"
@@ -206,7 +209,7 @@ cover:
payload_available: "online"
payload_not_available: "offline"
optimistic: false
- value_template: '{% raw %}{{ value.x }}{% endraw %}'
+ value_template: '{{ value.x }}'
tilt_command_topic: 'home-assistant/cover/tilt'
tilt_status_topic: 'home-assistant/cover/tilt-state'
tilt_min: 0
@@ -214,6 +217,7 @@ cover:
tilt_closed_value: 70
tilt_opened_value: 180
```
+{% endraw %}
To test, you can use the command line tool `mosquitto_pub` shipped with `mosquitto` or the `mosquitto-clients` package to send MQTT messages. This allows you to operate your cover manually:
diff --git a/source/_components/cover.myq.markdown b/source/_components/cover.myq.markdown
index 160b4f75f7..419e65ef7a 100644
--- a/source/_components/cover.myq.markdown
+++ b/source/_components/cover.myq.markdown
@@ -15,10 +15,12 @@ ha_iot_class: Cloud Polling
The `myq` cover platform lets you control MyQ-Enabled garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your MyQ Device mobile app.
+## {% linkable_title Configuration %}
+
To use your MyQ cover in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
cover:
- platform: myq
username: YOUR_USERNAME
diff --git a/source/_components/cover.wink.markdown b/source/_components/cover.wink.markdown
index 8e81d8ac79..8c82634187 100644
--- a/source/_components/cover.wink.markdown
+++ b/source/_components/cover.wink.markdown
@@ -13,24 +13,20 @@ ha_release: 0.13
ha_iot_class: "Cloud Polling"
---
-Wink cover/garage door functionality depends on the product you're using. With GoControl/Linear Home Assistant can open, close, and view state. Chamberlain is currently limited to view only. Meaning Home Assistant will only show the current state of the door and control has been disabled (by Chamberlain). If you have a Chamberlain garage door, and would like to control it via Home Assistant, please contact Chamberlain and request that they re-enabled third-party control.
+Wink Cover garage door functionality varies on the product. Home Assistant can open, close, and view state of GoControl/Linear openers. For Chamberlain MyQ-enabled openers, Home Assistant is limited to show current state (open or closed) only using this Wink cover. This restriction was imposed by Chamberlain for third party control. Wink suggests that MyQ customers should contact Chamberlain directly to inquire about expanding permissions.
-The following quote is from Wink.
-
-> As part of our agreement with Chamberlain, third-party access to control Chamberlain garage doors has been restricted. Please contact Chamberlain directly to inquire about permissions.
+The [MyQ Cover](/components/cover.myq/) does provide full functionality for opening and closing Chamberlain MyQ-enabled garage doors. If installed along with the Wink Component, a duplicate garage door entity may exist. In that case, the semi-functional Wink garage door entity can be hidden via customize.yaml.
The requirement is that you have setup [Wink](/components/wink/).
-
### {% linkable_title Supported cover devices %}
- Bali window treatments
- Lutron shades
- Pella motorized blinds and shades
- GoControl garage door opener
-- Chamberlain (Limited functionality) (No Wink hub required)
+- Chamberlain MyQ (Limited functionality) (No Wink hub required)
The above devices are confirmed to work, but others may work as well.
-
diff --git a/source/_components/deconz.markdown b/source/_components/deconz.markdown
index ad79ab5225..d1fde01521 100644
--- a/source/_components/deconz.markdown
+++ b/source/_components/deconz.markdown
@@ -34,7 +34,7 @@ ha_iot_class: "Local Push"
Home Assistant will automatically discover deCONZ presence on your network, if `discovery:` is present in your `configuration.yaml` file.
-If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Menu** -> **Settings** -> **Unlock Gateway** in deCONZ and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you've generated the API key from Home Assistant, the API key will be stored in `deconz.conf` inside the `.homeassistant` folder.
+If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Menu** -> **Settings** -> **Unlock Gateway** in deCONZ and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you've generated the API key from Home Assistant, the API key will be stored in `.config_entries.json` inside the `.homeassistant` folder.
You can add the following to your configuration.yaml file if you are not using the `discovery:` component:
diff --git a/source/_components/device_tracker.fritz.markdown b/source/_components/device_tracker.fritz.markdown
index 66ed60a157..3e4a745d99 100644
--- a/source/_components/device_tracker.fritz.markdown
+++ b/source/_components/device_tracker.fritz.markdown
@@ -15,6 +15,8 @@ ha_release: "0.10"
The `fritz` platform offers presence detection by looking at connected devices to a [AVM Fritz!Box](http://avm.de/produkte/fritzbox/) based router.
+## {% linkable_title Configuration %}
+
It might be necessary to install additional packages: $ sudo apt-get install libxslt-dev libxml2-dev python3-lxml
If you are working with the All-in-One installation, you may also need to execute also within your virtual environment the command pip install lxml; be patient this will take a while.
diff --git a/source/_components/device_tracker.google_maps.markdown b/source/_components/device_tracker.google_maps.markdown
index 5b16f3c785..d05c9e35d2 100644
--- a/source/_components/device_tracker.google_maps.markdown
+++ b/source/_components/device_tracker.google_maps.markdown
@@ -29,9 +29,9 @@ To integrate Google Maps Location Sharing in Home Assistant, add the following s
```yaml
# Example configuration.yaml entry
device_tracker:
- platform: google_maps
- username: example@gmail.com
- password: password
+ - platform: google_maps
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
```
{% configuration %}
diff --git a/source/_components/device_tracker.icloud.markdown b/source/_components/device_tracker.icloud.markdown
index f2f902bd30..a57ba44d4b 100644
--- a/source/_components/device_tracker.icloud.markdown
+++ b/source/_components/device_tracker.icloud.markdown
@@ -33,9 +33,11 @@ Configuration variables:
- **username** (*Required*): The username for the iCloud account.
- **password** (*Required*): The password for your given username.
- **account_name** (*Optional*): The friendly name for the account_name. If this isn't given, it will use the account_name of the username (so the part before the `@` in the email address).
+- **max_interval** (*Optional*): Maximum interval in minutes between subsequent location upates. This tracker uses dynamic intervals for requesting location updates. When iphone is stationary, interval will eventually be set to `max_interval` to save battery. When iphone starts moving again interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Default is 30 min. Minimum value is 1 min.
+- **gps_accuracy_threshold** (*Optional*): iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows more precise location monitoring and fewer false positive zone changes. Default is 1000 meters.
-This may cause battery drainage as it wakes up your device to get the current location.
+Low `max_interval` may cause battery drainage as it wakes up your device to get the current location.
@@ -48,7 +50,7 @@ To disable the drainage of the battery, a dynamic interval is being used for eac
2 Factor Authentication is the improved version of 2 Steps Authentication, this is still not supported by the pyicloud library. Therefore it's not possible to use it with the device_tracker yet.
4 services are available for this component:
-- **icloud_update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional.
+- **icloud_update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iphone location. Can be used in automations when manual location update is needed, e.g. to check if anyone is home when door's been opened.
- **icloud_lost_iphone**: This service will play the Lost iPhone sound on a certain iDevice. The `account_name` and `device_name` are optional.
- **icloud_set_interval**: This service will change the dynamic interval of an iDevice. The `account_name` and `device_name` are optional. If `interval` is used in the service_data, the iDevice will be updated with that new interval. That interval will be fixed until the iDevice changes zone or if this service is called again. If `interval` isn't used in the service_data, the interval for that iDevice will revert back to its default dynamic interval based on its current zone, its distance towards home and its battery level.
- **icloud_reset_account**: This service can be used to reset an iCloud account. This is helpful when not all devices are being found by the component or if you have added a new iDevice to your account. The `account_name` is optional.
diff --git a/source/_components/device_tracker.markdown b/source/_components/device_tracker.markdown
index a66d78b716..b595407d13 100644
--- a/source/_components/device_tracker.markdown
+++ b/source/_components/device_tracker.markdown
@@ -40,6 +40,10 @@ The following optional parameters can be used with any platform. However device
| `consider_home` | 180 | Seconds to wait till marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones will occasionally drop off the network and then re-appear. `consider_home` helps prevent false alarms in presence detection when using IP scanners such as Nmap. `consider_home` accepts various time representations, (e.g., the following all represents 3 minutes: `180`, `0:03`, `0:03:00`) |
| `new_device_defaults`| | Default values for new discovered devices. Available options `track_new_devices` (default: `True`), `hide_if_away` (default: `False`) |
+
+ Note that setting `track_new_devices: False` will still result in new devices being recorded in `known_devices.yaml`, but they won't be tracked (`track: no`).
+
+
The extended example from above would look like the following sample:
```yaml
diff --git a/source/_components/device_tracker.meraki.markdown b/source/_components/device_tracker.meraki.markdown
index a88aa1d713..cbe481d39e 100644
--- a/source/_components/device_tracker.meraki.markdown
+++ b/source/_components/device_tracker.meraki.markdown
@@ -11,8 +11,21 @@ logo: meraki.png
ha_category: Presence Detection
ha_release: "0.60"
---
-Use your `Meraki AP` as device tracker. Note that Meraki will see all devices, not only connected to the network.
-Follow instructions [here](https://meraki.cisco.com/technologies/location-analytics-api) how to enable Location Analytics.
+
+Use your Meraki AP as device tracker. Note that Meraki will see all devices, not only connected to the network.
+
+### {% linkable_title Prerequisites %}
+
+1. Go to Network-wide/General page, and find the Location and scanning section.
+1. Make sure analytics and Scanning API are both enabled.
+1. Make note of the Validator string, which will be used in the `device_tracker` configuration.
+1. Click **Add a Post URL**:
+ 1. Set the Post URL to `https://YOUR_HOSTNAME/api/meraki?api_password=YOUR_HASS_PASSWORD`
+ 1. Set the Secret to a randomly generated string, and make note of it for the `device_tracker` configuration.
+ 1. Make sure the API Version is set to `2.0`.
+ 1. Hit **Save** in the bottom right of the page.
+
+## {% linkable_title Configuration %}
After you configure access to the Meraki CMX API, add the following to your `configuration.yaml` file:
@@ -24,14 +37,13 @@ device_tracker:
validator: meraki_validator
```
-
{% configuration %}
secret:
- description: Secret code added in Meraki
+ description: Secret code added in Meraki.
required: true
type: string
validator:
- description: Validation string from Meraki
+ description: Validation string from Meraki.
required: true
type: string
{% endconfiguration %}
diff --git a/source/_components/device_tracker.netgear.markdown b/source/_components/device_tracker.netgear.markdown
index f8dace0e12..8bdcacc8cd 100644
--- a/source/_components/device_tracker.netgear.markdown
+++ b/source/_components/device_tracker.netgear.markdown
@@ -13,7 +13,6 @@ ha_iot_class: "Local Polling"
ha_release: pre 0.7
---
-
This platform allows you to detect presence by looking at connected devices to a [Netgear](http://www.netgear.com/) device.
To use this device tracker in your installation, add the following to your `configuration.yaml` file:
@@ -29,10 +28,18 @@ device_tracker:
Configuration variables:
-- **host** (*Optional*): The IP address of your router, e.g., `192.168.1.1`. If not provided `routerlogin.net` will be used.
-- **username** (*Optional*): The username of an user with administrative privileges. If not provided `admin` will be used.
-- **port** (*Optional*): The port your router communicates with (defaults to `5000`, but `80` is also known to be used on some models).
+- **url** (*Optional*): The base URL, e.g., `http://routerlogin.com:5000` for example. If not provided `host` and `port` are used. If none provided autodetection of the URL will be used.
+- **host** (*Optional*): The IP address of your router, e.g., `192.168.1.1`.
+- **port** (*Optional*): The port your router communicates with.
+- **username** (*Optional*): The username of a user with administrative privileges. If not provided `admin` will be used.
- **password** (*Required*): The password for your given admin account.
+- **devices** (*Optional*): If provided only specified devices will be reported. Can be MAC address or the device name as reported in the Netgear UI.
+- **exclude** (*Optional*): Devices to exclude from the scan.
+- **accesspoints** (*Optional*): Also track devices on the specified APs. Only supports MAC address.
+
+When `accesspoints` is specified an extra device will be reported for each device connected to the APs specified here, as `MY-LAPTOP on RBS40`. `Router` will be reported as AP name for the main AP. Only tested with Orbi.
+
+The use of `devices` or `exclude` is recommended when using `accesspoints` to avoid having a lot of entries.
List of models that are known to use port 80:
- Nighthawk X4S - AC2600 (R7800)
diff --git a/source/_components/device_tracker.owntracks_http.markdown b/source/_components/device_tracker.owntracks_http.markdown
index cadf1f4589..64df68dd04 100644
--- a/source/_components/device_tracker.owntracks_http.markdown
+++ b/source/_components/device_tracker.owntracks_http.markdown
@@ -32,7 +32,7 @@ Open OwnTracks and go to Connection preferences:
- Mode: Select **Private HTTP**
- Host: [Home Assistant URL]:[port]/api/owntracks/[your name]/[device name]
- Identification: Turn **Authentication** on, username `homeassistant` and password is your API password that you use to login to Home Assistant.
-
+
Host example: If I host my Home Assistant at `https://example.duckdns.org`, my name is Paulus and my phone is a Pixel I would set the host to be `https://example.duckdns.org/api/owntracks/paulus/pixel`. This will result in an entity with an ID of `device_tracker.paulus_pixel`. You can pick any name for the user and the device.
Since the battery data is available as an attribute of the device tracker entity, it can be tracked with a [`template` sensor](/components/sensor.template/).
@@ -47,17 +47,6 @@ sensor:
friendly_name: Pixel of Paulus
unit_of_measurement: "%"
value_template: '{{ states.device_tracker.paulus_pixel.attributes.battery|int }}'
- icon_template: >-
- {% set battery_level = states.device_tracker.paulus_pixel.attributes.battery|default(0)|int %}
- {% set battery_round = (battery_level / 10) |int * 10 %}
- {% if battery_round >= 100 %}
- mdi:battery
- {% elif battery_round > 0 %}
- mdi:battery-{{ battery_round }}
- {% else %}
- mdi:battery-alert
- {% endif %}
- entity_id:
- - device_tracker.paulus_pixel
+ device_class: battery
```
{% endraw %}
diff --git a/source/_components/device_tracker.tplink.markdown b/source/_components/device_tracker.tplink.markdown
index 80e957a2ae..29b70a143a 100644
--- a/source/_components/device_tracker.tplink.markdown
+++ b/source/_components/device_tracker.tplink.markdown
@@ -41,7 +41,7 @@ For Archer C9 models running firmware version 150811 or later please use the enc
2. Type in the password you use to login into the password field.
3. Click somewhere else on the page so that the password field is not selected anymore.
4. Open the JavaScript console of your browser (usually by pressing F12 and then clicking on "Console").
-5. Type ```document.getElementById("login-password").value;```.
+5. Type `document.getElementById("login-password").value;` or `document.getElementById("pcPassword").value;`, depending on your firmware version.
6. Copy the returned value to your Home Assistant configuration as password.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
diff --git a/source/_components/device_tracker.xiaomi_miio.markdown b/source/_components/device_tracker.xiaomi_miio.markdown
index dad5feef5d..ae60404393 100644
--- a/source/_components/device_tracker.xiaomi_miio.markdown
+++ b/source/_components/device_tracker.xiaomi_miio.markdown
@@ -8,7 +8,7 @@ comments: false
sharing: true
footer: true
logo: xiaomi.png
-ha_category: Sensor
+ha_category: Presence Detection
ha_version: 0.67
ha_iot_class: "Local Polling"
---
diff --git a/source/_components/discoverable.markdown b/source/_components/discoverable.markdown
index 49e9f82111..12c170a1ee 100644
--- a/source/_components/discoverable.markdown
+++ b/source/_components/discoverable.markdown
@@ -23,7 +23,7 @@ for state in hass.states():
To enable `discovery` in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
discoverable:
expose_password: yes
```
diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown
index 61ea8046b9..f369ce67c1 100644
--- a/source/_components/discovery.markdown
+++ b/source/_components/discovery.markdown
@@ -23,6 +23,7 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi
* [DirecTV receivers](/components/media_player.directv/)
* [Frontier Silicon internet radios](/components/media_player.frontier_silicon/)
* [Google Cast](/components/media_player.cast/)
+ * [HomeKit](/components/homekit_controller/)
* [IKEA Trådfri (Tradfri)](/components/tradfri/)
* [Linn / Openhome](/components/media_player.openhome/)
* [Logitech Harmony Hub](/components/remote.harmony/)
@@ -50,6 +51,8 @@ discovery:
ignore:
- sonos
- samsung_tv
+ enable:
+ - homekit
```
Configuration variables:
@@ -85,6 +88,12 @@ Valid values for ignore are:
* `yamaha`: Yamaha media player
* `yeelight`: Yeelight Sunflower bulb
+- **enable** (*Optional*): A list of platforms not enabled by default that `discovery` should discover.
+
+Valid values for enable are:
+
+ * `homekit`: HomeKit accessories
+
Home Assistant must be on the same network as the devices for uPnP discovery to work.
If running Home Assistant in a [Docker container](/docs/installation/docker/) use switch `--net=host` to put it on the host's network.
diff --git a/source/_components/dyson.markdown b/source/_components/dyson.markdown
index c090862421..7c0e1ca2f3 100644
--- a/source/_components/dyson.markdown
+++ b/source/_components/dyson.markdown
@@ -26,9 +26,9 @@ dyson:
password: YOUR_DYSON_PASSWORD
language: YOUR_DYSON_ACCOUNT_LANGUGAGE
devices:
- - device_id: DEVICE_ID_1 # eg: Pure Cool Link device
+ - device_id: DEVICE_ID_1 # eg. Serial number: XXX-XX-XXXXXXXX
device_ip: DEVICE_ID_1
- - device_id: DEVICE_ID_2 # eg: Eye 360 robot vacuum
+ - device_id: DEVICE_ID_2
device_ip: DEVICE_ID_2
```
@@ -38,7 +38,7 @@ Configuration variables:
- **password** (*Required*): Dyson account password.
- **language** (*Required*): Dyson account language country code. Known working codes: `FR`, `NL`, `GB`, `AU`. But others codes should work.
- **devices** (*Optional*): List of devices.
- - **device_id** (*Required*): Device ID. Available in the mobiles applications (*Settings* page).
+ - **device_id** (*Required*): Device ID. The Serial Number of the device. Found in the mobiles applications device settings page.
- **device_ip** (*Required*): Device IP address.
`devices` list is optional but you'll have to provide them if discovery is not working (warnings in the logs and the devices are not available in Home Assistant web interface).
diff --git a/source/_components/eufy.markdown b/source/_components/eufy.markdown
new file mode 100644
index 0000000000..60ec2a470d
--- /dev/null
+++ b/source/_components/eufy.markdown
@@ -0,0 +1,54 @@
+---
+layout: page
+title: "Eufy"
+description: "Instructions on how to integrate Eufy devices into Home Assistant."
+date: 2018-04-09 19:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: eufy.png
+ha_category: Hub
+ha_release: 0.68
+---
+
+The `eufy` component is the main component to integrate various [eufy](https://www.eufylife.com/) devices with Home Assistant.
+
+Supported devices will be discovered after the `eufy` component is configured:
+
+```yaml
+# Example configuration.yaml entry
+eufy:
+ username: testuser@domain
+ password: p4ssw0rd
+```
+
+where username and password are the ones configured in the EufyHome app. Alternately, Eufy devices that are not discoverable can be statically configured.
+
+```yaml
+eufy:
+ devices:
+ - address: 192.168.1.10
+ access_token: 1234567890abcdef
+ type: T1012
+ name: Smart Light
+ - address: 192.168.1.11
+ access_token: abcdef1234567890
+ type: T1201
+ name: Smart Switch
+```
+
+access_token can be obtained by running:
+
+```
+curl -H "Content-Type: application/json" -d '{"client_id":"eufyhome-app", "client_Secret":"GQCpr9dSp3uQpsOMgJ4xQ", "email":"USERNAME", "password":"PASSWORD"}' https://home-api.eufylife.com/v1/user/email/login | jq
+```
+
+replacing USERNAME and PASSWORD with the Eufy username and password. This will give an access_token. Then run:
+
+```
+curl -H token:TOKEN -H category:Home https://home-api.eufylife.com/v1/device/list/devices-and-groups | jq
+```
+
+replacing TOKEN with the access_token from the previous command. This will provide the local_code for each device.
+
diff --git a/source/_components/fan.mqtt.markdown b/source/_components/fan.mqtt.markdown
index 94a02b1a9e..45fa55d41b 100644
--- a/source/_components/fan.mqtt.markdown
+++ b/source/_components/fan.mqtt.markdown
@@ -15,6 +15,8 @@ ha_iot_class: depends
The `mqtt` fan platform lets you control your MQTT enabled fans.
+## {% linkable_title Configuration %}
+
In an ideal scenario, the MQTT device will have a `state_topic` to publish state changes. If these messages are published with a `RETAIN` flag, the MQTT fan will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the fan will be `false` / `off`.
When a `state_topic` is not available, the fan will work in optimistic mode. In this mode, the fan will immediately change state after every command. Otherwise, the fan will wait for state confirmation from the device (message from `state_topic`).
@@ -24,7 +26,7 @@ Optimistic mode can be forced even if a `state_topic` is available. Try to enabl
To enable MQTT fans in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
fan:
- platform: mqtt
command_topic: "bedroom_fan/on/set"
@@ -155,7 +157,7 @@ In this section you find some real life examples of how to use this fan.
The example below shows a full configuration for a MQTT fan.
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
fan:
- platform: mqtt
name: "Bedroom Fan"
diff --git a/source/_components/fan.template.markdown b/source/_components/fan.template.markdown
new file mode 100644
index 0000000000..5ebd666594
--- /dev/null
+++ b/source/_components/fan.template.markdown
@@ -0,0 +1,96 @@
+---
+layout: page
+title: "Template Fan"
+description: "Instructions how to setup the Template fans within Home Assistant."
+date: 2018-05-03 09:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Fan
+ha_release: 0.69
+ha_iot_class: "Local Push"
+logo: home-assistant.png
+---
+
+The `template` platform creates fans that combine components and provides the
+ability to run scripts or invoke services for each of the turn_on, turn_off, set_speed, and
+set_oscillating commands of a fan.
+
+To enable Template Fans in your installation, add the following to your
+`configuration.yaml` file:
+
+{% raw %}
+```yaml
+# Example configuration.yaml entry
+fan:
+ - platform: template
+ fans:
+ bedroom_fan:
+ friendly_name: "Bedroom fan"
+ value_template: "{{ states('input_boolean.state') }}"
+ speed_template: "{{ states('input_select.speed') }}"
+ oscillating_template: "{{ states('input_select.osc') }}"
+ turn_on:
+ service: script.fan_on
+ turn_off:
+ service: script.fan_off
+ set_speed:
+ service: script.fan_speed
+ data_template:
+ speed: "{{ speed }}"
+ set_oscillating:
+ service: script.fan_oscillating
+ data_template:
+ oscillating: "{{ oscillating }}"
+ speeds:
+ - '1'
+ - '2'
+ - '3'
+```
+{% endraw %}
+
+{% configuration %}
+ fans:
+ description: List of your fans.
+ required: true
+ type: map
+ keys:
+ friendly_name:
+ description: Name to use in the frontend.
+ required: false
+ type: string
+ value_template:
+ description: "Defines a template to get the state of the fan. Valid value: 'on'/'off'"
+ required: true
+ type: template
+ speed_template:
+ description: Defines a template to get the speed of the fan.
+ required: false
+ type: template
+ oscillating_template:
+ description: "Defines a template to get the osc state of the fan. Valid value: True/False"
+ required: false
+ type: template
+ turn_on:
+ description: Defines an action to run when the fan is turned on.
+ required: true
+ type: action
+ turn_off:
+ description: Defines an action to run when the fan is turned off.
+ required: true
+ type: action
+ set_speed:
+ description: Defines an action to run when the fan is given a speed command.
+ required: false
+ type: action
+ set_oscillating:
+ description: Defines an action to run when the fan is given a osc state command.
+ required: false
+ type: action
+ speeds:
+ description: List of speeds the fan is capable of running at.
+ required: false
+ type: string list
+ default: ['low', 'medium', 'high']
+{% endconfiguration %}
diff --git a/source/_components/folder_watcher.markdown b/source/_components/folder_watcher.markdown
index 88b19937e0..df9041ed35 100644
--- a/source/_components/folder_watcher.markdown
+++ b/source/_components/folder_watcher.markdown
@@ -13,13 +13,14 @@ ha_iot_class: "Local Polling"
ha_release: 0.67
---
-This component adds [Watchdog](https://pythonhosted.org/watchdog/) file system monitoring, publishing events on the Home Assistant bus on the creation/deletion/modification of files. The monitored `event_type` are:
+This component adds [Watchdog](https://pythonhosted.org/watchdog/) file system monitoring, publishing events on the Home Assistant bus on the creation/deletion/modification of files within configured folders. The monitored `event_type` are:
+
* `created`
* `deleted`
* `modified`
* `moved`
-Note that by default folder monitoring is recursive, meaning that the contents of sub-folders are also monitored.
+Configured folders must be added to [whitelist_external_dirs](/docs/configuration/basic/). Note that by default folder monitoring is recursive, meaning that the contents of sub-folders are also monitored.
To enable the Folder Watcher component in your installation, add the following to your `configuration.yaml` file:
diff --git a/source/_components/fritzbox.markdown b/source/_components/fritzbox.markdown
new file mode 100644
index 0000000000..a5ca0a5f68
--- /dev/null
+++ b/source/_components/fritzbox.markdown
@@ -0,0 +1,55 @@
+---
+layout: page
+title: "Fritzbox"
+description: "Instructions on how to integrate the AVM Fritzbox Smart Home components."
+date: 2018-02-18 17:10
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: avm.png
+ha_category: Hub
+ha_release: 0.68
+ha_iot_class: "Local Polling"
+---
+
+The [AVM](https://en.avm.de) Fritzbox component for Home Assistant allows you to integrate the switch and climate devices.
+
+#### {% linkable_title Tested Devices %}
+
+- [FRITZ!Box 6490 Cable](https://en.avm.de/products/fritzbox/fritzbox-6490-cable/)
+- [FRITZ!Box 7590](https://en.avm.de/products/fritzbox/fritzbox-7590/)
+- [FRITZ!DECT 200](https://en.avm.de/products/fritzdect/fritzdect-200/)
+- [Eurotronic Comet DECT](https://www.eurotronic.org/en/products/comet-dect.html)
+
+
+## {% linkable_title Setup %}
+
+```yaml
+# Example configuration.yaml entry
+fritzbox:
+ devices:
+ - host: fritz.box
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+```
+
+{% configuration %}
+devices:
+ description: A list of Fritzbox devices.
+ required: true
+ type: map
+ keys:
+ host:
+ description: The hostname or IP address of the Fritzbox.
+ required: true
+ type: optional
+ username:
+ description: The username for Smart Home access.
+ required: true
+ type: string
+ password:
+ description: The password of the user.
+ required: true
+ type: string
+{% endconfiguration %}
diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown
index d1096fd88c..edd0b8ebb1 100644
--- a/source/_components/google_assistant.markdown
+++ b/source/_components/google_assistant.markdown
@@ -13,6 +13,10 @@ featured: true
ha_release: 0.56
---
+
+ Use [Home Assistant Cloud](/cloud/) to integrate with Google Assistant without any effort.
+
+
The `google_assistant` component allows you to control things via Google Assistant (on your mobile or tablet) or a Google Home device.
The Google Assistant component requires a bit more setup than most due to the way Google requires Assistant Apps to be set up.
@@ -21,6 +25,8 @@ The Google Assistant component requires a bit more setup than most due to the wa
To use Google Assistant, your Home Assistant configuration has to be externally accessible with a hostname and SSL certificate. If you haven't already configured that, you should do so before continuing.
+## {% linkable_title Configuration %}
+
To enable this, add the following lines to your `configuration.yaml` file:
```yaml
@@ -102,7 +108,7 @@ entity_config:
required: false
type: list
room:
- description: Allows for associating this device to a Room in Google Assistant. This is currently non-functional, but will be enabled in the near future.
+ description: Allows for associating this device to a Room in Google Assistant.
required: false
type: string
{% endconfiguration %}
@@ -134,7 +140,7 @@ If you're not using Linux, you can use sites such as [this one](https://www.brow
1. Create a new project in the [developer console](https://console.actions.google.com/).
a. Add/Import project
b. Click on `BUILD` on the `Smart home` card
- c. Type in your home assistant url: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant`, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / ip address and the port under which your Home Assistant is reachable.
+ c. Type in your home assistant url: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant`, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / ip address and the port under which your Home Assistant is reachable.
d. Click `Done`. Then click on `Overview`, which will lead you to the app details screen.
2. 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.
3. The final item on that page `Account linking` is required for your app to interact with Home Assistant.
diff --git a/source/_components/hive.markdown b/source/_components/hive.markdown
index fbe0d5b17f..16f2a77ac4 100644
--- a/source/_components/hive.markdown
+++ b/source/_components/hive.markdown
@@ -14,11 +14,13 @@ ha_iot_class: "Cloud Polling"
---
-This Hive component is the main component to set up and integrate all supported Hive devices. Once configured with the minimum required details it will detect and add all your Hive devices into Home Assistant, including support for multizone heating.
+The `hive` component is the main component to set up and integrate all supported Hive devices. Once configured with the minimum required details it will detect and add all your Hive devices into Home Assistant, including support for multizone heating.
This component uses the unofficial API used in the official Hive website [https://my.hivehome.com](https://my.hivehome.com), and you will need to use the same Username and Password you use on the Hive website to configure this Hive component in Home Assistant.
-To add your Hive devices into your Home Assistant installation, using the default scan_interval, add the following to your 'configuration.yaml' file:
+
+
+To add your Hive devices into your Home Assistant installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown
index 5ca13b0f2b..7ab434c890 100644
--- a/source/_components/homekit.markdown
+++ b/source/_components/homekit.markdown
@@ -12,10 +12,10 @@ ha_release: 0.64
logo: apple-homekit.png
---
-The `HomeKit` component allows you to forward entities from Home Assistant to Apple `HomeKit`, so they could be controlled from Apple `Home` app and `Siri`. Please make sure that you have read the [considerations](#considerations) listed below to save you some trouble later.
+The `HomeKit` component allows you to forward entities from Home Assistant to Apple `HomeKit`, so they can be controlled from Apple's `Home` app and `Siri`. Please make sure that you have read the [considerations](#considerations) listed below to save you some trouble later.
- It might be necessary to install an additional package:
+ It might be necessary to install an additional package:
`$ sudo apt-get install libavahi-compat-libdnssd-dev`
@@ -39,6 +39,10 @@ The `HomeKit` component allows you to forward entities from Home Assistant to Ap
required: false
type: int
default: 51827
+ ip_address:
+ description: The local network IP address. Only necessary if the default from Home Assistant does not work.
+ required: false
+ type: string
filter:
description: Filter entities to available in the `Home` app. ([Configure Filter](#configure-filter))
required: false
@@ -77,6 +81,9 @@ The `HomeKit` component allows you to forward entities from Home Assistant to Ap
default: ''
{% endconfiguration %}
+
+ If you use Z-Wave, or `discovery:` you'll need to disable auto-start, see the [section below](#disable-auto-start) for details on how to do this. You'll then need to start the HomeKit component once Z-Wave is ready, or an appropriate delay to allow your entities to be discovered.
+
## {% linkable_title Setup %}
@@ -87,7 +94,7 @@ To enable the `HomeKit` component in Home Assistant, add the following to your c
homekit:
```
-After Home Assistant has started, the entities specified by the filter are exposed to `HomeKit` if the are [supported](#supported-components). To add them:
+After Home Assistant has started, the entities specified by the filter are exposed to `HomeKit` if they are [supported](#supported-components). To add them:
1. Open the Home Assistant frontend. A new card will display the `pin code`.
1. Open the `Home` app.
2. Choose `Add Accessory`, than select `Don't Have a Code or Can't Scan?` and enter the `pin code`.
@@ -107,7 +114,7 @@ Currently this component uses the `entity_id` to generate a unique `accessory id
### {% linkable_title Persistence Storage %}
-Unfortunately `HomeKit` doesn't support any kind of persistence storage, only the configuration for accessories that are added to the `Home Assistant Bridge` are kept. To avoid problems it is recommended to use an automation to always start `HomeKit` with at least the same entities setup. If for some reason some entities are not setup, their config will be deleted. (State unknown or similar will not cause any issues.)
+Unfortunately `HomeKit` doesn't support any kind of persistent storage - only the configuration for accessories that are added to the `Home Assistant Bridge` are kept. To avoid problems it is recommended to use an automation to always start `HomeKit` with at least the same entities setup. If for some reason some entities are not setup, their config will be deleted. (State unknown or similar will not cause any issues.)
A common situation might be if you decide to disable parts of the configuration for testing. Please make sure to disable `auto start` and `turn off` the `Start HomeKit` automation (if you have one).
@@ -116,7 +123,7 @@ A common situation might be if you decide to disable parts of the configuration
Depending on your individual setup, it might be necessary to disable `Auto Start` for all accessories to be available for `HomeKit`. Only those entities that are fully setup when the `HomeKit` component is started, can be added. To start `HomeKit` when `auto_start: False`, you can call the service `homekit.start`.
-This can be automated using an `automation`.
+If you have Z-Wave entities you want exposed to HomeKit then you'll need to disable auto start and then start it after the Z-Wave mesh is ready. This is because the Z-Wave entities won't be fully set up until then. This can be automated using an automation:
{% raw %}
```yaml
@@ -134,6 +141,8 @@ automation:
```
{% endraw %}
+For a general delay where your component doesn't generate an event, you can also do:
+
{% raw %}
```yaml
# Example using a delay after start of Home Assistant
@@ -154,7 +163,7 @@ automation:
## {% linkable_title Configure Filter %}
-By default no entity will be excluded. To limit which entities are being exposed to `HomeKit`, you can use the `filter` parameter. Keep in mind only [supported components](#supported-components) can be added.
+By default no entity will be excluded. To limit which entities are being exposed to `HomeKit`, you can use the `filter` parameter. Keep in mind only [supported components](#supported-components) can be added.
{% raw %}
```yaml
@@ -184,7 +193,7 @@ Filters are applied as follows:
- if both include and exclude domains specified, the exclude domains are ignored
* Neither include or exclude domain specified
- if entity is included, pass (as #2 above)
- - if entity include and exclude, the entity exclude is ignored
+ - if entity include and exclude, the entity exclude is ignored
## {% linkable_title Supported Components %}
@@ -194,11 +203,20 @@ The following components are currently supported:
| Component | Type Name | Description |
| --------- | --------- | ----------- |
| alarm_control_panel | SecuritySystem | All security systems. |
+| binary_sensor | Sensor | Support for `co2`, `door`, `garage_door`, `gas`, `moisture`, `motion`, `occupancy`, `opening`, `smoke` and `window` device classes. Defaults to the `occupancy` device class for everything else. |
| climate | Thermostat | All climate devices. |
+| cover | GarageDoorOpener | All covers that support `open` and `close` and have `garage` as their `device_class`. |
| cover | WindowCovering | All covers that support `set_cover_position`. |
-| light | Light | Support for `on / off`, `brightness`, `color_temp` and `rgb_color`. |
-| sensor | TemperatureSensor | All sensors that have `Celsius` and `Fahrenheit` as their `unit_of_measurement`. |
-| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` |
+| cover | WindowCovering | All covers that support `open_cover` and `close_cover` through value mapping. (`open` -> `>=50`; `close` -> `<50`) |
+| cover | WindowCovering | All covers that support `open_cover`, `stop_cover` and `close_cover` through value mapping. (`open` -> `>70`; `close` -> `<30`; `stop` -> every value in between) |
+| device_tracker | Sensor | Support for `occupancy` device class. |
+| light | Light | Support for `on / off`, `brightness` and `rgb_color`. |
+| lock | DoorLock | Support for `lock / unlock`. |
+| sensor | TemperatureSensor | All sensors that have `Celsius` or `Fahrenheit` as their `unit_of_measurement` or `temperature` as their `device_class`. |
+| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` and `humidity` as their `device_class`. |
+| sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` |
+| sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `co2` as their `device_class` |
+| sensor | LightSensor | All sensors that have `lm` or `lx` as their `unit_of_measurement` or `illuminance` as their `device_class` |
| switch / remote / input_boolean / script | Switch | All represented as switches. |
diff --git a/source/_components/homekit_controller.markdown b/source/_components/homekit_controller.markdown
new file mode 100644
index 0000000000..910c07e036
--- /dev/null
+++ b/source/_components/homekit_controller.markdown
@@ -0,0 +1,36 @@
+---
+layout: page
+title: "HomeKit controller support"
+description: "Instructions how to integrate your HomeKit devices within Home Assistant."
+date: 2018-03-19 21:04
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: apple-homekit.png
+ha_category: Hub
+ha_release: 0.68
+ha_iot_class: "Local Polling"
+---
+
+[HomeKit](https://developer.apple.com/homekit/) controller integration for Home Assistant allows you to connect HomeKit accessories to Home Assistant. This component should not be confused with the [HomeKit](/components/homekit/) component, which allows you to control Home Assistant devices via HomeKit.
+
+
+ You may need additional packages to support the HomeKit Python module:
+ `$ sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev`
+
+
+There is currently support for the following device types within Home Assistant:
+
+- [Light](/components/light.homekit_controller/)
+- [Switch](/components/switch.homekit_controller/)
+
+The component will be automatically configured if the [`discovery:`](/components/discovery/) component is enabled and an enable entry added for HomeKit:
+
+```yaml
+discovery:
+ enable:
+ - homekit
+```
+
+For each detected HomeKit accessory, a configuration prompt will appear in the web front end. Use this to provide the HomeKit PIN. Note that HomeKit accessories can only be paired to one device at once. If your device is currently paired with Siri, you will need to reset it in order to pair it with Home Assistant. Once Home Assistant is configured to work with the device, you can export it back to Siri with the [`HomeKit`](/components/homekit/) component.
diff --git a/source/_components/insteon_plm.markdown b/source/_components/insteon_plm.markdown
index 58a1bad12c..9e15bb0f7d 100644
--- a/source/_components/insteon_plm.markdown
+++ b/source/_components/insteon_plm.markdown
@@ -63,26 +63,52 @@ a responder or a controller.
In order for any two Insteon devices to talk with one another, they must be
linked. For an overview of device linking please read the Insteon page on
-[understanding linking]. Currently Insteon PLM does not support software
-linking of devices. If you need software that can link your devices (if you
-are using a USB Stick PLM for example), you can download [HouseLinc] which runs
-on any Windows PC, or you can use [Insteon Terminal] which is open source and
-runs on most platforms. HouseLinc is no longer supported by SmartHome but it
-still works. Insteon Terminal is a very useful tool but please read the
-disclaimers carefully, they are important.
+[understanding linking]. The Insteon PLM module supports All-Linking through
+[Development Tools] service calls. The following services are available:
+
+In order for any two Insteon devices to talk with one another, they must be
+linked. For an overview of device linking, please read the Insteon page on
+[understanding linking]. The Insteon PLM module supports All-Linking through
+[Development Tools] service calls. The following services are available:
+- **insteon_plm.add_all_link**: Tells the Insteon Modem (IM) start All-Linking
+mode. Once the IM is in All-Linking mode, press the link button on the device
+to complete All-Linking.
+- **insteon_plm.delete_all_link**: Tells the Insteon Modem (IM) to remove an
+All-Link record from the All-Link Database of the IM and a device. Once the IM
+is set to delete the link, press the link button on the corresponding device
+to complete the process.
+- **insteon_plm.load_all_link_database**: Load the All-Link Database for a
+device. WARNING - Loading a device All-Link database is very time consuming
+and inconsistent. This may take a LONG time and may need to be repeated to
+obtain all records.
+- **insteon_plm.print_all_link_database**: Print the All-Link Database for a
+device. Requires that the All-Link Database is loaded into memory.
+- **insteon_plm.print_im_all_link_database**: Print the All-Link Database for
+the INSTEON Modem (IM).
+
+If you are looking for more advanced options, you can use the
+[insteonplm_interactive] command line tool that is distributed with the
+[insteonplm] Python module. Please see the documentation on the [insteonplm]
+GitHub site. Alternatively, you can download [HouseLinc] which runs on any
+Windows PC, or you can use [Insteon Terminal] which is open source and runs
+on most platforms. SmartHome no longer supports HouseLinc, but it still
+works. Insteon Terminal is a very useful tool but please read the disclaimers
+carefully, they are important.
[understanding linking]: http://www.insteon.com/support-knowledgebase/2015/1/28/understanding-linking
+[Development Tools]: https://www.home-assistant.io/docs/tools/dev-tools/
[HouseLinc]: https://www.smarthome.com/houselinc.html
[Insteon Terminal]: https://github.com/pfrommerd/insteon-terminal
+[insteonplm_interactive]: https://github.com/nugget/python-insteonplm#command-line-interface
### {% linkable_title Customization %}
-The only configuration item that is absolutely necessary is the port so that
-Home Assistant can connect to the PLM. This will expose all the supported INSTEON
-devices which exist in the modem's ALL-Link database. However, devices will
-only be shown by their INSTEON hex address (e.g., "1A.2B.3C") which can be a bit
-unwieldy. As you link and unlink devices using the 'Set' buttons, they'll be
-added and removed from Home Assistant automatically.
+The only configuration item that is absolutely necessary is the port so that
+Home Assistant can connect to the PLM. This will expose all the supported
+INSTEON devices which exist in the modem’s ALL-Link database. However, devices
+will only be shown by their INSTEON hex address (e.g., “1A.2B.3C”) which can
+be a bit unwieldy. As you link and unlink devices using the ‘Set’ buttons,
+they’ll be added and removed from Home Assistant automatically.
You can use the normal Home Assistant [device customization] section of your
configuration to assign friendly names and special icons to your devices. This
@@ -123,7 +149,9 @@ insteon_plm:
cat: 0x10
subcat: 0x11
```
+
### {% linkable_title What NOT to do %}
+
Insteon PLM is a top level component and device discovery will identify
the Home Assistant platform the device belongs in. As such, do not
declare Insteon devices in other platforms. For example, this configuration
@@ -134,4 +162,3 @@ light:
- platform: insteon_plm
address: 1a2b3c
```
-
diff --git a/source/_components/juicenet.markdown b/source/_components/juicenet.markdown
index 5df8b274e6..74cc2fdb89 100644
--- a/source/_components/juicenet.markdown
+++ b/source/_components/juicenet.markdown
@@ -15,10 +15,12 @@ ha_release: 0.47
The `juicenet` sensor platform pulls data from a [JuiceNet](https://emotorwerks.com/products/juicenet/) charging station equipped with a wifi connection. It will access and make available all of the devices attached to your account.
+## {% linkable_title Configuration %}
+
To enable the platform in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
juicenet:
access_token: ACCESS_TOKEN
```
diff --git a/source/_components/light.eufy.markdown b/source/_components/light.eufy.markdown
new file mode 100644
index 0000000000..d8596c0048
--- /dev/null
+++ b/source/_components/light.eufy.markdown
@@ -0,0 +1,19 @@
+---
+layout: page
+title: "Eufy Lights"
+description: "Instructions on how to integrate Eufy LED lights into Home Assistant."
+date: 2018-04-09 19:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: eufy.png
+ha_category: Light
+ha_iot_class: "Local Polling"
+ha_release: 0.68
+---
+
+The `eufy` platform allows you to control your [Eufy](http://www.eufylife.com) lights from within Home Assistant.
+
+They will be automatically discovered if the [Eufy](/components/eufy/) component is enabled.
+
diff --git a/source/_components/light.hive.markdown b/source/_components/light.hive.markdown
index 78daeb5641..44221f6371 100644
--- a/source/_components/light.hive.markdown
+++ b/source/_components/light.hive.markdown
@@ -14,12 +14,13 @@ ha_iot_class: "Cloud Polling"
---
-The 'hive' light component integrates your Hive lights into Home Assistant, enabling control of various settings, depending on the model light.
+The `hive` light platform integrates your Hive lights into Home Assistant, enabling control of various settings, depending on the model light.
-The Hive light component supports the following Hive products:
-- **Hive Active Light Dimmable**
-- **Hive Active Light Cool to Warm White**
-- **Hive Active Light Color Changing**
+The platform supports the following Hive products:
+
+- Hive Active Light Dimmable
+- Hive Active Light Cool to Warm White
+- Hive Active Light Color Changing
diff --git a/source/_components/light.homekit_controller.markdown b/source/_components/light.homekit_controller.markdown
new file mode 100644
index 0000000000..f3f7243a10
--- /dev/null
+++ b/source/_components/light.homekit_controller.markdown
@@ -0,0 +1,16 @@
+---
+layout: page
+title: "HomeKit Light"
+description: "Instructions how to setup HomeKit lights within Home Assistant."
+date: 2017-03-19 21:08
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: apple-homekit.png
+ha_category: Light
+ha_iot_class: "Local Polling"
+ha_release: 0.68
+---
+
+To get your HomeKit lights working with Home Assistant, follow the instructions for the general [HomeKit controller component](/components/homekit_controller/).
diff --git a/source/_components/light.mochad.markdown b/source/_components/light.mochad.markdown
index fdd288113f..9721e9d6c9 100644
--- a/source/_components/light.mochad.markdown
+++ b/source/_components/light.mochad.markdown
@@ -11,13 +11,14 @@ ha_category: Light
ha_release: 0.51
---
-The `mochad` light platform lets you control an X10 enabled dimmer/light
-device.
+The `mochad` light platform lets you control an X10 enabled dimmer/light device.
+
+
To enable this sensor, you first have to set up the [mochad component](/components/mochad/) and then add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
light:
- platform: mochad
devices:
diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown
index 13e1cd9f86..e92f859fb7 100644
--- a/source/_components/light.mqtt.markdown
+++ b/source/_components/light.mqtt.markdown
@@ -14,6 +14,8 @@ ha_iot_class: depends
The `mqtt` light platform lets you control your MQTT enabled lights. It supports setting brightness, color temperature, effects, flashing, on/off, RGB colors, transitions, XY colors and white values.
+## {% linkable_title Configuration %}
+
In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with a `RETAIN` flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the switch will be `false` / `off`.
When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from `state_topic`).
@@ -21,7 +23,7 @@ When a state topic is not available, the light will work in optimistic mode. In
Optimistic mode can be forced, even if the `state_topic` is available. Try to enable it, if experiencing incorrect light operation.
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
light:
- platform: mqtt
command_topic: "office/rgb1/light/switch"
@@ -194,6 +196,7 @@ payload_not_available:
| RGB Color | ✔ | ✔ | ✔ |
| Transitions | ✘ | ✔ | ✔ |
| XY Color | ✔ | ✔ | ✘ |
+| HS Color | ✘ | ✔ | ✘ |
| White Value | ✔ | ✔ | ✔ |
## {% linkable_title Examples %}
@@ -206,7 +209,7 @@ To enable a light with brightness and RGB support in your installation, add the
{% raw %}
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
light:
- platform: mqtt
name: "Office Light RGB"
@@ -231,7 +234,7 @@ light:
To enable a light with brightness (no RGB version) in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
light:
- platform: mqtt
name: "Office light"
@@ -250,7 +253,7 @@ light:
To enable a light that sends only brightness topics to turn it on, add the following to your `configuration.yaml` file. The `command_topic` is only used to send an off command in this case:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
light:
- platform: mqtt
name: "Brightness light"
diff --git a/source/_components/light.mqtt_json.markdown b/source/_components/light.mqtt_json.markdown
index 9455777285..6e70c8be89 100644
--- a/source/_components/light.mqtt_json.markdown
+++ b/source/_components/light.mqtt_json.markdown
@@ -23,10 +23,12 @@ This platform supports on/off, brightness, RGB colors, XY colors, color temperat
"color_temp": 155,
"color": {
"r": 255,
- "g": 255,
- "b": 255,
- "x": 0.123,
- "y": 0.123
+ "g": 180,
+ "b": 200,
+ "x": 0.406,
+ "y": 0.301,
+ "h": 344.0,
+ "s": 29.412
},
"effect": "colorloop",
"state": "ON",
@@ -126,6 +128,11 @@ xy:
required: false
type: boolean
default: false
+hs:
+ description: Flag that defines if the light supports HS colors.
+ required: false
+ type: boolean
+ default: false
availability_topic:
description: The MQTT topic subscribed to receive availability (online/offline) updates.
required: false
@@ -147,7 +154,7 @@ payload_not_available:
- XY and RGB can not be used at the same time. If both are provided, XY overrides RGB.
+ RGB, XY and HSV can not be used at the same time in `state_topic` messages. Make sure that only one of the color models is in the "color" section of the state MQTT payload.
## {% linkable_title Comparison of light MQTT platforms %}
@@ -161,6 +168,7 @@ payload_not_available:
| RGB Color | ✔ | ✔ | ✔ |
| Transitions | ✘ | ✔ | ✔ |
| XY Color | ✔ | ✔ | ✘ |
+| HS Color | ✘ | ✔ | ✘ |
| White Value | ✔ | ✔ | ✔ |
## {% linkable_title Examples %}
@@ -215,7 +223,32 @@ Home Assistant will then convert its 8bit value in the message to and from the d
```json
{
"brightness": 4095,
+ "state": "ON"
+}
+```
+
+### {% linkable_title HS Color %}
+
+To use a light with hue+saturation as the color model, set `hs` to `true` in the platform configuration:
+
+```yaml
+light:
+ - platform: mqtt_json
+ name: mqtt_json_hs_light
+ state_topic: "home/light"
+ command_topic: "home/light/set"
+ hs: True
+```
+
+Home Assistant expects the hue values to be in the range 0 to 360 and the saturation values to be scaled from 0 to 100. For example, the following is a blue color shade:
+
+```json
+{
"state": "ON",
+ "color": {
+ "h": 24.0,
+ "s": 100.0
+ }
}
```
diff --git a/source/_components/light.mqtt_template.markdown b/source/_components/light.mqtt_template.markdown
index d623971099..11b4372672 100644
--- a/source/_components/light.mqtt_template.markdown
+++ b/source/_components/light.mqtt_template.markdown
@@ -132,6 +132,7 @@ payload_not_available:
| RGB Color | ✔ | ✔ | ✔ |
| Transitions | ✘ | ✔ | ✔ |
| XY Color | ✔ | ✔ | ✘ |
+| HS Color | ✘ | ✔ | ✘ |
| White Value | ✔ | ✔ | ✔ |
## {% linkable_title Examples %}
diff --git a/source/_components/lock.mqtt.markdown b/source/_components/lock.mqtt.markdown
index b0669cfb7f..ff8eb05170 100644
--- a/source/_components/lock.mqtt.markdown
+++ b/source/_components/lock.mqtt.markdown
@@ -24,7 +24,7 @@ Optimistic mode can be forced, even if state topic is available. Try to enable i
To enable MQTT locks in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
lock:
- platform: mqtt
command_topic: "home/frontdoor/set"
diff --git a/source/_components/matrix.markdown b/source/_components/matrix.markdown
new file mode 100644
index 0000000000..1047d54053
--- /dev/null
+++ b/source/_components/matrix.markdown
@@ -0,0 +1,136 @@
+---
+layout: page
+title: "Matrix"
+description: "Matrix chatbot support"
+date: 2018-03-25 18:50
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: matrix.png
+ha_category: Hub
+ha_version: 0.69
+---
+
+This component allows you to send messages to matrix rooms, as well as to react to messages in matrix rooms. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered.
+
+```yaml
+# Example configuration.yaml entry
+matrix:
+ homeserver: https://matrix.org
+ username: "@my_matrix_user:matrix.org"
+ password: supersecurepassword
+ rooms:
+ - "#hasstest:matrix.org"
+ commands:
+ - word: my_command
+ name: my_command
+```
+
+Configuration variables:
+
+{% configuration %}
+username:
+ description: "The matrix username that home assistant should use to log in. *Note*: You must specify a full matrix ID here, including the homeserver domain, e.g. '@my_matrix_bot:matrix.org'. Please note also that the '@' character has a special meaning in YAML, so this must always be given in quotes."
+ required: true
+ type: string
+password:
+ description: The password for your Matrix account.
+ required: true
+ type: string
+homeserver:
+ description: "The full URL for your homeserver. If you use the defauls matrix.org homeserver, this is 'https://matrix.org'."
+ required: true
+ type: string
+verify_ssl:
+ description: Verify the homeservers certificate.
+ required: false
+ type: string
+ default: true
+rooms:
+ description: "The list of rooms that the bot should join and listen for commands (see below) in. While you can limit the list of rooms that a certain command applies to on a per-command basis (see below), you must still list all rooms here that commands should be received in. Rooms can be given either by their internal ID (e.g., '!cURbafjkfsMDVwdRDQ:matrix.org') or any of their aliases (e.g., '#matrix:matrix.org')."
+ required: false
+ type: [string]
+ default: empty
+commands:
+ description: "A list of commands that the bot should listen for. If a command is triggered (via its *word* or *expression*, see below), an event is fired that you can handle using automations. Every command consists of these possible configuration options:"
+ required: false
+ type: map
+ default: empty
+ keys:
+ word:
+ description: "Specifies a word that the bot should listen for. If you specify 'my_command' here, the bot will react to any message starting with '!my_command'."
+ required: false
+ type: string
+ expression:
+ description: "Specifies a regular expression (in python regexp syntax) that the bot should listen to. The bot will react to any message that matches the regular expression."
+ required: false
+ type: string
+ name:
+ description: "The name of the command. This will be an attribute of the event that is fired when this command triggers."
+ required: true
+ type: string
+ rooms:
+ description: "A list of rooms that the bot should listen for this command in. If this is not given, the *rooms* list from the main config is used. Please note that every room in this list must also be in the main *room* config."
+ required: false
+ type: [string]
+ default: empty
+{% endconfiguration %}
+
+### {% linkable_title Event Data %}
+
+If a command is triggered, a `matrix_command` event is fired. The event contains the name of the command in the `name` field. If the command is a word command that has no name set, the `name` field contains the word instead.
+
+If the command is a word command, the `data` field contains a list of the command's arguments, i.e., everything that stood behind the word, split at spaces. If the command is an expression command, the `data` field contains the [group dictionary](https://docs.python.org/3.6/library/re.html?highlight=re#re.match.groupdict) of the regular expression that matched the message.
+
+### {% linkable_title Comprehensive Configuration Example %}
+
+This example also uses the [matrix `notify` platform](/components/notify.matrix/).
+
+```yaml
+# The Matrix component
+matrix:
+ homeserver: https://matrix.org
+ username: "@my_matrix_user:matrix.org"
+ password: supersecurepassword
+ rooms:
+ - "#hasstest:matrix.org"
+ - "#someothertest:matrix.org"
+ commands:
+ - word: testword
+ rooms:
+ - "#someothertest:matrix.org"
+ - expression: "My name is (?P.*)"
+ name: introduction
+
+notify:
+ - name: matrix_notify
+ platform: matrix
+ default_room: "#hasstest:matrix.org"
+
+automation:
+ - alias: 'React to !testword'
+ trigger:
+ platform: event
+ event_type: matrix_command
+ event_data:
+ command: testword
+ action:
+ service: notify.matrix_notify
+ data:
+ message: 'It looks like you wrote !testword'
+ - alias: 'React to an introduction'
+ trigger:
+ platform: event
+ event_type: matrix_command
+ event_data:
+ command: introduction
+ action:
+ service: notify.matrix_notify
+ data_template:
+ message: "Hello {{trigger.event.data.name}}"
+```
+
+This configuration will:
+- Listen for "!testword" in the room "#someothertest:matrix.org" (and *only*) there. If such a message is encountered, it will answer with "It looks like you wrote !testword" into the "#hasstest:matrix.org" channel.
+- Listen in both rooms for any message matching "My name is " and answer with "Hello " into "#hasstest:matrix.org".
diff --git a/source/_components/maxcube.markdown b/source/_components/maxcube.markdown
index c9645e9fc5..7439d2d19f 100644
--- a/source/_components/maxcube.markdown
+++ b/source/_components/maxcube.markdown
@@ -25,13 +25,42 @@ Supported Devices:
- MAX! Window Sensor (tested)
- MAX! Wall Thermostat (tested)
+### {% linkable_title One Gateway %}
+
A `maxcube` section must be present in the `configuration.yaml` file and contain the following options as required:
```yaml
# Example configuration.yaml entry
maxcube:
- host: 192.168.0.20
+ gateways:
+ - host: 192.168.0.20
```
-Configuration variables:
-- **host** (*Required*): The IP address of the eQ-3 MAX! Cube to use.
-- **port** (*Optional*): The UDP port number. Defaults to `62910`.
+
+### {% linkable_title Multiple Gateways %}
+
+```yaml
+# Example configuration.yaml entry
+maxcube:
+ gateways:
+ - host: 192.168.0.20
+ port: 62910
+ - host: 192.168.0.21
+ port: 62910
+```
+
+{% configuration %}
+ host:
+ description: The IP address of the eQ-3 MAX! Cube to use.
+ required: true
+ type: string
+ port:
+ description: The UDP port number.
+ required: false
+ type: int
+ default: 62910
+ scan_interval:
+ description: The update interval in seconds
+ required: false
+ type: int
+ default: 300
+{% endconfiguration %}
diff --git a/source/_components/media_player.blackbird.markdown b/source/_components/media_player.blackbird.markdown
new file mode 100644
index 0000000000..99873f1cc0
--- /dev/null
+++ b/source/_components/media_player.blackbird.markdown
@@ -0,0 +1,70 @@
+---
+layout: page
+title: "Blackbird 8x8 HDMI Matrix Switch"
+description: "Instructions on how to integrate Monoprice Blackbird 4k 8x8 HDBaseT Matrix Switch into Home Assistant."
+date: 2018-03-29 16:35
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: monoprice.svg
+ha_category: Media Player
+ha_release: 0.68
+ha_iot_class: "Local Polling"
+---
+
+The `blackbird` platform allows you to control [Monoprice Blackbird Matrix Switch](https://www.monoprice.com/product?p_id=21819) using a serial connection.
+
+To add a Blackbird device to your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+media_player:
+ - platform: blackbird
+ type: serial
+ port: /dev/ttyUSB0
+ zones:
+ 1:
+ name: Living Room
+ sources:
+ 3:
+ name: BluRay
+```
+
+{% configuration %}
+type:
+ description: The type of device connection - serial or socket
+ required: true
+ type: string
+port:
+ description: The serial port to which Blackbird matrix switch is connected. Either port or host must be defined.
+ required: optional
+ type: string
+host:
+ description: The IP address of the Blackbird matrix switch. Either port or host must be defined.
+ required: optional
+ type: string
+zones:
+ description: This is the list of zones available. Valid zones are 1,2,3,4,5,6,7,8. Each zone must have a name assigned to it.
+ required: true
+ type: int
+ keys:
+ name:
+ description: The name of the zone.
+sources:
+ description: The list of sources available. Valid source numbers are 1,2,3,4,5,6,7,8. Each source number corresponds to the input number on the Blackbird matrix switch. Similar to zones, each source must have a name assigned to it.
+ required: true
+ type: int
+ keys:
+ name:
+ description: The name of the source.
+{% endconfiguration%}
+
+### {% linkable_title Service `BLACKBIRD_SETALLZONES` %}
+
+Set all zones to the same input source. This service allows you to immediately synchronize all the TVs in your home. Regardless of `entity_id` provided, all zones will be updated.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | String that points at an `entity_id` of a zone.
+| `source` | no | String of source name to activate.
diff --git a/source/_components/media_player.kodi.markdown b/source/_components/media_player.kodi.markdown
index a59d19fe34..83689d4c1a 100644
--- a/source/_components/media_player.kodi.markdown
+++ b/source/_components/media_player.kodi.markdown
@@ -17,7 +17,9 @@ ha_iot_class: "Local Push"
The `kodi` platform allows you to control a [Kodi](http://kodi.tv/) multimedia system from Home Assistant.
-To add Kodi to your installation, add the following to your `configuration.yaml` file:
+The preferred way to set up the Kodi platform is by enabling the [discovery component](https://www.home-assistant.io/components/discovery/) which requires enabled [web interface](https://kodi.wiki/view/Web_interface) on your Kodi installation.
+
+In case the discovery does not work, or you need specific configuration variables, you can add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown
index ca277f7706..19854cfe60 100644
--- a/source/_components/media_player.onkyo.markdown
+++ b/source/_components/media_player.onkyo.markdown
@@ -16,6 +16,8 @@ ha_iot_class: "Local Polling"
The `onkyo` platform allows you to control a [Onkyo](http://www.onkyo.com/) and some recent [Pioneer](http://www.pioneerelectronics.com) receivers from Home Assistant. Please be aware that you need to enable "Network Standby" for this component to work in your Hardware.
+## {% linkable_title Configuration %}
+
To add an Onkyo or Pioneer receiver to your installation, add the following to your `configuration.yaml` file:
```yaml
@@ -28,11 +30,28 @@ media_player:
pc: 'HTPC'
```
-Configuration variables:
-
-- **host** (*Optional*): IP address of the device. Example:`192.168.1.2`. If not specified, the platform will load any discovered receivers.
-- **name** (*Required if host is specified*): Name of the device.
-- **sources** (*Optional*): A list of mappings from source to source name. Valid sources can be found below. A default list will be used if no source mapping is specified.
+{% configuration %}
+host:
+ description: IP address of the device. Example:`192.168.1.2`. If not specified, the platform will load any discovered receivers.
+ required: false
+ type: string
+name:
+ description: Name of the device. (*Required if host is specified*)
+ required: false
+ type: string
+max_volume:
+ description: Maximum volume. Defaults to 80.
+ required: false
+ type: number
+sources:
+ description: A list of mappings from source to source name. Valid sources can be found below. A default list will be used if no source mapping is specified.
+ required: false
+ type: list
+zone2:
+ description: Enables control for the receiver's second zone.
+ required: false
+ type: bool
+{% endconfiguration %}
List of source names:
diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown
index 53954f6693..d944b2b3a7 100644
--- a/source/_components/media_player.samsungtv.markdown
+++ b/source/_components/media_player.samsungtv.markdown
@@ -50,6 +50,7 @@ Currently known supported models:
- EH5600
- F6400AF
- F6400
+- F8000BF
- D6505
- D6300SF
- U6000 (port must be set to 8001)
diff --git a/source/_components/media_player.volumio.markdown b/source/_components/media_player.volumio.markdown
index f8945adc88..26053822e8 100644
--- a/source/_components/media_player.volumio.markdown
+++ b/source/_components/media_player.volumio.markdown
@@ -12,12 +12,11 @@ ha_category: Media Player
ha_release: 0.41
---
-The `Volumio` platform allows you to control a [Volumio](http://volumio.org) media player
-from Home Assistant.
+The `Volumio` platform allows you to control a [Volumio](http://volumio.org) media player from Home Assistant.
+The preferred way to set up the Volumio platform is by enabling the [discovery component](/components/discovery/).
-To add a Volumio player to your installation, add the following to
-your `configuration.yaml` file.
+In case the discovery does not work, or you need specific configuration variables, you can add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
diff --git a/source/_components/media_player.webostv.markdown b/source/_components/media_player.webostv.markdown
index cb4fe0c757..1d634dcebc 100644
--- a/source/_components/media_player.webostv.markdown
+++ b/source/_components/media_player.webostv.markdown
@@ -55,7 +55,7 @@ A full configuration example will look like the sample below:
media_player:
- platform: webostv
host: 192.168.0.10
- name: Living Room TV
+ name: Living Room TV
timeout: 5
filename: webostv.conf
turn_on_action:
@@ -76,7 +76,7 @@ Avoid using `[ ]` in the `name:` of your device.
Home Assistant is able to turn on a LG webOS Smart TV if you specify an action, like HDMI-CEC or WakeOnLan.
-Common for webOS 3.0 and higher would be to use WakeOnLan feature.
+Common for webOS 3.0 and higher would be to use WakeOnLan feature.
To use this feature your TV should be connected to your network via Ethernet rather than Wireless and you should enable *LG Connect Apps* feature in *Network* settings of the TV [instructions](http://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others) (or *Mobile App* in *General* settings for older models).
```yaml
@@ -93,12 +93,36 @@ media_player:
mac: B4:E6:2A:1E:11:0F
```
-Any other [actions](/docs/automation/action/) to power on the device can be configured.
+Any other [actions](/docs/automation/action/) to power on the device can be configured.
### {% linkable_title Sources %}
To obtain complete list of available sources currently configured on the TV, once the webOS TV is configured and linked, while its powered on head to the **Developer Tools** > **States**, find your `media_player.` and use the sources listed in `source_list:` remembering to split them per line into your `sources:` configuration.
+### {% linkable_title Change channel through play_media service %}
+
+The `play_media` service can be used in a script to switch to the specified tv channel.
+It selects the best matching cannel according to the `media_content_id` parameter:
+ 1. Channel number *(i.e. '1' or '6')*
+ 2. Exact channel name *(i.e. 'France 2' or 'CNN')*
+ 3. Substring in channel name *(i.e. 'BFM' in 'BFM TV')*
+
+```yaml
+# Example action entry in script to switch to channel number 1
+service: media_player.play_media
+data:
+ entity_id: media_player.lg_webos_smart_tv
+ media_content_id: 1
+ media_content_type: "channel"
+
+# Example action entry in script to switch to channel including 'TF1' in its name
+service: media_player.play_media
+data:
+ entity_id: media_player.lg_webos_smart_tv
+ media_content_id: "TF1"
+ media_content_type: "channel"
+```
+
### {% linkable_title Next/Previous buttons %}
The behaviour of the next and previsous buttons is different depending on the active source:
diff --git a/source/_components/mochad.markdown b/source/_components/mochad.markdown
index df42020a21..bf0617cefb 100644
--- a/source/_components/mochad.markdown
+++ b/source/_components/mochad.markdown
@@ -13,6 +13,8 @@ ha_release: 0.32
The `mochad` component is the main component to integrate all X10 platforms being controlled by [mochad](https://sourceforge.net/projects/mochad/). Besides this component you will have to setup your X10 devices separately.
+## {% linkable_title Configuration %}
+
To integrate your Mochad units with Home Assistant, add the following section to your `configuration.yaml` file:
```yaml
@@ -20,10 +22,20 @@ To integrate your Mochad units with Home Assistant, add the following section to
mochad:
```
-Configuration variables:
+{% configuration %}
+host:
+ description: The host that mochad is running on.
+ required: false
+ type: string
+ default: localhost
+port:
+ description: The port that mochad is running on.
+ required: false
+ type: int
+ default: 1099
+{% endconfiguration %}
-- **host** (*Optional*): The host that mochad is running on. Defaults to `localhost`.
-- **port** (*Optional*): The port that mochad is running on. Defaults to `1099`.
+## {% linkable_title Example %}
A full configuration sample could look like the one below:
diff --git a/source/_components/modbus.markdown b/source/_components/modbus.markdown
index 30a2b62382..dcccf0ede6 100644
--- a/source/_components/modbus.markdown
+++ b/source/_components/modbus.markdown
@@ -16,6 +16,8 @@ ha_iot_class: "Local Push"
[Modbus](http://www.modbus.org/) is a serial communication protocol to control PLCs (Programmable logic controller). It currently supports sensors and switches which can be controlled over serial, TCP, and UDP connections.
+## {% linkable_title Configuration %}
+
To add modbus to your installation, add the following to your `configuration.yaml` file:
For a network connection:
diff --git a/source/_components/notify.clicksend.markdown b/source/_components/notify.clicksend.markdown
index f334009e9a..8d619617b4 100644
--- a/source/_components/notify.clicksend.markdown
+++ b/source/_components/notify.clicksend.markdown
@@ -15,9 +15,12 @@ ha_release: 0.48
The `clicksend` platform uses [ClickSend](https://clicksend.com) to deliver notifications from Home Assistant.
-### Get your ClickSend API Credentials
+## {% linkable_title Prerequisites %}
+
Go to your [ClickSend Dashboard](https://dashboard.clicksend.com) section and create your new project. After creating your project, you should now be able to obtain your `username` and `api_key`.
+## {% linkable_title Configuration %}
+
To add ClickSend to your installation, add the following to your Home Assistant `configuration.yaml` file:
```yaml
@@ -28,6 +31,14 @@ notify:
username: CLICKSEND_USERNAME
api_key: CLICKSEND_API_KEY
recipient: PHONE_NO
+
+# Multiple recipients
+notify:
+ - platform: clicksend
+ name: ClickSend
+ username: CLICKSEND_USERNAME
+ api_key: CLICKSEND_API_KEY
+ recipient: [PHONE_NO1, PHONE_NO2]
```
{% configuration %}
@@ -44,9 +55,9 @@ api_key:
required: true
type: string
recipient:
- description: "Your phone number. This is where you want to send your notification SMS messages, e.g., `09171234567`."
+ description: "A single or multiple phone numbers. This is where you want to send your SMS notification messages, e.g., `09171234567` or `[09171234567, 09177654321]`."
required: true
- type: string
+ type: string or list
sender:
description: The name or number of the sender.
required: false
diff --git a/source/_components/notify.facebook.markdown b/source/_components/notify.facebook.markdown
index beb539c559..5b4e497947 100644
--- a/source/_components/notify.facebook.markdown
+++ b/source/_components/notify.facebook.markdown
@@ -50,7 +50,7 @@ automation:
- '+919784516314'
```
-You can also send messages to users that do not have stored their phone number with Facebook, but this requires a bit more work. The Messenger platform uses page specific user IDs instead of a global user ID. You will need to enable a webhook for the "messages" event in Facebook's developer console. Once a user writes a message to a page, that webhook will then receive the user's page specific ID as part of the webhook's payload. Below is a simple PHP script that reacts to the message "get my id" and sends a reply containing the user's ID:
+You can also send messages to users that do not have stored their phone number on Facebook, but this requires a bit more work. The Messenger platform uses page-specific user IDs instead of a global user ID. You will need to enable a webhook for the "messages" event in Facebook's developer console. Once a user writes a message to a page, that webhook will then receive the user's page specific ID as part of the webhook's payload. Below is a simple PHP script that reacts to the message "get my id" and sends a reply containing the user's ID:
```php
:homeserver.tld"`, but can also be allocated aliases like `"#roomname:homeserver.tld"`. Make sure to use quotes around the room id or alias to escape special characters (`!`, and `#`) in YAML. The notifying account may need to be invited to the room, depending on the individual rooms policies.
diff --git a/source/_components/pilight.markdown b/source/_components/pilight.markdown
index 2e7e1b0150..45e9832381 100644
--- a/source/_components/pilight.markdown
+++ b/source/_components/pilight.markdown
@@ -19,6 +19,8 @@ This pilight hub connects to the [pilight-daemon](https://manual.pilight.org/pro
The received and supported RF codes are put on the event bus of Home Assistant and are therefore directly usable by other components (e.g., automation). Additionally a send service is provided to send RF codes.
+## {% linkable_title Configuration %}
+
To integrate pilight into Home Assistant, add the following section to your `configuration.yaml` file:
```yaml
diff --git a/source/_components/qwikswitch.markdown b/source/_components/qwikswitch.markdown
index 8889e29fbc..e915be3979 100644
--- a/source/_components/qwikswitch.markdown
+++ b/source/_components/qwikswitch.markdown
@@ -60,16 +60,19 @@ On some QS Mobile servers button events are only generated for switches added to
### {% linkable_title Qwikswitch Sensors %}
-The sensor configuration is a list of sensors. Each sensor is configured with the following parameters:
+The sensor configuration is a list of sensors. Depending on the type, it will be a sensor or binary_sensor. Each sensor is configured with the following parameters:
- **name** (*Required*): The sensor name from which the entity_id will be derived.
- **id** (*Required*): A QS_Id
- **type** (*Required*): The Qwikswitch sensor type. These could include:
- - imod (up to 6 channels)
- - door (single channel)
- - qwikcord (Channel1 = CTavg, Channel 2 = CTsum)
+ - imod (binary_sensor, up to 6 channels)
+ - door (binary_sensor, single channel)
+ - qwikcord (Channel 1 = CTavg, Channel 2 = CTsum)
- **channel** (*Optional, default=1*): The channel of interest. Refer to type above.
+The following parameters are only applicabe to binary_sensors (i.e. door/imod).
+- **invert** (*Optional, default=False): Invert the open/close state.
+- **class** (*Optional, default=door): The [class](https://www.home-assistant.io/components/binary_sensor) or binary_sensor.
Example sensor configuration:
diff --git a/source/_components/rainmachine.markdown b/source/_components/rainmachine.markdown
new file mode 100644
index 0000000000..e416c7f626
--- /dev/null
+++ b/source/_components/rainmachine.markdown
@@ -0,0 +1,71 @@
+---
+layout: page
+title: "RainMachine"
+description: "Instructions on how to integrate RainMachine units within Home Assistant."
+date: 2018-04-25 20:32
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: rainmachine.png
+ha_category: Hub
+ha_release: 0.69
+ha_iot_class: "Cloud Polling"
+---
+
+The `rainmachine` component is the main component to integrate all platforms
+related to [RainMachine smart Wi-Fi sprinkler controllers](http://www.rainmachine.com/).
+
+## {% linkable_title Base Configuration %}
+
+To connect to your RainMachine device, add the following to your
+`configuration.yaml` file:
+
+```yaml
+rainmachine:
+ ip_address: 192.168.1.100
+ password: YOUR_PASSWORD
+```
+
+To configure switch-related functionality, add configuration options beneath
+a `switches` key within the `rainmachine` sections of `configuration.yaml`
+as below:
+
+```yaml
+rainmachine:
+ ip_address: 192.168.1.100
+ password: YOUR_PASSWORD
+ switches:
+ # switch configuration options...
+```
+
+{% configuration %}
+ip_address:
+ description: the IP address or hostname of your RainMachine unit
+ required: optional
+ type: string
+password:
+ description: your RainMachine password.
+ required: true
+ type: string
+port:
+ description: the TCP port used by your unit for the REST API
+ required: false
+ type: int
+ default: 8080
+ssl:
+ description: whether communication with the local device should occur over HTTPS
+ required: false
+ type: boolean
+ default: true
+switches:
+ description: switch-related configuration options
+ required: false
+ type: map
+ keys:
+ zone_run_time:
+ description: the default number of seconds that a zone should run when turned on
+ required: false
+ type: int
+ default: 600
+{% endconfiguration %}
diff --git a/source/_components/remember_the_milk.markdown b/source/_components/remember_the_milk.markdown
index 62d7deab2a..70abbed77e 100644
--- a/source/_components/remember_the_milk.markdown
+++ b/source/_components/remember_the_milk.markdown
@@ -51,7 +51,7 @@ Configuration variables:
### {% linkable_title Step 2: registering your account %}
-After saving the configuration, you need to (re-)start Home Assistant. On the first start you will notice a new "Configuration" panel appearing on the Home Assistant page. After opening the configuration page, follow the link "Remember The Milk login". This will take you to a login page where you have to log in with your normal Rember The Milk credentials. This will authorize Home Assistant to access your Remember The Milk account.
+After saving the configuration, you need to (re-)start Home Assistant. On the first start you will notice a new "Configuration" panel appearing on the Home Assistant page. After opening the configuration page, follow the link "Remember The Milk login". This will take you to a login page where you have to log in with your normal Remember The Milk credentials. This will authorize Home Assistant to access your Remember The Milk account.
After that click on the "login completed" button. This will tell Home Assistant that you have completed the login process on the Remember The Milk page and Home Assistant should try to register with this account.
diff --git a/source/_components/sensor.deconz.markdown b/source/_components/sensor.deconz.markdown
index 6844c88d83..46dad20c0e 100644
--- a/source/_components/sensor.deconz.markdown
+++ b/source/_components/sensor.deconz.markdown
@@ -43,3 +43,28 @@ Entity ids will be sensor.device_name, where device_name is defined in deCONZ. S
- Xiaomi Smart Home Wireless Switch
- Temperature Sensor
- Xiaomi Temperature/Humidity Sensor
+
+#### {% linkable_title deCONZ Daylight Sensor %}
+
+The deCONZ Daylight sensor is a special sensor built into the deCONZ software since version 2.05.12. It is represented in Home Assistant as a sensor called sensor.daylight. The sensor's state value is a string corresponding to the phase of daylight (descriptions below taken from https://github.com/mourner/suncalc, on which the deCONZ implementation is based):
+
+| Sensor State | Description |
+|--------------|-------------|
+| sunrise_start | sunrise (top edge of the sun appears on the horizon) |
+| sunrise_end | sunrise ends (bottom edge of the sun touches the horizon) |
+| golden_hour_1 | morning golden hour (soft light, the best time for photography) |
+| solar_noon | solar noon (sun is in the highest position) |
+| golden_hour_2 | evening golden hour |
+| sunset_start | sunset starts (bottom edge of the sun touches the horizon) |
+| sunset_end | sunset (sun disappears below the horizon, evening civil twilight starts) |
+| dusk | dusk (evening nautical twilight starts) |
+| nautical_dusk | nautical dusk (evening astronomical twilight starts) |
+| night_start | night starts (dark enough for astronomical observations) |
+| nadir | nadir (darkest moment of the night, the sun is in the lowest position) |
+| night_end | night ends (morning astronomical twilight starts) |
+| nautical_dawn | nautical dawn (morning nautical twilight starts) |
+| dawn | dawn (morning nautical twilight ends, morning civil twilight starts) |
+
+The sensor also has an attribute called "daylight" that has the value `true` when the sensor's state is `golden_hour_1`, `solar_noon`, or `golden_hour_2`, and `false` otherwise.
+
+These states can be used in automations as a trigger (e.g., trigger when a certain phase of daylight starts or ends) or condition (e.g., trigger only if in a certain phase of daylight).
diff --git a/source/_components/sensor.domain_expiry.markdown b/source/_components/sensor.domain_expiry.markdown
new file mode 100644
index 0000000000..a70306909a
--- /dev/null
+++ b/source/_components/sensor.domain_expiry.markdown
@@ -0,0 +1,37 @@
+---
+layout: page
+title: "Domain Expiry"
+description: "Instructions on how to set up Domain expiry sensors within Home Assistant."
+date: 2018-04-24 14:14
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: home-assistant.png
+ha_category: System Monitor
+ha_release: 0.69
+ha_iot_class: "depends"
+---
+
+The `domain_expiry` sensor gets whois information about domain and displays the expiry in days.
+
+To add the Domain Expiry sensor to your installation, add these options to `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: domain_expiry
+ domain: home-assistant.io
+```
+
+{% configuration %}
+domain:
+ description: Domain name to track
+ required: true
+ type: string
+name:
+ description: The friendly name for the certificate.
+ required: false
+ type: string
+ default: Domain Expiry
+{% endconfiguration %}
\ No newline at end of file
diff --git a/source/_components/sensor.fritzbox_callmonitor.markdown b/source/_components/sensor.fritzbox_callmonitor.markdown
index 85643e2dff..dd57677a9c 100644
--- a/source/_components/sensor.fritzbox_callmonitor.markdown
+++ b/source/_components/sensor.fritzbox_callmonitor.markdown
@@ -14,10 +14,11 @@ ha_iot_class: "Local Polling"
---
-The `fritzbox_callmonitor` sensor monitors the call monitor exposed by [AVM Fritz!Box](http://avm.de/produkte/fritzbox/) routers
-on TCP port 1012. It will assume the values `idle`, `ringing`, `dialing`, or `talking` with the phone numbers involved contained in the state attributes.
+The `fritzbox_callmonitor` sensor monitors the call monitor exposed by [AVM Fritz!Box](http://avm.de/produkte/fritzbox/) routers on TCP port 1012. It will assume the values `idle`, `ringing`, `dialing` or `talking` with the phone numbers involved contained in the state attributes.
It can also access the internal phone book of the router to look up the names corresponding to the phone numbers and store them in the state attributes.
+## {% linkable_title Configuration %}
+
To activate the call monitor on your Fritz!Box, dial #96\*5\* from any phone connected to it.
To use the Fritz!Box call monitor in your installation, add the following to your `configuration.yaml` file:
@@ -44,7 +45,7 @@ Configuration variables:
The example below shows a full configuration for a call monitor with phone book support.
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: fritzbox_callmonitor
name: Phone
@@ -61,8 +62,9 @@ sensor:
This example shows how to send notifications whenever the sensor's state changes. You will get notified both when you receive a call and also when a call is placed.
+{% raw %}
```yaml
-# Example configuration.yml entry.
+# Example configuration.yaml entry.
automation:
- alias: "Notify about phone state"
trigger:
@@ -73,7 +75,7 @@ automation:
data:
title: "Phone"
message: >-
- {% raw %}{% if is_state("sensor.phone", "idle") %}
+ {% if is_state("sensor.phone", "idle") %}
Phone is idle
{% elif is_state("sensor.phone", "dialing") %}
Calling {{ states.sensor.phone.attributes.to_name }} ({{ states.sensor.phone.attributes.to }})
@@ -81,5 +83,6 @@ automation:
Incoming call from {{ states.sensor.phone.attributes.from_name }} ({{ states.sensor.phone.attributes.from }})
{% else %}
Talking to {{ states.sensor.phone.attributes.with_name }} ({{ states.sensor.phone.attributes.with }})
- {% endif %}{% endraw %}
+ {% endif %}
```
+{% endraw %}
diff --git a/source/_components/sensor.gitter.markdown b/source/_components/sensor.gitter.markdown
index a114887f97..72f3c4b7dc 100644
--- a/source/_components/sensor.gitter.markdown
+++ b/source/_components/sensor.gitter.markdown
@@ -15,19 +15,27 @@ ha_release: 0.47
This `gitter` sensor allows one to monitor a [Gitter.im](https://gitter.im) chatroom for unread messages.
+## {% linkable_title Configuration %}
+
Visit [Gitter Developer Apps](https://developer.gitter.im/apps) to retrieve your "Personal Access Token".
To use a Gitter sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: gitter
api_key: YOUR_API_TOKEN
```
-Configuration variables:
-
-- **api_key** (*Required*): Your Gitter.im API token.
-- **room** (*Optional*): Gitter room to monitor. Defaults to `home-assistant/home-assistant`
-
+{% configuration %}
+api_key:
+ description: Your Gitter.im API token.
+ required: true
+ type: string
+room:
+ description: Gitter room to monitor.
+ required: false
+ type: string
+ default: home-assistant/home-assistant
+{% endconfiguration %}
diff --git a/source/_components/sensor.hive.markdown b/source/_components/sensor.hive.markdown
index 3e7350e147..0d4d087516 100644
--- a/source/_components/sensor.hive.markdown
+++ b/source/_components/sensor.hive.markdown
@@ -14,8 +14,12 @@ ha_iot_class: "Cloud Polling"
---
-The 'hive' sensor component can expose as a sensor the current online status of your Hive Hub.
+The `hive` sensor component exposes Hive data as a sensor.
+The platform exposes the following sensors:
+
+- Hive Hub Online Status
+- Hive Outside Temperature
Full configuration details can be found on the main [Hive component](/components/hive/) page.
diff --git a/source/_components/sensor.markdown b/source/_components/sensor.markdown
index 57ee8300bb..647f0e7ab0 100644
--- a/source/_components/sensor.markdown
+++ b/source/_components/sensor.markdown
@@ -9,8 +9,21 @@ sharing: true
footer: true
---
-Sensors are gathering information about states and conditions.
+Sensors are gathering information about states and conditions.
Home Assistant currently supports a wide range of sensors. They are able to display information which are provides by Home Assistant directly, are gathered from web services, and, of course, physical devices. Please check the sidebar for a full list of supported sensor platforms.
+### {% linkable_title Device Class %}
+The way these sensors are displayed in the frontend can be modified in the [customize section](/docs/configuration/customizing-devices/). The following device classes are supported for sensors:
+
+- **None**: Generic sensor. This is the default and doesn't need to be set.
+- **battery**: Percentage of battery that is left.
+- **humidity**: Percentage of humidity in the air.
+- **illuminance**: The current light level in lx or lm.
+- **temperature**: Temperature in °C or °F.
+
+
+
+Example of various device class icons for sensors.
+
diff --git a/source/_components/sensor.mitemp_bt.markdown b/source/_components/sensor.mitemp_bt.markdown
new file mode 100644
index 0000000000..0cfaa72542
--- /dev/null
+++ b/source/_components/sensor.mitemp_bt.markdown
@@ -0,0 +1,93 @@
+---
+layout: page
+title: "Xiaomi BLE Temperature and Humidity sensor"
+description: "Instructions on how to integrate MiTemp BLE temperature and humidity sensor with Home Assistant."
+date: 2018-04-22 12:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: xiaomi.png
+ha_category: DIY
+ha_release: 0.69
+ha_iot_class: "Local Polling"
+---
+
+The `mitemp_bt` sensor platform allows one to monitor room temperature and humidity. The [Xiaomi Mijia BLE Temperature and Humidity sensor with LCD](https://www.amazon.com/Temperature-Humidity-Xiaomi-Bluetooth-Screen-Remote/dp/B079L6N6PC) is a small Bluetooth Low Energy device that monitors the room temperature and humidity. As only a single BLE device can be polled at the same time, the library employs locking to make sure this is the case.
+
+# Installation
+Depending on the operating system you're running, you have to configure the proper Bluetooth backend on your system:
+
+- On [Hass.io](/hassio/installation/): Not yet supported.
+- On other Linux systems:
+ - Preferred solution: Install the `bluepy` and `btlewrap` library (via pip). When using a virtual environment, make sure to use install the library in the right one.
+ - Fallback solution: Install `btlewrap` library (via pip) and `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth`, `bluez-deprecated`
+- Windows and MacOS are currently not supported by the btlewrap library.
+
+# Configuration
+Start a scan to determine the MAC addresses of the sensor:
+
+```bash
+$ sudo hcitool lescan
+LE Scan ...
+4C:65:A8:D2:31:7F MJ_HT_V1
+[...]
+```
+
+Or if your distribution is using bluetoothctl:
+
+```bash
+$ bluetoothctl
+[bluetooth]# scan on
+Discovery started
+[CHG] Controller XX:XX:XX:XX:XX:XX Discovering: yes
+[NEW] Device 4C:65:A8:D2:31:7F MJ_HT_V1
+
+```
+
+
+Check for `MJ_HT_V1` or similar entries, those are your sensor.
+
+To use your Mi Temperature and Humidity sensor in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: mitemp_bt
+ mac: 'xx:xx:xx:xx:xx:xx'
+ monitored_conditions:
+ - temperature
+```
+
+- **mac** (*Required*): The MAC address of your sensor.
+- **monitored_conditions** array (*Optional*): The parameters that should be monitored (defaults to monitoring all parameters).
+ - **temperature**: Temperature in C at the sensor's location.
+ - **humidity**: Humidity level in % at the sensor's location.
+ - **battery**: Battery details (in %).
+- **name** (*Optional*): The name displayed in the frontend.
+- **force_update** (*Optional*): Sends update events even if the value hasn't changed.
+- **median** (*Optional*): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, `median: 1` will work fine.
+- **timeout** (*Optional*): Define the timeout value in seconds when polling (defaults to 10 if not defined)
+- **retries** (*Optional*): Define the number of retries when polling (defaults to 2 if not defined)
+- **cache_value** (*Optional*): Define cache expiration value in seconds (defaults to 1200 if not defined)
+- **adapter** (*Optional*): Define the Bluetooth adapter to use (defaults to hci0). Run `hciconfig` to get a list of available adapters.
+
+Note that by default the sensor is only polled once every 5 minutes. This means with the `median: 3` setting will take as least 15 minutes before the sensor will report a value after a Home Assistant restart. Even though the hardware is able to provide new values every second, room temperaturs don't change that quickly.
+Reducing polling intervals will have a negative effect on the battery life.
+
+A full configuration example could look like the one below:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: mitemp_bt
+ mac: 'xx:xx:xx:xx:xx:xx'
+ name: Kids Room Temp
+ force_update: false
+ median: 3
+ monitored_conditions:
+ - temperature
+ - humidity
+ - battery
+```
+
diff --git a/source/_components/sensor.modbus.markdown b/source/_components/sensor.modbus.markdown
index a94d711fda..5868888488 100644
--- a/source/_components/sensor.modbus.markdown
+++ b/source/_components/sensor.modbus.markdown
@@ -16,10 +16,12 @@ ha_iot_class: "Local Push"
The `modbus` sensor allows you to gather data from [Modbus](http://www.modbus.org/) registers.
+## {% linkable_title Configuration %}
+
To use your Modbus sensors in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
platform: modbus
registers:
diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown
index f84296bd86..0b44200064 100644
--- a/source/_components/sensor.mqtt.markdown
+++ b/source/_components/sensor.mqtt.markdown
@@ -16,10 +16,12 @@ ha_iot_class: depends
This `mqtt` sensor platform uses the MQTT message payload as the sensor value. If messages in this `state_topic` are published with *RETAIN* flag, the sensor will receive an instant update with last known value. Otherwise, the initial state will be undefined.
+## {% linkable_title Configuration %}
+
To use your MQTT sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: mqtt
state_topic: "home/bedroom/temperature"
@@ -80,6 +82,15 @@ json_attributes:
description: A list of keys to extract values from a JSON dictionary payload and then set as sensor attributes.
reqired: false
type: list, string
+unique_id:
+ description: "An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception."
+ required: false
+ type: string
+device_class:
+ description: The type/class of the sensor to set the icon in the frontend.
+ required: false
+ type: device_class
+ default: None
{% endconfiguration %}
## {% linkable_title Examples %}
@@ -88,17 +99,17 @@ In this section you find some real life examples of how to use this sensor.
### {% linkable_title JSON attributes configuration %}
-The example sensor below shows a configuration example which uses JSON in the state topic to add extra attributes. It also makes use of the availability topic. Attributes can then be extracted in [Templates](configuration/templating/#attributes); Example to extract data from the sensor below {% raw %}'{{ states.sensor.bs_client_name.attributes.ClientName }}'{% endraw %}.
+The example sensor below shows a configuration example which uses JSON in the state topic to add extra attributes. It also makes use of the availability topic. Attributes can then be extracted in [Templates](/docs/configuration/templating/#attributes). For example, to extract the `ClientName` attribute from the sensor below, use a template similar to: {% raw %}`{{ state_attr('sensor.bs_rssi', 'ClientName') }}`{% endraw %}.
{% raw %}
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: mqtt
- state_topic: "HUISHS/BunnyShed/NodeHealthJSON"
name: "BS RSSI"
- unit_of_measurement: "dBm"
- value_template: '{{ value_json.RSSI }}'
+ state_topic: "HUISHS/BunnyShed/NodeHealthJSON"
+ unit_of_measurement: 'dBm'
+ value_template: "{{ value_json.RSSI }}"
availability_topic: "HUISHS/BunnyShed/status"
payload_available: "online"
payload_not_available: "offline"
@@ -114,7 +125,7 @@ sensor:
### {% linkable_title Get battery level %}
-If you are using the [Owntracks](/components/device_tracker.owntracks/) and enable the reporting of the battery level then you can use a MQTT sensor to keep track of your battery. A regular MQTT message from Owntracks looks like this:
+If you are using the [OwnTracks](/components/device_tracker.owntracks/) and enable the reporting of the battery level then you can use a MQTT sensor to keep track of your battery. A regular MQTT message from OwnTracks looks like this:
```bash
owntracks/tablet/tablet {"_type":"location","lon":7.21,"t":"u","batt":92,"tst":144995643,"tid":"ta","acc":27,"lat":46.12}
@@ -124,13 +135,13 @@ Thus the trick is extracting the battery level from the payload.
{% raw %}
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: mqtt
- state_topic: "owntracks/tablet/tablet"
name: "Battery Tablet"
- unit_of_measurement: "%"
- value_template: '{{ value_json.batt }}'
+ state_topic: "owntracks/tablet/tablet"
+ unit_of_measurement: '%'
+ value_template: "{{ value_json.batt }}"
```
{% endraw %}
@@ -150,18 +161,18 @@ Then use this configuration example to extract the data from the payload:
{% raw %}
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: mqtt
- state_topic: 'office/sensor1'
- name: 'Temperature'
+ name: "Temperature"
+ state_topic: "office/sensor1"
unit_of_measurement: '°C'
- value_template: '{{ value_json.temperature }}'
+ value_template: "{{ value_json.temperature }}"
- platform: mqtt
- state_topic: 'office/sensor1'
- name: 'Humidity'
+ name: "Humidity"
+ state_topic: "office/sensor1"
unit_of_measurement: '%'
- value_template: '{{ value_json.humidity }}'
+ value_template: "{{ value_json.humidity }}"
```
{% endraw %}
@@ -186,10 +197,10 @@ The configuration will look like the example below:
{% raw %}
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: mqtt
- state_topic: 'home/bathroom/analog/brightness'
- name: Brightness
+ name: "Brightness"
+ state_topic: "home/bathroom/analog/brightness"
```
{% endraw %}
diff --git a/source/_components/sensor.mqtt_room.markdown b/source/_components/sensor.mqtt_room.markdown
index 598dafefb1..96aaa9dc7d 100644
--- a/source/_components/sensor.mqtt_room.markdown
+++ b/source/_components/sensor.mqtt_room.markdown
@@ -16,6 +16,8 @@ ha_iot_class: depends
The `mqtt_room` sensor platform allows you to detect the indoor location of devices using MQTT clients.
+## {% linkable_title Configuration %}
+
To use this device tracker in your installation, add the following to your `configuration.yaml` file:
```yaml
diff --git a/source/_components/sensor.mvglive.markdown b/source/_components/sensor.mvglive.markdown
index 16ee5f4a5e..7d613d8598 100644
--- a/source/_components/sensor.mvglive.markdown
+++ b/source/_components/sensor.mvglive.markdown
@@ -16,6 +16,8 @@ ha_iot_class: "Cloud Polling"
The `mvglive` sensor will give you the departure time of the next bus, tram, subway, or train at the next station or stop in the Munich public transport network. Additional details such as the line number and destination are present in the attributes.
+## {% linkable_title Configuration %}
+
To enable this sensor, add the following lines to your `configuration.yaml` file:
```yaml
@@ -42,7 +44,7 @@ Configuration variables:
The example below shows a full configuration with three sensors that showcase the various configuration options.
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: mvglive
nextdeparture:
diff --git a/source/_components/sensor.openevse.markdown b/source/_components/sensor.openevse.markdown
index 04568f0459..e9df04e8da 100644
--- a/source/_components/sensor.openevse.markdown
+++ b/source/_components/sensor.openevse.markdown
@@ -16,10 +16,12 @@ ha_iot_class: "Local Polling"
This `openevse` sensor platform pulls data from an [OpenEVSE](https://www.openevse.com/) Charging station equipped with an ESP8266-based wifi connection.
+## {% linkable_title Configuration %}
+
To enable this sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: openevse
host: IP_ADDRESS
diff --git a/source/_components/sensor.pilight.markdown b/source/_components/sensor.pilight.markdown
index cae336b6d8..2a33cc2a1d 100644
--- a/source/_components/sensor.pilight.markdown
+++ b/source/_components/sensor.pilight.markdown
@@ -16,10 +16,12 @@ ha_iot_class: depends
This `pilight` sensor platform for 433 MHz devices uses a value in the message payload as the sensor value. Unique identifiers (e.g., _uuid_) can be set to distinguish between multiple pilight devices. To use a pilight sensor the pilight Home Assistant hub has to be set up.
+## {% linkable_title Configuration %}
+
To use your sensor via pilight, make sure it is [supported](https://wiki.pilight.org/doku.php/protocols) and add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: pilight
variable: temperature
diff --git a/source/_components/sensor.postnl.markdown b/source/_components/sensor.postnl.markdown
new file mode 100644
index 0000000000..3087ce4b01
--- /dev/null
+++ b/source/_components/sensor.postnl.markdown
@@ -0,0 +1,47 @@
+---
+layout: page
+title: PostNL Sensor
+description: "Instructions on how to set up PostNL sensors within Home Assistant."
+date: 2017-04-22 08:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: postnl.png
+ha_category: Sensor
+ha_release: 0.69
+ha_iot_class: "Cloud Polling"
+---
+
+The `postnl` platform allows one to track deliveries by [PostNL](https://www.postnl.nl) (Dutch Postal Services). To use this sensor, you need a [PostNL Account](https://jouw.postnl.nl). It is possible to add multiple accounts to your Home Assistant configuration.
+
+## {% linkable_title Configuration %}
+
+To enable this sensor, add the following lines to your `configuration.yaml`:
+
+```yaml
+sensors:
+ - platform: postnl
+ username: POSTNL_USERNAME
+ password: POSTNL_PASSWORD
+```
+
+{% configuration %}
+name:
+ description: Sensor name
+ required: false
+ default: "postnl"
+ type: string
+username:
+ description: Account username of jouw.postnl.nl
+ required: true
+ type: string
+password:
+ description: Account password of jouw.postnl.nl
+ required: true
+ type: string
+{% endconfiguration %}
+
+
+This component is not affiliated with PostNL and retrieves date from the endpoints of the mobile application. Use at your own risk.
+
diff --git a/source/_components/sensor.qnap.markdown b/source/_components/sensor.qnap.markdown
index 66dd99404b..3814f37bd0 100644
--- a/source/_components/sensor.qnap.markdown
+++ b/source/_components/sensor.qnap.markdown
@@ -16,10 +16,12 @@ ha_iot_class: "Local Polling"
This `qnap` sensor allows getting various statistics from your [QNAP NAS](https://www.qnap.com/en-us/).
+## {% linkable_title Configuration %}
+
To use the `qnap` sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: qnap
host: IP_ADDRESS_OF_QNAP_NAS
diff --git a/source/_components/sensor.qwikswitch.markdown b/source/_components/sensor.qwikswitch.markdown
index b2574cdb1d..afc4fc6cb4 100644
--- a/source/_components/sensor.qwikswitch.markdown
+++ b/source/_components/sensor.qwikswitch.markdown
@@ -13,6 +13,6 @@ ha_iot_class: "Local Push"
ha_release: "0.67"
---
-The `qwikswitch` sensor platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) relays and dimmers as sensors from within Home Assistant.
+The `qwikswitch` sensor platform allows you to use your [QwikSwitch](http://www.qwikswitch.co.za/) sensors in Home Assistant.
The platform is configured through the [QwikSwitch component](/components/qwikswitch/).
diff --git a/source/_components/sensor.radarr.markdown b/source/_components/sensor.radarr.markdown
index 42294c8628..94a4665548 100644
--- a/source/_components/sensor.radarr.markdown
+++ b/source/_components/sensor.radarr.markdown
@@ -15,10 +15,12 @@ ha_release: 0.47
This `radarr` sensor platform pulls data from a given [Radarr](https://radarr.video/) instance.
+## {% linkable_title Configuration %}
+
To use your Radarr sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: radarr
api_key: YOUR_API_KEY
diff --git a/source/_components/sensor.sabnzbd.markdown b/source/_components/sensor.sabnzbd.markdown
index 840eb5cd08..27766435fd 100644
--- a/source/_components/sensor.sabnzbd.markdown
+++ b/source/_components/sensor.sabnzbd.markdown
@@ -68,7 +68,7 @@ Note that this will create the following sensors:
- sensor.sabnzbd_left
- sensor.sabnzbd_disk
- sensor.sabnzbd_disk_free
- - sensor.sabnzdb_queue_count
+ - sensor.sabnzbd_queue_count
```
As always, you can determine the names of sensors by looking at the dev-state page `< >` in the web interface.
diff --git a/source/_components/sensor.sht31.markdown b/source/_components/sensor.sht31.markdown
new file mode 100644
index 0000000000..7adbfc2cee
--- /dev/null
+++ b/source/_components/sensor.sht31.markdown
@@ -0,0 +1,54 @@
+---
+layout: page
+title: "Sensirion SHT31 Sensor"
+description: "Instructions on how to integrate SHT31 sensors within Home Assistant."
+date: 2018-03-06 19:15
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: DIY
+ha_release: 0.68
+logo: sensirion.png
+ha_iot_class: "Local Polling"
+---
+
+The `sht31` sensor platform allows you to get the current temperature and humidity from a Sensirion SHT31 device.
+
+## {% linkable_title Configuration %}
+
+To use your SHT31 sensor in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ platform: sht31
+ name: Bedroom
+ i2c_address: 0x44
+ monitored_conditions:
+ - temperature
+ - humidity
+```
+
+{% configuration %}
+ name:
+ description: The name of the sensor. Temperature and Humidity will be added to the name for the sensor name.
+ required: false
+ default: SHT31
+ type: string
+ i2c_address:
+ description: I2C address of the sensor.
+ required: false
+ default: "`0x44`"
+ type: int
+ monitored_conditions:
+ description: Conditions to monitor.
+ required: false
+ default: All conditions
+ type: list
+ keys:
+ temperature:
+ description: The current temperature of the SHT31.
+ humidity:
+ description: The current humidity of the SHT31.
+{% endconfiguration %}
diff --git a/source/_components/sensor.sigfox.markdown b/source/_components/sensor.sigfox.markdown
new file mode 100644
index 0000000000..f3f0bbb0ea
--- /dev/null
+++ b/source/_components/sensor.sigfox.markdown
@@ -0,0 +1,47 @@
+---
+layout: page
+title: "Sigfox Sensor"
+description: "Display messages from Sigfox devices in Home Assistant."
+date: 2018-04-07 12:10
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: sigfox.png
+ha_category: Sensor
+ha_iot_class: "Local Polling"
+ha_release: 0.68
+---
+
+[SigFox](https://www.sigfox.com/en) component adding a sensor for each Sigfox device registered with your account. The default name of sensors is `sigfox_{DEVICE_ID}` where `DEVICE_ID` is the devices Sigfox ID. The state of an added Sigfox sensor is the payload of the last message published by that device. Additionally, there are attributes for the latitude and longitude coordinates of the device, as well as the signal-to-noise ratio ( [snr](https://en.wikipedia.org/wiki/Signal-to-noise_ratio)).
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: sigfox
+ api_login: your_api_login
+ api_password: your_api_password
+```
+
+{% configuration %}
+api_login:
+ description: Your Sigfox API login.
+ required: true
+ type: string
+api_password:
+ description: Your Sigfox API password.
+ required: true
+ type: string
+name:
+ description: The name to prepend to the device ID.
+ required: false
+ default: "sigfox"
+ type: string
+{% endconfiguration %}
+
+Note that `your_api_login` and `your_api_password` are your **API access credentials** which can be accessed by following:
+
+1. Log into [Sigfox backend](https://backend.sigfox.com)
+1. Select `GROUP`
+1. Select `API ACCESS`
+1. Click on `new` and create new access entry
diff --git a/source/_components/sensor.socialblade.markdown b/source/_components/sensor.socialblade.markdown
new file mode 100644
index 0000000000..cf106c9133
--- /dev/null
+++ b/source/_components/sensor.socialblade.markdown
@@ -0,0 +1,37 @@
+---
+layout: page
+title: Social Blade Sensor
+description: "Instructions on how to set up Social Blade Sensor within Home Assistant."
+date: 2018-04-23 08:00
+sidebar: false
+comments: false
+sharing: true
+footer: true
+logo: socialblade.png
+ha_category: Sensor
+ha_release: 0.69
+ha_iot_class: "Cloud Polling"
+---
+
+The `socialblade` sensor component allows you get updates on a youtube channel using your social blade channel id. The sensor gets the subscribers and total views count from [Social Blade Website]( https://socialblade.com/)
+
+to get the channel id you can go to [Social Blade Website]( https://socialblade.com/) and search for youtube channel by username, then select the channel and grab the id from the url.
+The channel id will be the last part of the url :
+https://socialblade.com/youtube/channel/{channel_id}
+
+## Example for `configuration.yaml` :
+
+```yaml
+sensor:
+ - platform: socialblade
+ channel_id: YOUR_CHANNEL_NUMBER
+```
+
+{% configuration %}
+channel_id:
+ description: channel id number optained from the URL when you access Social Blade web client.
+ required: true
+ type: string
+{% endconfiguration %}
+
+All the data will be fetch from [Social Blade]( https://socialblade.com/).
diff --git a/source/_components/sensor.sonarr.markdown b/source/_components/sensor.sonarr.markdown
index 0257c70b55..13a4944fea 100644
--- a/source/_components/sensor.sonarr.markdown
+++ b/source/_components/sensor.sonarr.markdown
@@ -16,10 +16,12 @@ ha_iot_class: "Local Polling"
This `sonarr` sensor platform pulls data from a given [Sonarr](https://sonarr.tv/) instance.
+## {% linkable_title Configuration %}
+
To use your Sonarr sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: sonarr
api_key: YOUR_API_KEY
diff --git a/source/_components/sensor.synologydsm.markdown b/source/_components/sensor.synologydsm.markdown
index d9f4dddf51..0b4b4ba197 100644
--- a/source/_components/sensor.synologydsm.markdown
+++ b/source/_components/sensor.synologydsm.markdown
@@ -16,10 +16,12 @@ ha_iot_class: "Local Polling"
The `synologydsm` sensor platform allows getting various statistics from your [Synology NAS](https://www.synology.com).
+## {% linkable_title Configuration %}
+
To use the `synologydsm` sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
sensor:
- platform: synologydsm
host: IP_ADDRESS_OF_SYNOLOGY_NAS
@@ -33,7 +35,7 @@ sensor:
Configuration variables:
-- **host** (*Required*): The IP address of the Synology NAS to monitor
+- **host** (*Required*): The IP address of the Synology NAS to monitor.
- **port** (*Optional*): The port number on which the Synology NAS is reachable. Defaults to `5000`.
- **username** (*Required*): An user to connect to the Synology NAS (a separate account is advised, see the Separate User Configuration section below for details).
- **password** (*Required*): The password of the user to connect to the Synology NAS.
diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown
index 9d1ec23a0c..8ef5a5dc44 100644
--- a/source/_components/sensor.template.markdown
+++ b/source/_components/sensor.template.markdown
@@ -69,6 +69,11 @@ sensor:
description: Defines a template for the entity picture of the sensor.
required: false
type: template
+ device_class:
+ description: The type/class of the sensor to set the icon in the frontend.
+ required: false
+ type: device_class
+ default: None
{% endconfiguration %}
## {% linkable_title Considerations %}
diff --git a/source/_components/sensor.thethingsnetwork.markdown b/source/_components/sensor.thethingsnetwork.markdown
index cce7aad569..faeb8b7e65 100644
--- a/source/_components/sensor.thethingsnetwork.markdown
+++ b/source/_components/sensor.thethingsnetwork.markdown
@@ -17,6 +17,8 @@ The `thethingsnetwork` sensor platform allows you to get data from a [The Things
This platform requires that the [The Things Network component](/components/thethingsnetwork/) is set up and the [The Things Network Storage Integration](https://www.thethingsnetwork.org/docs/applications/storage/) as well.
+## {% linkable_title Prerequisites %}
+
Visit the [The Things Network Console](https://console.thethingsnetwork.org/) website, log in with your The Things Network credentials, choose your application from **Applications** and go to **Integrations**.
Add a new integration.
@@ -54,6 +56,8 @@ Select **Devices** to get the ID of your device that you want to use.
Devices overview
+## {% linkable_title Configuration %}
+
To enable this platform, add the following lines to your `configuration.yaml`:
```yaml
diff --git a/source/_components/sensor.uscis.markdown b/source/_components/sensor.uscis.markdown
new file mode 100644
index 0000000000..3d214dc818
--- /dev/null
+++ b/source/_components/sensor.uscis.markdown
@@ -0,0 +1,39 @@
+---
+layout: page
+title: USCIS Sensor
+description: "Instructions on how to set up USCIS within Home Assistant."
+date: 2018-03-21 08:00
+sidebar: false
+comments: false
+sharing: true
+footer: true
+logo: uscis.png
+ha_category: Sensor
+ha_release: 0.68
+ha_iot_class: "Cloud Polling"
+---
+
+The `uscis` sensor component allows you get updates on your USCIS case using your case/receipt number. The sensor gets the case information from [USCIS Website]( https://egov.uscis.gov/casestatus/landing.do)
+
+## Example for `configuration.yaml` :
+
+```yaml
+sensor:
+ - platform: uscis
+ case_id: YOUR_CASE_NUMBER
+ name: OPTIONAL_NAME
+```
+
+{% configuration %}
+friendly_name:
+ description: Name of the sensor in Home Assistant.
+ required: false
+ default: USCIS
+ type: string
+case_id:
+ description: Case/receipt number used to get the case details from USCIS web client.
+ required: true
+ type: string
+{% endconfiguration %}
+
+All the data will be fetch from [USCIS](https://egov.uscis.gov/casestatus/mycasestatus.do).
diff --git a/source/_components/sensor.waze_travel_time.markdown b/source/_components/sensor.waze_travel_time.markdown
index 2440930b9f..db3e3f0418 100644
--- a/source/_components/sensor.waze_travel_time.markdown
+++ b/source/_components/sensor.waze_travel_time.markdown
@@ -48,4 +48,12 @@ name:
required: false
default: "Waze Travel Time"
type: string
+incl_filter:
+ description: A substring that has to be present in the description of the selected route (a simple case-insensitive matching).
+ required: false
+ type: string
+excl_filter:
+ description: A substring that has to be NOT present in the description of the selected route (a simple case-insensitive matching).
+ required: false
+ type: string
{% endconfiguration %}
diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown
index da7ed21417..e7086ac9dc 100644
--- a/source/_components/snips.markdown
+++ b/source/_components/snips.markdown
@@ -2,7 +2,7 @@
layout: page
title: "Snips"
description: "Instructions on how to integrate Snips within Home Assistant."
-date: 2017-06-22 12:00
+date: 2018-05-02 12:00
sidebar: true
comments: false
sharing: true
@@ -14,7 +14,7 @@ ha_release: 0.48
The [Snips Voice Platform](https://www.snips.ai) allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on privacy. It runs 100% on-device, and does not require an internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management.
-The latest documentation can be found here: [Snips Platform Documentation](https://github.com/snipsco/snips-platform-documentation/wiki).
+The latest documentation can be found here: [Snips Platform Documentation](https://snips.gitbook.io/documentation/).

@@ -97,7 +97,7 @@ followed by a command, e.g.
> Set the lights to green in the living room
-As the Snips Platform parses this query into an intent, it will be published on MQTT, on the `hermes/intent/` topic. The Snips Home Assistant component subscribes to this topic, and handles the intent according to the rules defined in `configuration.yaml`, as explained below.
+As the Snips Platform parses this query into an intent, it will be published on MQTT, on the `hermes/intent/` topic. The Snips Home Assistant component subscribes to this topic, and handles the intent according to the rules defined in `configuration.yaml` file, as explained below.
#### {% linkable_title Optional: specifying an external MQTT broker %}
@@ -166,11 +166,11 @@ SetTimer:
```
{% endraw %}
-### Sending TTS Notifications
+### {% linkable_title Sending TTS Notifications %}
You can send TTS notifications to Snips using the snips.say and snips.say_action services. Say_action starts a session and waits for user response, "Would you like me to close the garage door?", "Yes, close the garage door".
-#### {% linkable_title Service `snips/say` %}
+#### {% linkable_title Service `snips.say` %}
| Service data attribute | Optional | Description |
|------------------------|----------|--------------------------------------------------------|
@@ -178,7 +178,7 @@ You can send TTS notifications to Snips using the snips.say and snips.say_action
| `site_id` | yes | Site to use to start session. |
| `custom_data` | yes | custom data that will be included with all messages in this session. |
-#### {% linkable_title Service `snips/say_action` %}
+#### {% linkable_title Service `snips.say_action` %}
| Service data attribute | Optional | Description |
|------------------------|----------|--------------------------------------------------------|
@@ -188,19 +188,48 @@ You can send TTS notifications to Snips using the snips.say and snips.say_action
| `can_be_enqueued` | yes | If True, session waits for an open session to end, if False session is dropped if one is running. |
| `intent_filter` | yes | Array of Strings - A list of intents names to restrict the NLU resolution to on the first query. |
-#### Configuration Examples
+
+### {% linkable_title Snips Support %}
+
+There is an active [discord](https://discordapp.com/invite/3939Kqx) channel for further support.
+
+### {% linkable_title Configuration Examples %}
+
+#### {% linkable_title Turn on a light %}
```yaml
-script:
+intent_script:
turn_on_light:
- sequence:
- service: script.turn_on_light
- service: snips.say
- data:
- text: 'OK, the light is now on'
+ speech:
+ type: plain
+ text: 'OK, closing the garage door'
+ action:
+ service: light.turn_on
+```
+##### {% linkable_title Open a Garage Door %}
+
+```yaml
+intent_script:
+ OpenGarageDoor:
+ speech:
+ type: plain
+ text: 'OK, opening the garage door'
+ action:
+ - service: cover.open_cover
+ data:
+ entity_id: garage_door
+```
+
+##### {% linkable_title Intiating a query %}
+
+Here is a more complex example. The automation is triggered if the garage door is open for more than 10 minutes.
+Snips will then ask you if you want to close it and if you respond with something like "Close the garage door" it
+will do so. Unfortunately there is no builtin support for yes and no responses.
+
+```yaml
automation:
- query_garage_door:
+ garage_door_has_been_open:
trigger:
- platform: state
entity_id: binary_sensor.my_garage_door_sensor
@@ -224,3 +253,40 @@ intent_script:
action:
- service: script.garage_door_close
```
+
+##### {% linkable_title Weather %}
+
+So now you can open and close your garage door, let's check the weather. Add the Weather by Snips Skill to your assistant. Create a weather sensor, in this example (Dark Sky)[/components/sensor.darksky/] and the `api_key` in the `secrets.yaml` file.
+
+```yaml
+- platform: darksky
+ name: "Dark Sky Weather"
+ api_key: !secret dark_sky_key
+ update_interval:
+ minutes: 10
+ monitored_conditions:
+ - summary
+ - hourly_summary
+ - temperature
+ - temperature_max
+ - temperature_min
+```
+
+Then create this `intent_script.yaml` file in your configuration directory.
+
+{% raw %}
+```yaml
+intent_script:
+ searchWeatherForecast:
+ speech:
+ type: plain
+ text: >
+ The weather is currently
+ {{ states('sensor.dark_sky_weather_temperature') | round(0) }}
+ degrees outside and {{ states('sensor.dark_sky_weather_summary') }}.
+ The high today will be
+ {{ states('sensor.dark_sky_weather_daily_high_temperature') | round(0)}}
+ and {{ states('sensor.dark_sky_weather_hourly_summary') }}
+```
+{% endraw %}
+
diff --git a/source/_components/switch.eufy.markdown b/source/_components/switch.eufy.markdown
new file mode 100644
index 0000000000..1a79dbd26b
--- /dev/null
+++ b/source/_components/switch.eufy.markdown
@@ -0,0 +1,19 @@
+---
+layout: page
+title: "Eufy Switch"
+description: "Instructions on how to integrate Eufy switches into Home Assistant."
+date: 2018-04-09 19:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: eufy.png
+ha_category: Switch
+ha_iot_class: "Local Polling"
+ha_release: 0.68
+---
+
+The `eufy` platform allows you to control your [Eufy](http://www.eufylife.com) switches from within Home Assistant.
+
+They will be automatically discovered if the [Eufy](/components/eufy/) component is enabled.
+
diff --git a/source/_components/switch.fritzbox.markdown b/source/_components/switch.fritzbox.markdown
new file mode 100644
index 0000000000..83657be0c8
--- /dev/null
+++ b/source/_components/switch.fritzbox.markdown
@@ -0,0 +1,31 @@
+---
+layout: page
+title: "Fritzbox Switch"
+description: "Instructions on how to integrate the AVM Fritzbox switch."
+date: 2017-11-12 17:10
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: avm.png
+ha_category: Switch
+ha_release: 0.68
+ha_iot_class: "Local Polling"
+---
+
+
+To get AVM Fritzbox switch follow the instructions for the general [Fritzbox](/components/fritzbox/).
+
+
+### {% linkable_title Attributes %}
+
+The are several attributes that can be useful for automations and templates.
+
+| Attribute | Description |
+| --------- | ----------- |
+| `device_locked` | The state of the key lock at the device.
+| `locked` | The state of the lock for configuring the device via the app or the Fritzbox web interface.
+| `temperature_unit` | The unit of the temperature sensor (only available if the device support temperature sensor).
+| `temperature` | The current temperature sensor reading (only available if the device supports temperature sensor).
+| `total_consumption` | The total power consumption since the beginning of operation (only available if the device supports power meter function).
+| `total_consumption_unit` | The unit of the total_consumption (only available if the device supports power meter function).
diff --git a/source/_components/switch.fritzdect.markdown b/source/_components/switch.fritzdect.markdown
index cceeffaef3..380deebdaf 100644
--- a/source/_components/switch.fritzdect.markdown
+++ b/source/_components/switch.fritzdect.markdown
@@ -35,11 +35,21 @@ switch:
password: YOUR_PASSWORD
```
-Configuration variables:
-
-- **username** (*Required*): The username for your Fritz!Box.
-- **password** (*Required*): The password for your Fritz!Box.
-- **host** (*Optional*): The IP address/hostname of your Fritz!Box. Defaults to `fritz.box`.
+{% configuration %}
+username:
+ description: The username for your Fritz!Box.
+ required: true
+ type: string
+password:
+ description: The password for your Fritz!Box.
+ required: true
+ type: string
+host:
+ description: The IP address/hostname of your Fritz!Box.
+ required: false
+ type: string
+ default: fritz.box
+{% endconfiguration %}
It is recommended to create a dedicated user for Home Assistant and only allow access to "Smart Home".
diff --git a/source/_components/switch.hive.markdown b/source/_components/switch.hive.markdown
index 8f7d867722..e4ea483797 100644
--- a/source/_components/switch.hive.markdown
+++ b/source/_components/switch.hive.markdown
@@ -14,10 +14,11 @@ ha_iot_class: "Cloud Polling"
---
-The 'hive' switch component integrates your Hive plugs into Home Assistant, enabling control of your devices.
+The `hive` switch platform integrates your Hive plugs into Home Assistant, enabling control of your devices.
-The Hive switch component supports the following Hive products:
-- **Hive Active Plug**
+The platform supports the following Hive products:
+
+- Hive Active Plug
diff --git a/source/_components/switch.homekit_controller.markdown b/source/_components/switch.homekit_controller.markdown
new file mode 100644
index 0000000000..43bf3be57b
--- /dev/null
+++ b/source/_components/switch.homekit_controller.markdown
@@ -0,0 +1,16 @@
+---
+layout: page
+title: "HomeKit Switch"
+description: "Instructions on how to setup HomeKit switches within Home Assistant."
+date: 2017-03-19 21:08
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: apple-homekit.png
+ha_category: Light
+ha_iot_class: "Local Polling"
+ha_release: 0.68
+---
+
+To get your HomeKit switches working with Home Assistant, follow the instructions for the general [HomeKit controller component](/components/homekit_controller/).
diff --git a/source/_components/switch.mochad.markdown b/source/_components/switch.mochad.markdown
index 5ffbdb3bf2..a1d7569ec1 100644
--- a/source/_components/switch.mochad.markdown
+++ b/source/_components/switch.mochad.markdown
@@ -14,10 +14,12 @@ ha_release: 0.32
The `mochad` switch platform lets you control an X10 enabled switch device.
+## {% linkable_title Configuration %}
+
To enable this sensor, you first have to set up the [mochad component](/components/mochad/) and then add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
switch:
- platform: mochad
devices:
@@ -31,3 +33,5 @@ Configuration variables:
- **name** (*Optional*): The name of the switch. Default is: x10_switch_dev_*address*.
- **comm_type** (*Optional*): pl (powerline) or rf (radio frequency). Default is pl.
+
+
diff --git a/source/_components/switch.modbus.markdown b/source/_components/switch.modbus.markdown
index 201e7b5daa..3bf176c125 100644
--- a/source/_components/switch.modbus.markdown
+++ b/source/_components/switch.modbus.markdown
@@ -16,10 +16,12 @@ ha_iot_class: "Local Push"
The `modbus` switch platform allows you to control [Modbus](http://www.modbus.org/) coils or registers.
+## {% linkable_title Configuration %}
+
To use your Modbus switches in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
switch:
platform: modbus
slave: 1
diff --git a/source/_components/switch.mqtt.markdown b/source/_components/switch.mqtt.markdown
index d440902e7e..295ae106db 100644
--- a/source/_components/switch.mqtt.markdown
+++ b/source/_components/switch.mqtt.markdown
@@ -15,6 +15,8 @@ ha_iot_class: depends
The `mqtt` switch platform lets you control your MQTT enabled switches.
+## {% linkable_title Configuration %}
+
In an ideal scenario, the MQTT device will have a `state_topic` to publish state changes. If these messages are published with a `RETAIN` flag, the MQTT switch will receive an instant state update after subscription, and will start with the correct state. Otherwise, the initial state of the switch will be `false` / `off`.
When a `state_topic` is not available, the switch will work in optimistic mode. In this mode, the switch will immediately change state after every command. Otherwise, the switch will wait for state confirmation from the device (message from `state_topic`).
@@ -24,7 +26,7 @@ Optimistic mode can be forced, even if the `state_topic` is available. Try to en
To enable this switch in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
switch:
- platform: mqtt
command_topic: "home/bedroom/switch1/set"
@@ -106,7 +108,7 @@ In this section you will find some real life examples of how to use this sensor.
The example below shows a full configuration for a switch.
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
switch:
- platform: mqtt
name: "Bedroom Switch"
@@ -140,7 +142,7 @@ The configuration will look like the example below:
{% raw %}
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
switch:
- platform: mqtt
name: bathroom
diff --git a/source/_components/switch.pilight.markdown b/source/_components/switch.pilight.markdown
index ffeeb1a947..ca2c837986 100644
--- a/source/_components/switch.pilight.markdown
+++ b/source/_components/switch.pilight.markdown
@@ -19,6 +19,8 @@ Additionally, RF commands can be defined that trigger this switch to turn on and
To be really sure that Home Assistant knows the actual state of your device it is recommended to use the RF remote with codes unknown to any of your 433 MHz devices. Thus you use the remote to trigger this switch to send the correct RF code to the device.
+## {% linkable_title Configuration %}
+
To define a Pilight switch, add the following lines to your `configuration.yaml`:
```yaml
diff --git a/source/_components/switch.rainbird.markdown b/source/_components/switch.rainbird.markdown
index 6fba9a2f99..673c4d1928 100644
--- a/source/_components/switch.rainbird.markdown
+++ b/source/_components/switch.rainbird.markdown
@@ -15,6 +15,8 @@ ha_iot_class: "Local Polling"
This `rainbird` switch platform allows interacting with [LNK WiFi](http://www.rainbird.com/landscape/products/controllers/LNK-WiFi.htm) module of the Rain Bird Irrigation system in Home Assistant.
+## {% linkable_title Configuration %}
+
Once you have enabled the [Rain Bird component](/components/rainbird), add the following to your `configuration.yaml` file:
```yaml
diff --git a/source/_components/switch.raincloud.markdown b/source/_components/switch.raincloud.markdown
index e5cbc2d070..2e2af72de8 100644
--- a/source/_components/switch.raincloud.markdown
+++ b/source/_components/switch.raincloud.markdown
@@ -25,7 +25,7 @@ switch:
Configuration variables:
-- **watering_minutes** (*Optional*): Value in minutes to watering your garden via frontend. Defaults to 15.
+- **watering_minutes** (*Optional*): Value in minutes to watering your garden via frontend. Defaults to 15. The values allowed are: 5, 10, 15, 30, 45, 60.
- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. If not specified, all conditions below will be enabled by default. The following conditions can be monitored.
- **auto_watering**: Toggle the watering scheduled per zone.
- **manual_watering**: Toggle manually the watering per zone. It will inherent the value in minutes specified on the RainCloud hub component.
diff --git a/source/_components/switch.rainmachine.markdown b/source/_components/switch.rainmachine.markdown
index 26b73e0aa8..f37ce0fbd5 100644
--- a/source/_components/switch.rainmachine.markdown
+++ b/source/_components/switch.rainmachine.markdown
@@ -13,84 +13,24 @@ ha_iot_class: "Cloud Polling"
ha_release: 0.51
---
-The `rainmachine` switch platform allows you to control programs and zones within a [RainMachine smart Wi-Fi sprinkler controller](http://www.rainmachine.com/).
-
-## {% linkable_title Configuring the Platform %}
-
-The platform allows for either local (i.e., directly across the LAN) or remote (i.e., through RainMachine's cloud API) access; the route you choose will dictate what your configuration should look like.
-
-For local access, specify the IP address/hostname of your RainMachine unit, your RainMachine password, and optionally, the device's HTTP port:
-
-```yaml
-switch:
- platform: rainmachine
- ip_address: 192.168.1.100
- password: YOUR_PASSWORD
-```
-
-For remote access, specify your RainMachine username/email and password:
-
-```yaml
-switch:
- platform: rainmachine
- email: user@host.com
- password: YOUR_PASSWORD
-```
-
-{% configuration %}
-password:
- description: Your RainMachine password.
- required: true
- type: string
-email:
- description: "Your RainMachine username/email. Cannot be used with the `ip_address` parameter."
- required: false
- type: string
-ip_address:
- description: "The IP address of your RainMachine unit; cannot be used with the `email` parameter."
- required: optional
- type: string
-port:
- description: The TCP port used by your unit for the REST API.
- required: false
- type: int
- default: 8080
-ssl:
- description: Whether communication with the local device should occur over HTTPS.
- required: false
- type: boolean
- default: true
-zone_run_time:
- description: The number of seconds that a zone should run when turned on.
- required: false
- type: int
- default: 600
-{% endconfiguration %}
+The `rainmachine` switch platform allows you to control programs and zones
+within a [RainMachine smart Wi-Fi sprinkler controller](http://www.rainmachine.com/).
+
+You must have the [RainMachine component](https://www.home-assistant.io/components/rainmachine/)
+configured to use this switch. After configuring that component, switches will
+automatically appear.
+
## {% linkable_title Controlling Your Device %}
-After Home Assistant loads, you will see new switches for every enabled program and zone. These work as expected:
+After Home Assistant loads, new switches will be added for every enabled
+program and zone. These work as expected:
- Program On/Off: starts/stops a program
-- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to determine how long to run for)
+- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to
+determine how long to run for)
-Programs and zones are linked. If a program is running its final zone, you will see both the program and zone switches turned on; turning either one off will turn the other one off (just like in the web app).
-
-## {% linkable_title Weblink %}
-
-If you would like to see and control more detailed information, create an [iFrame](/components/panel_iframe/) that renders the RainMachine web app:
-
-```yaml
-panel_iframe:
- rainmachine:
- title: RainMachine
- url: "https://my.rainmachine.com/s//ui/"
- icon: mdi:water-pump
-```
-
-You can find `` by logging into [https://my.rainmachine.com](https://my.rainmachine.com ) and taking note of the URL.
-
-## {% linkable_title For Awareness %}
-
-The remote RainMachine API currently has two broken operations (i.e., they return error codes): starting a program and stopping a program. Please note that starting/stopping programs with the remote API is disabled until RainMachine can fix the issue.
+Programs and zones are linked. While a program is running, you will see both
+the program and zone switches turned on; turning either one off will turn the
+other one off (just like in the web app).
diff --git a/source/_components/switch.rest.markdown b/source/_components/switch.rest.markdown
index db7b6e6e98..65f0afcd3e 100644
--- a/source/_components/switch.rest.markdown
+++ b/source/_components/switch.rest.markdown
@@ -15,6 +15,8 @@ ha_iot_class: "Local Polling"
The `rest` switch platform allows you to control a given endpoint that supports a [RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer). The switch can get the state via GET and set the state via POST on a given REST resource.
+## {% linkable_title Configuration %}
+
To enable this switch, add the following lines to your `configuration.yaml` file:
```yaml
@@ -66,6 +68,10 @@ password:
description: The password for accessing the REST endpoint.
required: false
type: string
+headers:
+ description: The headers for the request.
+ required: false
+ type: list, string
{% endconfiguration %}
@@ -82,13 +88,17 @@ This example shows a switch that uses a [template](/topics/templating/) to allow
{"is_active": "true"}
```
+{% raw %}
```yaml
switch:
- platform: rest
resource: http://IP_ADDRESS/led_endpoint
body_on: '{"active": "true"}'
body_off: '{"active": "false"}'
- is_on_template: '{% raw %}{{value_json.is_active}}{% endraw %}'
+ is_on_template: '{{ value_json.is_active }}'
+ headers:
+ Content-Type: application/json
```
+{% endraw %}
`body_on` and `body_off` can also depend on the state of the system. For example, to enable a remote temperature sensor tracking on a radio thermostat, one has to send the current value of the remote temperature sensor. This can be achieved by using the template `{% raw %}'{"rem_temp":{{states.sensor.bedroom_temp.state}}}'{% endraw %}`.
diff --git a/source/_components/switch.vesync.markdown b/source/_components/switch.vesync.markdown
index 83041ca78b..b02f476e93 100644
--- a/source/_components/switch.vesync.markdown
+++ b/source/_components/switch.vesync.markdown
@@ -45,7 +45,3 @@ VeSync switches will expose the following details.
| ------------------- | ------------------------------------------------------------------- | --------------- |
| `current_power_w` | The present power consumption of the switch in watts. | 100 |
| `today_energy_kwh` | The kilowatt hours used by the switch during the previous 24 hours. | 0.12 |
-| `connection_status` | The connection status of the switch. | online |
-| `connection_type` | The connection type of the switch. | wifi |
-| `device_type` | The device type of the switch. | wifi-switch-1.3 |
-| `model` | The model of the switch. | wifi-switch |
diff --git a/source/_components/switch.wake_on_lan.markdown b/source/_components/switch.wake_on_lan.markdown
index f30f120134..161cfcd1b5 100644
--- a/source/_components/switch.wake_on_lan.markdown
+++ b/source/_components/switch.wake_on_lan.markdown
@@ -15,6 +15,8 @@ ha_iot_class: "Local Polling"
The `wake_on_lan` (WOL) switch platform allows you to turn on a [WOL](https://en.wikipedia.org/wiki/Wake-on-LAN) enabled computer.
+## {% linkable_title Configuration %}
+
The WOL switch can only turn on your computer and monitor the state. There is no universal way to turn off a computer remotely. The `turn_off` variable is there to help you call a script when you have figured out how to remotely turn off your computer.
See below for suggestions on how to do this.
@@ -23,7 +25,7 @@ See below for suggestions on how to do this.
To enable this switch in your installation, add the following to your `configuration.yaml` file:
```yaml
-# Example configuration.yml entry
+# Example configuration.yaml entry
switch:
- platform: wake_on_lan
mac_address: "00-01-02-03-04-05"
@@ -42,7 +44,8 @@ Configuration variables:
Here are some real life examples of how to use the **turn_off** variable.
### {% linkable_title Suspending Linux %}
-Suggested recipe for letting the turn_off script suspend a Linux computer (the **target**)
+
+Suggested recipe for letting the `turn_off` script suspend a Linux computer (the **target**)
from Home Assistant running on another Linux computer (the **server**).
1. On the **server**, log in as the user account Home Assistant is running under. (I'm using `hass` in this example)
diff --git a/source/_components/thethingsnetwork.markdown b/source/_components/thethingsnetwork.markdown
index 65211c241d..328022f6cc 100644
--- a/source/_components/thethingsnetwork.markdown
+++ b/source/_components/thethingsnetwork.markdown
@@ -20,7 +20,7 @@ The Things network support various integrations to make the data available:
| The Things Network Integration | Home Assistant platform |
|---|---|
| [MQTT](https://www.thethingsnetwork.org/docs/applications/mqtt/) | |
-| [Storage](https://www.thethingsnetwork.org/docs/applications/storage/) | [`thethingsnetwork`](/component/sensor.thethingsnetwork/) |
+| [Storage](https://www.thethingsnetwork.org/docs/applications/storage/) | [`thethingsnetwork`](/components/sensor.thethingsnetwork/) |
| [HTTP](https://www.thethingsnetwork.org/docs/applications/http/) | |
### {% linkable_title Setup %}
diff --git a/source/_components/timer.markdown b/source/_components/timer.markdown
index 9f28b2ec7a..eb6db877f3 100644
--- a/source/_components/timer.markdown
+++ b/source/_components/timer.markdown
@@ -107,30 +107,29 @@ timer:
```yaml
# Example automations.yaml entry
-- action:
- - service: timer.start
- entity_id: timer.test
- alias: Timerswitch
+- alias: Timerswitch
id: 'Timerstart'
-
-# Timer is started when the switch pumprun is set to on.
+ # Timer is started when the switch pumprun is set to on.
trigger:
- platform: state
+ - platform: state
entity_id: switch.pumprun
to: 'on'
+ action:
+ - service: timer.start
+ entity_id: timer.test
# When timer is stopped, the time run out, another message is sent
-- action:
- - service: notify.nma
- data:
- message: "Timer stop"
- alias: Timerstop
+- alias: Timerstop
id: 'Timerstop'
trigger:
- platform: event
+ - platform: event
event_type: timer.finished
event_data:
entity_id: timer.test
+ action:
+ - service: notify.nma
+ data:
+ message: "Timer stop"
```
### {% linkable_title Control a timer from the frontend %}
diff --git a/source/_components/tts.amazon_polly.markdown b/source/_components/tts.amazon_polly.markdown
index 267d0c52b4..8be1fdc0a5 100644
--- a/source/_components/tts.amazon_polly.markdown
+++ b/source/_components/tts.amazon_polly.markdown
@@ -15,6 +15,8 @@ ha_release: 0.37
The `amazon_polly` text-to-speech platform that works with [Amazon Polly](https://aws.amazon.com/polly/) to create the spoken output.
Polly is a paid service via Amazon Web Services. There is a [free tier](https://aws.amazon.com/polly/pricing/) for the first 12 months and then a charge per million characters afterwards.
+## {% linkable_title Configuration %}
+
To get started, add the following lines to your `configuration.yaml` (example for Amazon Polly):
```yaml
@@ -23,33 +25,62 @@ tts:
- platform: amazon_polly
aws_access_key_id: AWS_ACCESS_KEY_ID
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
- profile_name: AWS_PROFILE
- region_name: 'us-east-1'
- voice: Joanna
```
-Configuration variables:
+{% configuration %}
+aws_access_key_id:
+ description: "Your AWS Access Key ID. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`."
+ required: true
+ type: string
+aws_secret_access_key:
+ description: "Your AWS Secret Access Key. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`."
+ required: true
+ type: string
+profile_name:
+ description: A credentials profile name. For more information, please see the [boto3 Documentation](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file) for more information.
+ required: false
+ type: string
+region_name:
+ description: "The region identifier to connect to. The default is `us-east-1`. See the [AWS Regions and Endpoints Reference](https://docs.aws.amazon.com/general/latest/gr/rande.html#pol_region) for available regions."
+ required: false
+ type: string or list
+name:
+ description: "Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`."
+ required: false
+ type: string
+text_type:
+ description: "Specify wherever to use text (default) or ssml markup by default."
+ required: false
+ type: string
+ default: text
+voice:
+ description: "Voice name to be used. See the [Amazon Documentation](http://docs.aws.amazon.com/polly/latest/dg/voicelist.html) for available voices."
+ required: false
+ type: string
+output_format:
+ description: "Override the default output format, e.g., `mp3`, `ogg_vorbis` or `pcm`."
+ required: false
+ type: string
+ default: mp3
+sample_rate:
+ description: "Override the default sample rate, defaults to 22050 for MP3 and Ogg Vorbis, 16000 for pcm."
+ required: false
+ type: string
+{% endconfiguration %}
-| Parameter | Value | Description |
-|---------------------|----------|-------------|
-| `aws_access_key_id` | Required | Your AWS Access Key ID. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name` |
-| `aws_secret_access_key` | Required | Your AWS Secret Access Key. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. |
-| `profile_name` | Optional | A credentials profile name. For more information, please see the [boto3 Documentation](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file) for more information. |
-| `region_name` | Optional | The region identifier to connect to. The default is `us-east-1`. |
-| `name` | Optional | Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. |
-| `text_type` | text/ssml | text or ssml: Specify wherever to use text (default) or ssml markup by default. |
-| `voice` | Optional | Voice name to be used. See the [Amazon Documentation](http://docs.aws.amazon.com/polly/latest/dg/voicelist.html) for available voices. |
-| `output_format` | mp3/ogg_vorbis/pcm | Override the default output format, defaults to MP3. |
-| `sample_rate` | 8000/16000/22050 | Override the default sample rate, defaults to 22050 for MP3 and Ogg Vorbis, 16000 for pcm. |
-## Usage
+## {% linkable_title Usage %}
+
Say to all `media_player` device entities:
+
```yaml
- service: tts.amazon_polly_say
data_template:
message: 'Hello from Amazon Polly'
```
+
or
+
```yaml
- service: tts.amazon_polly_say
data_template:
diff --git a/source/_components/tts.markdown b/source/_components/tts.markdown
index b1d1899135..5fc0d8de47 100644
--- a/source/_components/tts.markdown
+++ b/source/_components/tts.markdown
@@ -88,3 +88,33 @@ data_template:
## {% linkable_title Cache %}
The component has two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period.
+
+## {% linkable_title REST Api %}
+
+#### {% linkable_title POST /api/tts_get_url %}
+
+Returns an URL to the generated TTS file. Platform and message are required.
+
+```json
+{
+ "plaform": "amazon_polly",
+ "message": "I am speaking now"
+}
+```
+
+The return code is 200 if the file is generated. The message body will contain a JSON object with the URL.
+
+```json
+{
+ "url": "http://127.0.0.1:8123/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_demo.mp3"
+}
+```
+
+Sample `curl` command:
+
+```bash
+$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
+ -H "Content-Type: application/json" \
+ -d '{"message": "I am speaking now", "platform": "amazon_polly"}' \
+ http://localhost:8123/api/tts_get_url
+```
diff --git a/source/_components/vacuum.xiaomi_miio.markdown b/source/_components/vacuum.xiaomi_miio.markdown
index c8f9f7c872..9fa8cbe3da 100644
--- a/source/_components/vacuum.xiaomi_miio.markdown
+++ b/source/_components/vacuum.xiaomi_miio.markdown
@@ -127,7 +127,7 @@ The following table shows the units of measurement for each attribute:
As per [python-miio issue 185](https://github.com/rytilahti/python-miio/issues/185) the Mi-Home app no longer stores the token within the database (it's retrieved from Xiaomi servers from version 5.0.31+). Currently the only known fix is to uninstall, then install a downgraded version of the apk. Apkmirror is a trusted source for older versions of the app. [Mi-Home version 5.0.0](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-0-release/) is confirmed as working for the following Android methods.
-This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuum, Xiaomi Philips Lights and Xiaomi IR Remote. The Xiaomi Gateway uses another security method and requires a `key` (16 alphanumeric chars), which can be obtained
+This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuum, Mi Robot 2 (Roborock) Vacuum, Xiaomi Philips Lights and Xiaomi IR Remote. The Xiaomi Gateway uses another security method and requires a `key` (16 alphanumeric chars), which can be obtained
easily via a hidden menu item at the Mi-Home app or using the `miio` command line tool.
@@ -203,7 +203,7 @@ To fetch the token follow these instructions depending on your mobile phone plat
6. Download the 'ADB Backup Extractor' from [here](https://sourceforge.net/projects/adbextractor/files/latest/download)
7. Extract the data from the backup: `java -jar Android\ Backup\ Utilities/Android\ Backup\ Extractor/android-backup-extractor-20171005-bin/abe.jar unpack backup.ab unpacked.tar` (enter the password, if prompted)
8. Untar the unpacked data: `tar -xvf unpacked.tar`
-9. `sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name = "Mi Robot Vacuum";'` returns the token for your Xiaomi vacuum bot.
+9. `sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name like "%Vacuum%";'` returns the token for your Xiaomi vacuum bot.
#### {% linkable_title Linux and Android (rooted!) %}
@@ -245,7 +245,7 @@ To fetch the token follow these instructions depending on your mobile phone plat
8. Install [DB Browser for SQLite](http://sqlitebrowser.org/).
9. Open DB Browser and load the `.sqlite` file you saved from your backup.
10. Click on the `Execute SQL` tab.
-11. Input and run this query: `SELECT ZTOKEN FROM ZDEVICE WHERE ZNAME = "Mi Robot Vacuum"`
+11. Input and run this query: `SELECT ZTOKEN FROM ZDEVICE WHERE ZNAME LIKE "%Vacuum%"`
12. Copy the returned 32-digit hexadecimal string to your clipboard.
13. Open `Terminal` and execute this command: `echo '0: ' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000`
14. Use the resulting string as your token.
diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown
index 2bf6fdb5e3..1fd18f55c2 100644
--- a/source/_components/xiaomi_aqara.markdown
+++ b/source/_components/xiaomi_aqara.markdown
@@ -18,6 +18,9 @@ The `xiaomi_aqara` component allows you to integrate [Xiaomi](http://www.mi.com/
#### {% linkable_title Supported Devices %}
+- Xiaomi Aqara Gateway (lumi.gateway.v2, lumi.gateway.v3)
+- Aqara Air Conditioning Companion (lumi.acpartner.v3)
+- Aqara Intelligent Door Lock (lock.aq1)
- Temperature and Humidity Sensor (1st and 2nd generation)
- Motion Sensor (1st and 2nd generation)
- Door and Window Sensor (1st and 2nd generation)
@@ -42,8 +45,8 @@ The `xiaomi_aqara` component allows you to integrate [Xiaomi](http://www.mi.com/
- Gateway Radio
- Gateway Button
-- Aqara Air Conditioning Companion
-- Aqara Intelligent Air Conditioner Controller Hub
+- Xiaomi Mi Air Conditioning Companion (lumi.acpartner.v2)
+- Aqara Intelligent Air Conditioner Controller Hub (lumi.acpartner.v1)
- Decoupled mode of the Aqara Wall Switches (Single & Double)
- Additional alarm events of the Gas and Smoke Detector: Analog alarm, battery fault alarm (smoke detector only), sensitivity fault alarm, I2C communication failure
diff --git a/source/_components/zha.markdown b/source/_components/zha.markdown
index f751532e70..0e769fc6a4 100644
--- a/source/_components/zha.markdown
+++ b/source/_components/zha.markdown
@@ -26,8 +26,10 @@ There is currently support for the following device types within Home Assistant:
Known working ZigBee radios:
-- Nortek/GoControl Z-Wave & Zigbee USB Adaptor - Model HUSBZB-1
+- Nortek/GoControl Z-Wave & Zigbee USB Adapter - Model HUSBZB-1
- XBee Series 2C
+- [Elelabs ZigBee USB Adapter](https://elelabs.com/products/elelabs_usb_adapter.html)
+- [Elelabs ZigBee Raspberry Pi Shield](https://elelabs.com/products/elelabs_zigbee_shield.html)
To configure the component, a `zha` section must be present in the `configuration.yaml`,
and the path to the serial device for the radio and path to the database which will persist your network data is required.
diff --git a/source/_cookbook/automation_flashing_lights.markdown b/source/_cookbook/automation_flashing_lights.markdown
index df14121307..5a55323eac 100644
--- a/source/_cookbook/automation_flashing_lights.markdown
+++ b/source/_cookbook/automation_flashing_lights.markdown
@@ -97,6 +97,14 @@ script:
service: homeassistant.turn_off
data:
entity_id: switch.REL1
+ - alias: loop_room1
+ service: script.turn_on
+ data:
+ entity_id: script.flash_loop
+
+ flash_loop:
+ alias: Flash loop
+ sequence:
- delay:
# time for flash light off
seconds: 1
diff --git a/source/_cookbook/configuration_yaml_by_apocrathia.markdown b/source/_cookbook/configuration_yaml_by_apocrathia.markdown
new file mode 100644
index 0000000000..6ac2ccd329
--- /dev/null
+++ b/source/_cookbook/configuration_yaml_by_apocrathia.markdown
@@ -0,0 +1,12 @@
+---
+layout: page
+title: "Configuration.yaml by Apocrathia"
+description: ""
+date: 2018-05-02 12:40
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Example configuration.yaml
+ha_external_link: https://github.com/Apocrathia/home-assistant-config/
+---
diff --git a/source/_cookbook/track_battery_level.markdown b/source/_cookbook/track_battery_level.markdown
index b623f46b04..13eca37354 100644
--- a/source/_cookbook/track_battery_level.markdown
+++ b/source/_cookbook/track_battery_level.markdown
@@ -12,7 +12,7 @@ ha_category: Automation Examples
### {% linkable_title iOS Devices %}
-If you have a device running iOS (iPhone, iPad, etc), The [iCloud](/components/device_tracker.icloud/) is gathering various details about your device including the battery level. To display it in the Frontend use a [template sensor](/components/sensor.template/). You can also use the icon template option to create a dynamic icon that changes with the battery level.
+If you have a device running iOS (iPhone, iPad, etc), The [iCloud](/components/device_tracker.icloud/) is gathering various details about your device including the battery level. To display it in the Frontend use a [template sensor](/components/sensor.template/). You can also the `battery` [sensor device class](/components/sensor/#device-class) to dynamically change the icon with the battery level.
{% raw %}
```yaml
@@ -21,8 +21,6 @@ sensor:
sensors:
battery_iphone:
friendly_name: iPhone Battery
- # "entity_id:" ensures that this sensor will only update when your device tracker does.
- entity_id: device_tracker.iphone
unit_of_measurement: '%'
value_template: >-
{%- if states.device_tracker.iphone.attributes.battery %}
@@ -30,21 +28,10 @@ sensor:
{% else %}
{{ states.sensor.battery_iphone.state }}
{%- endif %}
- icon_template: >
- {% set battery_level = states.sensor.battery_iphone.state|default(0)|int %}
- {% set battery_round = (battery_level / 10) |int * 10 %}
- {% if battery_round >= 100 %}
- mdi:battery
- {% elif battery_round > 0 %}
- mdi:battery-{{ battery_round }}
- {% else %}
- mdi:battery-alert
- {% endif %}
+ device_class: battery
```
{% endraw %}
-The `else` part is used to have the sensor keep its last state if the newest [iCloud](/components/device_tracker.icloud/) update doesn't have any battery state in it (which happens sometimes). Otherwise the sensor will be blank.
-
### {% linkable_title Android and iOS Devices %}
While running the [Owntracks](/components/device_tracker.owntracks/) device tracker you can retrieve the battery level with a MQTT sensor. Replace username with your MQTT username (for the embedded MQTT it's simply homeassistant), and deviceid with the set Device ID in Owntracks.
@@ -57,5 +44,6 @@ sensor:
name: "Battery Tablet"
unit_of_measurement: "%"
value_template: '{{ value_json.batt }}'
+ device_class: battery
```
{% endraw %}
diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown
index c3cc8cc441..a76c1ed2aa 100644
--- a/source/_docs/configuration/customizing-devices.markdown
+++ b/source/_docs/configuration/customizing-devices.markdown
@@ -71,9 +71,10 @@ homeassistant:
### {% linkable_title Device Class %}
-Device class is currently supported by the following platforms:
+Device class is currently supported by the following components:
* [Binary Sensor](/components/binary_sensor/)
+* [Sensor](/components/sensor/)
* [Cover](/components/cover/)
### {% linkable_title Reloading customize %}
diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown
index 6b3c34b0a0..dfcd8bddce 100644
--- a/source/_docs/configuration/templating.markdown
+++ b/source/_docs/configuration/templating.markdown
@@ -80,6 +80,13 @@ Home Assistant adds extensions to allow templates to access all of the current s
- `float` will format the output as float.
- `strptime(string, format)` will parse a string to a datetime based on a [format][strp-format].
- `log(value, base)` will take the logarithm of the input. When the base is omitted, it defaults to `e` - the natural logarithm. Can also be used as a filter.
+- `sin(value)` will return the sine of the input. Can be used as a filter.
+- `cos(value)` will return the cosine of the input. Can be used as a filter.
+- `tan(value)` will return the tangent of the input. Can be used as a filter.
+- `sqrt(value)` will return the square root of the input. Can be used as a filter.
+- `e` mathematical constant, approximately 2.71828.
+- `pi` mathematical constant, approximately 3.14159.
+- `tau` mathematical constant, approximately 6.28318.
- Filter `round(x)` will convert the input to a number and round it to `x` decimals.
- Filter `timestamp_local` will convert an UNIX timestamp to local time/data.
- Filter `timestamp_utc` will convert an UNIX timestamp to UTC time/data.
@@ -133,7 +140,7 @@ With strings
```text
{% raw %}{% set tracker_name = "paulus"%}
-
+
{% if states("device_tracker." + tracker_name) != "unknown" %}
{{ state_attr("device_tracker." + tracker_name, "battery")}}
{% else %}
@@ -274,6 +281,10 @@ The following overview contains a couple of options to get the needed values:
{% raw %}{{ float(value_json) * (2**10) }}{% endraw %}
{% raw %}{{ value_json | log }}{% endraw %}
{% raw %}{{ log(1000, 10) }}{% endraw %}
+{% raw %}{{ sin(pi / 2) }}{% endraw %}
+{% raw %}{{ cos(tau) }}{% endraw %}
+{% raw %}{{ tan(pi) }}{% endraw %}
+{% raw %}{{ sqrt(e) }}{% endraw %}
# Timestamps
{% raw %}{{ value_json.tst | timestamp_local }}{% endraw %}
diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown
index 9398ec30bd..68503dab96 100644
--- a/source/_docs/configuration/yaml.markdown
+++ b/source/_docs/configuration/yaml.markdown
@@ -93,3 +93,15 @@ lights: !include lights.yaml
```
More information about this feature can also be found at [splitting configuration](/docs/configuration/splitting_configuration/).
+
+## {% linkable_title Common Issues %}
+
+### {% linkable_title found character '\t' %}
+
+If you see the following message:
+
+```
+found character '\t' that cannot start any token
+```
+
+This means that you've mistakenly entered a tab character, instead of spaces.
diff --git a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown
index d7c145fe8b..2aab9deb6d 100644
--- a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown
+++ b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown
@@ -11,7 +11,7 @@ redirect_from: /cookbook/tls_self_signed_certificate/
---
If your Home Assistant instance is only accessible from your local network you can still protect the communication between your browsers and the frontend with SSL/TLS.
-[Let's encrypt]({{site_root}}/blog/2015/12/13/setup-encryption-using-lets-encrypt/) will only work if you have a DNS entry and remote access is allowed.
+[Let's encrypt]({{site_root}}/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/) will only work if you have a DNS entry and remote access is allowed.
The solution is to use a self-signed certificate. As you most likely don't have a certification authority (CA) your browser will complain about the security. If you have a CA then this will not be an issue.
To create a certificate locally, you need the [OpenSSL](https://www.openssl.org/) command-line tool.
diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown
index d8e6ed3ff4..4245f1069c 100644
--- a/source/_docs/installation/docker.markdown
+++ b/source/_docs/installation/docker.markdown
@@ -18,6 +18,15 @@ Installation with Docker is straightforward. Adjust the following command so tha
$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant
```
+### {% linkable_title Raspberry Pi 3 (Raspbian) %}
+
+```bash
+$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/raspberrypi3-homeassistant:0.XX.x
+```
+
+The Docker container for Raspberry Pi 3 does not have a 'latest' tag so the version number must be specified explicitly, i.e. 0.68.0. This goes for both CLI and Docker Compose.
+
+
### {% linkable_title macOS %}
When using `docker-ce` (or `boot2docker`) on macOS, you are unable to map the local timezone to your Docker container ([Docker issue](https://github.com/docker/for-mac/issues/44)). Instead of `-v /etc/localtime:/etc/localtime:ro`, just pass in the timezone environment variable when you launch the container, e.g, `-e "TZ=America/Los_Angeles"`. Replace "America/Los_Angeles" with [your timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown
index e238c1777f..27b588f015 100644
--- a/source/_docs/mqtt/discovery.markdown
+++ b/source/_docs/mqtt/discovery.markdown
@@ -56,7 +56,7 @@ The `` level can be used by clients to only subscribe to their own (com
The following firmware for ESP8266, ESP32 and Sonoff unit has built-in support for MQTT discovery:
- [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) (starting with 5.11.1e)
-- [esphomelib](https://github.com/OttoWinter/esphomelib)
+- [esphomeyaml](https://esphomelib.com/esphomeyaml/index.html)
- [ESPurna](https://github.com/xoseperez/espurna)
- [Arilux AL-LC0X LED controllers](https://github.com/mertenats/Arilux_AL-LC0X)
diff --git a/source/_docs/tools/hass.markdown b/source/_docs/tools/hass.markdown
index 3ba0896f35..73e0bd68cd 100644
--- a/source/_docs/tools/hass.markdown
+++ b/source/_docs/tools/hass.markdown
@@ -39,6 +39,7 @@ optional arguments:
specified days
--log-file LOG_FILE Log file to write to. If not set, CONFIG/home-
assistant.log is used
+ --log-no-color Disable color logs
--runner On restart exit with code 100
--script ... Run one of the embedded scripts
--daemon Run Home Assistant as daemon
diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown
index c6a68fb3c6..6ee6a284fa 100644
--- a/source/_docs/z-wave.markdown
+++ b/source/_docs/z-wave.markdown
@@ -37,3 +37,9 @@ There are 12 different regions for Z-Wave devices, which relates to the frequenc
You'll now need to connect your [controller](/docs/z-wave/controllers/), [configure](/docs/z-wave/installation) the Z-Wave component, then [add some devices](/docs/z-wave/adding) using the [control panel](/docs/z-wave/control-panel). [This explains](/docs/z-wave/devices/) about devices, and how [entities are named](/docs/z-wave/entities).
You can get more information on the [available services](/docs/z-wave/services/) and [events](/docs/z-wave/events/), what the [query stages](/docs/z-wave/query-stage) of battery powered devices are, as well as details on configuring [specific devices](/docs/z-wave/device-specific/).
+
+## {% linkable_title Instant status updates %}
+
+When you toggle a switch or control a light locally you may find that it takes some time for that to be reflected in Home Assistant. That's because Lutron had patents on the status updates using the *Hail* command class, the traditional way of allowing devices to tell the controller that something happened locally. The same result can be achieved through the *Association* command class, or *Central Scene* command class (though, *Central Scene* isn't [fully supported](https://github.com/OpenZWave/open-zwave/pull/1125) in OpenZWave).
+
+If you search [the Z-Wave products database](http://products.z-wavealliance.org/) for your product and it lists one of those in the **Controlled** command classes (not the **Supported** command classes), then your device will be able to report state changes when they happen. If it doesn't then updates may either happen eventually, or you may need to (carefully) [enable polling](https://www.home-assistant.io/docs/z-wave/control-panel/#entities-of-this-node).
diff --git a/source/_includes/asides/developers_navigation.html b/source/_includes/asides/developers_navigation.html
deleted file mode 100644
index 2d770cb7a1..0000000000
--- a/source/_includes/asides/developers_navigation.html
+++ /dev/null
@@ -1,142 +0,0 @@
-
- {% include edit_github.html %}
-
-
diff --git a/source/_includes/site/sidebar.html b/source/_includes/site/sidebar.html
index 9e2417d29a..6ee8aaf444 100644
--- a/source/_includes/site/sidebar.html
+++ b/source/_includes/site/sidebar.html
@@ -4,8 +4,8 @@
{% include asides/component_navigation.html | compact_newlines %}
{% elsif url_parts[1] == 'cookbook' %}
{% include asides/cookbook_navigation.html | compact_newlines %}
- {% elsif url_parts[1] == 'developers' %}
- {% include asides/developers_navigation.html | compact_newlines %}
+ {% elsif url_parts[1] == 'developers' or url_parts[1] == 'help' %}
+ {% include asides/help_navigation.html | compact_newlines %}
{% elsif url_parts[1] == 'getting-started' %}
{% include asides/getting_started_navigation.html | compact_newlines %}
{% elsif url_parts[1] == 'docs' %}
diff --git a/source/_layouts/page.html b/source/_layouts/page.html
index 946ab88522..cc6ca95b78 100644
--- a/source/_layouts/page.html
+++ b/source/_layouts/page.html
@@ -7,6 +7,7 @@ layout: default
{% if url_parts[1] != 'components' and
url_parts[1] != 'cookbook' and
url_parts[1] != 'developers' and
+ url_parts[1] != 'help' and
url_parts[1] != 'getting-started' %}
{% include edit_github.html %}
{% endif %}
diff --git a/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown b/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown
index 19ab9e50a6..37178a2d66 100644
--- a/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown
+++ b/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown
@@ -61,12 +61,12 @@ __MQTT Sensors and Switches__
[mqtt-switch]: /components/switch.mqtt/
```yaml
-# Example configuration.yml entr
+# Example configuration.yaml entry
sensor:
platform: mqtt
name: "MQTT Sensor"
state_topic: "home/bedroom/temperature"
- unit_of_measurement: "ºC"
+ unit_of_measurement: "°C"
switch:
platform: mqtt
diff --git a/source/_posts/2018-04-14-release-67.markdown b/source/_posts/2018-04-14-release-67.markdown
index ec16c1d115..843cce88e6 100644
--- a/source/_posts/2018-04-14-release-67.markdown
+++ b/source/_posts/2018-04-14-release-67.markdown
@@ -28,6 +28,23 @@ This release includes a security fix. The error log was accessible via the API w
- Tahoma switches ([@ikucuze] - [#13636]) ([tahoma docs]) ([switch.tahoma docs]) (new-platform)
- Add support for Nanoleaf Aurora Light Panels ([@Oro] - [#13456]) ([light.nanoleaf_aurora docs]) (new-platform)
+## {% linkable_title Release 0.67.1 - April 17 %}
+
+- Fix Gogogate2 'available' attribute ([@dlbroadfoot] - [#13728])
+- Fix so it is possible to ignore discovered config entry handlers ([@Kane610] - [#13741])
+- Prevent vesync doing I/O in event loop ([@balloob] - [#13862]) ([switch.vesync docs])
+- Fix #13846 Double underscore in bluetooth address ([@aav7fl] - [#13884]) ([device_tracker docs])
+- Fix race condition for component loaded before listening ([@balloob] - [#13887]) ([config docs])
+- Missing property decorator added ([@syssi] - [#13889]) ([fan.xiaomi_miio docs])
+- Fix call to parent broadlink switch ([@Danielhiversen] - [#13906]) ([switch.broadlink docs])
+- Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs])
+- Upgrade pyqwikswitch to 0.71 ([@kellerza] - [#13920]) ([qwikswitch docs])
+- Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs])
+- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs])
+- Update pyfido to 2.1.1 ([@titilambert] - [#13947]) ([sensor.fido docs])
+- Bumped pypollencom to 1.1.2 ([@bachya] - [#13959]) ([sensor.pollen docs])
+- Revert "Upgrade pyqwikswitch to 0.71 ([@balloob] - [#13920]) ([qwikswitch 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.
@@ -395,3 +412,35 @@ Experiencing issues introduced by this release? Please report them in our [issue
[xiaomi_aqara docs]: /components/xiaomi_aqara/
[zwave docs]: /components/zwave/
[ann-ubiquiti]: /blog/2018/04/12/ubiquiti-and-home-assistant/
+[#13728]: https://github.com/home-assistant/home-assistant/pull/13728
+[#13741]: https://github.com/home-assistant/home-assistant/pull/13741
+[#13862]: https://github.com/home-assistant/home-assistant/pull/13862
+[#13884]: https://github.com/home-assistant/home-assistant/pull/13884
+[#13887]: https://github.com/home-assistant/home-assistant/pull/13887
+[#13889]: https://github.com/home-assistant/home-assistant/pull/13889
+[#13906]: https://github.com/home-assistant/home-assistant/pull/13906
+[#13908]: https://github.com/home-assistant/home-assistant/pull/13908
+[#13920]: https://github.com/home-assistant/home-assistant/pull/13920
+[#13940]: https://github.com/home-assistant/home-assistant/pull/13940
+[#13946]: https://github.com/home-assistant/home-assistant/pull/13946
+[#13947]: https://github.com/home-assistant/home-assistant/pull/13947
+[#13959]: https://github.com/home-assistant/home-assistant/pull/13959
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@Kane610]: https://github.com/Kane610
+[@aav7fl]: https://github.com/aav7fl
+[@bachya]: https://github.com/bachya
+[@balloob]: https://github.com/balloob
+[@dlbroadfoot]: https://github.com/dlbroadfoot
+[@kellerza]: https://github.com/kellerza
+[@syssi]: https://github.com/syssi
+[@titilambert]: https://github.com/titilambert
+[climate.honeywell docs]: /components/climate.honeywell/
+[config docs]: /components/config/
+[device_tracker docs]: /components/device_tracker/
+[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/
+[qwikswitch docs]: /components/qwikswitch/
+[sensor.fido docs]: /components/sensor.fido/
+[sensor.hydroquebec docs]: /components/sensor.hydroquebec/
+[sensor.pollen docs]: /components/sensor.pollen/
+[switch.broadlink docs]: /components/switch.broadlink/
+[switch.vesync docs]: /components/switch.vesync/
diff --git a/source/_posts/2018-04-22-hassio-2018.markdown b/source/_posts/2018-04-22-hassio-2018.markdown
new file mode 100644
index 0000000000..9050605355
--- /dev/null
+++ b/source/_posts/2018-04-22-hassio-2018.markdown
@@ -0,0 +1,64 @@
+---
+layout: post
+title: "Hass.io 2018"
+description: "We want to clarify how Hass.io relates to Home Assistant and talk about the roadmap for Hass.io in 2018."
+date: 2018-04-22 00:00:00
+date_formatted: "April 22, 2018"
+author: Pascal Vizeli
+author_twitter: pvizeli
+comments: true
+categories: Announcements
+og_image: /images/blog/2018-04-hassio-2018/blogpost.png
+---
+
+We noticed that there is some confusion in the community about how Hass.io relates to Home Assistant and what impact the upcoming Hass.io changes will have. We will try to clarify it all in this blog post.
+
+## {% linkable_title What is Hass.io %}
+Hass.io is a complete solution to run Home Assistant, by the authors of Home Assistant. The goal of Hass.io is to provide an easy to use and secure system, entirely managed from within the Home Assistant user interface.
+
+Hass.io is a complete solution, which means that it comes with its own highly secure and optimized operating system, a supervisor application to maintain and configure that system, and of course Home Assistant itself.
+
+When using Hass.io, you'll see a new Hass.io panel inside the Home Assistant UI. From here users can configure the system and install Home Assistant updates with a simple click of a button. Users are also able to make snapshots of their system, making it easy to migrate all their configuration to a new system or restore their system to a previous state.
+
+We wanted to be able to provide the convenience of seamless updates and configuration via the UI to other applications too, and so we introduced Hass.io add-ons. Any application can be packaged up as a Hass.io add-on, allowing any user to install and manage it easily. Since the introduction, we’ve seen an amazing growth in users sharing their add-ons with the community. It’s now possible to install an adblocker for your network, an MQTT broker or Tor with a single click.
+
+## {% linkable_title Upcoming changes to Hass.io %}
+We’ve introduced Hass.io [last July]. Since then, we’ve noticed some room for improvements in making Hass.io easier to use, lighter to maintain and easier to integrate with other host systems.
+
+Note that the descriptions of upcoming improvements can get quite technical. Feel free to jump to [the conclusion].
+
+### {% linkable_title Automatic add-on configuration %}
+Home Assistant has recently introduced configuration entries. We’re going to hook into this new functionality and allow add-ons to configure their related integration in Home Assistant automatically. For example, if a user installs the MQTT broker add-on, we will automatically set up Home Assistant to connect to it.
+
+### {% linkable_title Host management %}
+To control the host system, we currently use a custom service called HostControl. This allows the user to manage here host and restart/shutdown the computer from within Home Assistant. Instead of relying on our own system, we’re going to change to use D-Bus. D-Bus is a standardized mechanism for services and applications to communicate. Using a defined standard means that all parts of the host can now be remotely configured: sound, network, etc, etc. We will be extending the Hass.io panel in Home Assistant with controls to configure various parts of the host.
+
+### {% linkable_title Hass.io OS %}
+Hass.io is currently using a forked version of ResinOS as our operating system. ResinOS has been designed to run a minimal environment for Docker, simple over the air updates and connect to the ResinIO cloud. Our fork removed the ResinIO logic. Over time, ResinOS has been evolving but not in a direction that is aligned with our goals, resulting in the maintenance of our fork to take up a lot of time.
+
+The ResinOS build system is based on the Yocto Project. This is a very powerful system, but also requires specific support for each hardware platform need to be specifically added and maintained (like each version of Raspberry Pi), which caused long build and development times for Hass.io.
+
+All these factors made us decide to build our own, custom, operating system. We’re obviously not starting from scratch, but instead, are basing it off [Buildroot] as the foundation and use [RAUC] for over the air updates.
+
+Some things that the new operating system will be able to do:
+- Easier to add support for new hardware.
+- Updating will be atomic and has a Fail-safe. If a system fails to boot after an OS upgrade, it will fallback, by booting the previous working version.
+- Updates are required to be securely signed by the Home Assistant team, adding a whole new level of security.
+- Compressing the root file system, making it faster on SD cards and slow IO-Interfaces.
+- Compressing parts of the memory so that we can store more information.
+
+## {% linkable_title What Hass.io users should do to prepare for these updates %}
+At this moment: Nothing.
+
+The new Hass.io supervisor still supports the old ResinOS builds (our official downloads for Raspberry Pi and Intel NUC) and generic Linux installations. If you’re using a generic Linux installation on SUSE Linux or Ubuntu, you have to update your local AppArmor profile if you want to use the new functionality (instructions will be provided upon release).
+
+Once our new installation images with HassioOS are released, you have to reflash your device once. You can do this without losing any configuration by using our Snapshot feature:
+- Create a snapshot of your current installation and download it to your PC.
+- Flash the SD card with the new Hass.io OS image.
+- Restore your snapshot.
+- Enjoy a new and improved Hass.io
+
+[last July]: https://www.home-assistant.io/blog/2017/07/25/introducing-hassio/
+[the conclusion]: #what-hassio-users-should-do-to-prepare-for-these-updates
+[Buildroot]: https://buildroot.org/
+[RAUC]: https://www.rauc.io/
diff --git a/source/_posts/2018-04-24-launch-google-assistant-support.markdown b/source/_posts/2018-04-24-launch-google-assistant-support.markdown
new file mode 100644
index 0000000000..7a263f9682
--- /dev/null
+++ b/source/_posts/2018-04-24-launch-google-assistant-support.markdown
@@ -0,0 +1,44 @@
+---
+layout: post
+title: "Our Google Assistant skill is live!"
+description: "The Google Assistant integration for Home Assistant Cloud is now available to all."
+date: 2018-04-24 00:01:00
+date_formatted: "April 24, 2018"
+author: Paulus Schoutsen
+author_twitter: balloob
+comments: true
+categories: Announcement
+og_image: /images/blog/2018-04-google-assistant/google-assistant-home-assistant.png
+---
+
+
+
+
+
+Guess what? Yep, our Google Assistant Smart Home skill is live! It's a mouthful but it means that you can now control your Home Assistant devices via any Google Assistant enabled device by simply saying things like "Ok Google, turn on the lights".
+
+To get started:
+
+ - [Enable Home Assistant Cloud](/cloud/#enabling-the-cloud)
+ - Install our skill for Google Assistant. As of this writing, the link is not live yet: you can find it by opening the Google Home app -> Home Control, tap on the blue + at the bottom right and find Hass.io in the list.
+ - Optional: [Tweak the devices](/cloud/google_assistant/) that are getting exposed to Google Assistant.
+
+Things to note:
+
+ - The skill is called Hass.io, but will work with normal Home Assistant too. The name was necessary to avoid confusion between Home Assistant, Google Assistant and Google Home.
+ - Works with Home Assistant 0.65.6 or later.
+ - All message handling is done local and is [open source](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/google_assistant/trait.py).
+ - If you have an Android device with Google Assistant, you can control your devices too.
+ - Home Assistant 0.68 will introduce a button to the Cloud config panel to trigger a sync of available devices.
+
+Home Assistant Cloud is still in open beta and free to use. Open beta period has been extended to June 1. Many thanks to [Quadflight] for providing the Raspberry Pis that Google used for physical testing and thanks to [Arsaboo] for helping with testing.
+
+
+
+
+
+[Quadflight]: https://github.com/quadflight
+[Arsaboo]: https://github.com/arsaboo
diff --git a/source/_posts/2018-04-26-developer-site.markdown b/source/_posts/2018-04-26-developer-site.markdown
new file mode 100644
index 0000000000..2895a83338
--- /dev/null
+++ b/source/_posts/2018-04-26-developer-site.markdown
@@ -0,0 +1,20 @@
+---
+layout: post
+title: "New developer website"
+description: "We have extracted the developer section of our website into its own website."
+date: 2018-04-26 00:01:00
+date_formatted: "April 26, 2018"
+author: Paulus Schoutsen
+author_twitter: balloob
+comments: true
+categories: Announcement
+og_image: /images/blog/2018-04-developer-website/screenshot.png
+---
+
+When we launched the website in December 2014, we've only had a handful of components and usage instructions. Since then the website has grown to over a 1000 pages touching a wide range of topics. The growth, while great, also has put a lot of strain on how the docs are organised. One of the places that was especially suffering under the growth was the developer section. It was living under a single top menu item and had to contain everything in a single sidebar.
+
+To fix this, we're releasing a new website: [developers.home-assistant.io](https://developers.home-assistant.io). The website is aimed at people that are developing Home Assistant. It will contain resources how to setup your development environment, how to fix bugs, help with translations or improve the frontend. The main website will now solely be focused on Home Assistant users.
+
+Go check it out and let us know what you think: [developers.home-assistant.io](https://developers.home-assistant.io).
+
+
diff --git a/source/_posts/2018-04-27-release-68.markdown b/source/_posts/2018-04-27-release-68.markdown
new file mode 100644
index 0000000000..924546f866
--- /dev/null
+++ b/source/_posts/2018-04-27-release-68.markdown
@@ -0,0 +1,533 @@
+---
+layout: post
+title: "0.68: HomeKit control, Eufy, FritzBox, SigFox sensors"
+description: "Enjoy your weekend with this brand new release of Home Assistant."
+date: 2018-04-27 00:01:00
+date_formatted: "April 27, 2018"
+author: Paulus Schoutsen
+author_twitter: balloob
+comments: true
+categories: Release-Notes
+og_image: /images/blog/2018-04-0.68/components.png
+---
+
+
+
+Weekend is around the corner and that means that it's time for the next release of Home Assistant. 0.68 brings a ton of great goodies and bug fixes.
+
+One of the coolest features this release is by [@mjg59]: you are now able to **control** HomeKit devices. Previously, it was possible to control Home Assistant from iOS devices using the HomeKit protocol. With this release, Home Assistant is able to become the controller and use HomeKit to control lights and switches directly. Since HomeKit is vendor agnostic, it means that any HomeKit light or switch will now be compatible with Home Assistant. Very cool.
+
+Another cool new platform, also by [@mjg59], is support for Eufy devices. Eufy is the Home Automation brand of Anker and they have been producing reasonably priced devices which can now be controlled by Home Assistant too. Thanks for all your contributions [@mjg59] ❤️.
+
+## {% linkable_title New Platforms %}
+
+- Add support for Eufy bulbs and switches ([@mjg59] - [#13773]) ([eufy docs]) ([light.eufy docs]) ([switch.eufy docs]) (new-platform)
+- Add support for controlling homekit lights and switches ([@mjg59] - [#13346]) ([homekit_controller docs]) ([light.homekit_controller docs]) (new-platform)
+- Adding USCIS component ([@meauxt] - [#13764]) ([sensor.uscis docs]) (new-platform)
+- Add support for new platform: climate.modbus ([@Kirchoff] - [#12224]) ([climate.modbus docs]) (new-platform)
+- Add AVM fritzbox smarthome component ([@hthiery] - [#10688]) ([fritzbox docs]) ([climate.fritzbox docs]) ([switch.fritzbox docs]) (new-platform)
+- Adds SigFox sensor ([@robmarkcole] - [#13731]) ([sensor.sigfox docs]) (new-platform)
+- Add blackbird media player component ([@koolsb] - [#13549]) ([media_player.blackbird docs]) (new-platform)
+- Add support for Sensirion SHT31 temperature/humidity sensor ([@viorels] - [#12952]) ([sensor.sht31 docs]) (new-platform)
+- Qwikswitch binary sensors ([@kellerza] - [#14008]) ([qwikswitch docs]) ([binary_sensor.qwikswitch docs]) ([sensor.qwikswitch docs]) (beta fix) (new-platform)
+
+## {% linkable_title New Features %}
+
+- Support binary_sensor and device_tracker in HomeKit ([@Yonsm] - [#13735]) ([homekit docs]) (new-feature)
+- Add Homekit locks support ([@philk] - [#13625]) ([homekit docs]) (new-feature)
+- Support CO2/PM2.5/Light sensors in HomeKit ([@Yonsm] - [#13804]) ([homekit docs]) (new-feature)
+- Support Garage Doors in HomeKit ([@marthoc] - [#13796]) ([homekit docs]) (new-feature)
+- Support basic covers with open/close/stop services HomeKit ([@nickw444] - [#13819]) ([homekit docs]) (new-feature)
+
+## {% linkable_title Release 0.68.1 - April 30 %}
+
+- Fix color setting of tplink lights ([@amelchio] - [#14108]) ([light.tplink docs])
+- Improve precision of Hue color state ([@amelchio] - [#14113]) ([light.hue docs])
+- Revert Hue color state to be xy-based ([@amelchio] - [#14154])
+- Fix Python 3.6 compatibility for HomeKit controller ([@mjg59] - [#14160]) ([homekit_controller docs])
+- Added CONF_IP_ADDRESS to HomeKit ([@cdce8p] - [#14163]) ([homekit docs])
+- Do not sync entities with an empty name ([@balloob] - [#14181]) ([google_assistant docs])
+- Improve chromecast disconnection logic ([@OttoWinter] - [#14190]) ([media_player.cast docs])
+- Fix poorly formatted automations ([@balloob] - [#14196])
+- Disable eliqonline requirement ([@balloob] - [#14156])
+
+## {% linkable_title If you need help... %}
+
+...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
+
+## {% linkable_title Reporting Issues %}
+
+Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template.
+
+
+## {% linkable_title Breaking Changes %}
+
+- Icons! Material Design Icons has implemented some naming guidelines and this caused 9 icons to change names, 3 of which are home automation icons: `roomba` -> `robot-vacuum`, `nest-protect` -> `smoke-detector`, `nest-thermostat` -> `thermostat` ([see all changes](http://templarian.com/2018/04/18/material-design-icons-v2-3-54/)).
+- Support for multiple MAX!Cube LAN gateways caused a slight change to the configuration schema. Make sure to check the docs for the new one. ([@syssi] - [#13517]) ([maxcube docs]) ([binary_sensor.maxcube docs]) ([climate.maxcube docs]) (breaking change)
+- Ebox sensor platform has been disabled because the dependency was not compatible with pip 10. ([@balloob] - [#14003]) ([sensor.ebox docs]) (breaking change)
+
+## {% linkable_title Beta Fixes %}
+
+- Qwikswitch binary sensors ([@kellerza] - [#14008]) ([qwikswitch docs]) ([binary_sensor.qwikswitch docs]) ([sensor.qwikswitch docs]) (beta fix) (new-platform)
+- Order the output of the automation editor ([@balloob] - [#14019]) ([config docs]) (beta fix)
+- HomeKit Alarm Control Panel Code Exception Fix ([@schmittx] - [#14025]) ([homekit docs]) (beta fix)
+- Revert cast platform polling mode ([@OttoWinter] - [#14027]) ([media_player.cast docs]) (beta fix)
+- Handle HomeKit configuration failure more cleanly ([@mjg59] - [#14041]) ([homekit_controller docs]) (beta fix)
+- Update device classes for contact sensor HomeKit ([@marthoc] - [#14051]) ([homekit docs]) (beta fix)
+- Upgrade broadlink lib ([@Danielhiversen] - [#14074]) ([sensor.broadlink docs]) ([switch.broadlink docs]) (beta fix)
+- Fix timezone issue when calculating min/max values in tibber #14009 ([@Danielhiversen] - [#14080]) ([sensor.tibber docs]) (beta fix)
+- Updated list of AWS regions for Amazon Polly ([@GotoCode] - [#14097]) ([tts docs]) (beta fix)
+- Change Eufy brightness handling ([@mjg59] - [#14111]) (beta fix)
+
+## {% linkable_title All changes %}
+
+- Update Homekit to 1.1.9 ([@cdce8p] - [#13716]) ([homekit docs])
+- Update docstrings ([@fabaff] - [#13720]) ([ihc docs]) ([cover.opengarage docs]) ([cover.tahoma docs]) ([sensor.trafikverket_weatherstation docs])
+- Add option to ignore availability in google calendar events ([@cgtobi] - [#13714]) ([calendar.google docs])
+- Allow use of date_string in service call ([@Juggels] - [#13256]) ([calendar.todoist docs])
+- Add timeout / debounce (for brightness and others) ([@cdce8p] - [#13534]) ([homekit docs])
+- added support for smappee water sensors ([@hmn] - [#12831]) ([smappee docs]) ([sensor.smappee docs])
+- Initialise filter_sensor with historical values ([@dgomes] - [#13075]) ([sensor.filter docs])
+- Fix Gogogate2 'available' attribute ([@dlbroadfoot] - [#13728]) (beta fix)
+- Bluesound bugfix status 595 and await ([@thrawnarn] - [#13727]) ([media_player.bluesound docs])
+- Upgrade aiohttp to 3.1.2 ([@fabaff] - [#13732])
+- Upgrade sqlalchemy to 1.2.6 ([@fabaff] - [#13733]) ([sensor.sql docs])
+- Brightness conversion for Abode dimmers ([@shred86] - [#13711]) ([light.abode docs])
+- Update CODEOWNERS (sensor.filter, sensor.upnp) ([@dgomes] - [#13736])
+- Reset permission ([@fabaff] - [#13743]) ([light.abode docs])
+- Throw an error when invalid device_mode is given ([@dangyuluo] - [#13739])
+- Fix so it is possible to ignore discovered config entry handlers ([@Kane610] - [#13741]) (beta fix)
+- Upgrade netdisco to 1.3.1 ([@fabaff] - [#13744])
+- Add MQTT Sensor unique_id ([@OttoWinter] - [#13318]) ([sensor.mqtt docs])
+- Prepare entity component for config entries ([@balloob] - [#13730])
+- Check valid file on get_size ([@robmarkcole] - [#13756]) ([sensor.folder docs])
+- Qwikswitch sensors ([@kellerza] - [#13622]) ([sensor.qwikswitch docs])
+- Device type mapping introduced to avoid breaking change ([@syssi] - [#13765]) ([light.yeelight docs])
+- Only flag media position as updated when it really has ([@molobrakos] - [#13737]) ([media_player.squeezebox docs])
+- Support binary_sensor and device_tracker in HomeKit ([@Yonsm] - [#13735]) ([homekit docs]) (new-feature)
+- Use config entry to setup platforms ([@balloob] - [#13752]) ([hue docs]) ([light docs]) ([light.hue docs])
+- Add Homekit locks support ([@philk] - [#13625]) ([homekit docs]) (new-feature)
+- Snips sounds ([@tschmidty69] - [#13746]) ([snips docs])
+- Add missing DISCHRG state ([@swilson] - [#13787]) ([sensor.nut docs])
+- Improved upgradeability HomeKit security_systems ([@cdce8p] - [#13783]) ([homekit docs])
+- Qwikswitch Entity Register ([@kellerza] - [#13791]) ([qwikswitch docs]) ([sensor.qwikswitch docs])
+- Updated beacontools to 1.2.3 ([@citruz] - [#13792]) ([sensor.eddystone_temperature docs])
+- script/lazytox: Ensure Flake8 passes for tests/ ([@kellerza] - [#13794])
+- Fix bad metrics format for short metrics. ([@michaelkuty] - [#13778]) ([prometheus docs])
+- Update bellows to 0.5.2 ([@rcloran] - [#13800]) ([zha docs])
+- device_tracker.ubus: Handle devices not running DHCP ([@tobygray] - [#13579]) ([device_tracker docs])
+- Update yweather.py ([@wiuwiu] - [#13802]) ([weather.yweather docs])
+- Tibber lib update ([@Danielhiversen] - [#13811]) ([sensor.tibber docs])
+- Update pyhomematic to 0.1.41 ([@danielperna84] - [#13814]) ([homematic docs])
+- Add support for Eufy bulbs and switches ([@mjg59] - [#13773]) ([eufy docs]) ([light.eufy docs]) ([switch.eufy docs]) (new-platform)
+- Homekit refactor ([@cdce8p] - [#13707]) ([homekit docs])
+- HomeKit type_cover fix ([@cdce8p] - [#13832]) ([homekit docs])
+- Allow platform unloading ([@balloob] - [#13784]) ([hue docs]) ([light docs])
+- Support CO2/PM2.5/Light sensors in HomeKit ([@Yonsm] - [#13804]) ([homekit docs]) (new-feature)
+- Clicksend: Added support for multiple recipients ([@xTCx] - [#13812]) ([notify docs])
+- Support Garage Doors in HomeKit ([@marthoc] - [#13796]) ([homekit docs]) (new-feature)
+- Abode better events ([@MisterWil] - [#13809]) ([abode docs])
+- UPnP async ([@dgomes] - [#13666]) ([upnp docs]) ([sensor.upnp docs])
+- Update example (fixes #13834) ([@fabaff] - [#13839])
+- Add support for deCONZ daylight sensor ([@marthoc] - [#13479]) ([deconz docs]) ([sensor.deconz docs])
+- initialize queue before filtering ([@dgomes] - [#13842]) ([sensor.filter docs])
+- Extract config flow to own module ([@balloob] - [#13840]) ([config docs]) ([deconz docs]) ([hue docs])
+- Add support for controlling homekit lights and switches ([@mjg59] - [#13346]) ([homekit_controller docs]) ([light.homekit_controller docs]) (new-platform)
+- bump python-ecobee-api version to 0.0.18 ([@geekofweek] - [#13854]) ([ecobee docs])
+- Adding USCIS component ([@meauxt] - [#13764]) ([sensor.uscis docs]) (new-platform)
+- Avoid unnecessary cast state updates ([@dersger] - [#13770]) ([media_player.cast docs])
+- Prevent vesync doing I/O in event loop ([@balloob] - [#13862]) ([switch.vesync docs]) (beta fix)
+- Update yweather.py ([@TheCellMC] - [#13851]) ([weather.yweather docs])
+- add support for Kodi discovery ([@escoand] - [#13790]) ([media_player.kodi docs])
+- Further untangle data entry flow ([@balloob] - [#13855])
+- Missing property decorator added ([@syssi] - [#13889]) ([fan.xiaomi_miio docs]) (beta fix)
+- Fix race condition for component loaded before listening ([@balloob] - [#13887]) ([config docs]) (beta fix)
+- Added snips service descriptions ([@tschmidty69] - [#13883])
+- Add unique_id for BMW ConnectedDrive ([@gerard33] - [#13888]) ([binary_sensor.bmw_connected_drive docs]) ([lock.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs])
+- Revert "Update yweather.py" ([@pvizeli] - [#13900]) ([weather.yweather docs])
+- Eufy colour bulb updates ([@mjg59] - [#13895]) ([eufy docs]) ([light.eufy docs])
+- Fix #13846 Double underscore in bluetooth address ([@aav7fl] - [#13884]) ([device_tracker docs]) (beta fix)
+- Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs]) (beta fix)
+- Fritzbox netmonitor name ([@escoand] - [#13903]) ([sensor.fritzbox_netmonitor docs])
+- Restore typeerror check for units sans energy tracking ([@andersonshatch] - [#13824]) ([switch.edimax docs])
+- Add more math functions to templates ([@Shou] - [#13915])
+- Upgrade pyqwikswitch to 0.71 ([@kellerza] - [#13920]) ([qwikswitch docs])
+- Add extra attributes for device scanner, Nmap and Unifi (IP, SSID, etc.) ([@stephanerosi] - [#13673]) ([device_tracker docs])
+- Fixed Capsman data not being used ([@Marco98] - [#13917]) ([device_tracker docs])
+- Broadlink Sensor - switch to connection-less mode ([@Paxy] - [#13761]) ([sensor.broadlink docs])
+- Add support for new platform: climate.modbus ([@Kirchoff] - [#12224]) ([climate.modbus docs]) (new-platform)
+- Hive R3 update ([@KJonline] - [#13357]) ([hive docs]) ([binary_sensor.hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs])
+- Updated foobot_async package version ([@reefab] - [#13942]) ([sensor.foobot docs])
+- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs]) (beta fix)
+- Upgrade alpha_vantage to 2.0.0 ([@fabaff] - [#13943]) ([sensor.alpha_vantage docs])
+- Cleanup on exit ([@dgomes] - [#13918]) ([media_player.mediaroom docs])
+- Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs]) (beta fix)
+- Add data entry flow helper ([@balloob] - [#13935]) ([config docs])
+- Xiaomi MiIO Device Tracker: Unused variable removed ([@syssi] - [#13948]) ([device_tracker docs])
+- Implement play media to set a channel based on (by priority): ([@stephanerosi] - [#13934]) ([media_player.webostv docs])
+- Update of python-mpd2 ([@karlkar] - [#13921]) ([media_player.mpd docs])
+- Add AVM fritzbox smarthome component ([@hthiery] - [#10688]) ([fritzbox docs]) ([climate.fritzbox docs]) ([switch.fritzbox docs]) (new-platform)
+- Adds SigFox sensor ([@robmarkcole] - [#13731]) ([sensor.sigfox docs]) (new-platform)
+- Upgrade aiohttp to 3.1.3 ([@fabaff] - [#13938])
+- Upgrade youtube_dl to 2018.04.16 ([@fabaff] - [#13937]) ([media_extractor docs])
+- Added FB messenger broadcast api to notify.facebook component ([@B1tMaster] - [#12459]) ([notify.facebook docs])
+- Added web view for TTS to get url ([@tschmidty69] - [#13882]) ([tts docs])
+- Add services for bmw_connected_drive ([@ChristianKuehnel] - [#13497]) ([bmw_connected_drive docs]) ([device_tracker docs])
+- Fix call to parent broadlink switch ([@Danielhiversen] - [#13906]) ([switch.broadlink docs]) (beta fix)
+- Bump deCONZ requirement to v36 ([@Kane610] - [#13960]) ([deconz docs])
+- Fix Gogogate2 'available' attribute ([@dlbroadfoot] - [#13728]) (beta fix)
+- Fix so it is possible to ignore discovered config entry handlers ([@Kane610] - [#13741]) (beta fix)
+- Prevent vesync doing I/O in event loop ([@balloob] - [#13862]) ([switch.vesync docs]) (beta fix)
+- Fix #13846 Double underscore in bluetooth address ([@aav7fl] - [#13884]) ([device_tracker docs]) (beta fix)
+- Fix race condition for component loaded before listening ([@balloob] - [#13887]) ([config docs]) (beta fix)
+- Missing property decorator added ([@syssi] - [#13889]) ([fan.xiaomi_miio docs]) (beta fix)
+- Fix call to parent broadlink switch ([@Danielhiversen] - [#13906]) ([switch.broadlink docs]) (beta fix)
+- Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs]) (beta fix)
+- Upgrade pyqwikswitch to 0.71 ([@kellerza] - [#13920]) ([qwikswitch docs])
+- Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs]) (beta fix)
+- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs]) (beta fix)
+- Revert "Upgrade pyqwikswitch to 0.71 ([@balloob] - [#13920]) ([qwikswitch docs])
+- Bump skybellpy version to 0.1.2 ([@MisterWil] - [#13974]) ([skybell docs])
+- Fix typo an coding style ([@stephanerosi] - [#13970]) ([device_tracker docs])
+- Params of the send command can be a list now ([@syssi] - [#13905]) ([vacuum docs])
+- Support basic covers with open/close/stop services HomeKit ([@nickw444] - [#13819]) ([homekit docs]) (new-feature)
+- Colorlog windows fix ([@veleek] - [#13929]) ([notify docs])
+- deCONZ migrate setup fully to config entry ([@Kane610] - [#13679]) ([deconz docs])
+- Alexa thermostat fails to properly parse 'value' field for climate ([@no2chem] - [#13958]) ([alexa docs])
+- renaming icons ([@NovapaX] - [#13982]) ([hdmi_cec docs]) ([vacuum docs]) ([vacuum.dyson docs]) ([vacuum.neato docs]) ([vacuum.roomba docs]) ([vacuum.xiaomi_miio docs])
+- Fix for Lokalise backend misinterpretation of keys ([@armills] - [#13986])
+- Bump locationsharinglib to 1.2.1 ([@thelittlefireman] - [#13980]) ([device_tracker docs])
+- Support for multiple MAX!Cube LAN gateways added ([@syssi] - [#13517]) ([maxcube docs]) ([binary_sensor.maxcube docs]) ([climate.maxcube docs]) (breaking change)
+- Add additional receiver for Onkyo zone 2 ([@koolsb] - [#13551]) ([media_player.onkyo docs])
+- Add blackbird media player component ([@koolsb] - [#13549]) ([media_player.blackbird docs]) (new-platform)
+- Add support for Sensirion SHT31 temperature/humidity sensor ([@viorels] - [#12952]) ([sensor.sht31 docs]) (new-platform)
+- Useless code removed ([@syssi] - [#13996]) ([maxcube docs])
+- Add Homematic HmIP-SWO-PR weather sensor support ([@pascalhahn] - [#13904]) ([homematic docs])
+- Disable ebox requirement ([@balloob] - [#14003]) ([sensor.ebox docs]) (breaking change)
+- Upgraded miflora library to version 0.4.0 ([@ChristianKuehnel] - [#14005]) ([sensor.miflora docs])
+- Log an error instead of raising an exception ([@syssi] - [#14006]) ([sensor.sht31 docs])
+- Tibber available ([@Danielhiversen] - [#13865]) ([sensor.tibber docs])
+- Upgrade pylutron-caseta to 0.5.0 to reestablish connections ([@rohankapoorcom] - [#14013]) ([lutron_caseta docs])
+- Add sensor device classes ([@balloob] - [#14010]) ([sensor docs]) ([sensor.ecobee docs]) ([sensor.linux_battery docs]) ([sensor.nest docs])
+- Qwikswitch binary sensors ([@kellerza] - [#14008]) ([qwikswitch docs]) ([binary_sensor.qwikswitch docs]) ([sensor.qwikswitch docs]) (beta fix) (new-platform)
+- Order the output of the automation editor ([@balloob] - [#14019]) ([config docs]) (beta fix)
+- HomeKit Alarm Control Panel Code Exception Fix ([@schmittx] - [#14025]) ([homekit docs]) (beta fix)
+- Revert cast platform polling mode ([@OttoWinter] - [#14027]) ([media_player.cast docs]) (beta fix)
+- Handle HomeKit configuration failure more cleanly ([@mjg59] - [#14041]) ([homekit_controller docs]) (beta fix)
+- Update device classes for contact sensor HomeKit ([@marthoc] - [#14051]) ([homekit docs]) (beta fix)
+- Upgrade broadlink lib ([@Danielhiversen] - [#14074]) ([sensor.broadlink docs]) ([switch.broadlink docs]) (beta fix)
+- Fix timezone issue when calculating min/max values in tibber #14009 ([@Danielhiversen] - [#14080]) ([sensor.tibber docs]) (beta fix)
+- Updated list of AWS regions for Amazon Polly ([@GotoCode] - [#14097]) ([tts docs]) (beta fix)
+
+[#10688]: https://github.com/home-assistant/home-assistant/pull/10688
+[#12224]: https://github.com/home-assistant/home-assistant/pull/12224
+[#12459]: https://github.com/home-assistant/home-assistant/pull/12459
+[#12831]: https://github.com/home-assistant/home-assistant/pull/12831
+[#12952]: https://github.com/home-assistant/home-assistant/pull/12952
+[#13075]: https://github.com/home-assistant/home-assistant/pull/13075
+[#13256]: https://github.com/home-assistant/home-assistant/pull/13256
+[#13318]: https://github.com/home-assistant/home-assistant/pull/13318
+[#13346]: https://github.com/home-assistant/home-assistant/pull/13346
+[#13357]: https://github.com/home-assistant/home-assistant/pull/13357
+[#13479]: https://github.com/home-assistant/home-assistant/pull/13479
+[#13497]: https://github.com/home-assistant/home-assistant/pull/13497
+[#13517]: https://github.com/home-assistant/home-assistant/pull/13517
+[#13534]: https://github.com/home-assistant/home-assistant/pull/13534
+[#13549]: https://github.com/home-assistant/home-assistant/pull/13549
+[#13551]: https://github.com/home-assistant/home-assistant/pull/13551
+[#13579]: https://github.com/home-assistant/home-assistant/pull/13579
+[#13622]: https://github.com/home-assistant/home-assistant/pull/13622
+[#13625]: https://github.com/home-assistant/home-assistant/pull/13625
+[#13666]: https://github.com/home-assistant/home-assistant/pull/13666
+[#13673]: https://github.com/home-assistant/home-assistant/pull/13673
+[#13679]: https://github.com/home-assistant/home-assistant/pull/13679
+[#13707]: https://github.com/home-assistant/home-assistant/pull/13707
+[#13711]: https://github.com/home-assistant/home-assistant/pull/13711
+[#13714]: https://github.com/home-assistant/home-assistant/pull/13714
+[#13716]: https://github.com/home-assistant/home-assistant/pull/13716
+[#13720]: https://github.com/home-assistant/home-assistant/pull/13720
+[#13727]: https://github.com/home-assistant/home-assistant/pull/13727
+[#13728]: https://github.com/home-assistant/home-assistant/pull/13728
+[#13730]: https://github.com/home-assistant/home-assistant/pull/13730
+[#13731]: https://github.com/home-assistant/home-assistant/pull/13731
+[#13732]: https://github.com/home-assistant/home-assistant/pull/13732
+[#13733]: https://github.com/home-assistant/home-assistant/pull/13733
+[#13735]: https://github.com/home-assistant/home-assistant/pull/13735
+[#13736]: https://github.com/home-assistant/home-assistant/pull/13736
+[#13737]: https://github.com/home-assistant/home-assistant/pull/13737
+[#13739]: https://github.com/home-assistant/home-assistant/pull/13739
+[#13741]: https://github.com/home-assistant/home-assistant/pull/13741
+[#13743]: https://github.com/home-assistant/home-assistant/pull/13743
+[#13744]: https://github.com/home-assistant/home-assistant/pull/13744
+[#13746]: https://github.com/home-assistant/home-assistant/pull/13746
+[#13752]: https://github.com/home-assistant/home-assistant/pull/13752
+[#13756]: https://github.com/home-assistant/home-assistant/pull/13756
+[#13761]: https://github.com/home-assistant/home-assistant/pull/13761
+[#13764]: https://github.com/home-assistant/home-assistant/pull/13764
+[#13765]: https://github.com/home-assistant/home-assistant/pull/13765
+[#13770]: https://github.com/home-assistant/home-assistant/pull/13770
+[#13773]: https://github.com/home-assistant/home-assistant/pull/13773
+[#13778]: https://github.com/home-assistant/home-assistant/pull/13778
+[#13783]: https://github.com/home-assistant/home-assistant/pull/13783
+[#13784]: https://github.com/home-assistant/home-assistant/pull/13784
+[#13787]: https://github.com/home-assistant/home-assistant/pull/13787
+[#13790]: https://github.com/home-assistant/home-assistant/pull/13790
+[#13791]: https://github.com/home-assistant/home-assistant/pull/13791
+[#13792]: https://github.com/home-assistant/home-assistant/pull/13792
+[#13794]: https://github.com/home-assistant/home-assistant/pull/13794
+[#13796]: https://github.com/home-assistant/home-assistant/pull/13796
+[#13800]: https://github.com/home-assistant/home-assistant/pull/13800
+[#13802]: https://github.com/home-assistant/home-assistant/pull/13802
+[#13804]: https://github.com/home-assistant/home-assistant/pull/13804
+[#13809]: https://github.com/home-assistant/home-assistant/pull/13809
+[#13811]: https://github.com/home-assistant/home-assistant/pull/13811
+[#13812]: https://github.com/home-assistant/home-assistant/pull/13812
+[#13814]: https://github.com/home-assistant/home-assistant/pull/13814
+[#13819]: https://github.com/home-assistant/home-assistant/pull/13819
+[#13824]: https://github.com/home-assistant/home-assistant/pull/13824
+[#13832]: https://github.com/home-assistant/home-assistant/pull/13832
+[#13839]: https://github.com/home-assistant/home-assistant/pull/13839
+[#13840]: https://github.com/home-assistant/home-assistant/pull/13840
+[#13842]: https://github.com/home-assistant/home-assistant/pull/13842
+[#13851]: https://github.com/home-assistant/home-assistant/pull/13851
+[#13854]: https://github.com/home-assistant/home-assistant/pull/13854
+[#13855]: https://github.com/home-assistant/home-assistant/pull/13855
+[#13862]: https://github.com/home-assistant/home-assistant/pull/13862
+[#13865]: https://github.com/home-assistant/home-assistant/pull/13865
+[#13882]: https://github.com/home-assistant/home-assistant/pull/13882
+[#13883]: https://github.com/home-assistant/home-assistant/pull/13883
+[#13884]: https://github.com/home-assistant/home-assistant/pull/13884
+[#13887]: https://github.com/home-assistant/home-assistant/pull/13887
+[#13888]: https://github.com/home-assistant/home-assistant/pull/13888
+[#13889]: https://github.com/home-assistant/home-assistant/pull/13889
+[#13895]: https://github.com/home-assistant/home-assistant/pull/13895
+[#13900]: https://github.com/home-assistant/home-assistant/pull/13900
+[#13903]: https://github.com/home-assistant/home-assistant/pull/13903
+[#13904]: https://github.com/home-assistant/home-assistant/pull/13904
+[#13905]: https://github.com/home-assistant/home-assistant/pull/13905
+[#13906]: https://github.com/home-assistant/home-assistant/pull/13906
+[#13908]: https://github.com/home-assistant/home-assistant/pull/13908
+[#13915]: https://github.com/home-assistant/home-assistant/pull/13915
+[#13917]: https://github.com/home-assistant/home-assistant/pull/13917
+[#13918]: https://github.com/home-assistant/home-assistant/pull/13918
+[#13920]: https://github.com/home-assistant/home-assistant/pull/13920
+[#13921]: https://github.com/home-assistant/home-assistant/pull/13921
+[#13929]: https://github.com/home-assistant/home-assistant/pull/13929
+[#13934]: https://github.com/home-assistant/home-assistant/pull/13934
+[#13935]: https://github.com/home-assistant/home-assistant/pull/13935
+[#13937]: https://github.com/home-assistant/home-assistant/pull/13937
+[#13938]: https://github.com/home-assistant/home-assistant/pull/13938
+[#13940]: https://github.com/home-assistant/home-assistant/pull/13940
+[#13942]: https://github.com/home-assistant/home-assistant/pull/13942
+[#13943]: https://github.com/home-assistant/home-assistant/pull/13943
+[#13946]: https://github.com/home-assistant/home-assistant/pull/13946
+[#13948]: https://github.com/home-assistant/home-assistant/pull/13948
+[#13958]: https://github.com/home-assistant/home-assistant/pull/13958
+[#13960]: https://github.com/home-assistant/home-assistant/pull/13960
+[#13970]: https://github.com/home-assistant/home-assistant/pull/13970
+[#13974]: https://github.com/home-assistant/home-assistant/pull/13974
+[#13980]: https://github.com/home-assistant/home-assistant/pull/13980
+[#13982]: https://github.com/home-assistant/home-assistant/pull/13982
+[#13986]: https://github.com/home-assistant/home-assistant/pull/13986
+[#13996]: https://github.com/home-assistant/home-assistant/pull/13996
+[#14003]: https://github.com/home-assistant/home-assistant/pull/14003
+[#14005]: https://github.com/home-assistant/home-assistant/pull/14005
+[#14006]: https://github.com/home-assistant/home-assistant/pull/14006
+[#14008]: https://github.com/home-assistant/home-assistant/pull/14008
+[#14010]: https://github.com/home-assistant/home-assistant/pull/14010
+[#14013]: https://github.com/home-assistant/home-assistant/pull/14013
+[#14019]: https://github.com/home-assistant/home-assistant/pull/14019
+[#14025]: https://github.com/home-assistant/home-assistant/pull/14025
+[#14027]: https://github.com/home-assistant/home-assistant/pull/14027
+[#14041]: https://github.com/home-assistant/home-assistant/pull/14041
+[#14051]: https://github.com/home-assistant/home-assistant/pull/14051
+[#14074]: https://github.com/home-assistant/home-assistant/pull/14074
+[#14080]: https://github.com/home-assistant/home-assistant/pull/14080
+[#14097]: https://github.com/home-assistant/home-assistant/pull/14097
+[@B1tMaster]: https://github.com/B1tMaster
+[@ChristianKuehnel]: https://github.com/ChristianKuehnel
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@GotoCode]: https://github.com/GotoCode
+[@Juggels]: https://github.com/Juggels
+[@KJonline]: https://github.com/KJonline
+[@Kane610]: https://github.com/Kane610
+[@Kirchoff]: https://github.com/Kirchoff
+[@Marco98]: https://github.com/Marco98
+[@MisterWil]: https://github.com/MisterWil
+[@NovapaX]: https://github.com/NovapaX
+[@OttoWinter]: https://github.com/OttoWinter
+[@Paxy]: https://github.com/Paxy
+[@Shou]: https://github.com/Shou
+[@TheCellMC]: https://github.com/TheCellMC
+[@Yonsm]: https://github.com/Yonsm
+[@aav7fl]: https://github.com/aav7fl
+[@andersonshatch]: https://github.com/andersonshatch
+[@armills]: https://github.com/armills
+[@balloob]: https://github.com/balloob
+[@cdce8p]: https://github.com/cdce8p
+[@cgtobi]: https://github.com/cgtobi
+[@citruz]: https://github.com/citruz
+[@dangyuluo]: https://github.com/dangyuluo
+[@danielperna84]: https://github.com/danielperna84
+[@dersger]: https://github.com/dersger
+[@dgomes]: https://github.com/dgomes
+[@dlbroadfoot]: https://github.com/dlbroadfoot
+[@escoand]: https://github.com/escoand
+[@fabaff]: https://github.com/fabaff
+[@geekofweek]: https://github.com/geekofweek
+[@gerard33]: https://github.com/gerard33
+[@hmn]: https://github.com/hmn
+[@hthiery]: https://github.com/hthiery
+[@karlkar]: https://github.com/karlkar
+[@kellerza]: https://github.com/kellerza
+[@koolsb]: https://github.com/koolsb
+[@marthoc]: https://github.com/marthoc
+[@meauxt]: https://github.com/meauxt
+[@michaelkuty]: https://github.com/michaelkuty
+[@mjg59]: https://github.com/mjg59
+[@molobrakos]: https://github.com/molobrakos
+[@nickw444]: https://github.com/nickw444
+[@no2chem]: https://github.com/no2chem
+[@pascalhahn]: https://github.com/pascalhahn
+[@philk]: https://github.com/philk
+[@pvizeli]: https://github.com/pvizeli
+[@rcloran]: https://github.com/rcloran
+[@reefab]: https://github.com/reefab
+[@robmarkcole]: https://github.com/robmarkcole
+[@rohankapoorcom]: https://github.com/rohankapoorcom
+[@schmittx]: https://github.com/schmittx
+[@shred86]: https://github.com/shred86
+[@stephanerosi]: https://github.com/stephanerosi
+[@swilson]: https://github.com/swilson
+[@syssi]: https://github.com/syssi
+[@thelittlefireman]: https://github.com/thelittlefireman
+[@thrawnarn]: https://github.com/thrawnarn
+[@titilambert]: https://github.com/titilambert
+[@tobygray]: https://github.com/tobygray
+[@tschmidty69]: https://github.com/tschmidty69
+[@veleek]: https://github.com/veleek
+[@viorels]: https://github.com/viorels
+[@wiuwiu]: https://github.com/wiuwiu
+[@xTCx]: https://github.com/xTCx
+[abode docs]: /components/abode/
+[alexa docs]: /components/alexa/
+[binary_sensor.bmw_connected_drive docs]: /components/binary_sensor.bmw_connected_drive/
+[binary_sensor.hive docs]: /components/binary_sensor.hive/
+[binary_sensor.maxcube docs]: /components/binary_sensor.maxcube/
+[binary_sensor.qwikswitch docs]: /components/binary_sensor.qwikswitch/
+[bmw_connected_drive docs]: /components/bmw_connected_drive/
+[calendar.google docs]: /components/calendar.google/
+[calendar.todoist docs]: /components/calendar.todoist/
+[climate.fritzbox docs]: /components/climate.fritzbox/
+[climate.hive docs]: /components/climate.hive/
+[climate.honeywell docs]: /components/climate.honeywell/
+[climate.maxcube docs]: /components/climate.maxcube/
+[climate.modbus docs]: /components/climate.modbus/
+[config docs]: /components/config/
+[cover.opengarage docs]: /components/cover.opengarage/
+[cover.tahoma docs]: /components/cover.tahoma/
+[deconz docs]: /components/deconz/
+[device_tracker docs]: /components/device_tracker/
+[ecobee docs]: /components/ecobee/
+[eufy docs]: /components/eufy/
+[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/
+[fritzbox docs]: /components/fritzbox/
+[google docs]: /components/google/
+[hdmi_cec docs]: /components/hdmi_cec/
+[hive docs]: /components/hive/
+[homekit docs]: /components/homekit/
+[homekit_controller docs]: /components/homekit_controller/
+[homematic docs]: /components/homematic/
+[hue docs]: /components/hue/
+[ihc docs]: /components/ihc/
+[light docs]: /components/light/
+[light.abode docs]: /components/light.abode/
+[light.aurora docs]: /components/light.aurora/
+[light.eufy docs]: /components/light.eufy/
+[light.hive docs]: /components/light.hive/
+[light.homekit_controller docs]: /components/light.homekit_controller/
+[light.hue docs]: /components/light.hue/
+[light.yeelight docs]: /components/light.yeelight/
+[lock.bmw_connected_drive docs]: /components/lock.bmw_connected_drive/
+[lutron_caseta docs]: /components/lutron_caseta/
+[maxcube docs]: /components/maxcube/
+[media_extractor docs]: /components/media_extractor/
+[media_player.blackbird docs]: /components/media_player.blackbird/
+[media_player.bluesound docs]: /components/media_player.bluesound/
+[media_player.cast docs]: /components/media_player.cast/
+[media_player.kodi docs]: /components/media_player.kodi/
+[media_player.mediaroom docs]: /components/media_player.mediaroom/
+[media_player.mpd docs]: /components/media_player.mpd/
+[media_player.onkyo docs]: /components/media_player.onkyo/
+[media_player.squeezebox docs]: /components/media_player.squeezebox/
+[media_player.webostv docs]: /components/media_player.webostv/
+[notify docs]: /components/notify/
+[notify.facebook docs]: /components/notify.facebook/
+[prometheus docs]: /components/prometheus/
+[qwikswitch docs]: /components/qwikswitch/
+[sensor docs]: /components/sensor/
+[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/
+[sensor.bmw_connected_drive docs]: /components/sensor.bmw_connected_drive/
+[sensor.broadlink docs]: /components/sensor.broadlink/
+[sensor.deconz docs]: /components/sensor.deconz/
+[sensor.ebox docs]: /components/sensor.ebox/
+[sensor.ecobee docs]: /components/sensor.ecobee/
+[sensor.eddystone_temperature docs]: /components/sensor.eddystone_temperature/
+[sensor.filter docs]: /components/sensor.filter/
+[sensor.folder docs]: /components/sensor.folder/
+[sensor.foobot docs]: /components/sensor.foobot/
+[sensor.fritzbox_netmonitor docs]: /components/sensor.fritzbox_netmonitor/
+[sensor.hive docs]: /components/sensor.hive/
+[sensor.hydroquebec docs]: /components/sensor.hydroquebec/
+[sensor.linux_battery docs]: /components/sensor.linux_battery/
+[sensor.miflora docs]: /components/sensor.miflora/
+[sensor.mqtt docs]: /components/sensor.mqtt/
+[sensor.nest docs]: /components/sensor.nest/
+[sensor.nut docs]: /components/sensor.nut/
+[sensor.qwikswitch docs]: /components/sensor.qwikswitch/
+[sensor.sht31 docs]: /components/sensor.sht31/
+[sensor.sigfox docs]: /components/sensor.sigfox/
+[sensor.smappee docs]: /components/sensor.smappee/
+[sensor.sql docs]: /components/sensor.sql/
+[sensor.tibber docs]: /components/sensor.tibber/
+[sensor.trafikverket_weatherstation docs]: /components/sensor.trafikverket_weatherstation/
+[sensor.upnp docs]: /components/sensor.upnp/
+[sensor.uscis docs]: /components/sensor.uscis/
+[skybell docs]: /components/skybell/
+[smappee docs]: /components/smappee/
+[snips docs]: /components/snips/
+[switch.broadlink docs]: /components/switch.broadlink/
+[switch.edimax docs]: /components/switch.edimax/
+[switch.eufy docs]: /components/switch.eufy/
+[switch.fritzbox docs]: /components/switch.fritzbox/
+[switch.hive docs]: /components/switch.hive/
+[switch.vesync docs]: /components/switch.vesync/
+[tts docs]: /components/tts/
+[upnp docs]: /components/upnp/
+[vacuum docs]: /components/vacuum/
+[vacuum.dyson docs]: /components/vacuum.dyson/
+[vacuum.neato docs]: /components/vacuum.neato/
+[vacuum.roomba docs]: /components/vacuum.roomba/
+[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/
+[weather.yweather docs]: /components/weather.yweather/
+[zha docs]: /components/zha/
+[#14108]: https://github.com/home-assistant/home-assistant/pull/14108
+[#14113]: https://github.com/home-assistant/home-assistant/pull/14113
+[#14154]: https://github.com/home-assistant/home-assistant/pull/14154
+[#14160]: https://github.com/home-assistant/home-assistant/pull/14160
+[#14163]: https://github.com/home-assistant/home-assistant/pull/14163
+[#14181]: https://github.com/home-assistant/home-assistant/pull/14181
+[#14190]: https://github.com/home-assistant/home-assistant/pull/14190
+[#14196]: https://github.com/home-assistant/home-assistant/pull/14196
+[#14156]: https://github.com/home-assistant/home-assistant/pull/14156
+[@OttoWinter]: https://github.com/OttoWinter
+[@amelchio]: https://github.com/amelchio
+[@balloob]: https://github.com/balloob
+[@cdce8p]: https://github.com/cdce8p
+[@mjg59]: https://github.com/mjg59
+[google_assistant docs]: /components/google_assistant/
+[homekit docs]: /components/homekit/
+[homekit_controller docs]: /components/homekit_controller/
+[light.hue docs]: /components/light.hue/
+[light.tplink docs]: /components/light.tplink/
+[media_player.cast docs]: /components/media_player.cast/
\ No newline at end of file
diff --git a/source/_posts/2018-05-11-release-69.markdown b/source/_posts/2018-05-11-release-69.markdown
new file mode 100644
index 0000000000..4063660e8c
--- /dev/null
+++ b/source/_posts/2018-05-11-release-69.markdown
@@ -0,0 +1,459 @@
+---
+layout: post
+title: "0.69: TBD - Update date"
+description: "TBD."
+date: 2018-05-05 00:01:00
+date_formatted: "May 11, 2018"
+author: Paulus Schoutsen
+author_twitter: balloob
+comments: true
+categories: Release-Notes
+og_image: /images/blog/2018-05-0.69/components.png
+---
+
+
+
+## {% linkable_title New Platforms %}
+
+- New sensor domain expiry ([@masarliev] - [#14067]) ([sensor.domain_expiry docs]) (new-platform)
+- Support Xiaomi Mijia Bluetooth Wireless Temperature and Humidity Sensor ([@ratcashdev] - [#13955]) ([sensor.mitemp_bt docs]) (new-platform)
+- Move RainMachine to component/hub model ([@bachya] - [#14085]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) (new-platform)
+- Foundation for users ([@balloob] - [#13968]) ([auth docs]) ([http docs]) (new-platform)
+- Add Social Blade Sensor ([@meauxt] - [#14060]) ([sensor.socialblade docs]) ([sensor.uscis docs]) (new-platform)
+- Add PostNL sensor (Dutch Postal Services) ([@iMicknl] - [#12366]) ([sensor.postnl docs]) (new-platform)
+- Issue/add template fans ([@giangvo] - [#12027]) ([fan.template docs]) (new-platform)
+- Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform)
+
+## {% linkable_title If you need help... %}
+
+...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
+
+## {% linkable_title Reporting Issues %}
+
+Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template.
+
+
+## {% linkable_title Breaking Changes %}
+
+- Pollen.com: Added attributes on top 3 allergens ([@bachya] - [#14018]) ([sensor.pollen docs]) (breaking change)
+- Add Sonos device attribute with grouping information ([@amelchio] - [#13553]) ([media_player.sonos docs]) (breaking change)
+- Re-implement HomematicIP cloud to async ([@mxworm] - [#13468]) ([homematicip_cloud docs]) ([sensor.homematicip_cloud docs]) (breaking change)
+- Move RainMachine to component/hub model ([@bachya] - [#14085]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) (new-platform)
+- System log: make firing event optional ([@balloob] - [#14102]) ([system_log docs]) (breaking change)
+- Disable eliqonline requirement ([@balloob] - [#14156]) ([sensor.eliqonline docs]) (breaking change)
+- Custom component loading cleanup ([@balloob] - [#14211]) (breaking change)
+- Converts RainMachine to hub model (part 2) ([@bachya] - [#14225]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change)
+- Homekit: Changed device_class requirement Humidity Sensor ([@cdce8p] - [#14277]) ([homekit docs]) (breaking change)
+- Sensor device classes ([@cdce8p] - [#14282]) ([sensor docs]) (breaking change)
+- Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform)
+
+## {% linkable_title Beta Fixes %}
+
+- Add missing 'sensor' to ABODE_PLATFORMS ([@jloutsenhizer] - [#14313]) ([abode docs]) (beta fix)
+- Add debounce to move_cover ([@cdce8p] - [#14314]) ([homekit docs]) (beta fix)
+- Fix module names for custom components ([@balloob] - [#14317]) (beta fix)
+- Revert custom component loading logic ([@balloob] - [#14327]) (beta fix)
+- fix(hbmqtt): partial packets breaking hbmqtt ([@graffic] - [#14329]) ([mqtt docs]) (beta fix)
+- Fix Yeelight naming ([@syssi])
+
+## {% linkable_title All changes %}
+
+- Pollen.com: Added attributes on top 3 allergens ([@bachya] - [#14018]) ([sensor.pollen docs]) (breaking change)
+- Expose the condition code on condition sensors ([@maddox] - [#14011]) ([sensor.yweather docs])
+- upgrade rfxtrx lib, dimming support for Lighting3 ([@Danielhiversen] - [#14026]) ([rfxtrx docs])
+- Add Accuracy to Google Location Sharing ([@rdbahm] - [#14039]) ([device_tracker docs])
+- bump gogogate2 version ([@dlbroadfoot] - [#14044]) ([cover.gogogate2 docs])
+- device_tracker.ubus: catch ConnectionError ([@stintel] - [#14045]) ([device_tracker docs])
+- Show a notification when a config entry is discovered ([@balloob] - [#14022])
+- deCONZ use forward entry setup ([@Kane610] - [#13990]) ([binary_sensor docs]) ([deconz docs]) ([scene docs]) ([sensor docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([scene.deconz docs]) ([sensor.deconz docs])
+- Bump pyEight version to update API & reduce connection issues ([@mezz64] - [#14058]) ([eight_sleep docs])
+- Bump locationsharinglib to 1.2.2 ([@thelittlefireman] - [#14070]) ([device_tracker docs])
+- Remove excessive debugging in webostv module ([@stephanerosi] - [#14056]) ([media_player.webostv docs])
+- Support new Xiaomi Aqara device model names and LAN protocol 2.0 ([@ileler] - [#13540]) ([xiaomi_aqara docs]) ([binary_sensor.xiaomi_aqara docs]) ([light.xiaomi_aqara docs]) ([sensor.xiaomi_aqara docs]) ([switch.xiaomi_aqara docs])
+- Add devices to Tahoma ([@bakedraccoon] - [#14075]) ([tahoma docs]) ([cover.tahoma docs]) ([sensor.tahoma docs])
+- New sensor domain expiry ([@masarliev] - [#14067]) ([sensor.domain_expiry docs]) (new-platform)
+- Modify weather components for "new" frontend card ([@c727] - [#14076]) ([weather.buienradar docs]) ([weather.darksky docs]) ([weather.openweathermap docs])
+- Add Sonos device attribute with grouping information ([@amelchio] - [#13553]) ([media_player.sonos docs]) (breaking change)
+- Re-implement HomematicIP cloud to async ([@mxworm] - [#13468]) ([homematicip_cloud docs]) ([sensor.homematicip_cloud docs]) (breaking change)
+- Update pyhomematic to 0.1.42 ([@danielperna84] - [#14095]) ([homematic docs])
+- Adds update file_path service to local_file camera ([@robmarkcole] - [#13976]) ([camera.local_file docs])
+- Zone component config entry support ([@Kane610] - [#14059]) ([zone docs])
+- Improve MQTT topic validation ([@OttoWinter] - [#14099]) ([mqtt docs])
+- Fix the optional friendly name of the Yeelight (Closes: #14088) ([@syssi] - [#14110]) ([light.yeelight docs])
+- Update QNAP lib to 0.2.6; handle null temps gracefully ([@colinodell] - [#14117]) ([sensor.qnap docs])
+- Support Xiaomi Mijia Bluetooth Wireless Temperature and Humidity Sensor ([@ratcashdev] - [#13955]) ([sensor.mitemp_bt docs]) (new-platform)
+- Upgrade colorlog to 3.1.4 ([@fabaff] - [#14132])
+- Move RainMachine to component/hub model ([@bachya] - [#14085]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) (new-platform)
+- Add support for light sensors with 'lx' unit to HomeKit ([@bieniu] - [#14131]) ([homekit docs])
+- Upgrade restrictedpython to 4.0b3 ([@fabaff] - [#14140]) ([python_script docs])
+- Logitech Pop support for emulated_hue component ([@dgraye] - [#12833]) ([emulated_hue docs])
+- Bump pyvizio to 0.0.3 ([@cgarwood] - [#14147]) ([media_player.vizio docs])
+- System log: make firing event optional ([@balloob] - [#14102]) ([system_log docs]) (breaking change)
+- Upgrade pylast to 2.2.0 ([@fabaff] - [#14139]) ([sensor.lastfm docs])
+- Upgrade sqlalchemy to 1.2.7 ([@fabaff] - [#14138])
+- Upgrade tapsaff to 0.2.0 ([@fabaff] - [#14137]) ([binary_sensor.tapsaff docs])
+- Upgrade python-telegram-bot to 10.0.2 ([@fabaff] - [#14144])
+- Upgrade youtube_dl to 2018.04.25 ([@fabaff] - [#14136]) ([media_extractor docs])
+- Clean up HomeKit accessory information characteristics ([@schmittx] - [#14114]) ([homekit docs])
+- Upgrade psutil to 5.4.5 ([@fabaff] - [#14135])
+- Fixed datetime values ([@gives1976] - [#14153]) ([sensor.sql docs])
+- deluge-components-update ([@engrbm87] - [#14016]) ([sensor.deluge docs]) ([switch.deluge docs])
+- Light mqtt_json: Add HS color support ([@OttoWinter] - [#14029]) ([light.mqtt_json docs])
+- Convert more files to async/await syntax ([@OttoWinter] - [#14142])
+- Disable eliqonline requirement ([@balloob] - [#14156]) ([sensor.eliqonline docs]) (breaking change)
+- deCONZ allow unloading of config entry ([@Kane610] - [#14115]) ([binary_sensor docs]) ([deconz docs]) ([scene docs]) ([sensor docs])
+- Upgrade netdisco to 1.4.0 ([@fabaff] - [#14152])
+- Add precipitation to OpenWeatherMap forecast ([@escoand] - [#13971]) ([weather.openweathermap docs])
+- Allow transitioning to colour temp for tradfri ([@Hate-Usernames] - [#14157])
+- Added update_interval to maxcube ([@dingusdk] - [#14143]) ([maxcube docs])
+- zha: Support remotes/buttons ([@rcloran] - [#12528]) ([zha docs]) ([binary_sensor.zha docs])
+- Upgrade numpy to 1.14.3 ([@fabaff] - [#14187]) ([binary_sensor.trend docs]) ([image_processing.opencv docs])
+- Updating darksky default update interval to 5 mins ([@msubra] - [#14195]) ([sensor.darksky docs])
+- Fix TypeError on round(self.humidity) (fixes #13116) ([@mvn23] - [#14174]) ([weather docs])
+- Add room hint support to Google Assistant cloud ([@balloob] - [#14180])
+- Update CODEOWNERS ([@pschmitt] - [#14214])
+- Fixes #14169 (Upgrade pyupnp-async to 0.1.0.2) ([@dgomes] - [#14210]) ([upnp docs])
+- zha: Clean up binary_sensor listener registration/state updates ([@rcloran] - [#14197])
+- HomematicIP cloud: Add logic to check accesspoint connection state ([@sander76] - [#14203]) ([homematicip_cloud docs])
+- Foundation for users ([@balloob] - [#13968]) ([auth docs]) ([http docs]) (new-platform)
+- Allow easy extension of websocket API ([@balloob] - [#14186]) ([frontend docs]) ([websocket_api docs])
+- Change the divisor for total consumption output ([@CM000n] - [#14215]) ([switch.fritzbox docs])
+- Upgrade mypy to 0.590 ([@fabaff] - [#14207])
+- Template Sensor add device_class support ([@OttoWinter] - [#14034]) ([sensor.template docs])
+- Add more parameters for DSMR sensor ([@rubenvandeven] - [#13967]) ([sensor.dsmr docs])
+- Support setting explicit mute value for Panasonic Viera TV ([@blackwind] - [#13954]) ([media_player.panasonic_viera docs])
+- Allow to set a desired update interval for camera_proxy_stream view ([@NovapaX] - [#13350]) ([camera docs])
+- panasonic_viera: Provide unique_id from SSDP UDN, if available ([@scop] - [#13541]) ([media_player.panasonic_viera docs])
+- Custom component loading cleanup ([@balloob] - [#14211]) (breaking change)
+- Buienradar improvements: continuous sensors and unique ID's ([@corneyl] - [#13249]) ([sensor.buienradar docs])
+- add volumio discovery ([@escoand] - [#14220]) ([media_player.volumio docs])
+- Converts RainMachine to hub model (part 2) ([@bachya] - [#14225]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change)
+- Add MQTT Sensor device_class ([@OttoWinter] - [#14033]) ([sensor.mqtt docs])
+- Allow independent control of white level on flux_led component ([@oblogic7] - [#13985]) ([light.flux_led docs])
+- Add Social Blade Sensor ([@meauxt] - [#14060]) ([sensor.socialblade docs]) ([sensor.uscis docs]) (new-platform)
+- UPnP code cleanup ([@dgomes] - [#14235]) ([upnp docs]) ([sensor.upnp docs])
+- Improve config schema of the blackbird component ([@syssi] - [#14007]) ([media_player.blackbird docs])
+- Add support for tracking devices on Netgear access points ([@MatMaul] - [#13331]) ([device_tracker docs])
+- WUnderground unique ids ([@OttoWinter] - [#13311]) ([sensor.wunderground docs])
+- Add PostNL sensor (Dutch Postal Services) ([@iMicknl] - [#12366]) ([sensor.postnl docs]) (new-platform)
+- python_openzwave update config service ([@perosb] - [#12060]) ([zwave docs])
+- Add unique_id to zwave node entity ([@andrey-git] - [#14201]) ([zwave docs])
+- Add prereqs for HomeKit Controller ([@marthoc] - [#14172])
+- Restores switch state, case the switch is optimistic ([@dgomes] - [#14151]) ([switch.mqtt docs])
+- Issue/add template fans ([@giangvo] - [#12027]) ([fan.template docs]) (new-platform)
+- HomeKit - Climate: power state on/off support ([@roiff] - [#14082]) ([homekit docs])
+- Demo Sensor - Added device_class support ([@cdce8p] - [#14269]) ([sensor.demo docs])
+- Re-enable eliqonline requirement ([@molobrakos] - [#14265]) ([sensor.eliqonline docs])
+- Add fetching camera thumbnails over websocket ([@balloob] - [#14231]) ([camera docs]) ([frontend docs]) ([image_processing docs]) ([microsoft_face docs]) ([websocket_api docs])
+- Allow fetching media player covers via websocket connection ([@balloob] - [#14233]) ([media_player docs])
+- Fix ZWave light brightness ([@cdce8p] - [#14261]) ([light.zwave docs])
+- fix check config not working after #14211 ([@fanthos] - [#14259])
+- Issue Template Fix CRLF ([@OttoWinter] - [#14283])
+- Upgrade attrs to 18.1.0 ([@fabaff] - [#14281])
+- Update HAP-python to 2.0.0 ([@cdce8p] - [#14278]) ([homekit docs])
+- Upgrade holidays to 0.9.5 ([@fabaff] - [#14274]) ([binary_sensor.workday docs])
+- Homekit: Changed device_class requirement Humidity Sensor ([@cdce8p] - [#14277]) ([homekit docs]) (breaking change)
+- HomeKit: Support triggered state for alarm_control_panel ([@schmittx] - [#14285]) ([homekit docs])
+- Upgrade astral to 1.6.1 ([@fabaff] - [#14297])
+- BOM Weather throttle fix ([@nickw444] - [#14234]) ([sensor.bom docs])
+- Publish attributes unconditionally ([@blackwind] - [#14179]) ([mqtt_statestream docs])
+- Sensor device classes ([@cdce8p] - [#14282]) ([sensor docs]) (breaking change)
+- Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform)
+- deCONZ add new device without restart ([@Kane610] - [#14221]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs])
+- Add alarmdotcom sensor status ([@jnewland] - [#14254]) ([alarm_control_panel.alarmdotcom docs])
+- Add domain to labels and count state changes to Prometheus ([@jnewland] - [#14253]) ([prometheus docs])
+- Add support for max_volume ([@relvacode] - [#13822]) ([media_player.onkyo docs])
+- Refactor ImageProcessingFaceEntity ([@robmarkcole] - [#14296]) ([image_processing docs]) ([image_processing.demo docs]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) ([image_processing.microsoft_face_detect docs]) ([image_processing.microsoft_face_identify docs])
+- Onkyo: SUPPORT_VOLUME_STEP ([@rsmeral] - [#14299]) ([media_player.onkyo docs])
+- Add All-Linking capabilities ([@teharris1] - [#14065]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs])
+- Add missing 'sensor' to ABODE_PLATFORMS ([@jloutsenhizer] - [#14313]) ([abode docs]) (beta fix)
+- Add debounce to move_cover ([@cdce8p] - [#14314]) ([homekit docs]) (beta fix)
+- Fix module names for custom components ([@balloob] - [#14317]) (beta fix)
+- Revert custom component loading logic ([@balloob] - [#14327]) (beta fix)
+- fix(hbmqtt): partial packets breaking hbmqtt ([@graffic] - [#14329]) ([mqtt docs]) (beta fix)
+
+[#12027]: https://github.com/home-assistant/home-assistant/pull/12027
+[#12060]: https://github.com/home-assistant/home-assistant/pull/12060
+[#12366]: https://github.com/home-assistant/home-assistant/pull/12366
+[#12528]: https://github.com/home-assistant/home-assistant/pull/12528
+[#12833]: https://github.com/home-assistant/home-assistant/pull/12833
+[#13249]: https://github.com/home-assistant/home-assistant/pull/13249
+[#13311]: https://github.com/home-assistant/home-assistant/pull/13311
+[#13331]: https://github.com/home-assistant/home-assistant/pull/13331
+[#13350]: https://github.com/home-assistant/home-assistant/pull/13350
+[#13355]: https://github.com/home-assistant/home-assistant/pull/13355
+[#13468]: https://github.com/home-assistant/home-assistant/pull/13468
+[#13540]: https://github.com/home-assistant/home-assistant/pull/13540
+[#13541]: https://github.com/home-assistant/home-assistant/pull/13541
+[#13553]: https://github.com/home-assistant/home-assistant/pull/13553
+[#13822]: https://github.com/home-assistant/home-assistant/pull/13822
+[#13954]: https://github.com/home-assistant/home-assistant/pull/13954
+[#13955]: https://github.com/home-assistant/home-assistant/pull/13955
+[#13967]: https://github.com/home-assistant/home-assistant/pull/13967
+[#13968]: https://github.com/home-assistant/home-assistant/pull/13968
+[#13971]: https://github.com/home-assistant/home-assistant/pull/13971
+[#13976]: https://github.com/home-assistant/home-assistant/pull/13976
+[#13985]: https://github.com/home-assistant/home-assistant/pull/13985
+[#13990]: https://github.com/home-assistant/home-assistant/pull/13990
+[#14007]: https://github.com/home-assistant/home-assistant/pull/14007
+[#14011]: https://github.com/home-assistant/home-assistant/pull/14011
+[#14016]: https://github.com/home-assistant/home-assistant/pull/14016
+[#14018]: https://github.com/home-assistant/home-assistant/pull/14018
+[#14022]: https://github.com/home-assistant/home-assistant/pull/14022
+[#14026]: https://github.com/home-assistant/home-assistant/pull/14026
+[#14029]: https://github.com/home-assistant/home-assistant/pull/14029
+[#14033]: https://github.com/home-assistant/home-assistant/pull/14033
+[#14034]: https://github.com/home-assistant/home-assistant/pull/14034
+[#14039]: https://github.com/home-assistant/home-assistant/pull/14039
+[#14044]: https://github.com/home-assistant/home-assistant/pull/14044
+[#14045]: https://github.com/home-assistant/home-assistant/pull/14045
+[#14056]: https://github.com/home-assistant/home-assistant/pull/14056
+[#14058]: https://github.com/home-assistant/home-assistant/pull/14058
+[#14059]: https://github.com/home-assistant/home-assistant/pull/14059
+[#14060]: https://github.com/home-assistant/home-assistant/pull/14060
+[#14065]: https://github.com/home-assistant/home-assistant/pull/14065
+[#14067]: https://github.com/home-assistant/home-assistant/pull/14067
+[#14070]: https://github.com/home-assistant/home-assistant/pull/14070
+[#14075]: https://github.com/home-assistant/home-assistant/pull/14075
+[#14076]: https://github.com/home-assistant/home-assistant/pull/14076
+[#14082]: https://github.com/home-assistant/home-assistant/pull/14082
+[#14085]: https://github.com/home-assistant/home-assistant/pull/14085
+[#14095]: https://github.com/home-assistant/home-assistant/pull/14095
+[#14099]: https://github.com/home-assistant/home-assistant/pull/14099
+[#14102]: https://github.com/home-assistant/home-assistant/pull/14102
+[#14110]: https://github.com/home-assistant/home-assistant/pull/14110
+[#14114]: https://github.com/home-assistant/home-assistant/pull/14114
+[#14115]: https://github.com/home-assistant/home-assistant/pull/14115
+[#14117]: https://github.com/home-assistant/home-assistant/pull/14117
+[#14131]: https://github.com/home-assistant/home-assistant/pull/14131
+[#14132]: https://github.com/home-assistant/home-assistant/pull/14132
+[#14135]: https://github.com/home-assistant/home-assistant/pull/14135
+[#14136]: https://github.com/home-assistant/home-assistant/pull/14136
+[#14137]: https://github.com/home-assistant/home-assistant/pull/14137
+[#14138]: https://github.com/home-assistant/home-assistant/pull/14138
+[#14139]: https://github.com/home-assistant/home-assistant/pull/14139
+[#14140]: https://github.com/home-assistant/home-assistant/pull/14140
+[#14142]: https://github.com/home-assistant/home-assistant/pull/14142
+[#14143]: https://github.com/home-assistant/home-assistant/pull/14143
+[#14144]: https://github.com/home-assistant/home-assistant/pull/14144
+[#14147]: https://github.com/home-assistant/home-assistant/pull/14147
+[#14151]: https://github.com/home-assistant/home-assistant/pull/14151
+[#14152]: https://github.com/home-assistant/home-assistant/pull/14152
+[#14153]: https://github.com/home-assistant/home-assistant/pull/14153
+[#14156]: https://github.com/home-assistant/home-assistant/pull/14156
+[#14157]: https://github.com/home-assistant/home-assistant/pull/14157
+[#14172]: https://github.com/home-assistant/home-assistant/pull/14172
+[#14174]: https://github.com/home-assistant/home-assistant/pull/14174
+[#14179]: https://github.com/home-assistant/home-assistant/pull/14179
+[#14180]: https://github.com/home-assistant/home-assistant/pull/14180
+[#14186]: https://github.com/home-assistant/home-assistant/pull/14186
+[#14187]: https://github.com/home-assistant/home-assistant/pull/14187
+[#14195]: https://github.com/home-assistant/home-assistant/pull/14195
+[#14197]: https://github.com/home-assistant/home-assistant/pull/14197
+[#14201]: https://github.com/home-assistant/home-assistant/pull/14201
+[#14203]: https://github.com/home-assistant/home-assistant/pull/14203
+[#14207]: https://github.com/home-assistant/home-assistant/pull/14207
+[#14210]: https://github.com/home-assistant/home-assistant/pull/14210
+[#14211]: https://github.com/home-assistant/home-assistant/pull/14211
+[#14214]: https://github.com/home-assistant/home-assistant/pull/14214
+[#14215]: https://github.com/home-assistant/home-assistant/pull/14215
+[#14220]: https://github.com/home-assistant/home-assistant/pull/14220
+[#14221]: https://github.com/home-assistant/home-assistant/pull/14221
+[#14225]: https://github.com/home-assistant/home-assistant/pull/14225
+[#14231]: https://github.com/home-assistant/home-assistant/pull/14231
+[#14233]: https://github.com/home-assistant/home-assistant/pull/14233
+[#14234]: https://github.com/home-assistant/home-assistant/pull/14234
+[#14235]: https://github.com/home-assistant/home-assistant/pull/14235
+[#14253]: https://github.com/home-assistant/home-assistant/pull/14253
+[#14254]: https://github.com/home-assistant/home-assistant/pull/14254
+[#14259]: https://github.com/home-assistant/home-assistant/pull/14259
+[#14261]: https://github.com/home-assistant/home-assistant/pull/14261
+[#14265]: https://github.com/home-assistant/home-assistant/pull/14265
+[#14269]: https://github.com/home-assistant/home-assistant/pull/14269
+[#14274]: https://github.com/home-assistant/home-assistant/pull/14274
+[#14277]: https://github.com/home-assistant/home-assistant/pull/14277
+[#14278]: https://github.com/home-assistant/home-assistant/pull/14278
+[#14281]: https://github.com/home-assistant/home-assistant/pull/14281
+[#14282]: https://github.com/home-assistant/home-assistant/pull/14282
+[#14283]: https://github.com/home-assistant/home-assistant/pull/14283
+[#14285]: https://github.com/home-assistant/home-assistant/pull/14285
+[#14296]: https://github.com/home-assistant/home-assistant/pull/14296
+[#14297]: https://github.com/home-assistant/home-assistant/pull/14297
+[#14299]: https://github.com/home-assistant/home-assistant/pull/14299
+[#14313]: https://github.com/home-assistant/home-assistant/pull/14313
+[#14314]: https://github.com/home-assistant/home-assistant/pull/14314
+[#14317]: https://github.com/home-assistant/home-assistant/pull/14317
+[#14327]: https://github.com/home-assistant/home-assistant/pull/14327
+[#14329]: https://github.com/home-assistant/home-assistant/pull/14329
+[@CM000n]: https://github.com/CM000n
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@Hate-Usernames]: https://github.com/Hate-Usernames
+[@Kane610]: https://github.com/Kane610
+[@MatMaul]: https://github.com/MatMaul
+[@NovapaX]: https://github.com/NovapaX
+[@OttoWinter]: https://github.com/OttoWinter
+[@amelchio]: https://github.com/amelchio
+[@andrey-git]: https://github.com/andrey-git
+[@bachya]: https://github.com/bachya
+[@bakedraccoon]: https://github.com/bakedraccoon
+[@balloob]: https://github.com/balloob
+[@bieniu]: https://github.com/bieniu
+[@blackwind]: https://github.com/blackwind
+[@c727]: https://github.com/c727
+[@cdce8p]: https://github.com/cdce8p
+[@cgarwood]: https://github.com/cgarwood
+[@colinodell]: https://github.com/colinodell
+[@corneyl]: https://github.com/corneyl
+[@danielperna84]: https://github.com/danielperna84
+[@dgomes]: https://github.com/dgomes
+[@dgraye]: https://github.com/dgraye
+[@dingusdk]: https://github.com/dingusdk
+[@dlbroadfoot]: https://github.com/dlbroadfoot
+[@engrbm87]: https://github.com/engrbm87
+[@escoand]: https://github.com/escoand
+[@fabaff]: https://github.com/fabaff
+[@fanthos]: https://github.com/fanthos
+[@giangvo]: https://github.com/giangvo
+[@gives1976]: https://github.com/gives1976
+[@graffic]: https://github.com/graffic
+[@iMicknl]: https://github.com/iMicknl
+[@ileler]: https://github.com/ileler
+[@jloutsenhizer]: https://github.com/jloutsenhizer
+[@jnewland]: https://github.com/jnewland
+[@maddox]: https://github.com/maddox
+[@marthoc]: https://github.com/marthoc
+[@masarliev]: https://github.com/masarliev
+[@meauxt]: https://github.com/meauxt
+[@mezz64]: https://github.com/mezz64
+[@molobrakos]: https://github.com/molobrakos
+[@msubra]: https://github.com/msubra
+[@mvn23]: https://github.com/mvn23
+[@mxworm]: https://github.com/mxworm
+[@nickw444]: https://github.com/nickw444
+[@oblogic7]: https://github.com/oblogic7
+[@perosb]: https://github.com/perosb
+[@pschmitt]: https://github.com/pschmitt
+[@ratcashdev]: https://github.com/ratcashdev
+[@rcloran]: https://github.com/rcloran
+[@rdbahm]: https://github.com/rdbahm
+[@relvacode]: https://github.com/relvacode
+[@robmarkcole]: https://github.com/robmarkcole
+[@roiff]: https://github.com/roiff
+[@rsmeral]: https://github.com/rsmeral
+[@rubenvandeven]: https://github.com/rubenvandeven
+[@sander76]: https://github.com/sander76
+[@schmittx]: https://github.com/schmittx
+[@scop]: https://github.com/scop
+[@stephanerosi]: https://github.com/stephanerosi
+[@stintel]: https://github.com/stintel
+[@syssi]: https://github.com/syssi
+[@teharris1]: https://github.com/teharris1
+[@thelittlefireman]: https://github.com/thelittlefireman
+[@tinloaf]: https://github.com/tinloaf
+[abode docs]: /components/abode/
+[alarm_control_panel.alarmdotcom docs]: /components/alarm_control_panel.alarmdotcom/
+[auth docs]: /components/auth/
+[binary_sensor docs]: /components/binary_sensor/
+[binary_sensor.deconz docs]: /components/binary_sensor.deconz/
+[binary_sensor.insteon_plm docs]: /components/binary_sensor.insteon_plm/
+[binary_sensor.tapsaff docs]: /components/binary_sensor.tapsaff/
+[binary_sensor.trend docs]: /components/binary_sensor.trend/
+[binary_sensor.workday docs]: /components/binary_sensor.workday/
+[binary_sensor.xiaomi_aqara docs]: /components/binary_sensor.xiaomi_aqara/
+[binary_sensor.zha docs]: /components/binary_sensor.zha/
+[camera docs]: /components/camera/
+[camera.local_file docs]: /components/camera.local_file/
+[cover.gogogate2 docs]: /components/cover.gogogate2/
+[cover.tahoma docs]: /components/cover.tahoma/
+[deconz docs]: /components/deconz/
+[device_tracker docs]: /components/device_tracker/
+[eight_sleep docs]: /components/eight_sleep/
+[emulated_hue docs]: /components/emulated_hue/
+[fan.insteon_plm docs]: /components/fan.insteon_plm/
+[fan.template docs]: /components/fan.template/
+[frontend docs]: /components/frontend/
+[homekit docs]: /components/homekit/
+[homematic docs]: /components/homematic/
+[homematicip_cloud docs]: /components/homematicip_cloud/
+[http docs]: /components/http/
+[image_processing docs]: /components/image_processing/
+[image_processing.demo docs]: /components/image_processing.demo/
+[image_processing.dlib_face_detect docs]: /components/image_processing.dlib_face_detect/
+[image_processing.dlib_face_identify docs]: /components/image_processing.dlib_face_identify/
+[image_processing.microsoft_face_detect docs]: /components/image_processing.microsoft_face_detect/
+[image_processing.microsoft_face_identify docs]: /components/image_processing.microsoft_face_identify/
+[image_processing.opencv docs]: /components/image_processing.opencv/
+[insteon_plm docs]: /components/insteon_plm/
+[light.deconz docs]: /components/light.deconz/
+[light.flux_led docs]: /components/light.flux_led/
+[light.insteon_plm docs]: /components/light.insteon_plm/
+[light.mqtt_json docs]: /components/light.mqtt_json/
+[light.xiaomi_aqara docs]: /components/light.xiaomi_aqara/
+[light.yeelight docs]: /components/light.yeelight/
+[light.zwave docs]: /components/light.zwave/
+[matrix docs]: /components/matrix/
+[maxcube docs]: /components/maxcube/
+[media_extractor docs]: /components/media_extractor/
+[media_player docs]: /components/media_player/
+[media_player.blackbird docs]: /components/media_player.blackbird/
+[media_player.onkyo docs]: /components/media_player.onkyo/
+[media_player.panasonic_viera docs]: /components/media_player.panasonic_viera/
+[media_player.sonos docs]: /components/media_player.sonos/
+[media_player.vizio docs]: /components/media_player.vizio/
+[media_player.volumio docs]: /components/media_player.volumio/
+[media_player.webostv docs]: /components/media_player.webostv/
+[microsoft_face docs]: /components/microsoft_face/
+[mqtt docs]: /components/mqtt/
+[mqtt_statestream docs]: /components/mqtt_statestream/
+[notify docs]: /components/notify/
+[prometheus docs]: /components/prometheus/
+[python_script docs]: /components/python_script/
+[rainmachine docs]: /components/rainmachine/
+[rfxtrx docs]: /components/rfxtrx/
+[scene docs]: /components/scene/
+[scene.deconz docs]: /components/scene.deconz/
+[sensor docs]: /components/sensor/
+[sensor.bom docs]: /components/sensor.bom/
+[sensor.buienradar docs]: /components/sensor.buienradar/
+[sensor.darksky docs]: /components/sensor.darksky/
+[sensor.deconz docs]: /components/sensor.deconz/
+[sensor.deluge docs]: /components/sensor.deluge/
+[sensor.demo docs]: /components/sensor.demo/
+[sensor.domain_expiry docs]: /components/sensor.domain_expiry/
+[sensor.dsmr docs]: /components/sensor.dsmr/
+[sensor.eliqonline docs]: /components/sensor.eliqonline/
+[sensor.homematicip_cloud docs]: /components/sensor.homematicip_cloud/
+[sensor.insteon_plm docs]: /components/sensor.insteon_plm/
+[sensor.lastfm docs]: /components/sensor.lastfm/
+[sensor.mitemp_bt docs]: /components/sensor.mitemp_bt/
+[sensor.mqtt docs]: /components/sensor.mqtt/
+[sensor.pollen docs]: /components/sensor.pollen/
+[sensor.postnl docs]: /components/sensor.postnl/
+[sensor.qnap docs]: /components/sensor.qnap/
+[sensor.socialblade docs]: /components/sensor.socialblade/
+[sensor.sql docs]: /components/sensor.sql/
+[sensor.tahoma docs]: /components/sensor.tahoma/
+[sensor.template docs]: /components/sensor.template/
+[sensor.upnp docs]: /components/sensor.upnp/
+[sensor.uscis docs]: /components/sensor.uscis/
+[sensor.wunderground docs]: /components/sensor.wunderground/
+[sensor.xiaomi_aqara docs]: /components/sensor.xiaomi_aqara/
+[sensor.yweather docs]: /components/sensor.yweather/
+[switch.deluge docs]: /components/switch.deluge/
+[switch.fritzbox docs]: /components/switch.fritzbox/
+[switch.insteon_plm docs]: /components/switch.insteon_plm/
+[switch.mqtt docs]: /components/switch.mqtt/
+[switch.rainmachine docs]: /components/switch.rainmachine/
+[switch.xiaomi_aqara docs]: /components/switch.xiaomi_aqara/
+[system_log docs]: /components/system_log/
+[tahoma docs]: /components/tahoma/
+[upnp docs]: /components/upnp/
+[weather docs]: /components/weather/
+[weather.buienradar docs]: /components/weather.buienradar/
+[weather.darksky docs]: /components/weather.darksky/
+[weather.openweathermap docs]: /components/weather.openweathermap/
+[websocket_api docs]: /components/websocket_api/
+[xiaomi_aqara docs]: /components/xiaomi_aqara/
+[zha docs]: /components/zha/
+[zone docs]: /components/zone/
+[zwave docs]: /components/zwave/
diff --git a/source/cloud/google_assistant.markdown b/source/cloud/google_assistant.markdown
index 155b2356a7..070f03040b 100644
--- a/source/cloud/google_assistant.markdown
+++ b/source/cloud/google_assistant.markdown
@@ -7,9 +7,13 @@ sidebar: true
comments: false
sharing: true
footer: true
-published: false
---
+
+
+The minimum supported version of Home Assistant is 0.65.6.
+
+
The Google Assistant integration allows users to control the entities via the Home Assistant Smart Home skill for Google Assistant. This means that you can say things like "Ok Google, turn on the kitchen light" to control your local Home Assistant.
To use this integration, you need to have:
@@ -38,7 +42,7 @@ cloud:
aliases:
- bright lights
- entry lights
- type: 'action.devices.types.LIGHT'
+ room: living room
```
{% configuration cloud %}
@@ -86,9 +90,8 @@ google_actions:
description: Aliases that can also be used to refer to this entity
required: false
type: list
- type:
- description: Override the type of the entity in Google Assistant. [List of available types](https://developers.google.com/actions/smarthome/guides/)
+ room:
+ description: Hint for Google Assistant in which room this entity is.
required: false
type: string
{% endconfiguration %}
-
diff --git a/source/cloud/index.markdown b/source/cloud/index.markdown
index 449294d890..24f5cf76aa 100644
--- a/source/cloud/index.markdown
+++ b/source/cloud/index.markdown
@@ -15,19 +15,16 @@ ha_iot_class: "Cloud Push"
The Home Assistant Cloud is currently free and will become part of the upcoming Community Support Package. [Learn more](/blog/2017/12/17/introducing-home-assistant-cloud/)
-The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services like Amazon Alexa.
-
-The following integrations are currently available:
+The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services. The following integrations are currently available:
- [Amazon Alexa (Amazon Echo)](/cloud/alexa/)
-
-
+ - [Google Assistant (Google Home)](/cloud/google_assistant/)
### {% linkable_title How does it work? %}
The Home Assistant Cloud has been designed with security in mind. When you activate the Cloud component, your instance will create a secure connection to the Home Assistant Cloud. There is no need for any further configuration or to expose your instance to the internet.
-Integrations like Alexa will deliver messages to our cloud which we will forward to your local instance for processing. We just forward the response back to Alexa. This means that we do not have to store the state of your house in our cloud, we’re just the messenger!
+Integrations like Alexa or Google will deliver messages to our cloud which we will forward to your local instance for processing. We just forward the response back. This means that we do not have to store the state of your house in our cloud, we’re just the messenger!
You can find a list of frequently asked questions (and their answers) in [this blog post](/blog/2017/12/17/introducing-home-assistant-cloud/#faq).
diff --git a/source/developers/add_new_platform.markdown b/source/developers/add_new_platform.markdown
index e0882296bf..3f4505c577 100644
--- a/source/developers/add_new_platform.markdown
+++ b/source/developers/add_new_platform.markdown
@@ -9,27 +9,6 @@ sharing: true
footer: true
---
-Components that interact with devices are called "[Entity Components](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/helpers/entity_component.py)." They are structured in core and platform logic, which means different brands can use the same logic to handle a light.
-
-For example, the built-in `switch` component consists of various platforms in [`homeassistant/components/switch/`](https://github.com/home-assistant/home-assistant/tree/master/homeassistant/components/switch). The file `__init__.py` contains the core logic of all platforms and the `vendor_name.py` files contain only the relevant platform code.
-
-If you're planning to add support for a new type of device to an existing component, you can get away with only writing platform logic. Have a look at how the component works with other platforms and create a similar file for the platform that you want to add:
-
- - [Example sensor platform](/developers/platform_example_sensor): hello world of platforms.
- - [Example light platform](/developers/platform_example_light): showing best practices.
-
-### {% linkable_title Interfacing with devices %}
-
-One Home Assistant rule is that platform logic should never interface directly with devices. Instead, use a third-party Python 3 library. This way, Home Assistant can share code with the Python community and keep the project maintainable.
-
-To integrate the third-party library, create an [Entity class](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/helpers/entity.py) for your device. Entities are Home Assistant's representations of lights, switches, sensors, etc. and are derived from the [Entity Abstract Class](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/helpers/entity.py). This abstract class contains logic for integrating most standard features into your entities, such as visibility, entity IDs, updates, and much more.
-
-### {% linkable_title Requirements and dependencies %}
-
-Platforms can specify dependencies and requirements [the same way as components](/developers/component_deps_and_reqs):
-
-```python
-REQUIREMENTS = ['some-package==2.0.0', 'some-other-package==2.5.0']
-DEPENDENCIES = ['mqtt']
-```
-
+
\ No newline at end of file
diff --git a/source/developers/api.markdown b/source/developers/api.markdown
index 999647d038..4e226c4af9 100644
--- a/source/developers/api.markdown
+++ b/source/developers/api.markdown
@@ -9,13 +9,6 @@ sharing: true
footer: true
---
-Home Assistant provides various APIs. For detail please refer to [Home Assistant API](https://dev-docs.home-assistant.io/en/dev/) documentation.
-
- * [Python API](https://dev-docs.home-assistant.io/)
- * [WebSocket API](/developers/websocket_api/)
- * [REST API](/developers/rest_api/)
- * [Python REST API](/developers/python_api/)
- * [Server-sent events](/developers/server_sent_events/)
-
-If you are not using the [`frontend`](/components/frontend/) in your setup then you need to enable the components by adding them to your `configuration.yaml` file. E.g., [`websocket_api:`](/components/websocket_api/) for the WebSocket API or [`api:`](/components/api/) for the [REST API](/developers/rest_api/) and the [Python REST API](/developers/python_api/).
-
+
\ No newline at end of file
diff --git a/source/developers/architecture.markdown b/source/developers/architecture.markdown
index 191ed65f7b..67aab81c30 100644
--- a/source/developers/architecture.markdown
+++ b/source/developers/architecture.markdown
@@ -10,32 +10,6 @@ footer: true
og_image: /images/architecture/ha_architecture.svg
---
-Before we dive into the Home Assistant architecture, let's get a clear overview of the home automation landscape as a whole. This way, we can show how the different parts of Home Assistant fit into the picture.
-
-For more information about each part in this overview, check out our blog. Here's the tl;dr version of the blog:
-
- * Home Control is responsible for collecting information and controlling devices.
- * Home Automation triggers commands based on user configurations.
- * Smart Home triggers commands based on previous behavior.
-
-
-
-
-
- Overview of the home automation landscape
-
-
-The Home Assistant core is responsible for Home Control. Home Assistant contains four parts which make this possible:
-
- * **Event Bus**: facilitates the firing and listening of events -- the beating heart of Home Assistant.
- * **State Machine**: keeps track of the states of things and fires a `state_changed` event when a state has been changed.
- * **Service Registry**: listens on the event bus for `call_service` events and allows other code to register services.
- * **Timer**: sends a `time_changed` event every 1 second on the event bus.
-
-
-
-
-
- Overview of the Home Assistant core architecture
-
+
\ No newline at end of file
diff --git a/source/developers/architecture_components.markdown b/source/developers/architecture_components.markdown
index ac05c93ba0..fcd66a99ec 100644
--- a/source/developers/architecture_components.markdown
+++ b/source/developers/architecture_components.markdown
@@ -10,58 +10,6 @@ footer: true
og_image: /images/architecture/component_interaction.png
---
-Home Assistant can be extended with **components**. Each component is responsible for a specific domain within Home Assistant. Components can listen for or trigger events, offer services, and maintain states. Components are written in Python and can do all the goodness that Python has to offer. Out of the box, Home Assistant offers a bunch of [built-in components]({{site_root}}/components/).
-
-
-
-Diagram showing interaction between components and the Home Assistant core
-
-
-There are two types of components within Home Assistant: components that interact with an Internet of Things domain, and components that respond to events that happen within Home Assistant. Read on to learn about each type!
-
-#### {% linkable_title Components that interact with an Internet-of-Things domain %}
-
-These components track devices within a specific domain and consist of a core part and platform-specific logic. These components make their information available via the State Machine and the Event Bus. The components also register services in the Service Registry to expose control of the devices.
-
-For example, the built-in [`switch` component](/components/switch/) is responsible for interaction with different types of switches. A platform provides support for a particular kind or brand of device. For example, a switch could use a WeMo or Orvibo platform and a light component might interact with the Hue or LIFX platform.
-
-If you want to add support for a new platform, check out the [add new platform section](/developers/add_new_platform/).
-
-#### {% linkable_title Components that respond to events that happen within Home Assistant %}
-
-These components provide small pieces of home automation logic or involve services that do common tasks within your house.
-
-For example, the [`device_sun_light_trigger` component](/components/device_sun_light_trigger/) tracks the state of devices and the sun to make sure that the lights are turned on when it gets dark and people are home. The component uses logic like this:
-
-```text
-In the event that device 'Paulus Nexus 5' changes to the 'Home' state:
- If the sun has set and the lights are not on:
- Turn on the lights
-```
-
-```text
-In the event that the combined state of all tracked devices changes to 'Not Home':
- If the lights are on:
- Turn off the lights
-```
-
-```text
-In the event of the sun setting:
- If the lights are off and the combined state of all tracked device equals 'Home':
- Turn on the lights
-```
-
-Look [here](/python_component_automation/) for a comprehensive example of a home automation component.
-
-### {% linkable_title The full picture %}
-
-When we put all the different pieces of Home Assistant together, it's a close match for the initial home automation overview sketch. The smart home AI has not been implemented yet, so it's not included in this picture.
-
-
-
-
-
- Overview of the full Home Assistant architecture with a couple of loaded components and platforms
-
-
-The platform logic for components uses third-party Python libraries to communicate with the devices. Through this, we can leverage some of the best libraries in the Python community.
+
\ No newline at end of file
diff --git a/source/developers/asyncio.markdown b/source/developers/asyncio.markdown
index 2a456794d6..2cbf497eb6 100644
--- a/source/developers/asyncio.markdown
+++ b/source/developers/asyncio.markdown
@@ -9,19 +9,6 @@ sharing: true
footer: true
---
-On September 29, 2016 we released [Home Assistant 0.29][0.29] as part of our bi-weekly release schedule. This release introduced a complete overhaul of the core spearheaded by [Ben Bangert][ben].
-
-The old core was set up like a “traditional” threaded application. Each resource that was not thread safe (ie. the state of entities) would be protected by a lock. This caused a lot of waiting and potential inconsistency because a task could now end up waiting halfway through its job until some resource got freed.
-
-Our new core is based on an Python’s built-in asyncio module. Instead of having all threads have access to the core API objects, access is now limited to a special thread called the event loop. All components will now schedule themselves as a task to be executed by the event loop. This gives us the guarantee that only one task is executed at once, meaning we no longer need any locks.
-
-The only problem with running everything inside the event loop is when a task is doing blocking I/O, what most third-party Python libraries are doing. For example while requesting new information from a device, the core will stop running until we get a response from the device. To handle this, a task is able to suspend itself until the response is available after which it will be enqueued for the event loop to process the result.
-
-For a task to be able to suspend itself, all code that it calls has to have this capability added. This means in practice that each device integration will need a full rewrite of the library that offers the integration! As this is not something that can be achieved, ever, a 100% backwards compatible API has been added so that no platform will require updating.
-
-The backwards compatible API works by scheduling a task from a different thread and blocking that thread until the task has been processed by the event loop.
-
-### [Next step: asyncio 101 »](/developers/asyncio_101/)
-
-[0.29]: /blog/2016/09/29/async-sleepiq-emoncms-stocks/
-[ben]: https://github.com/bbangert/
+
\ No newline at end of file
diff --git a/source/developers/asyncio_101.markdown b/source/developers/asyncio_101.markdown
index c88265119f..a43c09893f 100644
--- a/source/developers/asyncio_101.markdown
+++ b/source/developers/asyncio_101.markdown
@@ -9,12 +9,6 @@ sharing: true
footer: true
---
-If you are not familiar yet with asyncio, please watch the below video. It's a great introduction by [Robert Smallshire][rob] in how and why asyncio works the way it does.
-
-
-
-
-
-### [Next step: Categorizing Functions »](/developers/asyncio_categorizing_functions/)
-
-[rob]: https://github.com/rob-smallshire
\ No newline at end of file
+
\ No newline at end of file
diff --git a/source/developers/asyncio_categorizing_functions.markdown b/source/developers/asyncio_categorizing_functions.markdown
index 6fe74ad359..8b54b2058c 100644
--- a/source/developers/asyncio_categorizing_functions.markdown
+++ b/source/developers/asyncio_categorizing_functions.markdown
@@ -9,71 +9,6 @@ sharing: true
footer: true
---
-A piece of work within Home Assistant is represented by a function that will be invoked. It will either run inside our event loop or inside our thread pool, depending on if it is async safe.
-
-Home Assistant uses the convention that all functions that must be run from within the event loop are prefixed with `async_`.
-
-## {% linkable_title The coroutine function %}
-
-Coroutines are special functions based on Python’s generators syntax which allows them to suspend execution while waiting on a result.
-
-Invoking a coroutine function will return a Generator object back, but will not actually begin execution. This object will execute the task when it is either yielded from (from within another coroutine) or it is scheduled on the event loop.
-
-To declare a function a coroutine, import the coroutine annotation from the asyncio package and annotate your function.
-
-```python
-import asyncio
-
-@asyncio.coroutine
-def async_look_my_coroutine(target):
- result = yield from entity.async_turn_on()
- if result:
- print("hello {}".format(target))
-
-hass.loop.create_task(async_look_my_coroutine("world"))
-```
-
-In this example, we schedule the coroutine by calling `hass.loop.create_task`. This will add the coroutine to the queue of tasks to be run. When the event loop is running `async_look_my_coroutine` it will suspend the task when `yield from entity.async_turn_on()` is called. At that point a new task will be scheduled to execute `entity.async_turn_on()`. When that job has been executed, `async_look_my_coroutine` will resume.
-
-## {% linkable_title The callback function %}
-
-This is a normal function that is considered safe to be run from within the event loop. A callback is unable to suspend itself and thus cannot do any I/O or call a coroutine. A callback is capable of scheduling a new task but it will not be able to wait for the results.
-
-To declare a function as a callback, import the callback annotation from the core package and annotate your function.
-
-A common use case for a callback in Home Assistant is as a listener for an event or a service call. It can process the incoming information and then schedule the right calls to be made. Example from the automation component.
-
-```python
-from homeassistant.core import callback
-
-@callback
-def async_trigger_service_handler(service_call):
- """Handle automation trigger service calls."""
- vars = service_call.data.get(ATTR_VARIABLES)
- for entity in component.async_extract_from_service(service_call):
- hass.loop.create_task(entity.async_trigger(vars, True))
-```
-
-In this example, `entity.async_trigger` is a coroutine function. Invoking the coroutine function will return a coroutine task. The passed in parameters will be used when the task gets executed.
-
-To execute the task we have to schedule it for execution on the event loop. This is done by calling `hass.loop.create_task`.
-
-### {% linkable_title Why even have callbacks? %}
-
-You might wonder, if a coroutine can do everything a callback can do, why even have a callback. The reason is performance and better state consistency of the core API objects.
-
-When coroutine A waits for coroutine B, it will suspend itself and schedule a new task to run B. This means that the event loop is now running A, B and then A again. If B is a callback, A will never have to suspend itself and thus the event loop is just running A. The consistency implication is that other events queued to run on the event loop continue to wait until callbacks complete, but will be interleaved when yielding to another coroutine.
-
-## {% linkable_title Event loop and thread safe %}
-
-These are functions that are safe to run both in a thread and inside the event loop. These functions are usually performing a computation or transform data in memory. Anything that does I/O does not fall under this category. Many standard library functions fall in this category. For example generating the sum of a set of numbers using sum or merging two dictionaries.
-
-There is no special annotation to mark functions as part of this category and care should be taken when using these functions from inside the event loop. When in doubt, look at their implementation.
-
-## {% linkable_title Other functions %}
-
-These are all the functions that did not fit in the previous categories. These functions are either thread-safe or not considered safe to be run within the event loop. These are functions that use sleep, or perform I/O.
-
-There is no special annotation necessary to be considered part of this category.
-
-### [Next step: Working with Async »](/developers/asyncio_working_with_async/)
+
\ No newline at end of file
diff --git a/source/developers/asyncio_misc.markdown b/source/developers/asyncio_misc.markdown
index 3fbc923c6f..ee6fd3def8 100644
--- a/source/developers/asyncio_misc.markdown
+++ b/source/developers/asyncio_misc.markdown
@@ -9,14 +9,6 @@ sharing: true
footer: true
---
-## {% linkable_title What about ‘async’ and ‘await’ syntax? %}
-Python 3.5 introduced new syntax to formalize the asynchronous pattern. This is however not compatible with Python 3.4. The minimum required Python version for Home Assistant is based on the Python version shipped with Debian stable, which is currently 3.5.3.
-
-For more information, Brett Cannon wrote [an excellent breakdown][brett] on 'async' and 'await' syntax and how asynchronous programming works.
-
-## {% linkable_title Acknowledgements %}
-
-Huge thanks to [Ben Bangert][ben] for starting the conversion of the core to async, guiding other contributors while taking their first steps with async programming and peer reviewing this documentation.
-
-[brett]: http://www.snarky.ca/how-the-heck-does-async-await-work-in-python-3-5
-[ben]: https://github.com/bbangert/
+
\ No newline at end of file
diff --git a/source/developers/asyncio_working_with_async.markdown b/source/developers/asyncio_working_with_async.markdown
index 40fd82b246..5d66d66594 100644
--- a/source/developers/asyncio_working_with_async.markdown
+++ b/source/developers/asyncio_working_with_async.markdown
@@ -9,120 +9,6 @@ sharing: true
footer: true
---
-Although we have a backwards compatible API, using the async core directly will be a lot faster. Most core components have already been rewritten to leverage the async core. This includes the EntityComponent helper (foundation of light, switch, etc), scripts, groups and automation.
-
-## {% linkable_title Interacting with the core %}
-
-[All methods in the Home Assistant core][dev-docs] are implemented in two flavors: an async version and a version to be called from other threads. The versions for other are merely wrappers that call the async version in a threadsafe manner using [the available async utilities][dev-docs-async].
-
-So if you are making calls to the core (the hass object) from within a callback or coroutine, use the methods that start with async_. If you need to call an async_ function that is a coroutine, your task must also be a coroutine.
-
-## {% linkable_title Implementing an async component %}
-
-To make a component async, implement an async_setup.
-
-```python
-def setup(hass, config):
- # Setup your component outside of the event loop.
-```
-
-Will turn into:
-
-```python
-import asyncio
-
-@asyncio.coroutine
-def async_setup(hass, config):
- # Setup your component inside of the event loop.
-```
-
-## {% linkable_title Implementing an async platform %}
-
-For platforms we support async setup. Instead of setup_platform you need to have a coroutine async_setup_platform.
-
-```python
-setup_platform(hass, config, add_entities, discovery_info=None):
- # Setup your platform outside of the event loop.
-```
-
-Will turn into:
-
-```python
-import asyncio
-
-@asyncio.coroutine
-def async_setup_platform(hass, config, async_add_entities,
- discovery_info=None):
- # Setup your platform inside of the event loop
-```
-
-The only difference with the original parameters is that the `add_entities` function has been replaced by the async friendly callback `async_add_entities`.
-
-## {% linkable_title Implementing an async entity %}
-
-You can make your entity async friendly by converting your update method to be async. This requires the dependency of your entities to also be async friendly!
-
-```python
-class MyEntity(Entity):
- def update(self):
- """Retrieve latest state."""
- self._state = fetch_state()
-```
-
-Will turn into:
-
-```python
-import asyncio
-
-class MyEntity(Entity):
- @asyncio.coroutine
- def async_update(self):
- """Retrieve latest state."""
- self._state = yield from async_fetch_state()
-```
-
-Make sure that all properties defined on your entity do not result in I/O being done. All data has to be fetched inside the update method and cached on the entity. This is because these properties are read from within the event loop and thus doing I/O will result in the core of Home Assistant waiting until your I/O is done.
-
-## {% linkable_title Calling async functions from threads %}
-
-Sometimes it will happen that you’re in a thread and you want to call a function that is only available as async. Home Assistant includes a few async helper utilities to help with this.
-
-In the following example, `say_hello` will schedule `async_say_hello` and block till the function has run and get the result back.
-
-```python
-from homeassistant.util.async import run_callback_threadsafe
-
-def say_hello(hass, target):
- return run_callback_threadsafe(
- hass.loop, async_say_hello, target).result()
-
-def async_say_hello(hass, target):
- return "Hello {}!".format(target)
-```
-
-## {% linkable_title Dealing with passed in functions %}
-
-If your code takes in functions from other code, you will not know which category the function belongs to and how they should be invoked. This usually only occurs if your code supplies an event helper like `mqtt.async_subscribe` or `track_state_change_listener`.
-
-To help with this, there are two helper methods on the hass object that you can call from inside the event loop:
-
-#### {% linkable_title hass.async_run_job %}
-
-Use this method if the function should be called as soon as possible. This will call callbacks immediately, schedule coroutines for execution on the event loop and schedule other functions to be run inside the thread pool.
-
-| Callback | Call immediately.
-| Coroutine | Schedule for execution on the event loop.
-| Other functions | Schedule for execution in the thread pool.
-
-#### {% linkable_title hass.async_add_job %}
-
-Use this method if the function should be called but not get priority over already scheduled calls.
-
-| Callback | Schedule for execution on the event loop.
-| Coroutine | Schedule for execution on the event loop.
-| Other functions | Schedule for execution in the thread pool.
-
-### [Next step: Miscellaneous »](/developers/asyncio_misc/)
-
-[dev-docs]: https://dev-docs.home-assistant.io/en/master/api/core.html
-[dev-docs-async]: https://dev-docs.home-assistant.io/en/dev/api/util.html#module-homeassistant.util.async
+
\ No newline at end of file
diff --git a/source/developers/code_review_component.markdown b/source/developers/code_review_component.markdown
index bebe3dc784..3d2853668d 100644
--- a/source/developers/code_review_component.markdown
+++ b/source/developers/code_review_component.markdown
@@ -9,28 +9,6 @@ sharing: true
footer: true
---
-A checklist of things to do when you're adding a new component.
-
-
-Not all existing platforms follow the requirements in this checklist. This cannot be used as a reason to not follow them!
-
-
-### {% linkable_title 1. Requirements %}
-
- 1. Requirement version pinned: `REQUIREMENTS = ['phue==0.8.1']`
- 2. We no longer want requirements hosted on GitHub. Please upload to PyPi.
- 3. Requirements should only be imported inside functions. This is necessary because requirements are installed on the fly.
-
-### {% linkable_title 2. Configuration %}
-
- 1. Voluptuous schema present for config validation
- 2. Default parameters specified in voluptuous schema, not in `setup(…)`
- 3. Schema using as many generic config keys as possible from `homeassistant.const`
- 4. If your component has platforms, define a `PLATFORM_SCHEMA` instead of a `CONFIG_SCHEMA`.
- 5. If using a `PLATFORM_SCHEMA` to be used with `EntityComponent`, import base from `homeassistant.helpers.config_validation`
- 6. Never depend on users adding things to `customize` to configure behavior inside your component.
-
-### {% linkable_title 3. Component/platform communication %}
-
- 1. If you need to share global data with platforms, use the dictionary `hass.data`. `hass.data[DATA_XY]` while `XY` is the component is preferred over `hass.data[DOMAIN]`.
- 2. If the component fetches data that causes its related platform entities to update, you can notify them using the dispatcher code in `homeassistant.helpers.dispatcher`.
+
\ No newline at end of file
diff --git a/source/developers/code_review_platform.markdown b/source/developers/code_review_platform.markdown
index 00ab599c1b..0be7ec0a02 100644
--- a/source/developers/code_review_platform.markdown
+++ b/source/developers/code_review_platform.markdown
@@ -9,70 +9,6 @@ sharing: true
footer: true
---
-A checklist of things to do when you're adding a new platform.
-
-
-Not all existing platforms follow the requirements in this checklist. This cannot be used as a reason to not follow them!
-
-
-### {% linkable_title 1. Requirements %}
-
- 1. Requirement version should be pinned: `REQUIREMENTS = ['phue==0.8.1']`
- 2. We no longer want requirements hosted on GitHub. Please upload to PyPi.
- 3. Requirements should only be imported inside functions. This is necessary because requirements are installed on the fly.
-
-### {% linkable_title 2. Dependencies %}
-
- 1. If you depend on a component for the connection, add it to your dependencies: `DEPENDENCIES = ['nest']`
-
-### {% linkable_title 3. Configuration %}
-
- 1. Voluptuous schema present for config validation
- 2. Voluptuous schema extends schema from component (e.g., `light.hue.PLATFORM_SCHEMA` extends `light.PLATFORM_SCHEMA`)
- 3. Default parameters specified in voluptuous schema, not in `setup_platform(…)`
- 4. Your `PLATFORM_SCHEMA` should use as many generic config keys as possible from `homeassistant.const`
- ```python
- import voluptuous as vol
-
- from homeassistant.const import CONF_FILENAME, CONF_HOST
- from homeassistant.components.light import PLATFORM_SCHEMA
- import homeassistant.helpers.config_validation as cv
-
- CONF_ALLOW_UNREACHABLE = 'allow_unreachable'
- DEFAULT_UNREACHABLE = False
-
- PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
- vol.Required(CONF_HOST): cv.string,
- vol.Optional(CONF_ALLOW_UNREACHABLE,
- default=DEFAULT_UNREACHABLE): cv.boolean,
- vol.Optional(CONF_FILENAME): cv.string,
- })
- ```
- 5. Never depend on users adding things to `customize` to configure behavior inside your platform.
-
-### {% linkable_title 4. Setup Platform %}
-
- 1. Test if passed in info (user/pass/host etc.) works.
- 2. Group your calls to `add_devices` if possible.
- 3. If platform adds extra services, format should be `._`.
-
-### {% linkable_title 5. Entity %}
-
- 1. Extend entity from component, e.g., `class HueLight(Light)`
- 2. Do not call `update()` in constructor, use `add_devices(devices, True)` instead.
- 3. Do not do any I/O inside properties. Cache values inside `update()` instead.
- 4. The state and/or attributes should not contain relative time since something happened. Instead it should store UTC timestamps.
-
-### {% linkable_title 6. Communication with devices/services %}
-
- 1. All API specific code has to be part of a third party library hosted on PyPi. Home Assistant should only interact with objects and not make direct calls to the API.
-
-```python
-# bad
-status = requests.get(url('/status'))
-
-# good
-from phue import Bridge
-bridge = Bridge(…)
-status = bridge.status()
-```
+
\ No newline at end of file
diff --git a/source/developers/component_deps_and_reqs.markdown b/source/developers/component_deps_and_reqs.markdown
index 2a6ae27d0e..0a9b6758eb 100644
--- a/source/developers/component_deps_and_reqs.markdown
+++ b/source/developers/component_deps_and_reqs.markdown
@@ -9,35 +9,6 @@ sharing: true
footer: true
---
-Home Assistant allows components and platforms to specify their dependencies and requirements using the variables `DEPENDENCIES` and `REQUIREMENTS`. Both are lists that contain strings.
-
-## {% linkable_title Dependencies %}
-
-Dependencies are other Home Assistant components that should be setup before the platform is loaded. An example is the MQTT sensor component, which requires an active connection to an MQTT broker. If Home Assistant is unable to load and setup the MQTT component, it will not setup the MQTT sensor component.
-
-```python
-DEPENDENCIES = ['mqtt']
-```
-
-## {% linkable_title Requirements %}
-
-Requirements are Python libraries or modules that you would normally install using `pip` for your component. Home Assistant will try to install the requirements into the `deps` subdirectory of the Home Assistant [configuration directory](/docs/configuration/) if you are not using a `venv` or in something like `path/to/venv/lib/python3.6/site-packages` if you running in a virtual environment. This will make sure that all requirements are present at startup. If steps fails like missing packages for the compilation of a module or other install errors, the component will fail to load.
-
-Requirements is a list of strings. Each entry is a `pip` compatible string. For example, the media player Cast platform depends on the Python package PyChromecast v0.6.12:
-
-```python
-REQUIREMENTS = ['pychromecast==0.6.12']
-```
-
-During development of a component, it can be useful to test against different versions of a requirement. This can be done in two steps, using pychromecast as an example:
-
-* `pip install pychromecast==0.6.13 --target ~/.homeassistant/deps`
-* `hass --skip-pip`
-
-This will use the specified version, and prevent Home Assistant from trying to override it with what is currently in `REQUIREMENTS`.
-
-If you need to make changes to a requirement to support your component, it's also possible to `pip install` from a checkout of the requirement.
-
-* `git clone https://github.com/balloob/pychromecast.git`
-* `pip install ./pychromecast`
-* `hass --skip-pip`
+
\ No newline at end of file
diff --git a/source/developers/component_discovery.markdown b/source/developers/component_discovery.markdown
index 2911adaa26..69fb672d5f 100644
--- a/source/developers/component_discovery.markdown
+++ b/source/developers/component_discovery.markdown
@@ -9,52 +9,6 @@ sharing: true
footer: true
---
-
-This option is only available for built-in components.
-
-
-Home Assistant has a discovery service running in the background to discover new devices. Whenever a new device is discovered, a `SERVICE_DISCOVERED` event will be fired with the found service and the information. The `discovery` component has some knowledge about which components handle which type of services and will ensure those are loaded and listening before firing the `SERVICE_DISCOVERED` event.
-
-### {% linkable_title Add discovery instructions %}
-
-Device discovery for Home Assistant has been extracted into an external library called [NetDisco](https://github.com/home-assistant/netdisco). This library is integrated using [the `discovery` component](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/discovery.py) and scans the network in intervals for uPnP and zeroconf/mDNS services.
-
-To have your device be discovered, you will have to extend the NetDisco library to be able to find your device. This is done by adding a new discoverable. [See the repository for examples of existing discoverable.](https://github.com/home-assistant/netdisco/tree/master/netdisco/discoverables)
-
-### {% 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 a discovered AwesomeDevice:
-
-```python
-from homeassistant.components.discovery import SERVICE_AWESOMEDEVICE
-from homeassistant.helpers import discovery
-
-DOMAIN = 'awesomedevice'
-
-DEPENDENCIES = ['http']
-
-def setup(hass, config):
- cfg = config.get(DOMAIN)
-
- def device_discovered(service, info):
- """ Called when a Awesome device has been discovered. """
- print("Discovered a new Awesome device: {}".format(info))
-
- discovery.listen(
- 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 `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),
-}
-```
+
\ No newline at end of file
diff --git a/source/developers/component_events.markdown b/source/developers/component_events.markdown
index ee2e281b1f..65f729e52d 100644
--- a/source/developers/component_events.markdown
+++ b/source/developers/component_events.markdown
@@ -9,4 +9,6 @@ sharing: true
footer: true
---
-Home Assistant has different ways of responding to events that occur in Home Assistant. These have been organized in [helper methods](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/helpers/event.py). Examples are `track_state_change`, `track_point_in_time`, `track_time_change`.
+
\ No newline at end of file
diff --git a/source/developers/component_generic_discovery.markdown b/source/developers/component_generic_discovery.markdown
index 8eacc22ff4..5fd2881601 100644
--- a/source/developers/component_generic_discovery.markdown
+++ b/source/developers/component_generic_discovery.markdown
@@ -9,69 +9,6 @@ sharing: true
footer: true
---
-New controller or hub components often need to add platforms in sub-components (i.e. Lights & Switches) without additional configuration.
-This can be achieved using the `load_platform` or `async_load_platform` methods from `homeassistant.helpers.discovery`:
-
-```python
-def load_platform(hass, component, platform, discovered=None, hass_config=None)
-```
-
-From more info on how this works, refer to the [load_platform](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/helpers/discovery.py#L136) method.
-
-### {% linkable_title Example %}
-
-Say you need to implement your new MyFlashyHub that controls both Switches & Lights, you can follow these steps:
-
-Configuration required for your new hub component:
-
-```yaml
-myflashyhub:
- example: setting
-```
-
-The source for your component can be located in your configuration directory for now:
-
-```bash
-~/.homeassistant/custom_components/myflashyhub.py
-~/.homeassistant/custom_components/light/myflashyhub.py
-~/.homeassistant/custom_components/switch/myflashyhub.py
-```
-
-In the hub component `myflashyhub.py` you can call your light and switch components. To pass any non-serializable information to the platforms in the sub-component, you can use a global variable.
-
-```python
-from homeassistant.helpers.discovery import load_platform
-DOMAIN = 'myflashyhub'
-
-DATA_MFH = 'MFH'
-
-def setup(hass, config):
- """Your controller/hub specific code."""
- hass.data[DATA_MFH] = SomeObjectToInitialiseGlobal()
-
- #--- snip ---
- load_platform(hass, 'light', DOMAIN)
- load_platform(hass, 'switch', DOMAIN, {'optional': 'arguments'})
-```
-
-Add your custom device specific code to the `setup_platform` method in `light/myflashyhub.py` and `switch/myflashyhub`.
-
-```python
-import custom_components.myflashyhub as myflashyhub
-
-# 'switch' will receive discovery_info={'optional': 'arguments'}
-# as passed in above. 'light' will receive discovery_info=None
-def setup_platform(hass, config, add_devices, discovery_info=None):
- """Your switch/light specific code."""
- # You can now use hass.data[myflashyhub.DATA_MFH]
-```
-
-
-The `load_platform` method allows the platforms to be loaded without the need for any additional platform entries in your `configuration.yaml` file, which normally would have been:
-
-```yaml
-#light:
-# platform: myflashyhub
-#switch:
-# platform: myflashyhub
-```
+
\ No newline at end of file
diff --git a/source/developers/component_loading.markdown b/source/developers/component_loading.markdown
index b817fadf38..f5c6e04e9f 100644
--- a/source/developers/component_loading.markdown
+++ b/source/developers/component_loading.markdown
@@ -9,17 +9,6 @@ sharing: true
footer: true
---
-A component will be loaded on start if a section (ie. `light:`) for it exists in the config file. A component can also be loaded if another component is loaded that depends on it. When loading a component Home Assistant will check the following paths:
-
- * `/custom_components/`
- * `homeassistant/components/` (built-in components)
-
-Once loaded, a component will only be setup if all dependencies can be loaded and are able to setup. Keep an eye on the logs to see if your component could be loaded and initialized.
-
-
-You can override a built-in component by having a component with the same name in your config/custom_components folder. If the built-in component is inside a subfolder, take care to place your customization in a folder with the same name in config/custom_components/*folder*. Note that overriding built-in components is not recommended and will probably break things!
-
-
-
-Home Assistant will use the directory that contains your config file as the directory that holds your customizations. By default this is the config folder in your current work directory. You can use a different folder by running Home Assistant with the --config argument: python3 homeassistant --config /YOUR/CONFIG/PATH/.
-
+
\ No newline at end of file
diff --git a/source/developers/component_states.markdown b/source/developers/component_states.markdown
index f89803699a..d94c5b12ba 100644
--- a/source/developers/component_states.markdown
+++ b/source/developers/component_states.markdown
@@ -9,14 +9,6 @@ sharing: true
footer: true
---
-It is the responsibility of the component to maintain the states of the devices in your domain. Each device should be a single state and, if possible, a group should be provided that tracks the combined state of the devices.
-
-A state can have several attributes that will help the frontend in displaying your state:
-
-- `friendly_name`: this name will be used as the name of the device
-- `entity_picture`: this picture will be shown instead of the domain icon
-- `unit_of_measurement`: this will be appended to the state in the interface
-- `hidden`: This is a suggestion to the frontend on if the state should be hidden
-
-These attributes are defined in [homeassistant.helpers.entity](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/helpers/entity.py#L180).
-
+
\ No newline at end of file
diff --git a/source/developers/component_visibility.markdown b/source/developers/component_visibility.markdown
index 333c627cf5..29a84a747d 100644
--- a/source/developers/component_visibility.markdown
+++ b/source/developers/component_visibility.markdown
@@ -9,13 +9,6 @@ sharing: true
footer: true
---
-Generally, when creating a new entity for Home Assistant you will want it to be a class that inherits the [homeassistant.helpers.entity.Entity](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/helpers/entity.py) class. If this is done, visibility will be handled for you.
-You can set a suggestion for your entity's visibility by setting the `hidden` property by doing something similar to the following.
-
-```python
-self.hidden = True
-```
-
-This will SUGGEST that the active frontend hides the entity. This requires that the active frontend support hidden cards (the default frontend does) and that the value of hidden be included in your attributes dictionary (see above). The Entity abstract class will take care of this for you.
-
-Remember: The suggestion set by your component's code will always be overwritten by user settings in the `configuration.yaml` file. This is why you may set hidden to be `False`, but the property may remain `True` (or vice-versa).
+
\ No newline at end of file
diff --git a/source/developers/creating_components.markdown b/source/developers/creating_components.markdown
index f52629db8a..678014da4f 100644
--- a/source/developers/creating_components.markdown
+++ b/source/developers/creating_components.markdown
@@ -9,19 +9,6 @@ sharing: true
footer: true
---
-Alright, you're ready to make your first component. AWESOME. Don't worry, we've tried hard to keep it as easy as possible.
-
-### {% linkable_title Example component %}
-
-Add `hello_state:` to your `configuration.yaml` file and create a file `/custom_components/hello_state.py` with the below code to test it locally.
-
-```python
-DOMAIN = 'hello_state'
-
-def setup(hass, config):
- hass.states.set('hello.world', 'Paulus')
-
- return True
-```
-
-For more examples, see the [Custom Python Component Examples](/cookbook/#custom-python-component-examples) on our examples page.
+
\ No newline at end of file
diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown
index 0fa372b00f..3e44e31340 100644
--- a/source/developers/credits.markdown
+++ b/source/developers/credits.markdown
@@ -2,7 +2,7 @@
layout: page
title: "Credits"
description: "Credits for the developers who contributed to Home Assistant."
-date: 2018-03-31 09:09:02 +0000
+date: 2018-04-29 16:35:15 +0000
sidebar: true
comments: false
sharing: true
@@ -13,7 +13,7 @@ This page contains a list of people who have contributed in one way or another t
### {% linkable_title Author %}
-- [Paulus Schoutsen (@balloob)](https://github.com/balloob "6522 total commits to the home-assistant organization, 3835 commits to home-assistant, 1426 commits to home-assistant.github.io, 750 commits to home-assistant-polymer, 244 commits to home-assistant-js, 122 commits to netdisco, 46 commits to home-assistant-js-websocket, 31 commits to hass-release, 17 commits to LabelBot, 15 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 5 commits to hassio, 3 commits to hassio-addons, 2 commits to hassio-addons-example, 2 commits to hassio-build, 2 commits to issue-bot, 2 commits to lambda-home-assistant-github, 2 commits to home-assistant-iOS, 1 commit to architecture, 1 commit to home-assistant-notebooks, 1 commit to warrant")
+- [Paulus Schoutsen (@balloob)](https://github.com/balloob "6642 total commits to the home-assistant organization, 3877 commits to home-assistant, 1448 commits to home-assistant.github.io, 768 commits to home-assistant-polymer, 244 commits to home-assistant-js, 123 commits to netdisco, 46 commits to home-assistant-js-websocket, 35 commits to developers.home-assistant, 33 commits to hass-release, 17 commits to LabelBot, 15 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 5 commits to hassio, 3 commits to hassio-addons, 2 commits to hassio-build, 2 commits to lambda-home-assistant-github, 2 commits to home-assistant-iOS, 2 commits to hassio-addons-example, 2 commits to issue-bot, 1 commit to architecture, 1 commit to home-assistant-notebooks, 1 commit to warrant")
### {% linkable_title Contributors %}
@@ -21,14 +21,14 @@ This page contains a list of people who have contributed in one way or another t
- [7even (@hwikene)](https://github.com/hwikene "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [a-andre (@a-andre)](https://github.com/a-andre "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Aaron Bach (@bachya)](https://github.com/bachya "49 total commits to the home-assistant organization, 32 commits to home-assistant, 17 commits to home-assistant.github.io")
+- [Aaron Bach (@bachya)](https://github.com/bachya "53 total commits to the home-assistant organization, 35 commits to home-assistant, 18 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")
- [Abílio Costa (@abmantis)](https://github.com/abmantis "22 total commits to the home-assistant organization, 13 commits to home-assistant, 5 commits to home-assistant.github.io, 2 commits to home-assistant-polymer, 1 commit to home-assistant-js-websocket, 1 commit to netdisco")
- [Adam (@SilvrrGIT)](https://github.com/SilvrrGIT "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io")
- [Adam Baxter (@voltagex)](https://github.com/voltagex "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Adam 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 Mills (@armills)](https://github.com/armills "315 total commits to the home-assistant organization, 164 commits to home-assistant, 90 commits to home-assistant-polymer, 57 commits to home-assistant.github.io, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant")
+- [Adam Mills (@armills)](https://github.com/armills "324 total commits to the home-assistant organization, 171 commits to home-assistant, 92 commits to home-assistant-polymer, 57 commits to home-assistant.github.io, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant")
- [Adrian Popa (@mad-ady)](https://github.com/mad-ady "5 total commits to the home-assistant organization, 4 commits to appdaemon, 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")
- [Adrien Brault (@adrienbrault)](https://github.com/adrienbrault "2 total commits to the home-assistant organization, 2 commits to home-assistant")
@@ -37,31 +37,30 @@ This page contains a list of people who have contributed in one way or another t
- [akloeckner (@akloeckner)](https://github.com/akloeckner "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [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 "20 total commits to the home-assistant organization, 16 commits to home-assistant, 4 commits to home-assistant.github.io")
-- [Alan Tse (@alandtse)](https://github.com/alandtse "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant")
+- [Alan Tse (@alandtse)](https://github.com/alandtse "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 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 "16 total commits to the home-assistant organization, 11 commits to home-assistant, 5 commits to home-assistant.github.io")
+- [Albert Lee (@trisk)](https://github.com/trisk "18 total commits to the home-assistant organization, 11 commits to home-assistant, 7 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 (@asbach)](https://github.com/asbach "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Alex Barcelo (@alexbarcelo)](https://github.com/alexbarcelo "6 total commits to the home-assistant organization, 3 commits to hassio-addons, 3 commits to home-assistant.github.io")
- [Alex Harvey (@infamy)](https://github.com/infamy "29 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io, 4 commits to hassio-os")
- [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Alex MF (@adsmf)](https://github.com/adsmf "1 total commits to the home-assistant organization, 1 commit to hassio-addons")
- [Alex Osadchyy (@aosadchyy)](https://github.com/aosadchyy "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Alex Tzonkov (@attzonko)](https://github.com/attzonko "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [Alexander Bachmeier (@asbach)](https://github.com/asbach "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Alexander Kratzer (@hexxter)](https://github.com/hexxter "8 total commits to the home-assistant organization, 8 commits to home-assistant")
- [Alexandre Perrin (@kAworu)](https://github.com/kAworu "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Alexis Iglauer (@ax42)](https://github.com/ax42 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [Alexis Iglauer (@ax42)](https://github.com/ax42 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Alfie Day (@Azelphur)](https://github.com/Azelphur "12 total commits to the home-assistant organization, 12 commits to home-assistant")
- [Aliaksandr (@minchik)](https://github.com/minchik "7 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to appdaemon, 2 commits to home-assistant")
-- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "141 total commits to the home-assistant organization, 82 commits to home-assistant.github.io, 53 commits to home-assistant, 4 commits to home-assistant-polymer, 1 commit to pi-gen, 1 commit to hassio-addons")
+- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "141 total commits to the home-assistant organization, 82 commits to home-assistant.github.io, 53 commits to home-assistant, 4 commits to home-assistant-polymer, 1 commit to hassio-addons, 1 commit to pi-gen")
- [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 "208 total commits to the home-assistant organization, 165 commits to home-assistant, 41 commits to home-assistant.github.io, 2 commits to home-assistant-polymer")
+- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "213 total commits to the home-assistant organization, 170 commits to home-assistant, 41 commits to home-assistant.github.io, 2 commits to home-assistant-polymer")
- [andig (@andig)](https://github.com/andig "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [Andrea Campi (@andreacampi)](https://github.com/andreacampi "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [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 "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Andreas Jacobsen (@andreasjacobsen93)](https://github.com/andreasjacobsen93 "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to hassio-addons")
- [Andreas Rammhold (@andir)](https://github.com/andir "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
@@ -71,13 +70,13 @@ This page contains a list of people who have contributed in one way or another t
- [Andrej Friesen (@ajfriesen)](https://github.com/ajfriesen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Andrew (@aneisch)](https://github.com/aneisch "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [Andrew (@aoakeson)](https://github.com/aoakeson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "802 total commits to the home-assistant organization, 667 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 22 commits to home-assistant.github.io")
+- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "815 total commits to the home-assistant organization, 680 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 22 commits to home-assistant.github.io")
- [Andrew Smith (@andrewmichaelsmith)](https://github.com/andrewmichaelsmith "2 total commits to the home-assistant organization, 2 commits to pi-gen")
- [Andrew 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 Wedgbury (@sconemad)](https://github.com/sconemad "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [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 "294 total commits to the home-assistant organization, 134 commits to home-assistant-polymer, 122 commits to home-assistant, 37 commits to home-assistant.github.io, 1 commit to home-assistant-js-websocket")
+- [Andrey (@andrey-git)](https://github.com/andrey-git "295 total commits to the home-assistant organization, 135 commits to home-assistant-polymer, 122 commits to home-assistant, 37 commits to home-assistant.github.io, 1 commit to home-assistant-js-websocket")
- [Andrey Kupreychik (@foxel)](https://github.com/foxel "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Andrzej (@andriej)](https://github.com/andriej "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Andréas Lundgren (@adevade)](https://github.com/adevade "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
@@ -85,14 +84,14 @@ This page contains a list of people who have contributed in one way or another t
- [anotherthomas (@anotherthomas)](https://github.com/anotherthomas "1 total commits to the home-assistant organization, 1 commit to hassio-addons")
- [Anthony Arnaud (@aarnaud)](https://github.com/aarnaud "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Anthony Hughes (@tony2nite)](https://github.com/tony2nite "1 total commits to the home-assistant organization, 1 commit to netdisco")
-- [Antoine Bertin (@Diaoul)](https://github.com/Diaoul "5 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant, 1 commit to home-assistant-polymer")
+- [Antoine Bertin (@Diaoul)](https://github.com/Diaoul "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Anton Glukhov (@toxxin)](https://github.com/toxxin "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [Anton Lundin (@glance-)](https://github.com/glance- "8 total commits to the home-assistant organization, 7 commits to home-assistant, 1 commit to netdisco")
- [Anton Sarukhanov (@antsar)](https://github.com/antsar "6 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Antoni K (@Antoni-K)](https://github.com/Antoni-K "1 total commits to the home-assistant organization, 1 commit to hassbian-scripts")
- [apo-mak (@apo-mak)](https://github.com/apo-mak "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [arcsur (@arcsur)](https://github.com/arcsur "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Ardetus (@Ardetus)](https://github.com/Ardetus "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant")
+- [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 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Ari Lotter (@arilotter)](https://github.com/arilotter "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [arjenfvellinga (@arjenfvellinga)](https://github.com/arjenfvellinga "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
@@ -120,15 +119,17 @@ This page contains a list of people who have contributed in one way or another t
- [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 Lebherz (@benleb)](https://github.com/benleb "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 Pirt (@bjpirt)](https://github.com/bjpirt "2 total commits to the home-assistant organization, 2 commits to pi-gen")
-- [Ben Randall (@veleek)](https://github.com/veleek "3 total commits to the home-assistant organization, 3 commits to home-assistant")
+- [Ben Randall (@veleek)](https://github.com/veleek "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [Ben Thomas (@wazoo)](https://github.com/wazoo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
+- [Benedict Aas (@Shou)](https://github.com/Shou "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Benjamin Parzella (@bparzella)](https://github.com/bparzella "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [Benji (@bbbenji)](https://github.com/bbbenji "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Bertbert (@bertbert72)](https://github.com/bertbert72 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [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")
+- [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-build, 1 commit to home-assistant-polymer, 1 commit to hassio")
- [BigMoby (@bigmoby)](https://github.com/bigmoby "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [BioSehnsucht (@BioSehnsucht)](https://github.com/BioSehnsucht "14 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 4 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")
@@ -138,10 +139,11 @@ This page contains a list of people who have contributed in one way or another t
- [Bob Anderson (@rwa)](https://github.com/rwa "11 total commits to the home-assistant organization, 7 commits to home-assistant, 4 commits to home-assistant.github.io")
- [Bob Igo (@Human)](https://github.com/Human "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Boced66 (@boced66)](https://github.com/boced66 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [bonanitech (@bonanitech)](https://github.com/bonanitech "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [boojew (@boojew)](https://github.com/boojew "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [Boris K (@bokub)](https://github.com/bokub "12 total commits to the home-assistant organization, 6 commits to home-assistant, 6 commits to home-assistant.github.io")
- [bottomquark (@bottomquark)](https://github.com/bottomquark "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Boyi C (@fanthos)](https://github.com/fanthos "18 total commits to the home-assistant organization, 11 commits to home-assistant-polymer, 5 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Boyi C (@fanthos)](https://github.com/fanthos "22 total commits to the home-assistant organization, 15 commits to home-assistant-polymer, 5 commits to home-assistant, 2 commits to home-assistant.github.io")
- [bpoirriez (@bpoirriez)](https://github.com/bpoirriez "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Brad Dixon (@rbdixon)](https://github.com/rbdixon "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Brad Johnson (@bradsk88)](https://github.com/bradsk88 "2 total commits to the home-assistant organization, 2 commits to home-assistant")
@@ -166,23 +168,23 @@ This page contains a list of people who have contributed in one way or another t
- [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")
- [bvansambeek (@bvansambeek)](https://github.com/bvansambeek "1 total commits to the home-assistant organization, 1 commit to hassio-build")
-- [c727 (@c727)](https://github.com/c727 "61 total commits to the home-assistant organization, 41 commits to home-assistant-polymer, 13 commits to home-assistant.github.io, 5 commits to home-assistant, 2 commits to hassio")
+- [c727 (@c727)](https://github.com/c727 "71 total commits to the home-assistant organization, 50 commits to home-assistant-polymer, 13 commits to home-assistant.github.io, 6 commits to home-assistant, 2 commits to hassio")
- [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 "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco")
- [Cameron Moore (@moorereason)](https://github.com/moorereason "3 total commits to the home-assistant organization, 3 commits to hassio-cli")
-- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "96 total commits to the home-assistant organization, 88 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")
+- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "98 total commits to the home-assistant organization, 90 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to fabric-home-assistant, 1 commit to homebridge-homeassistant, 1 commit to hassbian-scripts")
- [carlosmgr (@carlosmgr)](https://github.com/carlosmgr "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [Carter (@BluGeni)](https://github.com/BluGeni "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [cdce8p (@cdce8p)](https://github.com/cdce8p "69 total commits to the home-assistant organization, 43 commits to home-assistant, 22 commits to home-assistant.github.io, 4 commits to home-assistant-polymer")
+- [cdce8p (@cdce8p)](https://github.com/cdce8p "89 total commits to the home-assistant organization, 53 commits to home-assistant, 29 commits to home-assistant.github.io, 4 commits to home-assistant-polymer, 3 commits to hass-release")
- [Cecron (@Cecron)](https://github.com/Cecron "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [Cedric Van Goethem (@Zepheus)](https://github.com/Zepheus "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Cenk Gündoğan (@cgundogan)](https://github.com/cgundogan "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [Cezar Sá Espinola (@cezarsa)](https://github.com/cezarsa "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [cgtobi (@cgtobi)](https://github.com/cgtobi "26 total commits to the home-assistant organization, 16 commits to home-assistant, 10 commits to home-assistant.github.io")
+- [cgtobi (@cgtobi)](https://github.com/cgtobi "28 total commits to the home-assistant organization, 17 commits to home-assistant, 11 commits to home-assistant.github.io")
- [chanders (@chanders)](https://github.com/chanders "2 total commits to the home-assistant organization, 2 commits to hadashboard")
- [Charles Blonde (@CharlesBlonde)](https://github.com/CharlesBlonde "19 total commits to the home-assistant organization, 12 commits to home-assistant, 7 commits to home-assistant.github.io")
-- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "17 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 6 commits to home-assistant")
+- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "22 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 7 commits to home-assistant, 3 commits to home-assistant-polymer")
- [Charles Spirakis (@srcLurker)](https://github.com/srcLurker "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Chayoung You (@yous)](https://github.com/yous "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Check your git settings\! (@invalid-email-address)](https://github.com/invalid-email-address "1 total commits to the home-assistant organization, 1 commit to libcoap")
@@ -191,6 +193,7 @@ This page contains a list of people who have contributed in one way or another t
- [Chris Aloi (@ctaloi)](https://github.com/ctaloi "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Chris Crowe (@chriscrowe)](https://github.com/chriscrowe "3 total commits to the home-assistant organization, 3 commits to homebridge-homeassistant")
- [Chris Huegle (@chuegle)](https://github.com/chuegle "1 total commits to the home-assistant organization, 1 commit to netdisco")
+- [Chris Jones (@fezfox)](https://github.com/fezfox "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Chris Monteiro (@cmonteiro128)](https://github.com/cmonteiro128 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Chris Mulder (@chrisvis)](https://github.com/chrisvis "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Chris Smolen (@smolz)](https://github.com/smolz "10 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 4 commits to appdaemon")
@@ -200,21 +203,21 @@ This page contains a list of people who have contributed in one way or another t
- [Christian Brædstrup (@LinuxChristian)](https://github.com/LinuxChristian "8 total commits to the home-assistant organization, 8 commits to home-assistant")
- [Christian Lasarczyk (@ChrisLasar)](https://github.com/ChrisLasar "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Christian Studer (@cstuder)](https://github.com/cstuder "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
-- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "33 total commits to the home-assistant organization, 20 commits to home-assistant, 13 commits to home-assistant.github.io")
+- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "37 total commits to the home-assistant organization, 22 commits to home-assistant, 15 commits to home-assistant.github.io")
- [Christoffer Kylvåg (@christoe)](https://github.com/christoe "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Christoph Wagner (@Christoph-Wagner)](https://github.com/Christoph-Wagner "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Christopher Vella (@chrisvella)](https://github.com/chrisvella "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Christopher Viel (@Chris-V)](https://github.com/Chris-V "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io")
-- [ChristopherLMiller (@ChristopherLMiller)](https://github.com/ChristopherLMiller "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [chrysn (@chrysn)](https://github.com/chrysn "65 total commits to the home-assistant organization, 65 commits to libcoap")
- [chz^3 (@chzchzchz)](https://github.com/chzchzchz "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [Ciquattro (@CiquattroFPV)](https://github.com/CiquattroFPV "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [citruz (@citruz)](https://github.com/citruz "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [clach04 (@clach04)](https://github.com/clach04 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [citruz (@citruz)](https://github.com/citruz "4 total commits to the home-assistant organization, 4 commits to home-assistant")
+- [clach04 (@clach04)](https://github.com/clach04 "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to hassbian-scripts")
- [Claus F\. Strasburger (@cfstras)](https://github.com/cfstras "5 total commits to the home-assistant organization, 5 commits to pi-gen")
- [cogneato (@cogneato)](https://github.com/cogneato "15 total commits to the home-assistant organization, 15 commits to home-assistant.github.io")
- [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 "26 total commits to the home-assistant organization, 15 commits to home-assistant, 11 commits to home-assistant.github.io")
+- [Colin Frei (@colinfrei)](https://github.com/colinfrei "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [Colin O'Dell (@colinodell)](https://github.com/colinodell "27 total commits to the home-assistant organization, 16 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")
- [Conrad Juhl Andersen (@cnrd)](https://github.com/cnrd "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 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")
@@ -225,8 +228,8 @@ This page contains a list of people who have contributed in one way or another t
- [Craig J\. Ward (@wardcraigj)](https://github.com/wardcraigj "27 total commits to the home-assistant organization, 20 commits to home-assistant, 7 commits to home-assistant.github.io")
- [CTLS (@CTLS)](https://github.com/CTLS "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [CV (@dagobert)](https://github.com/dagobert "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
-- [cxlwill (@cxlwill)](https://github.com/cxlwill "3 total commits to the home-assistant organization, 2 commits to home-assistant-polymer, 1 commit to hassbian-scripts")
-- [Dale Higgs (@dale3h)](https://github.com/dale3h "35 total commits to the home-assistant organization, 23 commits to home-assistant.github.io, 10 commits to home-assistant, 1 commit to hassbot, 1 commit to homebridge-homeassistant")
+- [cxlwill (@cxlwill)](https://github.com/cxlwill "4 total commits to the home-assistant organization, 2 commits to home-assistant-polymer, 2 commits to hassbian-scripts")
+- [Dale Higgs (@dale3h)](https://github.com/dale3h "36 total commits to the home-assistant organization, 24 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 Chen (@djchen)](https://github.com/djchen "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "17 total commits to the home-assistant organization, 14 commits to home-assistant, 3 commits to home-assistant.github.io")
@@ -239,15 +242,15 @@ 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 (@delneet)](https://github.com/delneet "2 total commits to the home-assistant organization, 2 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 "294 total commits to the home-assistant organization, 180 commits to home-assistant, 111 commits to home-assistant.github.io, 3 commits to home-assistant-polymer")
-- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "84 total commits to the home-assistant organization, 39 commits to home-assistant, 39 commits to home-assistant.github.io, 6 commits to hassio-addons")
+- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "303 total commits to the home-assistant organization, 189 commits to home-assistant, 111 commits to home-assistant.github.io, 3 commits to home-assistant-polymer")
+- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "88 total commits to the home-assistant organization, 42 commits to home-assistant, 39 commits to home-assistant.github.io, 7 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 Shokouhi (@dshokouhi)](https://github.com/dshokouhi "12 total commits to the home-assistant organization, 12 commits to home-assistant.github.io")
- [Daniel Stone (@daniel-stoneuk)](https://github.com/daniel-stoneuk "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Daniel Trnka (@trnila)](https://github.com/trnila "2 total commits to the home-assistant organization, 2 commits to appdaemon")
- [Daniel Watkins (@OddBloke)](https://github.com/OddBloke "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Daniel Welch (@danielwelch)](https://github.com/danielwelch "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant")
+- [Daniel Welch (@danielwelch)](https://github.com/danielwelch "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant, 1 commit to hassio-addons")
- [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 "11 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to netdisco")
@@ -258,6 +261,7 @@ This page contains a list of people who have contributed in one way or another t
- [DaveSergeant (@dethpickle)](https://github.com/dethpickle "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [David (@fanaticDavid)](https://github.com/fanaticDavid "16 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 3 commits to home-assistant, 1 commit to home-assistant-polymer")
- [David \(Drew\) Jackson (@David-Jackson)](https://github.com/David-Jackson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [David Broadfoot (@dlbroadfoot)](https://github.com/dlbroadfoot "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [David De Sloovere (@DavidDeSloovere)](https://github.com/DavidDeSloovere "16 total commits to the home-assistant organization, 16 commits to home-assistant.github.io")
- [David Fiel (@dfiel)](https://github.com/dfiel "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [David Grant (@davegravy)](https://github.com/davegravy "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant")
@@ -271,70 +275,63 @@ This page contains a list of people who have contributed in one way or another t
- [Dean Camera (@abcminiuser)](https://github.com/abcminiuser "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io")
- [deisi (@deisi)](https://github.com/deisi "10 total commits to the home-assistant organization, 10 commits to home-assistant")
- [Delio Castillo (@jangeador)](https://github.com/jangeador "2 total commits to the home-assistant organization, 2 commits to hassio-addons")
-- [Demid Lupin (@lupin-de-mid)](https://github.com/lupin-de-mid "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
+- [Demid Lupin (@lupin-de-mid)](https://github.com/lupin-de-mid "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Denix (@denics)](https://github.com/denics "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Dennis de Greef (@dennisdegreef)](https://github.com/dennisdegreef "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [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 "39 total commits to the home-assistant organization, 30 commits to home-assistant, 9 commits to home-assistant.github.io")
-- [dersger (@dersger)](https://github.com/dersger "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
+- [dersger (@dersger)](https://github.com/dersger "4 total commits to the home-assistant organization, 3 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 "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
-- [Diogo Gomes (@dgomes)](https://github.com/dgomes "41 total commits to the home-assistant organization, 23 commits to home-assistant, 18 commits to home-assistant.github.io")
+- [Diogo Gomes (@dgomes)](https://github.com/dgomes "46 total commits to the home-assistant organization, 28 commits to home-assistant, 18 commits to home-assistant.github.io")
- [DoloresHA (@DoloresHA)](https://github.com/DoloresHA "2 total commits to the home-assistant organization, 2 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 "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io")
+- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [dramamoose (@dramamoose)](https://github.com/dramamoose "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
- [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 "217 total commits to the home-assistant organization, 217 commits to home-assistant.github.io")
+- [DubhAd (@DubhAd)](https://github.com/DubhAd "240 total commits to the home-assistant organization, 240 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")
- [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")
+- [Edwin Smulders (@Dutchy-)](https://github.com/Dutchy- "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Egor Tsinko (@etsinko)](https://github.com/etsinko "12 total commits to the home-assistant organization, 9 commits to home-assistant, 3 commits to home-assistant.github.io")
-- [Eitan Mosenkis (@emosenkis)](https://github.com/emosenkis "6 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco")
+- [Eitan Mosenkis (@emosenkis)](https://github.com/emosenkis "4 total commits to the home-assistant organization, 3 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 "4 total commits to the home-assistant organization, 2 commits to home-assistant, 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")
+- [Eleftherios Chamakiotis (@lexam79)](https://github.com/lexam79 "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [Ellis Percival (@flyte)](https://github.com/flyte "29 total commits to the home-assistant organization, 25 commits to home-assistant, 4 commits to home-assistant.github.io")
- [endor-force (@endor-force)](https://github.com/endor-force "9 total commits to the home-assistant organization, 4 commits to hassio-addons, 4 commits to home-assistant.github.io, 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 "115 total commits to the home-assistant organization, 99 commits to home-assistant, 13 commits to home-assistant.github.io, 3 commits to netdisco")
+- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "116 total commits to the home-assistant organization, 100 commits to home-assistant, 13 commits to home-assistant.github.io, 3 commits to netdisco")
- [Erik\-jan Riemers (@riemers)](https://github.com/riemers "14 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 1 commit to hassbian-scripts")
-- [escoand (@escoand)](https://github.com/escoand "4 total commits to the home-assistant organization, 4 commits to home-assistant")
-- [Ettienne Gous (@ettiennegous)](https://github.com/ettiennegous "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
+- [escoand (@escoand)](https://github.com/escoand "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to netdisco")
- [ettisan (@ettisan)](https://github.com/ettisan "8 total commits to the home-assistant organization, 8 commits to home-assistant")
- [Eu (@covrig)](https://github.com/covrig "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [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")
- [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 "4590 total commits to the home-assistant organization, 2938 commits to home-assistant.github.io, 1545 commits to home-assistant, 32 commits to home-assistant-assets, 31 commits to home-assistant-notebooks, 11 commits to hassio-build, 11 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 4 commits to hassio, 3 commits to development-docs, 1 commit to example-custom-config, 1 commit to home-assistant-js-websocket")
+- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4643 total commits to the home-assistant organization, 2964 commits to home-assistant.github.io, 1567 commits to home-assistant, 32 commits to home-assistant-assets, 31 commits to home-assistant-notebooks, 11 commits to hassio-build, 11 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 4 commits to hassio, 3 commits to development-docs, 3 commits to hassio-os, 2 commits to home-assistant-iOS, 1 commit to example-custom-config, 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")
-- [Fabien Piuzzi (@reefab)](https://github.com/reefab "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
+- [Fabien Piuzzi (@reefab)](https://github.com/reefab "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to home-assistant-polymer")
- [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")
-- [Fares Rihani (@anchepiece)](https://github.com/anchepiece "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
-- [Federico Zivolo (@FezVrasta)](https://github.com/FezVrasta "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Felix (@xifle)](https://github.com/xifle "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Felix Krause (@KrauseFx)](https://github.com/KrauseFx "27 total commits to the home-assistant organization, 27 commits to issue-bot")
- [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")
-- [Filip Bednárik (@drndos)](https://github.com/drndos "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [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.github.io, 4 commits to home-assistant, 3 commits to netdisco")
+- [Florian Holzapfel (@florianholzapfel)](https://github.com/florianholzapfel "11 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to netdisco")
- [Florian Klien (@flowolf)](https://github.com/flowolf "17 total commits to the home-assistant organization, 14 commits to home-assistant.github.io, 3 commits to home-assistant")
- [florianj1 (@florianj1)](https://github.com/florianj1 "1 total commits to the home-assistant organization, 1 commit to hassio")
-- [florincosta (@florincosta)](https://github.com/florincosta "6 total commits to the home-assistant organization, 3 commits to home-assistant.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 "30 total commits to the home-assistant organization, 21 commits to home-assistant.github.io, 5 commits to hassio, 2 commits to home-assistant-polymer, 1 commit to hassio-cli, 1 commit to appdaemon")
- [Frank (@syphernl)](https://github.com/syphernl "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Frantz (@rofrantz)](https://github.com/rofrantz "16 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to netdisco")
- [Frederic Hemberger (@fhemberger)](https://github.com/fhemberger "93 total commits to the home-assistant organization, 93 commits to home-assistant.github.io")
-- [Frederik Bolding (@FrederikBolding)](https://github.com/FrederikBolding "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [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 "207 total commits to the home-assistant organization, 95 commits to hassbian-scripts, 73 commits to home-assistant.github.io, 34 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer")
+- [Frederik Bolding (@FrederikBolding)](https://github.com/FrederikBolding "4 total commits to the home-assistant organization, 4 commits to home-assistant")
+- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "212 total commits to the home-assistant organization, 100 commits to hassbian-scripts, 73 commits to home-assistant.github.io, 34 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer")
- [freol35241 (@freol35241)](https://github.com/freol35241 "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [fuga2136 (@fuga2136)](https://github.com/fuga2136 "13 total commits to the home-assistant organization, 13 commits to home-assistant.github.io")
- [Gabor SZOLLOSI (@szogi)](https://github.com/szogi "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to appdaemon")
@@ -344,10 +341,11 @@ This page contains a list of people who have contributed in one way or another t
- [Georgi Kirichkov (@kirichkov)](https://github.com/kirichkov "17 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to appdaemon")
- [Georgi Yanev (@jumpalottahigh)](https://github.com/jumpalottahigh "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant-polymer")
- [Georgii Staroselskii (@staroselskii)](https://github.com/staroselskii "1 total commits to the home-assistant organization, 1 commit to pi-gen")
-- [Gerard (@gerard33)](https://github.com/gerard33 "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant")
+- [Gerard (@gerard33)](https://github.com/gerard33 "9 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 4 commits to home-assistant")
- [Gergely Imreh (@imrehg)](https://github.com/imrehg "16 total commits to the home-assistant organization, 11 commits to home-assistant, 5 commits to home-assistant.github.io")
- [Gianluca Barbaro (@MrMep)](https://github.com/MrMep "24 total commits to the home-assistant organization, 16 commits to home-assistant, 8 commits to home-assistant.github.io")
- [Giel Janssens (@gieljnssns)](https://github.com/gieljnssns "4 total commits to the home-assistant organization, 4 commits to home-assistant")
+- [GitBook Bot (@gitbook-bot)](https://github.com/gitbook-bot "1 total commits to the home-assistant organization, 1 commit to developers.home-assistant")
- [githubbuh (@githubbuh)](https://github.com/githubbuh "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [gitmopp (@gitmopp)](https://github.com/gitmopp "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Giuseppe (@glpatcern)](https://github.com/glpatcern "2 total commits to the home-assistant organization, 2 commits to home-assistant")
@@ -366,16 +364,15 @@ This page contains a list of people who have contributed in one way or another t
- [gwendalg (@gwendalg)](https://github.com/gwendalg "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [happyleavesaoc (@happyleavesaoc)](https://github.com/happyleavesaoc "114 total commits to the home-assistant organization, 90 commits to home-assistant, 23 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Harald Nagel (@haraldnagel)](https://github.com/haraldnagel "6 total commits to the home-assistant organization, 6 commits to home-assistant")
-- [Hari Menon (@floydpink)](https://github.com/floydpink "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io")
- [Harris Borawski (@hborawski)](https://github.com/hborawski "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [hawk259 (@hawk259)](https://github.com/hawk259 "13 total commits to the home-assistant organization, 7 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Heath Paddock (@heathbar)](https://github.com/heathbar "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [Heiko Rothe (@mKeRix)](https://github.com/mKeRix "20 total commits to the home-assistant organization, 15 commits to home-assistant, 5 commits to home-assistant.github.io")
-- [Heiko Thiery (@hthiery)](https://github.com/hthiery "3 total commits to the home-assistant organization, 3 commits to home-assistant")
+- [Heiko Thiery (@hthiery)](https://github.com/hthiery "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Hellowlol (@Hellowlol)](https://github.com/Hellowlol "4 total commits to the home-assistant organization, 3 commits to netdisco, 1 commit to appdaemon")
- [Helmut Januschka (@hjanuschka)](https://github.com/hjanuschka "3 total commits to the home-assistant organization, 3 commits to issue-bot")
- [Henning Dickten (@hensing)](https://github.com/hensing "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [Henrik Nicolaisen (@hmn)](https://github.com/hmn "6 total commits to the home-assistant organization, 6 commits to home-assistant")
+- [Henrik Nicolaisen (@hmn)](https://github.com/hmn "8 total commits to the home-assistant organization, 8 commits to home-assistant")
- [Hernán Rossetto (@hmronline)](https://github.com/hmronline "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [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")
@@ -386,7 +383,7 @@ This page contains a list of people who have contributed in one way or another t
- [Hydreliox (@HydrelioxGitHub)](https://github.com/HydrelioxGitHub "46 total commits to the home-assistant organization, 34 commits to home-assistant, 12 commits to home-assistant.github.io")
- [Ian Copp (@icopp)](https://github.com/icopp "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [ianj001 (@ianj001)](https://github.com/ianj001 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
-- [icovada (@icovada)](https://github.com/icovada "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 3 commits to home-assistant")
+- [icovada (@icovada)](https://github.com/icovada "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Igor Bernstein (@igorbernstein2)](https://github.com/igorbernstein2 "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Igor Shults (@ishults)](https://github.com/ishults "12 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Ioan Loosley (@ioangogo)](https://github.com/ioangogo "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io")
@@ -436,7 +433,7 @@ This page contains a list of people who have contributed in one way or another t
- [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 "36 total commits to the home-assistant organization, 20 commits to home-assistant, 16 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 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
+- [Jerry Workman (@JerryWorkman)](https://github.com/JerryWorkman "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io")
- [Jesse Hills (@jesserockz)](https://github.com/jesserockz "9 total commits to the home-assistant organization, 9 commits to home-assistant")
- [Jesse Newland (@jnewland)](https://github.com/jnewland "14 total commits to the home-assistant organization, 11 commits to home-assistant, 3 commits to hubot-home-assistant")
- [JesseWebDotCom (@JesseWebDotCom)](https://github.com/JesseWebDotCom "16 total commits to the home-assistant organization, 8 commits to home-assistant, 8 commits to home-assistant.github.io")
@@ -444,7 +441,7 @@ This page contains a list of people who have contributed in one way or another t
- [jiafengwang (@jiafengwang)](https://github.com/jiafengwang "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [jimbob1001 (@jimbob1001)](https://github.com/jimbob1001 "4 total commits to the home-assistant organization, 4 commits to home-assistant.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 "103 total commits to the home-assistant organization, 85 commits to hassbian-scripts, 18 commits to home-assistant.github.io")
+- [Joakim Sørensen (@ludeeus)](https://github.com/ludeeus "107 total commits to the home-assistant organization, 89 commits to hassbian-scripts, 18 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 Lu (@snjoetw)](https://github.com/snjoetw "24 total commits to the home-assistant organization, 18 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to appdaemon")
@@ -454,22 +451,23 @@ This page contains a list of people who have contributed in one way or another t
- [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 "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [Johan van der Kuijl (@Rubyan)](https://github.com/Rubyan "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to appdaemon")
-- [Johann Kellerman (@kellerza)](https://github.com/kellerza "169 total commits to the home-assistant organization, 139 commits to home-assistant, 30 commits to home-assistant.github.io")
+- [Johann Kellerman (@kellerza)](https://github.com/kellerza "177 total commits to the home-assistant organization, 145 commits to home-assistant, 32 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 Allen (@jra3)](https://github.com/jra3 "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "202 total commits to the home-assistant organization, 150 commits to home-assistant, 37 commits to home-assistant.github.io, 15 commits to home-assistant-polymer")
+- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "204 total commits to the home-assistant organization, 151 commits to home-assistant, 37 commits to home-assistant.github.io, 16 commits to home-assistant-polymer")
- [John Lindley (@jwl17330536)](https://github.com/jwl17330536 "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [John McLaughlin (@loghound)](https://github.com/loghound "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [John Mihalic (@mezz64)](https://github.com/mezz64 "49 total commits to the home-assistant organization, 35 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to hadashboard, 1 commit to home-assistant-polymer")
+- [John Mihalic (@mezz64)](https://github.com/mezz64 "50 total commits to the home-assistant organization, 36 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to hadashboard, 1 commit to home-assistant-polymer")
- [Johnny Chadda (@joch)](https://github.com/joch "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [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 "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Jon Griffith (@arretx)](https://github.com/arretx "12 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 1 commit to appdaemon")
-- [Jon Maddox (@maddox)](https://github.com/maddox "106 total commits to the home-assistant organization, 81 commits to home-assistant, 16 commits to homebridge-homeassistant, 9 commits to home-assistant.github.io")
+- [Jon Maddox (@maddox)](https://github.com/maddox "107 total commits to the home-assistant organization, 82 commits to home-assistant, 16 commits to homebridge-homeassistant, 9 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")
- [Jonathan Baginski (@patchedsoul)](https://github.com/patchedsoul "115 total commits to the home-assistant organization, 87 commits to fabric-home-assistant, 28 commits to home-assistant.github.io")
+- [Jonathan Weinberg (@jonathanweinberg)](https://github.com/jonathanweinberg "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [joopert (@joopert)](https://github.com/joopert "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [Jordi (@hokus15)](https://github.com/hokus15 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Jordy (@jbarrancos)](https://github.com/jbarrancos "40 total commits to the home-assistant organization, 40 commits to home-assistant")
@@ -477,12 +475,12 @@ This page contains a list of people who have contributed in one way or another t
- [Joseph Carter (@iKarith)](https://github.com/iKarith "9 total commits to the home-assistant organization, 9 commits to pi-gen")
- [Joseph Piron (@eagleamon)](https://github.com/eagleamon "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Josh (@karlw00t)](https://github.com/karlw00t "2 total commits to the home-assistant organization, 2 commits to home-assistant")
-- [Josh Anderson (@andersonshatch)](https://github.com/andersonshatch "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to homebridge-homeassistant")
+- [Josh Anderson (@andersonshatch)](https://github.com/andersonshatch "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to homebridge-homeassistant")
- [Josh Nichols (@technicalpickles)](https://github.com/technicalpickles "28 total commits to the home-assistant organization, 15 commits to home-assistant, 13 commits to home-assistant.github.io")
- [Josh Wright (@JshWright)](https://github.com/JshWright "28 total commits to the home-assistant organization, 20 commits to home-assistant, 8 commits to home-assistant.github.io")
- [jpcomtois (@jpcomtois)](https://github.com/jpcomtois "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [JudgeDredd (@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 "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io")
+- [Juggels (@Juggels)](https://github.com/Juggels "11 total commits to the home-assistant organization, 7 commits to home-assistant, 4 commits to home-assistant.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 "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant")
- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "31 total commits to the home-assistant organization, 24 commits to home-assistant, 7 commits to home-assistant.github.io")
@@ -491,9 +489,8 @@ This page contains a list of people who have contributed in one way or another t
- [Justin Hayes (@GussyH)](https://github.com/GussyH "8 total commits to the home-assistant organization, 7 commits to hadashboard, 1 commit to appdaemon")
- [Justin Weberg (@justweb1)](https://github.com/justweb1 "26 total commits to the home-assistant organization, 13 commits to home-assistant-polymer, 7 commits to hassbot, 4 commits to home-assistant, 1 commit to home-assistant-js, 1 commit to hassio")
- [Justyn Shull (@justyns)](https://github.com/justyns "5 total commits to the home-assistant organization, 5 commits to home-assistant")
-- [Kane610 (@Kane610)](https://github.com/Kane610 "34 total commits to the home-assistant organization, 18 commits to home-assistant, 14 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 "14 total commits to the home-assistant organization, 9 commits to home-assistant, 5 commits to home-assistant.github.io")
+- [karlkar (@karlkar)](https://github.com/karlkar "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 commits to home-assistant.github.io")
- [Keaton Taylor (@keatontaylor)](https://github.com/keatontaylor "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Keith Lamprecht (@Nixon506E)](https://github.com/Nixon506E "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Ken Bannister (@kb2ma)](https://github.com/kb2ma "1 total commits to the home-assistant organization, 1 commit to libcoap")
@@ -504,15 +501,18 @@ This page contains a list of people who have contributed in one way or another t
- [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "19 total commits to the home-assistant organization, 11 commits to home-assistant, 8 commits to home-assistant.github.io")
- [Kevin Gisi (@gisikw)](https://github.com/gisikw "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [Kevin Gottsman (@gottsman)](https://github.com/gottsman "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
+- [Kevin Raddatz (@chronm)](https://github.com/chronm "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Kevin Siml (@appzer)](https://github.com/appzer "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Keyasha Brothern (@KMBrothern)](https://github.com/KMBrothern "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [kfcook (@kfcook)](https://github.com/kfcook "3 total commits to the home-assistant organization, 3 commits to home-assistant")
+- [Khole (@KJonline)](https://github.com/KJonline "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [kireyeu (@kireyeu)](https://github.com/kireyeu "4 total commits to the home-assistant organization, 4 commits to home-assistant-notebooks")
- [Klaas Hoekema (@KlaasH)](https://github.com/KlaasH "12 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 5 commits to home-assistant, 2 commits to home-assistant-polymer")
- [Klaus (@k-laus)](https://github.com/k-laus "1 total commits to the home-assistant organization, 1 commit to appdaemon")
+- [koolsb (@koolsb)](https://github.com/koolsb "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Kory Prince (@korylprince)](https://github.com/korylprince "4 total commits to the home-assistant organization, 4 commits to home-assistant-polymer")
- [Krasimir Chariyski (@Chariyski)](https://github.com/Chariyski "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
-- [Krasimir Zhelev (@zhelev)](https://github.com/zhelev "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to netdisco")
+- [Krasimir Zhelev (@zhelev)](https://github.com/zhelev "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [kroimon (@kroimon)](https://github.com/kroimon "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [Kyle Hendricks (@kylehendricks)](https://github.com/kylehendricks "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [lamiskin (@lamiskin)](https://github.com/lamiskin "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
@@ -527,7 +527,7 @@ This page contains a list of people who have contributed in one way or another t
- [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")
- [linvinus (@linvinus)](https://github.com/linvinus "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [lrmate (@lrmate)](https://github.com/lrmate "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Luar Roji (@cyberplant)](https://github.com/cyberplant "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant")
+- [Luar Roji (@cyberplant)](https://github.com/cyberplant "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Luc Touraille (@stilllman)](https://github.com/stilllman "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [Luca Angemi (@luca-angemi)](https://github.com/luca-angemi "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [LucaSoldi (@LucaSoldi)](https://github.com/LucaSoldi "6 total commits to the home-assistant organization, 6 commits to home-assistant")
@@ -541,66 +541,64 @@ This page contains a list of people who have contributed in one way or another t
- [Luke Armstrong (@lukearmstrong)](https://github.com/lukearmstrong "3 total commits to the home-assistant organization, 3 commits to home-assistant.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")
- [Maarten Groeneweg (@lazytesting)](https://github.com/lazytesting "1 total commits to the home-assistant organization, 1 commit to hassio-addons")
-- [Maciej Bieniek (@bieniu)](https://github.com/bieniu "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer")
+- [Maciej Bieniek (@bieniu)](https://github.com/bieniu "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to home-assistant-polymer")
- [Maciej 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")
- [MagnusKnutas (@MagnusKnutas)](https://github.com/MagnusKnutas "29 total commits to the home-assistant organization, 29 commits to home-assistant")
- [Mahasri Kalavala (@skalavala)](https://github.com/skalavala "28 total commits to the home-assistant organization, 28 commits to home-assistant.github.io")
-- [Maikel Wever (@maikelwever)](https://github.com/maikelwever "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [makemeasandwich (@makemeasandwich)](https://github.com/makemeasandwich "12 total commits to the home-assistant organization, 12 commits to home-assistant")
- [Marc Egli (@frog32)](https://github.com/frog32 "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Marc Forth (@mf-social)](https://github.com/mf-social "25 total commits to the home-assistant organization, 24 commits to home-assistant.github.io, 1 commit to fabric-home-assistant")
-- [Marc Khouri (@ubnt-marc-khouri)](https://github.com/ubnt-marc-khouri "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer")
+- [Marc Khouri (@ubnt-marc-khouri)](https://github.com/ubnt-marc-khouri "3 total commits to the home-assistant organization, 2 commits to home-assistant-polymer, 1 commit to hassio-build")
- [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")
+- [Marc Plano\-Lesay (@Kernald)](https://github.com/Kernald "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io")
- [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 "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")
+- [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "141 total commits to the home-assistant organization, 77 commits to home-assistant, 62 commits to home-assistant.github.io, 1 commit to home-assistant-assets, 1 commit to home-assistant-polymer")
+- [Marcin Domański (@kabturek)](https://github.com/kabturek "2 total commits to the home-assistant organization, 2 commits to appdaemon")
- [Marcin Jaworski (@yawor)](https://github.com/yawor "12 total commits to the home-assistant organization, 12 commits to appdaemon")
- [Marco (@marconett)](https://github.com/marconett "3 total commits to the home-assistant organization, 3 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")
+- [Marco Orovecchia (@Oro)](https://github.com/Oro "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Marijn Giesen (@marijngiesen)](https://github.com/marijngiesen "5 total commits to the home-assistant organization, 5 commits to hadashboard")
- [Marius (@ciotlosm)](https://github.com/ciotlosm "13 total commits to the home-assistant organization, 8 commits to home-assistant-polymer, 5 commits to home-assistant")
-- [Mark Coombes (@marthoc)](https://github.com/marthoc "3 total commits to the home-assistant organization, 3 commits to home-assistant")
+- [Mark Coombes (@marthoc)](https://github.com/marthoc "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [Mark Grosen (@mgsb)](https://github.com/mgsb "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [Mark Huson (@mehuman)](https://github.com/mehuman "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io")
+- [Mark Perdue (@markperdue)](https://github.com/markperdue "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [mark9white (@mark9white)](https://github.com/mark9white "1 total commits to the home-assistant organization, 1 commit to hassio")
- [markferry (@markferry)](https://github.com/markferry "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Markus (@iMarkus)](https://github.com/iMarkus "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to hassio")
+- [Markus (@iMarkus)](https://github.com/iMarkus "1 total commits to the home-assistant organization, 1 commit to hassio")
- [Markus Becker (@markushx)](https://github.com/markushx "6 total commits to the home-assistant organization, 6 commits to libcoap")
- [Markus Peter (@bimbar)](https://github.com/bimbar "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Markus Stenberg (@fingon)](https://github.com/fingon "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [Martin Berg (@mbrrg)](https://github.com/mbrrg "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
-- [Martin Donlon (@wickerwaka)](https://github.com/wickerwaka "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Martin Eberhardt (@DarkFox)](https://github.com/DarkFox "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
-- [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "150 total commits to the home-assistant organization, 121 commits to home-assistant, 29 commits to home-assistant.github.io")
+- [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "154 total commits to the home-assistant organization, 125 commits to home-assistant, 29 commits to home-assistant.github.io")
- [Martin Rowan (@shortbloke)](https://github.com/shortbloke "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Martin Vacula (@MatoKafkac)](https://github.com/MatoKafkac "2 total commits to the home-assistant organization, 2 commits to home-assistant")
- [Martin Weinelt (@mweinelt)](https://github.com/mweinelt "17 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Martokk (@martokk)](https://github.com/martokk "3 total commits to the home-assistant organization, 3 commits to home-assistant.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 "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant")
-- [Matt N\. (@mnoorenberghe)](https://github.com/mnoorenberghe "53 total commits to the home-assistant organization, 25 commits to home-assistant-iOS, 17 commits to home-assistant.github.io, 9 commits to home-assistant, 1 commit to homebridge-homeassistant, 1 commit to home-assistant-polymer")
+- [Matt N\. (@mnoorenberghe)](https://github.com/mnoorenberghe "54 total commits to the home-assistant organization, 25 commits to home-assistant-iOS, 17 commits to home-assistant.github.io, 9 commits to home-assistant, 2 commits to home-assistant-polymer, 1 commit to homebridge-homeassistant")
- [Matt Rogers (@rogersmj)](https://github.com/rogersmj "20 total commits to the home-assistant organization, 20 commits to hadashboard")
-- [Matt Schmitt (@schmittx)](https://github.com/schmittx "66 total commits to the home-assistant organization, 52 commits to homebridge-homeassistant, 7 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to home-assistant-polymer")
+- [Matt Schmitt (@schmittx)](https://github.com/schmittx "68 total commits to the home-assistant organization, 52 commits to homebridge-homeassistant, 9 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits 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.github.io, 5 commits to home-assistant")
- [Matteo Lampugnani (@t30)](https://github.com/t30 "7 total commits to the home-assistant organization, 7 commits to home-assistant.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 Garrett (@mjg59)](https://github.com/mjg59 "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io")
-- [Matthew Schick (@mattsch)](https://github.com/mattsch "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [Matthew Garrett (@mjg59)](https://github.com/mjg59 "20 total commits to the home-assistant organization, 13 commits to home-assistant, 7 commits to home-assistant.github.io")
+- [Matthew Rollings (@stealthcopter)](https://github.com/stealthcopter "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Matthew Treinish (@mtreinish)](https://github.com/mtreinish "20 total commits to the home-assistant organization, 13 commits to home-assistant, 7 commits to home-assistant.github.io")
- [Matthias Dötsch (@brainexe)](https://github.com/brainexe "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
-- [Mattias Welponer (@mxworm)](https://github.com/mxworm "2 total commits to the home-assistant organization, 2 commits to home-assistant")
+- [Matthias Urlichs (@smurfix)](https://github.com/smurfix "3 total commits to the home-assistant organization, 3 commits to appdaemon")
+- [Mattias Welponer (@mxworm)](https://github.com/mxworm "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [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 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [Max Prokhorov (@mcspr)](https://github.com/mcspr "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Max Rumpf (@Maxr1998)](https://github.com/Maxr1998 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [maxclaey (@maxclaey)](https://github.com/maxclaey "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io")
- [maxlaverse (@maxlaverse)](https://github.com/maxlaverse "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [mboeru (@mboeru)](https://github.com/mboeru "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS")
- [mcfrojd (@mcfrojd)](https://github.com/mcfrojd "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [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")
+- [Menno Blom (@b10m)](https://github.com/b10m "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 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 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
@@ -608,35 +606,36 @@ This page contains a list of people who have contributed in one way or another t
- [Michael Fester (@michaelfester)](https://github.com/michaelfester "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Michael Furtak (@mfurtak)](https://github.com/mfurtak "5 total commits to the home-assistant organization, 5 commits to issue-bot")
- [Michael Gilbert (@Zyell)](https://github.com/Zyell "8 total commits to the home-assistant organization, 8 commits to home-assistant")
+- [Michael Kutý (@michaelkuty)](https://github.com/michaelkuty "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Michael Luggen (@l00mi)](https://github.com/l00mi "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Michael Requeny (@requenym)](https://github.com/requenym "14 total commits to the home-assistant organization, 14 commits to home-assistant.github.io")
- [Michael Shim (@shimeez)](https://github.com/shimeez "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant")
-- [Michaël Arnauts (@michaelarnauts)](https://github.com/michaelarnauts "63 total commits to the home-assistant organization, 33 commits to home-assistant, 26 commits to home-assistant.github.io, 3 commits to home-assistant-polymer, 1 commit to netdisco")
+- [Michaël Arnauts (@michaelarnauts)](https://github.com/michaelarnauts "64 total commits to the home-assistant organization, 33 commits to home-assistant, 27 commits to home-assistant.github.io, 3 commits to home-assistant-polymer, 1 commit to netdisco")
- [Michel Settembrino (@Michel-Settembrino)](https://github.com/Michel-Settembrino "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [micw (@micw)](https://github.com/micw "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io")
+- [Mike (@mradziwo)](https://github.com/mradziwo "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [Mike Christianson (@MikeChristianson)](https://github.com/MikeChristianson "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [Mike Megally (@cmsimike)](https://github.com/cmsimike "14 total commits to the home-assistant organization, 9 commits to home-assistant, 5 commits to home-assistant.github.io")
- [Mike Nestor (@mnestor)](https://github.com/mnestor "6 total commits to the home-assistant organization, 5 commits to home-assistant, 1 commit to home-assistant-polymer")
- [Mike O'Driscoll (@mikeodr)](https://github.com/mikeodr "8 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 3 commits to home-assistant")
-- [Mike Roberts (@m-roberts)](https://github.com/m-roberts "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [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 "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")
- [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")
+- [Mister Wil (@MisterWil)](https://github.com/MisterWil "20 total commits to the home-assistant organization, 14 commits to home-assistant, 6 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 "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io")
+- [Mitko Masarliev (@masarliev)](https://github.com/masarliev "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io")
- [mjj4791 (@mjj4791)](https://github.com/mjj4791 "23 total commits to the home-assistant organization, 15 commits to home-assistant.github.io, 8 commits to home-assistant")
- [mmmmmtasty (@mmmmmtasty)](https://github.com/mmmmmtasty "8 total commits to the home-assistant organization, 8 commits to appdaemon")
- [Molodax (@Molodax)](https://github.com/Molodax "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [moskovskiy82 (@moskovskiy82)](https://github.com/moskovskiy82 "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [motir (@motir)](https://github.com/motir "1 total commits to the home-assistant organization, 1 commit to appdaemon")
-- [mradziwo (@mradziwo)](https://github.com/mradziwo "1 total commits to the home-assistant organization, 1 commit to appdaemon")
+- [mountainsandcode (@mountainsandcode)](https://github.com/mountainsandcode "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [mukundv (@mukundv)](https://github.com/mukundv "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Mārtiņš Grunskis (@grunskis)](https://github.com/grunskis "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [Nash Kaminski (@nkaminski)](https://github.com/nkaminski "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Nathan Flynn (@eperdeme)](https://github.com/eperdeme "1 total commits to the home-assistant organization, 1 commit to hassio-addons")
-- [Nathan Henrie (@n8henrie)](https://github.com/n8henrie "19 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant, 1 commit to appdaemon, 1 commit to home-assistant-polymer")
+- [Nathan Henrie (@n8henrie)](https://github.com/n8henrie "19 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant, 1 commit to home-assistant-polymer, 1 commit to appdaemon")
- [Neil Lathwood (@laf)](https://github.com/laf "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Nelis Willers (@NelisW)](https://github.com/NelisW "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant")
- [NeLLyMerC (@NeLLyMerC)](https://github.com/NeLLyMerC "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
@@ -650,11 +649,11 @@ This page contains a list of people who have contributed in one way or another t
- [nielstron (@nielstron)](https://github.com/nielstron "2 total commits to the home-assistant organization, 2 commits to netdisco")
- [Nigel Rook (@NigelRook)](https://github.com/NigelRook "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Niklas (@niklaswa)](https://github.com/niklaswa "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
-- [Niklas Wagner (@Skaronator)](https://github.com/Skaronator "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [Niklas Wagner (@Skaronator)](https://github.com/Skaronator "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io")
- [Nolan Gilley (@nkgilley)](https://github.com/nkgilley "123 total commits to the home-assistant organization, 95 commits to home-assistant, 28 commits to home-assistant.github.io")
- [nordlead2005 (@nordlead2005)](https://github.com/nordlead2005 "3 total commits to the home-assistant organization, 3 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 "35 total commits to the home-assistant organization, 29 commits to home-assistant-polymer, 5 commits to home-assistant, 1 commit to home-assistant-assets")
+- [NovapaX (@NovapaX)](https://github.com/NovapaX "56 total commits to the home-assistant organization, 50 commits to home-assistant-polymer, 5 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 "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to homebridge-homeassistant")
- [obgm (@obgm)](https://github.com/obgm "480 total commits to the home-assistant organization, 480 commits to libcoap")
@@ -665,12 +664,12 @@ This page contains a list of people who have contributed in one way or another t
- [Oliver (@scarface-4711)](https://github.com/scarface-4711 "27 total commits to the home-assistant organization, 17 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")
- [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 "47 total commits to the home-assistant organization, 40 commits to home-assistant, 6 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
+- [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "56 total commits to the home-assistant organization, 45 commits to home-assistant, 8 commits to home-assistant.github.io, 3 commits to home-assistant-polymer")
- [oznu (@oznu)](https://github.com/oznu "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant")
- [Parker Moore (@parkr)](https://github.com/parkr "60 total commits to the home-assistant organization, 60 commits to home-assistant.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 "2684 total commits to the home-assistant organization, 1055 commits to hassio, 461 commits to home-assistant, 369 commits to hassio-build, 338 commits to hassio-addons, 312 commits to home-assistant.github.io, 118 commits to hassio-os, 16 commits to hassio-addons-example, 13 commits to hassio-cli, 1 commit to home-assistant-js-websocket, 1 commit to netdisco")
+- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "3005 total commits to the home-assistant organization, 1174 commits to hassio, 462 commits to home-assistant, 374 commits to hassio-build, 339 commits to hassio-addons, 318 commits to home-assistant.github.io, 307 commits to hassio-os, 16 commits to hassio-addons-example, 13 commits to hassio-cli, 1 commit to home-assistant-js-websocket, 1 commit to netdisco")
- [Pat Thoyts (@patthoyts)](https://github.com/patthoyts "2 total commits to the home-assistant organization, 2 commits to netdisco")
- [Patrick Aikens (@duckpuppy)](https://github.com/duckpuppy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
@@ -692,18 +691,18 @@ This page contains a list of people who have contributed in one way or another t
- [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")
- [Phil (@godloth)](https://github.com/godloth "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io")
-- [Phil Cole (@filcole)](https://github.com/filcole "8 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 3 commits to home-assistant")
+- [Phil Cole (@filcole)](https://github.com/filcole "9 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 3 commits to home-assistant")
- [Phil Elson (@pelson)](https://github.com/pelson "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Phil Frost (@bitglue)](https://github.com/bitglue "8 total commits to the home-assistant organization, 8 commits to home-assistant")
- [Phil Hawthorne (@philhawthorne)](https://github.com/philhawthorne "24 total commits to the home-assistant organization, 18 commits to home-assistant.github.io, 6 commits to home-assistant")
-- [Phil Kates (@philk)](https://github.com/philk "7 total commits to the home-assistant organization, 7 commits to home-assistant")
+- [Phil Kates (@philk)](https://github.com/philk "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Philip Hofstetter (@pilif)](https://github.com/pilif "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Philip Howard (@Gadgetoid)](https://github.com/Gadgetoid "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [Philip Kleimeyer (@philklei)](https://github.com/philklei "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [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")
- [Philip Rosenberg\-Watt (@PhilRW)](https://github.com/PhilRW "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io")
- [Philipp Hellmich (@runningman84)](https://github.com/runningman84 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
-- [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "37 total commits to the home-assistant organization, 24 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to appdaemon, 1 commit to hassio-build")
+- [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "38 total commits to the home-assistant organization, 25 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to hassio-build, 1 commit to appdaemon")
- [Phill Price (@phillprice)](https://github.com/phillprice "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io")
- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "33 total commits to the home-assistant organization, 20 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Pierre Ståhl (@postlund)](https://github.com/postlund "49 total commits to the home-assistant organization, 32 commits to home-assistant, 11 commits to home-assistant.github.io, 4 commits to netdisco, 2 commits to home-assistant-polymer")
@@ -715,24 +714,26 @@ This page contains a list of people who have contributed in one way or another t
- [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 "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Rendili (@Rendili)](https://github.com/Rendili "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Rene Nulsch (@ReneNulschDE)](https://github.com/ReneNulschDE "19 total commits to the home-assistant organization, 13 commits to home-assistant, 6 commits to home-assistant.github.io")
+- [Rene Nulsch (@ReneNulschDE)](https://github.com/ReneNulschDE "21 total commits to the home-assistant organization, 14 commits to home-assistant, 7 commits to home-assistant.github.io")
- [Rene Tode (@ReneTode)](https://github.com/ReneTode "38 total commits to the home-assistant organization, 38 commits to appdaemon")
- [Reza Moallemi (@moallemi)](https://github.com/moallemi "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [rhooper (@rhooper)](https://github.com/rhooper "27 total commits to the home-assistant organization, 25 commits to home-assistant, 2 commits to hadashboard")
- [Riccardo Canta (@commento)](https://github.com/commento "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [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 "13 total commits to the home-assistant organization, 6 commits to home-assistant, 6 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
+- [Richard Leurs (@R1chardTM)](https://github.com/R1chardTM "13 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 6 commits to home-assistant, 1 commit to home-assistant-polymer")
- [Richard Lucas (@lucasweb78)](https://github.com/lucasweb78 "9 total commits to the home-assistant organization, 9 commits to home-assistant")
- [Richard Niemand (@rniemand)](https://github.com/rniemand "1 total commits to the home-assistant organization, 1 commit to example-custom-config")
- [Rick (@rcuddy)](https://github.com/rcuddy "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [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 Cranfill (@RobCranfill)](https://github.com/RobCranfill "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [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 "1317 total commits to the home-assistant organization, 646 commits to home-assistant-iOS, 259 commits to home-assistant, 249 commits to home-assistant.github.io, 92 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to scenegen, 3 commits to hadashboard, 3 commits to appdaemon, 3 commits to home-assistant-js, 3 commits to organization, 3 commits to home-assistant-js-websocket, 3 commits to hassbot, 2 commits to LabelBot, 2 commits to micropython-home-assistant, 2 commits to fabric-home-assistant, 2 commits to home-assistant-notebooks, 2 commits to lambda-home-assistant-github, 2 commits to home-assistant-assets")
+- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1317 total commits to the home-assistant organization, 646 commits to home-assistant-iOS, 259 commits to home-assistant, 249 commits to home-assistant.github.io, 92 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 hassbot, 3 commits to appdaemon, 3 commits to scenegen, 3 commits to organization, 3 commits to home-assistant-js-websocket, 3 commits to hadashboard, 3 commits to home-assistant-js, 2 commits to LabelBot, 2 commits to lambda-home-assistant-github, 2 commits to fabric-home-assistant, 2 commits to home-assistant-notebooks, 2 commits to micropython-home-assistant, 2 commits to home-assistant-assets")
- [Robert (@metbril)](https://github.com/metbril "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Robert Schütz (@dotlambda)](https://github.com/dotlambda "2 total commits to the home-assistant organization, 1 commit to appdaemon, 1 commit to netdisco")
-- [Robin (@robmarkcole)](https://github.com/robmarkcole "30 total commits to the home-assistant organization, 20 commits to home-assistant.github.io, 9 commits to home-assistant, 1 commit to home-assistant-assets")
+- [Robert Schütz (@dotlambda)](https://github.com/dotlambda "2 total commits to the home-assistant organization, 1 commit to netdisco, 1 commit to appdaemon")
+- [Robert Svensson (@Kane610)](https://github.com/Kane610 "40 total commits to the home-assistant organization, 24 commits to home-assistant, 14 commits to home-assistant.github.io, 1 commit to home-assistant-polymer, 1 commit to netdisco")
+- [Robin (@robmarkcole)](https://github.com/robmarkcole "42 total commits to the home-assistant organization, 27 commits to home-assistant.github.io, 14 commits to home-assistant, 1 commit to home-assistant-assets")
- [Robin Laurén (@llauren)](https://github.com/llauren "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [Roddie Hasan (@eiddor)](https://github.com/eiddor "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io")
- [Roi Dayan (@roidayan)](https://github.com/roidayan "6 total commits to the home-assistant organization, 6 commits to home-assistant")
@@ -746,13 +747,12 @@ This page contains a list of people who have contributed in one way or another t
- [rubund (@rubund)](https://github.com/rubund "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [Ruslan Kiyanchuk (@zoresvit)](https://github.com/zoresvit "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [Russ K (@rkubes)](https://github.com/rkubes "2 total commits to the home-assistant organization, 2 commits to pi-gen")
-- [Russell Cloran (@rcloran)](https://github.com/rcloran "30 total commits to the home-assistant organization, 26 commits to home-assistant, 4 commits to homebridge-homeassistant")
+- [Russell Cloran (@rcloran)](https://github.com/rcloran "31 total commits to the home-assistant organization, 27 commits to home-assistant, 4 commits to homebridge-homeassistant")
- [Ryan Bahm (@rdbahm)](https://github.com/rdbahm "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
-- [Ryan Borstelmann (@SlothCroissant)](https://github.com/SlothCroissant "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Ryan Daigle (@rwdaigle)](https://github.com/rwdaigle "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Ryan Jarvis (@Cabalist)](https://github.com/Cabalist "1 total commits to the home-assistant organization, 1 commit to hassbian-scripts")
- [Ryan Kraus (@rmkraus)](https://github.com/rmkraus "193 total commits to the home-assistant organization, 163 commits to home-assistant, 15 commits to home-assistant.github.io, 14 commits to home-assistant-polymer, 1 commit to home-assistant-notebooks")
-- [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "92 total commits to the home-assistant organization, 70 commits to hassio-cli, 16 commits to home-assistant, 6 commits to home-assistant.github.io")
+- [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "96 total commits to the home-assistant organization, 74 commits to hassio-cli, 16 commits to home-assistant, 6 commits to home-assistant.github.io")
- [Ryan Turner (@turnrye)](https://github.com/turnrye "6 total commits to the home-assistant organization, 6 commits to home-assistant")
- [Sabesto (@Sabesto)](https://github.com/Sabesto "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Sacha Telgenhof (@stelgenhof)](https://github.com/stelgenhof "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
@@ -765,10 +765,10 @@ This page contains a list of people who have contributed in one way or another t
- [Scott Reston (@ih8gates)](https://github.com/ih8gates "9 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer")
- [Sean Dague (@sdague)](https://github.com/sdague "75 total commits to the home-assistant organization, 52 commits to home-assistant, 14 commits to home-assistant.github.io, 5 commits to home-assistant-polymer, 3 commits to netdisco, 1 commit to home-assistant-js")
- [Sean Gollschewsky (@gollo)](https://github.com/gollo "17 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to hassio-build")
-- [Sean Wilson (@swilson)](https://github.com/swilson "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer")
-- [Sebastian (@sebk-666)](https://github.com/sebk-666 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
+- [Sean Wilson (@swilson)](https://github.com/swilson "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to home-assistant-polymer")
+- [Sebastian (@sebk-666)](https://github.com/sebk-666 "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io")
- [Sebastian (@sgso)](https://github.com/sgso "3 total commits to the home-assistant organization, 3 commits to libcoap")
-- [Sebastian Muszynski (@syssi)](https://github.com/syssi "97 total commits to the home-assistant organization, 58 commits to home-assistant, 36 commits to home-assistant.github.io, 2 commits to home-assistant-polymer, 1 commit to netdisco")
+- [Sebastian Muszynski (@syssi)](https://github.com/syssi "115 total commits to the home-assistant organization, 69 commits to home-assistant, 42 commits to home-assistant.github.io, 2 commits to home-assistant-polymer, 2 commits to netdisco")
- [Sebastian von Minckwitz (@teodoc)](https://github.com/teodoc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Semir Patel (@analogue)](https://github.com/analogue "2 total commits to the home-assistant organization, 2 commits to appdaemon")
- [Sergey Isachenko (@zabuldon)](https://github.com/zabuldon "9 total commits to the home-assistant organization, 9 commits to home-assistant")
@@ -786,6 +786,7 @@ This page contains a list of people who have contributed in one way or another t
- [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")
- [Stefano Scipioni (@scipioni)](https://github.com/scipioni "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Steltek (@Steltek)](https://github.com/Steltek "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
+- [stephanerosi (@stephanerosi)](https://github.com/stephanerosi "7 total commits to the home-assistant organization, 7 commits to home-assistant")
- [Stephen Edgar (@ntwb)](https://github.com/ntwb "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant")
- [Stephen Yeargin (@stephenyeargin)](https://github.com/stephenyeargin "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Steve Easley (@SteveEasley)](https://github.com/SteveEasley "3 total commits to the home-assistant organization, 3 commits to home-assistant")
@@ -796,7 +797,7 @@ This page contains a list of people who have contributed in one way or another t
- [Sytone (@sytone)](https://github.com/sytone "7 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 1 commit to hassio-build")
- [Sören Oldag (@soldag)](https://github.com/soldag "15 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 7 commits to home-assistant")
- [Tabakhase (@tabakhase)](https://github.com/tabakhase "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
-- [tadly (@tadly)](https://github.com/tadly "3 total commits to the home-assistant organization, 3 commits to home-assistant")
+- [tadly (@tadly)](https://github.com/tadly "4 total commits to the home-assistant organization, 4 commits to home-assistant")
- [tango-foxtrot (@tango-foxtrot)](https://github.com/tango-foxtrot "1 total commits to the home-assistant organization, 1 commit to netdisco")
- [Taylor Peet (@RePeet13)](https://github.com/RePeet13 "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io")
- [Teagan Glenn (@Teagan42)](https://github.com/Teagan42 "59 total commits to the home-assistant organization, 49 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to home-assistant-js")
@@ -808,19 +809,20 @@ This page contains a list of people who have contributed in one way or another t
- [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")
- [thecynic (@thecynic)](https://github.com/thecynic "4 total commits to the home-assistant organization, 4 commits to home-assistant")
+- [TheFrogDaddy (@TheFrogDaddy)](https://github.com/TheFrogDaddy "1 total commits to the home-assistant organization, 1 commit to appdaemon")
- [themanieldaniel (@themanieldaniel)](https://github.com/themanieldaniel "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io")
- [Theodor Lindquist (@theolind)](https://github.com/theolind "25 total commits to the home-assistant organization, 25 commits to home-assistant")
- [Thiago Oliveira (@chilicheech)](https://github.com/chilicheech "4 total commits to the home-assistant organization, 4 commits to home-assistant")
-- [Thibault Cohen (@titilambert)](https://github.com/titilambert "44 total commits to the home-assistant organization, 31 commits to home-assistant, 13 commits to home-assistant.github.io")
+- [Thibault Cohen (@titilambert)](https://github.com/titilambert "47 total commits to the home-assistant organization, 34 commits to home-assistant, 13 commits to home-assistant.github.io")
- [Thibault Maekelbergh (@thibmaek)](https://github.com/thibmaek "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to hassio-addons")
-- [Thijs de Jong (@bakedraccoon)](https://github.com/bakedraccoon "19 total commits to the home-assistant organization, 15 commits to home-assistant, 4 commits to home-assistant.github.io")
+- [Thijs de Jong (@bakedraccoon)](https://github.com/bakedraccoon "20 total commits to the home-assistant organization, 16 commits to home-assistant, 4 commits to home-assistant.github.io")
- [ThinkPadNL (@ThinkPadNL)](https://github.com/ThinkPadNL "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [Thom Troy (@ttroy50)](https://github.com/ttroy50 "13 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 6 commits to home-assistant")
- [Thomas Petazzoni (@tpetazzoni)](https://github.com/tpetazzoni "1 total commits to the home-assistant organization, 1 commit to libcoap")
- [Thomas Phillips (@thomas-phillips-nz)](https://github.com/thomas-phillips-nz "2 total commits to the home-assistant organization, 2 commits to pi-gen")
- [Thomas Purchas (@thomaspurchas)](https://github.com/thomaspurchas "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant")
- [Thomas Pötsch (@thp-comnets)](https://github.com/thp-comnets "7 total commits to the home-assistant organization, 7 commits to libcoap")
-- [thrawnarn (@thrawnarn)](https://github.com/thrawnarn "8 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to netdisco")
+- [thrawnarn (@thrawnarn)](https://github.com/thrawnarn "9 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to netdisco")
- [ThUnD3r\|Gr33n (@thundergreen)](https://github.com/thundergreen "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
- [tijuca (@tijuca)](https://github.com/tijuca "106 total commits to the home-assistant organization, 106 commits to libcoap")
- [Tim Wilbrink (@TWilb)](https://github.com/TWilb "15 total commits to the home-assistant organization, 15 commits to home-assistant-iOS")
@@ -829,12 +831,12 @@ This page contains a list of people who have contributed in one way or another t
- [TJ Rana (@tjrana)](https://github.com/tjrana "1 total commits to the home-assistant organization, 1 commit to pi-gen")
- [tleegaard (@tleegaard)](https://github.com/tleegaard "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Tobie Booth (@tobiebooth)](https://github.com/tobiebooth "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer")
-- [Toby Gray (@tobygray)](https://github.com/tobygray "3 total commits to the home-assistant organization, 3 commits to home-assistant")
-- [Tod Schmidt (@tschmidty69)](https://github.com/tschmidty69 "22 total commits to the home-assistant organization, 17 commits to home-assistant, 4 commits to home-assistant.github.io, 1 commit to hassio-addons")
+- [Toby Gray (@tobygray)](https://github.com/tobygray "4 total commits to the home-assistant organization, 4 commits to home-assistant")
+- [Tod Schmidt (@tschmidty69)](https://github.com/tschmidty69 "26 total commits to the home-assistant organization, 20 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to hassio-addons")
- [toddeye (@toddeye)](https://github.com/toddeye "20 total commits to the home-assistant organization, 20 commits to home-assistant")
- [Tom Dickman (@tdickman)](https://github.com/tdickman "3 total commits to the home-assistant organization, 3 commits to home-assistant")
- [Tom Duijf (@tomduijf)](https://github.com/tomduijf "70 total commits to the home-assistant organization, 53 commits to home-assistant, 9 commits to home-assistant.github.io, 6 commits to home-assistant-polymer, 2 commits to netdisco")
-- [Tom Harris (@teharris1)](https://github.com/teharris1 "4 total commits to the home-assistant organization, 4 commits to home-assistant")
+- [Tom Harris (@teharris1)](https://github.com/teharris1 "5 total commits to the home-assistant organization, 5 commits to home-assistant")
- [Tom Hoover (@tomhoover)](https://github.com/tomhoover "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io")
- [Tom Matheussen (@Tommatheussen)](https://github.com/Tommatheussen "13 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant-polymer, 3 commits to home-assistant.github.io")
- [Tom Usher (@tomusher)](https://github.com/tomusher "1 total commits to the home-assistant organization, 1 commit to netdisco")
@@ -862,7 +864,7 @@ This page contains a list of people who have contributed in one way or another t
- [Victor Cerutti (@victorcerutti)](https://github.com/victorcerutti "3 total commits to the home-assistant organization, 3 commits to home-assistant-polymer")
- [Viet Dzung (@dzungpv)](https://github.com/dzungpv "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer")
- [Vignesh Venkat (@vickyg3)](https://github.com/vickyg3 "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io")
-- [Ville Skyttä (@scop)](https://github.com/scop "38 total commits to the home-assistant organization, 18 commits to home-assistant, 9 commits to home-assistant.github.io, 4 commits to netdisco, 3 commits to hassio-addons, 2 commits to hassio-build, 2 commits to home-assistant-polymer")
+- [Ville Skyttä (@scop)](https://github.com/scop "40 total commits to the home-assistant organization, 19 commits to home-assistant, 10 commits to home-assistant.github.io, 4 commits to netdisco, 3 commits to hassio-addons, 2 commits to hassio-build, 2 commits to home-assistant-polymer")
- [viswa-swami (@viswa-swami)](https://github.com/viswa-swami "9 total commits to the home-assistant organization, 9 commits to home-assistant")
- [Vlad Korniev (@vkorn)](https://github.com/vkorn "1 total commits to the home-assistant organization, 1 commit to hassio-build")
- [vllungu (@vllungu)](https://github.com/vllungu "3 total commits to the home-assistant organization, 3 commits to libcoap")
@@ -879,10 +881,10 @@ This page contains a list of people who have contributed in one way or another t
- [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")
- [Wolf\-Bastian Pöttner (@BastianPoe)](https://github.com/BastianPoe "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io")
-- [Wolfgang Malgadey (@wmalgadey)](https://github.com/wmalgadey "4 total commits to the home-assistant organization, 4 commits to home-assistant")
+- [Wolfgang Malgadey (@wmalgadey)](https://github.com/wmalgadey "5 total commits to the home-assistant organization, 5 commits to home-assistant")
- [XECDesign (@XECDesign)](https://github.com/XECDesign "138 total commits to the home-assistant organization, 138 commits to pi-gen")
- [Xorso (@Xorso)](https://github.com/Xorso "22 total commits to the home-assistant organization, 21 commits to home-assistant, 1 commit to hassio-addons")
-- [Yannick POLLART (@ypollart)](https://github.com/ypollart "8 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 4 commits to home-assistant")
+- [Yannick POLLART (@ypollart)](https://github.com/ypollart "8 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.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")
- [Zen Tormey (@xehn)](https://github.com/xehn "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io")
@@ -894,4 +896,4 @@ This page contains a list of people who have contributed in one way or another t
This page is irregularly updated using the [`credits_generator` tool](https://github.com/home-assistant/home-assistant.github.io/tree/next/credits_generator). If you think that you are missing, please let us know.
-This page was last updated Saturday, March 31st 2018, 9:09:02 am UTC.
+This page was last updated Sunday, April 29th 2018, 4:35:15 pm UTC.
diff --git a/source/developers/development.markdown b/source/developers/development.markdown
index 8bc614295d..ea7c7bd480 100644
--- a/source/developers/development.markdown
+++ b/source/developers/development.markdown
@@ -9,23 +9,6 @@ sharing: true
footer: true
---
-Home Assistant is built from the ground up to be easily extensible using components. Home Assistant uses [Python 3](https://www.python.org/) for the backend and [Polymer (Web components)](https://www.polymer-project.org/) for the frontend.
-
-Home Assistant is open-source and licensed under [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0). Here are links to the source:
-
- - [home-assistant](https://github.com/home-assistant/home-assistant): Python server backend.
- - [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer): Polymer UI.
-
-For those new to contributing to open source software, make sure you are familiar with all of the tools and concepts used in Home Assistant before you start.
-
-When contributing Home Assistant code:
- - [Github](https://guides.github.com/activities/hello-world/)
- - [Pip and Virtual Environments](https://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/)
- - [Python 3](https://www.python.org/)
- - [Pylint](https://www.pylint.org)
- - [Flake8](http://flake8.pycqa.org/en/latest/)
- - [Tox](http://tox.readthedocs.org/en/latest/)
- - [TravisCl](https://travis-ci.org/)
-
-When contributing 3rd Party code to be used by Home Assistant:
- - [Publishing your own PyPI package](https://jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/)
+
\ No newline at end of file
diff --git a/source/developers/development_101.markdown b/source/developers/development_101.markdown
index 5db0cdf128..7e4858e890 100644
--- a/source/developers/development_101.markdown
+++ b/source/developers/development_101.markdown
@@ -9,49 +9,6 @@ sharing: true
footer: true
---
-The goal of development 101 is to get you familiar with the basics of developing for Home Assistant. Before we start, please make sure you familiarize yourself with the [architecture].
-
-To get our code running inside Home Assistant we're going to create a custom component. The first step is to locate your config folder. You can find the path to your config folder by opening the Home Assistant frontend, click on the . It's the path after the text "Path to configuration.yaml".
-
-Inside your configuration directory create a new folder called `custom_components`. It might be that one already exists, that's fine too. This is the folder that Home Assistant will look at when looking for custom code.
-
-
-The Home Assistant API has two variants: a synchronous and an asynchronous version (asyncio). This development course will focus on the synchronous version.
-
-
-To verify that everything is working correctly, let's create a small Hello World component. To do so, create a file called `hello_world.py` in your custom components folder. Copy paste the following content to it:
-
-```python
-# The domain of your component. Equal to the filename of your component.
-DOMAIN = "hello_world"
-
-
-def setup(hass, config):
- """Setup the hello_world component."""
- # States are in the format DOMAIN.OBJECT_ID.
- hass.states.set('hello_world.Hello_World', 'Works!')
-
- # Return boolean to indicate that initialization was successfully.
- return True
-```
-
-Last step is to add `hello_world:` entry to your `configuration.yaml` file.
-
-```yaml
-# Hello World component
-hello_world:
-```
-
-After running `hass`, we should see log entries stating that `hello_world` component was loaded. What is more, additional state card shall appear within main panel.
-
-```log
-2018-04-03 21:44:20 INFO (MainThread) [homeassistant.loader] Loaded hello_world from custom_components.hello_world
-2018-04-03 21:44:20 INFO (MainThread) [homeassistant.setup] Setting up hello_world
-```
-
-
-
-State card showing that Hello World component is working as intended.
-
-
-[architecture]: /developers/architecture/
+
\ No newline at end of file
diff --git a/source/developers/development_catching_up.markdown b/source/developers/development_catching_up.markdown
index 88f4b73e07..30d098ce99 100644
--- a/source/developers/development_catching_up.markdown
+++ b/source/developers/development_catching_up.markdown
@@ -9,33 +9,6 @@ sharing: true
footer: true
---
-If it's taking a while to develop your feature, and you want to catch up with what's in the current Home Assistant `dev` branch, you can use `git rebase`. This will pull the latest Home Assistant changes locally, rewind your commits, bring in the latest changes from Home Assistant, and replay all of your commits on top.
-
-```bash
-# Run this from your feature branch
-$ git fetch upstream dev # to pull the latest changes into a local dev branch
-$ git rebase upstream/dev # to put those changes into your feature branch before your changes
-```
-
-If rebase detects conflicts, repeat this process until all changes have been resolved:
-
-1. `git status` shows you the file with the conflict; edit the file and resolve the lines between `<<<< | >>>>`
-3. Add the modified file: `git add ` or `git add .`
-4. Continue rebase: `git rebase --continue`
-5. Repeat until you've resolved all conflicts
-
-After rebasing your branch, you will have rewritten history relative to your GitHub fork's branch. When you go to push you will see an error that your history has diverged from the original branch. In order to get your GitHub fork up-to-date with your local branch, you will need to force push, using the following command:
-
-```bash
-# Run this from your feature branch
-$ git push origin --force
-```
-
-Other workflows are covered in detail in the [Github documentation](https://help.github.com/articles/fork-a-repo/). Add an additional `remote` after you clone your fork.
-
-```bash
-$ git remote add upstream https://github.com/home-assistant/home-assistant.git
-```
-
-Then, `git pull --rebase upstream dev`.
-
+
\ No newline at end of file
diff --git a/source/developers/development_checklist.markdown b/source/developers/development_checklist.markdown
index 3fe199b8ea..7fb17c4368 100644
--- a/source/developers/development_checklist.markdown
+++ b/source/developers/development_checklist.markdown
@@ -9,12 +9,6 @@ sharing: true
footer: true
---
-
-Before you commit any changes, check your work against these requirements:
-
-- All dependencies from [pypi](https://pypi.python.org/pypi) are included via the `REQUIREMENTS` variable in your platform or component and only imported inside functions that use them
-- New dependencies are added to `requirements_all.txt` (if applicable), using `script/gen_requirements_all.py`
-- The `.coveragerc` file is updated to exclude your platform if there are no tests available or your new code uses a third-party library for communication with the device, service, or sensor
-- Documentation is developed for [home-assistant.io](/)
- * It's OK to start with adding a docstring with configuration details (for example, sample entry for `configuration.yaml` file) to the file header. Visit the [website documentation](/developers/documentation/) for more information about contributing to [home-assistant.io](https://github.com/home-assistant/home-assistant.github.io).
-
+
\ No newline at end of file
diff --git a/source/developers/development_config.markdown b/source/developers/development_config.markdown
index 56382ecb61..5d89b5b2b5 100644
--- a/source/developers/development_config.markdown
+++ b/source/developers/development_config.markdown
@@ -9,27 +9,6 @@ sharing: true
footer: true
---
-Based on where you are in the code, `config` can mean various things.
-
-### {% linkable_title On the hass object %}
-
-On the hass object is an instance of the Config class. The Config class contains the users preferred units, the path to the config directory and which components are loaded. [See available methods.](https://dev-docs.home-assistant.io/en/master/api/core.html#homeassistant.core.Config)
-
-### {% linkable_title Config passed into component setup %}
-
-The `config` parameter passed to a component setup is a dictionary containing all of the user supplied configuration. The keys of the dictionary are the component names and the value is another dictionary with the component configuration.
-
-The object will have already been validated using your `CONFIG_SCHEMA` or `PLATFORM_SCHEMA` if available. If you have defined a `PLATFORM_SCHEMA`, all references to your component (ie `light 2:` etc) will have been changed to be accessible as a list under `config[DOMAIN]`.
-
-If your configuration file contains the following lines:
-
-```yaml
-example:
- host: paulusschoutsen.nl
-```
-
-Then in the setup method of your component you will be able to refer to `config['example']['host']` to get the value `paulusschoutsen.nl`.
-
-### {% linkable_title Passed into platform setup %}
-
-The `config` parameter passed to a platform setup function is only the config for that specific platform.
+
\ No newline at end of file
diff --git a/source/developers/development_environment.markdown b/source/developers/development_environment.markdown
index b198bebbbb..4671f6ec64 100644
--- a/source/developers/development_environment.markdown
+++ b/source/developers/development_environment.markdown
@@ -9,102 +9,6 @@ sharing: true
footer: true
---
-You'll need to set up a development environment if you want to develop a new feature or component for Home Assistant. Read on to learn how to set up.
-
-### {% linkable_title Preparing your environment %}
-
-#### {% linkable_title Developing on Linux %}
-
-Install the core dependencies.
-
-```bash
-$ sudo apt-get install python3-pip python3-dev python3-venv
-```
-
-In order to run `script/setup` below you will need some more dependencies.
-
-```bash
-$ sudo apt-get install libssl-dev libxml2-dev libxslt1-dev libjpeg-dev libffi-dev libudev-dev zlib1g-dev
-```
-
-
-Different distributions have different package installation mechanisms and sometimes packages names as well. For example Centos would use: `sudo yum install epel-release && sudo yum install python34 python34-devel mysql-devel`
-
-
-Additional dependencies exist if you plan to perform Frontend Development, please read the [Frontend](/developers/frontend/) section to learn more.
-
-#### {% linkable_title Developing on Windows %}
-
-If you are using Windows as a development platform, make sure that you have the correct Microsoft [Visual C++ build tools](http://landinghub.visualstudio.com/visual-cpp-build-tools) installed. The installation of the most requirements and validation using `tox` will fail if this is not done correctly. Check the [Windows Compilers](https://wiki.python.org/moin/WindowsCompilers) section on the [Python website](https://www.python.org/) for details.
-
-Due to Home Assistant is mainly designed and developed on Linux distributions it is not recommended to develop on Windows machines. However on Windows 10 machines you should decide to set up a [Linux subsystem](https://docs.microsoft.com/de-de/windows/wsl/install-win10).
-
-Setup Linux subsystem.
-
-```bash
-$ apt-get update
-$ apt-get upgrade
-$ echo 'export DISPLAY=:0' >> ~/.bashrc && . ~/.bashrc
-$ sudo apt-get install xubuntu-desktop -y
-```
-
-It is recommended using [PyCharm](https://www.jetbrains.com/pycharm/download/) as debugger. Download and start PyCharm.
-
-```bash
-$ wget https://download.jetbrains.com/python/pycharm-community-20XX.X.tar.gz
-$ tar -xzf pycharm-community-20XX.X
-$ ./pycharm.sh
-```
-
-In order to display the PyCharm GUI on Windows you need to run a X-Server like [VcXserv](https://sourceforge.net/projects/vcxsrv/).
-
-Also, make sure to install or upgrade the `setuptools` Python package. It contains compatibility improvements and adds automatic use of compilers:
-
-```bash
-$ pip install --upgrade setuptools
-```
-
-#### {% linkable_title Developing on OS X %}
-
-Install [Homebrew](https://brew.sh/), then use that to install Python 3:
-
-```bash
-$ brew install python3
-```
-
-### {% linkable_title Setup Local Repository %}
-
-Visit the [Home Assistant repository](https://github.com/home-assistant/home-assistant) and click **Fork**.
-Once forked, setup your local copy of the source using the commands:
-
-```bash
-$ git clone https://github.com/YOUR_GIT_USERNAME/home-assistant.git
-$ cd home-assistant
-$ git remote add upstream https://github.com/home-assistant/home-assistant.git
-```
-
-### {% linkable_title Setting up virtual environment %}
-
-To isolate your environment from the rest of the system, set up a [`venv`](https://docs.python.org/3/library/venv.html). Within the `home-assistant` directory, create and activate your virtual environment.
-
-```bash
-$ python3 -m venv .
-$ source bin/activate
-```
-Install the requirements with a provided script named `setup`.
-
-```bash
-$ script/setup
-```
-
-Invoke your installation.
-
-```bash
-$ hass
-```
-
-### {% linkable_title Logging %}
-
-By default logging in home-assistant is tuned for operating in production (set to INFO by default, with some modules set to even less verbose logging levels).
-
-You can use the [logger](/components/logger/) component to adjust logging to DEBUG to see even more details about what is going on.
+
\ No newline at end of file
diff --git a/source/developers/development_events.markdown b/source/developers/development_events.markdown
index e078396fd0..2552fb8e2f 100644
--- a/source/developers/development_events.markdown
+++ b/source/developers/development_events.markdown
@@ -9,54 +9,6 @@ sharing: true
footer: true
---
-The core of Home Assistant is driven by events. That means that if you want to respond to something happening, you'll have to respond to events. Most of the times you won't interact directly with the event system but use one of the [event listener helpers][helpers].
-
-The event system is very flexible. There are no limitations on the event type, as long as it's a string. Each event can contain data. The data is a dictionary that can contain any data as long as it's JSON serializable. This means that you can use number, string, dictionary and list.
-
-[List of events that Home Assistant fires.][object]
-
-### {% linkable_title Firing events %}
-
-To fire an event, you have to interact with the event bus. The event bus is available on the Home Assistant instance as `hass.bus`.
-
-Example component that will fire an event when loaded.
-
-```python
-DOMAIN = 'hello_event'
-
-def setup(hass, config):
- """Set up is called when Home Assistant is loading our component."""
-
- # Fire event my_cool_event with event data answer=42
- hass.bus.fire('my_cool_event', {
- 'answer': 42
- })
-```
-
-### {% linkable_title Listening to events %}
-
-Most of the times you'll not be firing events but instead listen to events. For example, the state change of an entity is broadcasted as an event.
-
-```python
-DOMAIN = 'hello_event'
-
-def setup(hass, config):
- """Set up is called when Home Assistant is loading our component."""
- count = 0
-
- # Listener to handle fired events
- def handle_event(event):
- nonlocal count
- count += 1
- print('Total events received:', count)
-
- # Listen for when my_cool_event is fired
- hass.bus.listen('my_cool_event', handle_event)
-```
-
-#### {% linkable_title Helpers %}
-
-Home Assistant comes with a lot of bundled helpers to listen to specific types of event. There are helpers to track a point in time, to track a time interval, a state change or the sun set. [See available methods.][helpers]
-
-[helpers]: https://dev-docs.home-assistant.io/en/master/api/helpers.html#module-homeassistant.helpers.event
-[object]: /docs/configuration/events/
+
\ No newline at end of file
diff --git a/source/developers/development_guidelines.markdown b/source/developers/development_guidelines.markdown
index 7e4088249c..e368c75a1e 100644
--- a/source/developers/development_guidelines.markdown
+++ b/source/developers/development_guidelines.markdown
@@ -9,73 +9,6 @@ sharing: true
footer: true
---
-Home Assistant enforces strict [PEP8 style](https://www.python.org/dev/peps/pep-0008/) and [PEP 257 (Docstring Conventions)](https://www.python.org/dev/peps/pep-0257/) compliance on all code submitted. We automatically test every pull request as part of the linting process with [Coveralls](https://coveralls.io/github/home-assistant/home-assistant) and [Travis CI](https://travis-ci.org/home-assistant/home-assistant).
-
-Summary of the most relevant points:
-
-- Line length is limited to 79 characters (see below).
-- Use 4 spaces per indentation level. We don't use tabs.
-- Comments should be full sentences and end with a period.
-- [Imports](https://www.python.org/dev/peps/pep-0008/#imports) should be ordered.
-- Constants and the content of lists and dictionaries should be in alphabetical order.
-- Avoid trailing whitespace but surround binary operators with a single space.
-- Line separator should be set to `LF`.
-
-The maximum line length comes directly from the [PEP8 style guide](https://www.python.org/dev/peps/pep-0008/#maximum-line-length), and is also used by the Python standard library. All code must pass these linting checks, and no exceptions will be made. There have already been numerous requests to increase the maximum line length, but after evaluating the options, the Home Assistant maintainers have decided to stay at 79 characters. This decision is final.
-
-Those points may require that you adjust your IDE or editor settings.
-
-## {% linkable_title Our recommendations %}
-
-For some cases [PEPs](https://www.python.org/dev/peps/) don't make a statement. This section covers our recommendations about the code style. Those points were collected from the existing code and based on what contributors and developers were using the most. This is basically a majority decision, thus you may not agree with it. But we would like to encourage you follow those recommendations to keep the code unified.
-
-### {% linkable_title Quotes %}
-
-Use single quotes `'` for single word and `"` for multiple words or sentences.
-
-```python
-ATTR_WATERLEVEL = 'level'
-CONF_ATTRIBUTION = "Data provided by the WUnderground weather service"
-SENSOR_TYPES = {
- 'alerts': ['Alerts', None],
-}
-```
-
-### {% linkable_title File headers %}
-
-The docstring in the file header should contain a link to the documentation to make it easy to find further information, especially about the configuration or details which are not mentioned in the code.
-
-```python
-"""
-Support for MQTT lights.
-
-For more details about this platform, please refer to the documentation at
-https://home-assistant.io/components/light.mqtt/
-"""
-```
-
-### {% linkable_title Requirements %}
-
-Please place [Platform requirements](/developers/code_review_platform/#1-requirements) right after the imports.
-
-```python
-[...]
-from homeassistant.helpers.entity import Entity
-
-REQUIREMENTS = ['xmltodict==0.11.0']
-```
-
-### {% linkable_title Log messages %}
-
-There is no need to add the platform or component name to the log messages. This will be added automatically. Like `syslog` messages there shouldn't be any period at the end. Try to avoid brackets and additional quotes around the output to make it easier for users to parse the log. A widely style is shown below but you are free to compose the messages as you like.
-
-```python
-_LOGGER.error("No route to device: %s", self._resource)
-```
-
-```bash
-2017-05-01 14:28:07 ERROR [homeassistant.components.sensor.arest] No route to device: 192.168.0.18
-```
-
-Don't print out wrong API keys, tokens, usernames, or passwords.
-Also note that `_LOGGER.info` is reserved for the core, use `_LOGGER.debug` in anything else.
+
\ No newline at end of file
diff --git a/source/developers/development_hass_object.markdown b/source/developers/development_hass_object.markdown
index d4a5926d2e..e4554ecf7b 100644
--- a/source/developers/development_hass_object.markdown
+++ b/source/developers/development_hass_object.markdown
@@ -10,29 +10,6 @@ footer: true
redirect_from: /developers/component_initialization/
---
-While developing Home Assistant you will see a variable that is everywhere: `hass`. This is the Home Assistant instance that will give you access to all the various parts of the system.
-
-### {% linkable_title The `hass` object %}
-
-The Home Assistant instance contains four objects to help you interact with the system.
-
-| Object | Description |
-| ------ | ----------- |
-| `hass` | This is the instance of Home Assistant. Allows starting, stopping and enqueing new jobs. [See available methods.](https://dev-docs.home-assistant.io/en/master/api/core.html#homeassistant.core.HomeAssistant)
-| `hass.config` | This is the core configuration of Home Assistant exposing location, temperature preferences and config directory path. [See available methods.](https://dev-docs.home-assistant.io/en/master/api/core.html#homeassistant.core.Config)
-| `hass.states` | This is the StateMachine. It allows you to set states and track when they are changed. [See available methods.](https://dev-docs.home-assistant.io/en/master/api/core.html#homeassistant.core.StateMachine). |
-| `hass.bus` | This is the EventBus. It allows you to trigger and listen for events. [See available methods.](https://dev-docs.home-assistant.io/en/master/api/core.html#homeassistant.core.EventBus). |
-| `hass.services` | This is the ServiceRegistry. It allows you to register services. [See available methods.](https://dev-docs.home-assistant.io/en/master/api/core.html#homeassistant.core.ServiceRegistry). |
-
-### {% linkable_title Where to find `hass` %}
-
-Depending on what you're writing, there are different ways the `hass` object is made available.
-
-**Component**
-Passed into `setup(hass, config)` or `async_setup(hass, config)`.
-
-**Platform**
-Passed into `setup_platform(hass, config, add_devices, discovery_info=None)` or `async_setup_platform(hass, config, async_add_devices, discovery_info=None)`.
-
-**Entity**
-Available as `self.hass` once the entity has been added via the `add_devices` callback inside a platform.
+
\ No newline at end of file
diff --git a/source/developers/development_services.markdown b/source/developers/development_services.markdown
index 1aa11397ed..6d5c203374 100644
--- a/source/developers/development_services.markdown
+++ b/source/developers/development_services.markdown
@@ -9,47 +9,6 @@ sharing: true
footer: true
---
-This is a simple "hello world" example to show the basics of registering a service. To use this example, create the file `/custom_components/hello_service.py` and copy the below example code.
-
-Services can be called from automation and from the service "Developer tools" in the frontend.
-
-```python
-# The domain of your component. Should be equal to the name of your component.
-DOMAIN = 'hello_service'
-
-ATTR_NAME = 'name'
-DEFAULT_NAME = 'World'
-
-
-def setup(hass, config):
- """Set up is called when Home Assistant is loading our component."""
-
- def handle_hello(call):
- name = call.data.get(ATTR_NAME, DEFAULT_NAME)
-
- hass.states.set('hello_service.hello', name)
-
- hass.services.register(DOMAIN, 'hello', handle_hello)
-
- # Return boolean to indicate that initialization was successfully.
- return True
-```
-
-Load the component by adding the following to your `configuration.yaml`. When your component is loaded, a new service should be available to call.
-
-```yaml
-# configuration.yaml entry
-hello_service:
-```
-
-Open the frontend and in the sidebar, click the first icon in the developer tool section. This will open the Call Service developer tool. On the right, find your service and click on it. This will automatically fill in the correct values.
-
-Pressing "Call Service" will now call your service without any parameters. This will cause your service to create a state with the default name 'World'. If you want to specify the name, you have to specify parameters. Add the following JSON as Service Data and press "Call Service again".
-
-```json
-{
- "name": "Planet"
-}
-```
-
-The service will now overwrite the previous state with "Planet".
+
\ No newline at end of file
diff --git a/source/developers/development_states.markdown b/source/developers/development_states.markdown
index e1161ffcca..cf3db78b4d 100644
--- a/source/developers/development_states.markdown
+++ b/source/developers/development_states.markdown
@@ -9,132 +9,6 @@ sharing: true
footer: true
---
-Home Assistant keeps track of the states of entities in a state machine. The state machine has very few requirements:
-
- - Each state is related to an entity identified by an entity id. This id is made up of a domain and an object id. For example `light.kitchen_ceiling`. You can make up any combination of domain and object id, even overwriting existing states.
- - Each state has a primary attribute that describes the state of the entity. In the case of a light this could be for example "on" and "off". You can store anything you want in the state, as long as it's a string (will be converted if it's not).
- - You can store more information about an entity by setting attributes. Attributes is a dictionary that can contain any data that you want. The only requirement is that it's JSON serializable, so you're limited to numbers, strings, dictionaries and lists.
-
-[Description of the state object.](/docs/configuration/state_object/)
-
-### {% linkable_title Using states in your component %}
-
-This is a simple tutorial/example on how to create and set states. We will do our work in a component called "hello_state". The purpose of this component is to display a given text in the frontend.
-
-To get started, create the file `/custom_components/hello_state.py` and copy the below example code.
-
-```python
-"""
-Support for showing text in the frontend.
-
-For more details about this component, please refer to the documentation at
-https://home-assistant.io/cookbook/python_component_basic_state/
-"""
-import logging
-
-_LOGGER = logging.getLogger(__name__)
-
-DOMAIN = 'hello_state'
-DEPENDENCIES = []
-
-def setup(hass, config):
- """Setup the Hello State component. """
- _LOGGER.info("The 'hello state' component is ready!")
-
- return True
-```
-
-1. In the file header we decided to add some details: A short description and the link to the documentation.
-2. We want to do some logging. This means that we import the Python logging module and create an alias.
-3. The component name is equal to the domain name.
-4. At the moment this component has no dependencies. For detail check [dependencies](/developers/component_deps_and_reqs/#dependencies) section.
-5. The `setup` function will take care of the initialization of our component.
- The component will only write a log message. Keep in mind for later that you have several options for the severity:
-
- - `_LOGGER.info(msg)`
- - `_LOGGER.warning(msg)`
- - `_LOGGER.error(msg)`
- - `_LOGGER.critical(msg)`
- - `_LOGGER.exception(msg)`
-
-7. We return `True` if everything is ok.
-
-Add the component to your `configuration.yaml` file.
-
-```yaml
-hello_state:
-```
-
-After a start or a restart of Home Assistant the component will create an entry in the log.
-
-```bash
-16-03-12 14:16:42 INFO (MainThread) [custom_components.hello_state] The 'hello state' component is ready!
-```
-
-The next step is the introduction of configuration options. A user can pass configuration options to our component via `configuration.yaml`. To use them we'll use the passed in `config` variable to our `setup` method.
-
-```python
-import logging
-
-_LOGGER = logging.getLogger(__name__)
-
-DOMAIN = 'hello_state'
-DEPENDENCIES = []
-
-CONF_TEXT = 'text'
-DEFAULT_TEXT = 'No text!'
-
-def setup(hass, config):
- """Set up the Hello State component. """
- # Get the text from the configuration. Use DEFAULT_TEXT if no name is provided.
- text = config[DOMAIN].get(CONF_TEXT, DEFAULT_TEXT)
-
- # States are in the format DOMAIN.OBJECT_ID
- hass.states.set('hello_state.Hello_State', text)
-
- return True
-```
-
-To use the latest feature of our component, update the entry in your `configuration.yaml` file.
-
-```yaml
-hello_state:
- text: 'Hello, World!'
-```
-
-Thanks to `DEFAULT_TEXT` variable the component will launch even if no `text:` field is used in the `configuration.yaml` file. Quite often there are variables which are required. It's important to check if all mandatory configuration variables are provided. If not, the setup should fail. We will use `voluptuous` as a helper to achieve this. The next listing shows the essential parts.
-
-```python
-import voluptuous as vol
-
-import homeassistant.helpers.config_validation as cv
-
-CONFIG_SCHEMA = vol.Schema({
- DOMAIN: vol.Schema({
- vol.Required(CONF_TEXT): cv.string,
- })
-}, extra=vol.ALLOW_EXTRA)
-```
-
-Now, when `text:` is missing from the config, Home Assistant will alert the user and not setup your component.
-
-After a start or a restart of Home Assistant the component will be visible in the frontend if the `configuration.yaml` file is up-to-date.
-
-
-
-
-
-In order to expose attributes for a platform, you will need to define a property called `device_state_attributes` on the entity class, which will return a dictionary of attributes:
-
-```
-@property
-def device_state_attributes(self):
- """Return device specific state attributes."""
- return self._attributes
-```
-
-
-Entities also have a similar property `state_attributes`, which normally doesn't need to be defined by new platforms. This property is used by base components to add standard sets of attributes to a state. Example: The light component uses `state_attributes` to add brightness to the state dictionary. If you are designing a new component, you should define `state_attributes` instead.
-
-
-To get your component included in the Home Assistant releases, follow the steps described in the [Submit your work](/developers/development_submitting/) section. Basically you only need to move your component in the `homeassistant/component/` directory of your fork and create a Pull Request.
+
\ No newline at end of file
diff --git a/source/developers/development_submitting.markdown b/source/developers/development_submitting.markdown
index b1439e4551..aaeadba89f 100644
--- a/source/developers/development_submitting.markdown
+++ b/source/developers/development_submitting.markdown
@@ -9,39 +9,6 @@ sharing: true
footer: true
---
-Submit your improvements, fixes, and new features to Home Assistant one at a time, using GitHub [Pull Requests](https://help.github.com/articles/using-pull-requests). Here are the steps:
-
- 1. From your fork's dev branch, create a new branch to hold your changes:
-
- `git checkout -b some-feature`
-
- 2. Make your changes, create a [new platform](/developers/add_new_platform/), develop a [new component](/developers/creating_components/), or fix [issues](https://github.com/home-assistant/home-assistant/issues).
-
- 3. [Test your changes](/developers/development_testing/) and check for style violations.
-
- 4. If everything looks good according to these [musts](/developers/development_checklist/), commit your changes:
-
- `git add .`
-
- `git commit -m "Added some-feature"`
-
- * Write a meaningful commit message and not only `Update` or `Fix`.
- * Use a capital letter to start with your commit message.
- * Don't prefix your commit message with `[bla.bla]` or `platform:`.
- * Consider adding tests to ensure that your code works.
-
- 5. Push your committed changes back to your fork on GitHub:
-
- `git push origin HEAD`
-
- 6. Follow [these steps](https://help.github.com/articles/creating-a-pull-request/) to create your pull request.
-
- * On GitHub, navigate to the main page of the Home Assistant repository.
- * In the "Branch" menu, choose the branch that contains your commits (from your fork).
- * To the right of the Branch menu, click **New pull request**.
- * Use the base branch dropdown menu to select the branch you'd like to merge your changes into, then use the compare branch drop-down menu to choose the topic branch you made your changes in. Make sure the Home Assistant branch matches with your forked branch (`dev`) else you will propose ALL commits between branches.
- * Type a title and complete the provided description for your pull request.
- * Click **Create pull request**.
-
- 7. Check for comments and suggestions on your pull request and keep an eye on the [CI output](https://travis-ci.org/home-assistant/home-assistant/).
-
+
\ No newline at end of file
diff --git a/source/developers/development_testing.markdown b/source/developers/development_testing.markdown
index a4f462690d..dc24f7bbfe 100644
--- a/source/developers/development_testing.markdown
+++ b/source/developers/development_testing.markdown
@@ -9,68 +9,6 @@ sharing: true
footer: true
---
-As states in the [Style guidelines section](/developers/development_guidelines/) all code is checked to verify all unit tests pass and that the code passes the linting tools. Local testing is done using Tox, which has been installed as part of running `script/setup`. To start the tests, simply run it:
-
-```bash
-$ tox
-```
-**Important:** Run `tox` before you create your pull request to avoid annoying fixes.
-
-Running Tox will run unit tests against the locally available Pythons, as well as validate the code and document style using `pycodestyle`, `pydocstyle` and `pylint`. You can run tests on only one tox target -- just use `-e` to select an environment. For example, `tox -e lint` runs the linters only, and `tox -e py36` runs unit tests only on Python 3.6.
-
-Tox uses virtual environments under the hood to create isolated testing environments. The tox virtual environments will get out-of-date when requirements change, causing test errors. Run `tox -r` to tell Tox to recreate the virtual environments.
-
-If you are working on tests for a component or platform and you need the dependencies available inside the Tox environment, update the list inside `script/gen_requirements_all.py`. Then run the script and then run `tox -r` to recreate the virtual environments.
-
-### {% linkable_title Running single tests using Tox %}
-
-You can pass arguments via Tox to py.test to be able to run single test suites or test files. Replace `py36` with the Python version that you use.
-
-```bash
-# Stop after the first test fails
-$ tox -e py36 -- tests/test_core.py -x
-# Run test with specified name
-$ tox -e py36 -- tests/test_core.py -k test_split_entity_id
-# Fail a test after it runs for 2 seconds
-$ tox -e py36 -- tests/test_core.py --timeout 2
-# Show the 10 slowest tests
-$ tox -e py36 -- tests/test_core.py --duration=10
-```
-
-### {% linkable_title Testing outside of Tox %}
-
-Running tox will invoke the full test suite. Even if you specify which tox target to run, you still run all tests inside that target. That's not very convenient to quickly iterate on your code! To be able to run the specific test suites without Tox, you'll need to install the test dependencies into your Python environment:
-
-```bash
-$ pip3 install -r requirements_test_all.txt
-```
-
-Now that you have all test dependencies installed, you can run tests on individual files:
-
-```bash
-$ flake8 homeassistant/core.py
-$ pylint homeassistant/core.py
-$ pydocstyle homeassistant/core.py
-$ py.test tests/test_core.py
-```
-
-You can also run linting tests against all changed files, as reported by `git diff upstream/dev... --diff-filter=d --name-only`, using the `lint` script:
-
-```bash
-$ script/lint
-```
-
-### {% linkable_title Preventing Linter Errors %}
-
-Save yourself the hassle of extra commits just to fix style errors by enabling the Flake8 git commit hook. Flake8 will check your code when you try to commit to the repository and block the commit if there are any style errors, which gives you a chance to fix them!
-
-```bash
-$ pip3 install flake8 flake8-docstrings
-$ flake8 --install-hook=git
-```
-
-The `flake8-docstrings` extension will check docstrings according to [PEP257](https://www.python.org/dev/peps/pep-0257/) when running Flake8.
-
-### {% linkable_title Notes on PyLint and PEP8 validation %}
-
-If you can't avoid a PyLint warning, add a comment to disable the PyLint check for that line with `# pylint: disable=YOUR-ERROR-NAME`. Example of an unavoidable one is if PyLint incorrectly reports that a certain object doesn't have a certain member.
+
\ No newline at end of file
diff --git a/source/developers/development_validation.markdown b/source/developers/development_validation.markdown
index b629dcbe64..207b61b7d2 100644
--- a/source/developers/development_validation.markdown
+++ b/source/developers/development_validation.markdown
@@ -9,79 +9,6 @@ sharing: true
footer: true
---
-The `configuration.yaml` file contains the configuration options for components and platforms. We use [voluptuous](https://pypi.python.org/pypi/voluptuous) to make sure that the configuration provided by the user is valid. Some entries are optional or could be required to set up a platform or a component. Others must be a defined type or from an already-defined list.
-
-We test the configuration to ensure that users have a great experience and minimize notifications if something is wrong with a platform or component setup before Home Assistant runs.
-
-Besides [voluptuous](https://pypi.python.org/pypi/voluptuous) default types, many custom types are available. For an overview, take a look at the [config_validation.py](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/helpers/config_validation.py) helper.
-
-- Types: `string`, `byte`, and `boolean`
-- Entity ID: `entity_id` and `entity_ids`
-- Numbers: `small_float` and `positive_int`
-- Time: `time`, `time_zone`
-- Misc: `template`, `slug`, `temperature_unit`, `latitude`, `longitude`, `isfile`, `sun_event`, `ensure_list`, `port`, `url`, and `icon`
-
-To validate plaforms using [MQTT](/components/mqtt/), `valid_subscribe_topic` and `valid_publish_topic` are available.
-
-Some things to keep in mind:
-
-- Use the constants defined in `const.py`
-- Import `PLATFORM_SCHEMA` from the parent component and extend it
-- Preferred order is `required` first and `optional` second
-- Starting with Home Assistant 0.64 `voluptuous` requires default values for optional configuration keys to be valid values. Don't use a default which is `None` like `vol.Optional(CONF_SOMETHING, default=None): cv.string`, set the default to `default=""` if required.
-
-### {% linkable_title Snippets %}
-
-This section contains snippets for the validation we use.
-
-#### {% linkable_title Default name %}
-
-It's common to set a default for a sensor if the user doesn't provide a name to use.
-
-```python
-DEFAULT_NAME = 'Sensor name'
-
-PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
- ...
- vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
-```
-
-#### {% linkable_title Limit the values %}
-
-You might want to limit the user's input to a couple of options.
-
-```python
-DEFAULT_METHOD = 'GET'
-
-PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
- ...
- vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): vol.In(['POST', 'GET']),
-```
-
-#### {% linkable_title Port %}
-
-All port numbers are from a range of 1 to 65535.
-
-```python
-DEFAULT_PORT = 993
-
-PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
- ...
- vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
-```
-
-#### {% linkable_title Lists %}
-
-If a sensor has a pre-defined list of available options, test to make sure the configuration entry matches the list.
-
-```python
-SENSOR_TYPES = {
- 'article_cache': ('Article Cache', 'MB'),
- 'average_download_rate': ('Average Speed', 'MB/s'),
-}
-
-PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
- ...
- vol.Optional(CONF_MONITORED_VARIABLES, default=[]):
- vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]),
-```
+
\ No newline at end of file
diff --git a/source/developers/frontend.markdown b/source/developers/frontend.markdown
index 0fb71208d9..316ca36487 100755
--- a/source/developers/frontend.markdown
+++ b/source/developers/frontend.markdown
@@ -9,94 +9,6 @@ sharing: true
footer: true
---
-Home Assistant is built on top of the [Polymer](https://www.polymer-project.org/) webcomponents framework. Polymer allows building encapsulated custom HTML elements. [Home-Assistant-Polymer source code on GitHub.][hass-polymer]
-
-
-Do not use development mode in production. Home Assistant uses aggressive caching to improve the mobile experience. This is disabled during development so that you do not have to restart the server in between changes.
-
-
-## {% linkable_title Setting up the environment %}
-
-
-All commands below need to be run from inside the home-assistant-polymer repository.
-
-
-Home Assistant will by default serve the compiled version of the frontend from the hass_frontend Python package. For development you want to work with the unbundled source files which are in the home-assistant-polymer repository.
-
-First step is to configure Home Assistant to use the development mode for the frontend. Do this by updating the frontend config in your `configuration.yaml` and set the path to the polymer repo:
-
-```yaml
-frontend:
- development_repo:
-```
-
-Next step is to git clone the [home-assistant-polymer repository][hass-polymer]. You can place the repository anywhere on your system but to keep these instructions simple we're cloning the home-assistant-polymer repository as a sibling to the Home Assistant repo.
-
-```bash
-$ git clone https://github.com/home-assistant/home-assistant-polymer.git
-$ cd home-assistant-polymer
-```
-
-After cloning, your folder structure should look like this:
-
-```text
-/home-assistant
-/home-assistant-polymer
-```
-
-Node.js is required to build the frontend. The preferred method of installing node.js is with [nvm](https://github.com/creationix/nvm). Install nvm using the instructions in the [README](https://github.com/creationix/nvm#install-script), and install the correct node.js by running the following command:
-
-```bash
-$ nvm install
-```
-
-[Yarn](https://yarnpkg.com/en/) is used as the package manager for node modules. [Install yarn using the instructions here.](https://yarnpkg.com/en/docs/install)
-
-Next, development dependencies need to be installed to bootstrap the frontend development environment. First activate the right Node version and then download all the needed modules and do a first build:
-
-```bash
-$ nvm use
-$ script/bootstrap
-```
-
-This script will use yarn and bower to install all the necessary dependencies necessary for development and do an initial build.
-
-### {% linkable_title Creating pull requests %}
-
-If you're planning on issuing a PR back to the Home Assistant codebase you need to fork the polymer project and add your fork as a remote to the Home Assistant Polymer repo.
-
-```bash
-$ git remote add
-```
-
-When you've made your changes and are ready to push them change to the working directory for the polymer project and then push your changes
-
-``` bash
-$ git add -A
-$ git commit -m "Added new feature X"
-$ git push -u HEAD
-```
-
-## {% linkable_title Development %}
-
-If you are changing `html` files under `/src` or `/panels` - just reload the page in your browser to see changes.
-If you are changing javascript files under `/js` you need to have gulp running to watch the source files for changes and build when necessary.
-
-```bash
-$ yarn run dev-watch
-```
-
-The source code for the frontend can be found in different directories:
-
- - UI: `/home-assistant-polymer/src/`
- - Panels: `/home-assistant-polymer/panels/`
- - Javascript code: `/home-assistant-polymer/js/`
-
-# {% linkable_title Building the Polymer frontend %}
-
-Building a new version of the frontend is as simple as running `script/build_frontend`.
-To use a built version package it: `python setup.py sdist`
-Install it: `pip3 install dist/home-assistant-frontend-xxxxxxxx.0.tar.gz --upgrade`
-Run Home Assistant without trying to reinstall production package: `hass --skip-pip`
-
-[hass-polymer]: https://github.com/home-assistant/home-assistant-polymer
+
\ No newline at end of file
diff --git a/source/developers/frontend_add_card.markdown b/source/developers/frontend_add_card.markdown
index 2deba80dbc..d10dda464b 100644
--- a/source/developers/frontend_add_card.markdown
+++ b/source/developers/frontend_add_card.markdown
@@ -9,20 +9,6 @@ sharing: true
footer: true
---
-The main interface of Home Assistant is a list of the current entities and their states. For each entity in the system, a state card will be rendered. State cards will show an icon, the name of the entity, when the state has last changed and the current state or a control to interact with it.
-
-
-
-The different card types can be found [here](https://github.com/home-assistant/home-assistant-polymer/tree/master/src/state-summary).
-
-Sensors, when not [grouped](/components/group/), are shown as so-called badges on top of the state cards.
-
-
-
-The different badges are located in the file [`/src/components/entity/ha-state-label-badge.html`](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/components/entity/ha-state-label-badge.html).
-
-Adding a custom card type can be done with a few simple steps. For this example we will add a new state card for the domain `camera`:
-
- 1. Add `'camera'` to the array `DOMAINS_WITH_CARD` in the file [/util/hass-util.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/util/hass-util.html#L11).
- 2. Create the files `state-card-camera.html` in the folder [/state-summary/](https://github.com/home-assistant/home-assistant-polymer/tree/master/src/state-summary).
- 4. Add `` to [state-card-content.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/state-summary/state-card-content.html).
+
\ No newline at end of file
diff --git a/source/developers/frontend_add_more_info.markdown b/source/developers/frontend_add_more_info.markdown
index 2364c5b312..5a6993837f 100644
--- a/source/developers/frontend_add_more_info.markdown
+++ b/source/developers/frontend_add_more_info.markdown
@@ -9,15 +9,6 @@ sharing: true
footer: true
---
-Whenever the user taps or clicks on one of the cards, a more info dialog will show. The header of this dialog will be the state card, followed by the history of this entity for the last 24 hours. Below this the more info component is rendered for that entity. The more info component can show more information or allow more ways of control.
-
-
-
- The more info dialog for a light allows the user to control the color and the brightness.
-
-
-The instructions to add a more info dialog are very similar to adding a new card type. This example will add a new more info component for the domain `camera`:
-
- 1. Add `'camera'` to the array `DOMAINS_WITH_MORE_INFO` in the file [util/hass-util.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/util/hass-util.html#L24).
- 2. Create the files `more-info-camera.html` in the folder [/more-infos](https://github.com/home-assistant/home-assistant-polymer/tree/master/src/more-infos).
- 4. Add `` to [more-info-content.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/more-infos/more-info-content.html)
+
\ No newline at end of file
diff --git a/source/developers/frontend_creating_custom_panels.markdown b/source/developers/frontend_creating_custom_panels.markdown
index 4066e6062a..670a562cfa 100644
--- a/source/developers/frontend_creating_custom_panels.markdown
+++ b/source/developers/frontend_creating_custom_panels.markdown
@@ -9,83 +9,6 @@ sharing: true
footer: true
---
-Panels are pages within Home Assistant that show information within Home Assistant and can allow controlling it. Panels are linked from the sidebar and rendered full screen. The have have real-time access to the Home Assistant object via JavaScript. Examples of panels in the app are map, logbook and history.
-
-Besides components registering panels, users can also register panels using the `panel_custom` component. This allows users to quickly build their own custom interfaces for Home Assistant.
-
-### {% linkable_title Before you get started %}
-
-The Home Assistant user interface is currently served to browsers in modern JavaScript and older JavaScript (ES5). The older version has a wider browser support but that comes at a cost of size, performance and more difficult to get started building panels for authors.
-
-We therefore advice to set up the frontend to serve the modern version of the frontend so that you won't need any build tools while developing. If you realize that your audience requires both, you can add a transpilation step in the future. To set up your frontend to always serve the latest version, add this to your config:
-
-```
-frontend:
- javascript_version: latest
-```
-
-### {% linkable_title Building your first panel %}
-
-Create a file called `hello.html` in your /panels/.
-
-The `hello.html` contains the needed building blocks to create the elements inside the view.
-
-```html
-
-
-
-
Hello {% raw %}{{who}}{% endraw %}. Greetings from Home Assistant.
-
-
-
-```
-
-Create an entry for the new panel in your `configuration.yaml` file:
-
-```yaml
-panel_custom:
- - name: hello
- sidebar_title: Hello World
- sidebar_icon: mdi:hand-pointing-right
- url_path: hello
-```
-
-For more possibilities, see the [Custom panel section](/cookbook/#user-interface) on our Examples page.
+window.location = 'https://developers.home-assistant.io/docs/en/frontend_creating_custom_panels.html';
+
\ No newline at end of file
diff --git a/source/developers/frontend_creating_custom_ui.markdown b/source/developers/frontend_creating_custom_ui.markdown
index 3012f43e60..f70c3ce3c1 100644
--- a/source/developers/frontend_creating_custom_ui.markdown
+++ b/source/developers/frontend_creating_custom_ui.markdown
@@ -10,90 +10,6 @@ footer: true
ha_release: 0.38
---
-If you would like to use your own [State card](/developers/frontend_add_card/) without merging your code into [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer/) you can create your own implementation.
-
-Put the element source file and its dependencies in `www/custom_ui/` directory under your Home Assistant [configuration](/docs/configuration/) directory.
-
-For example if creating a state card for the `light` domain named `state-card-my-custom-light` put `state-card-my-custom-light.html` in `www/custom_ui/`.
-
-That file should implement `` tag with Polymer.
-
-In `state-card-my-custom-light.html` you should use `` to import all the dependencies **not** used by Home Assistant's UI.
-Do not import any dependencies used by the Home Assistant UI.
-Importing those will work in `development: 1` mode, but will fail in production mode.
-
-1. In the `customize:` section of the `configuration.yaml` file put `custom_ui_state_card: state-card-my-custom-light`.
-2. In the `frontend` section use `extra_html_url` to specify the URL to load.
-
-Example:
-
-`configuration.yaml`:
-
-```yaml
-homeassistant:
- customize:
- light.bedroom:
- custom_ui_state_card: state-card-my-custom-light
-
-frontend:
- extra_html_url:
- - /local/custom_ui/state-card-my-custom-light.html
-```
-
-`www/custom_ui/state-card-my-custom-light.html`:
-
-```html
-
-
-
-
-
-
-
-
-```
-
-Some browsers don't support latest ECMAScript standards, these require a separate ES5 compatible file (`extra_html_url_es5`).
-
-
-For more possibilities, see the [Custom UI section](/cookbook/#user-interface) on our Examples page.
+window.location = 'https://developers.home-assistant.io/docs/en/frontend_creating_custom_ui.html';
+
\ No newline at end of file
diff --git a/source/developers/hassio/addon_communication.markdown b/source/developers/hassio/addon_communication.markdown
index 3a4f57fb8b..2ade126855 100644
--- a/source/developers/hassio/addon_communication.markdown
+++ b/source/developers/hassio/addon_communication.markdown
@@ -10,32 +10,6 @@ footer: true
redirect_from: /hassio/addon_config/
---
-There are different ways for communication between add-ons inside Hass.io.
-
-## {% linkable_title Network %}
-
-We use an internal network that allows to communicate with every add-on, even to/from Home Assistant, by using its name or alias. Only the add-ons which run on the host network are a bit limited. These can talk with all internal add-ons by their name but all other add-on can't address these add-on by name - using an alias works for both!
-
-Name/alias are used for communication inside Hass.io.
-The name is generated using the following format: `{REPO}_{SLUG}`, e.g., `local_xy` or `3283fh_myaddon`. In this example, `{SLUG}` is defined in an add-ons `config.json`. You can use this name also as DNS name but you need replace the `_` with `-` to have a valid hostname. If an add-on is installed locally, `{REPO}` will be `local`. If the add-on is installed from a Github repository, `{REPO}` is a hashed identifier generated from the GitHub repository's URL (ex: https://github.com/xy/my_hassio_addons). See [here](https://github.com/home-assistant/hassio/blob/587047f9d648b8491dc8eef17dc6777f81938bfd/hassio/addons/utils.py#L17) to understand how this identifier is generated. Note that this identifier is required in certain service calls that use the [Hass.io add-on API](hassio-addon-api). You can view the repository identifiers for all currently installed add-ons via a GET request to the hassio API `addons` endpoint.
-
-Use `hassio` for communication with the internal API.
-
-## {% linkable_title Home Assistant %}
-
-An add-on can talk to the [Home Assistant API][hass-api] using the internal proxy. That makes it very easy to communicate with the API without knowing the password, port or any other information of the Home Assistant instance. Use this URL: `http://hassio/homeassistant/api` and internal communication is redirected to the right place. The next stept is to add `homeassistant_api: true` to `config.json` and read the environment variable `HASSIO_TOKEN` and use this as Home-Assistant password.
-
-There is also a proxy for the [Home Assistant Websocket API][hass-websocket]. It works like the API proxy above and requires `HASSIO_TOKEN` as password. Use this URL: `http://hassio/homeassistant/websocket`.
-
-It is also possible to talk direct to the Home Assistant instance which is named `homeassistant` over the internal network. But you need to know the configuration that is used by the running instance.
-
-We have severals services for Hass.io inside Home Assistant to run tasks. To send data over STDIN to an add-on use the `hassio.addon_stdin` service.
-
-## {% linkable_title Hass.io API %}
-
-To enables calls to the [Hass.io API][hassio-api], add `hassio_api: true` to `config.json` and read the environment variable `HASSIO_TOKEN`. Now you can use the API over the URL: `http://hassio/`. Use the `HASSIO_TOKEN` with header `X-HASSIO-KEY`.
-
-[hass-api]: /developers/rest_api/
-[hass-websocket]: /developers/websocket_api/
-[hassio-api]: https://github.com/home-assistant/hassio/blob/master/API.md
-[hassio-addon-api]: https://github.com/home-assistant/hassio/blob/dev/API.md#restful-for-api-addons
+
\ No newline at end of file
diff --git a/source/developers/hassio/addon_config.markdown b/source/developers/hassio/addon_config.markdown
index bc4870f862..a13c1e7c71 100644
--- a/source/developers/hassio/addon_config.markdown
+++ b/source/developers/hassio/addon_config.markdown
@@ -10,198 +10,6 @@ footer: true
redirect_from: /hassio/addon_config/
---
-Each add-on is stored in a folder. The file structure looks like this:
-
-```text
-addon_name/
- build.json
- CHANGELOG.md
- config.json
- Dockerfile
- icon.png
- logo.png
- README.md
- run.sh
-```
-
-## {% linkable_title Add-on script %}
-
-As with every Docker container, you will need a script to run when the container is started. A user might run many add-ons, so it is encouraged to try to stick to Bash scripts if you're doing simple things.
-
-When developing your script:
-
- - `/data` is a volume for persistent storage.
- - `/data/options.json` contains the user configuration. You can use `jq` inside your shell script to parse this data. However, you might have to install `jq` as a separate package in your container (see `Dockerfile` below).
-
-```bash
-CONFIG_PATH=/data/options.json
-
-TARGET="$(jq --raw-output '.target' $CONFIG_PATH)"
-```
-
-So if your `options` contain
-```json
-{ "target": "beer" }
-```
-then there will be a variable `TARGET` containing `beer` in the environment of your bash file afterwards.
-
-## {% linkable_title Add-on Docker file %}
-
-All add-ons are based on Alpine Linux 3.6. Hass.io will automatically substitute the right base image based on the machine architecture. Add `tzdata` if you need run in a different timezone. `tzdata` Is is already added to our base images.
-
-```
-ARG BUILD_FROM
-FROM $BUILD_FROM
-
-ENV LANG C.UTF-8
-
-# Install requirements for add-on
-RUN apk add --no-cache jq
-
-# Copy data for add-on
-COPY run.sh /
-RUN chmod a+x /run.sh
-
-CMD [ "/run.sh" ]
-```
-
-If you don't use local build on device or our build script, make sure that the Dockerfile have also a set of labels include:
-```
-LABEL io.hass.version="VERSION" io.hass.type="addon" io.hass.arch="armhf|aarch64|i386|amd64"
-```
-
-It is possible to use own base image with `build.json` or if you do not need support for automatic multi-arch building you can also use a simple docker `FROM`.
-
-### {% linkable_title Build Args %}
-
-We support the following build arguments by default:
-
-| ARG | Description |
-|-----|-------------|
-| BUILD_FROM | Hold image for dynamic builds or buildings over our systems.
-| BUILD_VERSION | Add-on version (read from `config.json`).
-| BUILD_ARCH | Hold current build arch inside.
-
-## {% linkable_title Add-on config %}
-
-The config for an add-on is stored in `config.json`.
-
-```json
-{
- "name": "xy",
- "version": "1.2",
- "slug": "folder",
- "description": "long description",
- "arch": ["amd64"],
- "url": "website with more information about add-on (ie a forum thread for support)",
- "startup": "application",
- "boot": "auto",
- "ports": {
- "123/tcp": 123
- },
- "map": ["config:rw", "ssl"],
- "options": {},
- "schema": {},
- "image": "repo/{arch}-my-custom-addon"
-}
-```
-
-| Key | Type | Required | Description |
-| --- | ---- | -------- | ----------- |
-| name | string | yes | Name of the add-on
-| version | string | yes | Version of the add-on
-| slug | string | yes | Slug of the add-on
-| description | string | yes | Description of the add-on
-| arch | list | no | List of supported arch: `armhf`, `aarch64`, `amd64`, `i386`. Default all.
-| url | url | no | Homepage of the addon. Here you can explain the add-ons and options.
-| startup | bool | yes | `initialize` will start addon on setup of Hass.io. `system` is for things like databases and not dependent on other things. `services` will start before Home Assistant, while `application` is started afterwards. Finally `once` is for applications that don't run as a daemon.
-| webui | string | no | A URL for web interface of this add-on. Like `http://[HOST]:[PORT:2839]/dashboard`, the port needs the internal port, which will be replaced with the effective port. It is also possible to bind the proto part to a config options with: `[PROTO:option_name]://[HOST]:[PORT:2839]/dashboard` and he lookup if they is True and going to `https`.
-| boot | string | yes | `auto` by system and manual or only `manual`
-| ports | dict | no | Network ports to expose from the container. Format is `"container-port/type": host-port`.
-| host_network | bool | no | If that is True, the add-on run on host network.
-| host_ipc | bool | no | Default False. Allow to share the IPC namespace with others.
-| host_dbus | bool | no | Default False. Map Host dbus service into add-on.
-| devices | list | no | Device list to map into the add-on. Format is: `::`. i.e. `/dev/ttyAMA0:/dev/ttyAMA0:rwm`
-| auto_uart | bool | no | Default False. Auto mapping all UART/Serial device from host into add-on.
-| hassio_api | bool | no | This add-on can access to Hass.io REST API. It set the host alias `hassio`.
-| homeassistant_api | bool | no | This add-on can access to Hass.io Home-Assistant REST API proxy. Use `http://hassio/homeassistant/api`.
-| privileged | list | no | Privilege for access to hardware/system. Available access: `NET_ADMIN`, `SYS_ADMIN`, `SYS_RAWIO`, `SYS_TIME`, `SYS_NICE`
-| apparmor | bool | no | Enable or disable AppArmor support. If it is enable, you can also use custom profiles.
-| seccomp | bool | no | Enable or disable Seccomp support. If it is enable, you can also use custom profiles.
-| map | list | no | List of maps for additional Hass.io folders. Possible values: `config`, `ssl`, `addons`, `backup`, `share`. Defaults to `ro`, which you can change by adding `:rw` to the end of the name.
-| environment | dict | no | A dict of environment variable to run add-on.
-| audio | bool | no | Boolean. Mark this add-on to use internal an audio system. The ALSA configuration for this add-on will be mount automatic.
-| gpio | bool | no | Boolean. If this is set to True, `/sys/class/gpio` will map into add-on for access to GPIO interface from kernel. Some library need also `/dev/mem` and `SYS_RAWIO` for read/write access to this device.
-| stdin | bool | no | Boolean. If that is enable, you can use the STDIN with Hass.io API.
-| legacy | bool | no | Boolean. If the docker image have no hass.io labels, you can enable the legacy mode to use the config data.
-| options | dict | yes | Default options value of the add-on
-| schema | dict | yes | Schema for options value of the add-on. It can be `False` to disable schema validation and use custom options.
-| image | string | no | For use with Docker Hub.
-| timeout | integer | no | Default 10 (second). The timeout to wait until the docker is done or will be killed.
-| tmpfs | string | no | Mount a tmpfs file system in `/tmpfs`. Valide format for this option is : `size=XXXu,uid=N,rw`. Size is mandatory, valid units (`u`) are `k`, `m` and `g` and `XXX` has to be replaced by a number. `uid=N` (with `N` the uid number) and `rw` are optional.
-
-### {% linkable_title Options / Schema %}
-
-The `options` dictionary contains all available options and their default value. Set the default value to `null` if the value is required to be given by the user before the add-on can start, and it show it inside default values. Only nested arrays and dictionaries are supported with a deep of two size. If you want make an option optional, put `?` to the end of data type, otherwise it will be a required value.
-
-```json
-{
- "message": "custom things",
- "logins": [
- { "username": "beer", "password": "123456" },
- { "username": "cheep", "password": "654321" }
- ],
- "random": ["haha", "hihi", "huhu", "hghg"],
- "link": "http://example.com/",
- "size": 15,
- "count": 1.2
-}
-```
-
-The `schema` looks like `options` but describes how we should validate the user input. For example:
-
-```json
-{
- "message": "str",
- "logins": [
- { "username": "str", "password": "str" }
- ],
- "random": ["match(^\w*$)"],
- "link": "url",
- "size": "int(5,20)",
- "count": "float",
- "not_need": "str?"
-}
-```
-
-We support:
-- str
-- bool
-- int / int(min,) / int(,max) / int(min,max)
-- float / float(min,) / float(,max) / float(min,max)
-- email
-- url
-- port
-- match(REGEX)
-
-## {% linkable_title Add-on extended build %}
-
-Additional build options for an add-on is stored in `build.json`. This file will be read from our build systems.
-
-```json
-{
- "build_from": {
- "armhf": "homeassistant/armhf-base:latest"
- },
- "squash": false,
- "args": {
- "my_build_arg": "xy"
- }
-}
-```
-
-| Key | Required | Description |
-| --- | -------- | ----------- |
-| build_from | no | A dictionary with the hardware architecture as the key and the base Docker image as value.
-| squash | no | Default `False`. Be carfully with this option, you can not use the image for caching stuff after that!
-| args | no | Allow to set additional Docker build arguments as a dictionary.
+
\ No newline at end of file
diff --git a/source/developers/hassio/addon_development.markdown b/source/developers/hassio/addon_development.markdown
index ec1f3f9674..1a99e8f384 100644
--- a/source/developers/hassio/addon_development.markdown
+++ b/source/developers/hassio/addon_development.markdown
@@ -10,14 +10,6 @@ footer: true
redirect_from: /hassio/addon_development/
---
-Add-ons for Hass.io allow the user to extend the functionality around Home Assistant. This can be running an application that Home Assistant can integrate with (like an MQTT broker) or to share the configuration via Samba for easy editing from other computers. Add-ons can be configured via the Hass.io panel in Home Assistant.
-
-Under the hood, add-ons are Docker images published in [Docker Hub](https://hub.docker.com/). Developers can create [GitHub](https://github.com) repositories that contain multiple references to add-ons for easy sharing with the community.
-
-1. [Tutorial: Making your first add-on](/developers/hassio/addon_tutorial/)
-1. [Configuration](/developers/hassio/addon_config/)
-1. [Communication](/developers/hassio/addon_communication/)
-1. [Local Testing](/developers/hassio/addon_testing/)
-1. [Publishing](/developers/hassio/addon_publishing/)
-1. [Presentation](/developers/hassio/addon_presentation/)
-1. [Repositories](/developers/hassio/addon_repository/)
+
\ No newline at end of file
diff --git a/source/developers/hassio/addon_presentation.markdown b/source/developers/hassio/addon_presentation.markdown
index e57270040a..26ee4f20d2 100644
--- a/source/developers/hassio/addon_presentation.markdown
+++ b/source/developers/hassio/addon_presentation.markdown
@@ -9,45 +9,6 @@ sharing: true
footer: true
---
-If you decide to share your add-on to the public, paying attention to details is recommended. Of course, your add-on should have a proper name and description, but Hass.io also gives you some other tools to present your add-on even nicer.
-
-## {% linkable_title Adding documentation %}
-
-Good documentation helps the consumer of your add-on to understand its usage, explains configuration options, points users in the right direction in the case they have questions or issues, and contains the license under which the add-on was published.
-
-This file containing the documentation is usually referred to as the "README", which is generally published as the `README.md` file.
-
-Take a look at other projects for inspiration. For example, see the `README.md` of the [Community Hass.io Add-ons: Homebridge](https://github.com/hassio-addons/addon-homebridge/blob/master/README.md) add-on.
-
-In future versions of Hass.io, the `README.md` file will be displayed in the Home Assistant frontend.
-
-## {% linkable_title Add-on icon & logo %}
-
-A picture is worth a thousand words. Therefore, your add-on can be improved by adding a proper image icon and logo. Those images are used when showing your add-on in the Home Assistant Hass.io panel and which will significantly improve the visual representation of your add-on.
-
-Requirements for the logo of your add-on:
-
-- The logo must be in the Portable Network Graphics format (`.png`).
-- The filename must be `logo.png`.
-- It is recommended to keep the logo size around 250x100px. You may choose to use a different size or aspect ratio as you seem fit for your add-on.
-
-Requirements for the icon of your add-on:
-
-- The icon must be in the Portable Network Graphics format (`.png`).
-- The filename must be `icon.png`.
-- The aspect ratio of the icon must be 1x1 (square).
-- It is recommended to use an icon size of 128x128px.
-
-## {% linkable_title Keeping a changelog %}
-
-It is likely you are going to release newer versions of your add-on in the future. In case that happens, the users of your add-on would see an upgrade notice and probably want to know what changes were made in the latest version.
-
-A changelog is a file which contains a curated, chronologically ordered list of notable changes for each version of your add-on and is generally published as the `CHANGELOG.md` file.
-
-If you are in need of a guide on keeping a changelog, we would recommend checking the [keep a changelog](http://keepachangelog.com) website. They have developed a standard that is used by many opensource projects around the world.
-
-In future versions of Hass.io, the `CHANGELOG.md` file will be displayed in the Home Assistant frontend.
-
-## {% linkable_title Extended Security %}
-
-You can use own security profile for you Add-on with Seccomp or AppArmor. Default it is enabled and use the docker default profile. Put `apparmor` or `seccomp.json` file into your Add-on folder and it will load this file as primary profile.
+
\ No newline at end of file
diff --git a/source/developers/hassio/addon_publishing.markdown b/source/developers/hassio/addon_publishing.markdown
index 26020a6616..735dbe7093 100644
--- a/source/developers/hassio/addon_publishing.markdown
+++ b/source/developers/hassio/addon_publishing.markdown
@@ -10,56 +10,6 @@ footer: true
redirect_from: /hassio/addon_publishing/
---
-There are two different ways of publishing add-ons. One is to publish pre-build containers to Docker Hub and the other option is to have users build the containers locally on their Hass.io instance.
-
-#### {% linkable_title Pre-build containers %}
-
-With pre-build containers, the developer is responsible for building the images for each architecture on their machine and push the results out to Docker Hub. This has a lot of advantages for the user. As a user it will only have to download the final container and be up and running once the download finishes. This makes the installation process fast and almost no chance of failure. This is the preferred method.
-
-We have automated the process of building and publishing add-ons. See below for the instructions.
-
-#### {% linkable_title Locally build containers %}
-
-Starting Hass.io 0.26, it is possible to distribute add-ons that will be built on the users machine. The advantage is that as a developer it is easy to test an idea and see if people are interested in your add-ons. This method includes installing and potentially compiling code. This means that installing such an add-on is slow and adds more wear and tear to users SD card/hard drive than the above mentioned pre-build solution. It also has a higher chance of failure if one of the dependencies of the container has changed or is no longer available.
-
-Use this option when you are playing with add-ons and seeing if someone is interested in your work. Once you're an established repository, please migrate to pushing builds to Docker Hub as it greatly improves the user experience. In the future we will mark locally built add-ons in the add-on store to warn users.
-
-## {% linkable_title Build scripts to publish add-ons to Docker Hub %}
-
-All add-ons are simple docker containers. Inside your add-on `config.json` you specify the Docker image that will be installed for your add-on:
-
-```json
-{
- ...
-
- "image": "myhub/image-{arch}-addon-name",
-
- ...
-}
-```
-
-You can use `{arch}` inside the image name to support multiple architectures with 1 configuration file. It will be replaced with the architecture of the user when we load the image. If you use `Buildargs` you can use the `build.json` to overwrite our default args.
-
-Hass.io assumes that the `master` branch of your add-on repository matches the latest tag on Docker Hub. When you're building a new version, it's suggested that you use another branch, ie `build` or do it with a PR on GitHub. After you push the add-on to [Docker Hub](https://hub.docker.com/), you can merge this branch to master.
-
-## {% linkable_title Custom Add-ons %}
-
-You need a Docker Hub account to make your own add-ons. You can build your docker images with docker `build` command or use our script that make it simple. Pull our [builder docker engine][builder] and run one of the following commands.
-
-For a git repository:
-
-```bash
-$ docker run --rm --privileged -v ~/.docker:/root/.docker homeassistant/amd64-builder --all -t addon-folder -r https://github.com/xy/addons -b branchname
-```
-
-For a local repository:
-
-```bash
-$ docker run --rm --privileged -v ~/.docker:/root/.docker -v /my_addon:/data homeassistant/amd64-builder --all -t /data
-```
-
-
-If you are developing on macOS and using Docker for Mac, you may encounter an error message similar to the following: error creating aufs mount to /var/lib/docker/aufs/mnt/-init: invalid argument. A proposed workaround is to add the following to the Advanced Daemon JSON configuration via Docker > Preferences > Daemon > Advanced: "storage-driver" : "aufs".
-
-
-[builder]: https://github.com/home-assistant/hassio-build/tree/master/builder
+
\ No newline at end of file
diff --git a/source/developers/hassio/addon_repository.markdown b/source/developers/hassio/addon_repository.markdown
index 9a8373fa51..5e5797ff9f 100644
--- a/source/developers/hassio/addon_repository.markdown
+++ b/source/developers/hassio/addon_repository.markdown
@@ -10,28 +10,6 @@ footer: true
redirect_from: /hassio/addon_repository/
---
-An add-on repository can contain one or more add-ons. Each add-on is stored in its own unique folder. To be indentified as a repository, the repository must contain a configuration file.
-
-Check the [Example add-on repository](https://github.com/home-assistant/hassio-addons-example) for further details.
-
-## {% linkable_title Installing a repository %}
-
-A user can add a repository by going to the Hass.io panel in Home Assistant, clicking on the store icon in the top right, copy/paste the URL of your repostory into the repository textarea and click on **Save**.
-
-## {% linkable_title Repository configuration %}
-
-Each repository is required to contain `repository.json` at the root in the git repository.
-
-```json
-{
- "name": "Name of repository",
- "url": "http://www.example/addons",
- "maintainer": "HomeAssistant Team "
-}
-```
-
-| Key | Required | Description |
-| --- | -------- | ----------- |
-| name | yes | Name of the repository
-| url | no | Homepage of the repository. Here you can explain the various add-ons.
-| maintainer | no | Contact info of the maintainer.
+
\ No newline at end of file
diff --git a/source/developers/hassio/addon_testing.markdown b/source/developers/hassio/addon_testing.markdown
index f2f562f443..8c8eaa50cc 100644
--- a/source/developers/hassio/addon_testing.markdown
+++ b/source/developers/hassio/addon_testing.markdown
@@ -10,28 +10,6 @@ footer: true
redirect_from: /hassio/addon_testing/
---
-The fastest way to develop add-ons is by adding them to your local add-on repository. To access your local add-on repository, install either the [Samba add-on] or [SSH add-on].
-
-Right now add-ons will work with images that are stored on Docker Hub (using `image` from add-on config). Without `image` inside local add-ons repository it to be built on the device.
-
-## {% linkable_title Local build %}
-
-You can build and try the addon on your developer machine also. Move all addon stuff into a temp folder. If you use `FROM $BUILD_FROM` you need set a base image with build args. Normally you can use follow base images:
-
-- armhf: `homeassistant/armhf-base:latest`
-- aarch64: `homeassistant/aarch64-base:latest`
-- amd64: `homeassistant/amd64-base:latest`
-- i386: `homeassistant/i386-base:latest`
-
-Use `docker` to build the test addon: `docker build --build-arg BUILD_FROM="homeassistant/amd64-base:latest" -t local/my-test-addon .`
-
-## {% linkable_title Local run %}
-
-Create a new folder for data and add a test _options.json_ file. After that you can run your add-on with: `docker run --rm -v /tmp/my_test_data:/data -p PORT_STUFF_IF_NEEDED local/my-test-addon`
-
-## {% linkable_title Logs %}
-
-All stdout and stderr are redirected to the Docker logs. The logs can be fetched from the add-on page inside the Hass.io panel in Home Assistant.
-
-[Samba add-on]: /addons/samba/
-[SSH add-on]: /addons/ssh/
+
\ No newline at end of file
diff --git a/source/developers/hassio/addon_tutorial.markdown b/source/developers/hassio/addon_tutorial.markdown
index 0a30b2a60d..cca2f3a2f7 100644
--- a/source/developers/hassio/addon_tutorial.markdown
+++ b/source/developers/hassio/addon_tutorial.markdown
@@ -10,199 +10,6 @@ footer: true
redirect_from: /hassio/addon_tutorial/
---
-So you've got Home Assistant going and you've been enjoying the built-in add-ons but you're missing this one application. Time to make your own add-on! In Hass.io 0.24 we introduced the option to have local add-ons be build on your device. This is great for developing new add-ons locally.
-
-To get started with developing add-ons, we first need access to where Hass.io looks for local add-ons. For this you can use the Samba add-on or the SSH add-on.
-
-For Samba, once you have enabled and started it, your Hass.io instance will show up in your local network tab and share a folder called "addons". This is the folder to store your custom add-ons.
-
-If you are on macOS and the folder is not showing up automatically, go to Finder and press CMD+K then enter 'smb://hassio.local'
-
-
-
-With Samba add-on enabled, you can browse to your Hass.io server over the local network. It will contain an addons folder to store your local add-ons.
-
-
-For SSH, you will have to install it. Before you can start it, you will have to have a private/public key pair and store your public key in the add-on config ([see docs for more info][ssh]). Once started, you can SSH to Hass.io and store your custom add-ons in "/addons".
-
-
-
-Once you SSH into your Hass.io box, you have access to your add-ons in "/addons".
-
-
-Once you have located your add-on directory, it's time to get started!
-
-[ssh]: /addons/ssh/
-
-## {% linkable_title Step 1: The basics %}
-
- - Create a new directory called `hello_world`
- - Inside that directory create three files.
-
-`Dockerfile`:
-```
-ARG BUILD_FROM
-FROM $BUILD_FROM
-
-ENV LANG C.UTF-8
-
-# Copy data for add-on
-COPY run.sh /
-RUN chmod a+x /run.sh
-
-CMD [ "/run.sh" ]
-```
-
-`config.json`:
-```json
-{
- "name": "Hello world",
- "version": "1",
- "slug": "hello_world",
- "description": "My first real add-on!",
- "startup": "before",
- "boot": "auto",
- "options": {},
- "schema": {}
-}
-```
-
-`run.sh`:
-```bash
-echo Hello world!
-```
-
-## {% linkable_title Step 2: Installing and testing your add-on %}
-
-Now comes the fun part, time to open the Hass.io UI and install and run your add-on.
-
- - Open the Home Assistant frontend
- - Go to the Hass.io panel
- - On the top right click the shopping basket to go to the add-on store.
-
-
-
-From the Hass.io main panel open the add-on store.
-
-
- - On the top right click the refresh button
- - You should now see a new card called "Local" that lists your add-on!
-
-
-
-The Hass.io add-on store will list all available local add-ons.
-
-
- - Click on your add-on to go to the add-on details page.
- - Install your add-on
- - Start your add-on
- - Refresh the logs of your add-on, you should now see "Hello world!" in your logs.
-
-
-
-The add-on will print Hello world to the logs and then quit.
-
-
-### {% linkable_title I don't see my add-on?! %}
-
-Oops! You clicked refresh in the store and your add-on didn't show up. Or maybe you just updated an option, clicked refresh and saw your add-on disappear.
-
-When this happens, it means that your `config.json` is invalid. It's either invalid JSON or one of the specified options is incorrect. To see what went wrong, go to the Hass.io panel and in the supervisor card click on "View logs". This should bring you to a page with the logs of the supervisor. Scroll to the bottom and you should be able to find the validation error.
-
-Once you fixed the error, go to the add-on store and click refresh again.
-
-## {% linkable_title Step 3: Hosting a server %}
-
-Until now we've been able to do some basic stuff, but it's not very useful yet. So let's take it one step further and host a server that we expose on a port. For this we're going to use the built-in HTTP server that comes with Python 3.
-
-To do this, we will need to update our files as follows:
-
- - `Dockerfile`: Install Python 3
- - `config.json`: Make the port from the container available on the host
- - `run.sh`: Run the Python 3 command to start the HTTP server
-
-Add to your `Dockerfile` before `RUN`:
-
-```
-# Install requirements for add-on
-RUN apk add --no-cache python3
-
-# Python 3 HTTP Server serves the current working dir
-# So let's set it to our add-on persistent data directory.
-WORKDIR /data
-```
-
-Add "ports" to `config.json`. This will make TCP on port 8000 inside the container available on the host on port 8000.
-
-```json
-{
- "name": "Hello world",
- "version": "0.2",
- "slug": "hello_world",
- "description": "My first real add-on!",
- "startup": "before",
- "boot": "auto",
- "options": {},
- "schema": {},
- "ports": {
- "8000/tcp": 8000
- }
-}
-```
-
-Update `run.sh` to start the Python 3 server:
-
-```
-python3 -m http.server
-```
-
-## {% linkable_title Step 4: Installing the update %}
-
-Since we updated the version number in our `config.json`, Home Assistant will show an update button when looking at the add-on details. You might have to refresh your browser or click the refresh button in the add-on store for it to show up. If you did not update the version number, you can also uninstall and install the add-on again. After installing the add-on again, make sure you start it.
-
-Now navigate to [http://hassio.local:8000](http://hassio.local:8000) to see our server in action!
-
-
-
-The Python 3 server will allow you to browse the /data folder.
-
-
-## {% linkable_title Bonus: Working with add-on options %}
-
-In the screenshot you've probably seen that our server only served up 1 file: `options.json`. This file contains the user configuration for this add-on. Because we specified an empty "config" and "schema" in our `config.json`, the file is currently empty.
-
-Let's see if we can get some data into that file!
-
-To do this, we need to specify the default options and a schema for the user to change the options.
-
-Change the options and schema entries in your `config.json` with the following:
-
-```json
-{
- …
-
- "options": {
- "beer": true,
- "wine": true,
- "liquor": false,
- "name": "world",
- "year": 2017
- },
- "schema": {
- "beer": "bool",
- "wine": "bool",
- "liquor": "bool",
- "name": "str",
- "year": "int"
- },
-
- …
-}
-```
-
-Refresh the add-on store and re-install your add-on. You will now see the options available in the add-on config screen. When you now go back to our Python 3 server and download `options.json`, you'll see the options you set.
-
- - [Learn more about the available schema options.](/hassio/addon_config/#options--schema)
- - [See how options.json can be used inside `run.sh`](https://github.com/home-assistant/hassio-addons/blob/master/mosquitto/run.sh#L4-L6)
-
-### [Next step: Add-on config reference »](/developers/hassio/addon_config/)
+
\ No newline at end of file
diff --git a/source/developers/hassio/architecture.markdown b/source/developers/hassio/architecture.markdown
index 173e3657ae..5b3a12f53c 100644
--- a/source/developers/hassio/architecture.markdown
+++ b/source/developers/hassio/architecture.markdown
@@ -10,30 +10,6 @@ footer: true
redirect_from: /hassio/architecture/
---
-
-
- Architecture overview of Hass.io
-
-
-### {% linkable_title Host Control (HC) %}
-
-This is a daemon running on the host machine that allows the supervisor to control certain aspects of the host OS:
-
- - Power cycle (restart, turn off)
- - Manage network settings
- - Local updates
-
-### {% linkable_title Host %}
-
-Our pre-build images are based on [ResinOS]. Any Linux machine can be turned into a Hass.io host by running [the installer][linux].
-
-### {% linkable_title Supervisor %}
-
-The supervisor offers an API to manage the host and running the Docker containers.
-
-### {% linkable_title Configuration panel %}
-
-The configuration panel lives inside the supervisor but is accessible via the Home Assistant user interface. The configuration panel allows the user to manage the installation.
-
-[ResinOS]: https://resinos.io/
-[linux]: /hassio/installation/#alternative-install-on-generic-linux-server
+
\ No newline at end of file
diff --git a/source/developers/hassio/debugging.markdown b/source/developers/hassio/debugging.markdown
index 8dde1fbaa8..be66c18e37 100644
--- a/source/developers/hassio/debugging.markdown
+++ b/source/developers/hassio/debugging.markdown
@@ -10,46 +10,6 @@ footer: true
redirect_from: /hassio/debugging/
---
-
-This section is not for users. Use the [SSH add-on] to SSH into Hass.io. This is for developers of Hass.io. Do not ask for support if you are using these options.
-
-
-[SSH add-on]: /addons/ssh/
-
-The following debug tips and tricks are for people who are running the Hass.io image and are working on the base image. If you use the generic Linux installer script, you should be able to access your host and logs as per your host.
-
-## {% linkable_title SSH access to the host %}
-
-Create an `authorized_keys` file containing your public key, and place it in the root of the boot partition of your SD card. Once the device is booted, you can access your device as root over SSH on port 22222.
-
-Windows instructions how to generate and use private/public keys with Putty are [here][windows-keys]. Instead of the droplet instructions, add the public key as per above instructions.
-
-Alternative instructions, for Mac, Windows and Linux can be found [here](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#platform-mac).
-
-Follow steps 1-4 under 'Generating a new SSH key' (The other sections are not applicable to Hass.io and can be ignored.)
-
-Step 3 in the link above, shows the path to the private key file `id_rsa` for your chosen operating system. Your public key, `id_rsa.pub`, is saved in the same folder. Next, select all text from text box "Public key for pasting into OpenSSH authorized_keys file" and save it to the root of your SD card as `authorized_keys`.
-
-
-Make sure when you are copying the public key to the root of the /resin-boot partition of the SD card that you rename the file correctly to `authorized_keys` with no `.pub` file extension.
-
-
-You should then be able to SSH into your Hass.io device. On mac/linux, use:
-```
-ssh root@hassio.local -p 22222
-```
-
-## {% linkable_title Checking the logs %}
-
-```bash
-# Logs from the supervisor service on the Host OS
-journalctl -f -u resin-supervisor.service
-
-# Hass.io supervisor logs
-docker logs resin_supervisor
-
-# Home Assistant logs
-docker logs homeassistant
-```
-
-[windows-keys]: https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-putty-on-digitalocean-droplets-windows-users
+
\ No newline at end of file
diff --git a/source/developers/helpers.markdown b/source/developers/helpers.markdown
index 4b9e7f59b9..8916b56c68 100644
--- a/source/developers/helpers.markdown
+++ b/source/developers/helpers.markdown
@@ -9,18 +9,6 @@ sharing: true
footer: true
---
-There are a bunch of online services which can help you if you are developing for Home Assistant or maintaining components. Some of these are directly connected to Pull Requests and the repositories, while others publish details and updates on our [Discord chat server][discord-devs].
-
-- [Coveralls][coveralls]
-- [Travis CI][travis-ci]
-- [gemnasium][gemnasium]
-- [Requires.io][requires-io]
-- [Pivotal Tracker][pivotal]
-
-[coveralls]: https://coveralls.io/github/home-assistant/home-assistant
-[travis-ci]: https://travis-ci.org/home-assistant/home-assistant
-[gemnasium]: https://gemnasium.com/github.com/home-assistant/home-assistant
-[requires-io]: https://requires.io/github/home-assistant/home-assistant/requirements/?branch=dev
-[pivotal]: https://www.pivotaltracker.com/n/projects/1250084
-
-[discord-devs]: https://discord.gg/8X8DTH4
+
\ No newline at end of file
diff --git a/source/developers/index.markdown b/source/developers/index.markdown
index c801866e6a..3248e7192b 100644
--- a/source/developers/index.markdown
+++ b/source/developers/index.markdown
@@ -10,17 +10,6 @@ footer: true
og_image: /images/architecture/component_interaction.png
---
-Welcome to the Home Assistant development documentation. This is the place to learn all about how Home Assistant works and how you can extend it with support for your devices and services!
-
-
-
-Diagram showing interaction between components and the Home Assistant core.
-
-
-The best way to familiarize yourself with Home Assistant is to watch the PyCon 2016 talk about Home Assistant and read through the [Python API docs].
-
-
-
-
-
-[Python API docs]: https://dev-docs.home-assistant.io
+
\ No newline at end of file
diff --git a/source/developers/intent/conversation.markdown b/source/developers/intent/conversation.markdown
index 38d02fe337..ea4cad2a45 100644
--- a/source/developers/intent/conversation.markdown
+++ b/source/developers/intent/conversation.markdown
@@ -9,19 +9,6 @@ sharing: true
footer: true
---
-The conversation component handles incoming commands from the frontend and converts them to intents. It does this based on registered sentences.
-
-As a component, you can register sentences with the conversation component to allow it to be remote controlled. Refer to named slots by putting the slot name between curly braces: `{item}`.
-
-Example code:
-
-```python
-@asyncio.coroutine
-def async_setup(hass, config):
- hass.components.conversation.async_register('MyCoolIntent', [
- 'I think that {object} is very cool',
- 'Nothing is cooler than {object}'
- ])
-```
-
-If a sentence like "I think that beer is very cool" comes in, the conversation component will generate an intent of type `MyCoolIntent` and with 1 slot, named `object` and value `beer`.
+
\ No newline at end of file
diff --git a/source/developers/intent/firing.markdown b/source/developers/intent/firing.markdown
index 17e80678b4..b8e10eff20 100644
--- a/source/developers/intent/firing.markdown
+++ b/source/developers/intent/firing.markdown
@@ -9,51 +9,6 @@ sharing: true
footer: true
---
-When you fire an intent, you will get a response back or an error will be raised. It is up to the component to return the result to the user.
-
-Example code to handle an intent in Home Assistant.
-
-```python
-from homeassistant.helpers import intent
-
-intent_type = 'TurnLightOn'
-slots = {
- 'entity': { 'value': 'Kitchen' }
-}
-
-try:
- intent_response = yield from intent.async_handle(
- hass, 'example_component', intent_type, slots
- )
-
-except intent.UnknownIntent as err:
- _LOGGER.warning('Received unknown intent %s', intent_type)
-
-except intent.InvalidSlotInfo as err:
- _LOGGER.error('Received invalid slot data: %s', err)
-
-except intent.IntentError:
- _LOGGER.exception('Error handling request for %s', intent_type)
-```
-
-The intent response is an instance of `homeassistant.helpers.intent.IntentResponse`.
-
-| Name | Type | Description |
-| ---- | ---- | ----------- |
-| `intent` | Intent | Instance of intent that triggered response. |
-| `speech` | Dictionary | Speech responses. Each key is a type. Allowed types are `plain` and `ssml`. |
-| `card` | Dictionary | Card responses. Each key is a type. |
-
-Speech dictionary values:
-
-| Name | Type | Description |
-| ---- | ---- | ----------- |
-| `speech` | String | The text to say
-| `extra_data` | Any | Extra information related to this speech.
-
-Card dictionary values:
-
-| Name | Type | Description |
-| ---- | ---- | ----------- |
-| `title` | String | The title of the card
-| `content` | Any | The content of the card
+
\ No newline at end of file
diff --git a/source/developers/intent/handling.markdown b/source/developers/intent/handling.markdown
index c341f6ef17..040d2d01dc 100644
--- a/source/developers/intent/handling.markdown
+++ b/source/developers/intent/handling.markdown
@@ -9,41 +9,6 @@ sharing: true
footer: true
---
-Any component can register to handle intents. This allows a single component to handle intents fired from multiple voice assistants.
-
-A component has to register an intent handler for each type that it wants to handle. Intent handlers have to extend `homeassistant.helpers.intent.IntentHandler`
-
-```python
-import asyncio
-from homeassistant.helpers import intent
-
-DATA_KEY = 'example_key'
-
-@asyncio.coroutine
-def async_setup(hass, config):
- hass.data[DATA_KEY] = 0
- intent.async_register(hass, CountInvocationIntent())
-
-
-class CountInvocationIntent(intent.IntentHandler):
- """Handle CountInvocationIntent intents."""
-
- # Type of intent to handle
- intent_type = 'CountInvocationIntent'
-
- # Optional. A validation schema for slots
- # slot_schema = {
- # 'item': cv.string
- # }
-
- @asyncio.coroutine
- def async_handle(self, intent_obj):
- """Handle the intent."""
- intent_obj.hass.data[DATA_KEY] += 1
-
- response = intent_obj.create_response()
- response.async_set_speech(
- "This intent has been invoked {} times".format(
- intent_obj.hass.data[DATA_KEY]))
- return response
-```
+
\ No newline at end of file
diff --git a/source/developers/intent/index.markdown b/source/developers/intent/index.markdown
index a454deecbc..a00395d8a8 100644
--- a/source/developers/intent/index.markdown
+++ b/source/developers/intent/index.markdown
@@ -9,29 +9,6 @@ sharing: true
footer: true
---
-An intent is a description of a user's intention. Intents are generated by user actions, like asking Amazon Echo to turn on a light.
-
-
-
-Architectural overview of intents in Home Assistant
-
-
-Intents are fired by components that receive them from external sources/services. Conversation, Alexa, API.ai and Snips are currently sourcing intents.
-
-Any component can handle intents. This makes it very easy for developers to integrate with all voice assistants at once.
-
-Intents are implemented using the `homeassistant.helpers.intent.Intent` class. It contains the following properties:
-
-| Name | Type | Description |
-| ---- | ---- | ----------- |
-| `hass` | Home Assistant | The Home Assistant instance that fired the intent.
-| `platform` | string | The platform that fired the intent
-| `intent_type` | string | The type (name) of the intent
-| `slots` | dictionary | Contains the slot values keyed by slot name.
-| `text_input` | string | Optional. The raw text input that initiated the intent.
-
-Description of the slots dictionary values.
-
-| Name | Type | Description |
-| ---- | ---- | ----------- |
-| Value | anything | Value of the slot.
+
\ No newline at end of file
diff --git a/source/developers/internationalization/backend_localization.markdown b/source/developers/internationalization/backend_localization.markdown
index f50d797045..2c2413fc21 100644
--- a/source/developers/internationalization/backend_localization.markdown
+++ b/source/developers/internationalization/backend_localization.markdown
@@ -10,42 +10,6 @@ footer: true
ha_release: 0.64
---
-## {% linkable_title Translation Strings %}
-Platform translation strings are stored as JSON in the [home-assistant](https://github.com/home-assistant/home-assistant) repository. These files must be located adjacent to the component/platform they belong to. Components must have their own directory, and the file is simply named `strings.json` in that directory. For platforms, they are named `strings..json` in the platform directory. This file will contain the different strings that will be translatable.
-
-In order to test changes to translation files, the translation strings must be compiled into Home Assistant’s translation directories by running the following script:
-
-```bash
-$ script/translations_develop
-```
-
-After the pull request with the strings file is merged into the `dev` branch, the strings will be automatically uploaded to Lokalise, where contributors can submit translations. The translated strings in Lokalise will be periodically pulled in to the home-assistant repository.
-
-## {% linkable_title States Localization %}
-The first step when localizing platform states is to ensure that the states defined in the actual platform code are defined in `snake_case`. The states should not contain capital letters or spaces. Next, the strings file needs to be created. The states should exist under the `state` key, and map the backend state keys to their English translations. [The season sensor localization](https://github.com/home-assistant/home-assistant/pull/12453/commits/bb2f328ce10c3867990e34a88da64e2f8dc7a5c4) is a good example.
-
-## {% linkable_title Configuration Flow Localization %}
-The translation strings for the configuration flow handler are defined under the `config` key. An example strings file below describes the different supported keys:
-
-```json
-{
- "config": {
- "title": "This title is shown in the integrations list",
- "step": {
- "init": {
- "title": "The user visible title of the `init` step.",
- "description": "Markdown that is shown with the step.",
- "data": {
- "api_key": "The label for the `api_key` input field"
- }
- }
- },
- "error": {
- "invalid_api_key": "This message will be displayed if `invalid_api_key` is returned as a flow error."
- },
- "abort": {
- "stale_api_key": "This message will be displayed if `stale_api_key` is returned as the abort reason."
- }
- }
-}
-```
+
\ No newline at end of file
diff --git a/source/developers/internationalization/custom_component_localization.markdown b/source/developers/internationalization/custom_component_localization.markdown
index b7d12664d4..d0c6ecdc2f 100644
--- a/source/developers/internationalization/custom_component_localization.markdown
+++ b/source/developers/internationalization/custom_component_localization.markdown
@@ -10,11 +10,6 @@ footer: true
ha_release: 0.64
---
-## {% linkable_title Translation Strings %}
-Unlike localized strings merged in the home-assistant repository, custom components cannot take advantage of Lokalise for user submitted translations. However, custom component authors can still include translation with their components. These will be read from the `.translations` directory, adjacent to the component source file. They are named `..json`, unless the custom component exists in its own directory, in which case the file is simply named `.json` in the `.translations` directory.
-
-These files follow the same formatting as [backend translation string files](/developers/internationalization/backend_localization/), but a copy will exist for each translated language.
-
-The language codes follow the [BCP47](https://tools.ietf.org/html/bcp47) format. The [frontend translation files](https://github.com/home-assistant/home-assistant-polymer/tree/master/translations) can also be referred to if you are unsure of the correct language code to use.
-
-The frontend will serve these files after Home Assistant is restarted.
+
\ No newline at end of file
diff --git a/source/developers/internationalization/index.markdown b/source/developers/internationalization/index.markdown
index 109502fe45..ed93383a94 100644
--- a/source/developers/internationalization/index.markdown
+++ b/source/developers/internationalization/index.markdown
@@ -10,10 +10,6 @@ footer: true
ha_release: 0.64
---
-The Home Assistant internationalization project includes preparing platforms and the frontend for localization, as well as the actual translation of localized strings.
-
-Some compmonents and platforms will have strings that need to be localized specifically for that platform. These strings are managed in the core [home-assistant](https://github.com/home-assistant/home-assistant) repository. The Home Assistant backend will serve strings to the clients based on the loaded components in the running instance.
-
-There are also localizable strings that exist only on the frontend. These strings are managed in the [home-assistant-polymer](https://github.com/home-assistant/home-assistant-polymer) repository. These strings are stored with the frontend and don’t depend on the backend configuration.
-
-Our strings are translated by the community using the online translation tool [Lokalise](https://lokalise.co/).
+
\ No newline at end of file
diff --git a/source/developers/internationalization/translation.markdown b/source/developers/internationalization/translation.markdown
index 334a68e6aa..411e5a09cb 100644
--- a/source/developers/internationalization/translation.markdown
+++ b/source/developers/internationalization/translation.markdown
@@ -11,43 +11,6 @@ ha_release: 0.57
redirect_from: /developers/frontend_translation/
---
-## {% linkable_title How to start %}
-Translations for Home Assistant are managed through Lokalise, an online translation management tool. Our translations are split between two projects, a backend project for platform-specific translations, and a frontend project for UI translations. Click the links below to join both projects! Even if your language is completely translated, extra proofreading is a big help! Please feel free to review the existing translations, and vote for alternatives that might be more appropriate.
-
-- [Join the frontend translation team](https://lokalise.co/signup/3420425759f6d6d241f598.13594006/all/)
-- [Join the backend translation team](https://lokalise.co/signup/130246255a974bd3b5e8a1.51616605/all/)
-
-For more information about the translation workflow, please see the [Lokalise translation workflow documents](https://docs.lokalise.co/category/iOzEuQPS53-for-team-leads-and-translators).
-
-
-The translation of the Home Assistant frontend is still a work in progress. More phrases will be available for translation soon.
-
-
-## {% linkable_title Translation placeholders %}
-
-Some translation strings will contain special placeholders that will be replaced later. Placeholders shown in square brackets `[]` are [Lokalise key references](https://docs.lokalise.co/article/KO5SZWLLsy-key-referencing). These are primarily used to link translation strings that will be duplicated. Different languages may not have the same duplicates as English, and are welcome to link duplicate translations that are not linked in English. Placeholders shown in curly brackets `{}` are [translation arguments](https://formatjs.io/guides/message-syntax/) that will be replaced with a live value when Home Assistant is running. Any translation argument placeholders present in the original string must be included in the translated string. These may include special syntax for defining plurals or other replacement rules. The linked format.js guide explains the syntax for adding plural definitions and other rules.
-
-## {% linkable_title Rules %}
-1. Only native speakers should submit translations.
-2. Stick to [Material Design guidelines](https://material.io/guidelines/style/writing.html).
-3. Don't translate or change proper nouns like `Home Assistant`, `Hass.io` or `Hue`.
-4. For a region specific translation, keys that will be the same as the base translation should be filled with `[VOID]`. These will be replaced during our translation build process.
-5. Translations under the `state_badge` keys will be used for the notification badge display. These translations should be short enough to fit in the badge label without overflowing. This can be tested in the Home Assistant UI either by editing the label text with your browsers development tools, or by using the States developer tool in the Home Assistant UI. In the UI, enter a new entity ID (`device_tracker.test`), and enter the text you want to test in state.
-6. If text will be duplicated across different translation keys, make use of the Lokalise key reference feature where possible. The base translation provides examples of this underneath the `states` translations. Please see the [Lokalise key referencing](https://docs.lokalise.co/article/KO5SZWLLsy-key-referencing) documentation for more details.
-
-## {% linkable_title Adding a new language %}
-If your language is not listed you can request it at [GitHub](https://github.com/home-assistant/home-assistant-polymer/issues/new). Please provide both the English name and the native name for your language. For example:
-```
-English Name: German
-Native Name: Deutsch
-```
-
-
-Region specific translations (`en-US`, `fr-CA`) will only be included if translations for that region need to differ from the base language translation.
-
-
-### {% linkable_title Maintainer steps to add a new language %}
-1. Language tags have to follow [BCP 47](https://tools.ietf.org/html/bcp47). A list of most language tags can be found here: [IANA sutbtag registry](http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry). Examples: `fr`, `fr-CA`, `zh-Hans`. Only include the country code if country specific overrides are being included, and the base language is already translated.
-2. Add the language tag and native name in `src/translations/translationMetadata.json`. Examples: "Français", "Français (CA)"
-3. Add the new language in Lokalize.
-Note: Sometimes you have to change the tag in Lokalise (Language -> Language settings -> custom ISO code).
+
\ No newline at end of file
diff --git a/source/developers/maintenance.markdown b/source/developers/maintenance.markdown
index 4995e7de51..d36bb625a0 100644
--- a/source/developers/maintenance.markdown
+++ b/source/developers/maintenance.markdown
@@ -9,44 +9,6 @@ sharing: true
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`.
-
-```bash
-$ find homeassistant -name "*.py" -exec file {} \; | grep BOM
-$ find homeassistant -name "*.py" -exec file {} \; | grep CRLF
-```
-
-To fix the line separator, use `dos2unix` or `sed`.
-
-```bash
-$ dos2unix homeassistant/components/notify/kodi.py
-```
-
-### {% linkable_title File permissions %}
-
-Most files don't need to the be executable. `0644` is fine.
-
-### {% linkable_title Dependencies %}
-
-A lot of components and platforms depends on third-party Python modules. The dependencies which are stored in the `requirements_*.txt` files are tracked by [gemnasium](https://gemnasium.com/github.com/home-assistant/home-assistant) and [Requires.io](https://requires.io/github/home-assistant/home-assistant/requirements/?branch=dev).
-
-If you update the requirements of a component/platform through the `REQUIREMENTS = ['modules-xyz==0.3']` entry, run the provided script to update the `requirements_*.txt` file(s).
-
-```bash
-$ 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.
-
+
\ No newline at end of file
diff --git a/source/developers/multiple_instances.markdown b/source/developers/multiple_instances.markdown
index f366abe19a..6669c7016d 100644
--- a/source/developers/multiple_instances.markdown
+++ b/source/developers/multiple_instances.markdown
@@ -9,37 +9,6 @@ sharing: true
footer: true
---
-# {% linkable_title This has been deprecated and is no longer supported. %}
-
-Home Assistant supports running multiple synchronized instances using a master-slave model. Whenever `events.fire` or `states.set` is called on the slave it will forward it to the master. The master will replicate all events and changed states to its slaves.
-
-
-
-
-
- Overview of the Home Assistant architecture for multiple devices.
-
-
-A slave instance can be started with the following code and has the same support for components as a master instance.
-
-```python
-import homeassistant.remote as remote
-import homeassistant.bootstrap as bootstrap
-
-# Location of the Master API: host, password, port.
-# Password and port are optional.
-remote_api = remote.API("127.0.0.1", "password", 8124)
-
-# Initialize slave
-hass = remote.HomeAssistant(remote_api)
-
-# To add an interface to the slave on localhost:8123
-bootstrap.setup_component(hass, 'frontend')
-
-hass.start()
-hass.block_till_stopped()
-```
-
-
-Because each slave maintains its own Service Registry it is possible to have multiple slaves respond to one service call.
-
+
\ No newline at end of file
diff --git a/source/developers/platform_example_light.markdown b/source/developers/platform_example_light.markdown
index 8a11eec73f..2c067aed37 100644
--- a/source/developers/platform_example_light.markdown
+++ b/source/developers/platform_example_light.markdown
@@ -9,116 +9,6 @@ sharing: true
footer: true
---
-This example is for adding support for the imaginary Awesome Lights. It shows the different best practices for developing a platform.
-
-Similar to Example Sensor Platform, copy the code below, and create it as a file in `/custom_components/light/awesomelights.py`.
-
-Add the following to your configuration.yaml:
-
-```yaml
-light:
- - platform: awesomelights
- host: HOST_HERE
- username: USERNAME_HERE
- password: PASSWORD_HERE_OR_secrets.yaml
-```
-
-Note the `platform` name matches the filename for the source code.
-
-```python
-import logging
-
-import voluptuous as vol
-
-# Import the device class from the component that you want to support
-from homeassistant.components.light import ATTR_BRIGHTNESS, Light, PLATFORM_SCHEMA
-from homeassistant.const import CONF_HOST, CONF_USERNAME, CONF_PASSWORD
-import homeassistant.helpers.config_validation as cv
-
-# Home Assistant depends on 3rd party packages for API specific code.
-REQUIREMENTS = ['awesome_lights==1.2.3']
-
-_LOGGER = logging.getLogger(__name__)
-
-# Validation of the user's configuration
-PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
- vol.Required(CONF_HOST): cv.string,
- vol.Optional(CONF_USERNAME, default='admin'): cv.string,
- vol.Optional(CONF_PASSWORD): cv.string,
-})
-
-
-def setup_platform(hass, config, add_devices, discovery_info=None):
- """Setup the Awesome Light platform."""
- import awesomelights
-
- # Assign configuration variables. The configuration check takes care they are
- # present.
- host = config.get(CONF_HOST)
- username = config.get(CONF_USERNAME)
- password = config.get(CONF_PASSWORD)
-
- # Setup connection with devices/cloud
- hub = awesomelights.Hub(host, username, password)
-
- # Verify that passed in configuration works
- if not hub.is_valid_login():
- _LOGGER.error("Could not connect to AwesomeLight hub")
- return False
-
- # Add devices
- add_devices(AwesomeLight(light) for light in hub.lights())
-
-
-
-class AwesomeLight(Light):
- """Representation of an Awesome Light."""
-
- def __init__(self, light):
- """Initialize an AwesomeLight."""
- self._light = light
- self._name = light.name
- self._state = None
- self._brightness = None
-
- @property
- def name(self):
- """Return the display name of this light."""
- return self._name
-
- @property
- def brightness(self):
- """Return the brightness of the light.
-
- This method is optional. Removing it indicates to Home Assistant
- that brightness is not supported for this light.
- """
- return self._brightness
-
- @property
- def is_on(self):
- """Return true if light is on."""
- return self._state
-
- def turn_on(self, **kwargs):
- """Instruct the light to turn on.
-
- You can skip the brightness part if your light does not support
- brightness control.
- """
- self._light.brightness = kwargs.get(ATTR_BRIGHTNESS, 255)
- self._light.turn_on()
-
- def turn_off(self, **kwargs):
- """Instruct the light to turn off."""
- self._light.turn_off()
-
- def update(self):
- """Fetch new state data for this light.
-
- This is the only method that should fetch new data for Home Assistant.
- """
- self._light.update()
- self._state = self._light.is_on()
- self._brightness = self._light.brightness
-```
+
\ No newline at end of file
diff --git a/source/developers/platform_example_sensor.markdown b/source/developers/platform_example_sensor.markdown
index 166b307117..110ab63137 100644
--- a/source/developers/platform_example_sensor.markdown
+++ b/source/developers/platform_example_sensor.markdown
@@ -9,58 +9,6 @@ sharing: true
footer: true
---
-This is a minimum implementation of a platform for the sensor component.
-
-### {% linkable_title Installation %}
-
-Copy the code below and create it as a file in `/custom_components/sensor/example.py`.
-
-Add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- platform: example
-```
-
-### {% linkable_title Code %}
-
-```python
-from homeassistant.const import TEMP_CELSIUS
-from homeassistant.helpers.entity import Entity
-
-
-def setup_platform(hass, config, add_devices, discovery_info=None):
- """Setup the sensor platform."""
- add_devices([ExampleSensor()])
-
-
-class ExampleSensor(Entity):
- """Representation of a Sensor."""
-
- def __init__(self):
- """Initialize the sensor."""
- self._state = None
-
- @property
- def name(self):
- """Return the name of the sensor."""
- return 'Example Temperature'
-
- @property
- def state(self):
- """Return the state of the sensor."""
- return self._state
-
- @property
- def unit_of_measurement(self):
- """Return the unit of measurement."""
- return TEMP_CELSIUS
-
- def update(self):
- """Fetch new state data for the sensor.
-
- This is the only method that should fetch new data for Home Assistant.
- """
- self._state = 23
-```
+
\ No newline at end of file
diff --git a/source/developers/python_api.markdown b/source/developers/python_api.markdown
index 818bb8d077..2e3ed1ba29 100644
--- a/source/developers/python_api.markdown
+++ b/source/developers/python_api.markdown
@@ -9,228 +9,6 @@ sharing: true
footer: true
---
-See the [developer documentation][devdocs] for a full overview of the documentation. The rest of this page will contain examples on how to use it.
-
-[devdocs]: https://dev-docs.home-assistant.io/en/master/api/homeassistant.html#module-homeassistant.remote
-
-In the package [`homeassistant.remote`](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/remote.py) a Python API on top of the [HTTP API](/developers/api/) can be found. If you are not using the [`frontend`](/components/frontend/) in your setup then you need to add the [`api` component](/components/api/) to your `configuration.yaml` file to use the Python Remote API.
-
-A simple way to get all current entities is to visit the "Set State" page in the "Developer Tools". For the examples below just choose one from the available entries. Here the sensor `sensor.office_temperature` and the switch `switch.livingroom_pin_2` are used.
-
-First import the module and setup the basics:
-
-```python
-import homeassistant.remote as remote
-
-api = remote.API('127.0.0.1', 'password')
-print(remote.validate_api(api))
-```
-
-### {% linkable_title Get configuration %}
-
-Get the current configuration of a Home Assistant instance:
-
-```python
-import homeassistant.remote as remote
-
-api = remote.API('127.0.0.1', 'password')
-
-print(remote.get_config(api))
-```
-
-### {% linkable_title Get details about services, events, and entitites %}
-
-The output from this is similar to the output you'd find via the frontend, using the [Developer Tools](/docs/tools/dev-tools/).
-
-```python
-import homeassistant.remote as remote
-
-api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
-
-print('-- Available services:')
-services = remote.get_services(api)
-for service in services:
- print(service['services'])
-
-print('\n-- Available events:')
-events = remote.get_event_listeners(api)
-for event in events:
- print(event)
-
-print('\n-- Available entities:')
-entities = remote.get_states(api)
-for entity in entities:
- print(entity)
-```
-
-### {% linkable_title Get the state of an entity %}
-
-To get the details of a single entity, use `get_state`:
-
-```python
-import homeassistant.remote as remote
-
-api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
-office_temp = remote.get_state(api, 'sensor.office_temperature')
-print('{} is {} {}.'.format(
- office_temp.name, office_temp.state,
- office_temp.attributes['unit_of_measurement'])
-)
-```
-
-This outputs the details which are stored for this entity, ie:
-
-```bash
-Office Temperature is 19 °C.
-```
-
-Switches work the same way. The only difference is that both entities have different attributes.
-
-```python
-import homeassistant.remote as remote
-
-api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
-switch_livingroom = remote.get_state(api, 'switch.livingroom_pin_2')
-print('{} is {}.'.format(
- switch_livingroom.name, switch_livingroom.state)
-)
-```
-
-### {% linkable_title Set the state of an entity %}
-
-Of course, it's possible to set the state as well:
-
-```python
-import homeassistant.remote as remote
-from homeassistant.const import STATE_ON
-
-api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
-remote.set_state(api, 'sensor.office_temperature', new_state=123)
-remote.set_state(api, 'switch.livingroom_pin_2', new_state=STATE_ON)
-```
-
-The state will be set to the new values until the next update occurs.
-
-### {% linkable_title Blinking all entities of a domain %}
-
-If you want to turn on all entities of a domain, retrieve the service via `get_services` and act on that:
-
-
-```python
-import time
-import homeassistant.remote as remote
-
-api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
-domain = 'switch'
-
-remote.call_service(api, domain, 'turn_on')
-time.sleep(10)
-remote.call_service(api, domain, 'turn_off')
-```
-
-### {% linkable_title Control a single entity %}
-
-To turn on or off a single switch, pass the ID of the entity:
-
-```python
-import time
-import homeassistant.remote as remote
-
-api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
-domain = 'switch'
-switch_name = 'switch.livingroom_pin_2'
-
-remote.call_service(api, domain, 'turn_on', {'entity_id': '{}'.format(switch_name)})
-time.sleep(5)
-remote.call_service(api, domain, 'turn_off', {'entity_id': '{}'.format(switch_name)})
-```
-
-### {% linkable_title Specify a timeout %}
-
-The default timeout for an API call with `call_service` is 5 seconds. Services
-taking longer than this to return will raise
-`homeassistant.exceptions.HomeAssistantError: Timeout`, unless provided with a
-longer timeout.
-
-```python
-import homeassistant.remote as remote
-
-api = remote.API('host', 'password')
-domain = 'switch'
-
-# Assuming switch.timeout_switch takes 10 seconds to return
-switch_name = 'switch.timeout_switch'
-
-# Raises homeassistant.exceptions.HomeAssistantError: Timeout when talking to
-remote.call_service(api, domain, 'turn_on', {'entity_id': switch_name})
-
-# Runs withous exception
-remote.call_service(api, domain, 'turn_on', {'entity_id': switch_name},
- timeout=11)
-```
-
-### {% linkable_title Send a notification %}
-
-The example uses the Jabber notification platform to send a single message to the given recipient in the `configuration.yaml` file:
-
-```python
-import homeassistant.remote as remote
-
-api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
-domain = 'notify'
-data = {"title":"Test", "message":"A simple test message from HA."}
-
-remote.call_service(api, domain, 'jabber', data)
-```
-
-## {% linkable_title Examples %}
-
-This section contains a couple of sample scripts.
-
-### {% linkable_title List all sensors and their value %}
-
-If you want to see, export or list all sensor states then an easy way to do it, is to get all entities and filter for the one you are looking for.
-
-```python
-import homeassistant.remote as remote
-
-api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
-entities = remote.get_states(api)
-for entity in entities:
- if entity.entity_id.startswith('sensor'):
- data = remote.get_state(api, entity.entity_id)
- print('{}: {}'.format(data.attributes['friendly_name'], data.state))
-```
-
-### {% linkable_title Show difference between `last_changed` and `last_updated` %}
-
-The documentation about the [State Objects](/docs/configuration/state_object/) describes the
-`last_changed` and `last_updated` fields. This example shows how it works in practice.
-
-```python
-import time
-
-from prettytable import PrettyTable
-import homeassistant.remote as remote
-
-api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
-
-ACTIONS = {
- 'Create sensor': [21, 'Test'],
- 'No new sensor value': [21, 'Test'],
- 'New sensor value': [22, 'Test'],
- 'Update attribute': [22, 'Test1'],
-}
-
-output = PrettyTable(['Action', 'Last changed', 'Last updated'])
-
-for key, value in ACTIONS.items():
- remote.set_state(api, 'sensor.test', new_state=value[0],
- attributes={'friendly_name': value[1]})
- data = remote.get_state(api, 'sensor.test')
- output.add_row([key, data.last_changed, data.last_updated])
- time.sleep(2)
-
-print(output)
-```
-
+
\ No newline at end of file
diff --git a/source/developers/releasing.markdown b/source/developers/releasing.markdown
index 5ddce85418..741aa147d6 100644
--- a/source/developers/releasing.markdown
+++ b/source/developers/releasing.markdown
@@ -9,66 +9,6 @@ sharing: true
footer: true
---
-This page describes the steps for publishing a new Home Assistant release. Those steps requires that you don't use forks but work with the repositories themself. The [hass-release](https://github.com/home-assistant/hass-release) script is a helper to do a release.
-
-### {% linkable_title Release preparation (3 days before release) %}
-
-### {% linkable_title GitHub %}
-
-1. Merge `master` into `dev` to make the PR mergeable.
-1. Cut a release branch from `dev`. Example name `release-0-57`.
-1. Create a pull request from the release branch to `master` with the upcoming release number as the title.
-1. Update `homeassistant/const.py` with the correct version number (remove the `dev` tag) and push that commit to release branch.
-
-### {% linkable_title Website %}
-
-1. Merge `current` into `next`
-1. Cut release branch of `next`. For example `release-0-57`.
-1. Open a PR from release branch to `current` with the upcoming release number as the title.
-
-## {% linkable_title Release day %}
-
-From creating the release branch till it has been merged, we tag bugfixes with the milestone for the release (create if doesn't exist).
-
-### {% linkable_title GitHub %}
-
-1. Cherry-pick the milestoned PRs that need to get into the release `python3 -m hassrelease milestone_cherry_pick 0.57`
-1. Run `python3 -m hassrelease release_notes 0.56` for the release notes.
-1. Once the release notes has been generated, issue `python3 -m hassrelease milestone_close 0.56`
-1. Merge pull request (DO NOT SQUASH!). Use `Merge pull request`.
-1. Go to [releases](https://github.com/home-assistant/home-assistant/releases), click `Draft a new release` and tag a new release on the `master` branch. "Tag version" and "Release title" are the version number (`O.x` for major version, `0.x.y` for minor and bug fix releases). Release description is the text from PR. Press "Publish release" to finish the process.
-1. Merge `master` into `dev`.
-1. Update `homeassistant/const.py` with the upcoming version number (including the `dev` tag) and push that commit to the `dev` branch.
-
-### {% linkable_title Website %}
-
-1. Create a blog post in the release branch and base it on the text of the PR in the main repository. Add images, additional text, links, etc. if it adds value. Tag each platform/component in a message to documentation.
-1. Create missing documentation as stubs.
-1. Run `credits_generator`.
-1. Update `_config.yml` with a link to the new release blog post and version number (at the bottom of the file).
-1. Merge `current` into release branch (`$ git checkout release-0-40 && git merge current`) to make the PR mergeable.
-1. Merge pull request (blog post, updated frontpage, and all new documentation) to `current`. DO NOT SQUASH!
-1. Merge `current` into `next`.
-
-### {% linkable_title Docker Hub %}
-
-Tags on Docker hub are automatically created when a release has been created on GitHub.
-
-### {% linkable_title Python Package Index %}
-
-Checkout the `master` branch and run `script/release` to publish the new release on [Python Package Index](https://pypi.python.org).
-
-### {% linkable_title Social media %}
-
-1. Use [hootsuite](https://hootsuite.com/dashboard) to publish a link to the release post on social media.
-
-## {% linkable_title Bugfix Release %}
-
-1. Checkout `master` and update it. `git checkout master && git pull --rebase`
-1. Create a new release branch from `master`. `git checkout -b release-0-56-2`
-1. Cherry-pick the PRs which were milestoned.
-1. Update `homeassistant/const.py` with the correct version number (increment `PATCH_VERSION`) and push that commit to release branch.
-1. Create a pull request from the release branch to `master` with the upcoming release number as the title.
-1. Merge pull request (DO NOT SQUASH!). Use `Merge pull request`.
-1. Go to [releases](https://github.com/home-assistant/home-assistant/releases), click `Draft a new release` and tag a new release on the `master` branch. "Tag version" and "Release title" are the version number (`O.x` for major version, `0.x.y` for minor and bug fix releases). Release description is the text from PR. Press "Publish release" to finish the process.
-1. [Publish](/developers/releasing/#python-package-index) the new release on PyPI.
+
\ No newline at end of file
diff --git a/source/developers/rest_api.markdown b/source/developers/rest_api.markdown
index ec232cac97..83ac65d3b4 100644
--- a/source/developers/rest_api.markdown
+++ b/source/developers/rest_api.markdown
@@ -9,522 +9,6 @@ sharing: true
footer: true
---
-Home Assistant runs a web server accessible on port 8123.
-
-* http://IP_ADDRESS:8123/ is an interface to control Home Assistant.
-* http://IP_ADDRESS:8123/api/ is a Rest API.
-
-The API accepts and returns only JSON encoded objects. All API calls have to be accompanied by the header `X-HA-Access: YOUR_PASSWORD` (YOUR_PASSWORD as specified in your `configuration.yaml` file in the [`http:` section](/components/http/)).
-
-If you are not using the [`frontend`](/components/frontend/) in your setup then you need to add the [`api` component](/components/api/) to your `configuration.yaml` file.
-
-There are multiple ways to consume the Home Assistant Rest API. One is with `curl`:
-
-```bash
-curl -X GET \
- -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" \
- http://IP_ADDRESS:8123/ENDPOINT
-```
-
-Another option is to use Python and the [Requests](http://docs.python-requests.org/en/latest/) module. =
-
-```python
-from requests import get
-
-url = 'http://localhost:8123/ENDPOINT'
-headers = {'x-ha-access': 'YOUR_PASSWORD',
- 'content-type': 'application/json'}
-
-response = get(url, headers=headers)
-print(response.text)
-```
-
-
-You can append `?api_password=YOUR_PASSWORD` to any URL to log in automatically.
-
-
-Successful calls will return status code 200 or 201. Other status codes that can return are:
-
-- 400 (Bad Request)
-- 401 (Unauthorized)
-- 404 (Not Found)
-- 405 (Method not allowed)
-
-### {% linkable_title Actions %}
-
-The API supports the following actions:
-
-#### {% linkable_title GET /api/ %}
-
-Returns a message if the API is up and running.
-
-```json
-{
- "message": "API running."
-}
-```
-
-Sample `curl` command:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" http://localhost:8123/api/
-```
-
-#### {% linkable_title GET /api/config %}
-
-Returns the current configuration as JSON.
-
-```json
-{
- "components":[
- "sensor.cpuspeed",
- "frontend",
- "config.core",
- "http",
- "map",
- "api",
- "sun",
- "config",
- "discovery",
- "conversation",
- "recorder",
- "group",
- "sensor",
- "websocket_api",
- "automation",
- "config.automation",
- "config.customize"
- ],
- "config_dir":"/home/ha/.homeassistant",
- "elevation":510,
- "latitude":45.8781529,
- "location_name":"Home",
- "longitude":8.458853651,
- "time_zone":"Europe/Zurich",
- "unit_system":{
- "length":"km",
- "mass":"g",
- "temperature":"\u00b0C",
- "volume":"L"
- },
- "version":"0.56.2",
- "whitelist_external_dirs":[
- "/home/ha/.homeassistant/www",
- "/home/ha/.homeassistant/"
- ]
-}
-```
-
-Sample `curl` command:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" http://localhost:8123/api/config
-```
-
-#### {% linkable_title GET /api/discovery_info %}
-
-Returns basic information about the Home Assistant instance as JSON.
-
-```json
-{
- "base_url": "http://192.168.0.2:8123",
- "location_name": "Home",
- "requires_api_password": true,
- "version": "0.56.2"
-}
-```
-
-Sample `curl` command:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" http://localhost:8123/api/discovery_info
-```
-
-#### {% linkable_title GET /api/events %}
-
-Returns an array of event objects. Each event object contains event name and listener count.
-
-```json
-[
- {
- "event": "state_changed",
- "listener_count": 5
- },
- {
- "event": "time_changed",
- "listener_count": 2
- }
-]
-```
-
-Sample `curl` command:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" http://localhost:8123/api/events
-```
-
-#### {% linkable_title GET /api/services %}
-
-Returns an array of service objects. Each object contains the domain and which services it contains.
-
-```json
-[
- {
- "domain": "browser",
- "services": [
- "browse_url"
- ]
- },
- {
- "domain": "keyboard",
- "services": [
- "volume_up",
- "volume_down"
- ]
- }
-]
-```
-
-Sample `curl` command:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" http://localhost:8123/api/services
-```
-
-#### {% linkable_title GET /api/history/period/<timestamp> %}
-
-Returns an array of state changes in the past. Each object contains further details for the entities.
-
-The `` (`YYYY-MM-DDThh:mm:ssTZD`) is optional and defaults to 1 day before the time of the request. It determines the beginning of the period.
-
-You can pass the following optional GET parameters:
-
-- `filter_entity_id=` to filter on a single entity
-- `end_time=` to choose the end of the period in URL encoded format (defaults to 1 day).
-
-```json
-[
- [
- {
- "attributes": {
- "friendly_name": "Weather Temperature",
- "unit_of_measurement": "\u00b0C"
- },
- "entity_id": "sensor.weather_temperature",
- "last_changed": "2016-02-06T22:15:00+00:00",
- "last_updated": "2016-02-06T22:15:00+00:00",
- "state": "-3.9"
- },
- {
- "attributes": {
- "friendly_name": "Weather Temperature",
- "unit_of_measurement": "\u00b0C"
- },
- "entity_id": "sensor.weather_temperature",
- "last_changed": "2016-02-06T22:15:00+00:00",
- "last_updated": "2016-02-06T22:15:00+00:00",
- "state": "-1.9"
- },
- ]
-]
-```
-
-Sample `curl` commands:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" \
- http://localhost:8123/api/history/period/2016-12-29T00:00:00+02:00
-```
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" \
- http://localhost:8123/api/history/period/2016-12-29T00:00:00+02:00?filter_entity_id=sensor.temperature
-```
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" \
- http://localhost:8123/api/history/period/2016-12-29T00:00:00+02:00?end_time=2016-12-31T00%3A00%3A00%2B02%3A00
-```
-
-#### {% linkable_title GET /api/states %}
-
-Returns an array of state objects. Each state has the following attributes: entity_id, state, last_changed and attributes.
-
-```json
-[
- {
- "attributes": {},
- "entity_id": "sun.sun",
- "last_changed": "2016-05-30T21:43:32.418320+00:00",
- "state": "below_horizon"
- },
- {
- "attributes": {},
- "entity_id": "process.Dropbox",
- "last_changed": "22016-05-30T21:43:32.418320+00:00",
- "state": "on"
- }
-]
-```
-
-Sample `curl` command:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" http://localhost:8123/api/states
-```
-
-#### {% linkable_title GET /api/states/<entity_id> %}
-
-Returns a state object for specified entity_id. Returns 404 if not found.
-
-```json
-{
- "attributes":{
- "azimuth":336.34,
- "elevation":-17.67,
- "friendly_name":"Sun",
- "next_rising":"2016-05-31T03:39:14+00:00",
- "next_setting":"2016-05-31T19:16:42+00:00"
- },
- "entity_id":"sun.sun",
- "last_changed":"2016-05-30T21:43:29.204838+00:00",
- "last_updated":"2016-05-30T21:50:30.529465+00:00",
- "state":"below_horizon"
-}
-```
-
-Sample `curl` command:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" \
- http://localhost:8123/api/states/sensor.kitchen_temperature
-```
-
-#### {% linkable_title GET /api/error_log %}
-
-Retrieve all errors logged during the current session of Home Assistant as a plaintext response.
-
-```text
-15-12-20 11:02:50 homeassistant.components.recorder: Found unfinished sessions
-15-12-20 11:03:03 netdisco.ssdp: Error fetching description at http://192.168.1.1:8200/rootDesc.xml
-15-12-20 11:04:36 homeassistant.components.alexa: Received unknown intent HelpIntent
-```
-
-Sample `curl` command:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" \
- http://localhost:8123/api/error_log
-```
-
-#### {% linkable_title GET /api/camera_proxy/camera.<entity_id> %}
-
-Returns the data (image) from the specified camera entity_id.
-
-Sample `curl` command:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" \
- http://localhost:8123/api/camera_proxy/camera.my_sample_camera?time=1462653861261 -o image.jpg
-```
-
-#### {% linkable_title POST /api/states/<entity_id> %}
-
-Updates or creates the current state of an entity.
-
-Expects a JSON object that has at least a state attribute:
-
-```json
-{
- "state": "below_horizon",
- "attributes": {
- "next_rising":"2016-05-31T03:39:14+00:00",
- "next_setting":"2016-05-31T19:16:42+00:00"
- }
-}
-```
-
-The return code is 200 if the entity existed, 201 if the state of a new entity was set. A location header will be returned with the URL of the new resource. The response body will contain a JSON encoded State object.
-
-```json
-{
- "attributes": {
- "next_rising":"2016-05-31T03:39:14+00:00",
- "next_setting":"2016-05-31T19:16:42+00:00"
- },
- "entity_id": "sun.sun",
- "last_changed": "2016-05-30T21:43:29.204838+00:00",
- "last_updated": "2016-05-30T21:47:30.533530+00:00",
- "state": "below_horizon"
-}
-```
-
-Sample `curl` command:
-
-```bash
-$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" \
- -d '{"state": "25", "attributes": {"unit_of_measurement": "°C"}}' \
- http://localhost:8123/api/states/sensor.kitchen_temperature
-```
-
-#### {% linkable_title POST /api/events/<event_type> %}
-
-Fires an event with event_type
-
-You can pass an optional JSON object to be used as `event_data`.
-
-```json
-{
- "next_rising":"2016-05-31T03:39:14+00:00",
-}
-```
-
-Returns a message if successful.
-
-```json
-{
- "message": "Event download_file fired."
-}
-```
-
-#### {% linkable_title POST /api/services/<domain>/<service> %}
-
-Calls a service within a specific domain. Will return when the service has been executed or after 10 seconds, whichever comes first.
-
-You can pass an optional JSON object to be used as `service_data`.
-
-```json
-{
- "entity_id": "light.Ceiling"
-}
-```
-
-Returns a list of states that have changed while the service was being executed.
-
-```json
-[
- {
- "attributes": {},
- "entity_id": "sun.sun",
- "last_changed": "2016-05-30T21:43:32.418320+00:00",
- "state": "below_horizon"
- },
- {
- "attributes": {},
- "entity_id": "process.Dropbox",
- "last_changed": "22016-05-30T21:43:32.418320+00:00",
- "state": "on"
- }
-]
-```
-
-Sample `curl` commands:
-
-Turn the light on:
-
-```bash
-$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" \
- -d '{"entity_id": "switch.christmas_lights"}' \
- http://localhost:8123/api/services/switch/turn_on
-```
-
-Send a MQTT message:
-
-```bash
-$ curl -X POST \
- -H "Content-Type: application/json" \
- -H "x-ha-access:YOUR_PASSWORD" \
- -d '{"payload": "OFF", "topic": "home/fridge", "retain": "True"}' \
- http://localhost:8123/api/services/mqtt/publish
-```
-
-
-The result will include any states that changed while the service was being executed, even if their change was the result of something else happening in the system.
-
-
-#### {% linkable_title POST /api/template %}
-
-Render a Home Assistant template. [See template docs for more information.](/topics/templating/)
-
-```json
-{
- "template": "Paulus is at {% raw %}{{ states('device_tracker.paulus') }}{% endraw %}!"
-}
-```
-
-Returns the rendered template in plain text.
-
-```text
-Paulus is at work!
-```
-
-Sample `curl` command:
-
-```bash
-$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" \
- -d '{"template": "It is {{ now }}!"}' http://localhost:8123/api/template
-```
-
-#### {% linkable_title POST /api/event_forwarding %}
-
-Set up event forwarding to another Home Assistant instance.
-
-Requires a JSON object that represents the API to forward to.
-
-```javascript
-{
- "host": "machine",
- "api_password": "my_super_secret_password",
- "port": 8880 // optional
-}
-```
-
-It will return a message if event forwarding was set up successfully.
-
-```json
-{
- "message": "Event forwarding setup."
-}
-```
-
-#### {% linkable_title DELETE /api/event_forwarding %}
-
-Cancel event forwarding to another Home Assistant instance.
-
-Requires a JSON object that represents the API to cancel forwarding to.
-
-```javascript
-{
- "host": "machine",
- "api_password": "my_super_secret_password",
- "port": 8880 // optional
-}
-```
-
-It will return a message if event forwarding was canceled successfully.
-
-```json
-{
- "message": "Event forwarding cancelled."
-}
-```
-
-
-If your client does not support DELETE HTTP requests you can add an optional attribute _METHOD and set its value to DELETE.
-
+
\ No newline at end of file
diff --git a/source/developers/server_sent_events.markdown b/source/developers/server_sent_events.markdown
index fc54b168da..62c1d956e6 100644
--- a/source/developers/server_sent_events.markdown
+++ b/source/developers/server_sent_events.markdown
@@ -9,65 +9,6 @@ sharing: true
footer: true
---
-The [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events) feature is a one-way channel from your Home Assistant server to a client which is acting as a consumer. For bi-directional communication check the [RESTful API](/developers/rest_api/) and [Python API](/developers/python_api/).
-
-The URI that is generating the data is `/api/stream`.
-
-A requirement on the client-side is existing support for the [EventSource](https://developer.mozilla.org/en-US/docs/Web/API/EventSource) interface.
-
-There are various ways to access the stream. If you have not set an `api_password` in the [`http`](/components/http/) section of your `configuration.yaml` file then you use your modern browser to read the messages. A command-line option is `curl`:
-
-```bash
-$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
- -H "Content-Type: application/json" http://localhost:8123/api/stream
-```
-
-You can create a convenient view for this by creating an HTML file (`sse.html`) in the `www` folder of your Home Assistant configuration directory (`.homeassistant`). Paste this snippet into the file:
-
-```html
-
-
-
-
Getting Home Assistant server events
-
-
-
-
-```
-
-Visit [http://localhost:8123/local/sse.html](http://localhost:8123/local/sse.html) to see the stream of events.
-
-## {% linkable_title Examples %}
-
-A simple way to consume server-sent events is to use a command-line http client like [httpie](https://httpie.org/). Installation info is on the site (if you use Homebrew, it's `brew install httpie`). Once installed, run this snippet from your terminal:
-
-```bash
-$ http --stream http://localhost:8123/api/stream x-ha-access:YOUR_PASSWORD content-type:application/json
-```
-
-### {% linkable_title Website %}
-
-The [home-assistant-sse](https://github.com/fabaff/home-assistant-sse) repository contains a more advanced example.
-
-### {% linkable_title Python %}
-
-If you want to test the server-sent events without creating a website, the Python module [`sseclient` ](https://pypi.python.org/pypi/sseclient/) can help. To install (assuming Python and pip3 are already installed):
-
-```bash
-$ pip3 install sseclient
-```
-
-A simple script to consume SSE in Python looks like this:
-
-```python
-from sseclient import SSEClient
-
-messages = SSEClient('http://localhost:8123/api/stream?api_password=YOUR_PASSWORD')
-for msg in messages:
- print(msg)
-```
+
\ No newline at end of file
diff --git a/source/developers/websocket_api.markdown b/source/developers/websocket_api.markdown
index 76f7f0b0c7..7e8bf2f9ed 100644
--- a/source/developers/websocket_api.markdown
+++ b/source/developers/websocket_api.markdown
@@ -9,350 +9,6 @@ sharing: true
footer: true
---
-Home Assistant contains a WebSocket API. This API can be used to stream information from a Home Assistant instance to any client that implements WebSocket. Implementations in different languages:
-
-- [JavaScript](https://github.com/home-assistant/home-assistant-js-websocket) - powers the frontend
-- [Python](https://raw.githubusercontent.com/home-assistant/home-assistant-dev-helper/master/ha-websocket-client.py) - CLI client using [`asyncws`](https://async-websockets.readthedocs.io/en/latest/)
-- [JavaScript/HTML](https://raw.githubusercontent.com/home-assistant/home-assistant-dev-helper/master/ha-websocket.html) - WebSocket connection in your browser
-
-Connect your websocket implementation to `ws://localhost:8123/api/websocket`.
-
-If you are not using the [`frontend`](/components/frontend/) in your setup then you need to add the [`websocket_api` component](/components/websocket_api/) to your `configuration.yaml` file to use the WebSocket API.
-
-## {% linkable_title Server states %}
-
-1. Client connects.
-1. Authentication phase starts.
- - If no further authentication necessary for the user: go to 3.
- - Server sends `auth_required` message.
- - Client sends `auth` message.
- - If `auth` message correct: go to 3.
- - Server sends `auth_invalid`. Go to 6.
-1. Send `auth_ok` message
-1. Authentication phase ends.
-1. Command phase starts.
- 1. Client can send commands.
- 1. Server can send results of previous commands.
-1. Client or server disconnects session.
-
-During the command phase, the client attaches a unique identifier to each message. The server will add this identifier to each message so that the client can link each message to its origin.
-
-## {% linkable_title Message format %}
-
-Each API message is a JSON serialized object containing a `type` key. After the authentication phase messages also must contain an `id`, an integer that contains the number of interactions.
-
-Example of an auth message:
-
-```json
-{
- "type": "auth",
- "api_password": "supersecret"
-}
-```
-
-```json
-{
- "id" 5,
- "type":"event",
- "event":{
- "data":{},
- "event_type":"test_event",
- "time_fired":"2016-11-26T01:37:24.265429+00:00",
- "origin":"LOCAL"
- }
-}
-```
-
-## {% linkable_title Authentication phase %}
-
-When a client connects to the server, the server will test if the client is authenticated. Authentication will not be necessary if no api_password is set or if the user fulfills one of the other criteria for authentication (trusted network, password in url/header).
-
-If no authentication is needed, the authentication phase will complete and the server will send an `auth_ok` message.
-
-```json
-{
- "type": "auth_ok"
-}
-```
-
-If authentication is necessary, the server sends out `auth_required`.
-
-```json
-{
- "type": "auth_required"
-}
-```
-
-This means that the next message from the client should be an auth message:
-
-```json
-{
- "type": "auth",
- "api_password": "supersecret"
-}
-```
-
-If the client supplies valid authentication, the authentication phase will complete by the server sending the `auth_ok` message:
-
-```json
-{
- "type": "auth_ok"
-}
-```
-
-If the data is incorrect, the server will reply with `auth_invalid` message and disconnect the session.
-
-```json
-{
- "type": "auth_invalid",
- "message": "Invalid password"
-}
-```
-
-## {% linkable_title Command phase %}
-
-During this phase the client can give commands to the server. The server will respond to each command with a `result` message indicating when the command is done and if it was successful.
-
-```json
-{
- "id": 6.
- "type": "result",
- "success": true,
- // Can contain extra result info
- "result": null
-}
-```
-
-## {% linkable_title Subscribe to events %}
-
-The command `subscribe_events` will subscribe your client to the event bus. You can either listen to all events or to a specific event type. If you want to listen to multiple event types, you will have to send multiple `subscribe_events` commands.
-
-```json
-{
- "id": 18,
- "type": "subscribe_events",
- // Optional
- "event_type": "state_changed"
-}
-```
-
-The server will respond with a result message to indicate that the subscription is active.
-
-```json
-{
- "id": 18,
- "type": "result",
- "success": true,
- "result": null
-}
-```
-
-For each event that matches, the server will send a message of type `event`. The `id` in the message will point at the original `id` of the `listen_event` command.
-
-```json
-{
- "id": 18,
- "type":"event",
- "event":{
- "data":{
- "entity_id":"light.bed_light",
- "new_state":{
- "entity_id":"light.bed_light",
- "last_changed":"2016-11-26T01:37:24.265390+00:00",
- "state":"on",
- "attributes":{
- "rgb_color":[
- 254,
- 208,
- 0
- ],
- "color_temp":380,
- "supported_features":147,
- "xy_color":[
- 0.5,
- 0.5
- ],
- "brightness":180,
- "white_value":200,
- "friendly_name":"Bed Light"
- },
- "last_updated":"2016-11-26T01:37:24.265390+00:00"
- },
- "old_state":{
- "entity_id":"light.bed_light",
- "last_changed":"2016-11-26T01:37:10.466994+00:00",
- "state":"off",
- "attributes":{
- "supported_features":147,
- "friendly_name":"Bed Light"
- },
- "last_updated":"2016-11-26T01:37:10.466994+00:00"
- }
- },
- "event_type":"state_changed",
- "time_fired":"2016-11-26T01:37:24.265429+00:00",
- "origin":"LOCAL"
- }
-}
-```
-
-### {% linkable_title Unsubscribing from events %}
-
-You can unsubscribe from previously created subscription events. Pass the id of the original subscription command as value to the subscription field.
-
-```json
-{
- "id": 19,
- "type": "unsubscribe_events",
- "subscription": 18
-}
-```
-
-The server will respond with a result message to indicate that unsubscribing was successful.
-
-```json
-{
- "id": 19,
- "type": "result",
- "success": true,
- "result": null
-}
-```
-
-### {% linkable_title Calling a service %}
-
-This will call a service in Home Assistant. Right now there is no return value. The client can listen to `state_changed` events if it is interested in changed entities as a result of a service call.
-
-```json
-{
- "id": 24,
- "type": "call_service",
- "domain": "light",
- "service": "turn_on",
- // Optional
- "service_data": {
- "entity_id": "light.kitchen"
- }
-}
-```
-
-The server will indicate with a message indicating that the service is done executing.
-
-```json
-{
- "id": 24,
- "type": "result",
- "success": true,
- "result": null
-}
-```
-
-### {% linkable_title Fetching states %}
-
-This will get a dump of all the current states in Home Assistant.
-
-```json
-{
- "id": 19,
- "type": "get_states"
-}
-```
-
-The server will respond with a result message containing the states.
-
-```json
-{
- "id": 19,
- "type": "result",
- "success": true,
- "result": [ ... ]
-}
-```
-
-### {% linkable_title Fetching config %}
-
-This will get a dump of the current config in Home Assistant.
-
-```json
-{
- "id": 19,
- "type": "get_config"
-}
-```
-
-The server will respond with a result message containing the config.
-
-```json
-{
- "id": 19,
- "type": "result",
- "success": true,
- "result": { ... }
-}
-```
-
-### {% linkable_title Fetching services %}
-
-This will get a dump of the current services in Home Assistant.
-
-```json
-{
- "id": 19,
- "type": "get_services"
-}
-```
-
-The server will respond with a result message containing the services.
-
-```json
-{
- "id": 19,
- "type": "result",
- "success": true,
- "result": { ... }
-}
-```
-
-### {% linkable_title Fetching panels %}
-
-This will get a dump of the current registered panels in Home Assistant.
-
-```json
-{
- "id": 19,
- "type": "get_panels"
-}
-```
-
-The server will respond with a result message containing the current registered panels.
-
-```json
-{
- "id": 19,
- "type": "result",
- "success": true,
- "result": [ ... ]
-}
-```
-
-## {% linkable_title Error handling %}
-
-If an error occurs, the `success` key in the `result` message will be set to `false`. It will contain an `error` key containing an object with two keys: `code` and `message`.
-
-| Code | Description |
-| ----- | ------------ |
-| 1 | A non-increasing identifier has been supplied.
-| 2 | Received message is not in expected format (voluptuous validation error).
-| 3 | Requested item cannot be found
-
-```json
-{
- "id": 12,
- "type":"result",
- "success": false,
- "error": {
- "code": 2,
- "message": "Message incorrectly formatted: expected str for dictionary value @ data['event_type']. Got 100"
- }
-}
-```
+
\ No newline at end of file
diff --git a/source/hassio/index.markdown b/source/hassio/index.markdown
index 16dca59792..a5f4798c8d 100644
--- a/source/hassio/index.markdown
+++ b/source/hassio/index.markdown
@@ -59,8 +59,9 @@ Hass.io upgrade process from the SSH command line
On the SSH command line you can use the `hassio` command to retrieve logs, check the details of connected hardware, and more.
-HomeAssistant:
-```shell
+Home Assistant:
+
+```bash
$ hassio homeassistant logs
$ hassio homeassistant restart
$ hassio homeassistant stop
@@ -70,7 +71,8 @@ $ hassio homeassistant check
```
Host:
-```shell
+
+```bash
$ hassio host hardware
$ hassio host reboot
$ hassio host shutdown
@@ -78,9 +80,41 @@ $ hassio host update
```
Supervisor
-```shell
+
+```bash
$ hassio supervisor logs
$ hassio supervisor info
$ hassio supervisor reload
$ hassio supervisor update
```
+
+You can get a better description of the CLI capabilities by typing `hassio help`:
+
+```bash
+NAME:
+ hassio - Commandline tool to allow interation with hass.io
+
+USAGE:
+ hassio [global options] command [command options] [arguments...]
+
+VERSION:
+ 1.2.1
+
+AUTHOR:
+ Home-Assistant
+
+COMMANDS:
+ homeassistant, ha info, logs, check, restart, start, stop, update
+ supervisor, su info, logs, reload, update
+ host, ho hardware, reboot, shutdown, update
+ network, ne info, options
+ snapshots, sn list, info, reload, new, restore, remove
+ addons, ad list, info, logo, changelog, logs, stats,
+ reload, start, stop, install, uninstall, update
+ help, h Shows a list of commands or help for one command
+
+GLOBAL OPTIONS:
+ --debug, -d Prints Debug information
+ --help, -h show help
+ --version, -v print the version
+```
diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown
index b29e39251d..08a2744aed 100644
--- a/source/hassio/installation.markdown
+++ b/source/hassio/installation.markdown
@@ -30,6 +30,10 @@ Hass.io images are available for all available Raspberry Pi and Intel NUC platfo
- You will be able to reach your installation at [http://hassio.local:8123][local].
- Enable either the [Samba add-on][samba] or the [SSH add-on][ssh] to manage your configuration in `/config/` (From the UI choose **Hass.io** which is located in the sidebar).
+
+If your router doesn't support mDNS then you'll have to use the IP address of your Pi, instead of `hassio.local`, for example `http://192.168.0.9:8123`. You should be able to find the IP address of your Pi from the admin interface of your router.
+
+
Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable since some are designed to only provide the full power with that manufacturer's handsets.
diff --git a/source/help/index.markdown b/source/help/index.markdown
index 9852420f82..881204f047 100644
--- a/source/help/index.markdown
+++ b/source/help/index.markdown
@@ -3,7 +3,7 @@ layout: page
title: "Help"
description: "If you need help or have a question..."
date: 2015-06-25 12:30
-sidebar: false
+sidebar: true
comments: false
sharing: true
footer: true
@@ -17,7 +17,7 @@ There are various ways to get in touch with the Home Assistant community. It doe
- [Discord Chat Server][discord] for general Home Assistant discussions and questions.
- Follow us on [Twitter][twitter], use [@home_assistant][twitter]
- Join the [Google+ community][google-plus]
-- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
+- Join the Reddit in [/r/homeassistant][reddit]
### {% linkable_title Bugs, Feature requests, and alike %}
@@ -31,6 +31,7 @@ Have you found an issue in your Home Assistant installation? Please report it. R
### {% linkable_title Videos, talks, workshops and alike %}
+- [Automate your home with Home Assistant](https://www.youtube.com/watch?v=SSrgi4iHGbs) at [foss-north 2018](http://foss-north.se/2018/speakers-and-talks.html#jparadies) - March 2018
- [Home Assistant](https://github.com/home-assistant/home-assistant-assets/tree/master/english/2017-qecampX) at QECampX 2017 - October 2017
- [Open Source Heimautomation mit Home Assistant](https://github.com/home-assistant/home-assistant-assets/tree/master/german/2017-maker-faire-zurich) at [Mini Maker Faire Zurich 2017](https://www.makerfairezurich.ch/en/) - September 2017
- [Why we can't have the Internet of Nice Things: A home automation primer](https://www.openwest.org/custom/description.php?id=92) at [OpenWest 2017](https://www.openwest.org) - July 2017
@@ -50,6 +51,7 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)?
Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/).
+- [HackSpace magazine #6](https://s3-eu-west-1.amazonaws.com/rpi-magazines/issues/full_pdfs/000/000/013/original/HS_6_Digital_Optimised.pdf?1524495009) - May 2018
- [The winners of the Thomas-Krenn-Awards 2018](https://www.thomas-krenn.com/de/tkmag/allgemein/die-gewinner-des-thomas-krenn-awards-2018-stehen-fest/) - March 2018
- [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
@@ -77,10 +79,6 @@ Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/).
- [5 open source home automation tools](https://opensource.com/life/16/3/5-open-source-home-automation-tools) by [opensource.com](https://opensource.com) - March 2016
- [Home Assistant – Open Source Python Home Automation Platform](http://www.automatedhome.co.uk/new-products/home-assistant-open-source-python-home-automation-platform.html) - January 2015
-### {% linkable_title Roadmap %}
-
-There is no explicit roadmap available, but the public [tracker](https://www.pivotaltracker.com/n/projects/1250084) can give you some insight into what is going on.
-
[forum]: https://community.home-assistant.io/
[twitter]: https://twitter.com/home_assistant
[google-plus]: https://plus.google.com/u/0/b/110560654828510104551/communities/106562234893511202708
diff --git a/source/images/blog/2018-04-0.68/components.png b/source/images/blog/2018-04-0.68/components.png
new file mode 100644
index 0000000000..57d9fc40b3
Binary files /dev/null and b/source/images/blog/2018-04-0.68/components.png differ
diff --git a/source/images/blog/2018-04-developer-website/screenshot.png b/source/images/blog/2018-04-developer-website/screenshot.png
new file mode 100644
index 0000000000..faccecea64
Binary files /dev/null and b/source/images/blog/2018-04-developer-website/screenshot.png differ
diff --git a/source/images/blog/2018-04-google-assistant/google-assistant-home-assistant.png b/source/images/blog/2018-04-google-assistant/google-assistant-home-assistant.png
new file mode 100644
index 0000000000..a7ec721fbc
Binary files /dev/null and b/source/images/blog/2018-04-google-assistant/google-assistant-home-assistant.png differ
diff --git a/source/images/blog/2018-04-hassio-2018/blogpost.png b/source/images/blog/2018-04-hassio-2018/blogpost.png
new file mode 100644
index 0000000000..443fb8a540
Binary files /dev/null and b/source/images/blog/2018-04-hassio-2018/blogpost.png differ
diff --git a/source/images/screenshots/binary_sensor_classes_icons.png b/source/images/screenshots/binary_sensor_classes_icons.png
new file mode 100644
index 0000000000..53363bcb99
Binary files /dev/null and b/source/images/screenshots/binary_sensor_classes_icons.png differ
diff --git a/source/images/screenshots/sensor_device_classes_icons.png b/source/images/screenshots/sensor_device_classes_icons.png
new file mode 100644
index 0000000000..58e115250c
Binary files /dev/null and b/source/images/screenshots/sensor_device_classes_icons.png differ
diff --git a/source/images/supported_brands/eufy.png b/source/images/supported_brands/eufy.png
new file mode 100644
index 0000000000..98d647b056
Binary files /dev/null and b/source/images/supported_brands/eufy.png differ
diff --git a/source/images/supported_brands/postnl.png b/source/images/supported_brands/postnl.png
new file mode 100644
index 0000000000..93d54db18c
Binary files /dev/null and b/source/images/supported_brands/postnl.png differ
diff --git a/source/images/supported_brands/qwikswitch.png b/source/images/supported_brands/qwikswitch.png
index ada6158b54..0109f03a35 100644
Binary files a/source/images/supported_brands/qwikswitch.png and b/source/images/supported_brands/qwikswitch.png differ
diff --git a/source/images/supported_brands/sensirion.png b/source/images/supported_brands/sensirion.png
new file mode 100644
index 0000000000..4c0576cacd
Binary files /dev/null and b/source/images/supported_brands/sensirion.png differ
diff --git a/source/images/supported_brands/sigfox.png b/source/images/supported_brands/sigfox.png
new file mode 100644
index 0000000000..fdc7200ec8
Binary files /dev/null and b/source/images/supported_brands/sigfox.png differ
diff --git a/source/images/supported_brands/socialblade.png b/source/images/supported_brands/socialblade.png
new file mode 100644
index 0000000000..3e2de38de2
Binary files /dev/null and b/source/images/supported_brands/socialblade.png differ
diff --git a/source/images/supported_brands/uscis.png b/source/images/supported_brands/uscis.png
new file mode 100644
index 0000000000..2268fb48b1
Binary files /dev/null and b/source/images/supported_brands/uscis.png differ
diff --git a/source/index.html b/source/index.html
index 11729ac796..234bf17108 100644
--- a/source/index.html
+++ b/source/index.html
@@ -41,6 +41,14 @@ description: Open-source home automation platform running on Python 3. Track and
LEARN MORE
+
+
Ok Google, turn on the AC
+ Use Google Assistant to control Home Assistant.
+
+