Merge pull request #4869 from home-assistant/release-0-65

0.65
This commit is contained in:
Paulus Schoutsen 2018-03-09 10:36:31 -08:00 committed by GitHub
commit 4124e70afd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
56 changed files with 1810 additions and 138 deletions

8
.gitignore vendored
View File

@ -12,4 +12,10 @@ vendor
node_modules
source/.jekyll-metadata
*.iml
.idea/
.idea/
/.vs/home-assistant.github.io/v15/.suo
/.vs/ProjectSettings.json
/.vs/slnx.sqlite
/.vs/config/applicationhost.config
/.vs/slnx.sqlite-journal
/.vs/VSWorkspaceState.json

View File

@ -139,14 +139,14 @@ social:
# Home Assistant release details
current_major_version: 0
current_minor_version: 64
current_patch_version: 3
date_released: 2018-03-02
current_minor_version: 65
current_patch_version: 0
date_released: 2018-03-09
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.
# Major release:
patch_version_notes: "#release-0643---march-2"
patch_version_notes: "#"
# Minor release (Example #release-0431---april-25):
# Date we moved to Discourse for comments

View File

@ -12,57 +12,5 @@ ha_release: 0.51
ha_category: Alarm
---
The `egardia` platform enables the ability to control an [Egardia](http://egardia.com/)/[Woonveilig](http://woonveilig.nl) control panel. These alarm panels are known under different brand names across the world, including Woonveilig in the Netherlands. This was tested on the GATE-01, GATE-02 and GATE-03 versions of the Egardia/Woonveilig platform.
You will need to know the IP of your alarm panel on your local network. Test if you can login to the panel by browsing to the IP address and log in using your Egardia/Woonveilig account.
To enable the integration with your alarm panel, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
alarm_control_panel:
- platform: egardia
host: YOUR_HOST
username: YOUR_USERNAME
password: YOUR_PASSWORD
```
Configuration variables:
- **host** (*Required*): The local IP address of the Egardia/Woonveilig alarm panel.
- **username** (*Required*): Username for the Egardia/Woonveilig account.
- **password** (*Required*): Password for Egardia/Woonveilig account.
- **version** (*Optional*): The version of the Egardia system. `GATE-01`, `GATE-02` and `GATE-03` are currently supported. Defaults to `GATE-01`.
- **port** (*Optional*): The port of the alarm panel. Defaults to 80.
- **name** (*Optional*): Name to use for the alarm panel. Defaults to `Egardia`.
- **report_server_enabled** (*Optional*): Enable reporting by server. Defaults to `False`.
- **report_server_port** (*Optional*): Port of the Egardia server. Defaults to 52010.
- **report_server_codes** list (*Optional*): List of codes for the different states.
Note that this basic configuration will only enable you to read the armed/armed away/disarmed status of your alarm and will **not** update the status if the alarm is triggered. This is because of how Egardia built their system. The alarm triggers normally go through their servers.
You can change this, however, using the following procedure. This is a more advanced configuration.
1. Log in into your alarm system's control panel. You will need to access http://[IP of your control panel]. You know this already since you need it in the basic configuration from above. Log in to the control panel with your Egardia/Woonveilig username and password.
1. Once logged in, go to *System Settings*, *Report* and change the Server Address for your primary server to the IP or hostname of your Home Assistant machine. You can leave the port number set to 52010 or change it to anything you like. **Make sure to change the settings of the primary server otherwise the messages will not come through. Note that this will limit (or fully stop) the number of alarm messages you will get through Egardia's / Woonveilig services.** Maybe, that is just what you want. Make sure to save your settings by selecting 'OK'.
1. On your Home Assistant machine run `$ sudo python3 egardiaserver.py`. Refer to the [python-egardia repository](https://github.com/jeroenterheerdt/python-egardia) for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. You will need the codes to include in your configuration.yaml. Make sure to change the status of your alarm to all states (disarm, arm, home) by all means possible (all users, remotes, web login, app) as well as trigger the alarm in all ways possible to get 100% coverage. **Before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).**
1. Once you have the codes, update your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
alarm_control_panel:
 - platform: egardia
  host: YOUR_HOST
  username: YOUR_USERNAME
  password: YOUR_PASSWORD
report_server_enabled: True
report_server_port: PORT_OF_EGARDIASERVER (optional, defaults to 52010)
report_server_codes:
arm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX
disarm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX
home: XXXXXXXXXXXXXXXX
triggered: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX
ignore: XXXXXXXXXXXXXXXX
```
Note that for *triggered*, *arm* and *disarm* multiple codes can be entered since each sensor triggers with a different code and each user of the system has its own arm and disarm codes. Also note that your system will do regular system checks which will be reported as well. Since Home Assistant provides no way of handling them properly, you can enter those codes as *ignore* (again, multiple codes can be used here). The egardia component will ignore these codes and continue returning the old status if it receives any of the codes that are listed as ignore. This is useful for example when you have armed your alarm at night: normally a system check will occur at least once during the night and if that code is not specified anywhere Home Assistant will set the status of the alarm to its default, which is unarmed. This is in fact wrong. Listing the code as ignore changes this behavior and Home Assistant will continue to show the status the alarm is in (disarm, arm, home, triggered) even when system checks occur.
5. Test your setup and enjoy. The component will update if the alarm status changes, including triggers. You can use this to build your own automations and send notifications as you wish. *Note*: previous versions required a separate egardiaserver to be set up. This is no longer necessary and corresponding system services can be removed (using systemctl).
The `egardia` platform allows you to integrate your [Egardia](http://www.egardia.com)/[Woonveilig](http://www.woonveilig.nl) alarm control panel in Home Assistant.
You will need to set up your [Egardia hub](/components/egardia/).

View File

@ -0,0 +1,19 @@
---
layout: page
title: "Egardia Binary Sensor"
description: "Instructions how to integrate Egardia / Woonveilig binary sensors into Home Assistant."
date: 2018-03-02 09:00
sidebar: true
comments: false
sharing: true
footer: true
logo: egardia.png
ha_release: 0.65
ha_category: Binary Sensor
ha_iot_class: "Polling"
---
The `egardia` platform allows you to get data from your [Egardia](http://www.egardia.com)/[Woonveilig](http://www.woonveilig.nl) binary sensors from within Home Assistant.
Currently only door contacts are supported. IR sensors are not supported and will probably never be since their status cannot be read outside of the alarm control panel. Smoke sensors and others might be added but currently are not supported.
You will need to set up your [Egardia hub](/components/egardia/).

View File

@ -1,7 +1,7 @@
---
layout: page
title: "Insteon PLM Binary Sensor"
description: "Instructions how to setup the Insteon PLM switches locally within Home Assistant."
description: "Instructions how to setup the Insteon PLM binary sensors locally within Home Assistant."
date: 2017-02-19 17:00
sidebar: true
comments: false

View File

@ -22,6 +22,7 @@ The way these sensors are displayed in the frontend can be modified in the [cust
- **gas**: `On` means gas detected, `Off` means no gas (clear)
- **heat**: `On` means hot, `Off` means normal
- **light**: `On` means light detected, `Off` means no light
- **lock**: `On` means open (unlocked), `Off` means closed (locked)
- **moisture**: `On` means moisture detected (wet), `Off` means no moisture (dry)
- **motion**: `On` means motion detected, `Off` means no motion (clear)
- **moving**: `On` means moving, `Off` means not moving (stopped)

View File

@ -0,0 +1,34 @@
---
layout: page
title: UpCloud Binary Sensor
description: Instructions on how to set up UpCloud binary sensors within Home Assistant.
date: 2018-01-28 20:00
sidebar: true
comments: false
sharing: true
footer: true
ha_category: System Monitor
logo: upcloud.png
ha_release: 0.65
ha_iot_class: Cloud Polling
---
The `upcloud` binary sensor platform allows you to monitor your UpCloud servers.
To use your UpCloud servers, you first have to set up your [UpCloud hub](/components/upcloud/) and then add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
binary_sensor:
- platform: upcloud
servers:
- 002167b7-4cb1-44b7-869f-e0900ddeeae1
- 00886296-6137-4074-afe3-068e16d89d00
```
{% configuration %}
servers:
description: List of servers you want to monitor.
required: true
type: list
{% endconfiguration %}

View File

@ -30,9 +30,12 @@ Configuration variables:
- **name** (*Optional*): Override the name of your camera.
- **username** (*Optional*): The username for the camera.
- **password** (*Optional*): The password for the camera.
- **port** (*Optional*): The port for the camera. This defaults to 5000
- **port** (*Optional*): The port for the camera. This defaults to 5000.
- **profile** (*Optional*): Video profile that will be used to obtain the stream. This defaults to 0. More details below.
- **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, e.g. image quality or video filter options. More details in [FFmpeg component](/components/ffmpeg).
Most of the Onvif cameras support more than one audio/video Profile. Each profile provides different image quality. Usually, the first profile has the highest quality, and it is the profile used by default. However, you may want to use a lower quality image. One of the reasons may be that your hardware isn't able to render the highest quality image in real-time - especially when running on Raspberry Pi. Therefore you can choose which profile do you want to use by setting in config `profile` variable.
### {% linkable_title Service `camera.onvif_ptz` %}
If your ONVIF camera supports PTZ, you will be able to pan, tilt or zoom your camera.

View File

@ -0,0 +1,61 @@
---
layout: page
title: "Camera Proxy"
description: "Instructions how to integrate a camera proxy within Home Assistant."
date: 2018-03-08 19:00
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Camera
ha_release: 0.65
---
The `proxy` camera platform allows you to pass another camera's output through post-processing routines and generate a new camera with the post-processed output.
The current post-processing supports resizing the image/MJPEG as well as limiting the maximum refresh rate.
The current proxy capabilities are intended to reduce the camera bandwidth for slower internet connections.
To enable this camera in your installation, you must first have an existing working camera configured in Home Assistant. Next, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
camera:
- platform: proxy
entity_id: camera.<existingcamera>
max_stream_width: 360
max_image_width: 720
```
Configuration variables:
- **entity_id** (*Required*): The ID of another Home Assistant camera to post-process.
- **name** (*Optional*): This parameter allows you to override the name of your camera.
- **max_image_width** (*Optional*): The maximum width of single images taken from the camera (aspect ratio will be maintained).
- **max_stream_width** (*Optional*): The maximum width of the MJPEG stream from the camera (aspect ratio will be maintained).
- **image_quality** (*Optional*): The quality level used for resulting JPEG for snapshots (default: 75).
- **stream_quality** (*Optional*): The quality level used for resulting MJPEG streams (default: 75).
- **image_refresh_rate** (*Optional*): The minimum time in seconds between generating successive image snapshots.
- **force_resize** (*Optional*): Resize the image even if the resulting image would take up more bandwidth than the original.
- **cache_images** (*Optional*): Preserve the last image and re-send in the case the camera is not responding.
## {% linkable_title Examples %}
Example of using a Camera proxy along with a Foscam camera:
```yaml
camera:
- platform: foscam
ip: 192.168.1.10
username: foscam_camera
password: camera_password
name: mycamera
- platform: proxy
entity_id: camera.mycamera
max_stream_width: 360
max_image_width: 480
image_refresh_rate: 5.0
```

View File

@ -11,46 +11,79 @@ logo: home-assistant.png
ha_category: "Voice"
---
The conversation component allows you to converse with Home Assistant. You can either converse by pressing the microphone in the frontend (supported browsers only (no iOS)) or by calling the `conversation/process` service with the transcribed text.
The `conversation` component can process sentences into commands for Home Assistant. It currently has built in functionality to recognize `turn <Friendly Name> <on/off>`, but custom phrases can be added through configuration.
To enable the conversation option in your installation, add the following to your `configuration.yaml` file:
<p class='img'>
<img src="/images/screenshots/voice-commands.png" />
Screenshot of the conversation interface in Home Assistant.
</p>
```yaml
# Example base configuration.yaml entry
conversation:
```
To add custom phrases to be recognized:
{% configuration %}
intents:
description: Intents that the conversation component should understand.
required: false
type: map
keys:
'`<INTENT NAME>`':
description: Sentences that should trigger this intent.
required: true
type: list
{% endconfiguration %}
```yaml
# Example configuration.yaml entry with custom phrasesconversation
conversation:
boolean_test:
sentence: switch boolean # The phrase it will recognize
action:
service: input_boolean.toggle
```
## {% linkable_title Adding custom sentences %}
The action keyword uses [script syntax](https://home-assistant.io/docs/scripts/).
By default, it will support turning devices on and off. You can say things like "turn on kitchen lights" or "turn the living room lights off". You can also configure your own sentences to be processed. This works by mapping sentences to intents and then configure the [intent script component](/components/intent_script/) to handle these intents.
To use the `conversation` component with the [`shopping list` component](/components/shopping_list/) add an intent.
Here is a simple example to be able to ask what the temperature in the living room is.
```yaml
# Example configuration.yaml entry
conversation:
intents:
ShoppingListAddItem:
- Add {item} to my shopping list
LivingRoomTemperature:
- What is the temperature in the living room
intent_script:
LivingRoomTemperature:
speech:
text: It is currently {% raw %}{{ states.sensor.temperature }}{% endraw %} degrees in the living room.
```
When this component is active and you are using a supported browser voice commands will be activated in the frontend. Browse to [the demo](/demo/) using Chrome or Chromium to see it in action.
## {% linkable_title Adding advanced custom sentences %}
<p class='img'>
<img src="/images/screenshots/voice-commands.png" />
</p>
Sentences can contain slots (marked with curly braces: `{name}`) and optional words (marked with square brackets: `[the]`). The values of slots will be passed on to the intent and are available inside the templates.
<p class='note'>
Apple iPhones do not support this feature in any browser.
</p>
The following configuration can handle the following sentences:
- Change the lights to red
- Change the lights to green
- Change the lights to blue
- Change the lights to the color red
- Change the lights to the color green
- Change the lights to the color blue
```yaml
# Example configuration.yaml entry
conversation:
intents:
ColorLight:
- Change the lights to [the color] {color}
{% raw %}
intent_script:
ColorLight:
speech:
text: Changed the lights to {{ color }}.
action:
service: light.turn_on
data_template:
rgb_color:
- "{% if color == 'red' %}255{% else %}0{% endif %}"
- "{% if color == 'green' %}255{% else %}0{% endif %}"
- "{% if color == 'blue' %}255{% else %}0{% endif %}"
{% endraw %}
```

View File

@ -68,7 +68,7 @@ Configuration variables:
- **host** (*Required*): The IP address of your router, eg. 192.168.1.1.
- **username** (*Required*): The username of an user with administrative privileges, usually *root*.
- **password** (*Required*): The password for your given account.
- **dhcp_software** (*Optional*): The DHCP software used in your router: `dnsmasq` or `dhcpd`. Defaults to `dnsmasq`.
- **dhcp_software** (*Optional*): The DHCP software used in your router: `dnsmasq`, `dhcpd`, or `none`. Defaults to `dnsmasq`.
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.

View File

@ -0,0 +1,67 @@
---
layout: page
title: "Egardia"
description: "Instructions how to setup Egardia / Woonveilig within Home Assistant."
date: 2018-03-02 09:00
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Hub
ha_release: 0.65
logo: egardia.png
---
The `egardia` platform enables the ability to control an [Egardia](http://egardia.com/)/[Woonveilig](http://woonveilig.nl) control panel. These alarm panels are known under different brand names across the world, including Woonveilig in the Netherlands. This was tested on the WL-1716, GATE-01, GATE-02 and GATE-03 versions of the Egardia/Woonveilig platform. Not only will you integrate your alarm control panel, supported sensors (door contacts at this moment) will be added automatically (hidden by default).
You will need to know the IP of your alarm panel on your local network. Test if you can login to the panel by browsing to the IP address and log in using your Egardia/Woonveilig account.
To enable the integration with your alarm panel, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
egardia:
host: YOUR_HOST
username: YOUR_USERNAME
password: YOUR_PASSWORD
```
Configuration variables:
- **host** (*Required*): The local IP address of the Egardia/Woonveilig alarm panel.
- **username** (*Required*): Username for the Egardia/Woonveilig account.
- **password** (*Required*): Password for Egardia/Woonveilig account.
- **version** (*Optional*): The version of the Egardia system. `GATE-01`, `GATE-02` and `GATE-03` are currently supported. Defaults to `GATE-01`.
- **port** (*Optional*): The port of the alarm panel. Defaults to 80.
- **report_server_enabled** (*Optional*): Enable reporting by server. Defaults to `False`.
- **report_server_port** (*Optional*): Port of the Egardia server. Defaults to 52010.
- **report_server_codes** list (*Optional*): List of codes for the different states.
Note that this basic configuration will only enable you to read the armed/armed away/disarmed status of your alarm and will **not** update the status if the alarm is triggered. This is because of how Egardia built their system. The alarm triggers normally go through their servers.
You can change this, however, using the following procedure. This is a more advanced configuration.
1. Log in to your alarm system's control panel. You will need to access http://[IP of your control panel]. You know this already since you need it in the basic configuration from above. Log in to the control panel with your Egardia/Woonveilig username and password.
2. Once logged in, go to *System Settings*, *Report* and change the Server Address for your primary server to the IP or hostname of your Home Assistant machine. You can leave the port number set to 52010 or change it to anything you like. **Make sure to change the settings of the primary server otherwise the messages will not come through. Note that this will limit (or fully stop) the number of alarm messages you will get through Egardia's / Woonveilig services.** Maybe, that is just what you want. Make sure to save your settings by selecting 'OK'.
3. The Egardia component relies on capturing the status codes that your alarm emits when something happens (status change or trigger). These codes will be unique for every situation - i.e. the code emitted by the alarm when a sensor is triggered is unique to that sensor. Also, if you have multiple users or remotes, each remote has unique codes that are emitted by the alarm when status is changed using that remote or by that user. For the Egardia component to work correctly you will need to capture the codes. To do this, on your Home Assistant machine run `$ sudo python3 egardiaserver.py`. Refer to the [python-egardia repository](https://github.com/jeroenterheerdt/python-egardia) for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. Record the codes shown as well as the status they relate to (see step 4 below). Make sure to change the status of your alarm to all states (disarm, arm, home) by all means possible (all users, remotes, web login, app) as well as trigger the alarm in all ways possible to get 100% coverage of all the codes the alarm system generates. You will need to run this script once and stop it once you have captured all the possible codes. Also, if you ever add users, remotes or sensors to your alarm system, make sure to re-run the script to capture the extra codes so you can update your configuration (see step 4 below). **For comfort, before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).**
4. Once you have the codes, update your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
egardia:
  host: YOUR_HOST
  username: YOUR_USERNAME
  password: YOUR_PASSWORD
report_server_enabled: True
report_server_port: PORT_OF_EGARDIASERVER (optional, defaults to 52010)
report_server_codes:
arm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX
disarm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX
armhome: XXXXXXXXXXXXXXXX
triggered: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX
ignore: XXXXXXXXXXXXXXXX
```
Note that for all code groups (*arm*,*disarm*, etc) multiple codes can be entered since each sensor triggers with a different code and each user of the system has its own arm and disarm codes. Also note that your system will do regular system checks which will be reported as well. Since Home Assistant provides no way of handling them properly, you can enter those codes as *ignore* (again, multiple codes can be used here). The egardia component will ignore these codes and continue returning the old status if it receives any of the codes that are listed as ignore. This is useful for example when you have armed your alarm at night: normally a system check will occur at least once during the night and if that code is not specified anywhere Home Assistant will set the status of the alarm to its default, which is unarmed. This is in fact wrong. Listing the code as ignore changes this behavior and Home Assistant will continue to show the status the alarm is in (disarm, arm, home, triggered) even when system checks occur.
5. Test your setup and enjoy. The component will update if the alarm status changes, including triggers. You can use this to build your own automations and send notifications as you wish. *Note*: previous versions required a separate egardiaserver to be set up. This is no longer necessary and corresponding system services can be removed (using systemctl).

View File

@ -0,0 +1,24 @@
---
layout: page
title: "Insteon PLM Fan"
description: "Instructions how to setup the Insteon PLM fan locally within Home Assistant."
date: 2017-02-19 17:00
sidebar: true
comments: false
sharing: true
footer: true
logo: insteon.png
ha_category: Fan
ha_iot_class: "Local Push"
ha_version: 0.65
---
The `insteon_plm` fan platform lets you control your [FanLinc] through
an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a
USB or serial port. To add support, set up the primary [insteon_plm]
component.
[insteon_plm]: /components/insteon_plm/
[FanLinc]: https://www.smarthome.com/fanlinc-insteon-2475f-ceiling-fan-and-light-controller-fixture-module-dual-band.html

View File

@ -71,7 +71,7 @@ name:
## {% linkable_title Platform Services %}
### {% linkable_title Service fan/xiaomi_miio_set_buzzer_on %}
### {% linkable_title Service `fan.xiaomi_miio_set_buzzer_on` %}
Turn the buzzer on.
@ -79,7 +79,7 @@ Turn the buzzer on.
|---------------------------|----------|-------------------------------------------------------|
| `entity_id` | yes | Only act on a specific air purifier. Else targets all. |
### {% linkable_title Service fan/xiaomi_miio_set_buzzer_off %}
### {% linkable_title Service `fan.xiaomi_miio_set_buzzer_off` %}
Turn the buzzer off.
@ -87,7 +87,7 @@ Turn the buzzer off.
|---------------------------|----------|---------------------------------------------------------|
| `entity_id` | yes | Only act on a specific air purifier. Else targets all. |
### {% linkable_title Service fan/xiaomi_miio_set_led_on %}
### {% linkable_title Service `fan.xiaomi_miio_set_led_on` %}
Turn the led on.
@ -95,7 +95,7 @@ Turn the led on.
|---------------------------|----------|---------------------------------------------------------|
| `entity_id` | yes | Only act on a specific air purifier. Else targets all. |
### {% linkable_title Service fan/xiaomi_miio_set_led_off %}
### {% linkable_title Service `fan.xiaomi_miio_set_led_off` %}
Turn the led off.
@ -103,7 +103,7 @@ Turn the led off.
|---------------------------|----------|---------------------------------------------------------|
| `entity_id` | yes | Only act on a specific air purifier. Else targets all. |
### {% linkable_title Service fan/xiaomi_miio_set_child_lock_on %}
### {% linkable_title Service `fan.xiaomi_miio_set_child_lock_on` %}
Turn the child lock on.
@ -111,7 +111,7 @@ Turn the child lock on.
|---------------------------|----------|---------------------------------------------------------|
| `entity_id` | yes | Only act on a specific air purifier. Else targets all. |
### {% linkable_title Service fan/xiaomi_miio_set_child_lock_off %}
### {% linkable_title Service `fan.xiaomi_miio_set_child_lock_off` %}
Turn the child lock off.
@ -119,7 +119,7 @@ Turn the child lock off.
|---------------------------|----------|---------------------------------------------------------|
| `entity_id` | yes | Only act on a specific air purifier. Else targets all. |
### {% linkable_title Service fan/xiaomi_miio_set_led_brightness %}
### {% linkable_title Service `fan.xiaomi_miio_set_led_brightness` %}
Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off).
@ -128,7 +128,7 @@ Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off).
| `entity_id` | yes | Only act on a specific air purifier. Else targets all. |
| `brightness` | no | Brightness, between 0 and 2. |
### {% linkable_title Service fan/xiaomi_miio_set_favorite_level %}
### {% linkable_title Service `fan.xiaomi_miio_set_favorite_level` %}
Set the favorite level of the operation mode "favorite".

View File

@ -21,7 +21,7 @@ The `HomeKit` component allows you to forward entities from Home Assistant to Ap
type: map
keys:
pincode:
description: Pin code required during setup of HomeKit Home Assistant accessory. The format needs to be 'XXX-XX-XXX' where X is a number between 1 and 9.
description: Pin code required during setup of HomeKit Home Assistant accessory. The format needs to be 'XXX-XX-XXX' where X is a number between 0 and 9.
required: false
type: string
default: '"123-45-678"'
@ -57,7 +57,10 @@ The following components are currently supported:
| Component | Type Name | Description |
| --------- | --------- | ----------- |
| alarm_control_panel | SecuritySystem | All security systems. |
| climate | Thermostat | All climate devices. |
| cover | Window | All covers that support `set_cover_position`. |
| sensor | TemperatureSensor | All sensors that have `Celsius` as their `unit_of_measurement`. |
| sensor | TemperatureSensor | All sensors that have `Celsius` and `Fahrenheit` as their `unit_of_measurement`. |
| switch/remote | Switch | All switches or remotes (represented as switches). |
<p class='note'>Currently only devices that are setup when Home Assistant is starting can be exposed to `HomeKit`. This means that especially `Z-Wave` components are currently not supported, since they will be setup afterwards. We are working on a solution for this problem.</p>

View File

@ -2,7 +2,7 @@
layout: page
title: "Homematic"
description: "Instructions for integrating Homematic into Home Assistant."
date: 2016-11-27 21:38
date: 2018-02-13 19:10
sidebar: true
comments: false
sharing: true
@ -239,3 +239,19 @@ action:
param: SET_TEMPERATURE
value: 23.0
```
Manually set lock on KeyMatic devices
```yaml
...
action:
service: lock.lock
entity_id: lock.leq1234567
```
Manually set unlock on KeyMatic devices
```yaml
...
action:
service: lock.unlock
entity_id: lock.leq1234567
```

View File

@ -16,13 +16,15 @@ ha_version: 0.39
This component adds "local push" support for INSTEON PowerLinc Modems allowing
linked INSTEON devices to be used within Home Assistant as lights, switches,
and binary sensors. Device support is provided by the underlying [insteonplm]
package. It is known to work with both the [2413U] USB and [2412S]
RS242 flavors of PLM. This component does not work with the IP-based hub
products. For that, you'll want the "Insteon (Local)" component instead.
package. It is known to work with the [2413U] USB and [2412S] RS242 flavors
of PLM and the [2448A7] USB stick. This component does not work with the
IP-based hub products. For that, you'll want the "Insteon (Local)" component
instead.
[insteonplm]: https://github.com/nugget/python-insteonplm
[2413U]: https://www.insteon.com/powerlinc-modem-usb
[2412S]: https://www.insteon.com/powerlinc-modem-serial
[2448A7]: https://www.smarthome.com/insteon-2448a7-portable-usb-adapter.html
```yaml
@ -30,14 +32,48 @@ products. For that, you'll want the "Insteon (Local)" component instead.
insteon_plm:
port: SERIAL_PORT
device_override:
- address: INSTEON_ADDRESS
platform: DEVICE_PLATFORM
- address: ADDRESS
cat: CATEGORY
subcat: SUBCATEGORY
firmware: FIRMWARE
product_key: PRODUCT_KEY
```
Configuration variables:
- **port** (*Required*): The port for your device, e.g. `/dev/ttyUSB0`
- **device_override** (*Optional*): Override the default device platform
- **device_override** (*Optional*): Override the default device definition
- *ADDRESS* is found on the device itself in the form 1A.2B.3C or 1a2b3c
- *CATEGORY* is found in the back of the device's User Guide in the form of
0x00 - 0xff
- *SUBCATEGORY* is found in the back of the device's User Guide in the form
of 0x00 - 0xff
- *FIRMWARE* and *PRODUCT_KEY* are more advanced options and will typically
not be used.
### {% linkable_title Autodiscovery %}
The first time autodiscovery runs, the duration may require up to 20 seconds
per device. Subsequent startups will occur much quicker using cached device
information. If a device is not recognized during autodiscovery, you can add
the device to the **device_override** configuration.
In order for a device to be discovered it must be linked to the PLM as either
a responder or a controller.
### {% linkable_title Linking Devices to the PLM %}
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]: http://www.insteon.com/support-knowledgebase/2015/1/28/understanding-linking
[HouseLinc]: https://www.smarthome.com/houselinc.html
[Insteon Terminal]: https://github.com/pfrommerd/insteon-terminal
### {% linkable_title Customization %}
@ -58,14 +94,14 @@ devices.
### {% linkable_title Device Overrides %}
INSTEON devices are added to Home Assistant using the platform(s) that make the
most sense given the model and features of the hardware. In most cases this is
unambiguous, but sometimes the component will not be able to guess the actual
usage of the device. For example, there might be a table lamp plugged into an
INSTEON appliance relay module. By default, this will show as a 'switch'
device in Home Assistant, but it really should be a 'light' device. For
exceptions like this, the component supports a device platform override. You
can set any device (by address) to explicitly use a specific platform if the
default is not correct.
most sense given the model and features of the hardware. The features of the
INSTEON device are built into the Home Assistant platform. Changing the
platform is not recommended. There are two primary uses for the
**device_override** feature.
- Devices that do not respond during autodiscovery. This is common for battery
operated devices.
- Devices that have not been fully developed. This allows an unknown device to
be mapped to a device that operates similarly to another device.
### {% linkable_title Example Configuration with Options%}
@ -83,7 +119,19 @@ homeassistant:
insteon_plm:
port: /dev/ttyUSB0
device_override:
- address: a1b2c3 # Icon Appliance Module for bedside lamp
platform: light # make it a light instead of a switch
- address: a1b2c3 # Hidden Door Sensor [2845-222]
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
will NOT work:
```yaml
light:
- platform: insteon_plm
address: 1a2b3c
```

View File

@ -0,0 +1,48 @@
---
layout: page
title: "Light Group"
description: "Instructions for how to setup light groups within Home Assistant."
date: 2018-02-23 11:41
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Light
ha_release: 0.65
ha_iot_class: "Local Push"
logo: home-assistant.png
---
The group light platform lets you combine multiple lights into one entity. All child lights of a light group can still be used as usual, but controlling the state of the grouped light will forward the command to each child light.
To enable this platform in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
light:
- platform: group
name: Kitchen Lights
entities:
- light.kitchen_ceiling_lights
- light.kitchen_under_cabinet_lights
- light.kitchen_spot_lights
- light.pendant_lights
```
{% configuration %}
name:
description: The name of the light group. Defaults to "Light Group".
required: false
type: string
entities:
description: A list of entities to be included in the light group.
required: true
type: string list
{% endconfiguration %}
<p class='img'>
<img src='/images/components/light/group.png'>
Example of the light group "Kitchen Lights".
</p>
The supported features of all lights will be added together. For example, if you have one RGB light in a group of otherwise brightness-only lights, the light group will be shown with a color picker.

View File

@ -13,5 +13,5 @@ ha_iot_class: "Local Push"
ha_version: 0.39
---
The `insteon_plm` light platform lets you control your sensors through an INSTEON PowerLinc Modem (PLM) device connected directly to your system on an USB or serial port. To add support, set up the primary [insteon_plm](/components/insteon_plm/) component.
The `insteon_plm` light platform lets you control your dimmable light switches through an INSTEON PowerLinc Modem (PLM) device connected directly to your system on an USB or serial port. To add support, set up the primary [insteon_plm](/components/insteon_plm/) component.

View File

@ -13,7 +13,7 @@ ha_version: 0.53
ha_iot_class: "Local Polling"
---
The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp and Xiaomi Philips LED Ceiling Lamp.
The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp, Xiaomi Philips LED Ceiling Lamp and Xiaomi Philips Eyecare Lamp 2.
Currently, the supported features are `on`, `off`, `set_cct` (colortemp) , `set_bright` (brightness).
@ -28,20 +28,51 @@ light:
name: Xiaomi Philips Smart LED Ball
host: 192.168.130.67
token: YOUR_TOKEN
model: philips.light.bulb
```
Configuration variables:
- **host** (*Required*): The IP of your light.
- **token** (*Required*): The API token of your light.
- **name** (*Optional*): The name of your light.
- **model** (*Optional*): The model of your light. Valid values are `philips.light.bulb`, `philips.light.sread1`, `philips.light.ceiling` and `philips.light.zyceiling`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available.
{% configuration %}
host:
description: The IP address of your device.
required: true
type: string
token:
description: The API token of your device.
required: true
type: string
name:
description: The name of your device.
required: false
type: string
default: Xiaomi Philips Light
model:
description: The model of your device.
required: false
type: string
{% endconfiguration %}
## {% linkable_title Platform Services %}
### Service fan/xiaomi_miio_set_scene
### {% linkable_title Service `light.xiaomi_miio_set_scene` %}
Set one of the 4 available fixed scenes.
| Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------|
| `entity_id` | yes | Only act on specific light. Else targets all. |
| `entity_id` | yes | Only act on a specific light. Else targets all. |
| `scene` | no | Scene, between 1 and 4. |
### {% linkable_title Service `light.xiaomi_miio_set_delayed_turn_off` %}
Delayed turn off.
| Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------|
| `entity_id` | yes | Only act on a specific light. Else targets all. |
| `time_period` | no | Time period for the delayed turn off. |

View File

@ -0,0 +1,61 @@
---
layout: page
title: "Channels"
description: "Instructions on how to integrate Channels into Home Assistant."
date: 2018-03-06 11:00
sidebar: true
comments: false
sharing: true
footer: true
logo: channels.png
ha_category: Media Player
ha_release: 0.65.0
ha_iot_class: "Local Polling"
---
The Channels platform allows you to control [Channels](https://getchannels.com/) from Home Assistant. Play, pause, seek, or skip commercials on an instance of Channels that is running on your network.
Your favorite channels will appear as sources in the Source List in Home Assistant.
To add Channels to your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
media_player:
- platform: channels
name: Family Room Channels
host: 192.168.1.50
```
Configuration variables:
- **host** (*Required*): The IP of the device running Channels, e.g., 192.168.1.50
- **port** (*Optional*): The port where Channels is accessible, defaults to 57000.
- **name** (*Optional*): The name of the Channels instance in Home Assistant, eg. Family Room Channels. Defaults to Channels.
### {% linkable_title Service `channels_seek_forward` %}
Seek forward by the number of seconds currently set in settings on the instance of Channels.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String that points at `entity_id` of Channels app.
### {% linkable_title Service `channels_seek_backward` %}
Seek backward by the number of seconds currently set in settings on the instance of Channels.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String that points at `entity_id` of Channels app.
### {% linkable_title Service `channels_seek_by` %}
Seek forward or backward by a provided number of seconds.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String that points at `entity_id` of Channels app.
| `seconds` | no | Number of seconds to seek in the timeline by. Negative seconds seeks backwards.

View File

@ -0,0 +1,68 @@
---
layout: page
title: "Sony SongPal compatible devices"
description: "Instructions how to integrate Sony Songpal devices into Home Assistant."
date: 2018-02-03 09:00
sidebar: true
comments: false
sharing: true
footer: true
logo: sony.png
ha_category: Media Player
ha_iot_class: "Local Polling"
ha_release: 0.65
---
The `songpal` platform allows you to control Sony's Songpal ("[Audio Control API](https://developer.sony.com/develop/audio-control-api/)") compatible devices such as soundbars, AV receivers and wireless speakers from Home Assistant.
Even when the API officially supports only a few devices (HT-ST5000, HT-MT500, HT-CT800, SRS-ZR5 and STR-DN1080), it has also been confirmed to work on others. [The list of supported devices](http://vssupport.sony.net/en_ww/device.html) from Sony's Songpal website lists devices which are likely to be compatible with this platform.
If the platform works with your non-listed device, or you encounter bugs, please feel free to [report them upstream](https://github.com/rytilahti/python-songpal).
A few notes:
- The quick start-up mode has to be enabled in order to turn the device on.
- Supports currently only one output terminal, i.e. the volume control works only on the first volume controller as reported by the backend library.
- Some devices, e.g. HT-XT3, do not support decreasing the volume step-by-step correctly.
- Feel free to improve the available services!
## {% linkable_title Configuration %}
The platform will be loaded automatically by discovery component. If you want to manually configure it, add the following to your `configuration.yaml` file:
```yaml
media_player:
- platform: songpal
name: my soundbar
endpoint: http://IP_ADDRESS:10000/sony
```
{% configuration %}
name:
description: The name to display for this device.
required: false
type: string
endpoint:
description: API endpoint of the device.
required: true
type: string
{% endconfiguration %}
See [python-songpal's documentation](https://github.com/rytilahti/python-songpal#locating-the-endpoint) how to get your API endpoint.
## {% linkable_title Services %}
In addition to the general [media player services](https://home-assistant.io/components/media_player/#services), the following services are provided:
### {% linkable_title Service `media_player/songpal_set_sound_setting` %}
For a list of available settings and their values use [`songpal sound`](https://github.com/rytilahti/python-songpal#sound-settings) command.
| Service data attribute | Optional | Description |
|------------------------|----------|--------------------------------------------------|
| `entity_id` | yes | Target entity, leave unset for all devices |
| `name` | no | Configuration variable, e.g. `nightmode` |
| `value` | no | New configuration value, e.g. `on` |

View File

@ -0,0 +1,34 @@
---
layout: page
title: "Synology Chat"
description: "Instructions how to add a Synology Chat Bot notifications to Home Assistant."
date: 2018-02-15 07:00
sidebar: true
comments: false
sharing: true
footer: true
ha_release: 0.65
logo: synology.png
ha_category: Notifications
---
The `synology_chat` notification platform allows you to deliver notifications to your [Synology Chat](https://www.synology.com/en-us/dsm/feature/chat) install as a Synology Chat bot.
To configure a Synology Chat bot, first you must create a [Synology Chat Integration Incoming Webhook](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Collaboration/How_to_configure_webhooks_and_slash_commands_in_Chat_Integration#t2.1). After this is complete, you will have a Webhook URL. This is what will be required in the Home Assistant configuration.
To enable the Synology Chat notification in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
notify:
- platform: synology_chat
name: hass_synchat
resource: https://example.your.synology.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=1&token=ABCDEFG
```
Configuration variables:
- **name** (*Required*): Setting the parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`.
- **resource** (*Required*): The incoming webhook URL.
To use notifications, please see the [getting started with automation page](/getting-started/automation/).

View File

@ -2,7 +2,7 @@
layout: page
title: "RESTful Command"
description: "Instructions how to integrate REST commands into Home Assistant."
date: 2016-12-27 00:00
date: 2018-02-24 00:00
sidebar: true
comments: false
sharing: true
@ -32,6 +32,7 @@ Configuration variables:
- **[service_name]** (*Required*): The name used to expose the service. E.g., in the above example, it would be `rest_command.example_request`.
- **url** (*Required*): The URL (support template) for sending request.
- **method** (*Optional*): HTTP method to use (`get`, `post`, `put`, or `delete`). Defaults to `get`.
- **headers** (*Optional*): The headers for the requests.
- **payload** (*Optional*): A string/template to send with request.
- **username** (*Optional*): The username for HTTP authentication.
- **password** (*Optional*): The password for HTTP authentication.

View File

@ -0,0 +1,122 @@
---
layout: page
title: "Filter Sensor"
description: "Instructions how to integrate Data Filter Sensors into Home Assistant."
date: 2018-02-20
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Sensor
ha_release: 0.65
ha_iot_class: "Local Push"
logo: home-assistant.png
---
The `filter` platform enables sensors that process the states of other entities.
`filter` applies a signal processing algorithm to a sensor, previous and current states, and generates a `new state` given the chosen algorithm.
<p class='img'>
<img src='{{site_root}}/images/screenshots/filter-sensor.png' />
</p>
To enable Filter Sensors in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: filter
name: "filtered realistic humidity"
entity_id: sensor.realistic_humidity
filters:
- filter: outlier
window_size: 4
radius: 4.0
- filter: lowpass
time_constant: 10
precision: 2
```
Filters can be chained and are applied according to the order present in the configuration file.
{% configuration %}
entity_id:
description: The entity ID of the sensor to be filtered.
required: true
type: string
name:
description: Name to use in the frontend.
required: false
type: string
filters:
description: Filters to be used.
required: true
type: map
keys:
filter:
description: Algorithm to be used to filter data. Available filters are `lowpass`, `outlier` and `throttle`.
required: true
type: string
window_size:
description: Size of the window of previous states.
required: false
type: int
default: 5
precision:
description: See [_lowpass_](#low-pass) filter. Defines the precision of the filtered state, through the argument of round().
required: false
type: int
default: None
time_constant:
description: See [_lowpass_](#low-pass) filter. Loosely relates to the amount of time it takes for a state to influence the output.
required: false
type: int
default: 10
radius:
description: See [_outlier_](#outlier) filter. Band radius from median of previous states.
required: false
type: float
default: 2.0
{% endconfiguration %}
## {% linkable_title Filters %}
### {% linkable_title Low-pass %}
The Low-pass filter (`lowpass`) is one of signal processing most common filters, as it smooths data by shortcuting peaks and valleys.
The included Low-pass filter is very basic and is based on a moving average, in which the previous data point is weighted with the new data point.
```python
B = 1.0 / time_constant
A = 1.0 - B
LowPass(state) = A * previous_state + B * state
```
The returned value is rounded to the number of decimals defined in (`precision`).
### {% linkable_title Outlier %}
The Outlier filter (`outlier`) is a basic Band-stop filter, as it cuts out any value outside a specific range.
The included Outlier filter will discard any value beyond a band centered on the median of the previous values, replacing it with the median value of the previous values. If inside the band, the
```python
distance = abs(state - median(previous_states))
if distance > radius:
median(previous_states)
else:
state
```
### {% linkable_title Throttle %}
The Throttle filter (`throttle`) will only update the state of the sensor for the first state in the window. This means the filter will skip all other values.
To adjust the rate you need to set the window_size. To throttle a sensor down to 10%, the `window_size` should be set to 10, for 50% should be set to 2.
This filter is relevant when you have a sensor which produces states at a very high-rate, which you might want to throttle down for storing or visualization purposes.

View File

@ -36,6 +36,7 @@ Configuration variables:
- **monitored_resources** (*Optional*): Resource to monitor. Defaults to `activities/steps`.
- **clock_format** (*Optional*): Format to use for `sleep/startTime` resource. Accepts `12H` or `24H`. Defaults to `24H`.
- **unit_system** (*Optional*): Unit system to use for measurements. Accepts `default`, `metric`, `en_US` or `en_GB`. Defaults to `default`.
Below is the list of resources that you can add to `monitored_resources`. One sensor is exposed for every resource.

View File

@ -0,0 +1,22 @@
---
layout: page
title: "Insteon PLM Sensor"
description: "Instructions how to setup the Insteon PLM sensors locally within Home Assistant."
date: 2017-02-19 17:00
sidebar: true
comments: false
sharing: true
footer: true
logo: insteon.png
ha_category: Sensor
ha_iot_class: "Local Push"
ha_version: 0.65
---
The `insteon_plm` sensor platform lets you control your sensors through
an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a
USB or serial port. To add support, set up the primary [insteon_plm]
component.
[insteon_plm]: /components/insteon_plm/

View File

@ -60,8 +60,17 @@ sensor:
description: Display the humidity from the sensor.
pressure:
description: Display the pressure from the sensor.
show_on_map:
description: Option to show the position of the sensor on the map.
required: optional
default: false
type: boolean
{% endconfiguration %}
<p class='note warning'>
If you set `show_on_map` to `True` then the location attributes are named `latitude` and `longitude`. The default name of the location attributes is `lat` and `long` to avoid showing them on the map.
</p>
Not all sensors provide all conditions. Also, it's possible that the sensor values are not available all the time. To check what a sensor is publishing use `curl`:
```bash

View File

@ -0,0 +1,74 @@
---
layout: page
title: Sense
description: "Instructions how to integrate Sense within Home Assistant."
date: 2018-01-11 13:50
sidebar: true
comments: false
sharing: true
footer: true
logo: sense.png
ha_category: Energy
ha_iot_class: "Cloud Polling"
ha_release: 0.65
---
Integrate your [Sense](https://sense.com) meter information into Home Assistant.
To enable this sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
platform: sense
email: CLIENT_ID
password: CLIENT_SECRET
monitored_conditions:
- active_usage
- active_production
- daily_usage
- daily_production
```
Two types of sensors can be monitored and will be created with the following names:
- **Active Usage/Production**: Current active power usage/production in Watts. Updated every 30 seconds.
- **Daily Usage/Production**: Daily power usage/production in kWh. Updated every 5 minutes.
- ...
Weekly, Monthly and Yearly variants are also available.
{% configuration %}
email:
description: The email associated with your Sense account/application.
required: true
type: string
password:
description: The password for your Sense account/application.
required: true
type: string
monitored_conditions:
description: List of sensors to display in the front end.
required: true
type: list
keys:
active_usage:
description: The current power usage in W
active_production:
description: The current solar production in W
daily_usage:
description: Total power used for current day in kWh
daily_production:
description: Total power produced for current day in kWh
weekly_usage:
description: Total power used for current week in kWh
weekly_production:
description: Total power produced for current week in kWh
monthly_usage:
description: Total power used for current month in kWh
monthly_production:
description: Total power produced for current month in kWh
yearly_usage:
description: Total power used for current year in kWh
yearly_production:
description: Total power produced for current year in kWh
{% endconfiguration %}

View File

@ -0,0 +1,94 @@
---
layout: page
title: "Simulated sensor"
description: "Component for simulating a numerical sensor."
date: 2018-02-20 08:00
sidebar: true
comments: false
sharing: true
footer: true
logo: home-assistant.png
ha_category: Sensor
ha_iot_class: "Local Polling"
ha_release: 0.65
---
This component provides a simulated sensor that generates a time-varying signal ```V(t)``` given by the [function](https://en.wikipedia.org/wiki/Sine_wave):
```
V(t) = M + A sin((2 pi (t - t_0) / w) + P) + N(s)
```
where:
- **M** = the [mean](https://en.wikipedia.org/wiki/Mean) value of the sensor
- **A** = the [amplitude](https://en.wikipedia.org/wiki/Amplitude) of the periodic contribution
- **t** = the time when a value is generated
- **t_0** = the time when the sensor is started
- **w** = the time [period](https://en.wikipedia.org/wiki/Periodic_function) in seconds for a single complete cycle of the periodic contribution
- **P** = the [phase](https://en.wikipedia.org/wiki/Phase_(waves)) offset to add to the periodic contribution, in units of degrees
- **N(s)** = the random [Gaussian noise](https://en.wikipedia.org/wiki/Gaussian_noise) with spread **s**
A simulated sensor with default values can be added to home-assistant using the following config:
```yaml
sensor:
- platform: simulated
```
To give an example of simulating real world data, a simulated relative humidity sensor (in %) can be added using the following config:
```yaml
sensor:
- platform: simulated
name: 'simulated relative humidity'
unit: '%'
amplitude: 0 # Turns off the periodic contribution
mean: 50
spread: 10
seed: 999
```
Configuration variables:
{% configuration %}
name:
description: The name of the sensor
required: false
default: Defaults to 'simulated'
type: string
unit:
description: The unit to apply
required: false
default: Defaults to 'value'
type: string
amplitude:
description: The amplitude of periodic contribution
required: false
default: 1
type: float
mean:
description: The mean level of the sensor
required: false
default: 0
type: float
period:
description: The time in seconds for one complete oscillation of the periodic contribution
required: false
default: 0
type: seconds
phase:
description: The phase offset (in degrees) to apply to the periodic component
required: false
default: 0
type: float
seed:
description: The [seed](https://docs.python.org/3.6/library/random.html#random.seed) value for the random noise component
required: false
default: 999
type: int
spread:
description: The spread is the range of the randomly distributed values about their mean. This is sometimes referred to as the Full Width at Half Maximum ([FWHM](https://en.wikipedia.org/wiki/Full_width_at_half_maximum)) of the random distribution
required: false
default: None
type: float
{% endconfiguration %}

View File

@ -2,13 +2,13 @@
layout: page
title: "Smappee Sensor"
description: "Instructions how to integrate Smappee energy monitor into Home Assistant."
date: 2018-01-06 16:15
date: 2018-02-26 08:37
sidebar: true
comments: false
sharing: true
footer: true
logo: smappee.png
ha_release: "0.62"
ha_release: "0.64"
ha_category: Sensor
---

View File

@ -29,7 +29,7 @@ sensor:
Configuration options for the Crime Reports Sensor:
- **name** (*Required*): Name the sensor whatever you want.
- **radius** (*Required*): Radius in meters.
- **radius** (*Required*): Radius in miles.
- **days** (*Optional*): Defaults to 1 day.
- **latitude** (*Optional*): Defaults to your home zone latitude.
- **longitude** (*Optional*): Defaults to your home zone longitude.

View File

@ -0,0 +1,55 @@
---
layout: page
title: "Zestimate"
description: "Instructions on how to integrate the Zestimate sensor into Home Assistant."
date: 2018-03-02 3:10
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Sensor
ha_release: 0.65
ha_iot_class: "Cloud Polling"
---
The `zestimate` sensor allows one to track the Zestimate value of properties using the [Zillow API](https://www.zillow.com/howto/api/APIOverview.htm).
You will need to sign up for the Zillow API at the following link [Zillow API](https://www.zillow.com/howto/api/APIOverview.htm). You will also need the Zillow property ID for each property you'd like to track. This information is available from the URL of a property you are interested in.
For example, the White House zpid is 84074482 and can be found in it's Zillow URL: https://www.zillow.com/homedetails/1600-Pennsylvania-Ave-NW-Washington-DC-20006/84074482_zpid/
To enable this sensor, add the following lines to your `configuration.yaml`.
```yaml
sensor:
- platform: zestimate
api_key: API_KEY
zpid:
- <your zpid 1>
- <your zpid 2>
```
{% configuration %}
api_key:
description: The API key to access the service.
required: true
type: string
zpid:
description: Property IDs to track in the front end.
required: true
type: list
{% endconfiguration %}
### Additional Attributes
The following additional attributes are also available via the sensor.
These attributes are available:
- Last update
- 30 Day change in value
- Valuation Range High
- Valuation Range Low
- Address
- Currency
- Amount

View File

@ -2,13 +2,13 @@
layout: page
title: "Smappee"
description: "Instructions how to setup Smappee within Home Assistant."
date: 2018-01-06 16:15
date: 2018-02-26 08:37
sidebar: true
comments: false
sharing: true
footer: true
logo: smappee.png
ha_release: "0.62"
ha_release: "0.64"
ha_category: Hub
---

View File

@ -13,7 +13,7 @@ ha_iot_class: "Local Push"
ha_version: 0.39
---
The `insteon_plm` switch platform lets you control your switches through
The `insteon_plm` switch platform lets you control your on/off switches through
an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a
USB or serial port. To add support, set up the primary [insteon_plm]
component.

View File

@ -2,13 +2,13 @@
layout: page
title: "Smappee Switch"
description: "Instructions how to integrate Smappee Comfort Plug into Home Assistant."
date: 2018-01-06 16:15
date: 2018-02-26 08:37
sidebar: true
comments: false
sharing: true
footer: true
logo: smappee.png
ha_release: "0.62"
ha_release: "0.64"
ha_category: Switch
ha_iot_class: "Local Push"
---

View File

@ -0,0 +1,34 @@
---
layout: page
title: UpCloud Switch
description: Instructions on how to set up UpCloud switches within Home Assistant.
date: 2018-01-28 20:00
sidebar: true
comments: false
sharing: true
footer: true
logo: upcloud.png
ha_category: Switch
ha_release: 0.65
ha_iot_class: Cloud Polling
---
The `upcloud` switch platform allows you to control (start/stop) your UpCloud servers.
To use your UpCloud servers, you first have to set up your [UpCloud hub](/components/upcloud/) and then add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
switch:
- platform: upcloud
servers:
- 002167b7-4cb1-44b7-869f-e0900ddeeae1
- 00886296-6137-4074-afe3-068e16d89d00
```
{% configuration %}
servers:
description: List of servers you want to control.
required: true
type: list
{% endconfiguration %}

View File

@ -0,0 +1,16 @@
---
layout: page
title: "Volvo On Call"
description: "Instructions for how to integrate Volvo On Call into Home Assistant."
date: 2016-10-02 17:00
sidebar: true
comments: false
sharing: true
footer: true
logo: volvo.png
ha_category: Presence Detection
ha_release: "0.30"
---
Integrates Volvo on Call into Home Assistant. See the [main component](/components/volvooncall/) for configuration instructions.

View File

@ -28,9 +28,31 @@ switch:
name: Original Xiaomi Mi Smart WiFi Socket
host: 192.168.130.59
token: YOUR_TOKEN
model: chuangmi.plug.m1
```
Configuration variables:
- **host** (*Required*): The IP of your plug.
- **token** (*Required*): The API token of your plug.
- **name** (*Optional*): The name of your plug.
- **host** (*Required*): The IP of your miio device.
- **token** (*Required*): The API token of your miio device.
- **name** (*Optional*): The name of your miio device.
- **model** (*Optional*): The model of your miio device. Valid values are chuangmi.plug.v1`, `qmi.powerstrip.v1`, `zimi.powerstrip.v2`, `chuangmi.plug.m1` and `chuangmi.plug.v2`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available.
{% configuration %}
host:
description: The IP address of your device.
required: true
type: string
token:
description: The API token of your device.
required: true
type: string
name:
description: The name of your device.
required: false
type: string
default: Xiaomi Miio Switch
model:
description: The model of your device.
required: false
type: string
{% endconfiguration %}

View File

@ -18,11 +18,11 @@ The `Tesla` component offers integration with the [Tesla](https://auth.tesla.com
This component provides the following platforms:
- Binary sensors - such as parking and charger connection.
- Sensors - such as Battery level, Inside/Outside temperature.
- Sensors - such as Battery level, Inside/Outside temperature, odometer, and estimated range.
- Device tracker - to track location of your car
- Lock - Door lock. Enables you to control Tesla's door lock
- Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system.
- Switch - Charger switch. Allow you to start/stop charging.
- Switch - Charger and max range switch. Allow you to start/stop charging and set max range charging.
To use Tesla in your installation, add the following to your `configuration.yaml` file:

View File

@ -0,0 +1,44 @@
---
layout: page
title: UpCloud
description: Instructions how to integrate UpCloud within Home Assistant.
date: 2018-01-28 20:00
sidebar: true
comments: false
sharing: true
footer: true
ha_category: Hub
ha_release: 0.65
logo: upcloud.png
ha_iot_class: Cloud Polling
---
The `upcloud` component allows you to access the information about your [UpCloud](https://www.upcloud.com/) servers from Home Assistant.
Set up your API user credentials in your [UpCloud control panel](https://my.upcloud.com/).
To integrate your UpCloud servers with Home Assistant, add the following section to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
upcloud:
username: YOUR_API_USERNAME
password: YOUR_API_PASSWORD
```
{% configuration %}
username:
description: Your UpCloud API username.
required: true
type: string
password:
description: Your UpCloud API user password.
required: true
type: string
scan_interval:
description: Update interval in seconds.
required: false
type: int
default: 60
{% endconfiguration %}

View File

@ -56,7 +56,7 @@ In addition to all of the services provided by the `vacuum` component (`turn_on`
- `xiaomi_remote_control_move`
- `xiaomi_remote_control_move_step`
### {% linkable_title Service `vacuum/xiaomi_remote_control_start` %}
### {% linkable_title Service `vacuum.xiaomi_remote_control_start` %}
Start the remote control mode of the robot. You can then move it with `remote_control_move`; when done, call `remote_control_stop`.
@ -64,7 +64,7 @@ Start the remote control mode of the robot. You can then move it with `remote_co
|---------------------------|----------|-------------------------------------------------------|
| `entity_id` | yes | Only act on specific robot; default targets all |
### {% linkable_title Service `vacuum/xiaomi_remote_control_stop` %}
### {% linkable_title Service `vacuum.xiaomi_remote_control_stop` %}
Exit the remote control mode of the robot.
@ -72,7 +72,7 @@ Exit the remote control mode of the robot.
|---------------------------|----------|-------------------------------------------------------|
| `entity_id` | yes | Only act on specific robot; default targets all |
### {% linkable_title Service `vacuum/xiaomi_remote_control_move` %}
### {% linkable_title Service `vacuum.xiaomi_remote_control_move` %}
Remote control the robot. Please ensure you first set it in remote control mode with `remote_control_start`.
@ -83,8 +83,7 @@ Remote control the robot. Please ensure you first set it in remote control mode
| `rotation` | no | Rotation: between -179 degrees and 179 degrees |
| `duration` | no | The number of seconds that the robot should move for |
### {% linkable_title Service `vacuum/xiaomi_remote_control_move_step` %}
### {% linkable_title Service `vacuum.xiaomi_remote_control_move_step` %}
Enter remote control mode, make one move, stop, and exit remote control mode.

View File

@ -78,6 +78,76 @@ Remark: to restart your Home Assistant within Synology NAS, you just have to do
If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assistant on Synology Docker these instructions do not correctly configure the container to access the USB devices. To configure these devices on your Synology Docker Home Assistant you can follow the instructions provided [here](https://philhawthorne.com/installing-home-assistant-io-on-a-synology-diskstation-nas/) by Phil Hawthorne.
</p>
### {% linkable_title QNAP NAS %}
As QNAP within QTS now supports Docker (with a neat UI), you can simply install Home Assistant using docker without the need for command-line. For details about the package (including compatability-information, if your NAS is supported), see https://www.qnap.com/solution/container_station/en/index.php
The steps would be:
- Install “Container Station” package on your Qnap NAS
- Launch Container Station and move to “Create Container”-section
- Search image “homeassistant/home-assistant” with
docker hub and click on “Install”
- Choose "latest" version and click next
- Choose a container-name you want (e.g.
“homeassistant”)
- Click on “Advanced Settings”
- Within “Shared Folders” click on "Volume from host" > "Add" and
choose either an existing folder or add a new folder. The “mount
point” has to be “/config”, so that Home Assistant will use it for
the configs and logs.
- Within “Network” and select Network Mode to “Host”
- To ensure that Home Assistant displays the correct
timezone go to the “Environment” tab and click the plus sign then add
`variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
- Click on “Create”
- Wait for some time until your NAS has created the container
- Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Qnap NAS IP address - for example `http://192.xxx.xxx.xxx:8123`)
Remark: to update your Home Assistant on your Docker within Qnap NAS, you just remove container and image and do steps again (Don't remove "config" folder)
If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assistant on Qnap Docker, Fallow this step:
**Z-wave:**
- Connect to your NAS over SSH
- Load cdc-acm kernel module(when nas restart need to run this command)
`insmod /usr/local/modules/cdc-acm.ko`
- Find USB devices attached. Type command:
`ls /dev/tty*`
The above command should show you any USB devices plugged into your NAS. If you have more than one, you may get multiple items returned. Like : `ttyACM0`
- Run Docker command:
`docker run --name home-assistant --net=host --privileged -itd -v /share/CACHEDEV1_DATA/Public/homeassistant/config:/config -e variable=TZ -e value=Europe/London --device /dev/ttyACM0 homeassistant/home-assistant`
`-v` is your config path
`-e` is set timezone
- Edit configuration.yaml
```
zwave:
usb_path: /dev/ttyACM0
```
That will tell Home Assistant where to look for our Z-wave radio.
**Bluetooth:**
- Connect to your NAS over SSH
- Run Docker command:
`docker run --name home-assistant --net=host --privileged -itd -v /share/CACHEDEV1_DATA/Public/homeassistant/config:/config -e variable=TZ -e value=Europe/London -v /dev/bus/usb:/dev/bus/usb -v /var/run/dbus:/var/run/dbus homeassistant/home-assistant`
First `-v` is your config path
`-e` is set timezone
- Edit configuration.yaml
```
device_tracker:
- platform: bluetooth_tracker
```
### {% linkable_title Restart %}
If you change the configuration you have to restart the server. To do that you have 2 options.

View File

@ -0,0 +1,604 @@
---
layout: post
title: "0.65: Rename entities, new filter sensor, UpCloud and Channels"
description: "A new Home Assistant release full of amazing new features. Rename entities without a restart, filter out anomalies or apply other filters to data, improved HomeKit support."
date: 2018-03-09 00:01:00
date_formatted: "March 9, 2018"
author: Paulus Schoutsen
author_twitter: balloob
comments: true
categories: Release-Notes
og_image: /images/blog/2018-03-0.65/entity-registry-name.gif
---
<a href='/components/#version/0.65'><img src='/images/blog/2018-03-0.65/components.png' style='border: 0;box-shadow: none;'></a>
Release 0.65 has arrived and oh boy, is it awesome. First off, in case you have missed the previous release notes and [announcements](https://home-assistant.io/blog/2017/10/06/deprecating-python-3.4-support/): **Starting with this release, Home Assistant has dropped support for Python 3.4. The minimum supported version is now Python 3.5.3.** If you are on Hass.io or Docker, you'll automatically be running the latest and greatest. If you're on an older Hassbian installation or did your own Linux setup you'll need to upgrade to at least Python 3.5.3.
## {% linkable_title Naming entities %}
With the introduction of the entity registry in 0.63, Home Assistant is making sure that the same devices always receive the same entity IDs. This release is taking it a step further by allowing users to change the name of a device from the frontend. Changing the name will be instantly applied and overrides whatever name the device is given by the integration. If you want to switch back to the name from the integration, set the name to blank.
_This feature is, just like the entity registry, only available for integrations that provide unique IDs for their entities. Adding this to each integration is still a work in progress._
<p class='img'>
<img
src='/images/blog/2018-03-0.65/entity-registry-name.gif'
alt='Screencap of interaction with the UI to override the name of a light.'>
The new entity registry settings page in action.
</p>
## {% linkable_title Filter sensor %}
The [filter sensor][sensor.filter docs] is a new 2nd order sensor by [@dgomes]: it will consume data from a sensor entity and apply filters to it. For the initial implementation it comes with Low-pass, Outlier and Throttle filters. Expect more to be added in the future.
```yaml
sensor:
- platform: filter
name: "filtered realistic humidity"
entity_id: sensor.realistic_humidity
filters:
- filter: outlier
window_size: 4
radius: 4.0
- filter: lowpass
time_constant: 10
precision: 2
```
<p class='img'>
<img
src='/images/blog/2018-03-0.65/filter-example.png'
alt='Chart showing a humidity sensor with a lot of spikes and a smooth graph produced by the new filter sensor.'>
Graph showing both the input sensor and the output of the filter sensor.
</p>
## {% linkable_title Light Group %}
We have had some discussion lately and realized that our current group component is very limiting. Extending it would probably lead to more confusion so we've decided to take a new approach: groups that are designed to be part of a specific component. The first one in this series comes at the hand of [@OttoWinter]: the group light ([docs][light.group docs]).
The group light creates a single light inside Home Assistant that is representing a group of lights. All commands will be forwarded and the state is a combination of all the lights.
```yaml
light:
- platform: group
name: Cool Light Group
entities:
- light.amazing_light
- light.foobar
- light.sun
```
## {% linkable_title HomeKit %}
HomeKit got some more upgrades. We've added support for temperature sensors in Fahrenheit, alarm systems, switches and thermostats. Just a few releases more and we should be able to cover it all.
## {% linkable_title Optional words for the Conversation component %}
The [conversation component](/components/conversation/) has always been a great introduction to controlling your house by voice. There is no hotword detection or powerful language engine behind it, but it gives a great intro to what is possible. Starting with this release, it will get a little bit more powerful with the introduction of optional words. To mark a word optional, wrap it in square brackets: `Change the light to [the color] {color}`.
```yaml
# Example configuration.yaml entry
conversation:
intents:
LivingRoomTemperature:
- What is the temperature in the living room
- What is [the] living room temperature
intent_script:
LivingRoomTemperature:
speech:
text: It is currently {{ states.sensor.temperature }} degrees in the living room.
```
<p class='img'>
<img
src='/images/blog/2018-03-0.65/voice-commands.png'
alt='Screenshot of the frontend with the conversation panel open.'>
Have conversations with Home Assistant via the conversation component.
</p>
## {% linkable_title New Platforms %}
- Synology Chat as a notification platform ([@cmsimike] - [#12596]) ([notify.synology_chat docs]) (new-platform)
- KNX Component: Scene support and expose sensor values ([@Julius2342] - [#11978]) ([knx docs]) ([scene docs]) ([binary_sensor.knx docs]) (new-platform)
- Adds simulated sensor ([@robmarkcole] - [#12539]) ([sensor.simulated docs]) (new-platform)
- Add Songpal ("Sony Audio Control API") platform ([@rytilahti] - [#12143]) ([media_player.songpal docs]) (new-platform)
- Add UpCloud platform ([@scop] - [#12011]) ([upcloud docs]) ([binary_sensor.upcloud docs]) ([switch.upcloud docs]) (new-platform)
- Added Sense energy monitor sensor ([@kbickar] - [#11580]) ([sensor.sense docs]) (new-platform)
- Filter Sensor ([@dgomes] - [#12650]) ([sensor.filter docs]) (new-platform)
- Add light.group platform ([@OttoWinter] - [#12229]) ([light.group docs]) (new-platform)
- Egardia redesign - generic component and sensor support ([@jeroenterheerdt] - [#11994]) ([egardia docs]) ([alarm_control_panel.egardia docs]) ([binary_sensor.egardia docs]) (breaking change) (new-platform)
- Add support for Zillow Zestimate sensor ([@jcconnell] - [#12597]) ([sensor.zestimate docs]) (new-platform)
- Add a Media Player Component for Channels ([@maddox] - [#12937]) ([media_player.channels docs]) (new-platform)
- Add support for alarm system, switch and thermostat to homekit ([@maxclaey] - [#12819]) ([homekit docs]) (new-platform)
- Add camera proxy ([@PhracturedBlue] - [#12006]) ([camera.proxy docs]) (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.
<!--more-->
## {% linkable_title Breaking Changes %}
- Insteon PLM: If you have created platform overrides in your configuration.yaml file to change a your INSTEON device to map to a different Home Assistant platform, that mapping will no longer be in effect. Please see the new device override capabilities in the [insteon_plm documentation](https://home-assistant.io/components/insteon_plm/). ([@teharris1] - [#12534]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) (breaking change)
- AirVisual's air index unit is AQI (Air Quality Index), not PSI (Pressure per Square Inch). ([@chilicheech] - [#12730]) ([sensor.airvisual docs]) (breaking change)
- TekSavvy Sensor: The sensor entity id for peak upload usage used to be `sensor.teksavvy_on_peak_upload_` this has been changed to `sensor.teksavvy_on_peak_upload`. The `usage` title was shared between and therefore indeterminate between GB and % usage. Therefore % usage entity ID has been changed to `sensor.teksavvy_usage_ratio` ([@mikeodr] - [#12325]) ([sensor.teksavvy docs]) (breaking change)
- Egardia redesign - generic component and sensor support ([@jeroenterheerdt] - [#11994]) ([egardia docs]) ([alarm_control_panel.egardia docs]) ([binary_sensor.egardia docs]) (breaking change) (new-platform)
- zip_code for the Pollen integration is now required to have quotes around it to prevent accidental errors: `zip_code: "00544"` ([@bachya] - [#12934]) ([sensor.pollen docs]) (breaking change)
- Google Assistant integration: It is no longer possible to override the domain that Home Assistant uses for an entity. This was bound to go wrong when we would test supported features for different domains. Also removed support for disguising temperature sensors as thermostats. We should follow the traits that Google offer us and not offer things that will only work half. ([@balloob] - [#12959]) ([google_assistant docs]) ([light docs]) (breaking change)
- The LimitlessLED white temperature range has been adjusted and should now match the Mi-Light smartphone app for identical Kelvin values. ([@amelchio] - [#12971]) ([light.limitlessled docs]) (breaking change)
## {% linkable_title All changes %}
- Hello Python 3.5 ([@balloob] - [#12610])
- Fix CODEOWNERS permissions ([@OttoWinter] - [#12621])
- Xiaomi Aqara Gateway: Service descriptions added ([@syssi] - [#12631])
- Removing asyncio.coroutine syntax from some components ([@Julius2342] - [#12507])
- Allow renaming entities in entity registry ([@balloob] - [#12636]) ([config docs])
- Check if $files is empty, don't try to execute it ([@armills] - [#12651])
- Removed py34 ([@cdce8p] - [#12648])
- Improved Homekit tests ([@cdce8p] - [#12647]) ([homekit docs])
- Removing asyncio.coroutine syntax from HASS core ([@Julius2342] - [#12509])
- Synology Chat as a notification platform ([@cmsimike] - [#12596]) ([notify.synology_chat docs]) (new-platform)
- Enable pytradfri during build, and include in Docker ([@lwis] - [#12662])
- Upgrade insteonplm to 0.8.2 (required refactoring) ([@teharris1] - [#12534]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) (breaking change)
- Homekit Update, Support for TempSensor (°F) ([@cdce8p] - [#12676]) ([homekit docs])
- Fix formatting of minutes for sleep start in the fitbit sensor ([@awkwardDuck] - [#12664]) ([sensor.fitbit docs])
- KNX Component: Scene support and expose sensor values ([@Julius2342] - [#11978]) ([knx docs]) ([scene docs]) ([binary_sensor.knx docs]) (new-platform)
- Added config validator for future group platforms ([@cdce8p] - [#12592])
- Adds simulated sensor ([@robmarkcole] - [#12539]) ([sensor.simulated docs]) (new-platform)
- Add history_graph component to demo ([@balloob] - [#12681]) ([demo docs])
- Next generation of Xiaomi Aqara devices added ([@syssi] - [#12659]) ([xiaomi_aqara docs]) ([switch.xiaomi_aqara docs])
- Fix homekit: temperature calculation ([@cdce8p] - [#12720]) ([homekit docs])
- AsusWRT log exceptions ([@kellerza] - [#12668]) ([device_tracker.asuswrt docs])
- Homekit schema gracefully fail with integer ([@kellerza] - [#12725]) ([homekit docs])
- Update core HSV color scaling to standard scales: ([@armills] - [#12649]) ([light.hue docs]) ([light.lifx docs])
- correct air index unit ([@chilicheech] - [#12730]) ([sensor.airvisual docs]) (breaking change)
- Remove automatic sqlite vacuum ([@amelchio] - [#12728])
- Disable asuswrt tests ([@armills] - [#12663])
- Fix Citybikes naming ([@aronsky] - [#12661]) ([sensor.citybikes docs])
- Xiaomi MiIO Light: Flag the device as unavailable if not reachable ([@syssi] - [#12449]) ([light.xiaomi_miio docs])
- Check_config await error ([@kellerza] - [#12722])
- Add Songpal ("Sony Audio Control API") platform ([@rytilahti] - [#12143]) ([media_player.songpal docs]) (new-platform)
- Quote services.yaml string ([@amelchio] - [#12763])
- Intent: Set light color ([@balloob] - [#12633]) ([light docs])
- Update Yi platform to make use of async/await ([@bachya] - [#12713]) ([camera.yi docs])
- Add custom header support for rest_command ([@doctorjames] - [#12646]) ([rest_command docs])
- Round humidity for display purposes ([@PhilRW] - [#12766]) ([climate docs]) ([weather docs]) ([climate.wink docs]) ([weather.darksky docs])
- Xiaomi MiIO Vacuum: Use a unique data key per domain ([@syssi] - [#12743]) ([vacuum.xiaomi_miio docs])
- Add UpCloud platform ([@scop] - [#12011]) ([upcloud docs]) ([binary_sensor.upcloud docs]) ([switch.upcloud docs]) (new-platform)
- Add Unit System Option For Fitbit ([@bertbert72] - [#11817]) ([sensor.fitbit docs])
- Add 'lock' device class ([@swilson] - [#11640]) ([binary_sensor docs])
- Bump frontend to 20180228.1 ([@balloob] - [#12786]) ([frontend docs])
- Fix when 2 states match with same name ([@balloob] - [#12771])
- MQTT Static Typing ([@OttoWinter] - [#12433]) ([mqtt docs])
- Add "headers" config parameter to rest switch ([@mfrueh] - [#12706]) ([switch.rest docs])
- Added Sense energy monitor sensor ([@kbickar] - [#11580]) ([sensor.sense docs]) (new-platform)
- TekSavvy Sensor unlimited bandwidth support ([@mikeodr] - [#12325]) ([sensor.teksavvy docs]) (breaking change)
- iCloud location tracking improvements ([@reedriley] - [#12399]) ([device_tracker.icloud docs])
- Support serving of backend translations ([@armills] - [#12453]) ([frontend docs])
- Translation cleanup ([@armills] - [#12804])
- Take ownership of Emby, Eight Sleep, Hikvision ([@mezz64] - [#12803])
- Bump pyHik version, digest auth, more device support ([@mezz64] - [#12801]) ([binary_sensor.hikvision docs])
- Only run deploy from lint branch ([@armills] - [#12805])
- Add optional words to conversation utterances ([@balloob] - [#12772]) ([conversation docs])
- Changed default from `all` to `changed` ([@cdce8p] - [#12660])
- Fix flakiness in tests ([@balloob] - [#12806])
- Tibber: retry if we fail to connect at startup ([@danielhiversen] - [#12620]) ([sensor.tibber docs])
- Cast Python Async Await Syntax ([@OttoWinter] - [#12816]) ([media_player.cast docs])
- Filter Sensor ([@dgomes] - [#12650]) ([sensor.filter docs]) (new-platform)
- MQTT Python 3.5 Async Await Syntax ([@OttoWinter] - [#12815]) ([mqtt docs])
- Improved Homekit tests ([@cdce8p] - [#12800]) ([homekit docs])
- Add light.group platform ([@OttoWinter] - [#12229]) ([light.group docs]) (new-platform)
- Add icons to Xiaomi Aqara sensors ([@bakedraccoon] - [#12814]) ([sensor.xiaomi_aqara docs])
- Egardia redesign - generic component and sensor support ([@jeroenterheerdt] - [#11994]) ([egardia docs]) ([alarm_control_panel.egardia docs]) ([binary_sensor.egardia docs]) (breaking change) (new-platform)
- Skip flaky light.group test [skipci] ([@balloob] - [#12847])
- Update volvooncall.py ([@danielhiversen] - [#12834]) ([switch.volvooncall docs])
- Address upcloud post-merge comments (#12011) ([@scop] - [#12835]) ([upcloud docs]) ([binary_sensor.upcloud docs]) ([switch.upcloud docs])
- Keep auto groups during group reload ([@amelchio] - [#12841]) ([group docs])
- PyXiaomiGateway version bumped. ([@syssi] - [#12828]) ([xiaomi_aqara docs])
- Fix light group update before add ([@OttoWinter] - [#12844]) ([light.group docs])
- IndexError (list index out of range) fixed. ([@syssi] - [#12858]) ([sensor.xiaomi_aqara docs])
- Fix dead Sonos web interface even more ([@amelchio] - [#12851]) ([media_player.sonos docs])
- Updated to use latest ihcsdk version ([@dingusdk] - [#12865]) ([ihc docs])
- Add unique id for Tibber sensor ([@danielhiversen] - [#12864]) ([sensor.tibber docs])
- Add support for Zillow Zestimate sensor ([@jcconnell] - [#12597]) ([sensor.zestimate docs]) (new-platform)
- Grammar fix 'an unique' ([@amelchio] - [#12870])
- Add SQL index to states.event_id ([@amelchio] - [#12825])
- Optimize logbook SQL query ([@amelchio] - [#12881]) ([logbook docs])
- await syntax knx scene ([@Julius2342] - [#12879]) ([scene docs])
- Fix 0 value when home-assistant restarts ([@bokub] - [#12874]) ([sensor.history_stats docs])
- Fix aggressive scan intervals ([@balloob] - [#12885]) ([alarm_control_panel.concord232 docs]) ([binary_sensor.concord232 docs]) ([sensor.folder docs]) ([sensor.simulated docs])
- Fix interaction with hyperion on NodeMCU ([@a-andre] - [#12872]) ([light.hyperion docs])
- Add the Gamerscore and Tier of the account ([@kevintuhumury] - [#12867]) ([sensor.xbox_live docs])
- Improve influxdb throughput ([@amelchio] - [#12882]) ([influxdb docs])
- Add config flow for Hue ([@balloob] - [#12830]) ([config docs]) ([hue docs])
- Fix issue with guest August lock being included ([@snjoetw] - [#12893]) ([august docs])
- Upgrade to py-canary 0.4.1 ([@snjoetw] - [#12894]) ([canary docs])
- update html5 to async/await ([@perosb] - [#12895]) ([notify.html5 docs])
- Adding additional switches and sensors for Tesla ([@alandtse] - [#12241]) ([device_tracker.tesla docs]) ([sensor.tesla docs]) ([switch.tesla docs])
- Additional radio schemes for sonos ([@amelchio] - [#12886]) ([media_player.sonos docs])
- Fix Edimax new firmware auth error and move to pyedimax fork ([@andreipop2005] - [#12873]) ([switch.edimax docs])
- InfluxDB cleanups ([@amelchio] - [#12903]) ([influxdb docs])
- Fix for moisture sensors in isy994 ([@thejta] - [#12734]) ([binary_sensor.isy994 docs])
- Apple TV should return all supported features ([@lucasweb78] - [#12167]) ([media_player.apple_tv docs])
- Remove dynamic controls from sonos ([@amelchio] - [#12908]) ([media_player.sonos docs])
- Fix async method call in sync context ([@balloob] - [#12890]) ([device_tracker.icloud docs])
- update html5 to async/await tests ([@perosb] - [#12896])
- Fixing small naming bug ([@ebfio] - [#12911]) ([sensor.serial_pm docs])
- Tibber: Check if the current electricity price is available before we… ([@danielhiversen] - [#12905]) ([sensor.tibber docs])
- Add empty unit to systemmonitor load averages ([@DanNixon] - [#12900]) ([sensor.systemmonitor docs])
- update notify html5 dependencies ([@perosb] - [#12898]) ([notify.html5 docs])
- Xiaomi MiIO Remote: Lazy discover disabled ([@syssi] - [#12710]) ([remote.xiaomi_miio docs])
- Xiaomi MiIO Switch: Allow unavailable devices at startup by model setting ([@syssi] - [#12626]) ([switch.xiaomi_miio docs])
- Update python-coinbase to 2.1.0 ([@balloob] - [#12925]) ([coinbase docs])
- Remove unused cloud APIs ([@balloob] - [#12913]) ([cloud docs])
- Upgrade to aiohttp 3 ([@balloob] - [#12921]) ([api docs]) ([http docs]) ([shopping_list docs])
- Flaky tests ([@balloob] - [#12931])
- Addresses issues with Pollen.com API troubles ([@bachya] - [#12930]) ([sensor.pollen docs])
- Set supported features based on capabilities of device ([@maxclaey] - [#12922]) ([climate.nest docs])
- Bumped (minor) version of xknx within knx-component. This fixes a bug with inverted percentage within sensors. ([@Julius2342] - [#12929]) ([knx docs]) ([light.knx docs])
- Added checks for empty replies from REST calls and supporting tests ([@nickovs] - [#12904]) ([sensor.rest docs])
- Reinstate our old virtual env check in favor of pip ([@balloob] - [#12932])
- Support for queries with no results (fix for #12856) ([@dgomes] - [#12888]) ([sensor.sql docs])
- Fix netatmo sensor warning from invalid Voluptuous default ([@amelchio] - [#12933]) ([sensor.netatmo docs])
- Updated to enforce quoted ZIP codes for Pollen ([@bachya] - [#12934]) ([sensor.pollen docs]) (breaking change)
- Added support for multiple onvif profiles ([@karlkar] - [#11651]) ([camera.onvif docs])
- Make ubus dhcp name resolution optional ([@rmounce] - [#12658]) ([device_tracker.ubus docs])
- Add add_devices back to rpi_camera ([@feanor12] - [#12947]) ([camera.rpi_camera docs])
- Remove weird tests ([@balloob] - [#12936])
- optional displaying the sensors location on the map ([@c7h] - [#12375]) ([sensor.luftdaten docs])
- [SQL Sensor] partial revert of #12452 ([@dgomes] - [#12956]) ([sensor.sql docs])
- Fix LIFX color conversions ([@amelchio] - [#12957]) ([light.lifx docs])
- BugFix Popp strike lock not discovered in homeassistant. ([@turbokongen] - [#12951]) ([zwave docs])
- Add a Media Player Component for Channels ([@maddox] - [#12937]) ([media_player.channels docs]) (new-platform)
- Telegram_bot three platform support proxy_url and proxy_params ([@crhan] - [#12878]) ([telegram_bot.broadcast docs]) ([telegram_bot.polling docs]) ([telegram_bot.webhooks docs])
- Add support for alarm system, switch and thermostat to homekit ([@maxclaey] - [#12819]) ([homekit docs]) (new-platform)
- Pin lokalise script to working version ([@armills] - [#12965])
- Hue: Don't change brightness when changing just color ([@balloob] - [#12940]) ([light.hue docs])
- LIFX async/await conversion ([@amelchio] - [#12973]) ([light.lifx docs])
- IMAP sensor async/await conversion ([@amelchio] - [#12988]) ([sensor.imap docs])
- Refactor Google Assistant ([@balloob] - [#12959]) ([google_assistant docs]) ([light docs]) (breaking change)
- Bump pyEmby version to support aiohttp => 3 ([@mezz64] - [#12986]) ([media_player.emby docs])
- Update pyalarmdotcom version ([@koolsb] - [#12987]) ([alarm_control_panel.alarmdotcom docs])
- Show the error message when Zabbix fails to log in ([@cyberjacob] - [#12985]) ([zabbix docs])
- Script/gen_requirements: Ignore package families ([@cdce8p] - [#12963])
- Fix Sonos group discovery ([@amelchio] - [#12970]) ([media_player.sonos docs])
- Check color temp range for google assistant ([@balloob] - [#12994]) ([google_assistant docs])
- Fix limitlessled color temperature ([@amelchio] - [#12971]) ([light.limitlessled docs]) (breaking change)
- Fixes notify.html5 for notifications on FireFox ([@corneyl] - [#12993]) ([notify.html5 docs])
- Move HomeAssistantView to separate file. Convert http to async syntax. [skip ci] ([@fanthos] - [#12982]) ([http docs])
- Get zha switch and binary_sensor state on startup ([@SteveEasley] - [#11672]) ([zha docs]) ([binary_sensor.zha docs]) ([light.zha docs]) ([switch.zha docs])
- Add camera proxy ([@PhracturedBlue] - [#12006]) ([camera.proxy docs]) (new-platform)
- check_config script evolution ([@kellerza] - [#12792])
- Plex mark devices unavailable if they 'vanish' and clear media ([@ryanm101] - [#12811]) ([media_player.plex docs])
- Add consider_home and source_type to device_tracker.see service ([@mueslo] - [#12849]) ([device_tracker docs])
- Clean up Light Groups ([@OttoWinter] - [#12962]) ([light.group docs])
- Updated to plexapi 3.0.6 ([@ryanm101] - [#13005]) ([media_player.plex docs]) ([sensor.plex docs])
[#11580]: https://github.com/home-assistant/home-assistant/pull/11580
[#11640]: https://github.com/home-assistant/home-assistant/pull/11640
[#11651]: https://github.com/home-assistant/home-assistant/pull/11651
[#11672]: https://github.com/home-assistant/home-assistant/pull/11672
[#11817]: https://github.com/home-assistant/home-assistant/pull/11817
[#11978]: https://github.com/home-assistant/home-assistant/pull/11978
[#11994]: https://github.com/home-assistant/home-assistant/pull/11994
[#12006]: https://github.com/home-assistant/home-assistant/pull/12006
[#12011]: https://github.com/home-assistant/home-assistant/pull/12011
[#12143]: https://github.com/home-assistant/home-assistant/pull/12143
[#12167]: https://github.com/home-assistant/home-assistant/pull/12167
[#12229]: https://github.com/home-assistant/home-assistant/pull/12229
[#12241]: https://github.com/home-assistant/home-assistant/pull/12241
[#12325]: https://github.com/home-assistant/home-assistant/pull/12325
[#12375]: https://github.com/home-assistant/home-assistant/pull/12375
[#12399]: https://github.com/home-assistant/home-assistant/pull/12399
[#12433]: https://github.com/home-assistant/home-assistant/pull/12433
[#12449]: https://github.com/home-assistant/home-assistant/pull/12449
[#12453]: https://github.com/home-assistant/home-assistant/pull/12453
[#12507]: https://github.com/home-assistant/home-assistant/pull/12507
[#12509]: https://github.com/home-assistant/home-assistant/pull/12509
[#12534]: https://github.com/home-assistant/home-assistant/pull/12534
[#12539]: https://github.com/home-assistant/home-assistant/pull/12539
[#12592]: https://github.com/home-assistant/home-assistant/pull/12592
[#12596]: https://github.com/home-assistant/home-assistant/pull/12596
[#12597]: https://github.com/home-assistant/home-assistant/pull/12597
[#12610]: https://github.com/home-assistant/home-assistant/pull/12610
[#12620]: https://github.com/home-assistant/home-assistant/pull/12620
[#12621]: https://github.com/home-assistant/home-assistant/pull/12621
[#12626]: https://github.com/home-assistant/home-assistant/pull/12626
[#12631]: https://github.com/home-assistant/home-assistant/pull/12631
[#12633]: https://github.com/home-assistant/home-assistant/pull/12633
[#12636]: https://github.com/home-assistant/home-assistant/pull/12636
[#12646]: https://github.com/home-assistant/home-assistant/pull/12646
[#12647]: https://github.com/home-assistant/home-assistant/pull/12647
[#12648]: https://github.com/home-assistant/home-assistant/pull/12648
[#12649]: https://github.com/home-assistant/home-assistant/pull/12649
[#12650]: https://github.com/home-assistant/home-assistant/pull/12650
[#12651]: https://github.com/home-assistant/home-assistant/pull/12651
[#12658]: https://github.com/home-assistant/home-assistant/pull/12658
[#12659]: https://github.com/home-assistant/home-assistant/pull/12659
[#12660]: https://github.com/home-assistant/home-assistant/pull/12660
[#12661]: https://github.com/home-assistant/home-assistant/pull/12661
[#12662]: https://github.com/home-assistant/home-assistant/pull/12662
[#12663]: https://github.com/home-assistant/home-assistant/pull/12663
[#12664]: https://github.com/home-assistant/home-assistant/pull/12664
[#12668]: https://github.com/home-assistant/home-assistant/pull/12668
[#12676]: https://github.com/home-assistant/home-assistant/pull/12676
[#12681]: https://github.com/home-assistant/home-assistant/pull/12681
[#12706]: https://github.com/home-assistant/home-assistant/pull/12706
[#12710]: https://github.com/home-assistant/home-assistant/pull/12710
[#12713]: https://github.com/home-assistant/home-assistant/pull/12713
[#12720]: https://github.com/home-assistant/home-assistant/pull/12720
[#12722]: https://github.com/home-assistant/home-assistant/pull/12722
[#12725]: https://github.com/home-assistant/home-assistant/pull/12725
[#12728]: https://github.com/home-assistant/home-assistant/pull/12728
[#12730]: https://github.com/home-assistant/home-assistant/pull/12730
[#12734]: https://github.com/home-assistant/home-assistant/pull/12734
[#12743]: https://github.com/home-assistant/home-assistant/pull/12743
[#12763]: https://github.com/home-assistant/home-assistant/pull/12763
[#12766]: https://github.com/home-assistant/home-assistant/pull/12766
[#12771]: https://github.com/home-assistant/home-assistant/pull/12771
[#12772]: https://github.com/home-assistant/home-assistant/pull/12772
[#12786]: https://github.com/home-assistant/home-assistant/pull/12786
[#12792]: https://github.com/home-assistant/home-assistant/pull/12792
[#12800]: https://github.com/home-assistant/home-assistant/pull/12800
[#12801]: https://github.com/home-assistant/home-assistant/pull/12801
[#12803]: https://github.com/home-assistant/home-assistant/pull/12803
[#12804]: https://github.com/home-assistant/home-assistant/pull/12804
[#12805]: https://github.com/home-assistant/home-assistant/pull/12805
[#12806]: https://github.com/home-assistant/home-assistant/pull/12806
[#12811]: https://github.com/home-assistant/home-assistant/pull/12811
[#12814]: https://github.com/home-assistant/home-assistant/pull/12814
[#12815]: https://github.com/home-assistant/home-assistant/pull/12815
[#12816]: https://github.com/home-assistant/home-assistant/pull/12816
[#12819]: https://github.com/home-assistant/home-assistant/pull/12819
[#12825]: https://github.com/home-assistant/home-assistant/pull/12825
[#12828]: https://github.com/home-assistant/home-assistant/pull/12828
[#12830]: https://github.com/home-assistant/home-assistant/pull/12830
[#12834]: https://github.com/home-assistant/home-assistant/pull/12834
[#12835]: https://github.com/home-assistant/home-assistant/pull/12835
[#12841]: https://github.com/home-assistant/home-assistant/pull/12841
[#12844]: https://github.com/home-assistant/home-assistant/pull/12844
[#12847]: https://github.com/home-assistant/home-assistant/pull/12847
[#12849]: https://github.com/home-assistant/home-assistant/pull/12849
[#12851]: https://github.com/home-assistant/home-assistant/pull/12851
[#12858]: https://github.com/home-assistant/home-assistant/pull/12858
[#12864]: https://github.com/home-assistant/home-assistant/pull/12864
[#12865]: https://github.com/home-assistant/home-assistant/pull/12865
[#12867]: https://github.com/home-assistant/home-assistant/pull/12867
[#12870]: https://github.com/home-assistant/home-assistant/pull/12870
[#12872]: https://github.com/home-assistant/home-assistant/pull/12872
[#12873]: https://github.com/home-assistant/home-assistant/pull/12873
[#12874]: https://github.com/home-assistant/home-assistant/pull/12874
[#12878]: https://github.com/home-assistant/home-assistant/pull/12878
[#12879]: https://github.com/home-assistant/home-assistant/pull/12879
[#12881]: https://github.com/home-assistant/home-assistant/pull/12881
[#12882]: https://github.com/home-assistant/home-assistant/pull/12882
[#12885]: https://github.com/home-assistant/home-assistant/pull/12885
[#12886]: https://github.com/home-assistant/home-assistant/pull/12886
[#12888]: https://github.com/home-assistant/home-assistant/pull/12888
[#12890]: https://github.com/home-assistant/home-assistant/pull/12890
[#12893]: https://github.com/home-assistant/home-assistant/pull/12893
[#12894]: https://github.com/home-assistant/home-assistant/pull/12894
[#12895]: https://github.com/home-assistant/home-assistant/pull/12895
[#12896]: https://github.com/home-assistant/home-assistant/pull/12896
[#12898]: https://github.com/home-assistant/home-assistant/pull/12898
[#12900]: https://github.com/home-assistant/home-assistant/pull/12900
[#12903]: https://github.com/home-assistant/home-assistant/pull/12903
[#12904]: https://github.com/home-assistant/home-assistant/pull/12904
[#12905]: https://github.com/home-assistant/home-assistant/pull/12905
[#12908]: https://github.com/home-assistant/home-assistant/pull/12908
[#12911]: https://github.com/home-assistant/home-assistant/pull/12911
[#12913]: https://github.com/home-assistant/home-assistant/pull/12913
[#12921]: https://github.com/home-assistant/home-assistant/pull/12921
[#12922]: https://github.com/home-assistant/home-assistant/pull/12922
[#12925]: https://github.com/home-assistant/home-assistant/pull/12925
[#12929]: https://github.com/home-assistant/home-assistant/pull/12929
[#12930]: https://github.com/home-assistant/home-assistant/pull/12930
[#12931]: https://github.com/home-assistant/home-assistant/pull/12931
[#12932]: https://github.com/home-assistant/home-assistant/pull/12932
[#12933]: https://github.com/home-assistant/home-assistant/pull/12933
[#12934]: https://github.com/home-assistant/home-assistant/pull/12934
[#12936]: https://github.com/home-assistant/home-assistant/pull/12936
[#12937]: https://github.com/home-assistant/home-assistant/pull/12937
[#12940]: https://github.com/home-assistant/home-assistant/pull/12940
[#12947]: https://github.com/home-assistant/home-assistant/pull/12947
[#12951]: https://github.com/home-assistant/home-assistant/pull/12951
[#12956]: https://github.com/home-assistant/home-assistant/pull/12956
[#12957]: https://github.com/home-assistant/home-assistant/pull/12957
[#12959]: https://github.com/home-assistant/home-assistant/pull/12959
[#12962]: https://github.com/home-assistant/home-assistant/pull/12962
[#12963]: https://github.com/home-assistant/home-assistant/pull/12963
[#12965]: https://github.com/home-assistant/home-assistant/pull/12965
[#12970]: https://github.com/home-assistant/home-assistant/pull/12970
[#12971]: https://github.com/home-assistant/home-assistant/pull/12971
[#12973]: https://github.com/home-assistant/home-assistant/pull/12973
[#12982]: https://github.com/home-assistant/home-assistant/pull/12982
[#12985]: https://github.com/home-assistant/home-assistant/pull/12985
[#12986]: https://github.com/home-assistant/home-assistant/pull/12986
[#12987]: https://github.com/home-assistant/home-assistant/pull/12987
[#12988]: https://github.com/home-assistant/home-assistant/pull/12988
[#12993]: https://github.com/home-assistant/home-assistant/pull/12993
[#12994]: https://github.com/home-assistant/home-assistant/pull/12994
[#13005]: https://github.com/home-assistant/home-assistant/pull/13005
[@DanNixon]: https://github.com/DanNixon
[@Julius2342]: https://github.com/Julius2342
[@OttoWinter]: https://github.com/OttoWinter
[@PhilRW]: https://github.com/PhilRW
[@PhracturedBlue]: https://github.com/PhracturedBlue
[@SteveEasley]: https://github.com/SteveEasley
[@a-andre]: https://github.com/a-andre
[@alandtse]: https://github.com/alandtse
[@amelchio]: https://github.com/amelchio
[@andreipop2005]: https://github.com/andreipop2005
[@armills]: https://github.com/armills
[@aronsky]: https://github.com/aronsky
[@awkwardDuck]: https://github.com/awkwardDuck
[@bachya]: https://github.com/bachya
[@bakedraccoon]: https://github.com/bakedraccoon
[@balloob]: https://github.com/balloob
[@bertbert72]: https://github.com/bertbert72
[@bokub]: https://github.com/bokub
[@c7h]: https://github.com/c7h
[@cdce8p]: https://github.com/cdce8p
[@chilicheech]: https://github.com/chilicheech
[@cmsimike]: https://github.com/cmsimike
[@corneyl]: https://github.com/corneyl
[@crhan]: https://github.com/crhan
[@cyberjacob]: https://github.com/cyberjacob
[@danielhiversen]: https://github.com/danielhiversen
[@dgomes]: https://github.com/dgomes
[@dingusdk]: https://github.com/dingusdk
[@doctorjames]: https://github.com/doctorjames
[@ebfio]: https://github.com/ebfio
[@fanthos]: https://github.com/fanthos
[@feanor12]: https://github.com/feanor12
[@jcconnell]: https://github.com/jcconnell
[@jeroenterheerdt]: https://github.com/jeroenterheerdt
[@karlkar]: https://github.com/karlkar
[@kbickar]: https://github.com/kbickar
[@kellerza]: https://github.com/kellerza
[@kevintuhumury]: https://github.com/kevintuhumury
[@koolsb]: https://github.com/koolsb
[@lucasweb78]: https://github.com/lucasweb78
[@lwis]: https://github.com/lwis
[@maddox]: https://github.com/maddox
[@maxclaey]: https://github.com/maxclaey
[@mezz64]: https://github.com/mezz64
[@mfrueh]: https://github.com/mfrueh
[@mikeodr]: https://github.com/mikeodr
[@mueslo]: https://github.com/mueslo
[@nickovs]: https://github.com/nickovs
[@perosb]: https://github.com/perosb
[@reedriley]: https://github.com/reedriley
[@rmounce]: https://github.com/rmounce
[@robmarkcole]: https://github.com/robmarkcole
[@ryanm101]: https://github.com/ryanm101
[@rytilahti]: https://github.com/rytilahti
[@scop]: https://github.com/scop
[@snjoetw]: https://github.com/snjoetw
[@swilson]: https://github.com/swilson
[@syssi]: https://github.com/syssi
[@teharris1]: https://github.com/teharris1
[@thejta]: https://github.com/thejta
[@turbokongen]: https://github.com/turbokongen
[alarm_control_panel.alarmdotcom docs]: https://home-assistant.io/components/alarm_control_panel.alarmdotcom/
[alarm_control_panel.concord232 docs]: https://home-assistant.io/components/alarm_control_panel.concord232/
[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/
[api docs]: https://home-assistant.io/components/api/
[august docs]: https://home-assistant.io/components/august/
[binary_sensor docs]: https://home-assistant.io/components/binary_sensor/
[binary_sensor.concord232 docs]: https://home-assistant.io/components/binary_sensor.concord232/
[binary_sensor.egardia docs]: https://home-assistant.io/components/binary_sensor.egardia/
[binary_sensor.hikvision docs]: https://home-assistant.io/components/binary_sensor.hikvision/
[binary_sensor.insteon_plm docs]: https://home-assistant.io/components/binary_sensor.insteon_plm/
[binary_sensor.isy994 docs]: https://home-assistant.io/components/binary_sensor.isy994/
[binary_sensor.knx docs]: https://home-assistant.io/components/binary_sensor.knx/
[binary_sensor.upcloud docs]: https://home-assistant.io/components/binary_sensor.upcloud/
[binary_sensor.zha docs]: https://home-assistant.io/components/binary_sensor.zha/
[camera.onvif docs]: https://home-assistant.io/components/camera.onvif/
[camera.proxy docs]: https://home-assistant.io/components/camera.proxy/
[camera.rpi_camera docs]: https://home-assistant.io/components/camera.rpi_camera/
[camera.yi docs]: https://home-assistant.io/components/camera.yi/
[canary docs]: https://home-assistant.io/components/canary/
[climate docs]: https://home-assistant.io/components/climate/
[climate.nest docs]: https://home-assistant.io/components/climate.nest/
[climate.wink docs]: https://home-assistant.io/components/climate.wink/
[cloud docs]: https://home-assistant.io/components/cloud/
[coinbase docs]: https://home-assistant.io/components/coinbase/
[config docs]: https://home-assistant.io/components/config/
[conversation docs]: https://home-assistant.io/components/conversation/
[demo docs]: https://home-assistant.io/components/demo/
[device_tracker docs]: https://home-assistant.io/components/device_tracker/
[device_tracker.asuswrt docs]: https://home-assistant.io/components/device_tracker.asuswrt/
[device_tracker.icloud docs]: https://home-assistant.io/components/device_tracker.icloud/
[device_tracker.tesla docs]: https://home-assistant.io/components/device_tracker.tesla/
[device_tracker.ubus docs]: https://home-assistant.io/components/device_tracker.ubus/
[egardia docs]: https://home-assistant.io/components/egardia/
[fan.insteon_plm docs]: https://home-assistant.io/components/fan.insteon_plm/
[frontend docs]: https://home-assistant.io/components/frontend/
[google_assistant docs]: https://home-assistant.io/components/google_assistant/
[group docs]: https://home-assistant.io/components/group/
[homekit docs]: https://home-assistant.io/components/homekit/
[http docs]: https://home-assistant.io/components/http/
[hue docs]: https://home-assistant.io/components/hue/
[ihc docs]: https://home-assistant.io/components/ihc/
[influxdb docs]: https://home-assistant.io/components/influxdb/
[insteon_plm docs]: https://home-assistant.io/components/insteon_plm/
[knx docs]: https://home-assistant.io/components/knx/
[light docs]: https://home-assistant.io/components/light/
[light.demo docs]: https://home-assistant.io/components/light.demo/
[light.group docs]: https://home-assistant.io/components/light.group/
[light.group docs]: https://home-assistant.io/components/light.group/
[light.hue docs]: https://home-assistant.io/components/light.hue/
[light.hyperion docs]: https://home-assistant.io/components/light.hyperion/
[light.insteon_plm docs]: https://home-assistant.io/components/light.insteon_plm/
[light.knx docs]: https://home-assistant.io/components/light.knx/
[light.lifx docs]: https://home-assistant.io/components/light.lifx/
[light.limitlessled docs]: https://home-assistant.io/components/light.limitlessled/
[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/
[light.zha docs]: https://home-assistant.io/components/light.zha/
[logbook docs]: https://home-assistant.io/components/logbook/
[media_player.apple_tv docs]: https://home-assistant.io/components/media_player.apple_tv/
[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/
[media_player.channels docs]: https://home-assistant.io/components/media_player.channels/
[media_player.emby docs]: https://home-assistant.io/components/media_player.emby/
[media_player.plex docs]: https://home-assistant.io/components/media_player.plex/
[media_player.songpal docs]: https://home-assistant.io/components/media_player.songpal/
[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/
[mqtt docs]: https://home-assistant.io/components/mqtt/
[notify.html5 docs]: https://home-assistant.io/components/notify.html5/
[notify.synology_chat docs]: https://home-assistant.io/components/notify.synology_chat/
[remote.xiaomi_miio docs]: https://home-assistant.io/components/remote.xiaomi_miio/
[rest_command docs]: https://home-assistant.io/components/rest_command/
[scene docs]: https://home-assistant.io/components/scene/
[sensor.airvisual docs]: https://home-assistant.io/components/sensor.airvisual/
[sensor.citybikes docs]: https://home-assistant.io/components/sensor.citybikes/
[sensor.filter docs]: https://home-assistant.io/components/sensor.filter/
[sensor.fitbit docs]: https://home-assistant.io/components/sensor.fitbit/
[sensor.folder docs]: https://home-assistant.io/components/sensor.folder/
[sensor.history_stats docs]: https://home-assistant.io/components/sensor.history_stats/
[sensor.imap docs]: https://home-assistant.io/components/sensor.imap/
[sensor.insteon_plm docs]: https://home-assistant.io/components/sensor.insteon_plm/
[sensor.luftdaten docs]: https://home-assistant.io/components/sensor.luftdaten/
[sensor.netatmo docs]: https://home-assistant.io/components/sensor.netatmo/
[sensor.plex docs]: https://home-assistant.io/components/sensor.plex/
[sensor.pollen docs]: https://home-assistant.io/components/sensor.pollen/
[sensor.rest docs]: https://home-assistant.io/components/sensor.rest/
[sensor.sense docs]: https://home-assistant.io/components/sensor.sense/
[sensor.serial_pm docs]: https://home-assistant.io/components/sensor.serial_pm/
[sensor.simulated docs]: https://home-assistant.io/components/sensor.simulated/
[sensor.sql docs]: https://home-assistant.io/components/sensor.sql/
[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/
[sensor.teksavvy docs]: https://home-assistant.io/components/sensor.teksavvy/
[sensor.tesla docs]: https://home-assistant.io/components/sensor.tesla/
[sensor.tibber docs]: https://home-assistant.io/components/sensor.tibber/
[sensor.xbox_live docs]: https://home-assistant.io/components/sensor.xbox_live/
[sensor.xiaomi_aqara docs]: https://home-assistant.io/components/sensor.xiaomi_aqara/
[sensor.zestimate docs]: https://home-assistant.io/components/sensor.zestimate/
[shopping_list docs]: https://home-assistant.io/components/shopping_list/
[switch.edimax docs]: https://home-assistant.io/components/switch.edimax/
[switch.insteon_plm docs]: https://home-assistant.io/components/switch.insteon_plm/
[switch.rest docs]: https://home-assistant.io/components/switch.rest/
[switch.tesla docs]: https://home-assistant.io/components/switch.tesla/
[switch.upcloud docs]: https://home-assistant.io/components/switch.upcloud/
[switch.volvooncall docs]: https://home-assistant.io/components/switch.volvooncall/
[switch.xiaomi_aqara docs]: https://home-assistant.io/components/switch.xiaomi_aqara/
[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/
[switch.zha docs]: https://home-assistant.io/components/switch.zha/
[telegram_bot.broadcast docs]: https://home-assistant.io/components/telegram_bot.broadcast/
[telegram_bot.polling docs]: https://home-assistant.io/components/telegram_bot.polling/
[telegram_bot.webhooks docs]: https://home-assistant.io/components/telegram_bot.webhooks/
[upcloud docs]: https://home-assistant.io/components/upcloud/
[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/
[weather docs]: https://home-assistant.io/components/weather/
[weather.darksky docs]: https://home-assistant.io/components/weather.darksky/
[xiaomi_aqara docs]: https://home-assistant.io/components/xiaomi_aqara/
[zabbix docs]: https://home-assistant.io/components/zabbix/
[zha docs]: https://home-assistant.io/components/zha/
[zwave docs]: https://home-assistant.io/components/zwave/

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB