+ data:
+ message: The name of the POI # this is shown on the iDrive dashboard
+ data:
+ location:
+ latitude: 48.177024
+ longitude: 11.559107
+ street: Street name # Optional
+ city: City name # Optional
+ postal_code: Postal Code # Optional
+ country: Country # Optional
+```
+
## Services
The `bmw_connected_drive` integration offers several services. In case you need to provide the vehicle identification number (VIN) as a parameter, you can see the VIN in the attributes of the device tracker for the vehicle. The VIN is a 17 digit alphanumeric string, e.g., `WBANXXXXXX1234567`.
diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown
index 9ba6ccc7abf..ce4aaf194e2 100644
--- a/source/_integrations/braviatv.markdown
+++ b/source/_integrations/braviatv.markdown
@@ -7,16 +7,18 @@ ha_release: 0.23
ha_iot_class: Local Polling
ha_codeowners:
- '@robbiet480'
+ - '@bieniu'
ha_domain: braviatv
+ha_config_flow: true
---
The `braviatv` platform allows you to control a [Sony Bravia TV](https://www.sony.com/).
Almost all [Sony Bravia TV 2013 and newer](https://info.tvsideview.sony.net/en_ww/home_device.html#bravia) are supported. A more generic method for older TVs connected to a Raspberry Pi with HDMI-CEC is explained further below.
-You will need to configure your TV to allow the Home Assistant for remote usage. To do that, ensure that your TV is turned on. Open the configuration popup on Home Assistant and enter a random PIN (for example 0000). After that, the TV will show you a PIN and Home Assistant will allow you to re-enter that PIN. Enter the PIN shown on your TV and Home Assistant will be able to control your Sony Bravia TV.
+You can setup the Sony Bravia TV via **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select Sony Bravia TV.
-To add a TV to your installation, add the following to your `configuration.yaml` file:
+If you have following configuration in your `configuration.yaml` file it will be imported to the Integrations:
```yaml
# Example configuration.yaml entry
@@ -37,11 +39,11 @@ name:
type: string
{% endconfiguration %}
-You are also able to configure the TV manually by placing a `bravia.conf` file in your [configuration directory](/docs/configuration/) with the following information - please update the details to match your setup:
+A new setup via `configuration.yaml` file is not possible.
-```json
-{"192.168.0.10": {"pin": "7745", "mac": "ac:1e:0a:e1:0c:01"}}
-```
+## Extra configuration for the integration
+
+The integration allows you to change ignored TV sources from the front end. Enter which Sony Bravia TV integration you want to change options on and press the cog wheel.
## For TVs older than 2013
diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown
index dd20a5abb32..19e11bed5bc 100644
--- a/source/_integrations/broadlink.markdown
+++ b/source/_integrations/broadlink.markdown
@@ -44,6 +44,10 @@ mac:
description: Device MAC address.
required: true
type: string
+type:
+ description: "Device type. Choose one from: `rm`, `rm2`, `rm_mini`, `rm_pro_phicomm`, `rm2_home_plus`, `rm2_home_plus_gdt`, `rm2_pro_plus`, `rm2_pro_plus2`, `rm2_pro_plus_bl`, `rm_mini_shate`, `rm_mini3_newblackbean`, `rm_mini3_redbean`, `rm4_mini`, `rm4_pro`, `rm4c_mini`, `rm4c_pro`."
+ required: false
+ type: string
timeout:
description: Timeout in seconds for the connection to the device.
required: false
@@ -174,9 +178,58 @@ script:
- turn off display
```
+### Troubleshooting
+
+Many users are experiencing problems with the new Broadlink RM Mini 3 and the entire RM4 series.
+
+Once connected to the cloud, these devices lose their local capabilities and can no longer be controlled by Home Assistant.
+
+To fix the problem, you need to follow these steps:
+- Remove the device from Broadlink App
+- Factory reset the device
+- Add the device to your local network using the app
+- Do not set up a cloud (not now, not ever)
+- Specify the correct device type in the configuration file
+
+Example 1: Set up the new RM Mini 3 using remote platform
+
+```yaml
+# Example configuration.yaml entry
+remote:
+ - platform: broadlink
+ host: IP_ADDRESS
+ mac: MAC_ADDRESS
+ type: rm_mini3_redbean
+```
+
+Example 2: Set up RM4C Mini using switch platform
+
+```yaml
+# Example configuration.yaml entry
+switch:
+ - platform: broadlink
+ host: IP_ADDRESS
+ mac: MAC_ADDRESS
+ type: rm4c_mini
+```
+
+Example 3: Set up RM4 Pro using sensor platform
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: broadlink
+ host: IP_ADDRESS
+ mac: MAC_ADDRESS
+ type: rm4_pro
+ monitored_conditions:
+ - temperature
+ - humidity
+```
+
## Sensor
-The `broadlink` sensor platform let you monitor data from an RM2 and A1 E-air. There is currently no support for the cloud API.
+The `broadlink` sensor platform let you monitor data from an RM2, RM4 and A1 E-air. There is currently no support for the cloud API.
To enable it, add the following lines to your `configuration.yaml`:
@@ -204,6 +257,10 @@ name:
required: false
default: Broadlink sensor
type: string
+type:
+ description: "Device type. Choose one from: `a1`, `rm`, `rm2`, `rm_pro_phicomm`, `rm2_home_plus`, `rm2_home_plus_gdt`, `rm2_pro_plus`, `rm2_pro_plus2`, `rm2_pro_plus_bl`, `rm4_mini`, `rm4_pro`, `rm4c_mini`, `rm4c_pro`."
+ required: false
+ type: string
scan_interval:
description: Time in seconds to fetch data from sensors.
required: false
@@ -316,8 +373,8 @@ friendly_name:
required: false
type: string
type:
- description: "Switch type. Choose one from: `rm`, `rm2`, `rm_mini`, `rm_pro_phicomm`, `rm2_home_plus`, `rm2_home_plus_gdt`, `rm2_pro_plus`, `rm2_pro_plus2`, `rm2_pro_plus_bl`, `rm_mini_shate`, `sp1`, `sp2`, `honeywell_sp2`, `sp3`, `spmini2`, `spminiplus` or `mp1`. `SC1` devices can be registered as `sp2`."
- required: true
+ description: "Device type. Choose one from: `rm`, `rm2`, `rm_mini`, `rm_pro_phicomm`, `rm2_home_plus`, `rm2_home_plus_gdt`, `rm2_pro_plus`, `rm2_pro_plus2`, `rm2_pro_plus_bl`, `rm_mini_shate`, `rm_mini3_newblackbean`, `rm_mini3_redbean`, `rm4_mini`, `rm4_pro`, `rm4c_mini`, `rm4c_pro`, `sp1`, `sp2`, `honeywell_sp2`, `sp3`, `spmini2`, `spminiplus` or `mp1`. `SC1` devices can be registered as `sp2`."
+ required: false
type: string
switches:
description: The array that contains all switches.
diff --git a/source/_integrations/bt_smarthub.markdown b/source/_integrations/bt_smarthub.markdown
index 108de005ed0..d7088d5f484 100644
--- a/source/_integrations/bt_smarthub.markdown
+++ b/source/_integrations/bt_smarthub.markdown
@@ -29,6 +29,10 @@ host:
default: 192.168.1.254
required: false
type: string
+smarthub_model:
+ description: The model of your BT Smarthub 1 or 2. If this option is omitted, it will attempt to detect the hub model.
+ required: false
+ type: integer
{% endconfiguration %}
See the [device tracker integration page](/integrations/device_tracker/) for instructions on how to configure the people to be tracked.
diff --git a/source/_integrations/climate.knx.markdown b/source/_integrations/climate.knx.markdown
index 1c4eb77c596..96f14c4eb97 100644
--- a/source/_integrations/climate.knx.markdown
+++ b/source/_integrations/climate.knx.markdown
@@ -165,7 +165,7 @@ operation_mode_comfort_address:
required: false
type: string
operation_modes:
- description: Overrides the supported operation modes.
+ description: Overrides the supported operation modes. Provide the supported `hvac_mode` and `preset_mode` values for your device.
required: false
type: list
on_off_address:
diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown
index a07c1f6623f..4e41f93fe22 100644
--- a/source/_integrations/climate.mqtt.markdown
+++ b/source/_integrations/climate.mqtt.markdown
@@ -273,6 +273,10 @@ temperature_state_topic:
description: The MQTT topic to subscribe for changes in the target temperature. If this is not set, the target temperature works in optimistic mode (see below).
required: false
type: string
+temperature_unit:
+ description: Defines the temperature unit of the device, `C` or `F`. If this is not set, the temperature unit is set to the system temperature unit.
+ required: false
+ type: string
temp_step:
description: Step size for temperature set point.
type: float
diff --git a/source/_integrations/currencylayer.markdown b/source/_integrations/currencylayer.markdown
index dd4129f741a..228d282f348 100644
--- a/source/_integrations/currencylayer.markdown
+++ b/source/_integrations/currencylayer.markdown
@@ -8,9 +8,13 @@ ha_release: 0.32
ha_domain: currencylayer
---
-The `currencylayer` sensor will show you the current exchange rate from [Currencylayer](https://currencylayer.com/) that provides real-time exchange rates for [170 currencies](https://currencylayer.com/currencies). The free account is limited to only USD as a base currency, allows 250 requests per month, and updates daily.
+The `currencylayer` sensor will show you the current exchange rate from [Currencylayer](https://currencylayer.com/) that provides real-time exchange rates for [170 currencies](https://currencylayer.com/currencies). The free account is limited to only USD as a base currency, allows 250 requests per month and updates daily.
-Obtain your API key [here](https://currencylayer.com/product)
+## Setup
+
+Obtain your API key from [here](https://currencylayer.com/product).
+
+## Configuration
To enable this sensor, add the following lines to your `configuration.yaml` file:
diff --git a/source/_integrations/directv.markdown b/source/_integrations/directv.markdown
index 68821960805..fe54a34c9bb 100644
--- a/source/_integrations/directv.markdown
+++ b/source/_integrations/directv.markdown
@@ -3,6 +3,7 @@ title: DirecTV
description: Instructions on how to integrate DirecTV receivers into Home Assistant.
ha_category:
- Media Player
+ - Remote
ha_release: 0.25
ha_iot_class: Local Polling
ha_domain: directv
@@ -60,3 +61,66 @@ Available services: turn_on, turn_off, media_play, media_pause, media_stop, medi
| `entity_id` | yes | Target a specific media player. Defaults to all. |
| `media_content_id` | no | The channel number to change to. |
| `media_content_type` | no | A media type. Has to be `channel`.
+
+## Remote
+
+The DirecTV remote platform allows you to send remote control buttons to a DirecTV receiver. It is automatically set up when a DirecTV receiver is configured.
+
+At the moment, the following buttons are supported:
+
+- `power`
+- `poweron`
+- `poweroff`
+- `format`
+- `pause`
+- `rew`
+- `replay`
+- `stop`
+- `advance`
+- `ffwd`
+- `record`
+- `play`
+- `guide`
+- `active`
+- `list`
+- `exit`
+- `back`
+- `menu`
+- `info`
+- `up`
+- `down`
+- `left`
+- `right`
+- `select`
+- `red`
+- `green`
+- `yellow`
+- `blue`
+- `chanup`
+- `chandown`
+- `prev`
+- `0`
+- `1`
+- `2`
+- `3`
+- `4`
+- `5`
+- `6`
+- `7`
+- `8`
+- `9`
+- `dash`
+- `enter`
+
+A typical service call for press several buttons looks like this.
+
+```yaml
+service: remote.send_command
+data:
+ entity_id: remote.directv_entity
+ command:
+ - left
+ - left
+ - menu
+ - select
+```
diff --git a/source/_integrations/discord.markdown b/source/_integrations/discord.markdown
index cd647ee1d57..9594f0a0c1c 100644
--- a/source/_integrations/discord.markdown
+++ b/source/_integrations/discord.markdown
@@ -38,7 +38,7 @@ token:
### Setting up the bot
-Bots can only send messages to servers or attach local available images. To add the bot to a server you are an admin on, get the details of the bot from the [Discord My Apps page](https://discordapp.com/developers/applications/me).
+Bots can send messages to servers and users or attach local available images. To add the bot to a server you are an admin on, get the details of the bot from the [Discord My Apps page](https://discordapp.com/developers/applications/me).
@@ -62,7 +62,7 @@ Once the bot has been added to your server, get the channel ID of the channel yo
Right click channel name and copy the channel ID (**Copy ID**).
-This channel ID has to be used as the target when calling the notification service. Multiple channel IDs can be specified, across multiple servers.
+This channel or user ID has to be used as the target when calling the notification service. Multiple channel or user IDs can be specified, across multiple servers or direct messages.
#### Example service call
diff --git a/source/_integrations/dwd_weather_warnings.markdown b/source/_integrations/dwd_weather_warnings.markdown
index 69d291cf706..d3d001ac776 100644
--- a/source/_integrations/dwd_weather_warnings.markdown
+++ b/source/_integrations/dwd_weather_warnings.markdown
@@ -57,6 +57,7 @@ name:
| `region_state` | State (Bundesland) in abriviated form the requested region is located, e.g., "HE" for "Hessen". |
| `region_id` | Region ID assigned by DWD. |
| `warning_count` | *(int)* Number of issued warnings. There can be more than one warning issued at once. |
+| `warning_` | The warning as a whole JSON object containing the following attributes as nested attributes. |
| `warning__level` | *(int)* Issued warning level between 0 and 4.
0: Keine Warnungen
1: Wetterwarnungen
2: Warnungen vor markantem Wetter
3: Unwetterwarnungen
4: Warnungen vor extremem Unwetter |
| `warning__type` | *(int)* Issued warning type.
0: Gewitter, Starkes Gewitter
1: Windböen, Sturmböen
2: ?
3: Schneefall
4: Nebel
5: Frost
6: Glätte, Glatteis
8: Hitze (always level 10)
9: UV-Index (always level 20)
Please be aware that the type numbers represent more like a category than an exact number-to-string match. For example Type `6` can mean `GLÄTTE` or `GLATTEIS` or similar. |
| `warning__name` | This name correlates with the warning type and indicates it in short as a string. |
diff --git a/source/_integrations/dynalite.markdown b/source/_integrations/dynalite.markdown
index f5dd81be41e..29ba8af3f64 100755
--- a/source/_integrations/dynalite.markdown
+++ b/source/_integrations/dynalite.markdown
@@ -5,6 +5,7 @@ ha_category:
- Hub
- Light
- Switch
+ - Cover
ha_iot_class: Local Push
ha_release: 0.106
ha_codeowners:
@@ -13,12 +14,13 @@ ha_config_flow: true
ha_domain: dynalite
---
-Philips Dynalite support is integrated into Home Assistant as a hub that can drive the light and switch platforms.
+Philips Dynalite support is integrated into Home Assistant as a hub that can drive the light, switch, and cover platforms.
There is currently support for the following device types within Home Assistant:
- Lights
- Switches
+- Covers
A Philips Dynalite hub connects to the Dynet network, which is composed of areas, channels, and preset.
@@ -92,6 +94,16 @@ area:
description: Name of the area.
required: true
type: string
+ template:
+ description: "Type of template to use for the area. Supported values are: `room` and `time_cover`. They are described in detail below in the **template** section. If the template parameters are different than defaults, they can be overridden in this section as well."
+ require: false
+ type: string
+ default: No template
+ TEMPLATE_PARAMS:
+ description: "This can be any of the settings of the template. For example, for template `room`: `room_on` and `room_off` are possible options."
+ required: false
+ type: [integer, float]
+ default: Value from **template** section or system defaults
fade:
description: Fade time for the area, in seconds.
required: false
@@ -138,7 +150,7 @@ area:
type: string
default: AREA_NAME Channel CHANNEL_NUMBER
type:
- description: "Type of entity this should appear as. Can be either `light` or if this is a device that is not a light (e.g., water heater), can be `switch`."
+ description: "Type of entity this channel should appear as. Can be either `light` or if this is a device that is not a light (e.g., water heater), can be `switch`."
require: false
type: string
default: light
@@ -167,6 +179,66 @@ preset:
required: false
type: float
default: 2.0
+template:
+ description: Set the default parameters for the templates.
+ required: false
+ type: map
+ keys:
+ room:
+ description: This is used to define a room that has a preset to turn on all the channels in the area and a preset to turn off.
+ required: false
+ type: map
+ keys:
+ room_on:
+ description: Preset to turn area on.
+ required: false
+ type: integer
+ default: 1
+ room_off:
+ description: Preset to turn area off.
+ required: false
+ type: integer
+ default: 4
+ time_cover:
+ description: "This is used to define a cover that has 3 presets: `open`, `close`, and `stop`. Potentially can also use a channel that some systems (e.g., Control4) use to also send commands to open and close the cover. It uses the duration it takes to open or close to determine position. In addition, many times, these covers include tilt by opening or closing for a short time, so this can be defined as well."
+ required: false
+ type: map
+ keys:
+ open:
+ description: Preset to open the cover.
+ required: false
+ type: integer
+ default: 1
+ close:
+ description: Preset to close the cover.
+ required: false
+ type: integer
+ default: 2
+ stop:
+ description: Preset to stop the cover.
+ required: false
+ type: integer
+ default: 4
+ channel_cover:
+ description: Channel that monitors the cover.
+ required: false
+ type: integer
+ default: No channel
+ duration:
+ description: Time in seconds it takes to open or close the cover.
+ required: false
+ type: integer
+ default: 60
+ tilt:
+ description: "Time in seconds it takes to open or close the cover tilt. `0` means that the cover does not support tilt."
+ require: false
+ type: integer
+ default: 0
+ class:
+ description: "Type of cover for Home Assistant. Any of the possible [cover classes](/integrations/cover/#device-class) (e.g. `blind`, `garage`, `shutter`) are possible."
+ require: false
+ type: string
+ default: shutter
{% endconfiguration %}
## Examples
@@ -182,9 +254,13 @@ dynalite:
area:
'1':
name: Office
+ template: room
'2':
name: Living Room
+ template: room
nodefault: true
+ room_on: 2
+ room_off: 5
channel:
'2':
name: Entrance Spot
@@ -197,11 +273,18 @@ dynalite:
'6':
name: All Off
fade: 3.0
+ '4':
+ name: Curtain
+ template: time_cover
preset:
'1':
name: 'On'
'4':
name: 'Off'
+ template:
+ room:
+ room_on: 1
+ room_off: 4
```
## Initial configuration and discovery
diff --git a/source/_integrations/fan.xiaomi_miio.markdown b/source/_integrations/fan.xiaomi_miio.markdown
index 1d9adcfb2ca..67a6fea4c84 100644
--- a/source/_integrations/fan.xiaomi_miio.markdown
+++ b/source/_integrations/fan.xiaomi_miio.markdown
@@ -12,25 +12,27 @@ The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier, Ai
Supported devices:
-| Name | Model | Model no. |
-| ------------------- | ---------------------- | --------- |
-Air Purifier | zhimi.airpurifier.v1 | |
-Air Purifier 2 | zhimi.airpurifier.v2 | FJY4006CN |
-Air Purifier V3 | zhimi.airpurifier.v3 | |
-Air Purifier V5 | zhimi.airpurifier.v5 | |
-Air Purifier Pro | zhimi.airpurifier.v6 | |
-Air Purifier Pro V7 | zhimi.airpurifier.v7 | |
-Air Purifier 2 (mini) | zhimi.airpurifier.m1 | |
-Air Purifier (mini) | zhimi.airpurifier.m2 | |
-Air Purifier MA1 | zhimi.airpurifier.ma1 | |
-Air Purifier 2S | zhimi.airpurifier.ma2 | |
-Air Purifier 2S | zhimi.airpurifier.mc1 | |
-Air Purifier Super | zhimi.airpurifier.sa1 | |
-Air Purifier Super 2 | zhimi.airpurifier.sa2 | |
-Air Humidifier | zhimi.humidifier.v1 | |
-Air Humidifier CA1 | zhimi.humidifier.ca1 | |
-Air Humidifier CB1 | zhimi.humidifier.cb1 | |
-Air Fresh VA2 | zhimi.airfresh.va2 | |
+| Name | Model | Model no. |
+| ---------------------- | ---------------------- | --------- |
+| Air Purifier | zhimi.airpurifier.v1 | |
+| Air Purifier 2 | zhimi.airpurifier.v2 | FJY4006CN |
+| Air Purifier V3 | zhimi.airpurifier.v3 | |
+| Air Purifier V5 | zhimi.airpurifier.v5 | |
+| Air Purifier Pro | zhimi.airpurifier.v6 | |
+| Air Purifier Pro V7 | zhimi.airpurifier.v7 | |
+| Air Purifier 2 (mini) | zhimi.airpurifier.m1 | |
+| Air Purifier (mini) | zhimi.airpurifier.m2 | |
+| Air Purifier MA1 | zhimi.airpurifier.ma1 | |
+| Air Purifier 2S | zhimi.airpurifier.ma2 | |
+| Air Purifier 2S | zhimi.airpurifier.mc1 | |
+| Air Purifier Super | zhimi.airpurifier.sa1 | |
+| Air Purifier Super 2 | zhimi.airpurifier.sa2 | |
+| Air Purifier 3 (2019) | zhimi.airpurifier.ma4 | |
+| Air Purifier 3H (2019) | zhimi.airpurifier.mb3 | |
+| Air Humidifier | zhimi.humidifier.v1 | |
+| Air Humidifier CA1 | zhimi.humidifier.ca1 | |
+| Air Humidifier CB1 | zhimi.humidifier.cb1 | |
+| Air Fresh VA2 | zhimi.airfresh.va2 | |
## Features
@@ -167,6 +169,39 @@ Air Fresh VA2 | zhimi.airfresh.va2 | |
- `illuminance`
- `buzzer`
+### Air Purifier 3/3H (2019) (zhimi.airpurifier.ma4/zhimi.airpurifier.mb3)
+
+This model uses newer MiOT communication protocol.
+
+- Power (on, off)
+- Operation modes (auto, silent, favorite, fan)
+- Buzzer (on, off)
+- Child lock (on, off)
+- LED (on, off)
+- Favorite Level (0...16)
+- Fan Level (1...3)
+- Attributes
+ - `model`
+ - `temperature`
+ - `humidity`
+ - `aqi`
+ - `mode`
+ - `filter_hours_used`
+ - `filter_life_remaining`
+ - `favorite_level`
+ - `child_lock`
+ - `led`
+ - `motor_speed`
+ - `average_aqi`
+ - `purify_volume`
+ - `use_time`
+ - `buzzer`
+ - `led_brightness`
+ - `filter_rfid_product_id`
+ - `filter_rfid_tag`
+ - `filter_type`
+ - `fan_level`
+
### Air Purifier V3 (zhimi.airpurifier.v3)
- Power (on, off)
@@ -408,6 +443,15 @@ Set the favorite level of the operation mode "favorite".
| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. |
| `level` | no | Level, between 0 and 16. |
+### Service `xiaomi_miio.fan_set_fan_level` (Air Purifiers only)
+
+Set the fan level for "fan" operation mode.
+
+| Service data attribute | Optional | Description |
+|---------------------------|----------|---------------------------------------------------------|
+| `entity_id` | no | Only act on a specific Xiaomi MiOT fan entity. |
+| `level` | no | Level, between 1 and 3. |
+
### Service `xiaomi_miio.fan_set_auto_detect_on` (Air Purifier 2S and Air Purifier Pro only)
Turn the auto detect on.
diff --git a/source/_integrations/flume.markdown b/source/_integrations/flume.markdown
index 43838b61976..2b40644502c 100644
--- a/source/_integrations/flume.markdown
+++ b/source/_integrations/flume.markdown
@@ -5,8 +5,10 @@ ha_category:
- Sensor
ha_iot_class: Cloud Polling
ha_release: 0.103
+ha_config_flow: true
ha_codeowners:
- '@ChrisMandich'
+ - '@bdraco'
ha_domain: flume
---
@@ -18,7 +20,9 @@ Flume monitors the real-time status of your home water meter. Allowing the end-u
You can find your Client ID and Client Secret under "API Access" on the [settings page](https://portal.flumetech.com/#settings).
-To enable the flume sensor, add the following lines to your `configuration.yaml` file:
+To add `Flume` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Flume**.
+
+Alternatively, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown
index 5bb8cb5cb33..f136a5aee0e 100644
--- a/source/_integrations/fritzbox.markdown
+++ b/source/_integrations/fritzbox.markdown
@@ -30,31 +30,38 @@ There is currently support for the following device types within Home Assistant:
- [FRITZ!DECT 301](https://en.avm.de/products/fritzdect/fritzdect-301/)
- [Eurotronic Comet DECT](https://eurotronic.org/produkte/elektronische-heizkoerperthermostate/sparmatic-comet/)
-## Setup
+## Configuration
+
+To add the AVM FRITZ!Box integration to your installation, go to **Configuration** -> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **AVM FRITZ!Box**.
+
+If you have enabled SSDP discovery, it’s likely that you just have to confirm the detected device with username and password.
+
+### Configuration via YAML
+
+YAML configuration is still around for people that prefer YAML, but it's deprecated and you should not use it anymore.
```yaml
# Example configuration.yaml entry
fritzbox:
devices:
- - host: fritz.box
- username: YOUR_USERNAME
- password: YOUR_PASSWORD
+ - password: YOUR_PASSWORD
```
{% configuration %}
devices:
description: A list of FRITZ!Box devices.
- required: true
type: map
keys:
host:
description: The hostname or IP address of the FRITZ!Box.
- required: true
+ required: false
type: string
+ default: fritz.box
username:
description: The username for Smart Home access.
- required: true
+ required: false
type: string
+ default: admin
password:
description: The password of the user.
required: true
diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown
index 2b3397ec912..a6871d73867 100644
--- a/source/_integrations/homekit.markdown
+++ b/source/_integrations/homekit.markdown
@@ -86,6 +86,11 @@ homekit:
required: false
type: boolean
default: false
+ zeroconf_default_interface:
+ description: By default, zeroconf will attempt to bind to all interfaces. For systems running using network isolation or similar, this may result HomeKit not being seen on the network. Change this option to `true` if HomeKit cannot be discovered.
+ required: true
+ type: boolean
+ default: false
advertise_ip:
description: If you need to override the IP address used for mDNS advertisement. (For example, using network isolation in Docker and together with an mDNS forwarder like `avahi-daemon` in reflector mode)
required: false
@@ -167,16 +172,20 @@ homekit:
After Home Assistant has started, the entities specified by the filter are exposed to HomeKit if they are [supported](#supported-components). To add them:
-1. Open the Home Assistant frontend. A new card will display the `pin code`. Note: If pin code is not displayed, check "Notifications" (the bell icon) in the lower-left of the Home Assistant UI.
+1. Open the Home Assistant frontend. A new card will display the pairing QR code and the `pin code` as seen in the example below. Note: If pin code is not displayed, check "Notifications" (the bell icon) in the lower-left of the Home Assistant UI.
2. Open the `Home` app.
-3. Click `Add Accessory`, then select `Don't Have a Code or Can't Scan?` and choose the `Home Assistant Bridge`.
+3. Click `Add Accessory`, then scan the QR code or select `Don't Have a Code or Can't Scan?` and choose the `Home Assistant Bridge`.
4. Confirm that you are adding an `Uncertified Accessory` by clicking on `Add Anyway`.
-5. Enter the `PIN` code.
+5. Enter the `PIN` code (skip this step if you scanned the QR code).
6. Follow the setup by clicking on `Next` and lastly `Done` in the top right-hand corner.
7. The `Home Assistant` Bridge and the Accessories should now be listed in the `Home` app.
After the setup is completed, you should be able to control your Home Assistant integrations through Apple's Home and Siri.
+
+
+
+
## Move Home Assistant install
If you like to retain your HomeKit pairing through a move to a new Home Assistant device or installation, besides copying the configurations files you need to copy the `.homekit.state` file inside your configurations directory. Keep in mind though that the file is usually hidden by default, depending on your operating system.
@@ -191,7 +200,7 @@ Currently, this integration uses the `entity_id` to generate a unique `accessory
### Device Limit
-The HomeKit guidelines only allow a maximum of 100 unique accessories (`aid`) per bridge. Be mindful of this when configuring the filter(s).
+The HomeKit Accessory Protocol Specification only allow a maximum of 150 unique accessories (`aid`) per bridge. Be mindful of this when configuring the filter(s).
### Persistence Storage
@@ -336,15 +345,18 @@ To avoid any errors, after you have successfully paired your Home Assistant Brid
The `advertise_ip` option can be used to run this integration even inside an ephemeral Docker container with network isolation enabled, e.g., not using the host network.
+You may also need to set `zeroconf_default_interface` to `true`.
+
To use `advertise_ip`, add the option to your `homekit` configuration:
```yaml
homekit:
advertise_ip: "STATIC_IP_OF_YOUR_DOCKER_HOST"
+ zeroconf_default_interface: true
```
Restart your Home Assistant instance. This feature requires running an mDNS forwarder on your Docker host, e.g., `avahi-daemon` in reflector mode. This kind of setup most likely requires `safe_mode` during the bridge setup.
-
+
## Supported Components
The following integrations are currently supported:
@@ -352,7 +364,7 @@ The following integrations are currently supported:
| Component | Type Name | Description |
| --------- | --------- | ----------- |
| alarm_control_panel | SecuritySystem | All security systems. |
-| automation / input_boolean / remote / scene / script | Switch | All represented as switches. |
+| automation / input_boolean / remote / scene / script / vacuum | Switch | All represented as switches. |
| binary_sensor | Sensor | Support for `co2`, `door`, `garage_door`, `gas`, `moisture`, `motion`, `occupancy`, `opening`, `smoke` and `window` device classes. Defaults to the `occupancy` device class for everything else. |
| climate | Thermostat | All climate devices. |
| cover | GarageDoorOpener | All covers that support `open` and `close` and have `garage` or `gate` as their `device_class`. |
@@ -422,7 +434,7 @@ Remember that the iOS device needs to be in the same local network as the Home A
#### `Home Assistant Bridge` doesn't appear in the Home App (for pairing) - Docker
-Set `network_mode: host`. If you have further problems this [issue](https://github.com/home-assistant/home-assistant/issues/15692) might help.
+Set `network_mode: host` in your `docker-compose.yaml`. If you have further problems this [issue](https://github.com/home-assistant/home-assistant/issues/15692) might help.
You can also try to use `avahi-daemon` in reflector mode together with the option `advertise_ip`, see above.
@@ -434,6 +446,10 @@ Configure the network mode as `networkbridge`. Otherwise the Home Assistant Brid
Pairing eventually fails, you might see and an error message `NonUniqueNameException`. Add the `safe_mode` option to your configuration, see [safe_mode](#safe-mode).
+If [safe_mode](#safe-mode) is not successful, you likely need to enable `zeroconf_default_interface: true` and set a unique name such as `name: MyHASS42`.
+
+If you had previously paired (even unsuccessfully), you may need to delete your `.homekit.state` file in order to able to successfully pair again. See [Errors during pairing](#errors-during-pairing).
+
#### Pairing hangs - only works with debug configuration
Pairing works fine when the filter is set to only include `demo.demo`, but fails with normal configuration. See [specific entity doesn't work](#specific-entity-doesnt-work)
diff --git a/source/_integrations/islamic_prayer_times.markdown b/source/_integrations/islamic_prayer_times.markdown
index dc46065bdfa..a6b8096e0c4 100644
--- a/source/_integrations/islamic_prayer_times.markdown
+++ b/source/_integrations/islamic_prayer_times.markdown
@@ -1,14 +1,15 @@
---
title: Islamic Prayer Times
-description: Instructions on how to integrate the Islamic Prayer Times sensor within Home Assistant.
+description: Instructions on how to integrate the Islamic Prayer Times integration within Home Assistant.
ha_category:
- Sensor
ha_iot_class: Cloud Polling
ha_release: 0.85
+ha_config_flow: true
ha_domain: islamic_prayer_times
---
-The Islamic Prayer Times (`islamic_prayer_times`) sensor platform displays the various prayer times for Muslims as sensors.
+The Islamic Prayer Times (`islamic_prayer_times`) integration displays the various prayer times for Muslims as sensors.
This platform calculates prayer times using the following calculation methods:
@@ -19,35 +20,15 @@ This platform calculates prayer times using the following calculation methods:
## Configuration
-To enable this sensor in your installation, add the following to your `configuration.yaml` file:
+Set up the integration through **Configuration -> Integrations -> Islamic Prayer Times**. To import the configuration from `configuration.yaml` remove any previously configured sensors with platform type `islamic_prayer_times` and add the following lines:
```yaml
# Example configuration.yaml entry
-sensor:
- - platform: islamic_prayer_times
+islamic_prayer_times:
+
```
{% configuration %}
-sensors:
- required: false
- default: "['fajr', 'dhuhr', 'asr', 'maghrib', 'isha']"
- type: list
- description: List of available sensors.
- keys:
- fajr:
- description: Show the fajr prayer time for today.
- sunrise:
- description: Show the sunrise for today which is the end of fajr prayer. This is a calculated field and may not necessarily be the same as the astronomical sunrise.
- dhuhr:
- description: Show the dhuhr prayer time for today.
- asr:
- description: Show the asr prayer time for today.
- maghrib:
- description: Show the maghrib prayer time for today.
- isha:
- description: Show the isha prayer time for today.
- midnight:
- description: Show the midnight for today which is the end of isha prayer. This is a calculated field and is not the same as 12AM.
calculation_method:
required: false
default: 'isna'
@@ -55,17 +36,22 @@ calculation_method:
description: "The calculation method used for prayer times. Must be one of: `karachi`, `isna`, `mwl`, `makkah`."
{% endconfiguration %}
+## Integration Sensors
+
+The following sensors are added by the integration:
+
+sensors:
+ - fajr: Show the fajr prayer time for today.
+ - sunrise: Show the sunrise for today which is the end of fajr prayer. This is a calculated field and may not necessarily be the same as the astronomical sunrise.
+ - dhuhr: Show the dhuhr prayer time for today.
+ - asr: Show the asr prayer time for today.
+ - maghrib: Show the maghrib prayer time for today.
+ - isha: Show the isha prayer time for today.
+ - midnight: Show the midnight for today which is the end of isha prayer. This is a calculated field and is not the same as 12AM.
+
```yaml
-# Example configuration.yaml entry for all available sensors using a non-default calculation method
-sensor:
- - platform: islamic_prayer_times
+# Example configuration.yaml using a non-default calculation method
+islamic_prayer_times:
calculation_method: makkah
- sensors:
- - fajr
- - sunrise
- - dhuhr
- - asr
- - maghrib
- - isha
- - midnight
+
```
diff --git a/source/_integrations/light.template.markdown b/source/_integrations/light.template.markdown
index 9ed60901d72..1f0568a5c3c 100644
--- a/source/_integrations/light.template.markdown
+++ b/source/_integrations/light.template.markdown
@@ -42,6 +42,11 @@ light:
data_template:
value: "{{ color_temp }}"
entity_id: input_number.temperature_input
+ set_white_value:
+ service: input_number.set_value
+ data_template:
+ value: "{{ white_value }}"
+ entity_id: input_number.white_value_input
set_color:
- service: input_number.set_value
data_template:
@@ -84,6 +89,11 @@ light:
required: false
type: template
default: optimistic
+ white_value_template:
+ description: Defines a template to get the white value of the light.
+ required: false
+ type: template
+ default: optimistic
color_template:
description: Defines a template to get the color of the light. Must render a tuple (hue, saturation)
required: false
@@ -114,6 +124,10 @@ light:
description: Defines an action to run when the light is given a color temperature command.
required: false
type: action
+ set_white_value:
+ description: Defines an action to run when the light is given a white value command.
+ required: false
+ type: action
set_color:
description: Defines an action to run when the light is given a color command.
required: false
diff --git a/source/_integrations/lightwave.markdown b/source/_integrations/lightwave.markdown
index e0c3fc38514..3e2d8c8f5bc 100644
--- a/source/_integrations/lightwave.markdown
+++ b/source/_integrations/lightwave.markdown
@@ -11,7 +11,7 @@ ha_iot_class: Assumed State
ha_domain: lightwave
---
-The `lightwave` integration links Home Assistant with your Lightwave WiFi link for controlling Lightwave lights and switches.
+The `lightwave` integration links Home Assistant with your Lightwave WiFi link for controlling Lightwave lights, switches and TRVs.
This integration uses the official API published by Lightwave on their website [https://api.lightwaverf.com/](https://api.lightwaverf.com/).
To add your Lightwave devices into your Home Assistant installation, add the following to your `configuration.yaml` file:
@@ -19,7 +19,7 @@ To add your Lightwave devices into your Home Assistant installation, add the fol
```yaml
# Example configuration.yaml entry
lightwave:
- host: 192.168.1.2
+ host: IP_ADDRESS
lights:
R1D3:
name: Wall lights
@@ -38,14 +38,84 @@ lightwave:
name: Torch socket
```
-Where `192.168.1.2` is the IP address of your Lightwave hub.
+{% configuration %}
+host:
+ description: IP address of your Lightwave hub
+ required: true
+ type: string
+lights:
+ description: List of lights you wish to configure
+ required: false
+ type: map
+ keys:
+ name:
+ description: Name of the Light
+ required: true
+ type: string
+switches:
+ description: List of switches you wish to configure
+ required: false
+ type: map
+ keys:
+ name:
+ description: Name of the Switch
+ required: true
+ type: string
+trv:
+ description: TRV configuration
+ required: false
+ type: map
+ keys:
+ trv_proxy_ip:
+ description: IP address of a proxy for TRV integration.
+ required: false
+ type: string
+ default: "127.0.0.1"
+ trv_proxy_port:
+ description: IP port address of a proxy for TRV integration.
+ required: false
+ type: integer
+ default: 7878
+ trvs:
+ description: List of TRVs you wish to configure
+ required: false
+ type: map
+ keys:
+ name:
+ description: Name of the TRV
+ required: true
+ type: string
+ serial:
+ description: Serial Number of the TRV
+ required: true
+ type: string
+{% endconfiguration %}
+
+
+Where IP_ADDRESS is the IP address of your Lightwave hub.
Each `switch` or `light` requires an `id` and a `name`. The `id` takes the form `R#D#` where `R#` is the room number and `D#` is the device number.
`lights` and `switches` are optional but one of these must be present.
The first use of a light or switch will try to register with your Lightwave WiFi Link hub. If the hub has not been registered a message on your hub will be displayed asking you to pair the device. You have 12 seconds to push the button on your hub to accept this. Once done, you should be able to control your lights and switches via Home Assistant. This only needs to be done if the hub has not been registered.
-The Lightwave Home Assistant integration currently supports the following Lightwave devices:
+# TRVs
-- Lightwave lights
-- Lightwave switches
+Lightwave Thermostatic Radiator Values (TRV) are supported but require an additional proxy to capture the current TRV temperature.
+See [LWProxy](https://github.com/ColinRobbins/Homeassistant-Lightwave-TRV)
+
+```yaml
+# Example TRV configuration.yaml for TRVs
+lightwave:
+ host: IP_ADDRESS
+ lights:
+ R99D1:
+ name: Bedroom Light
+ trv:
+ trv_proxy_ip: 127.0.0.1 # Proxy address, do not change unless running on a different server
+ trv_proxy_port: 7878 # Do not change, unless a port clash
+ trvs:
+ R1Dh: # The ID of the TRV.
+ name: Bedroom TRV
+ serial: E84902 # Serial number of the TRV - found in the Lightwave App, or web site
+```
diff --git a/source/_integrations/local_ip.markdown b/source/_integrations/local_ip.markdown
index d6d12b3623d..a30a7f5c954 100644
--- a/source/_integrations/local_ip.markdown
+++ b/source/_integrations/local_ip.markdown
@@ -21,11 +21,3 @@ local_ip:
```
To configure via the user interface, select the `Local IP Address` integration.
-
-{% configuration %}
-name:
- description: Friendly name of the sensor.
- required: false
- type: string
- default: local_ip
-{% endconfiguration %}
diff --git a/source/_integrations/lutron.markdown b/source/_integrations/lutron.markdown
index f07a1aadda3..c813aab9665 100644
--- a/source/_integrations/lutron.markdown
+++ b/source/_integrations/lutron.markdown
@@ -65,6 +65,14 @@ For raise/lower buttons (dimmer buttons, shade controls, etc.) there will be two
For single-action buttons (scene selection, etc.), `action` will be `single`, and there will only be one event fired. This is a limitation of the Lutron controller which doesn't give Home Assistant any way of knowing when a single-action button is released.
+## Keypad LEDs
+
+Each full-width button on a Lutron SeeTouch, Hybrid SeeTouch, and Tabletop SeeTouch Keypad has an LED that can be controlled by Home Assistant. A service call of switch.turn_off or switch.turn_on against the appropriate LED entity will control the keypad LED.
+
+Keep in mind that the Lutron system will also control the LED state independent of Home Assistant, according to the programming of the RadioRA2 system. This also means you can query LED states to determine if a certain scene is active, since the LED will have been illuminated by the RadioRA2 repeaters. This includes the "phantom" LEDs of Main Repeater Keypad buttons; even though there is no physical button or LED, the RadioRA2 system tracks the scenes and will "light" the LED that can be queried.
+
+If a button is not programmed to control any lights or other devices in the RadioRA2 system but is given a name in the programming software, it will be available to fire events in Home Assistant. However, since there is no way to have a scene "active" on a button with no devices associated, the Main Repeater will automatically extinguish the keypad LED a few seconds after the button press. If you wish to have Home Assistant light the keypad LED after a button press, you will need to delay your service call to light the LED for several seconds, so it arrives after the Main Repeater has sent the command to turn it off.
+
## Scene
This integration uses keypad programming to identify scenes. Currently, it works with seeTouch, hybrid seeTouch, main repeater, homeowner, Pico, and seeTouch RF tabletop keypads.
diff --git a/source/_integrations/melcloud.markdown b/source/_integrations/melcloud.markdown
index 0b3432a16f0..7a603146e0f 100644
--- a/source/_integrations/melcloud.markdown
+++ b/source/_integrations/melcloud.markdown
@@ -57,6 +57,22 @@ The following parameters can be controlled for the `climate` platform entities:
- Target temperature
- Operation mode (HVAC mode)
- Fan speed
+- Horizontal and vertical vane positions
+
+#### State attributes
+
+|Attribute|Description|Example|
+|---------|-----------|-------|
+|`vane_horizontal` |Current horizontal vane position or mode|`auto`|
+|`vane_horizontal_positions` |Available horizontal vane positions and modes|`auto, split, swing`|
+|`vane_vertical` |Current vertical vane position or mode|`auto`|
+|`vane_vertical_positions` |Available vertical vane positions and modes|`auto, split, swing`|
+
+#### Controlling vanes
+
+The horizontal and vertical vane positions can be controlled using the corresponding `melcloud.set_vane_horizontal` and `melcloud.set_vane_vertical` services.
+
+Swing mode can also be used to control vertical vane position.
### Sensor
diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown
index a42b23fcc2e..ddd70ad94a3 100644
--- a/source/_integrations/modbus.markdown
+++ b/source/_integrations/modbus.markdown
@@ -153,6 +153,34 @@ modbus:
| address | Address of the Register (e.g., 138) |
| value | A single value or an array of 16-bit values. Single value will call modbus function code 6. Array will call modbus function code 16. Array might need reverse ordering. E.g., to set 0x0004 you might need to set `[4,0]` |
+## Log warning (v1.0.8 and onwards)
+
+Pymodbus (which is the implementation library) was updated and issues a warning:
+
+ - "Not Importing deprecated clients. Dependency Twisted is not Installed"
+
+This warning can be safely ignored, and have no influence on how the integration
+works!
+
+## Opening an issue
+
+When opening an issue, please add your current configuration (or a scaled down version), with at least:
+
+ - the Modbus configuration lines
+ - the entity (sensor, etc.) lines
+
+In order for the developers better to identify the problem, please add the
+following lines to configuration.yaml:
+
+```yaml
+logger:
+ logs:
+ homeassistant.components.modbus: debug
+ pymodbus.client: debug
+```
+
+and restart Home Assistant, reproduce the problem, and include the log in the issue.
+
## Building on top of Modbus
- [Modbus Binary Sensor](/integrations/binary_sensor.modbus/)
diff --git a/source/_integrations/nut.markdown b/source/_integrations/nut.markdown
index 96a0ee8753b..43ee723be42 100644
--- a/source/_integrations/nut.markdown
+++ b/source/_integrations/nut.markdown
@@ -31,11 +31,6 @@ sensor:
```
{% configuration %}
- name:
- description: Name prefix for defined sensors.
- required: false
- default: 'NUT UPS'
- type: string
host:
description: The host name or IP address of the device that is running NUT.
required: false
diff --git a/source/_integrations/nws.markdown b/source/_integrations/nws.markdown
index faf3cba885e..1895d2c33d9 100644
--- a/source/_integrations/nws.markdown
+++ b/source/_integrations/nws.markdown
@@ -13,61 +13,12 @@ The `nws` platform uses the [National Weather Service](https://www.weather.gov)
## Configuration
+To add `nws` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **National Weather Service (NWS)**. Multiple entries can be configured, but a unique set of latitude and longitude must be supplied for each.
+
According to the [API documentation](https://www.weather.gov/documentation/services-web-api/), a string is required for the API key, and an email address is suggested to be included within the string.
-To add NWS to your installation using the closest station, add the following to your `configuration.yaml` file:
+Providing a METAR station code is optional, and if not supplied, the closest station to the latitude and longitude will be chosen. A list of nearby stations is printed to the log with level `DEBUG` if no station is supplied. Stations can also be found on the [NOAA website](https://www.cnrfc.noaa.gov/metar.php). Codes with only three characters, for example, `ADW` should be prefixed with the letter K, `KADW`.
-```yaml
-# Example configuration.yaml entry
-weather:
- - platform: nws
- api_key: YOUR_API_KEY
-```
-
-To specify a station, for example, KADW (Andrews Air Force Base), use the following:
-
-```yaml
-# Example configuration.yaml entry
-weather:
- - platform: nws
- api_key: YOUR_API_KEY
- station: KADW
-```
-
-A list of nearby stations is printed to the log with level `DEBUG` if no station is supplied. Stations can also be found on the [NOAA website](https://www.cnrfc.noaa.gov/metar.php). Codes with only three characters, for example, `ADW` should be prefixed with the letter K, `KADW`.
-
-The default forecast is day and night, `mode: daynight`, while `mode: hourly` gives the forecast hourly. The forecast is obtained from the latitude and longitude value, not the station.
-
-{% configuration %}
-api_key:
- description: "Your API key. Any string, but an email address is suggested to be included."
- required: true
- type: string
-latitude:
- description: "Manually specify latitude. By default, the value will be taken from the Home Assistant configuration."
- required: false
- type: float
- default: "Provided by Home Assistant configuration."
-longitude:
- description: Manually specify longitude. By default, the value will be taken from the Home Assistant configuration.
- required: false
- type: float
- default: "Provided by Home Assistant configuration."
-name:
- description: "Name to use in the frontend."
- required: false
- type: string
- default: "Station name."
-mode:
- description: "The forecast type. Can be `daynight` or `hourly`."
- required: false
- type: string
- default: daynight
-station:
- description: "METAR station code."
- required: false
- type: string
- default: "Closest station to `latitude` and `longitude` as returned by NWS API."
-{% endconfiguration %}
+Two weather entities are created for each entry in the configuration: one for hourly forecasts and one for day and night forecasts. The time supplied for each forecast is the start time for the forecast.
Details about the API are available in the [NWS API documentation](https://www.weather.gov/documentation/services-web-api). The [pynws](https://github.com/MatthewFlamm/pynws) library is used to retrieve data.
diff --git a/source/_integrations/openerz.markdown b/source/_integrations/openerz.markdown
new file mode 100644
index 00000000000..bb937533299
--- /dev/null
+++ b/source/_integrations/openerz.markdown
@@ -0,0 +1,41 @@
+---
+title: "OpenERZ Sensor"
+description: "Instructions on how to integrate a OpenERZ API for Zurich city waste disposal with Home Assistant"
+ha_category:
+ - Sensor
+ha_release: 0.109
+ha_iot_class: Cloud Polling
+ha_domain: openerz
+---
+
+This `openerz` sensor platform uses [OpenERZ](http://openerz.metaodi.ch/) API to access data from Entsorgung und Recycling Zürich (ERZ). It reports the next pickup date for the specified zip and waste type.
+
+## Configuration
+
+To enable this sensor in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: openerz
+ zip: 8001
+ waste_type: cardboard
+```
+
+Available (and tested) waste types are: `paper`, `cardboard`, `waste`, `cargotram`, `etram`, `organic` and `textile`.
+
+{% configuration %}
+name:
+ description: The name to be used when displaying this sensor.
+ required: false
+ type: string
+zip:
+ description: Postcode of the pickup location.
+ required: true
+ type: string
+waste_type:
+ description: Type of waste to be collected.
+ required: true
+ type: string
+ default: waste
+{% endconfiguration %}
diff --git a/source/_integrations/panasonic_viera.markdown b/source/_integrations/panasonic_viera.markdown
index fb31a4683fc..073d8968ae5 100644
--- a/source/_integrations/panasonic_viera.markdown
+++ b/source/_integrations/panasonic_viera.markdown
@@ -1,6 +1,6 @@
---
-title: Panasonic Viera TV
-description: Instructions on how to integrate a Panasonic Viera TV into Home Assistant.
+title: Panasonic Viera
+description: Instructions on how to integrate a Panasonic Viera TV with Home Assistant.
ha_category:
- Media Player
ha_release: 0.17
@@ -10,7 +10,86 @@ ha_domain: panasonic_viera
The `panasonic_viera` platform allows you to control a Panasonic Viera TV.
-Currently known supported models:
+## Configuration
+
+To configure your Panasonic Viera TV, head to the **Configuration > Integrations** page. Click on the plus (+) button to add a new integration.
+
+Once the integration is loaded, with your TV turned on and connected to your local network, enter the IP address of your TV and a name of your choice.
+
+If your TV needs to be paired, you will be prompted to type the PIN code that will be displayed on it.
+
+## Manual configuration
+
+If you prefer to use YAML to set up your Panasonic Viera TV, you can still do it. It also allows for some extra settings.
+
+```yaml
+# Example configuration.yaml entry
+panasonic_viera:
+ host: YOUR_TV_IP
+```
+
+{% configuration %}
+host:
+ description: The IP address of your Panasonic Viera TV, e.g., `192.168.1.10`.
+ required: true
+ type: string
+name:
+ description: The name you would like to give to the TV entity.
+ required: false
+ default: Panasonic Viera TV
+ type: string
+port:
+ description: The port number of your Panasonic Viera TV.
+ required: false
+ default: 55000
+ type: integer
+turn_on_action:
+ description: Defines an action to turn the TV on. If not specified, a power key signal will try to be sent to the TV. Be aware that it might not work properly with some models.
+ required: false
+ type: list
+{% endconfiguration %}
+
+When you restart Home Assistant, make sure the TV is turned on and connected to your local network. If your TV needs to be paired, you'll need to go to **Configuration > Integrations** to type the PIN code that will be displayed on it and finish the setup.
+
+### Example `turn_on_action`
+
+```yaml
+# Example turn_on_action configuration.yaml entry with Wake-on-LAN
+panasonic_viera:
+ host: YOUR_TV_IP
+ name: Living Room TV
+ turn_on_action:
+ - service: wake_on_lan.send_magic_packet
+ data:
+ mac: "AA:BB:CC:DD:99:1A"
+```
+
+### Example `play_media` script
+
+The `play_media` function can be used to open web pages and other media types (images, movies) via URLs in the TV web browser.
+
+```yaml
+# Example play_media script
+script:
+ front_door_camera:
+ alias: "Show who's at the door"
+ sequence:
+ - service: media_player.turn_on
+ data:
+ entity_id: media_player.living_room_tv
+ - service: media_player.play_media
+ data:
+ entity_id: media_player.living_room_tv
+ media_content_type: "url"
+ media_content_id: YOUR_URL
+ - delay:
+ seconds: 5
+ - service: media_player.media_stop
+ data:
+ entity_id: media_player.living_room_tv
+```
+
+### Currently known supported models
- TC-P50ST50
- TC-P60S60
@@ -31,74 +110,4 @@ Currently known supported models:
- TX-42AS650
- TX55ASW654
-If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io/blob/current/source/_integrations/panasonic_viera.markdown).
-
-Some Panasonic Viera TVs allow Home Assistant to turn them on, if you specify the MAC address with `mac:`.
-
-Note that your TV has to reside in the same network as your Home Assistant instance for this platform to work. If you have multiple network interfaces on your Home Assistant instance, you may need to specify the `broadcast_address`.
-
-To add a TV to your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-media_player:
- - platform: panasonic_viera
- host: 192.168.0.10
-```
-
-{% configuration %}
-host:
- description: The IP of the Panasonic Viera TV, e.g., `192.168.0.10`.
- required: true
- type: string
-port:
- description: The port number of your Panasonic Viera TV.
- required: false
- default: 55000
- type: integer
-mac:
- description: The MAC address of your Panasonic Viera TV, e.g., `AA:BB:CC:DD:99:1A`.
- required: false
- type: string
-broadcast_address:
- description: The broadcast address on which to send the Wake-On-Lan packet.
- required: false
- default: 255.255.255.255
- type: string
-app_power:
- description: Set to `true` if your Panasonic Viera TV supports "Turn on via App".
- required: false
- default: false
- type: boolean
-name:
- description: The name you would like to give to the Panasonic Viera TV.
- required: false
- default: Panasonic Viera TV
- type: string
-{% endconfiguration %}
-
-### Example `play_media` script
-
-The `play_media` function can be used to open web pages and other media types (images, movies) in the TV web browser.
-
-```yaml
-# Example play_media script that can be triggered when someone is detected at the door
-#
-script:
- front_door_camera:
- alias: "Show who's at the door"
- sequence:
- - service: media_player.turn_on
- data:
- entity_id: media_player.living_room_tv
- - service: media_player.play_media
- data:
- entity_id: media_player.living_room_tv
- media_content_type: "url"
- media_content_id: "http://google.com"
- - delay:
- seconds: 5
- - service: media_player.media_stop
- data:
- entity_id: media_player.living_room_tv
-```
+If your model is not on the list, give it a test. If everything works correctly, then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io/blob/current/source/_integrations/panasonic_viera.markdown).
diff --git a/source/_integrations/pi4ioe5v9xxxx.markdown b/source/_integrations/pi4ioe5v9xxxx.markdown
new file mode 100644
index 00000000000..8343beb4416
--- /dev/null
+++ b/source/_integrations/pi4ioe5v9xxxx.markdown
@@ -0,0 +1,135 @@
+---
+title: "pi4ioe5v9xxxx IO Expander"
+description: "Instructions on how to integrate the pi4ioe5v9xxxx IO pin expander with I2C interface into Home Assistant."
+logo: diodes.png
+ha_category:
+ - DIY
+ - Binary Sensor
+ - Switch
+ha_release: 0.109
+ha_iot_class: Local Polling
+---
+
+The `pi4ioe5v9xxxx` integration provides support for the quasi-bidirectional devices PI4IOE5V9570, PI4IOE5V9674, PI4IOE5V9673, PI4IOE5V96224 and PI4IOE5V96248 from digital.com.
+
+For more details about the pi4ioe5v9xxxx I2C I/O port expander you can find the datasheets here:
+- [PI4IOE5V9570](https://www.diodes.com/assets/Datasheets/PI4IOE5V9570.pdf)
+- [PI4IOE5V9674](https://www.diodes.com/assets/Datasheets/PI4IOE5V9674.pdf)
+- [PI4IOE5V9673](https://www.diodes.com/assets/Datasheets/PI4IOE5V9673.pdf)
+- [PI4IOE5V96224](https://www.diodes.com/assets/Datasheets/PI4IOE5V96224.pdf)
+- [PI4IOE5V96248](https://www.diodes.com/assets/Datasheets/PI4IOE5V96248.pdf).
+
+## Binary Sensor
+
+The `pi4ioe5v9xxxx` binary sensor platform allows you to read sensor values from the I/O pins of your I/O expander.
+
+The pin numbers are from 1 to X where: 1-8 correspond to port 0 (00-07) and 9-16 to port 1, etc.
+
+### Configuration
+
+To use the I/O pins of an pi4ioe5v9xxxx connected to an I2C bus of your Raspberry Pi as binary sensors, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+binary_sensor:
+- platform: pi4ioe5v9xxxx
+ pins:
+ 1: Pin_01/PI0_0
+ 2: Pin_02/PI0_1
+ 3: Pin_03/PI0_2
+ 4: Pin_04/PI0_3
+ 5: Pin_05/PI0_4
+ 6: Pin_06/PI0_5
+ 7: Pin_07/PI0_6
+ 8: Pin_08/PI0_7
+```
+
+{% configuration %}
+pins:
+ description: List of used pins.
+ required: true
+ type: map
+ keys:
+ "pin: name":
+ description: The pin numbers (from 1 to X) and corresponding names.
+ required: true
+ type: [integer, string]
+i2c_bus:
+ description: i2c bus containing the pi4ioe5v9xxxx chip.
+ required: false
+ type: integer
+ default: "`1`"
+i2c_address:
+ description: i2c address of pi4ioe5v9xxxx chip.
+ required: false
+ type: integer
+ default: "`0x20`"
+bits:
+ description: number of bits of pi4ioe5v9xxxx chip, see particular datasheet for your device for the right number.
+ required: false
+ type: integer
+ default: "`24`"
+invert_logic:
+ description: If `true`, inverts the input logic to ACTIVE LOW.
+ required: false
+ type: boolean
+ default: "`false` (ACTIVE HIGH)"
+{% endconfiguration %}
+
+
+## Switch
+
+The `pi4ioe5v9xxxx` switch platform allows you to write to the I/O pins of your I2C I/O expander.
+
+The pin numbers are from 1 to X, where 1-8 correspond to port A (A1-A8) and 9-16 to port B (B1-B8), etc.
+
+### Configuration
+
+To use the I/O pins of an pi4ioe5v9xxxx connected to an I2C bus as switches, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+switch:
+ - platform: pi4ioe5v9xxxx
+ pins:
+ 1: Pin_01/PI0_0
+ 2: Pin_02/PI0_1
+ 3: Pin_03/PI0_2
+ 4: Pin_04/PI0_3
+ 5: Pin_05/PI0_4
+ 6: Pin_06/PI0_5
+ 7: Pin_07/PI0_6
+ 8: Pin_08/PI0_7
+```
+
+{% configuration %}
+pins:
+ description: List of used pins.
+ required: true
+ type: map
+ keys:
+ "pin: name":
+ description: The pin numbers (from 1 to X) and corresponding names.
+ required: true
+ type: [integer, string]
+i2c_bus:
+ description: i2c bus containing the pi4ioe5v9xxxx chip.
+ required: false
+ type: integer
+ default: "`1`"
+i2c_address:
+ description: i2c address of pi4ioe5v9xxxx chip.
+ required: false
+ type: integer
+ default: "`0x20`"
+bits:
+ description: number of bits of pi4ioe5v9xxxx chip, see particular datasheet for your device for the right number.
+ required: false
+ type: integer
+ default: "`24`"
+invert_logic:
+ description: If `true`, inverts the output logic to ACTIVE LOW.
+ required: false
+ type: boolean
+ default: "`false` (ACTIVE HIGH)"
+{% endconfiguration %}
diff --git a/source/_integrations/pushetta.markdown b/source/_integrations/pushetta.markdown
deleted file mode 100644
index 05ead757fc5..00000000000
--- a/source/_integrations/pushetta.markdown
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Pushetta
-description: Instructions on how to add Pushetta notifications to Home Assistant.
-ha_category:
- - Notifications
-ha_release: pre 0.7
-ha_domain: pushetta
----
-
-The `pushetta` notify platform uses [Pushetta](http://www.pushetta.com) to delivery notifications from Home Assistant to your devices.
-
-To retrieve the API token, log into your account at [http://www.pushetta.com](http://www.pushetta.com) and go to your **Dashboard**. Create a new channel by clicking on **Channels** and then **Add a Channel**.
-
-To enable Pushetta notifications in your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-notify:
- - name: NOTIFIER_NAME
- platform: pushetta
- api_key: YOUR_API_KEY
- channel_name: YOUR_CHANNEL_NAME
-```
-
-{% configuration %}
-name:
- description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`.
- required: false
- default: notify
- type: string
-api_key:
- description: Your API key for Pushetta.
- required: true
- type: string
-channel_name:
- description: The name of your channel.
- required: true
- type: string
-send_test_msg:
- description: Disable/enable the test message send on Home Assistant's startup to test the API key and the existence of the channel.
- required: false
- default: false
- type: boolean
-{% endconfiguration %}
-
-It's easy to test your Pushetta setup outside of Home Assistant. Assuming you have a channel `home-assistant`, just fire a request and check the channel page in the dashboard for a new message.
-
-```bash
-curl -X POST \
- -H "Authorization: Token YOUR_API_KEY" \
- -H "Content-Type: application/json" \
- -d "{ \"body\" : \"Hello World\", \"message_type\" : \"text/plain\" }" \
- http://api.pushetta.com/api/pushes/home-assistant/
-```
-
-For further details, please check the [API](http://www.pushetta.com/pushetta-api/).
-
-To use notifications, please see the [getting started with automation page](/getting-started/automation/).
diff --git a/source/_integrations/qvr_pro.markdown b/source/_integrations/qvr_pro.markdown
index 567fe1ce963..819217ad78f 100644
--- a/source/_integrations/qvr_pro.markdown
+++ b/source/_integrations/qvr_pro.markdown
@@ -45,6 +45,7 @@ password:
port:
description: The port where QVR accepts connections.
required: false
+ default: 8080
type: integer
exclude_channels:
description: Comma separated list of channel numbers to be excluded.
diff --git a/source/_integrations/rachio.markdown b/source/_integrations/rachio.markdown
index ae67cbe1cd6..b507fa85981 100644
--- a/source/_integrations/rachio.markdown
+++ b/source/_integrations/rachio.markdown
@@ -46,10 +46,6 @@ api_key:
description: The API key for the Rachio account.
required: true
type: string
-hass_url_override:
- description: If your instance is unaware of its actual web location (`base_url`).
- required: false
- type: string
manual_run_mins:
description: For how long, in minutes, to turn on a station when the switch is enabled.
required: false
@@ -78,9 +74,9 @@ panel_iframe:
## Switch
-The `rachio` switch platform allows you to toggle zones connected to your [Rachio irrigation system](https://rachio.com/) on and off.
+The `rachio` switch platform allows you to toggle zones and schedules connected to your [Rachio irrigation system](https://rachio.com/) on and off.
-Once configured, a switch will be added for every zone that is enabled on every controller in the account provided, as well as a switch to toggle each controller's standby mode.
+Once configured, a switch will be added for every zone that is enabled on every controller in the account provided, a switch to start or stop every schedule on a controller, as well as a switch to toggle each controller's standby mode.
## Examples
@@ -97,6 +93,7 @@ irrigation:
- group.zones_front
- group.zones_back
- switch.side_yard
+ - switch.every_day_6am
zones_front:
name: Front Yard
diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown
index 9213494b2bd..fc7330a2211 100644
--- a/source/_integrations/recorder.markdown
+++ b/source/_integrations/recorder.markdown
@@ -47,16 +47,16 @@ recorder:
required: false
default: 3
type: integer
+ auto_purge:
+ description: Automatically purge the database every night at 04:12 local time. Purging keeps the database from growing indefinitely, which takes up disk space and can make Home Assistant slow. If you disable `auto_purge` it is recommended that you create an automation to call the [`recorder.purge`](#service-purge) periodically.
+ required: false
+ default: true
+ type: boolean
purge_keep_days:
description: Specify the number of history days to keep in recorder database after a purge.
required: false
default: 10
type: integer
- purge_interval:
- description: How often (in days) the purge task runs. If a scheduled purge is missed (e.g., if Home Assistant was not running), the schedule will resume soon after Home Assistant restarts. You can use the [service](#service-purge) call `purge` when required without impacting the purge schedule. If this is set to `0` (zero), automatic purging is disabled.
- required: false
- default: 1
- type: integer
commit_interval:
description: How often (in seconds) the events and state changes are committed to the database. The default of `1` allows events to be committed almost right away without trashing the disk when an event storm happens. Increasing this will reduce disk I/O and may prolong disk (SD card) lifetime with the trade-off being that the logbook and history will lag. If this is set to `0` (zero), commit are made as soon as possible after an event is processed.
required: false
@@ -94,7 +94,7 @@ recorder:
type: list
{% endconfiguration %}
-Defining domains and entities to `exclude` (aka. blacklist) is convenient when you are basically happy with the information recorded, but just want to remove some entities or domains. Usually, these are entities/domains that do not change or rarely change (like `updater` or `automation`).
+Defining domains and entities to `exclude` (i.e. blacklist) is convenient when you are basically happy with the information recorded, but just want to remove some entities or domains.
```yaml
# Example configuration.yaml entry with exclude
@@ -113,7 +113,7 @@ recorder:
- call_service # Don't record service calls
```
-define domains and entities to record by using the `include` configuration (aka. whitelist) is convenient if you have a lot of entities in your system and your `exclude` lists possibly get very large, so it might be better just to define the entities or domains to record.
+Defining domains and entities to record by using the `include` configuration (i.e. whitelist) is convenient if you have a lot of entities in your system and your `exclude` lists possibly get very large, so it might be better just to define the entities or domains to record.
```yaml
# Example configuration.yaml entry with include
@@ -146,11 +146,12 @@ If you only want to hide events from your history, take a look at the [`history`
### Service `purge`
Call the service `recorder.purge` to start a purge task which deletes events and states older than x days, according to `keep_days` service data.
+Note that purging will not immediately decrease disk space usage but it will significantly slow down further growth.
-| Service data attribute | Optional | Description |
-| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `keep_days` | yes | The number of history days to keep in recorder database (defaults to the integration `purge_keep_days` configuration) |
-| `repack` | yes | Rewrite the entire database, possibly saving some disk space. Only supported for SQLite and requires at least as much disk space free as the database currently uses. |
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `keep_days` | yes | The number of history days to keep in recorder database (defaults to the integration `purge_keep_days` configuration) |
+| `repack` | yes | Rewrite the entire database, possibly saving some disk space. This is a heavy operation that can cause slowdowns and increased disk space usage while it runs. Only supported for SQLite and PostgreSQL. |
## Custom database engines
diff --git a/source/_integrations/roku.markdown b/source/_integrations/roku.markdown
index 7050fefb749..96e7b5f0532 100644
--- a/source/_integrations/roku.markdown
+++ b/source/_integrations/roku.markdown
@@ -116,3 +116,14 @@ action:
source: 20197
service: media_player.select_source
```
+
+It is also possible to tune directly to specific channels if you have a Roku TV and use an OTA antenna. This service only supports `media_channel_type` of 'channel'. `media_content_id` corresponds to the TV channel, which you should see when navigating to these on your TV UI.
+
+```yaml
+action:
+- data:
+ entity_id: media_player.roku
+ media_content_id: 5.1
+ media_content_type: channel
+ service: media_player.play_media
+```
diff --git a/source/_integrations/roomba.markdown b/source/_integrations/roomba.markdown
index bacde3a883f..ecbb8b776c9 100644
--- a/source/_integrations/roomba.markdown
+++ b/source/_integrations/roomba.markdown
@@ -1,34 +1,39 @@
---
title: iRobot Roomba
-description: Instructions on how to integrate your Wi-Fi enabled Roomba within Home Assistant.
+description: Instructions on how to integrate your Wi-Fi enabled Roomba and Braava within Home Assistant.
ha_category:
- Vacuum
+ha_iot_class: Local Push
ha_release: 0.51
+ha_conflig_flow: true
ha_codeowners:
- '@pschmitt'
+ - '@cyr-ius'
+ - '@shenxn'
ha_domain: roomba
---
-The `roomba` integration allows you to control your [iRobot Roomba](https://www.irobot.com/For-the-Home/Vacuuming/Roomba.aspx) vacuum.
+The `roomba` integration allows you to control your [iRobot Roomba](https://www.irobot.com/roomba) vacuum or [iRobot Braava](https://www.irobot.com/braava) m-series mop.
-This platform has been tested and is confirmed to be working with the iRobot Roomba 980 and 890 models, but should also work fine with any Wi-Fi enabled Roomba like the 690 or the 960.
+This platform has been tested and is confirmed to be working with the iRobot Roomba s9+, Roomba 980, Roomba 890, and Braava jet m6 models, but should also work fine with any Wi-Fi enabled Roomba or Braava like the 690 or the 960.
## Configuration
+To add your Roomba to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with + sign and from the list of integrations select iRobot Roomba.
+
To add your Roomba vacuum to your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
-vacuum:
- - platform: roomba
- host: IP_ADDRESS_OR_HOSTNAME
- username: BLID
+roomba:
+ - host: IP_ADDRESS_OR_HOSTNAME
+ blid: BLID
password: PASSWORD
```
@@ -37,7 +42,7 @@ host:
description: The hostname or IP address of the Roomba.
required: true
type: string
-username:
+blid:
description: The username (BLID) for your device.
required: true
type: string
@@ -45,11 +50,6 @@ password:
description: The password for your device.
required: true
type: string
-name:
- description: The name of the vacuum.
- required: false
- type: string
- default: Roomba
certificate:
description: Path to your certificate store.
required: false
@@ -73,6 +73,29 @@ The Roomba's MQTT server only allows a single connection. Enabling continuous mo
+## Integration Entities
+
+The Roomba Integration will add the following sensors.
+
+Sensors:
+- roomba_battery_level : The status of your battery
+- roomba_bin_full (if Roomba has the capacity to do) : Bin Full status
+
+### Multiple Roomba vacuums
+
+```yaml
+# Example configuration.yaml entry
+roomba:
+ - host: IP_ADDRESS_OR_HOSTNAME_1
+ blid: BLID_1
+ password: PASSWORD_1
+ - host: IP_ADDRESS_OR_HOSTNAME_2
+ blid: BLID_2
+ password: PASSWORD_2
+ continuous: false
+ delay: 5
+```
+
### Retrieving your credentials
Please refer to [here](https://github.com/NickWaterton/Roomba980-Python#how-to-get-your-usernameblid-and-password) or [here](https://github.com/koalazak/dorita980#how-to-get-your-usernameblid-and-password) to retrieve both the BLID (username) and the password.
diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown
index 4c2435f34c5..961303fd429 100644
--- a/source/_integrations/scene.markdown
+++ b/source/_integrations/scene.markdown
@@ -95,6 +95,33 @@ automation:
source: HDMI 1
```
+## Using scene transitions
+
+Both the `scene.apply` and `scene.turn_on` services support setting a transition,
+which enables you to smoothen the transition to the scene.
+
+This is an example of an automation that sets a romantic scene, in which the
+light will transition to the scene in 2.5 seconds.
+
+```yaml
+# Example automation
+automation:
+ trigger:
+ platform: state
+ entity_id: device_tracker.sweetheart
+ from: "not_home"
+ to: "home"
+ action:
+ service: scene.turn_on
+ data:
+ entity_id: scene.romantic
+ transition: 2.5
+```
+
+Transitions are currently only support by lights, which in their turn, have
+to support it as well. However, the scene itself does not have to consist of
+only lights to have a transition set.
+
## Reloading scenes
Whenever you make a change to your scene configuration, you can call the `scene.reload` service to reload the scenes.
diff --git a/source/_integrations/slide.markdown b/source/_integrations/slide.markdown
index dadfde25fe9..72a30a2300a 100644
--- a/source/_integrations/slide.markdown
+++ b/source/_integrations/slide.markdown
@@ -36,4 +36,9 @@ scan_interval:
required: false
default: 30 seconds
type: integer
+invert_position:
+ description: Invert position percentage.
+ required: false
+ default: false
+ type: boolean
{% endconfiguration %}
diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown
index ec91c1b3c6e..d99a6197e06 100644
--- a/source/_integrations/smartthings.markdown
+++ b/source/_integrations/smartthings.markdown
@@ -1,6 +1,6 @@
---
-title: Smartthings
-description: Instructions on setting up Samsung SmartThings within Home Assistant.
+title: SmartThings
+description: Instructions on setting up SmartThings within Home Assistant.
featured: true
ha_category:
- Hub
@@ -21,74 +21,63 @@ ha_codeowners:
ha_domain: smartthings
---
-Samsung SmartThings is integrated into Home Assistant through the SmartThings Cloud API. The SmartThings integration is the main integration to integrate all SmartThings related platforms. The basic features of this integration include:
+ SmartThings is integrated into Home Assistant through the SmartThings Cloud API. The features of this integration include:
-1. Controlling SmartThings devices with pushed state updates from SmartThings.
-2. Entities automatically added, removed, or updated when changed in SmartThings (upon Home Assistant restart).
-3. Support for multiple SmartThings accounts and locations, each represented as a unique integration in the front-end configuration.
-4. No brokers, bridges, or additional dependencies.
+1. Controlling SmartThings devices as Home Assistant entities ([see platforms for supported devices and capabilities](#platforms)).
+1. Entities automatically synchronized upon restart of Home Assistant when changed in SmartThings.
+1. Support for multiple SmartThings accounts and locations with each represented as an integration instance in Home Assistant.
+1. No brokers, bridges, or additional dependencies.
-See it in action, with a step-by-step setup guide, thanks to a fan! (v0.87 featured):
+## Prerequisites
-
-
-
+1. A SmartThings [personal access token](https://account.smartthings.com/tokens).
+1. An internet accessible incoming webhook or active Home Assistant Cloud subscription.
-## Basic requirements
+### Personal Access Token (PAT)
-The SmartThings integration utilizes a webhook to receive push updates from the SmartThings cloud through either a cloudhook or an internet accessible webhook based on whether Home Assistant Cloud is configured and logged in with a non-expired subscription (this is not configurable at this time).
-
-### Cloudhook via Nabu Casa
-
-If you are using Home Assistant Cloud (Nabu Casa) the integration will create a cloudhook automatically. This greatly simplifies the basic requirements and does not require Home Assistant to be exposed to the internet. **If you have previously setup the integration prior to meeting the requirements for a cloudhook or prior to v0.90.0, you must remove all prior integrations and run through the configuration again.**
-
-1. A [personal access token](https://account.smartthings.com/tokens) tied to a Samsung or SmartThings account (see below for instructions).
-2. Home Assistant Cloud is configured and logged-in with a non-expired subscription.
-
-### Webhook
-
-1. A [personal access token](https://account.smartthings.com/tokens) tied to a Samsung or SmartThings account (see below for instructions).
-2. Home Assistant setup for [remote access](/docs/configuration/remote/) via a domain name secured with SSL. *Self-signed SSL certificates are not supported by the SmartThings Cloud API.*
-3. [`base_url` of the HTTP integration](/integrations/http#base_url) set the URL that Home Assistant is available on the internet. SmartThings requires the `base_url` and Home Assistant to use the standard HTTPS port (443).
-
-## Setup instructions
-
-### Create personal access token
+The PAT is used to create a Home Assistant SmartApp in your SmartThings account during setup of the integration.
1. Log into the [personal access tokens page](https://account.smartthings.com/tokens) and click '[Generate new token](https://account.smartthings.com/tokens/new)'
-2. Enter a token name (can be whatever you want), for example, 'Home Assistant' and select the following authorized scopes:
+1. Enter a token name (can be whatever you want), for example, 'Home Assistant' and select the following authorized scopes:
- Devices (all)
- Installed Apps (all)
- Locations (all)
- Apps (all)
- Schedules (all)
- Scenes (all)
-3. Click 'Generate token'. When the token is displayed, copy and save it somewhere safe (such as your keystore) as you will not be able to retrieve it again.
+1. Click 'Generate token'. When the token is displayed copy and save it somewhere safe (such as your keystore) as you will not be able to retrieve it again.
-### Configure Home Assistant
+### Webhook
+
+This integration requires an internet accessible incoming webhook to receive push updates from SmartThings. The preferred approach is to subscribe to [Home Assistant Cloud (Nabu Casa)](https://www.nabucasa.com/) and the integration will configure and use a cloudhook automatically. Alternatively, you will have to configure and setup a internet accessible webhook in Home Assistant as described below:
+
+1. Setup [remote access](/docs/configuration/remote/) via a domain name secured with SSL. *Self-signed SSL certificates are not supported by the SmartThings Cloud API.*
+1. Set [`base_url` of the HTTP integration](/integrations/http#base_url) to the URL that Home Assistant is available on the internet (this must start with `https://`).
+
+## Setup instructions
+
+After completing the prerequisite steps above you are ready to setup the integration! See [troubleshooting](#troubleshooting) if you are having issues setting up the integration.
+
+1. From Home Assistant, navigate to 'Configuration' then 'Integrations'. Click the plus icon and type/select 'SmartThings'.
+1. Confirm the callback URL is correct. If using Home Assistant Cloud it will start with `https://hooks.nabuca.casa`. If the URL is not correct, update your Home Assistant configuration, restart, and try again.
+1. Enter your Personal Access Token.
+1. Select the SmartThings Location to add to Home Assistant.
+1. On the window that opens:
+ 1. Login with your SmartThings account (if not already logged in).
+ 1. Optionally change the display name and click 'Done' on the upper right of the screen.
+ 1. Authorize the integration by clicking 'Allow' on the bottom right of the screen.
+ 1. Click 'Close Window' or close it manually if necessary.
+1. Back in Home Assistant click 'Finish'.
-The SmartThings integration is configured exclusively through the front-end. Manual setup through `configuration.yaml` is not available at this time.
+If you want to integrate additional SmartThings accounts or locations, repeat the steps above.
-1. From the Home Assistant front-end, navigate to 'Configuration' then 'Integrations'. Under 'Set up a new integration' locate 'SmartThings' and click 'Configure'.
-2. Enter the personal access token created above and click 'Submit'
-3. When prompted, install the SmartApp:
- 1. Open the SmartThings Classic mobile app. Navigate to 'Automation' and select the 'SmartApps' tab.
- 2. Click 'Add a SmartApp', scroll to the bottom, and select 'My Apps', then choose 'Home Assistant'.
- 3. Optionally change the display name and press 'Done'
- 4. Authorize the app by pressing 'Allow'
-4. Return to Home Assistant and click 'Submit'.
+## Removal instructions
-
-
-Advanced: If you have multiple locations in SmartThings, each can be integrated into Home Assistant. Follow the steps above, then for each subsequent location, install the SmartApp and it will automatically add to Home Assistant. This can be completed during step 3 (install SmartApp) above or at any time after that.
-
-
-
-See the [troubleshooting](#troubleshooting) if you are having issues setting up the integration.
+To remove the integration from Home Assistant, select the instance from the Home Assistant Integrations page and click the trash icon on the upper right corner. Alternatively, you can remove the SmartApp from the location within the SmartThings application. If the Home Assistant instance that setup the integration is no longer running or functioning, you will need to use this [utility to remove the orphaned SmartApps in your SmartThings account](https://pypi.org/project/hass-smartthings-remove/).
## Events
@@ -291,12 +280,31 @@ The SmartThings Switch platform lets you control devices that have the [`switch`
### Setup
-Perform the following steps if you receive one of the following error messages while attempting to setup the integration (this does not apply when integrated through Home Assistant Cloud):
+#### Aborted: Home Assistant is not configured correctly to receive updates from SmartThings
-- "SmartThings could not validate the endpoint configured in base_url. Please review the integration requirements."
-- "Unable to setup the SmartApp. Please try again."
+This error message occurs when you do not have an active Home Assistant Cloud (Nabu Casa) subscription and the `base_url` is not configured correctly (it must start with `https`). Update your Home Assistant configuration per the prerequisites above, restart, and try again.
-#### Checklist
+#### Error: The token must be in the UID/GUID format
+
+The personal access token does not match the expected format. Make sure you are copying the entire token and that there are no extraneous characters (such as trailing whitespace) and try again.
+
+#### Error: The token is invalid or no longer authorized
+
+The personal access token entered is not valid or has been deleted. Create a new token per the instructions in the prerequisites and try again.
+
+#### Error: The token does not have the required OAuth scopes
+
+The personal access token entered is valid but does not have the required scopes as outlined in the prerequisites. Create a new token per the instructions in the prerequisites and try again.
+
+#### Error: SmartThings could not validate the webhook URL
+
+SmartThings was unable to reach your Home Assistant instance using the webhook URL. Enable debug logging to see the specific issue and follow the webhook troubleshooting checklist below.
+
+#### Aborted: There are no available SmartThings Locations
+
+This error message occurs when all of the SmartThings locations under the account linked to the personal access token are already setup in Home Assistant. Ensure you are using the correct personal access token or create an additional location in SmartThings to integrate and try again.
+
+#### Webhook Troubleshooting Checklist
1. Ensure `base_url` is properly set to the _external address_ that Home Assistant is available to the internet. SmartThings must be able to reach this address.
1. Validate there are no problems with your certificate or SSL configuration by using an online checker, such as [https://www.digicert.com/help/](https://www.digicert.com/help/).
diff --git a/source/_integrations/snapcast.markdown b/source/_integrations/snapcast.markdown
index 658eac7c406..fded380fb19 100644
--- a/source/_integrations/snapcast.markdown
+++ b/source/_integrations/snapcast.markdown
@@ -67,3 +67,12 @@ Remove one or more speakers from their group of speakers.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | String or list of `entity_id`s to separate from their coordinator speaker.
+
+### Service `snapcast.set_latency`
+
+Set the latency of a speaker.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | yes | String or list of `entity_id`s for which latency will be adjusted.
+| `latency` | yes | Latency in ms.
diff --git a/source/_integrations/synology_dsm.markdown b/source/_integrations/synology_dsm.markdown
new file mode 100644
index 00000000000..00b1f6b5fd1
--- /dev/null
+++ b/source/_integrations/synology_dsm.markdown
@@ -0,0 +1,118 @@
+---
+title: Synology DSM
+description: Instructions on how to integrate the Synology DSM sensor within Home Assistant.
+ha_category:
+ - System Monitor
+ha_release: 0.32
+ha_iot_class: Local Polling
+ha_domain: synology_dsm
+---
+
+The `synology_dsm` sensor platform allows getting various statistics from your [Synology NAS](https://www.synology.com).
+
+## Configuration
+
+There are two ways to integrate Synology DSM in Home Assistant.
+
+### Via the frontend
+
+Menu: *Configuration* -> *Integrations*. Search for "Synology DSM", fill the configuration form, click submit.
+
+### Via the configuration file
+
+Add the following section to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+synology_dsm:
+ - host: IP_ADDRESS_OR_DNS_OF_SYNOLOGY_NAS
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+```
+
+{% configuration %}
+host:
+ description: The IP address or DNS of the Synology NAS to monitor.
+ required: true
+ type: string
+port:
+ description: The port number on which the Synology NAS is reachable.
+ required: false
+ default: 5001 if `ssl` is true, 5000 if `ssl` is false
+ type: integer
+ssl:
+ description: Determine if HTTPS should be used.
+ required: false
+ default: true
+ type: boolean
+username:
+ description: An user to connect to the Synology NAS (a separate account is advised, see the (Separate User Configuration)[#separate-user-configuration] section below for details).
+ required: true
+ type: string
+password:
+ description: The password of the user to connect to the Synology NAS.
+ required: true
+ type: string
+volumes:
+ description: "Array of volumes to monitor. Defaults to all volumes. Replace any spaces in the volume name with underscores, e.g., `volume 1` with `volume_1`."
+ required: false
+ type: list
+disks:
+ description: "Array of disks to monitor. Defaults to all disks. Use only disk names like `sda`, `sdb`, etc."
+ required: false
+ type: list
+{% endconfiguration %}
+
+
+
+
+This sensor will wake up your Synology NAS if it's in hibernation mode.
+
+
+
+## Separate User Configuration
+
+Due to the nature of the Synology DSM API, it is required to grant the user admin rights. This is related to the fact that utilization information is stored in the core module.
+
+When creating the user, it is possible to deny access to all locations and applications. By doing this, the user will not be able to login to the web interface or view any of the files on the Synology NAS. It is still able to read the utilization and storage information using the API.
+
+
+
+Using two-factor authentication is not supported. Please use a strong, randomly generated password.
+
+
+
+
+## Created sensors
+
+Sensors are :
+- `cpu_other_load`: Displays unspecified load in percentage.
+- `cpu_user_load`: Displays user load in percentage.
+- `cpu_system_load`: Displays system load in percentage.
+- `cpu_total_load`: Displays combined load in percentage.
+- `cpu_1min_load`: Displays maximum load in past minute.
+- `cpu_5min_load`: Displays maximum load in past 5 minutes.
+- `cpu_15min_load`: Displays maximum load in past 15 minutes.
+- `memory_real_usage`: Displays percentage of memory used.
+- `memory_size`: Displays total size of memory in MB.
+- `memory_cached`: Displays total size of cache in MB.
+- `memory_available_swap`: Displays total size of available swap in MB.
+- `memory_available_real`: Displays total size of memory used (based on real memory) in MB.
+- `memory_total_swap`: Displays total size of actual memory in MB.
+- `memory_total_real`: Displays total size of real memory in MB.
+- `network_up`: Displays total up speed of network interfaces (combines all interfaces).
+- `network_down`: Displays total down speed of network interfaces (combines all interfaces).
+- `disk_name`: Displays the name of the hard disk (creates a new entry for each disk).
+- `disk_device`: Displays the path of the hard disk (creates a new entry for each disk).
+- `disk_smart_status`: Displays the S.M.A.R.T status of the hard disk (creates a new entry for each disk).
+- `disk_status`: Displays the status of the hard disk (creates a new entry for each disk).
+- `disk_exceed_bad_sector_thr`: Displays true / false to indicate if the hard disk exceeded the maximum bad sector threshold (creates a new entry for each disk). (Does not work with DSM 5.x)
+- `disk_below_remain_life_thr`: Displays true / false to indicate if the hard disk dropped below the remain life threshold (creates a new entry for each disk). (Does not work with DSM 5.x)
+- `disk_temp`: Displays the temperature of the hard disk (creates a new entry for each disk, uses the unit_system to display in C or F).
+- `volume_status`: Displays the status of the volume (creates a new entry for each volume).
+- `volume_device_type`: Displays the volume type (RAID, etc) (creates a new entry for each volume).
+- `volume_size_total`: Displays the total size of the volume in GB's (creates a new entry for each volume).
+- `volume_size_used`: Displays the used space on this volume in GB's (creates a new entry for each volume).
+- `volume_percentage_used`: Displays the percentage used for this volume in GB's (creates a new entry for each volume).
+- `volume_disk_temp_avg`: Displays the average temperature of all disks in the volume (creates a new entry for each volume).
+- `volume_disk_temp_max`: Displays the maximum temperature of all disks in the volume (creates a new entry for each volume).
diff --git a/source/_integrations/synologydsm.markdown b/source/_integrations/synologydsm.markdown
deleted file mode 100644
index 6f41cd23660..00000000000
--- a/source/_integrations/synologydsm.markdown
+++ /dev/null
@@ -1,152 +0,0 @@
----
-title: SynologyDSM
-description: Instructions on how to integrate the SynologyDSM sensor within Home Assistant.
-ha_category:
- - System Monitor
-ha_release: 0.32
-ha_iot_class: Local Polling
-ha_domain: synologydsm
----
-
-The `synologydsm` sensor platform allows getting various statistics from your [Synology NAS](https://www.synology.com).
-
-## Configuration
-
-To use the `synologydsm` sensor in your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: synologydsm
- host: IP_ADDRESS_OF_SYNOLOGY_NAS
- username: YOUR_USERNAME
- password: YOUR_PASSWORD
- monitored_conditions:
- - cpu_total_load
- - memory_real_usage
- - network_up
-```
-
-{% configuration %}
-name:
- description: The name to use in the frontend for your Synology device.
- required: false
- default: Synology DSM
- type: string
-host:
- description: The IP address of the Synology NAS to monitor.
- required: true
- type: string
-port:
- description: The port number on which the Synology NAS is reachable.
- required: false
- default: 5001
- type: integer
-username:
- description: An user to connect to the Synology NAS (a separate account is advised, see the Separate User Configuration section below for details).
- required: true
- type: string
-password:
- description: The password of the user to connect to the Synology NAS.
- required: true
- type: string
-api_version:
- description: Define DSM version to allow backward compatibility with 5.x. Value can be `5` for DSM 5.x or `6` for DSM 6.x or later.
- type: integer
- required: false
-ssl:
- description: Determine if HTTPS should be used.
- required: false
- default: true
- type: boolean
-volumes:
- description: "Array of volumes to monitor. Defaults to all volumes. Replace any spaces in the volume name with underscores, e.g., `volume 1` with `volume_1`."
- required: false
- type: list
-disks:
- description: "Array of disks to monitor. Defaults to all disks. Use only disk names like `sda`, `sdb`, etc."
- required: false
- type: list
-monitored_conditions:
- description: Defines a [template](/topics/templating/) to extract a value from the payload.
- required: true
- type: list
- keys:
- cpu_other_load:
- description: Displays unspecified load in percentage.
- cpu_user_load:
- description: Displays user load in percentage.
- cpu_system_load:
- description: Displays system load in percentage.
- cpu_total_load:
- description: Displays combined load in percentage.
- cpu_1min_load:
- description: Displays maximum load in past minute.
- cpu_5min_load:
- description: Displays maximum load in past 5 minutes.
- cpu_15min_load:
- description: Displays maximum load in past 15 minutes.
- memory_real_usage:
- description: Displays percentage of memory used.
- memory_size:
- description: Displays total size of memory in MB.
- memory_cached:
- description: Displays total size of cache in MB.
- memory_available_swap:
- description: Displays total size of available swap in MB.
- memory_available_real:
- description: Displays total size of memory used (based on real memory) in MB.
- memory_total_swap:
- description: Displays total size of actual memory in MB.
- memory_total_real:
- description: Displays total size of real memory in MB.
- network_up:
- description: Displays total up speed of network interfaces (combines all interfaces).
- network_down:
- description: Displays total down speed of network interfaces (combines all interfaces).
- disk_name:
- description: Displays the name of the hard disk (creates a new entry for each disk).
- disk_device:
- description: Displays the path of the hard disk (creates a new entry for each disk).
- disk_smart_status:
- description: Displays the S.M.A.R.T status of the hard disk (creates a new entry for each disk).
- disk_status:
- description: Displays the status of the hard disk (creates a new entry for each disk).
- disk_exceed_bad_sector_thr:
- description: Displays true / false to indicate if the hard disk exceeded the maximum bad sector threshold (creates a new entry for each disk). (Does not work with DSM 5.x)
- disk_below_remain_life_thr:
- description: Displays true / false to indicate if the hard disk dropped below the remain life threshold (creates a new entry for each disk). (Does not work with DSM 5.x)
- disk_temp:
- description: Displays the temperature of the hard disk (creates a new entry for each disk, uses the unit_system to display in C or F).
- volume_status:
- description: Displays the status of the volume (creates a new entry for each volume).
- volume_device_type:
- description: Displays the volume type (RAID, etc) (creates a new entry for each volume).
- volume_size_total:
- description: Displays the total size of the volume in GB's (creates a new entry for each volume).
- volume_size_used:
- description: Displays the used space on this volume in GB's (creates a new entry for each volume).
- volume_percentage_used:
- description: Displays the percentage used for this volume in GB's (creates a new entry for each volume).
- volume_disk_temp_avg:
- description: Displays the average temperature of all disks in the volume (creates a new entry for each volume).
- volume_disk_temp_max:
- description: Displays the maximum temperature of all disks in the volume (creates a new entry for each volume).
-{% endconfiguration %}
-
-
-
-This sensor will wake up your Synology NAS if it's in hibernation mode.
-
-
-
-
- If you set `ssl:` to `False`, you *have* to also explicitly set `port:` to **5000**.
-
-
-
-## Separate User Configuration
-
-Due to the nature of the Synology DSM API it is required to grant the user admin rights. This is related to the fact that utilization information is stored in the core module.
-
-When creating the user it is possible to deny access to all locations and applications. By doing this the user will not be able to login to the web interface or view any of the files on the Synology NAS. It is still able to read the utilization and storage information using the API.
diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown
index fa8a657bdb1..3fcd541688e 100644
--- a/source/_integrations/tado.markdown
+++ b/source/_integrations/tado.markdown
@@ -13,6 +13,7 @@ ha_codeowners:
- '@michaelarnauts'
- '@bdraco'
ha_domain: tado
+ha_config_flow: true
---
The `tado` integration platform is used as an interface to the [my.tado.com](https://my.tado.com/) website.
@@ -26,7 +27,9 @@ There is currently support for the following device types within Home Assistant:
## Configuration
-To use your Tado thermostats in your installation, add the following to your `configuration.yaml` file:
+To use your Tado thermostats in your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Tado**.
+
+Alternatively, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry with multiple accounts
diff --git a/source/_integrations/tankerkoenig.markdown b/source/_integrations/tankerkoenig.markdown
index d789a99bdd6..8cb1e362b8b 100755
--- a/source/_integrations/tankerkoenig.markdown
+++ b/source/_integrations/tankerkoenig.markdown
@@ -69,6 +69,11 @@ stations:
description: List of additional fuel stations to create entities for.
required: false
type: list
+show_on_map:
+ description: Display all gas stations on map.
+ default: true
+ required: false
+ type: boolean
{% endconfiguration %}
## Full example
@@ -87,6 +92,7 @@ tankerkoenig:
scan_interval: "0:10:01"
stations:
- 8531b393-1e42-423b-cb4d-e4b98cff8a0c
+ show_on_map: false
```
Assuming there are only two fuel stations within the specified range and location, you would get six sensor entities:
diff --git a/source/_integrations/tesla.markdown b/source/_integrations/tesla.markdown
index bb9873eb3cd..0249d605162 100644
--- a/source/_integrations/tesla.markdown
+++ b/source/_integrations/tesla.markdown
@@ -25,8 +25,8 @@ This integration provides the following platforms:
- Binary sensors - such as parking and charger connection.
- Sensors - such as Battery level, Inside/Outside temperature, odometer, estimated range, and charging rate.
- Device tracker - to track location of your car
-- Lock - Door lock and charger door lock. Enables you to control Tesla's door and charger door lock
-- Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system.
+- Lock - Door lock, rear trunk lock, front trunk (frunk) lock and charger door lock. Enables you to control Tesla's door, trunks and charger door lock
+- Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system. Also enables preset modes to enable or disable max defrost mode `defrost` or `normal` operation mode.
- Switch - Charger and max range switch to allow you to start/stop charging and set max range charging. Update switch to allow you to disable polling of vehicles to conserve battery. Sentry mode switch to enable or disable Sentry mode.
## Configuration
diff --git a/source/_integrations/totalconnect.markdown b/source/_integrations/totalconnect.markdown
index b41d97f5de0..b63aa0d3cdd 100644
--- a/source/_integrations/totalconnect.markdown
+++ b/source/_integrations/totalconnect.markdown
@@ -5,6 +5,7 @@ ha_category:
- Alarm
- Binary Sensor
ha_release: 0.42
+ha_config_flow: true
ha_codeowners:
- '@austinmroczek'
ha_domain: totalconnect
@@ -12,28 +13,11 @@ ha_domain: totalconnect
The `totalconnect` integration provides connectivity with the Honeywell TotalConnect alarm systems used by many alarm companies.
-If you have issues running this component, you may require `libxml2-dev` and `libxmlsec1-dev` packages. To install these on Raspbian, run the command `apt install libxml2-dev libxmlsec1-dev` with sudo.
-
-## Alarm Control Panel
-
-The integration provides an Alarm Control Panel for each TotalConnect location. It uses the name of your location from TotalConnect. For example, if your location name in TotalConnect is "Home", then you will get `alarm_control_panel.home` in Home Assistant.
-
-The alarm control panel supports the following services: `alarm_arm_away`, `alarm_arm_home`, `alarm_arm_night` and `alarm_disarm`.
-
-The `triggered` state also provides a state attribute called `triggered_source` giving more detail on what triggered the alarm:
-- `Police/Medical` is when sensors detected a burglar and/or a person pushed the Police or Medical button
-- `Fire/Smoke` is when fire or smoke is detected, or a person pushed the Fire button
-- `Carbon Monoxide` is when carbon monoxide is detected
-
-## Binary Sensor
-
-The integration provides a Binary Sensor for each TotalConnect zone. To see zones in TotalConnect "fault" status, your TotalConnect account must have "Sensor Events" enabled. Your alarm monitoring company may charge an extra fee to enable this.
-
-The TotalConnect API has limited zone type information. Home Assistant device class `door` is assigned to TotalConnect door, window, perimeter, motion sensor, and most alarm panel buttons. The sensor will appear as `True` if the door is open (either fault or triggered in TotalConnect) and `False` otherwise. Device class `smoke` is assigned to TotalConnect smoke detectors and buttons with physical alarm panel "Response Type" setting of "Fire No Verification". The sensor will appear as `True` if smoke is detected. Device class `gas` is assigned to TotalConnect carbon monoxide detectors. The sensor will appear as `True` if gas is detected.
-
## Configuration
-To enable TotalConnect, add the following lines to your `configuration.yaml`:
+To enable TotalConnect via the user interface, go to **Configuration** > **Integrations** > the "plus" button > Total Connect.
+
+To enable TotalConnect via `configuration.yaml` add the following lines:
```yaml
totalconnect:
@@ -42,10 +26,6 @@ totalconnect:
```
{% configuration %}
-name:
- description: Name of device in Home Assistant.
- required: false
- type: string
username:
description: Username used to sign into the TotalConnect app/web client.
required: true
@@ -59,7 +39,6 @@ password:
You are highly encouraged to create a Total Connect user account specifically for Home Assistant. It should not have full administrative privileges.
## Automation example
-
```yaml
automation:
- alias: "Alarm: Disarmed Daytime"
@@ -82,3 +61,23 @@ automation:
service: scene.turn_on
entity_id: scene.OnArmedAway
```
+
+If you have issues running this component, you may require `libxml2-dev` and `libxmlsec1-dev` packages. To install these on Raspbian, run the command `apt install libxml2-dev libxmlsec1-dev` with sudo.
+
+## Alarm Control Panel
+
+The integration provides an Alarm Control Panel for each TotalConnect location. It uses the name of your location from TotalConnect. For example, if your location name in TotalConnect is "Home", then you will get `alarm_control_panel.home` in Home Assistant.
+
+The alarm control panel supports the following services: `alarm_arm_away`, `alarm_arm_home`, `alarm_arm_night` and `alarm_disarm`.
+
+The `triggered` state also provides a state attribute called `triggered_source` giving more detail on what triggered the alarm:
+
+- `Police/Medical` is when sensors detected a burglar and/or a person pushed the Police or Medical button
+- `Fire/Smoke` is when fire or smoke is detected, or a person pushed the Fire button
+- `Carbon Monoxide` is when carbon monoxide is detected
+
+## Binary Sensor
+
+The integration provides a Binary Sensor for each TotalConnect zone. To see zones in TotalConnect "fault" status, your TotalConnect account must have "Sensor Events" enabled. Your alarm monitoring company may charge an extra fee to enable this.
+
+The TotalConnect API has limited zone type information. Home Assistant device class `door` is assigned to TotalConnect door, window, perimeter, motion sensor, and most alarm panel buttons. The sensor will appear as `True` if the door is open (either fault or triggered in TotalConnect) and `False` otherwise. Device class `smoke` is assigned to TotalConnect smoke detectors and buttons with physical alarm panel "Response Type" setting of "Fire No Verification". The sensor will appear as `True` if smoke is detected. Device class `gas` is assigned to TotalConnect carbon monoxide detectors. The sensor will appear as `True` if gas is detected.
diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown
index f5a0bfc72df..e08c3971b97 100644
--- a/source/_integrations/transmission.markdown
+++ b/source/_integrations/transmission.markdown
@@ -43,7 +43,7 @@ transmission:
{% configuration %}
host:
- description: "This is the IP address of your Transmission daemon, e.g., `192.168.1.1`."
+ description: "This is the IP address of your Transmission daemon, e.g., `192.168.1.1` or `https://example.com/transmission/rpc`."
required: true
type: string
port:
@@ -96,6 +96,7 @@ Possible events are:
- transmission_downloaded_torrent
- transmission_started_torrent
+- transmission_removed_torrent
Inside of the event, there is the name of the torrent that is started or completed, as it is seen in the Transmission User Interface.
@@ -123,20 +124,30 @@ Adds a new torrent to download. It can either be a URL (HTTP, HTTPS or FTP), mag
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
-| `name` | no | Name of the configured instance
+| `name` | yes | Name of the configured instance (Default: "Transmission")
| `torrent` | no | Torrent to download
+### Service `remove_torrent`
+
+Removes a torrent from the client.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `name` | no | Name of the configured instance (Default: "Transmission")
+| `id` | no | ID of the torrent, can be found in the `torrent_info` attribute of the `*_torrents` sensors
+| `delete_data` | yes | Delete torrent data (Default: false)
+
## Templating
-### Sensor `started_torrents`
+### Attribute `torrent_info`
-The state attribute `torrent_info` contains information about the torrents that are currently downloading. You can see this information in **Developer Tools** -> **States** -> `sensor.transmission_started_torrents` -> **Attributes**, or by adding a Markdown Card to Lovelace.
+All `*_torrents` sensors e.g. `sensor.transmission_total_torrents` or `sensor.transmission_started_torrents` have a state attribute `torrent_info` that contains information about the torrents that are currently in a corresponding state. You can see this information in **Developer Tools** -> **States** -> `sensor.transmission_total_torrents` -> **Attributes**, or by adding a Markdown Card to Lovelace.
{% raw %}
```yaml
content: >
- {% set payload = state_attr('sensor.transmission_started_torrents', 'torrent_info') %}
+ {% set payload = state_attr('sensor.transmission_total_torrents', 'torrent_info') %}
{% for torrent in payload.items() %} {% set name = torrent[0] %} {% set data = torrent[1] %}
diff --git a/source/_integrations/vera.markdown b/source/_integrations/vera.markdown
index ad3297128c8..cfe372f6484 100644
--- a/source/_integrations/vera.markdown
+++ b/source/_integrations/vera.markdown
@@ -12,6 +12,7 @@ ha_category:
- Switch
- Climate
ha_release: pre 0.7
+ha_config_flow: true
ha_domain: vera
---
@@ -32,43 +33,23 @@ and will be automatically added when HA connects to your Vera controller.
## Configuration
-To use Vera devices in your installation, add the following to your `configuration.yaml` file using the IP and port number of your Vera controller:
-
-```yaml
-vera:
- vera_controller_url: http://192.168.1.161:3480/
-```
-
-{% configuration %}
-vera_controller_url:
- description: The URL for your Vera device.
- required: true
- type: string
-{% endconfiguration %}
-
It is recommended to assign a static IP address to your Vera Controller. This ensures that it won't change IP addresses, so you won't have to change the `vera_controller_url` if it reboots and comes up with a different IP address. See your router's manual for details on how to set this up. If you need the MAC address of your Vera, check the label on the bottom.
-### Configure devices
+1. From the Home Assistant front-end, navigate to 'Configuration' then 'Integrations'. Under 'Set up a new integration' locate 'Vera' and click 'Configure'.
+2. Enter the URL for the controller and click 'Submit'.
-By default your switches will be added to Home Assistant as switches, however, if some of them are light switches, you can tell Home Assistant this using the optional `lights` parameter as shown below.
+## Options
+Once the Vera integration is configured, you can set additional options in the integration, click the gear icon.
-Vera imports detailed Z-Wave devices into Home Assistant. This can include system devices and other devices that you don't use; you can tell Home Assistant not to load these devices using the `exclude:` parameter as shown below.
+- Vera switch device - By default your switches will be added to Home Assistant as switches, however, if some of them are light switches, you can tell Home Assistant this by providing a list of light ids.
+- Vera device ids to exclude - Vera imports detailed Z-Wave devices into Home Assistant. This can include system devices and other devices that you don't use; you can tell Home Assistant not to load these devices by providing a list of device ids.
You can find the Vera device id either via the advanced properties of the device in the Vera UI or by checking the `Vera Device Id` attribute on each device imported into Home Assistant (under the developer tools).
-```yaml
-vera:
- vera_controller_url: http://192.168.1.161:3480/
- # Optional to exclude devices - this is a list of vera device ids
- exclude: [ 13, 14, 16, 20, 23, 72, 73, 74, 75, 76, 77, 78, 88, 89, 99]
- # Optional to import switches as lights - this is a list of vera device ids
- lights: [15, 17, 19, 21, 22, 24, 26, 43, 64, 70, 87]
-```
-
### Using Z-Wave devices in automation
If you want to use a Z-Wave device from the Vera controller in Home Assistant automation, you'll need the entity id. In the Home Assistant UI you'll find all entities listed under the
icon of the Developer Tools section. Look for entities that contain 'Vera Device Id' in their attributes, and you'll find the entity id on the left.
diff --git a/source/_integrations/yweather.markdown b/source/_integrations/yweather.markdown
deleted file mode 100644
index c6aaeee9733..00000000000
--- a/source/_integrations/yweather.markdown
+++ /dev/null
@@ -1,113 +0,0 @@
----
-title: Yahoo Weather
-description: Instructions on how to integrate Yahoo Weather within Home Assistant.
-ha_category:
- - Weather
- - Sensor
-ha_release: 0.24
-ha_iot_class: Cloud Polling
-ha_domain: yweather
----
-
-
-
-The Yahoo Weather API is being [retired](https://developer.yahoo.com/weather/?guccounter=1). A replacement is the [`OpenWeatherMap` integration](/integrations/openweathermap).
-
-
-
-The `yweather` platform uses [Yahoo Weather](https://www.yahoo.com/news/weather/) as a source for current meteorological data. The `forecast` will show you the condition for 5 days, 0 is the current day. You can use only `weather`, `temp_min`, and `temp_max` with forecast. It's important to note that a yweather sensor will only show ONE days forecast at a time so to show multiple days forecasts, you will need to use the 'name:' option and give each sensor a unique name.
-
-
-Use of the Yahoo Weather API should not exceed reasonable request volume. Access is limited to 2000 signed calls per day.
-
-
-The `woeid` (Where On Earth ID) for your location, as shown in the example below. You can find your WOEID by copying the numeric digits at the end of the URL for your location at [Yahoo Weather](https://www.yahoo.com/news/weather/). If you don't add a WOEID it is generated from Home Assistant's latitude and longitude.
-
-To add Yahoo Weather to your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: yweather
- monitored_conditions:
- - weather
- - weather_current
- - temp_min
- - temp_max
- - wind_speed
- - pressure
- - visibility
- - humidity
- - temperature
-```
-
-{% configuration %}
-woeid:
- required: false
- description: See above.
- type: string
- default: "Defaults to a WOEID generated from coordinates defined in your `configuration.yaml` file."
-forecast:
- required: false
- description: Day of forecast. The default is the current day to display conditions.
- type: integer
- default: 0
-name:
- required: false
- description: "The name of the sensor. To easily recognize each sensor when adding more than one Yahoo weather sensor, it is recommended to use the name option."
- type: string
- default: "`Yweather`"
-monitored_conditions:
- required: true
- description: Conditions to display in the frontend.
- type: list
- keys:
- weather:
- description: A human-readable text summary with picture from yahoo.
- weather_current:
- description: A human-readable text summary with picture from yahoo from current condition.
- temperature:
- description: The current temperature.
- temp_min:
- description: The minimal temperature of this day.
- temp_max:
- description: The maximum temperature of this day.
- wind_speed:
- description: The wind speed.
- humidity:
- description: The relative humidity.
- pressure:
- description: The sea-level air pressure in millibars.
- visibility:
- description: The average visibility.
-{% endconfiguration %}
-
-Example of forecast using multiple days. In example, first sensor shows tomorrow's forecast, second sensor shows the next day and so on:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: yweather
- forecast: 1
- name: yw_day1
- monitored_conditions:
- - weather
- - temp_min
- - temp_max
- - platform: yweather
- forecast: 2
- name: yw_day2
- monitored_conditions:
- - weather
- - temp_min
- - temp_max
- - platform: yweather
- forecast: 3
- name: yw_day3
- monitored_conditions:
- - weather
- - temp_min
- - temp_max
-```
-
-Details about the API are available in the [Yahoo! Developer Network](https://developer.yahoo.com/weather/).
diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown
index 2c1288707b4..6b9c90d8d15 100644
--- a/source/_lovelace/entities.markdown
+++ b/source/_lovelace/entities.markdown
@@ -74,7 +74,7 @@ image:
type: string
secondary_info:
required: false
- description: "Show additional info. Values: `entity-id`, `last-changed`, `last-triggered` (only for automations and scripts)."
+ description: "Show additional info. Values: `entity-id`, `last-changed`, `last-triggered` (only for automations and scripts), `position` or `tilt-position` (only for supported covers)."
type: string
format:
required: false
@@ -113,34 +113,33 @@ double_tap_action:
## Special Row Elements
-### Call Service
+### Button
{% configuration %}
type:
required: true
- description: call-service
+ description: button
type: string
name:
required: true
description: Main Label.
type: string
-service:
- required: true
- description: "Service like `media_player.media_play_pause`"
- type: string
-icon:
- required: false
- description: "Icon to display (e.g., `mdi:home`)"
- type: string
- default: "`mdi:remote`"
action_name:
required: false
description: Button label.
type: string
default: "`Run`"
-service_data:
+tap_action:
+ required: true
+ description: Action taken on card tap. See [action documentation](/lovelace/actions/#tap-action).
+ type: map
+hold_action:
required: false
- description: The service data to use.
+ description: Action taken on card tap and hold. See [action documentation](/lovelace/actions/#hold-action).
+ type: map
+double_tap_action:
+ required: false
+ description: Action taken on card double tap. See [action documentation](/lovelace/actions/#double-tap-action).
type: map
{% endconfiguration %}
diff --git a/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown b/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown
index 1332c197b68..cf40d59d40b 100644
--- a/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown
+++ b/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown
@@ -24,12 +24,12 @@ homeassistant:
#### Changes
-

+
* Thermostat: [Honeywell](/integrations/honeywell/) now supported ([@sander76])
* Switch: [Orvibo](/integrations/orvibo) now supported ([@happyleavesaoc])
* Camera: [mjpeg camera's](/integrations/mjpeg) now supported ([@ryanturner])
- * Notify: [Pushetta](/integrations/pushetta) now supported ([@fabaff])
+ * Notify: Pushetta now supported ([@fabaff])
* Light: [MQTT](/integrations/light.mqtt/) now supported ([@hexxter])
* Light: [Z-Wave](/integrations/zwave/) now supported ([@leoc])
* Switch: [Z-Wave](/integrations/zwave/) now supported ([@leoc])
diff --git a/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown b/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown
index 39d7a4dd884..5736c1565f2 100644
--- a/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown
+++ b/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown
@@ -21,10 +21,10 @@ hass --script db_migrator --config /path/to/config
You can omit the `--config` option if you use the default configuration directory. Run the script with `--help` to get more options.
-


+

- Config: Improved support for storing [secrets][secrets] ([@kellerza])
-- Sensor: Support for [Yahoo! Weather][yahoo-weather] ([@pvizeli])
+- Sensor: Support for Yahoo! Weather ([@pvizeli])
- Add scripts to command line to expose advanced options ([@balloob])
- Alarm: [SimpliSafe][simplisafe] is now supported ([@w1ll1am23])
- Core: Switch to SQLAlchemy for the Recorder component ([@rhooper])
@@ -92,6 +92,5 @@ Quick hot fix after we found a bug in the migrator where it wouldn't work with a
[Telegram]: /integrations/telegram
[TPLink]: /integrations/tplink
[Verisure]: /integrations/verisure
-[yahoo-weather]: /integrations/yweather
[Z-Wave]: /integrations/zwave/
[RFXtrx]: /integrations/rfxtrx/
diff --git a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown
index ea14e2ea640..dca1a3fb87a 100644
--- a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown
+++ b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown
@@ -90,7 +90,7 @@ sensor
- Wink: Support for Wink Smoke and CO detectors ([@w1ll1am23])
- Sensor: [TED5000][ted5000] sensor was included ([@gwendalg])
- Sensor: Support for [Västtrafik][vasttrafik] public transport ([@persandstrom])
-- Notify: [Pushetta][pushetta] no longer sends message on start up ([@Danielhiversen])
+- Notify: Pushetta no longer sends message on start up ([@Danielhiversen])
- Sensor: [Forecast.io][forecast] sensor was replaced by [Dark Sky][darksky] ([@fabaff])
- Device Tracker: The `known_device.yaml` file is now validated ([@kellerza])
- Minor features and bug fixes by [@tchellomello], [@pavoni], [@fabaff], [@pvizeli], [@lwis], [@turbokongen], [@Danielhiversen], [@persandstrom], [@balloob], [@robbiet480], [@sam-io], [@bbangert], and you if you are missing here.
@@ -170,7 +170,6 @@ sensor
[mysensors-cover]: /integrations/cover.mysensors/
[notebook]: http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/database-statistics.ipynb
[pi-image]: /blog/2016/10/01/we-have-raspberry-image-now/
-[pushetta]: /integrations/pushetta
[pwrctrl-switch]: /integrations/anel_pwrctrl
[rest-sensor]: /integrations/rest
[stats-sensor]: /integrations/statistics
diff --git a/source/_posts/2017-06-17-release-47.markdown b/source/_posts/2017-06-17-release-47.markdown
index a1463d5f2e7..49406fc741f 100644
--- a/source/_posts/2017-06-17-release-47.markdown
+++ b/source/_posts/2017-06-17-release-47.markdown
@@ -197,7 +197,7 @@ automation:
- update to pywebpush 1.0.4 which allows install on system with openssl-1.1.0 (cryptography dep) ([@perosb] - [#7915]) ([notify.html5 docs])
- Do not call update() in constructor ([@fabaff] - [#7917]) ([sensor.dte_energy_bridge docs]) ([sensor.dublin_bus_transport docs]) ([sensor.dweet docs]) ([sensor.ebox docs]) ([sensor.ecobee docs]) ([sensor.hddtemp docs]) ([sensor.mold_indicator docs]) ([sensor.pi_hole docs]) (sensor.yahoo_finance docs)
- Fix changes introduced with #7917 ([@fabaff] - [#7930]) ([sensor.waqi docs])
-- Do not call update() in constructor ([@fabaff] - [#7931]) ([sensor.yweather docs])
+- Do not call update() in constructor ([@fabaff] - [#7931])
- Add service_url config option to volvooncall ([@palp] - [#7919]) ([volvooncall docs])
- Added 'change' field to statistics sensor ([@jminn] - [#7820]) ([sensor.statistics docs])
- add ripple sensor ([@nkgilley] - [#7935]) ([sensor.ripple docs]) (new-platform)
@@ -540,7 +540,6 @@ automation:
[sensor.template docs]: /integrations/template
[sensor.waqi docs]: /integrations/waqi
[sensor.wunderground docs]: /integrations/wunderground
-[sensor.yweather docs]: /integrations/yweather
[spc docs]: /integrations/spc/
[splunk docs]: /integrations/splunk/
[switch.homematic docs]: /integrations/homematic
diff --git a/source/_posts/2017-07-16-release-49.markdown b/source/_posts/2017-07-16-release-49.markdown
index 6f8201c8916..00722f59865 100644
--- a/source/_posts/2017-07-16-release-49.markdown
+++ b/source/_posts/2017-07-16-release-49.markdown
@@ -127,7 +127,7 @@ amcrest:
- Fix pylint issue ([@fabaff] - [#8325]) ([snips docs])
- vsure 1.3.7 ([@persandstrom] - [#8321]) ([verisure docs])
- Update pyEmby to fix media images ([@mezz64] - [#8331]) ([media_player.emby docs])
-- Partially revert #7931 ([@fabaff] - [#8326]) ([sensor.yweather docs])
+- Partially revert #7931 ([@fabaff] - [#8326])
- Only allow 'tls_insecure_set()' if cert is present (fixes #8329) ([@fabaff] - [#8337]) ([mqtt docs])
- Fix issue #8285 ([@Sabesto] - [#8340]) ([modbus docs]) ([binary_sensor.modbus docs]) ([climate.flexit docs]) ([sensor.modbus docs]) ([switch.modbus docs])
- Bump dlib face_recognition to 0.2.0 ([@pvizeli] - [#8345]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs])
@@ -449,7 +449,6 @@ amcrest:
[sensor.otp docs]: /integrations/otp
[sensor.rflink docs]: /integrations/sensor.rflink/
[sensor.waqi docs]: /integrations/waqi
-[sensor.yweather docs]: /integrations/yweather
[sensor.zha docs]: /integrations/zha
[snips docs]: /integrations/snips/
[switch.broadlink docs]: /integrations/broadlink#switch
diff --git a/source/_posts/2017-07-29-release-50.markdown b/source/_posts/2017-07-29-release-50.markdown
index 3cb91e69300..9ccbfaa6606 100644
--- a/source/_posts/2017-07-29-release-50.markdown
+++ b/source/_posts/2017-07-29-release-50.markdown
@@ -120,7 +120,7 @@ conversation:
```
- Switch fritzdect: attributes have been renamed to use underscores and no capital letters ([@thomasklingbeil] - [#8436]) (breaking change)
-- Yahoo Weather: no longer allow configuring forecasts but include all instead. ([@fanthos] - [#8626]) ([weather.yweather docs]) (breaking change)
+- Yahoo Weather: no longer allow configuring forecasts but include all instead. ([@fanthos] - [#8626]) (breaking change)
- The Home Assistant Z-Wave Cover implementation has been updated to support the latest development version of OpenZWave. If you are currently applying a workaround to your OpenZWave installation to support the barrier command class, you'll need to make sure you update your workaround to the latest development version of OpenZWave. ([@firstof9] - [#8574]) ([cover docs]) ([cover.zwave docs]) (breaking change)
## All changes
@@ -188,7 +188,7 @@ conversation:
- Fixes Fitbit sensor to report battery level with the expected device ([@tchellomello] - [#8647]) ([sensor.fitbit docs])
- Upgrade aiolifx ([@amelchio] - [#8648]) ([light.lifx docs])
- Velbus ([@thomasdelaet] - [#8076]) ([velbus docs]) ([binary_sensor.velbus docs]) ([light.velbus docs]) (new-platform)
-- Yahoo Weather update, supports forecast for more days ([@fanthos] - [#8626]) ([weather.yweather docs]) (breaking change)
+- Yahoo Weather update, supports forecast for more days ([@fanthos] - [#8626]) (breaking change)
- History performance improvements for single-entity requests ([@OverloadUT] - [#8632]) ([history docs])
- Add transition support to light.zha ([@jawilson] - [#8548]) ([light.zha docs])
- Add uk_transport component. ([@robmarkcole] - [#8600]) ([sensor.uk_transport docs]) (new-platform)
@@ -396,7 +396,6 @@ conversation:
[switch.xiaomi docs]: /integrations/switch.xiaomi_aqara/
[switch.xiaomi_vacuum docs]: /integrations/vacuum.xiaomi_miio/
[velbus docs]: /integrations/velbus/
-[weather.yweather docs]: /integrations/yweather
[wink docs]: /integrations/wink/
[xiaomi docs]: /integrations/xiaomi_aqara
[forum]: https://community.home-assistant.io/
diff --git a/source/_posts/2017-08-12-release-51.markdown b/source/_posts/2017-08-12-release-51.markdown
index 76f8cd2fb65..65f6a8fc38c 100644
--- a/source/_posts/2017-08-12-release-51.markdown
+++ b/source/_posts/2017-08-12-release-51.markdown
@@ -136,7 +136,7 @@ vacuum:
- Polymer 2 ([@balloob] - [#8815]) ([group docs])
- geizhals sensor component ([@JulianKahnert] - [#8458]) ([sensor.geizhals docs]) (new-platform)
- Xiaomi vacuum as platform of new `vacuum` component derived from ToggleEntity, and services ([@azogue] - [#8623]) (breaking change) (new-platform)
-- Update yweather.py ([@fanthos] - [#8820]) ([weather.yweather docs])
+- Update yweather.py ([@fanthos] - [#8820])
- Make HA discover sabnzbd and add it to the Configurator ([@Hellowlol] - [#8634]) ([sensor.sabnzbd docs])
- Fix Dyson sensors if devices are configured without standby monitoring. Fixes #8569 ([@CharlesBlonde] - [#8826]) ([dyson docs]) ([fan.dyson docs]) ([sensor.dyson docs])
- Block dependencies that depend on enum34 ([@balloob] - [#8698])
@@ -450,7 +450,6 @@ vacuum:
[vacuum.roomba docs]: /integrations/roomba
[vacuum.xiaomi docs]: /integrations/vacuum.xiaomi_miio/
[weather.buienradar docs]: /integrations/buienradar
-[weather.yweather docs]: /integrations/yweather
[weather.zamg docs]: /integrations/zamg#weather
[wink docs]: /integrations/wink/
[zwave docs]: /integrations/zwave/
diff --git a/source/_posts/2017-11-18-release-58.markdown b/source/_posts/2017-11-18-release-58.markdown
index c95fc35b056..d15f4405db3 100644
--- a/source/_posts/2017-11-18-release-58.markdown
+++ b/source/_posts/2017-11-18-release-58.markdown
@@ -62,7 +62,7 @@ Our about screen that shows the error logs has gained a nice upgrade by [@postlu
## Release 0.58.1 - November 21
-- Fix yweather ([@tinloaf] - [#10661]) ([weather.yweather docs])
+- Fix yweather ([@tinloaf] - [#10661])
- Properly initialize Harmony remote ([@amelchio] - [#10665]) ([remote.harmony docs])
- Handle the new version of HydroQuebec website ([@titilambert] - [#10682])
- Fix for time_date sensor ([@etsinko] - [#10694]) ([sensor.time_date docs])
@@ -168,7 +168,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Add panel build type ([@balloob] - [#10589])
- Cloud updates ([@balloob] - [#10567])
- Upgrade youtube_dl to 2017.11.15 ([@fabaff] - [#10592]) ([media_extractor docs])
-- Fix Yahoo Weather icons over SSL ([@OnFreund] - [#10602]) ([sensor.yweather docs])
+- Fix Yahoo Weather icons over SSL ([@OnFreund] - [#10602])
- Arlo - Fixes for updated library ([@jwillaz] - [#9892]) ([arlo docs]) ([camera.arlo docs]) ([sensor.arlo docs])
- Do not add panel from system_log ([@postlund] - [#10600]) ([system_log docs])
- Fix ValueError exception ([@ziotibia81] - [#10596]) ([sensor.modbus docs])
@@ -459,7 +459,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[sensor.viaggiatreno docs]: /integrations/viaggiatreno
[sensor.vultr docs]: /integrations/vultr#sensor
[sensor.wunderground docs]: /integrations/wunderground
-[sensor.yweather docs]: /integrations/yweather
[sensor.zamg docs]: /integrations/zamg#sensor
[spc docs]: /integrations/spc/
[switch.broadlink docs]: /integrations/broadlink#switch
@@ -493,4 +492,3 @@ Experiencing issues introduced by this release? Please report them in our [issue
[@titilambert]: https://github.com/titilambert
[remote.harmony docs]: /integrations/harmony
[sensor.time_date docs]: /integrations/time_date
-[weather.yweather docs]: /integrations/yweather
diff --git a/source/_posts/2017-12-03-release-59.markdown b/source/_posts/2017-12-03-release-59.markdown
index 2c941a4e2cd..91fabf41d18 100644
--- a/source/_posts/2017-12-03-release-59.markdown
+++ b/source/_posts/2017-12-03-release-59.markdown
@@ -119,7 +119,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Use new DoorBirdPy (v0.1.0) ([@Klikini] - [#10734]) ([doorbird docs])
- Add fan and reduce I/O calls in radiotherm ([@TD22057] - [#10437]) ([climate.radiotherm docs])
- New Hive Component / Platforms ([@Rendili] - [#9804]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs]) (new-platform)
-- Temporarily fix yahoo weather API issue and add unit test. ([@cgtobi] - [#10737]) ([sensor.yweather docs])
+- Temporarily fix yahoo weather API issue and add unit test. ([@cgtobi] - [#10737])
- Google assistant climate mode fix ([@braddparker] - [#10726]) ([google_assistant.smart_home docs])
- Protect sensitive information for Amcrest cameras ([@tchellomello] - [#10569]) ([amcrest docs]) ([camera.amcrest docs]) ([sensor.amcrest docs])
- InfluxDB send retry after IOError ([@janLo] - [#10263]) ([influxdb docs])
@@ -384,7 +384,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[sensor.tellstick docs]: /integrations/tellstick#sensor
[sensor.whois docs]: /integrations/whois
[sensor.wunderground docs]: /integrations/wunderground
-[sensor.yweather docs]: /integrations/yweather
[shell_command docs]: /integrations/shell_command/
[shopping_list docs]: /integrations/shopping_list/
[switch.hive docs]: /integrations/hive#switch
diff --git a/source/_posts/2018-01-14-release-61.markdown b/source/_posts/2018-01-14-release-61.markdown
index ca46f72339d..426ee0dca16 100644
--- a/source/_posts/2018-01-14-release-61.markdown
+++ b/source/_posts/2018-01-14-release-61.markdown
@@ -196,7 +196,7 @@ Note however, that this feature was replaced by a new ignore_string config optio
- Upgrade aiohttp_cors to 0.6.0 ([@fabaff] - [#11310]) ([http docs])
- Upgrade pysnmp to 4.4.3 ([@fabaff] - [#11317]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs])
- Upgrade luftdaten to 0.1.3 ([@fabaff] - [#11316]) ([sensor.luftdaten docs])
-- Upgrade yahooweather to 0.10 ([@fabaff] - [#11309]) ([weather.yweather docs])
+- Upgrade yahooweather to 0.10 ([@fabaff] - [#11309])
- Upgrade distro to 1.2.0 ([@fabaff] - [#11312]) ([updater docs])
- Upgrade python-digitalocean to 1.13.2 ([@fabaff] - [#11311]) ([digital_ocean docs])
- Upgrade youtube_dl to 2017.12.23 ([@fabaff] - [#11308]) ([media_extractor docs])
@@ -325,7 +325,7 @@ Note however, that this feature was replaced by a new ignore_string config optio
- Changed device type of media player and cover to switch ([@Laqoore] - [#11483]) ([google_assistant.smart_home docs])
- Control ordering of display in history component ([@rwa] - [#11340]) ([history docs])
- Pr/11430 ([@balloob] - [#11587])
-- Cast return values and add unit tests for the yahoo weather component. ([@cgtobi] - [#10699]) ([weather.yweather docs])
+- Cast return values and add unit tests for the yahoo weather component. ([@cgtobi] - [#10699])
- add velux roller shutter to tahoma ([@thijsdejong] - [#11586]) ([tahoma docs])
- Added support for enable/disable motion detection ([@abjorshammar] - [#11583]) ([camera.uvc docs])
- Avoid returning empty media_image_url string ([@JackWindows] - [#11557]) ([media_player.cast docs])
@@ -768,7 +768,6 @@ Note however, that this feature was replaced by a new ignore_string config optio
[vacuum.xiaomi_miio docs]: /integrations/vacuum.xiaomi_miio/
[weather.darksky docs]: /integrations/weather.darksky/
[weather.openweathermap docs]: /integrations/openweathermap#weather
-[weather.yweather docs]: /integrations/yweather
[websocket_api docs]: /integrations/websocket_api/
[wemo docs]: /integrations/wemo/
[zigbee docs]: /integrations/zigbee/
diff --git a/source/_posts/2018-04-27-release-68.markdown b/source/_posts/2018-04-27-release-68.markdown
index 2a6c06026fc..366593093da 100644
--- a/source/_posts/2018-04-27-release-68.markdown
+++ b/source/_posts/2018-04-27-release-68.markdown
@@ -114,7 +114,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Fix bad metrics format for short metrics. ([@michaelkuty] - [#13778]) ([prometheus docs])
- Update bellows to 0.5.2 ([@rcloran] - [#13800]) ([zha docs])
- device_tracker.ubus: Handle devices not running DHCP ([@tobygray] - [#13579]) ([device_tracker docs])
-- Update yweather.py ([@wiuwiu] - [#13802]) ([weather.yweather docs])
+- Update yweather.py ([@wiuwiu] - [#13802])
- Tibber lib update ([@Danielhiversen] - [#13811]) ([sensor.tibber docs])
- Update pyhomematic to 0.1.41 ([@danielperna84] - [#13814]) ([homematic docs])
- Add support for Eufy bulbs and switches ([@mjg59] - [#13773]) ([eufy docs]) ([light.eufy docs]) ([switch.eufy docs]) (new-platform)
@@ -135,14 +135,14 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Adding USCIS component ([@meauxt] - [#13764]) ([sensor.uscis docs]) (new-platform)
- Avoid unnecessary cast state updates ([@dersger] - [#13770]) ([media_player.cast docs])
- Prevent vesync doing I/O in event loop ([@balloob] - [#13862]) ([switch.vesync docs]) (beta fix)
-- Update yweather.py ([@TheCellMC] - [#13851]) ([weather.yweather docs])
+- Update yweather.py ([@TheCellMC] - [#13851])
- add support for Kodi discovery ([@escoand] - [#13790]) ([media_player.kodi docs])
- Further untangle data entry flow ([@balloob] - [#13855])
- Missing property decorator added ([@syssi] - [#13889]) ([fan.xiaomi_miio docs]) (beta fix)
- Fix race condition for component loaded before listening ([@balloob] - [#13887]) ([config docs]) (beta fix)
- Added snips service descriptions ([@tschmidty69] - [#13883])
- Add unique_id for BMW ConnectedDrive ([@gerard33] - [#13888]) ([binary_sensor.bmw_connected_drive docs]) ([lock.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs])
-- Revert "Update yweather.py" ([@pvizeli] - [#13900]) ([weather.yweather docs])
+- Revert "Update yweather.py" ([@pvizeli] - [#13900])
- Eufy colour bulb updates ([@mjg59] - [#13895]) ([eufy docs]) ([light.eufy docs])
- Fix #13846 Double underscore in bluetooth address ([@aav7fl] - [#13884]) ([device_tracker docs]) (beta fix)
- Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs]) (beta fix)
@@ -506,7 +506,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[vacuum.neato docs]: /integrations/neato#vacuum
[vacuum.roomba docs]: /integrations/roomba
[vacuum.xiaomi_miio docs]: /integrations/vacuum.xiaomi_miio/
-[weather.yweather docs]: /integrations/yweather
[zha docs]: /integrations/zha/
[#14108]: https://github.com/home-assistant/home-assistant/pull/14108
[#14113]: https://github.com/home-assistant/home-assistant/pull/14113
diff --git a/source/_posts/2018-05-11-release-69.markdown b/source/_posts/2018-05-11-release-69.markdown
index 74770657e33..1bc71661a2c 100644
--- a/source/_posts/2018-05-11-release-69.markdown
+++ b/source/_posts/2018-05-11-release-69.markdown
@@ -69,7 +69,7 @@ rainmachine:
## All changes
- Pollen.com: Added attributes on top 3 allergens ([@bachya] - [#14018]) ([sensor.pollen docs]) (breaking change)
-- Expose the condition code on condition sensors ([@maddox] - [#14011]) ([sensor.yweather docs])
+- Expose the condition code on condition sensors ([@maddox] - [#14011])
- upgrade rfxtrx lib, dimming support for Lighting3 ([@Danielhiversen] - [#14026]) ([rfxtrx docs])
- Add Accuracy to Google Location Sharing ([@rdbahm] - [#14039]) ([device_tracker docs])
- bump gogogate2 version ([@dlbroadfoot] - [#14044]) ([cover.gogogate2 docs])
@@ -461,7 +461,6 @@ rainmachine:
[sensor.uscis docs]: /integrations/uscis
[sensor.wunderground docs]: /integrations/wunderground
[sensor.xiaomi_aqara docs]: /integrations/sensor.xiaomi_aqara/
-[sensor.yweather docs]: /integrations/yweather
[switch.deluge docs]: /integrations/deluge#switch
[switch.fritzbox docs]: /integrations/fritzbox
[switch.insteon_plm docs]: /integrations/insteon/
diff --git a/source/_posts/2018-10-29-release-81.markdown b/source/_posts/2018-10-29-release-81.markdown
index 17466e657ec..24ae84d0e60 100644
--- a/source/_posts/2018-10-29-release-81.markdown
+++ b/source/_posts/2018-10-29-release-81.markdown
@@ -295,7 +295,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Fire an event when timer gets out of sync ([@amelchio] - [#17398])
- Add context to scripts run by template entities ([@balloob] - [#17329]) ([cover.template docs]) ([fan.template docs]) ([light.template docs]) ([lock.template docs]) ([switch.template docs])
- State is set to UNKNOWN rather than ON in order to make UI have an play/pause button ([@kennedyshead] - [#17357]) ([media_player.samsungtv docs])
-- Re-assign conditions ([@SilvrrGIT] - [#17364]) ([weather.yweather docs])
+- Re-assign conditions ([@SilvrrGIT] - [#17364])
- Switched to async_fire ([@Julius2342] - [#17472]) ([knx docs])
- Fix rangefilter ([@nielstron] - [#17473]) ([sensor.filter docs])
- Cleanup HM Notify platform ([@pvizeli] - [#17355]) ([notify docs])
@@ -857,7 +857,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[weather.demo docs]: /integrations/weather.demo/
[weather.met docs]: /integrations/met
[weather.smhi docs]: /integrations/smhi
-[weather.yweather docs]: /integrations/yweather
[websocket_api docs]: /integrations/websocket_api/
[wink docs]: /integrations/wink/
[xiaomi_aqara docs]: /integrations/xiaomi_aqara/
diff --git a/source/_posts/2019-10-30-release-101.markdown b/source/_posts/2019-10-30-release-101.markdown
index 88d569ae846..48122c8acd5 100644
--- a/source/_posts/2019-10-30-release-101.markdown
+++ b/source/_posts/2019-10-30-release-101.markdown
@@ -614,7 +614,7 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654]
- Add service description for route53 integration ([@tefinger] - [#27774])
- Move imports in openweathermap component ([@Quentame] - [#27779]) ([openweathermap docs])
- Move imports in apns component ([@Bouni] - [#27804]) ([apns docs])
-- Move imports in yweather ([@Misiu] - [#27842]) ([yweather docs])
+- Move imports in yweather ([@Misiu] - [#27842])
- Move imports in brunt component ([@Bouni] - [#27856]) ([brunt docs])
- Move imports in blockchain component ([@Bouni] - [#27852]) ([blockchain docs])
- Move blackbird imports ([@Bouni] - [#27849]) ([blackbird docs])
@@ -1901,7 +1901,6 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654]
[yeelight docs]: /integrations/yeelight/
[yeelightsunflower docs]: /integrations/yeelightsunflower/
[yr docs]: /integrations/yr/
-[yweather docs]: /integrations/yweather/
[zengge docs]: /integrations/zengge/
[zeroconf docs]: /integrations/zeroconf/
[zestimate docs]: /integrations/zestimate/
diff --git a/source/_posts/2019-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown
index 74857bb3f53..85601f69bc3 100644
--- a/source/_posts/2019-12-11-release-103.markdown
+++ b/source/_posts/2019-12-11-release-103.markdown
@@ -734,7 +734,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Report unavailable entities to google ([@elupus] - [#28501]) ([google_assistant docs])
- Add initial test suite for arcam_fmj integration ([@elupus] - [#29335])
- Fix uvloop warning ([@pvizeli] - [#29341]) ([stream docs])
-- Move imports to top for pushetta ([@springstan] - [#29332]) ([pushetta docs])
+- Move imports to top for pushetta ([@springstan] - [#29332])
- Move imports to top for pencom ([@springstan] - [#29348]) ([pencom docs])
- Include telegram_bot message id for all messages ([@luca-angemi] - [#29315]) ([telegram_bot docs])
- Ignore state of climate entities in prometheus ([@springstan] - [#29346]) ([prometheus docs])
@@ -1677,7 +1677,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[proxmoxve docs]: /integrations/proxmoxve/
[ps4 docs]: /integrations/ps4/
[pulseaudio_loopback docs]: /integrations/pulseaudio_loopback/
-[pushetta docs]: /integrations/pushetta/
[python_script docs]: /integrations/python_script/
[qbittorrent docs]: /integrations/qbittorrent/
[qnap docs]: /integrations/qnap/
diff --git a/source/_posts/2020-04-29-release-109.markdown b/source/_posts/2020-04-29-release-109.markdown
new file mode 100644
index 00000000000..08d13828c6c
--- /dev/null
+++ b/source/_posts/2020-04-29-release-109.markdown
@@ -0,0 +1,1685 @@
+---
+layout: post
+title: "0.109: New integrations page and weather card, frontend lost weight."
+description: "0.109: New integrations page and weather card, the frontend lost some weight and a new detection for integrations causing performance issues."
+date: 2020-04-29 00:00:00
+date_formatted: "April 29, 2020"
+author: Franck Nijhof
+author_twitter: frenck
+comments: true
+categories: Release-Notes
+og_image: /images/blog/2020-04-0.109/social.png
+---
+
+
+
+Last week we wrote about [the future of YAML][yaml-blog]. It raised quite a
+bit of additional questions, so [Phil][phil] and [Rohan][rohan] released
+a special edition of the Home Assistant Podcast. In this episode, they talk with
+[Paulus][@balloob] about the changes announced.
+
+[Click here to listen to the Podcast][podcast]
+
+Home Assistant Core 0.109!
+
+This release ships a lot of work that is not directly visible for the eye.
+We have seen a lot of bug fixes, stability improvements and quality
+improvements, which is really awesome! There's more to this than meets the eye.
+
+[phil]: https://twitter.com/philhawthorne
+[podcast]: https://hasspodcast.io/x001/
+[rohan]: https://twitter.com/rohank9
+[yaml-blog]: /blog/2020/04/14/the-future-of-yaml/
+
+## A new integration configuration page
+
+Let's start with something visible to the eye. As part of our configuration
+layout overhaul, we started work on the integration page. The screen now shows
+cards for every configured integration, and links to a filtered device and
+entities pages instead of providing its own detail page with devices, options
+and entities.
+
+All options are now on the same card. And, you can now also rename an already
+set up integration instance.
+
+
+
+Screenshot of the new integration page.
+
+
+Don't the new logos look beautiful? A big thanks to all the people, who
+have been working hard to complete our [collection of logos and icons][brands]
+the past few weeks. Almost 700! contributions have been processed!
+
+Thanks to everybody for contributing, that is amazing! Special thanks to these
+champs who did most of the heavy lifting: [@adrianmihalko][], [@BradleyFord][],
+[@Klumper][], [@nldroid][], [@samrdev][]! 🥇
+
+As for the next steps in future releases; we will add search, group multiple
+entries of the same integration and add specific functions for integrations
+like ZHA.
+
+[@adrianmihalko]: https://github.com/adrianmihalko
+[@BradleyFord]: https://github.com/BradleyFord
+[@Klumper]: https://github.com/Klumper
+[@nldroid]: https://github.com/nldroid
+[@samrdev]: https://github.com/samrdev
+[brands]: https://github.com/home-assistant/brands
+
+## New weather card
+
+To accompany our new weather row design, [@zsarnett][] redesigned the weather
+forecast card. It is cleaner and works better on smaller screens.
+It also allows you to hide the weather forecast.
+
+
+
+Screenshot of the new weather forecast card.
+
+
+[@zsarnett]: https://github.com/zsarnett
+
+## Weight loss for the frontend
+
+The Home Assistant has a translations system, which is great since it allows
+one to use Home Assistant in the language one prefers.
+
+However, it came with a performance penalty. All translations were downloaded
+each time. All of them. This is, of course, highly inefficient. With all the
+new frontend features added and the integrations that now comes to the UI, it
+slowly is becoming a bigger issue.
+
+For this release, [@balloob][] worked hard to make this more efficient and
+as of this release, the frontend will only fetch the translations it needs.
+This makes the frontend load less data, and thus lighter for the browser.
+
+Did you know you can help out translating Home Assistant?
+
+There is no need to learn git or anything. It can be done straight from your
+browser! Read more about helping out translating Home Assistant on our
+[developers website](https://developers.home-assistant.io/docs/internationalization_translation).
+
+## Detection of blocking I/O in the event loop
+
+This is a bit technical, but some things happening in Home Assistant, like
+fetching data from an API or website, can lock up Home Assistant for a small
+moment, if not done correctly. Until now, this has been hard to detect.
+
+This release adds logic in the core of Home Assistant that is able to detect
+if an integration does one of those blocking calls and writes a messages
+to the logs.
+
+
+
+Screenshot of an example log entry.
+
+
+If you see such a message in your logs, please report the issue on our
+[GitHub][issues] so we can fix those cases. If a custom component causes the
+log, it should be reported with the author of that custom integration.
+
+By addressing these issues, we are able to greatly improve the performance,
+responsiveness and stability of Home Assistant.
+
+[issues]: https://github.com/home-assistant/core/issues
+
+## Other noteworthy changes
+
+- [@timmo001][] Added the possibility to search in the Lovelace card picker.
+
+
+
+Screenshot of the search added to the card picker.
+
+
+- There is now MQTT debug information on the device page of an MQTT device,
+ awesome work [@emontnemery][]!
+
+- [@frenck][] re-introduced support for transitions in scenes. Both the
+ `scene.turn_on` and `scene.apply` services now accept a `transition` option
+ to make your scene transition on lights look smooth as butter.
+ An example use is added to the [documentation](/integrations/scene/#using-scene-transitions).
+
+- HomeKit got love from [@bdraco][]. He has been squashing bugs, improving
+ the overall stability and added support for Vacuums. Also, pairing with
+ HomeKit now shows the easy to scan QR code, which makes it easier to set up.
+
+- [@Kane610][] really went out into making the UniFi integration perfect. A lot
+ of adjustments and improvements. Thanks!
+
+- The iRobot Roomba integration now supports Braava too! Thanks [@shenxn][]!
+
+## New Integrations
+
+- Add OpenERZ API integration ([@misialq] - [#30441]) ([openerz docs]) (new-integration)
+- Support for pi4ioe5v9xxxx I2C IO expanders ([@antonverburg] - [#28847]) ([pi4ioe5v9xxxx docs]) (new-integration)
+- Add device tracking support for the Arris TG2492LG router ([@vanbalken] - [#30972]) ([arris_tg2492lg docs]) (new-integration)
+- Add Atag One thermostat integration ([@MatsNl] - [#32361]) ([atag docs]) (new-integration)
+
+## New Platforms
+
+- Add cover platform to Dynalite ([@ziv1234] - [#32594]) ([dynalite docs]) (new-platform)
+- Add notify function for BMW Connected Drive ([@gerard33] - [#33484]) ([bmw_connected_drive docs]) (new-platform)
+- Add Lightwave TRV ([@ColinRobbins] - [#31665]) ([lightwave docs]) (new-platform)
+
+## Integrations now available to set up from the UI
+
+The following integrations are now available via the Home Assistant UI:
+
+- [Bravia TV][braviatv docs], done by [@bieniu]
+- [Flu Near You][flunearyou docs], done by [@bachya]
+- [Flume][flume docs], done by [@bdraco]
+- [FRITZ!Box][fritzbox docs], done by [@escoand]
+- [Islamic Prayer Times][islamic_prayer_times docs], done by [@engrbm87]
+- [National Weather Service][nws docs], done by [@MatthewFlamm]
+- [Panasonic Viera][panasonic_viera docs], done by [@joogps]
+- [Roomba][roomba docs], done by [@Cyr-ius]
+- [Synology DSM][synologydsm docs], done by [@Quentame]
+- [Tado][tado docs], done by [@bdraco]
+- [Totalconnect][totalconnect docs], done by [@austinmroczek]
+- [Vera][vera docs], done by [@vangorra]
+
+## 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).
+
+Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/core/issues). Make sure to fill in all fields of the issue template.
+
+
+
+## Breaking Changes
+
+- **Flu Near You** - This integration is now available to be added from the UI.
+ The `monitored_conditions` setting has been removed. You will need to
+ reconfigure your existing YAML integration. - ([@bachya] - [#32858]) ([flunearyou docs])
+
+- **Synology DSM** - This integration is now available to be added from the UI.
+ It has been renamed from `synologydsm` to `synology_dsm`. Discovery support
+ has been added and the `name` configuration key has been removed. -
+ ([@Quentame] - [#32704]) ([@bdraco] - [#33729]) ([synology_dsm docs])
+
+ Example YAML configuration:
+
+ ```yaml
+ synology_dsm:
+ - host: XXX
+ username: XXX
+ password: XXX
+ ```
+
+- **UniFi** - Site ID has been removed from device tracker state attributes
+ since integrations and entity can only belong to one site and it is already
+ known. - ([@Kane610] - [#32817]) ([unifi docs])
+
+- **National Weather Service (NWS)** - YAML configuration is no longer supported
+ for NWS integration, configuration is now done through the UI. Two entities are
+ now created for each configured entry, one for daynight and one for hourly.
+ The `mode` option is no longer needed and `name` option is no longer
+ supported. - ([@MatthewFlamm] - [#34267]) ([nws docs])
+
+- **Withings** - Withings sleep state has been removed as it does not work as
+ intended anymore. Withings only provides historical data for this API endpoint
+ and getting recent data is rare. This results in wildly inaccurate state
+ reported by Home Assistant. - ([@vangorra] - [#33817]) ([withings docs])
+
+- **Slide** - This integration was previously using the wrong inverted
+ percentage of open/close. A new `invert_position` fallback option has been
+ added and the 5% offset to round it off as open/close has been extended to
+ 15%. Now it lines up with Home Assistant standards, which makes HomeKit
+ work out of the box. - ([@ualex73] - [#33739]) ([slide docs])
+
+- **Roomba** - This integration can now be added from the integrations UI and
+ provides additional sensors! You will need to reconfigure your existing YAML
+ configuration. Please see the documentation for more details. -
+ ([@Cyr-ius] - [#33302]) ([roomba docs])
+
+ Example YAML configuration:
+
+ ```yaml
+ roomba:
+ - host: IP_ADDRESS_OR_HOSTNAME
+ blid: BLID
+ password: PASSWORD
+ ```
+
+- **UV Sensors (various)** - Some UV sensors in the integrations `Metoffice`,
+ `OpenUV`, `Rfxtrx` and `Tellduslive` did not have a generalized unit of
+ measurement. However, after this change these sensors now have the unit of
+ measurment `UV index`. This can be a breaking change if you display this kind
+ of sensor in external systems such as influxdb, for example. -
+ ([@springstan] - [#34055]) ([metoffice docs]) ([openuv docs]) ([rfxtrx docs]) ([tellduslive docs])
+
+- **Ecobee** - Ecobee now uses HVAC mode `heat_cool` instead of `auto`, which
+ is reserved for when the user has no control over the temperature. In Ecobee
+ this was not the case and the user has control over the temperature. -
+ ([@balloob] - [#34193]) ([ecobee docs])
+
+- **Air Quality (various)** - Some `air quality` entities did not have the
+ `unit_of_measurement` property set. Now all `air quality` entities have the
+ appropriate `unit_of_measurement` `µg/m³` set. This can be a breaking change
+ if you display this kind of sensor in external systems such as influxdb,
+ for example. - ([@bieniu] - [#33304]) ([air_quality docs]) ([xiaomi_miio docs])
+
+- **SmartThings** - This change removes the need (and ability) to use the
+ SmartThings Classic mobile application to install the Home Assistant SmartApp.
+ Going forward, the SmartThings integration setup is completed entirely through
+ the web. This only changes how the integration is setup and not any
+ functionality once setup. - ([@andrewsayre] - [#34163]) ([smartthings docs])
+
+- **Sony Bravia TV** - Configuration of new instances will only be possible
+ through Integration due to the lack of the bravia.conf file, which is
+ necessary for YAML configuration. Existing instances will be imported into
+ config_entry. `ignored sources` has been added to the options and the missing
+ `device_class` property has been added to the entity class. -
+ ([@bieniu] - [#33774]) ([braviatv docs])
+
+- **eQ-3 MAX!** - Custom `vacation` preset is replaced with standard `away`.
+ Additionally, `manual` preset is removed in favor of HVAC mode `heat`. This
+ might affect your scripts, templates or automations. -
+ ([@leppa] - [#28845]) ([maxcube docs])
+
+ Other improvements:
+ - It wasn't possible to return to automatic (scheduled) operation after
+ switching to `manual` preset. `none` preset was added, which switches
+ thermostats to automatic (scheduled) operation.
+
+ - `Manual` preset was removed. HVAC mode `Heat` now switches thermostats into
+ manual mode.
+
+ - `hvac_action` is implemented, based on the valve position: if it's open
+ (position higher than 0), we assume that hot water is flowing and heating is
+ active. Else, the thermostat is in *Idle* mode. For wall thermostats, if at
+ least one thermostat in the room has its valve open, then heating is active.
+
+ - Support for `Comfort`, `Eco`, `Off` and `On` modes was added.
+ `Comfort`, `Eco` and `On` are exposed as presets and switch thermostats into
+ manual mode with corresponding temperatures, programmed on the thermostats.
+ `Off` corresponds to HVAC mode `Off`.
+
+ - Valve position is exposed as state attribute.
+
+- **Recorder** - The recorder configuration `purge_interval` has been
+ deprecated. The recorder database is now purged every night. This can be
+ disabled with the new `auto_purge` configuration though that is usually
+ not recommended. - ([@amelchio] - [#33646]) ([recorder docs])
+
+- **USCIS** - The USCIS now uses `name` instead of `friendly_name` in its YAML
+ configuration. You will need to adjust accordingly. -
+ ([@chrisrosset] - [#33431]) ([uscis docs])
+
+- **Panasonic Viera** - This is now its own integration and is available
+ through the integrations UI. You will need to reconfigure your existing YAML
+ integration. - ([@joogps] - [#33829]) ([panasonic_viera docs])
+
+ Example YAML configuration:
+
+ ```yaml
+ panasonic_viera:
+ host: 192.168.1.10
+ ```
+
+- **HomeKit Controller** - Support for homekit_controller's legacy pairing data
+ folder `.homekit` has now been removed. This has not been how pairings are
+ saved since Home Assistant 0.94. If you are running Home Assistant 0.94 or
+ later this does not affect you as your pairings were automatically migrated
+ to the new scheme already. If you are running an older release then you will
+ need to re-pair after upgrading. - ([@Jc2k] - [#34333]) ([homekit_controller docs])
+
+- **Add Islamic Prayer Times** - Islamic Prayer Times is now its own integration
+ and can be added using the Integrations UI. You will need to reconfigure your
+ existing YAML configuration. All sensors will display the prayer times as
+ per the selected calculation method. Changing the calculation method will
+ update all sensors with new prayer times. -
+ ([@engrbm87] - [#31590]) ([islamic_prayer_times docs])
+
+ Example YAML configuration:
+
+ ```yaml
+ islamic_prayer_times:
+ calculation_method: makkah
+ ```
+
+- **AVM FRITZ!Box** - This integration is now available to be added from the UI.
+ YAML configuration has been deprecated and should no longer be used, as it
+ will be removed in one of the next releases. -
+ ([@escoand] - [#31240]) ([fritzbox docs])
+
+- **Plex** - Configuring Plex via YAML is now deprecated and will be removed in
+ Home Assistant Core 0.111. Configuration is now done through the UI.-
+ ([@jjlawren] - [#34546]) ([plex docs])
+
+## Farewell to the following
+
+- **Pushetta**
+- **Yahoo Weather**
+
+Pushetta has been offline since September 2019 and the Yahoo Weather API has been discontinued. - ([@frenck] - [#34497] [#34501])
+
+## All changes
+
+
+ Click to see all changes!
+
+- Add MQTT debug info for remaining MQTT integrations ([@emontnemery] - [#33506]) ([mqtt docs])
+- Add Rachio Schedules ([@brg468] - [#33421]) ([rachio docs])
+- Directly call async_write_ha_state ([@balloob] - [#33508])
+- Add availability to opentherm_gw entities ([@mvn23] - [#32408]) ([opentherm_gw docs])
+- UniFi - Make POE control switches configurable ([@Kane610] - [#32781]) ([unifi docs])
+- Unsub dispatcher when removing entity from hass ([@balloob] - [#33510])
+- Add remote platform to directv ([@ctalkington] - [#32790]) ([directv docs]) ([directv docs])
+- Don't write storage to disk while stopping ([@dmulcahey] - [#33456])
+- Update pyotgw to 0.6b1 ([@mvn23] - [#33529]) ([opentherm_gw docs])
+- Add cover platform to Dynalite ([@ziv1234] - [#32594]) ([dynalite docs]) (new-platform)
+- Add Rachio Flex Schedules ([@brg468] - [#33533]) ([rachio docs])
+- Add melcloud AtaDevice vane control ([@vilppuvuorinen] - [#32672]) ([melcloud docs])
+- Use mock storage for MQTT tests ([@dmulcahey] - [#33553])
+- Fix uncaught exceptions for mqtt ([@ziv1234] - [#33547])
+- Fix template light returning NULL in color or temperature ([@alistairg] - [#33498]) ([template docs])
+- fixed uncaught exceptions for tradfri ([@ziv1234] - [#33550])
+- Add support to the Econet integration for new attributes: lower_temp, upper_temp, ambient_temp & is_enabled ([@dprus] - [#33363]) ([econet docs])
+- Revert "Add support to the Econet integration for new attributes: lower_temp, upper_temp, ambient_temp & is_enabled (#33363)" ([@bdraco] - [#33555]) ([econet docs])
+- Remove MQTT state vacuum value_template support. ([@emontnemery] - [#33536]) ([mqtt docs])
+- Add config entry for Flu Near You ([@bachya] - [#32858]) ([flunearyou docs]) (breaking change)
+- Use backend-provided fan speed presets for Xiaomi vacuums, bum… ([@rytilahti] - [#32850]) ([xiaomi_miio docs])
+- Add support for Vizio sound mode ([@raman325] - [#33200]) ([vizio docs])
+- Rachio Async fixes ([@brg468] - [#33549]) ([rachio docs])
+- Add force_update to timer integration ([@akasma74] - [#31646]) ([timer docs])
+- Directly call write state 2 ([@balloob] - [#33513])
+- Add vera config entries support ([@vangorra] - [#29880]) ([vera docs])
+- Upgrade Mastodon.py to 1.5.1 ([@fabaff] - [#33243]) ([mastodon docs])
+- Add unique id and show on map option in Tankerkoenig ([@FlavorFx] - [#33400]) ([tankerkoenig docs])
+- Upgrade cryptography to 2.9 ([@fabaff] - [#33571])
+- Add support for Mi AirPurifier 3 ([@foxel] - [#31729]) ([xiaomi_miio docs])
+- Fix vertical/horizontal property mixup in melcloud ([@vilppuvuorinen] - [#33580]) ([melcloud docs])
+- Automatic: fix OAuth2 redirect ([@pbeckcom] - [#33581]) ([automatic docs])
+- Improve MQTT test coverage and remove dead code ([@emontnemery] - [#33584]) ([mqtt docs])
+- Add Abode entity available property ([@shred86] - [#32923]) ([abode docs])
+- Small cleanup in async_process_ha_core_config ([@emontnemery] - [#33583])
+- Perform some small Flu Near You cleanup ([@bachya] - [#33590]) ([flunearyou docs])
+- Data Coordinator to return unsub func ([@balloob] - [#33588]) ([hue docs])
+- Add Home Coach to zeroconf detection ([@cgtobi] - [#33593]) ([netatmo docs])
+- Remove unused manifest fields ([@balloob] - [#33595])
+- Reduce log spam ([@cgtobi] - [#33592]) ([netatmo docs])
+- Change the method of getting the mac address in the braviatv i… ([@bieniu] - [#33567]) ([braviatv docs])
+- Fix uncaught exceptions in upnp ([@ziv1234] - [#33604])
+- Update pymelcloud to fix broken area device search ([@vilppuvuorinen] - [#33620]) ([melcloud docs])
+- Support melcloud swing mode ([@Danielhiversen] - [#33008]) ([melcloud docs])
+- Add zigbee information to ZHA device information ([@dmulcahey] - [#33612]) ([zha docs])
+- Move imports to top in wirelesstag ([@frenck] - [#33624]) ([wirelesstag docs])
+- Move imports to top for danfoss_air ([@frenck] - [#33625]) ([danfoss_air docs])
+- Move imports to top for doorbird ([@frenck] - [#33627]) ([doorbird docs])
+- Move imports to top for spc ([@frenck] - [#33628]) ([spc docs])
+- Move imports to top for mystrom ([@frenck] - [#33629]) ([mystrom docs])
+- Enable pylint import-outside-toplevel ([@frenck] - [#33631]) ([mqtt docs]) ([tensorflow docs]) ([zwave docs])
+- String formatting improvements ([@frenck] - [#33635])
+- Update legacy job calls in abode ([@shred86] - [#33607]) ([abode docs])
+- Use byte literals instead of encode ([@frenck] - [#33633]) ([actiontec docs]) ([graphite docs]) ([lannouncer docs]) ([thomson docs])
+- Use set & dict literals ([@frenck] - [#33636])
+- Removal of extraneous parenthesis ([@frenck] - [#33637])
+- Enable pylint global-statement ([@frenck] - [#33641])
+- Improve string formatting ([@springstan] - [#33643]) ([google_assistant docs]) ([joaoapps_join docs]) ([nissan_leaf docs]) ([withings docs])
+- String formatting improvements ([@frenck] - [#33653])
+- Use str literals ([@frenck] - [#33654]) ([rachio docs]) ([zwave docs])
+- Replace OSError aliases with OSError ([@frenck] - [#33655])
+- Remove unused manifest fields v2 ([@springstan] - [#33656])
+- Use dict literals ([@springstan] - [#33658])
+- Use tuple literals ([@springstan] - [#33661]) ([group docs]) ([tcp docs])
+- Remove redundant open modes ([@frenck] - [#33652]) ([config docs]) ([fail2ban docs]) ([file docs]) ([google docs]) ([onewire docs]) ([remember_the_milk docs])
+- Add attribution to Sense component ([@tchellomello] - [#33657]) ([sense docs])
+- Improve string formatting v2 ([@springstan] - [#33645])
+- Use list literals ([@springstan] - [#33659])
+- Small code style improvements to Alexa integration ([@frenck] - [#33660]) ([alexa docs])
+- Correct Hue mireds for lights ([@balloob] - [#33597]) ([hue docs])
+- Fix unhandled exceptions in dsmr ([@ziv1234] - [#33601])
+- Add await to coroutines in Abode ([@shred86] - [#33664]) ([abode docs])
+- String formatting improvements for tests ([@frenck] - [#33663])
+- String formatting improvements for tests (2) ([@frenck] - [#33666])
+- Handle cancellation in ServiceRegistry.async_call ([@pnbruckner] - [#33644])
+- Improve string formatting v3 ([@springstan] - [#33667])
+- Use set literals in tests ([@frenck] - [#33669]) ([alexa docs]) ([emulated_hue docs]) ([group docs]) ([hue docs]) ([mqtt docs]) ([zha docs])
+- Removal of old style class definitions in tests ([@frenck] - [#33671]) ([google_pubsub docs]) ([mqtt docs]) ([roku docs]) ([vizio docs])
+- Replace OSError aliases with OSError in UVC test ([@frenck] - [#33673]) ([uvc docs])
+- Use byte literals instead of encode in tests ([@frenck] - [#33672]) ([graphite docs])
+- Small code style improvements to Insteon integration ([@frenck] - [#33662]) ([insteon docs])
+- Removal of extraneous parenthesis in tests ([@frenck] - [#33670]) ([filesize docs]) ([folder docs]) ([folder_watcher docs]) ([homekit_controller docs]) ([homematicip_cloud docs]) ([hue docs])
+- use async_on_remove for IPP Update Coordinator ([@ctalkington] - [#33596]) ([ipp docs])
+- Add OpenERZ API integration ([@misialq] - [#30441]) ([openerz docs]) (new-integration)
+- Enable pylint unnecessary-pass ([@frenck] - [#33650])
+- Add yamllint (in pre-commit and CI) ([@frenck] - [#33676])
+- List dir when test fails ([@balloob] - [#33685]) ([tts docs])
+- Add pyupgrade (in pre-commit and CI) ([@frenck] - [#33688])
+- Map dry and fan only states for homekit thermostats ([@bdraco] - [#33682]) ([homekit docs])
+- Make homekit aware of STATE_STANDBY ([@bdraco] - [#33679]) ([homekit docs])
+- Improve string formatting v4 ([@springstan] - [#33668])
+- Add prettier (in pre-commit and CI) ([@frenck] - [#33693])
+- Improve string formatting v5 ([@springstan] - [#33697])
+- Prevent last.fm errors with None ([@inverse] - [#33446]) ([lastfm docs])
+- Recommend python & prettier vscode extensions ([@frenck] - [#33702])
+- Add check executables have shebangs (in pre-commit and CI) ([@frenck] - [#33703]) ([alexa docs]) ([dynalite docs]) ([tankerkoenig docs])
+- Ensure SimpliSafe state sync when websocket falters ([@bachya] - [#33680]) ([simplisafe docs])
+- Show diff in CI and cleanup pylintrc ([@frenck] - [#33704])
+- Remap homekit auto to home assistant heat_cool ([@bdraco] - [#33701]) ([homekit docs])
+- Remove global variable from aquostv ([@springstan] - [#33716]) ([aquostv docs])
+- Remove global variable from bloomsky ([@springstan] - [#33720])
+- Remove global variable from arduino ([@springstan] - [#33718]) ([arduino docs])
+- Remove global variable from scsgate ([@springstan] - [#33719]) ([scsgate docs])
+- Remove global variable from apcupsd ([@springstan] - [#33717]) ([apcupsd docs])
+- Ignore tplink tests exceptions ([@ziv1234] - [#33710])
+- Fix exception in zwave test ([@ziv1234] - [#33711]) ([zwave docs])
+- Fix iCloud tests doing I/O ([@Quentame] - [#33721]) ([icloud docs])
+- Improve string formatting v7 ([@springstan] - [#33705]) ([homekit docs]) ([rflink docs]) ([smartthings docs]) ([withings docs])
+- Remove global variable from sleepiq ([@springstan] - [#33715]) ([sleepiq docs])
+- Convert rachio to cloudhooks ([@bdraco] - [#33724]) ([rachio docs])
+- Add config flow to Synology DSM ([@Quentame] - [#32704]) ([synology_dsm docs]) ([synologydsm docs]) (breaking change) (new-integration)
+- UniFi - Improve client tracker attributes based on connection ([@Kane610] - [#32817]) ([unifi docs]) (breaking change)
+- Remove legacy async_add_job from homekit tests ([@bdraco] - [#33727]) ([homekit docs])
+- Don't reinvent callback handler removal logic in several integ… ([@bachya] - [#33726]) ([airvisual docs]) ([ambient_station docs]) ([flunearyou docs]) ([iqvia docs]) ([notion docs]) ([openuv docs]) ([rainmachine docs])
+- Fix exceptions in tests for samsung_tv ([@ziv1234] - [#33732]) ([samsungtv docs])
+- Add MQTT Alarm Control Panel custom bypass state ([@yozik04] - [#32541]) ([mqtt docs])
+- Temporarily disable Prettier on CI until issue is resolved ([@frenck] - [#33734])
+- Collection of random (mainly) test improvements ([@frenck] - [#33733])
+- Remove global variable from mochad ([@springstan] - [#33745]) ([mochad docs])
+- Collection of random test improvements ([@frenck] - [#33742]) ([alert docs]) ([alexa docs]) ([demo docs]) ([melissa docs]) ([water_heater docs])
+- Clean up after global variable deletion ([@springstan] - [#33743]) ([arduino docs]) ([bloomsky docs]) ([sleepiq docs])
+- Pre-commit changes to Prettier and executables check ([@frenck] - [#33749])
+- Add some safety checks for property access in NMBS sensor ([@thibmaek] - [#33695]) ([nmbs docs])
+- Properly demarcate websocket and REST API callbacks in SimpliS… ([@bachya] - [#33706]) ([simplisafe docs])
+- Patch gdacs entry setup in config flow tests ([@MartinHjelmare] - [#33776]) ([gdacs docs])
+- Support for pi4ioe5v9xxxx I2C IO expanders ([@antonverburg] - [#28847]) ([pi4ioe5v9xxxx docs]) (new-integration)
+- Add Sense attribution to all Sense sensors ([@tchellomello] - [#33775]) ([sense docs])
+- Remove global variable from zigbee ([@springstan] - [#33750]) ([zigbee docs])
+- Update Codecov.io configuration ([@frenck] - [#33783])
+- Add emontnemery as codeowner for cast, mqtt ([@emontnemery] - [#33784])
+- Bumped version to 0.109.0dev0 ([@frenck] - [#33782])
+- Collection of core tests improvements ([@frenck] - [#33757])
+- Fix uncaught exceptions for discovery, unify_direct, spotify,… ([@ziv1234] - [#33735]) ([discovery docs]) ([smartthings docs]) ([spotify docs]) ([unifi_direct docs])
+- Collection of tests improvements ([@frenck] - [#33778]) ([demo docs]) ([media_player docs]) ([shell_command docs]) ([version docs])
+- Remove uncaught exceptions from rflink ([@ziv1234] - [#33709]) ([rflink docs])
+- Improve MQTT debug info for subscriptions with wildcard ([@emontnemery] - [#33752]) ([mqtt docs])
+- Upgrade hass-cloud to 0.34 ([@balloob] - [#33789]) ([cloud docs])
+- Fix flaky TP-Link test ([@balloob] - [#33790]) ([tplink docs])
+- Add discovery support to synology_dsm ([@bdraco] - [#33729]) ([synology_dsm docs]) (breaking change)
+- Update directv remote platform tests service calls ([@ctalkington] - [#33793]) ([directv docs]) ([directv docs])
+- Remove None from dict.get(key, None) ([@springstan] - [#33794])
+- Clean up access to config in various integrations v2 ([@springstan] - [#33763])
+- Improve string formatting v6 ([@springstan] - [#33698])
+- Handle QVR Pro dropping connection ([@oblogic7] - [#33591]) ([qvr_pro docs])
+- Fix hue ct ([@balloob] - [#33791]) ([hue docs])
+- Clean up access to config in various integrations ([@springstan] - [#33759]) ([acer_projector docs]) ([ads docs]) ([aladdin_connect docs]) ([alarmdecoder docs]) ([alert docs]) ([alpha_vantage docs]) ([amazon_polly docs])
+- Upgrade sqlalchemy to 1.3.16 ([@frenck] - [#33810]) ([recorder docs]) ([sql docs])
+- Upgrade shodan to 1.23.0 ([@frenck] - [#33811]) ([shodan docs])
+- Add counters for GitHub repo forks, clones, views ([@renemarc] - [#33300]) ([github docs])
+- Convert nws integration to component configuration ([@MatthewFlamm] - [#31398]) ([nws docs]) (breaking change)
+- Convert nut to a multi step config flow ([@bdraco] - [#33803]) ([nut docs])
+- Use HTTP_OK constant ([@springstan] - [#33798])
+- Do not ban supervisor ip if set ([@MartinHjelmare] - [#33781]) ([http docs])
+- Add script to clean up translations ([@balloob] - [#33802])
+- Load integrations with requirements in device_automation ([@jason0x43] - [#33714]) ([device_automation docs])
+- Fix thermostats that do not support off under homekit ([@bdraco] - [#33809]) ([homekit docs])
+- Remove withings sleep state ([@vangorra] - [#33817]) ([withings docs]) (breaking change)
+- Fix isort problem in homeassistant/requirements.py ([@basnijholt] - [#33828])
+- Accommodate mysql servers with a low wait_timeout ([@bdraco] - [#33638]) ([recorder docs])
+- Separate august keypads into their own device ([@bdraco] - [#33665]) ([august docs])
+- UniFi: Add UDM/P (UniFi OS) support ([@Kane610] - [#33766]) ([unifi docs])
+- Use HTTP_INTERNAL_SERVER_ERROR constant ([@springstan] - [#33832])
+- Add a config flow for flume ([@bdraco] - [#33419]) ([flume docs])
+- Use HTTP_NOT_FOUND constant ([@springstan] - [#33835])
+- Update nut to use DataUpdateCoordinator ([@bdraco] - [#33831]) ([nut docs])
+- Fix missed async conversion in flume. ([@bdraco] - [#33855]) ([flume docs])
+- Clean up access to config in various integrations v3 ([@springstan] - [#33842])
+- Fix slide open/close percentage ([@ualex73] - [#33739]) ([slide docs]) (breaking change)
+- Lookup manufacturer name for casts ([@emontnemery] - [#33845]) ([cast docs])
+- Add local_ip unique_id & icon and single_instance_allowed ([@Quentame] - [#33483]) ([local_ip docs])
+- Add and use HTTP_FORBIDDEN constant ([@springstan] - [#33839])
+- Add Direct Message support for Discord integration ([@vermium-sifell] - [#33692]) ([discord docs])
+- Add tradfri cover model to the cover entity attributes ([@i00] - [#33674]) ([tradfri docs])
+- Use HTTP_BAD_REQUEST constant ([@springstan] - [#33797])
+- Consolidate translation script ([@balloob] - [#33911])
+- Rewrite MQTT & demo Lock tests ([@frenck] - [#33838]) ([demo docs]) ([lock docs]) ([mqtt docs])
+- Guard IPP against negative ink levels ([@ctalkington] - [#33931]) ([ipp docs]) (beta fix)
+- Migrate translations upload ([@balloob] - [#33926])
+- Migrate translations clean script ([@balloob] - [#33930])
+- Make f-strings without placeholder normal strings ([@scop] - [#33938]) ([homeassistant docs]) ([homekit docs])
+- UniFi - Roaming clients should be considered connected ([@Kane610] - [#33942]) ([unifi docs])
+- Discover manually added casts ([@emontnemery] - [#33922]) ([cast docs])
+- Use TEMP_CELSIUS constant ([@springstan] - [#33963])
+- Remove support for cast dynamic speaker groups ([@emontnemery] - [#33884]) ([cast docs])
+- Use ENERGY_KILO_WATT_HOUR constant ([@springstan] - [#33962])
+- Use TEMP_FAHRENHEIT constant ([@springstan] - [#33969]) ([ambient_station docs]) ([darksky docs]) ([dyson docs]) ([eight_sleep docs])
+- Clean up ssl usage ([@springstan] - [#33960])
+- Migrate translations_develop script ([@balloob] - [#33933])
+- Ability to mock long poll requests + refactor qwikswitch unit… ([@ziv1234] - [#33804]) ([qwikswitch docs])
+- Rewrite parts of upnp component ([@StevenLooman] - [#33108]) ([upnp docs])
+- Add new Econet attributes ([@dprus] - [#33795]) ([econet docs])
+- Undo NUT update listener on config reload ([@bdraco] - [#33986]) ([nut docs])
+- Fix Rachio binary sensor cold reboot ([@brg468] - [#33959]) ([rachio docs])
+- Add and use UNIT_VOLT constant ([@springstan] - [#33994])
+- Use LENGTH_KILOMETERS constant ([@springstan] - [#33976])
+- Cleanup ZHA metering and electrical measurement channels ([@dmulcahey] - [#33992]) ([zha docs])
+- Add changed_by to elkm1 alarm device_state_attributes ([@bdraco] - [#33982]) ([elkm1 docs])
+- Read min and max mireds from ZHA lights ([@dmulcahey] - [#33983]) ([zha docs])
+- Bump up zha dependencies. ([@Adminiuga] - [#33997]) ([zha docs])
+- Vizio dependency version bump ([@raman325] - [#34002]) ([vizio docs])
+- update strings.json to match device name in manifest ([@raman325] - [#34003]) ([vizio docs])
+- Upgrade TwitterAPI to 2.5.11 ([@fabaff] - [#34006]) ([twitter docs])
+- Upgrade getmac to 0.8.2 ([@fabaff] - [#34013]) ([huawei_lte docs]) ([kef docs]) ([minecraft_server docs]) ([nmap_tracker docs])
+- Upgrade sendgrid to 6.2.1 ([@fabaff] - [#34014]) ([sendgrid docs])
+- Upgrade mutagen to 1.44.0 ([@fabaff] - [#34011]) ([tts docs])
+- Upgrade discord.py to 1.3.3 ([@fabaff] - [#34008]) ([discord docs])
+- Upgrade distro to 1.5.0 ([@fabaff] - [#34009]) ([updater docs])
+- Upgrade beautifulsoup4 to 4.9.0 ([@fabaff] - [#34007]) ([scrape docs])
+- Upgrade numpy to 1.18.2 ([@fabaff] - [#34012]) ([iqvia docs]) ([opencv docs]) ([tensorflow docs]) ([trend docs])
+- Fix docstring in test_util/aiohttp.py ([@ziv1234] - [#34024])
+- Update codeowners for seven_segments ([@fabaff] - [#34027]) ([seven_segments docs])
+- Upgrade geopy to 1.21.0 ([@fabaff] - [#34026]) ([aprs docs])
+- Use POWER_WATT constant ([@springstan] - [#33984])
+- Add and use UNIT_DEGREE constant ([@springstan] - [#33978])
+- Upgrade pillow to 7.1.1 ([@fabaff] - [#34025]) ([doods docs]) ([proxy docs]) ([qrcode docs]) ([seven_segments docs]) ([sighthound docs]) ([tensorflow docs])
+- Add config_flow for Roomba ([@Cyr-ius] - [#33302]) ([roomba docs]) (breaking change)
+- Use ZigbeeException instead of DeliveryError in ZHA ([@dmulcahey] - [#33993]) ([zha docs])
+- Add tests for various NUT upses ([@bdraco] - [#34034]) ([nut docs])
+- Fix docstring in test_utils/aiohttp.py ([@ziv1234] - [#34040])
+- Various camera test improvements ([@frenck] - [#34022]) ([camera docs]) ([demo docs])
+- Remove already fixed qwikswitch uncaught exceptions ([@ziv1234] - [#34049])
+- Use UNIT_PERCENTAGE constant ([@springstan] - [#34054]) ([abode docs]) ([august docs]) ([garmin_connect docs]) ([nexia docs]) ([nut docs]) ([powerwall docs])
+- Handle incorrect config for Nederlandse Spoorwegen integration ([@YarmoM] - [#31623]) ([nederlandse_spoorwegen docs])
+- Restore ability to change the scan interval in the NUT ([@bdraco] - [#33996]) ([nut docs])
+- Do not use POWER_WATT for West wind direction ([@Quentame] - [#34069]) ([bom docs]) ([homematicip_cloud docs])
+- Upgrade certifi to >=2020.4.5.1 ([@fabaff] - [#34080])
+- Upgrade importlib-metadata to 1.6.0 ([@fabaff] - [#34081])
+- Upgrade keyring to 21.2.0 ([@fabaff] - [#34084])
+- Fix harmony unnecessary whitespace stripping ([@dmwyatt] - [#34071]) ([harmony docs])
+- Clean up camera and demo camera ([@MartinHjelmare] - [#34058]) ([demo docs])
+- Add homekit configuration option to bind to default interface ([@bdraco] - [#33999]) ([homekit docs])
+- Improve string formatting v9 ([@springstan] - [#34050])
+- Add notify function for BMW Connected Drive ([@gerard33] - [#33484]) ([bmw_connected_drive docs]) (new-platform)
+- Allow QVR Pro port to be optional on config ([@oblogic7] - [#33901]) ([qvr_pro docs])
+- Import ABC from collections.abc instead of collections for Pyt… ([@tirkarthi] - [#34077]) ([command_line docs]) ([zha docs])
+- Increase scan_interval for currencylayer ([@fabaff] - [#34097]) ([currencylayer docs])
+- Use MASS_KILOGRAMS constant ([@springstan] - [#34052]) ([garmin_connect docs]) ([isy994 docs]) ([smartthings docs])
+- Config flow for tado ([@bdraco] - [#33677]) ([tado docs])
+- deCONZ support for new device trigger for Feller EDIZIOdue Friends of hue Switch ([@bqstony] - [#33478]) ([deconz docs])
+- Use UNIT_UV_INDEX constant ([@springstan] - [#34055]) ([metoffice docs]) ([openuv docs]) ([rfxtrx docs]) ([tellduslive docs]) (breaking change)
+- Add and use UNIT_CONDUCTIVITY constant ([@springstan] - [#34107]) ([miflora docs]) ([mysensors docs]) ([plant docs])
+- Use LENGTH_METERS constant ([@springstan] - [#34110]) ([bom docs]) ([darksky docs]) ([garmin_connect docs]) ([isy994 docs]) ([mysensors docs]) ([proximity docs]) ([zamg docs])
+- Add and use frequency constants ([@springstan] - [#34113])
+- Fixed uncaught exceptions for demo ([@ziv1234] - [#34117]) ([demo docs])
+- Don't do http requests to determine Cast device details ([@emontnemery] - [#34082]) ([cast docs])
+- Fix reversed door closing/opening states in HomeKit ([@bdraco] - [#34095]) ([homekit docs])
+- Fix nws platform setup and data update. ([@MatthewFlamm] - [#34106]) ([nws docs])
+- Add tilt support to basic homekit window covers ([@bdraco] - [#33937]) ([homekit docs])
+- Convert homekit thermostats to use service callbacks ([@bdraco] - [#34073]) ([homekit docs])
+- Add Totalconnect config flow ([@austinmroczek] - [#32126]) ([totalconnect docs])
+- Add Lightwave TRV ([@ColinRobbins] - [#31665]) ([lightwave docs]) (new-platform)
+- Use Orange Pi GPIO as integration name ([@pascallj] - [#34137]) ([orangepi_gpio docs])
+- Various light test improvements ([@frenck] - [#34131]) ([demo docs]) ([device_sun_light_trigger docs]) ([flux docs]) ([group docs]) ([light docs])
+- feat(synology-srm): update to latest version and improve errors ([@aerialls] - [#34144]) ([synology_srm docs])
+- Add flash light device actions ([@chmielowiec] - [#33689]) ([light docs])
+- Use updated powerwall client API library ([@jrester] - [#34139]) ([powerwall docs])
+- Fix example paths for Android TV download/upload services ([@JeffLIrion] - [#34151]) ([androidtv docs])
+- Add play_media channel support to roku ([@quinnhosler] - [#34124]) ([roku docs])
+- Add websocket API to update config entry title ([@balloob] - [#34155]) ([config docs])
+- Dump states in event handler for HA_Stop ([@balloob] - [#33974])
+- Use correct Ecobee fan constants ([@balloob] - [#34177]) ([ecobee docs])
+- Allow WS queue to temporarily peak ([@balloob] - [#34175]) ([websocket_api docs])
+- Fix typo in sense constant SENSE_TRENDS_COORDINATOR ([@bdraco] - [#34181]) ([sense docs])
+- Report unserializable data in websocket ([@balloob] - [#34072]) ([websocket_api docs])
+- Update pyHik to 0.2.7 ([@mezz64] - [#34183]) ([hikvision docs])
+- Ecobee to use HVAC mode heat-cool instead of auto ([@balloob] - [#34193]) ([ecobee docs]) (breaking change)
+- Upgrade holidays to 0.10.2 ([@fabaff] - [#34189]) ([workday docs])
+- Test updating non existing config entry ([@balloob] - [#34191]) ([config docs])
+- Upgrade yamllint to 1.22.0 ([@frenck] - [#34198])
+- Fix Hue brightness values over 127 off by one ([@balloob] - [#34190]) ([hue docs])
+- Upgrade spotipy to 2.11.1 ([@frenck] - [#34201]) ([spotify docs])
+- Add Android TV screen capture option and use library screencap ([@i00] - [#34074]) ([androidtv docs])
+- Add defrost preset mode to Tesla ([@alandtse] - [#34186]) ([tesla docs])
+- Bump simplisafe-python to 9.0.7 ([@bachya] - [#34216]) ([simplisafe docs])
+- Add snapcast latency attribute and service ([@BarrettLowe] - [#34126]) ([snapcast docs])
+- Improve LG webosTV ([@timmo001] - [#34147]) ([webostv docs])
+- Reduce loss of precision when setting light percent brightness ([@bdraco] - [#34208]) ([light docs])
+- Add DEVICE_CLASS_BATTERY_CHARGING to binary_sensor ([@bdraco] - [#34203]) ([binary_sensor docs])
+- Clean up access to config in various integrations v4 ([@springstan] - [#34174])
+- Reduce tplink loss of precision during brightness conversion ([@bdraco] - [#34210]) ([tplink docs])
+- Fix for schluter unit system bug ([@prairieapps] - [#34230]) ([schluter docs])
+- Add unit_of_measurement property for air_quality entity ([@bieniu] - [#33304]) ([air_quality docs]) ([xiaomi_miio docs]) (breaking change)
+- Updated frontend to 20200414.0 ([@bramkragten] - [#34235]) ([frontend docs])
+- Update SmartThings config flow to be entirely UI based ([@andrewsayre] - [#34163]) ([smartthings docs]) (breaking change)
+- Add config flow for braviatv integration ([@bieniu] - [#33774]) ([braviatv docs]) (breaking change)
+- Add attribute for storing one weather warning as a whole ([@marecabo] - [#29005]) ([dwd_weather_warnings docs])
+- Allow async_setup changes to config entry data be taken into a… ([@balloob] - [#34166])
+- Clean up access to config in various integrations v5 ([@springstan] - [#34206])
+- Add AsusWRT Devices Connected Sensor ([@timmo001] - [#34204]) ([asuswrt docs])
+- Move title translation to root ([@balloob] - [#33850])
+- Add MQTT climate temperature unit ([@presslab-us] - [#34066]) ([mqtt docs])
+- Add command to get integration manifests ([@balloob] - [#34262]) ([websocket_api docs])
+- Add Translations 2.0 migrate script ([@balloob] - [#34261])
+- Removed uncaught exceptions from Dyson ([@ziv1234] - [#34112]) ([dyson docs])
+- Patch http.client to not do I/O in the event loop ([@balloob] - [#34194]) (breaking change)
+- Add translations check script ([@balloob] - [#34272]) ([deconz docs]) ([unifi docs])
+- Fix Keba request data service call ([@dannerph] - [#34254]) ([keba docs])
+- Support DirecTV music channels with extended meta ([@ctalkington] - [#34228]) ([directv docs]) ([directv docs])
+- Add tests for additional nut ups models ([@bdraco] - [#34240]) ([nut docs])
+- Set homekit alarm/sensor/switch/cover state as soon as possible ([@bdraco] - [#34245]) ([homekit docs])
+- Convert homekit fans to use service callbacks ([@bdraco] - [#34229]) ([homekit docs])
+- Prevent a single accessory setup failure from breaking all HomeKit accessories ([@bdraco] - [#34263]) ([homekit docs])
+- Fix synology_dsm i/o in event loop ([@bdraco] - [#34281]) ([synology_dsm docs])
+- Improve MAX! Cube integration ([@leppa] - [#28845]) ([maxcube docs]) (breaking change)
+- Add state to RFXtrx covers ([@Ernst79] - [#30935]) ([rfxtrx docs])
+- Add config flow to nws and remove yaml configuration ([@MatthewFlamm] - [#34267]) ([nws docs]) (breaking change)
+- Bump iammeter to 0.1.7 to fix empty SN ([@lewei50] - [#34279]) ([iammeter docs])
+- Add device tracking support for the Arris TG2492LG router ([@vanbalken] - [#30972]) ([arris_tg2492lg docs]) (new-integration)
+- Take integration title from manifest if not translated ([@balloob] - [#34283]) ([hue docs])
+- Allow hassfest to validate specific integrations ([@balloob] - [#34277])
+- Support contemporary entity selectors for LIFX services ([@amelchio] - [#33062]) ([lifx docs])
+- Ensure zone in update payload for konnected ([@kit-klein] - [#34289]) ([konnected docs])
+- Migrate frontend translations of domains to backend ([@balloob] - [#34294])
+- Drop title from translations if brand name ([@balloob] - [#34306])
+- Ensure konnected unsubscribes during entry unloads ([@kit-klein] - [#34291]) ([konnected docs])
+- Improve Sonarr Upcoming Time Handling ([@ctalkington] - [#34224]) ([sonarr docs])
+- Improve IPP Config Flow ([@ctalkington] - [#34212]) ([ipp docs])
+- Add Friends of Hue Switch - Model FOHSWITCH (ZGPSWITCH) ([@Cyr-ius] - [#34195]) ([hue docs])
+- Refactor vizio media_player tests to remove conditional statements from helper function ([@raman325] - [#33615]) ([vizio docs])
+- UniFi - Support automatic removal of clients ([@Kane610] - [#34307]) ([unifi docs])
+- Purge recorder database at night ([@amelchio] - [#33646]) ([recorder docs]) (breaking change)
+- Resolve homekit not updating motion sensors ([@bdraco] - [#34282]) ([homekit docs])
+- Update pyhomematic to 0.1.66 ([@danielperna84] - [#34314]) ([homematic docs])
+- Bump to pyIntesisHome 1.7.4 ([@jnimmo] - [#34319]) ([intesishome docs])
+- Restore isy light brightness after off ([@bdraco] - [#34320]) ([isy994 docs])
+- Improve error message when people have not moved config flow title yet ([@balloob] - [#34321])
+- UniFi - Allow tracking of clients connected to third party APs ([@Kane610] - [#34067]) ([unifi docs])
+- Remove two more titles from strings.json ([@balloob] - [#34324]) ([axis docs]) ([homekit_controller docs])
+- Fix uncaught exceptions in ios ([@ziv1234] - [#34119]) ([ios docs])
+- Fix uncaught exception in local_file ([@ziv1234] - [#34312])
+- Upgrade yamllint to 1.23.0 ([@frenck] - [#34337])
+- Add rflink binary_sensor allon and alloff commands ([@tubalainen] - [#32411]) ([rflink docs])
+- Add a script to clean the frontend translations ([@balloob] - [#34309])
+- Fix missing events for hue remotes ([@azogue] - [#34340]) ([hue docs])
+- Fix emulated_hue brightness off by one ([@bdraco] - [#34185]) ([emulated_hue docs])
+- Add trunk and frunk locks to Tesla integration ([@hobbe] - [#34343]) ([tesla docs])
+- Bump zeroconf to 0.25.1 ([@emontnemery] - [#34341]) ([zeroconf docs])
+- Type hint improvements ([@scop] - [#33082])
+- Fix HomematicIP smoke detector detection type ([@SukramJ] - [#34347]) ([homematicip_cloud docs])
+- Add support for DEXXO SMART io Garage Opener ([@dfournie] - [#27704]) ([tahoma docs])
+- Update tesla-powerwall to version 0.2.5 ([@jrester] - [#34348]) ([powerwall docs])
+- Add missing services to Homekit services yaml ([@bdraco] - [#34349]) ([homekit docs])
+- Disable pylint invalid name for TypeVar T ([@MartinHjelmare] - [#34355])
+- Add missed CONF_API_VERSION config in flow + Fix missing_data translation ([@Quentame] - [#34356]) ([synology_dsm docs])
+- Use serial numbers for unique_id of powerwall devices ([@jrester] - [#34351]) ([powerwall docs])
+- deCONZ - Always allow manual input of gateway ([@Kane610] - [#33951]) ([deconz docs])
+- Add 2SA authentication to Synology DSM ([@Quentame] - [#34101]) ([synology_dsm docs])
+- Extend knx brightness with rgb brightness if brightness addres… ([@FredericMa] - [#33152]) ([knx docs])
+- Ignore non-ASCII keys in zeroconf payloads ([@jjlawren] - [#34344]) ([zeroconf docs])
+- Use name instead of friendly name in uscis config ([@chrisrosset] - [#33431]) ([uscis docs]) (breaking change)
+- Add config flow to panasonic_viera component ([@joogps] - [#33829]) ([panasonic_viera docs]) (breaking change)
+- Google local sdk: Set right port, correct device id and add base url ([@bramkragten] - [#34358]) ([google_assistant docs])
+- Use DataUpdateCoordinator in NWS ([@MatthewFlamm] - [#34372]) ([nws docs])
+- Pi4ioe5v9xxxx from ToggleEntity to SwitchDevice ([@antonverburg] - [#34369]) ([pi4ioe5v9xxxx docs])
+- Allow configuring KNX preset_modes via the operation_modes variable ([@FredericMa] - [#33068]) ([knx docs])
+- Switch harmony to async_on_remove ([@bdraco] - [#34378]) ([harmony docs])
+- Fix a bug where long sms messages get cut off ([@ocalvo] - [#34359]) ([sms docs])
+- Bump androidtv to 0.0.41 ([@JeffLIrion] - [#34382]) ([androidtv docs])
+- Add tests for Roku ([@ctalkington] - [#34380]) ([roku docs])
+- Add Braava support to iRobot Roomba component ([@shenxn] - [#33616]) ([roomba docs])
+- Fix Tado signal collisons ([@bdraco] - [#34118]) ([tado docs])
+- Add support to the new Broadlink RM Mini 3 and RM4 Series ([@felipediel] - [#32523]) ([broadlink docs])
+- Allow fetching translations by categories ([@balloob] - [#34329]) ([frontend docs]) ([onboarding docs])
+- Bump frontend to 20200418 ([@balloob] - [#34407]) ([frontend docs])
+- Bump plexapi to 3.4.0, remove workarounds ([@jjlawren] - [#34395]) ([plex docs])
+- Add new languages to Google Cloud TTS ([@lufton] - [#34334]) ([google_cloud docs])
+- Access Zoneminder config correctly ([@turbokongen] - [#34388]) ([zoneminder docs])
+- Add support for turning on swing mode in tado ([@bdraco] - [#34404]) ([tado docs])
+- Code fixes and cleanup for roomba integration ([@shenxn] - [#34409]) ([roomba docs])
+- Bump nad_receiver version ([@gladhorn] - [#34400]) ([nad docs])
+- Eliminate homekit media_player event storms on startup ([@bdraco] - [#34399]) ([homekit docs])
+- Improve Roku media player test coverage ([@ctalkington] - [#34403]) ([roku docs])
+- upgrade Tibber lib ([@Danielhiversen] - [#34429]) ([tibber docs])
+- Fix hassfest validate invocation in Tox ([@scop] - [#34428])
+- Store HomeKit generated accessory id against unique_id where possible ([@Jc2k] - [#33109]) ([homekit docs])
+- UniFi - refactor entity management ([@Kane610] - [#34367]) ([unifi docs])
+- Fix translations merging ([@balloob] - [#34417])
+- Fix serial integration connection stability ([@clau-bucur] - [#33067]) ([serial docs])
+- Resolve delay sending multiple commands to harmony remotes ([@bdraco] - [#34410]) ([harmony docs])
+- Fix circular import ([@balloob] - [#34441])
+- Prevent Synology Camera doing I/O in event loop ([@balloob] - [#34442]) ([synology docs])
+- Optimize async_generate_entity_id ([@bdraco] - [#34440])
+- Ensure existing SimpliSafe notifications trigger event on HASS startup ([@bachya] - [#34232]) ([simplisafe docs])
+- Include charging state for powerwall ([@bdraco] - [#33432]) ([powerwall docs])
+- Add foundation for state translations ([@balloob] - [#34443]) ([ebusd docs]) ([moon docs]) ([season docs])
+- Remove deprecated homekit_controller credential storage locations ([@Jc2k] - [#34333]) ([homekit_controller docs]) (breaking change)
+- Add Islamic Prayer Times config flow ([@engrbm87] - [#31590]) ([islamic_prayer_times docs]) (breaking change)
+- Add white value in light template platform ([@elahd] - [#32481]) ([template docs])
+- Bump brother to version 0.1.13 ([@bieniu] - [#34456]) ([brother docs])
+- Add config flow and device registry to fritzbox integration ([@escoand] - [#31240]) ([fritzbox docs]) (breaking change)
+- Improve the transmission integration ([@zhulik] - [#34223]) ([transmission docs])
+- Add support for Lutron Keypad LEDs ([@alistairg] - [#30452]) ([lutron docs])
+- Add vacuum support to homekit ([@bdraco] - [#34386]) ([homekit docs])
+- Bump openwrt-luci-rpc version: 1.1.2 → 1.1.3 ([@fbradyirl] - [#34463]) ([luci docs])
+- Fix relative_time datetime object without timezone ([@Nossnevs] - [#34273])
+- Switch griddy to async_on_remove ([@bdraco] - [#34471]) ([griddy docs])
+- Switch powerwall to async_on_remove ([@bdraco] - [#34472]) ([powerwall docs])
+- Switch myq to async_on_remove ([@bdraco] - [#34473]) ([myq docs])
+- Switch nexia to async_on_remove ([@bdraco] - [#34474]) ([nexia docs])
+- Update bt_smarthub component making it compatible with smarthub 2 ([@leroyshirto] - [#31292]) ([bt_smarthub docs])
+- Switch brother to async_on_remove ([@bieniu] - [#34478]) ([brother docs])
+- Bump hass-nabucasa 0.34.1 ([@pvizeli] - [#34480]) ([cloud docs])
+- Import state strings ([@balloob] - [#34451])
+- Migrate HomeKit to use describe_event for logbook support ([@balloob] - [#34485]) ([homekit docs]) ([logbook docs])
+- Add transition support to scenes, cleanup blocking parameter ([@frenck] - [#34434])
+- UniFi - Logs spam with not adding disabled entity ([@Kane610] - [#34479]) ([unifi docs])
+- Bump pychromecast ([@emontnemery] - [#34466]) ([cast docs])
+- Revert incorrect sync/async conversion in LCN integration ([@frenck] - [#34493]) ([lcn docs])
+- upgrade broadlink lib ([@Danielhiversen] - [#34488]) ([broadlink docs])
+- Switch airly to async_on_remove ([@bieniu] - [#34498]) ([airly docs])
+- Switch gios to async_on_remove ([@bieniu] - [#34499]) ([gios docs])
+- Remove Pushetta integration ([@frenck] - [#34497]) (breaking change)
+- Update bravia-tv backend ([@dcnielsen90] - [#34376]) ([braviatv docs])
+- Remove Yahoo Weather integration ([@frenck] - [#34501]) (breaking change)
+- Complete device registry update ([@MartinHjelmare] - [#34500])
+- Drop UNIT_ prefix for constants ([@springstan] - [#34164])
+- Fix a bug where a single long sms message is sent as multiple… ([@ocalvo] - [#34508]) ([sms docs])
+- UniFi - Improve handling of client tracker is connected to better respect configured delay ([@Kane610] - [#34510]) ([unifi docs])
+- UniFi - Only match ssid filter if ssid is present, this will only affect recently disconnected clients and clients which have a previously created entry in entity registry ([@Kane610] - [#34509]) ([unifi docs])
+- Revert removal of JSON validator in hassfest ([@frenck] - [#34504])
+- Display Homekit QR code when pairing ([@bdraco] - [#34449]) ([homekit docs])
+- Rename translations dir for integrations ([@ludeeus] - [#34494])
+- Don't log same MQTT message multiple times ([@emontnemery] - [#34511]) ([mqtt docs])
+- Use registry to find linked batteries for homekit ([@bdraco] - [#33519]) ([homekit docs])
+- Translation fixes and tweaks ([@balloob] - [#34489]) ([binary_sensor docs]) ([group docs])
+- Resolve delays with tuya devices ([@bdraco] - [#34512]) ([tuya docs])
+- UniFi - Simplify config option of block clients to just a multi select drop down ([@Kane610] - [#34514]) ([unifi docs])
+- Fix zeroconf interface being ineffective in HomeKit ([@bdraco] - [#34516]) ([homekit docs])
+- Bump mychevy library to 2.0.1 ([@sdague] - [#34496]) ([mychevy docs])
+- Improve Roku ([@ctalkington] - [#34431]) ([roku docs])
+- Improve volvooncall ([@fredrike] - [#34495]) ([volvooncall docs])
+- Updated frontend to 20200422.0 ([@bramkragten] - [#34532]) ([frontend docs])
+- Bump aioasuswrt to 1.2.5 ([@kennedyshead] - [#34454]) ([asuswrt docs])
+- Don't set step title if it's integration title ([@balloob] - [#34524])
+- Validate translations for custom components ([@balloob] - [#34519])
+- Add Atag One thermostat integration ([@MatsNl] - [#32361]) ([atag docs]) (new-integration)
+- Deprecate Plex YAML config ([@jjlawren] - [#34546]) ([plex docs]) (breaking change)
+- Upgrade blinkpy library to 0.14.3 ([@fronzbot] - [#34542]) ([blink docs])
+- Fix Bayesian Binary JSON Serialization ([@jlmcgehee21] - [#34540]) ([bayesian docs])
+- Add Plex play_media logging and troubleshooting tools ([@jjlawren] - [#34412]) ([plex docs]) (beta fix)
+- Handle flaky SimpliSafe notification registration ([@bachya] - [#34475]) ([simplisafe docs]) (beta fix)
+- Bump python-synology to 0.7.0 ([@Quentame] - [#34534]) ([synology_dsm docs]) (beta fix)
+- Update tesla-powerwall to version 0.2.8 ([@jrester] - [#34545]) ([powerwall docs]) (beta fix)
+- Add All wrapper to deprecated Plex schema ([@jjlawren] - [#34552]) ([plex docs]) (beta fix)
+- Fix deleting and readding nws entry ([@MatthewFlamm] - [#34555]) ([nws docs]) (beta fix)
+- Remove reconnect logic from MQTT client. ([@emontnemery] - [#34556]) ([mqtt docs]) (beta fix)
+- Only subscribe when MQTT client is connected. ([@emontnemery] - [#34557]) ([mqtt docs]) (beta fix)
+- Limit clone/view stats to repos with push access ([@ludeeus] - [#34575]) ([github docs]) (beta fix)
+- Powerwall sensor add is_active, round state attributes and change thresholding for charging status sensor ([@jrester] - [#34582]) ([powerwall docs]) (beta fix)
+- Remove old style translations from Atag ([@frenck] - [#34585]) ([atag docs]) (beta fix)
+- Remember homekit aids for entities without a unique id ([@bdraco] - [#34587]) ([homekit docs]) (beta fix)
+- Fix Garmin Connect i/o in event loop ([@frenck] - [#34598]) ([garmin_connect docs]) (beta fix)
+- Restore Expected Behavior of Sonarr Upcoming Sensor ([@ctalkington] - [#34408]) ([sonarr docs]) (beta fix)
+- Fix UVC doing I/O in event loop ([@balloob] - [#34610]) ([uvc docs]) (beta fix)
+- Restore ability to overwrite homekit max temp bound ([@bdraco] - [#34612]) ([homekit docs]) (beta fix)
+- Fix BloomSky KeyError: 'monitored_conditions' ([@frenck] - [#34613]) ([bloomsky docs]) (beta fix)
+- Delay sync for Google and limit updates to relevant info ([@balloob] - [#34622]) ([cloud docs]) (beta fix)
+- Handle synology_dsm discovery broadcasting on multiple ip addresses ([@bdraco] - [#34623]) ([synology_dsm docs]) (beta fix)
+- Updated frontend to 20200424.0 ([@bramkragten] - [#34645]) ([frontend docs]) (beta fix)
+- Fix identifying Plex schema when used in packages ([@balloob] - [#34651]) (beta fix)
+- Add Home Assistant Started event ([@balloob] - [#34657]) ([automation docs]) ([cloud docs]) (beta fix)
+- Update ZHA dependency ([@Adminiuga] - [#34661]) ([zha docs]) (beta fix)
+- Log config flow errors ([@Quentame] - [#34665]) ([synology_dsm docs]) (beta fix)
+- Fix fritzbox integration errors ([@escoand] - [#34639]) ([fritzbox docs]) (beta fix)
+- Add retry at startup ([@ludeeus] - [#34656]) ([webostv docs]) (beta fix)
+- Fix zero value state rendering sensor unavailable ([@cgtobi] - [#34694]) ([netatmo docs]) (beta fix)
+- Fix Synology DSM translation ([@Quentame] - [#34696]) ([synology_dsm docs]) (beta fix)
+- Add frontend version WS command ([@balloob] - [#34701]) ([frontend docs]) (beta fix)
+- Fix fritzbox errors again ([@escoand] - [#34710]) ([fritzbox docs]) (beta fix)
+- Bump python-synology to 0.7.1 ([@Quentame] - [#34728]) ([synology_dsm docs]) (beta fix)
+- Updated frontend to 20200427.0 ([@bramkragten] - [#34766]) ([frontend docs]) (beta fix)
+- Fix atag timezone bug ([@MatsNl] - [#34686]) ([atag docs]) (beta fix)
+- Add unique_id to fritzbox ([@escoand] - [#34716]) ([fritzbox docs]) (beta fix)
+- Disable upnp SSDP discovery ([@balloob] - [#34756]) ([upnp docs]) (beta fix)
+- Remove legacy discovery for directv ([@ctalkington] - [#34793]) ([discovery docs]) (beta fix)
+- Remove legacy discovery for roku ([@ctalkington] - [#34794]) ([discovery docs]) (beta fix)
+- Handle more fritzbox edge cases ([@escoand] - [#34802]) ([fritzbox docs]) (beta fix)
+- UniFi - Add a second roaming event ([@Kane610] - [#34819]) ([unifi docs]) (beta fix)
+- Fix sync call in async context generic_thermostat ([@frenck] - [#34822]) ([generic_thermostat docs]) (beta fix)
+- Fix async call in sync context in steam_online ([@frenck] - [#34823]) ([steam_online docs]) (beta fix)
+- Fix meteoalarm exception handling with instance of KeyError ([@frenck] - [#34828]) (beta fix)
+- Bump python-synology to 0.7.2 ([@Quentame] - [#34830]) ([synology_dsm docs]) (beta fix)
+- Updated frontend to 20200427.1 ([@bramkragten] - [#34831]) ([frontend docs]) (beta fix)
+- Fix Islamic prayer times naming ([@engrbm87] - [#34784]) ([islamic_prayer_times docs]) (beta fix)
+- Bump python-synology to 0.7.3 ([@Quentame] - [#34847]) ([synology_dsm docs]) (beta fix)
+
+
+
+[#27704]: https://github.com/home-assistant/core/pull/27704
+[#28845]: https://github.com/home-assistant/core/pull/28845
+[#28847]: https://github.com/home-assistant/core/pull/28847
+[#29005]: https://github.com/home-assistant/core/pull/29005
+[#29880]: https://github.com/home-assistant/core/pull/29880
+[#30441]: https://github.com/home-assistant/core/pull/30441
+[#30452]: https://github.com/home-assistant/core/pull/30452
+[#30935]: https://github.com/home-assistant/core/pull/30935
+[#30972]: https://github.com/home-assistant/core/pull/30972
+[#31240]: https://github.com/home-assistant/core/pull/31240
+[#31292]: https://github.com/home-assistant/core/pull/31292
+[#31398]: https://github.com/home-assistant/core/pull/31398
+[#31590]: https://github.com/home-assistant/core/pull/31590
+[#31623]: https://github.com/home-assistant/core/pull/31623
+[#31646]: https://github.com/home-assistant/core/pull/31646
+[#31665]: https://github.com/home-assistant/core/pull/31665
+[#31729]: https://github.com/home-assistant/core/pull/31729
+[#32126]: https://github.com/home-assistant/core/pull/32126
+[#32361]: https://github.com/home-assistant/core/pull/32361
+[#32408]: https://github.com/home-assistant/core/pull/32408
+[#32411]: https://github.com/home-assistant/core/pull/32411
+[#32481]: https://github.com/home-assistant/core/pull/32481
+[#32523]: https://github.com/home-assistant/core/pull/32523
+[#32541]: https://github.com/home-assistant/core/pull/32541
+[#32594]: https://github.com/home-assistant/core/pull/32594
+[#32672]: https://github.com/home-assistant/core/pull/32672
+[#32704]: https://github.com/home-assistant/core/pull/32704
+[#32781]: https://github.com/home-assistant/core/pull/32781
+[#32790]: https://github.com/home-assistant/core/pull/32790
+[#32817]: https://github.com/home-assistant/core/pull/32817
+[#32850]: https://github.com/home-assistant/core/pull/32850
+[#32858]: https://github.com/home-assistant/core/pull/32858
+[#32923]: https://github.com/home-assistant/core/pull/32923
+[#33008]: https://github.com/home-assistant/core/pull/33008
+[#33062]: https://github.com/home-assistant/core/pull/33062
+[#33067]: https://github.com/home-assistant/core/pull/33067
+[#33068]: https://github.com/home-assistant/core/pull/33068
+[#33082]: https://github.com/home-assistant/core/pull/33082
+[#33108]: https://github.com/home-assistant/core/pull/33108
+[#33109]: https://github.com/home-assistant/core/pull/33109
+[#33152]: https://github.com/home-assistant/core/pull/33152
+[#33200]: https://github.com/home-assistant/core/pull/33200
+[#33243]: https://github.com/home-assistant/core/pull/33243
+[#33300]: https://github.com/home-assistant/core/pull/33300
+[#33302]: https://github.com/home-assistant/core/pull/33302
+[#33304]: https://github.com/home-assistant/core/pull/33304
+[#33363]: https://github.com/home-assistant/core/pull/33363
+[#33400]: https://github.com/home-assistant/core/pull/33400
+[#33419]: https://github.com/home-assistant/core/pull/33419
+[#33421]: https://github.com/home-assistant/core/pull/33421
+[#33431]: https://github.com/home-assistant/core/pull/33431
+[#33432]: https://github.com/home-assistant/core/pull/33432
+[#33446]: https://github.com/home-assistant/core/pull/33446
+[#33456]: https://github.com/home-assistant/core/pull/33456
+[#33478]: https://github.com/home-assistant/core/pull/33478
+[#33483]: https://github.com/home-assistant/core/pull/33483
+[#33484]: https://github.com/home-assistant/core/pull/33484
+[#33498]: https://github.com/home-assistant/core/pull/33498
+[#33506]: https://github.com/home-assistant/core/pull/33506
+[#33508]: https://github.com/home-assistant/core/pull/33508
+[#33510]: https://github.com/home-assistant/core/pull/33510
+[#33513]: https://github.com/home-assistant/core/pull/33513
+[#33519]: https://github.com/home-assistant/core/pull/33519
+[#33529]: https://github.com/home-assistant/core/pull/33529
+[#33533]: https://github.com/home-assistant/core/pull/33533
+[#33536]: https://github.com/home-assistant/core/pull/33536
+[#33547]: https://github.com/home-assistant/core/pull/33547
+[#33549]: https://github.com/home-assistant/core/pull/33549
+[#33550]: https://github.com/home-assistant/core/pull/33550
+[#33553]: https://github.com/home-assistant/core/pull/33553
+[#33555]: https://github.com/home-assistant/core/pull/33555
+[#33567]: https://github.com/home-assistant/core/pull/33567
+[#33571]: https://github.com/home-assistant/core/pull/33571
+[#33580]: https://github.com/home-assistant/core/pull/33580
+[#33581]: https://github.com/home-assistant/core/pull/33581
+[#33583]: https://github.com/home-assistant/core/pull/33583
+[#33584]: https://github.com/home-assistant/core/pull/33584
+[#33588]: https://github.com/home-assistant/core/pull/33588
+[#33590]: https://github.com/home-assistant/core/pull/33590
+[#33591]: https://github.com/home-assistant/core/pull/33591
+[#33592]: https://github.com/home-assistant/core/pull/33592
+[#33593]: https://github.com/home-assistant/core/pull/33593
+[#33595]: https://github.com/home-assistant/core/pull/33595
+[#33596]: https://github.com/home-assistant/core/pull/33596
+[#33597]: https://github.com/home-assistant/core/pull/33597
+[#33601]: https://github.com/home-assistant/core/pull/33601
+[#33604]: https://github.com/home-assistant/core/pull/33604
+[#33607]: https://github.com/home-assistant/core/pull/33607
+[#33612]: https://github.com/home-assistant/core/pull/33612
+[#33615]: https://github.com/home-assistant/core/pull/33615
+[#33616]: https://github.com/home-assistant/core/pull/33616
+[#33620]: https://github.com/home-assistant/core/pull/33620
+[#33624]: https://github.com/home-assistant/core/pull/33624
+[#33625]: https://github.com/home-assistant/core/pull/33625
+[#33627]: https://github.com/home-assistant/core/pull/33627
+[#33628]: https://github.com/home-assistant/core/pull/33628
+[#33629]: https://github.com/home-assistant/core/pull/33629
+[#33631]: https://github.com/home-assistant/core/pull/33631
+[#33633]: https://github.com/home-assistant/core/pull/33633
+[#33635]: https://github.com/home-assistant/core/pull/33635
+[#33636]: https://github.com/home-assistant/core/pull/33636
+[#33637]: https://github.com/home-assistant/core/pull/33637
+[#33638]: https://github.com/home-assistant/core/pull/33638
+[#33641]: https://github.com/home-assistant/core/pull/33641
+[#33643]: https://github.com/home-assistant/core/pull/33643
+[#33644]: https://github.com/home-assistant/core/pull/33644
+[#33645]: https://github.com/home-assistant/core/pull/33645
+[#33646]: https://github.com/home-assistant/core/pull/33646
+[#33650]: https://github.com/home-assistant/core/pull/33650
+[#33652]: https://github.com/home-assistant/core/pull/33652
+[#33653]: https://github.com/home-assistant/core/pull/33653
+[#33654]: https://github.com/home-assistant/core/pull/33654
+[#33655]: https://github.com/home-assistant/core/pull/33655
+[#33656]: https://github.com/home-assistant/core/pull/33656
+[#33657]: https://github.com/home-assistant/core/pull/33657
+[#33658]: https://github.com/home-assistant/core/pull/33658
+[#33659]: https://github.com/home-assistant/core/pull/33659
+[#33660]: https://github.com/home-assistant/core/pull/33660
+[#33661]: https://github.com/home-assistant/core/pull/33661
+[#33662]: https://github.com/home-assistant/core/pull/33662
+[#33663]: https://github.com/home-assistant/core/pull/33663
+[#33664]: https://github.com/home-assistant/core/pull/33664
+[#33665]: https://github.com/home-assistant/core/pull/33665
+[#33666]: https://github.com/home-assistant/core/pull/33666
+[#33667]: https://github.com/home-assistant/core/pull/33667
+[#33668]: https://github.com/home-assistant/core/pull/33668
+[#33669]: https://github.com/home-assistant/core/pull/33669
+[#33670]: https://github.com/home-assistant/core/pull/33670
+[#33671]: https://github.com/home-assistant/core/pull/33671
+[#33672]: https://github.com/home-assistant/core/pull/33672
+[#33673]: https://github.com/home-assistant/core/pull/33673
+[#33674]: https://github.com/home-assistant/core/pull/33674
+[#33676]: https://github.com/home-assistant/core/pull/33676
+[#33677]: https://github.com/home-assistant/core/pull/33677
+[#33679]: https://github.com/home-assistant/core/pull/33679
+[#33680]: https://github.com/home-assistant/core/pull/33680
+[#33682]: https://github.com/home-assistant/core/pull/33682
+[#33685]: https://github.com/home-assistant/core/pull/33685
+[#33688]: https://github.com/home-assistant/core/pull/33688
+[#33689]: https://github.com/home-assistant/core/pull/33689
+[#33692]: https://github.com/home-assistant/core/pull/33692
+[#33693]: https://github.com/home-assistant/core/pull/33693
+[#33695]: https://github.com/home-assistant/core/pull/33695
+[#33697]: https://github.com/home-assistant/core/pull/33697
+[#33698]: https://github.com/home-assistant/core/pull/33698
+[#33701]: https://github.com/home-assistant/core/pull/33701
+[#33702]: https://github.com/home-assistant/core/pull/33702
+[#33703]: https://github.com/home-assistant/core/pull/33703
+[#33704]: https://github.com/home-assistant/core/pull/33704
+[#33705]: https://github.com/home-assistant/core/pull/33705
+[#33706]: https://github.com/home-assistant/core/pull/33706
+[#33709]: https://github.com/home-assistant/core/pull/33709
+[#33710]: https://github.com/home-assistant/core/pull/33710
+[#33711]: https://github.com/home-assistant/core/pull/33711
+[#33714]: https://github.com/home-assistant/core/pull/33714
+[#33715]: https://github.com/home-assistant/core/pull/33715
+[#33716]: https://github.com/home-assistant/core/pull/33716
+[#33717]: https://github.com/home-assistant/core/pull/33717
+[#33718]: https://github.com/home-assistant/core/pull/33718
+[#33719]: https://github.com/home-assistant/core/pull/33719
+[#33720]: https://github.com/home-assistant/core/pull/33720
+[#33721]: https://github.com/home-assistant/core/pull/33721
+[#33724]: https://github.com/home-assistant/core/pull/33724
+[#33726]: https://github.com/home-assistant/core/pull/33726
+[#33727]: https://github.com/home-assistant/core/pull/33727
+[#33729]: https://github.com/home-assistant/core/pull/33729
+[#33732]: https://github.com/home-assistant/core/pull/33732
+[#33733]: https://github.com/home-assistant/core/pull/33733
+[#33734]: https://github.com/home-assistant/core/pull/33734
+[#33735]: https://github.com/home-assistant/core/pull/33735
+[#33739]: https://github.com/home-assistant/core/pull/33739
+[#33742]: https://github.com/home-assistant/core/pull/33742
+[#33743]: https://github.com/home-assistant/core/pull/33743
+[#33745]: https://github.com/home-assistant/core/pull/33745
+[#33749]: https://github.com/home-assistant/core/pull/33749
+[#33750]: https://github.com/home-assistant/core/pull/33750
+[#33752]: https://github.com/home-assistant/core/pull/33752
+[#33757]: https://github.com/home-assistant/core/pull/33757
+[#33759]: https://github.com/home-assistant/core/pull/33759
+[#33763]: https://github.com/home-assistant/core/pull/33763
+[#33766]: https://github.com/home-assistant/core/pull/33766
+[#33774]: https://github.com/home-assistant/core/pull/33774
+[#33775]: https://github.com/home-assistant/core/pull/33775
+[#33776]: https://github.com/home-assistant/core/pull/33776
+[#33778]: https://github.com/home-assistant/core/pull/33778
+[#33781]: https://github.com/home-assistant/core/pull/33781
+[#33782]: https://github.com/home-assistant/core/pull/33782
+[#33783]: https://github.com/home-assistant/core/pull/33783
+[#33784]: https://github.com/home-assistant/core/pull/33784
+[#33789]: https://github.com/home-assistant/core/pull/33789
+[#33790]: https://github.com/home-assistant/core/pull/33790
+[#33791]: https://github.com/home-assistant/core/pull/33791
+[#33793]: https://github.com/home-assistant/core/pull/33793
+[#33794]: https://github.com/home-assistant/core/pull/33794
+[#33795]: https://github.com/home-assistant/core/pull/33795
+[#33797]: https://github.com/home-assistant/core/pull/33797
+[#33798]: https://github.com/home-assistant/core/pull/33798
+[#33802]: https://github.com/home-assistant/core/pull/33802
+[#33803]: https://github.com/home-assistant/core/pull/33803
+[#33804]: https://github.com/home-assistant/core/pull/33804
+[#33809]: https://github.com/home-assistant/core/pull/33809
+[#33810]: https://github.com/home-assistant/core/pull/33810
+[#33811]: https://github.com/home-assistant/core/pull/33811
+[#33817]: https://github.com/home-assistant/core/pull/33817
+[#33828]: https://github.com/home-assistant/core/pull/33828
+[#33829]: https://github.com/home-assistant/core/pull/33829
+[#33831]: https://github.com/home-assistant/core/pull/33831
+[#33832]: https://github.com/home-assistant/core/pull/33832
+[#33835]: https://github.com/home-assistant/core/pull/33835
+[#33838]: https://github.com/home-assistant/core/pull/33838
+[#33839]: https://github.com/home-assistant/core/pull/33839
+[#33842]: https://github.com/home-assistant/core/pull/33842
+[#33845]: https://github.com/home-assistant/core/pull/33845
+[#33850]: https://github.com/home-assistant/core/pull/33850
+[#33855]: https://github.com/home-assistant/core/pull/33855
+[#33884]: https://github.com/home-assistant/core/pull/33884
+[#33901]: https://github.com/home-assistant/core/pull/33901
+[#33911]: https://github.com/home-assistant/core/pull/33911
+[#33922]: https://github.com/home-assistant/core/pull/33922
+[#33926]: https://github.com/home-assistant/core/pull/33926
+[#33930]: https://github.com/home-assistant/core/pull/33930
+[#33931]: https://github.com/home-assistant/core/pull/33931
+[#33933]: https://github.com/home-assistant/core/pull/33933
+[#33937]: https://github.com/home-assistant/core/pull/33937
+[#33938]: https://github.com/home-assistant/core/pull/33938
+[#33942]: https://github.com/home-assistant/core/pull/33942
+[#33951]: https://github.com/home-assistant/core/pull/33951
+[#33959]: https://github.com/home-assistant/core/pull/33959
+[#33960]: https://github.com/home-assistant/core/pull/33960
+[#33962]: https://github.com/home-assistant/core/pull/33962
+[#33963]: https://github.com/home-assistant/core/pull/33963
+[#33969]: https://github.com/home-assistant/core/pull/33969
+[#33974]: https://github.com/home-assistant/core/pull/33974
+[#33976]: https://github.com/home-assistant/core/pull/33976
+[#33978]: https://github.com/home-assistant/core/pull/33978
+[#33982]: https://github.com/home-assistant/core/pull/33982
+[#33983]: https://github.com/home-assistant/core/pull/33983
+[#33984]: https://github.com/home-assistant/core/pull/33984
+[#33986]: https://github.com/home-assistant/core/pull/33986
+[#33992]: https://github.com/home-assistant/core/pull/33992
+[#33993]: https://github.com/home-assistant/core/pull/33993
+[#33994]: https://github.com/home-assistant/core/pull/33994
+[#33996]: https://github.com/home-assistant/core/pull/33996
+[#33997]: https://github.com/home-assistant/core/pull/33997
+[#33999]: https://github.com/home-assistant/core/pull/33999
+[#34002]: https://github.com/home-assistant/core/pull/34002
+[#34003]: https://github.com/home-assistant/core/pull/34003
+[#34006]: https://github.com/home-assistant/core/pull/34006
+[#34007]: https://github.com/home-assistant/core/pull/34007
+[#34008]: https://github.com/home-assistant/core/pull/34008
+[#34009]: https://github.com/home-assistant/core/pull/34009
+[#34011]: https://github.com/home-assistant/core/pull/34011
+[#34012]: https://github.com/home-assistant/core/pull/34012
+[#34013]: https://github.com/home-assistant/core/pull/34013
+[#34014]: https://github.com/home-assistant/core/pull/34014
+[#34022]: https://github.com/home-assistant/core/pull/34022
+[#34024]: https://github.com/home-assistant/core/pull/34024
+[#34025]: https://github.com/home-assistant/core/pull/34025
+[#34026]: https://github.com/home-assistant/core/pull/34026
+[#34027]: https://github.com/home-assistant/core/pull/34027
+[#34034]: https://github.com/home-assistant/core/pull/34034
+[#34040]: https://github.com/home-assistant/core/pull/34040
+[#34049]: https://github.com/home-assistant/core/pull/34049
+[#34050]: https://github.com/home-assistant/core/pull/34050
+[#34052]: https://github.com/home-assistant/core/pull/34052
+[#34054]: https://github.com/home-assistant/core/pull/34054
+[#34055]: https://github.com/home-assistant/core/pull/34055
+[#34058]: https://github.com/home-assistant/core/pull/34058
+[#34066]: https://github.com/home-assistant/core/pull/34066
+[#34067]: https://github.com/home-assistant/core/pull/34067
+[#34069]: https://github.com/home-assistant/core/pull/34069
+[#34071]: https://github.com/home-assistant/core/pull/34071
+[#34072]: https://github.com/home-assistant/core/pull/34072
+[#34073]: https://github.com/home-assistant/core/pull/34073
+[#34074]: https://github.com/home-assistant/core/pull/34074
+[#34077]: https://github.com/home-assistant/core/pull/34077
+[#34080]: https://github.com/home-assistant/core/pull/34080
+[#34081]: https://github.com/home-assistant/core/pull/34081
+[#34082]: https://github.com/home-assistant/core/pull/34082
+[#34084]: https://github.com/home-assistant/core/pull/34084
+[#34095]: https://github.com/home-assistant/core/pull/34095
+[#34097]: https://github.com/home-assistant/core/pull/34097
+[#34101]: https://github.com/home-assistant/core/pull/34101
+[#34106]: https://github.com/home-assistant/core/pull/34106
+[#34107]: https://github.com/home-assistant/core/pull/34107
+[#34110]: https://github.com/home-assistant/core/pull/34110
+[#34112]: https://github.com/home-assistant/core/pull/34112
+[#34113]: https://github.com/home-assistant/core/pull/34113
+[#34117]: https://github.com/home-assistant/core/pull/34117
+[#34118]: https://github.com/home-assistant/core/pull/34118
+[#34119]: https://github.com/home-assistant/core/pull/34119
+[#34124]: https://github.com/home-assistant/core/pull/34124
+[#34126]: https://github.com/home-assistant/core/pull/34126
+[#34131]: https://github.com/home-assistant/core/pull/34131
+[#34137]: https://github.com/home-assistant/core/pull/34137
+[#34139]: https://github.com/home-assistant/core/pull/34139
+[#34144]: https://github.com/home-assistant/core/pull/34144
+[#34147]: https://github.com/home-assistant/core/pull/34147
+[#34151]: https://github.com/home-assistant/core/pull/34151
+[#34155]: https://github.com/home-assistant/core/pull/34155
+[#34163]: https://github.com/home-assistant/core/pull/34163
+[#34164]: https://github.com/home-assistant/core/pull/34164
+[#34166]: https://github.com/home-assistant/core/pull/34166
+[#34174]: https://github.com/home-assistant/core/pull/34174
+[#34175]: https://github.com/home-assistant/core/pull/34175
+[#34177]: https://github.com/home-assistant/core/pull/34177
+[#34181]: https://github.com/home-assistant/core/pull/34181
+[#34183]: https://github.com/home-assistant/core/pull/34183
+[#34185]: https://github.com/home-assistant/core/pull/34185
+[#34186]: https://github.com/home-assistant/core/pull/34186
+[#34189]: https://github.com/home-assistant/core/pull/34189
+[#34190]: https://github.com/home-assistant/core/pull/34190
+[#34191]: https://github.com/home-assistant/core/pull/34191
+[#34193]: https://github.com/home-assistant/core/pull/34193
+[#34194]: https://github.com/home-assistant/core/pull/34194
+[#34195]: https://github.com/home-assistant/core/pull/34195
+[#34198]: https://github.com/home-assistant/core/pull/34198
+[#34201]: https://github.com/home-assistant/core/pull/34201
+[#34203]: https://github.com/home-assistant/core/pull/34203
+[#34204]: https://github.com/home-assistant/core/pull/34204
+[#34206]: https://github.com/home-assistant/core/pull/34206
+[#34208]: https://github.com/home-assistant/core/pull/34208
+[#34210]: https://github.com/home-assistant/core/pull/34210
+[#34212]: https://github.com/home-assistant/core/pull/34212
+[#34216]: https://github.com/home-assistant/core/pull/34216
+[#34223]: https://github.com/home-assistant/core/pull/34223
+[#34224]: https://github.com/home-assistant/core/pull/34224
+[#34228]: https://github.com/home-assistant/core/pull/34228
+[#34229]: https://github.com/home-assistant/core/pull/34229
+[#34230]: https://github.com/home-assistant/core/pull/34230
+[#34232]: https://github.com/home-assistant/core/pull/34232
+[#34235]: https://github.com/home-assistant/core/pull/34235
+[#34240]: https://github.com/home-assistant/core/pull/34240
+[#34245]: https://github.com/home-assistant/core/pull/34245
+[#34254]: https://github.com/home-assistant/core/pull/34254
+[#34261]: https://github.com/home-assistant/core/pull/34261
+[#34262]: https://github.com/home-assistant/core/pull/34262
+[#34263]: https://github.com/home-assistant/core/pull/34263
+[#34267]: https://github.com/home-assistant/core/pull/34267
+[#34272]: https://github.com/home-assistant/core/pull/34272
+[#34273]: https://github.com/home-assistant/core/pull/34273
+[#34277]: https://github.com/home-assistant/core/pull/34277
+[#34279]: https://github.com/home-assistant/core/pull/34279
+[#34281]: https://github.com/home-assistant/core/pull/34281
+[#34282]: https://github.com/home-assistant/core/pull/34282
+[#34283]: https://github.com/home-assistant/core/pull/34283
+[#34289]: https://github.com/home-assistant/core/pull/34289
+[#34291]: https://github.com/home-assistant/core/pull/34291
+[#34294]: https://github.com/home-assistant/core/pull/34294
+[#34306]: https://github.com/home-assistant/core/pull/34306
+[#34307]: https://github.com/home-assistant/core/pull/34307
+[#34309]: https://github.com/home-assistant/core/pull/34309
+[#34312]: https://github.com/home-assistant/core/pull/34312
+[#34314]: https://github.com/home-assistant/core/pull/34314
+[#34319]: https://github.com/home-assistant/core/pull/34319
+[#34320]: https://github.com/home-assistant/core/pull/34320
+[#34321]: https://github.com/home-assistant/core/pull/34321
+[#34324]: https://github.com/home-assistant/core/pull/34324
+[#34329]: https://github.com/home-assistant/core/pull/34329
+[#34333]: https://github.com/home-assistant/core/pull/34333
+[#34334]: https://github.com/home-assistant/core/pull/34334
+[#34337]: https://github.com/home-assistant/core/pull/34337
+[#34340]: https://github.com/home-assistant/core/pull/34340
+[#34341]: https://github.com/home-assistant/core/pull/34341
+[#34343]: https://github.com/home-assistant/core/pull/34343
+[#34344]: https://github.com/home-assistant/core/pull/34344
+[#34347]: https://github.com/home-assistant/core/pull/34347
+[#34348]: https://github.com/home-assistant/core/pull/34348
+[#34349]: https://github.com/home-assistant/core/pull/34349
+[#34351]: https://github.com/home-assistant/core/pull/34351
+[#34355]: https://github.com/home-assistant/core/pull/34355
+[#34356]: https://github.com/home-assistant/core/pull/34356
+[#34358]: https://github.com/home-assistant/core/pull/34358
+[#34359]: https://github.com/home-assistant/core/pull/34359
+[#34367]: https://github.com/home-assistant/core/pull/34367
+[#34369]: https://github.com/home-assistant/core/pull/34369
+[#34372]: https://github.com/home-assistant/core/pull/34372
+[#34376]: https://github.com/home-assistant/core/pull/34376
+[#34378]: https://github.com/home-assistant/core/pull/34378
+[#34380]: https://github.com/home-assistant/core/pull/34380
+[#34382]: https://github.com/home-assistant/core/pull/34382
+[#34386]: https://github.com/home-assistant/core/pull/34386
+[#34388]: https://github.com/home-assistant/core/pull/34388
+[#34395]: https://github.com/home-assistant/core/pull/34395
+[#34399]: https://github.com/home-assistant/core/pull/34399
+[#34400]: https://github.com/home-assistant/core/pull/34400
+[#34403]: https://github.com/home-assistant/core/pull/34403
+[#34404]: https://github.com/home-assistant/core/pull/34404
+[#34407]: https://github.com/home-assistant/core/pull/34407
+[#34408]: https://github.com/home-assistant/core/pull/34408
+[#34409]: https://github.com/home-assistant/core/pull/34409
+[#34410]: https://github.com/home-assistant/core/pull/34410
+[#34412]: https://github.com/home-assistant/core/pull/34412
+[#34417]: https://github.com/home-assistant/core/pull/34417
+[#34428]: https://github.com/home-assistant/core/pull/34428
+[#34429]: https://github.com/home-assistant/core/pull/34429
+[#34431]: https://github.com/home-assistant/core/pull/34431
+[#34434]: https://github.com/home-assistant/core/pull/34434
+[#34440]: https://github.com/home-assistant/core/pull/34440
+[#34441]: https://github.com/home-assistant/core/pull/34441
+[#34442]: https://github.com/home-assistant/core/pull/34442
+[#34443]: https://github.com/home-assistant/core/pull/34443
+[#34449]: https://github.com/home-assistant/core/pull/34449
+[#34451]: https://github.com/home-assistant/core/pull/34451
+[#34454]: https://github.com/home-assistant/core/pull/34454
+[#34456]: https://github.com/home-assistant/core/pull/34456
+[#34463]: https://github.com/home-assistant/core/pull/34463
+[#34466]: https://github.com/home-assistant/core/pull/34466
+[#34471]: https://github.com/home-assistant/core/pull/34471
+[#34472]: https://github.com/home-assistant/core/pull/34472
+[#34473]: https://github.com/home-assistant/core/pull/34473
+[#34474]: https://github.com/home-assistant/core/pull/34474
+[#34475]: https://github.com/home-assistant/core/pull/34475
+[#34478]: https://github.com/home-assistant/core/pull/34478
+[#34479]: https://github.com/home-assistant/core/pull/34479
+[#34480]: https://github.com/home-assistant/core/pull/34480
+[#34485]: https://github.com/home-assistant/core/pull/34485
+[#34488]: https://github.com/home-assistant/core/pull/34488
+[#34489]: https://github.com/home-assistant/core/pull/34489
+[#34493]: https://github.com/home-assistant/core/pull/34493
+[#34494]: https://github.com/home-assistant/core/pull/34494
+[#34495]: https://github.com/home-assistant/core/pull/34495
+[#34496]: https://github.com/home-assistant/core/pull/34496
+[#34497]: https://github.com/home-assistant/core/pull/34497
+[#34498]: https://github.com/home-assistant/core/pull/34498
+[#34499]: https://github.com/home-assistant/core/pull/34499
+[#34500]: https://github.com/home-assistant/core/pull/34500
+[#34501]: https://github.com/home-assistant/core/pull/34501
+[#34504]: https://github.com/home-assistant/core/pull/34504
+[#34508]: https://github.com/home-assistant/core/pull/34508
+[#34509]: https://github.com/home-assistant/core/pull/34509
+[#34510]: https://github.com/home-assistant/core/pull/34510
+[#34511]: https://github.com/home-assistant/core/pull/34511
+[#34512]: https://github.com/home-assistant/core/pull/34512
+[#34514]: https://github.com/home-assistant/core/pull/34514
+[#34516]: https://github.com/home-assistant/core/pull/34516
+[#34519]: https://github.com/home-assistant/core/pull/34519
+[#34524]: https://github.com/home-assistant/core/pull/34524
+[#34532]: https://github.com/home-assistant/core/pull/34532
+[#34534]: https://github.com/home-assistant/core/pull/34534
+[#34540]: https://github.com/home-assistant/core/pull/34540
+[#34542]: https://github.com/home-assistant/core/pull/34542
+[#34545]: https://github.com/home-assistant/core/pull/34545
+[#34546]: https://github.com/home-assistant/core/pull/34546
+[#34552]: https://github.com/home-assistant/core/pull/34552
+[#34555]: https://github.com/home-assistant/core/pull/34555
+[#34556]: https://github.com/home-assistant/core/pull/34556
+[#34557]: https://github.com/home-assistant/core/pull/34557
+[#34575]: https://github.com/home-assistant/core/pull/34575
+[#34582]: https://github.com/home-assistant/core/pull/34582
+[#34585]: https://github.com/home-assistant/core/pull/34585
+[#34587]: https://github.com/home-assistant/core/pull/34587
+[#34598]: https://github.com/home-assistant/core/pull/34598
+[#34610]: https://github.com/home-assistant/core/pull/34610
+[#34612]: https://github.com/home-assistant/core/pull/34612
+[#34613]: https://github.com/home-assistant/core/pull/34613
+[#34622]: https://github.com/home-assistant/core/pull/34622
+[#34623]: https://github.com/home-assistant/core/pull/34623
+[#34639]: https://github.com/home-assistant/core/pull/34639
+[#34645]: https://github.com/home-assistant/core/pull/34645
+[#34651]: https://github.com/home-assistant/core/pull/34651
+[#34656]: https://github.com/home-assistant/core/pull/34656
+[#34657]: https://github.com/home-assistant/core/pull/34657
+[#34661]: https://github.com/home-assistant/core/pull/34661
+[#34665]: https://github.com/home-assistant/core/pull/34665
+[#34686]: https://github.com/home-assistant/core/pull/34686
+[#34694]: https://github.com/home-assistant/core/pull/34694
+[#34696]: https://github.com/home-assistant/core/pull/34696
+[#34701]: https://github.com/home-assistant/core/pull/34701
+[#34710]: https://github.com/home-assistant/core/pull/34710
+[#34716]: https://github.com/home-assistant/core/pull/34716
+[#34728]: https://github.com/home-assistant/core/pull/34728
+[#34756]: https://github.com/home-assistant/core/pull/34756
+[#34766]: https://github.com/home-assistant/core/pull/34766
+[#34784]: https://github.com/home-assistant/core/pull/34784
+[#34793]: https://github.com/home-assistant/core/pull/34793
+[#34794]: https://github.com/home-assistant/core/pull/34794
+[#34802]: https://github.com/home-assistant/core/pull/34802
+[#34819]: https://github.com/home-assistant/core/pull/34819
+[#34822]: https://github.com/home-assistant/core/pull/34822
+[#34823]: https://github.com/home-assistant/core/pull/34823
+[#34828]: https://github.com/home-assistant/core/pull/34828
+[#34830]: https://github.com/home-assistant/core/pull/34830
+[#34831]: https://github.com/home-assistant/core/pull/34831
+[#34847]: https://github.com/home-assistant/core/pull/34847
+[@Adminiuga]: https://github.com/Adminiuga
+[@BarrettLowe]: https://github.com/BarrettLowe
+[@ColinRobbins]: https://github.com/ColinRobbins
+[@Cyr-ius]: https://github.com/Cyr-ius
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@Ernst79]: https://github.com/Ernst79
+[@FlavorFx]: https://github.com/FlavorFx
+[@FredericMa]: https://github.com/FredericMa
+[@Jc2k]: https://github.com/Jc2k
+[@JeffLIrion]: https://github.com/JeffLIrion
+[@Kane610]: https://github.com/Kane610
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@MatsNl]: https://github.com/MatsNl
+[@MatthewFlamm]: https://github.com/MatthewFlamm
+[@Nossnevs]: https://github.com/Nossnevs
+[@Quentame]: https://github.com/Quentame
+[@StevenLooman]: https://github.com/StevenLooman
+[@SukramJ]: https://github.com/SukramJ
+[@YarmoM]: https://github.com/YarmoM
+[@aerialls]: https://github.com/aerialls
+[@akasma74]: https://github.com/akasma74
+[@alandtse]: https://github.com/alandtse
+[@alistairg]: https://github.com/alistairg
+[@amelchio]: https://github.com/amelchio
+[@andrewsayre]: https://github.com/andrewsayre
+[@antonverburg]: https://github.com/antonverburg
+[@austinmroczek]: https://github.com/austinmroczek
+[@azogue]: https://github.com/azogue
+[@bachya]: https://github.com/bachya
+[@balloob]: https://github.com/balloob
+[@basnijholt]: https://github.com/basnijholt
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bqstony]: https://github.com/bqstony
+[@bramkragten]: https://github.com/bramkragten
+[@brg468]: https://github.com/brg468
+[@cgtobi]: https://github.com/cgtobi
+[@chmielowiec]: https://github.com/chmielowiec
+[@chrisrosset]: https://github.com/chrisrosset
+[@clau-bucur]: https://github.com/clau-bucur
+[@ctalkington]: https://github.com/ctalkington
+[@danielperna84]: https://github.com/danielperna84
+[@dannerph]: https://github.com/dannerph
+[@dcnielsen90]: https://github.com/dcnielsen90
+[@dfournie]: https://github.com/dfournie
+[@dmulcahey]: https://github.com/dmulcahey
+[@dmwyatt]: https://github.com/dmwyatt
+[@dprus]: https://github.com/dprus
+[@elahd]: https://github.com/elahd
+[@emontnemery]: https://github.com/emontnemery
+[@engrbm87]: https://github.com/engrbm87
+[@escoand]: https://github.com/escoand
+[@fabaff]: https://github.com/fabaff
+[@fbradyirl]: https://github.com/fbradyirl
+[@felipediel]: https://github.com/felipediel
+[@foxel]: https://github.com/foxel
+[@fredrike]: https://github.com/fredrike
+[@frenck]: https://github.com/frenck
+[@fronzbot]: https://github.com/fronzbot
+[@gerard33]: https://github.com/gerard33
+[@gladhorn]: https://github.com/gladhorn
+[@hobbe]: https://github.com/hobbe
+[@i00]: https://github.com/i00
+[@inverse]: https://github.com/inverse
+[@jason0x43]: https://github.com/jason0x43
+[@jjlawren]: https://github.com/jjlawren
+[@jlmcgehee21]: https://github.com/jlmcgehee21
+[@jnimmo]: https://github.com/jnimmo
+[@joogps]: https://github.com/joogps
+[@jrester]: https://github.com/jrester
+[@kennedyshead]: https://github.com/kennedyshead
+[@kit-klein]: https://github.com/kit-klein
+[@leppa]: https://github.com/leppa
+[@leroyshirto]: https://github.com/leroyshirto
+[@lewei50]: https://github.com/lewei50
+[@ludeeus]: https://github.com/ludeeus
+[@lufton]: https://github.com/lufton
+[@marecabo]: https://github.com/marecabo
+[@mezz64]: https://github.com/mezz64
+[@misialq]: https://github.com/misialq
+[@mvn23]: https://github.com/mvn23
+[@oblogic7]: https://github.com/oblogic7
+[@ocalvo]: https://github.com/ocalvo
+[@pascallj]: https://github.com/pascallj
+[@pbeckcom]: https://github.com/pbeckcom
+[@pnbruckner]: https://github.com/pnbruckner
+[@prairieapps]: https://github.com/prairieapps
+[@presslab-us]: https://github.com/presslab-us
+[@pvizeli]: https://github.com/pvizeli
+[@quinnhosler]: https://github.com/quinnhosler
+[@raman325]: https://github.com/raman325
+[@renemarc]: https://github.com/renemarc
+[@rytilahti]: https://github.com/rytilahti
+[@scop]: https://github.com/scop
+[@sdague]: https://github.com/sdague
+[@shenxn]: https://github.com/shenxn
+[@shred86]: https://github.com/shred86
+[@springstan]: https://github.com/springstan
+[@tchellomello]: https://github.com/tchellomello
+[@thibmaek]: https://github.com/thibmaek
+[@timmo001]: https://github.com/timmo001
+[@tirkarthi]: https://github.com/tirkarthi
+[@tubalainen]: https://github.com/tubalainen
+[@turbokongen]: https://github.com/turbokongen
+[@ualex73]: https://github.com/ualex73
+[@vanbalken]: https://github.com/vanbalken
+[@vangorra]: https://github.com/vangorra
+[@vermium-sifell]: https://github.com/vermium-sifell
+[@vilppuvuorinen]: https://github.com/vilppuvuorinen
+[@yozik04]: https://github.com/yozik04
+[@zhulik]: https://github.com/zhulik
+[@ziv1234]: https://github.com/ziv1234
+[abode docs]: /integrations/abode/
+[acer_projector docs]: /integrations/acer_projector/
+[actiontec docs]: /integrations/actiontec/
+[ads docs]: /integrations/ads/
+[air_quality docs]: /integrations/air_quality/
+[airly docs]: /integrations/airly/
+[airvisual docs]: /integrations/airvisual/
+[aladdin_connect docs]: /integrations/aladdin_connect/
+[alarmdecoder docs]: /integrations/alarmdecoder/
+[alert docs]: /integrations/alert/
+[alexa docs]: /integrations/alexa/
+[alpha_vantage docs]: /integrations/alpha_vantage/
+[amazon_polly docs]: /integrations/amazon_polly/
+[ambient_station docs]: /integrations/ambient_station/
+[androidtv docs]: /integrations/androidtv/
+[apcupsd docs]: /integrations/apcupsd/
+[aprs docs]: /integrations/aprs/
+[aquostv docs]: /integrations/aquostv/
+[arduino docs]: /integrations/arduino/
+[arris_tg2492lg docs]: /integrations/arris_tg2492lg/
+[asuswrt docs]: /integrations/asuswrt/
+[atag docs]: /integrations/atag/
+[august docs]: /integrations/august/
+[automatic docs]: /integrations/automatic/
+[automation docs]: /integrations/automation/
+[axis docs]: /integrations/axis/
+[bayesian docs]: /integrations/bayesian/
+[binary_sensor docs]: /integrations/binary_sensor/
+[blink docs]: /integrations/blink/
+[bloomsky docs]: /integrations/bloomsky/
+[bmw_connected_drive docs]: /integrations/bmw_connected_drive/
+[bom docs]: /integrations/bom/
+[braviatv docs]: /integrations/braviatv/
+[broadlink docs]: /integrations/broadlink/
+[brother docs]: /integrations/brother/
+[bt_smarthub docs]: /integrations/bt_smarthub/
+[camera docs]: /integrations/camera/
+[cast docs]: /integrations/cast/
+[cloud docs]: /integrations/cloud/
+[command_line docs]: /integrations/command_line/
+[config docs]: /integrations/config/
+[currencylayer docs]: /integrations/currencylayer/
+[danfoss_air docs]: /integrations/danfoss_air/
+[darksky docs]: /integrations/darksky/
+[deconz docs]: /integrations/deconz/
+[demo docs]: /integrations/demo/
+[device_automation docs]: /integrations/device_automation/
+[device_sun_light_trigger docs]: /integrations/device_sun_light_trigger/
+[directv docs]: /integrations/directv/
+[discord docs]: /integrations/discord/
+[discovery docs]: /integrations/discovery/
+[doods docs]: /integrations/doods/
+[doorbird docs]: /integrations/doorbird/
+[dwd_weather_warnings docs]: /integrations/dwd_weather_warnings/
+[dynalite docs]: /integrations/dynalite/
+[dyson docs]: /integrations/dyson/
+[ebusd docs]: /integrations/ebusd/
+[ecobee docs]: /integrations/ecobee/
+[econet docs]: /integrations/econet/
+[eight_sleep docs]: /integrations/eight_sleep/
+[elkm1 docs]: /integrations/elkm1/
+[emulated_hue docs]: /integrations/emulated_hue/
+[fail2ban docs]: /integrations/fail2ban/
+[file docs]: /integrations/file/
+[filesize docs]: /integrations/filesize/
+[flume docs]: /integrations/flume/
+[flunearyou docs]: /integrations/flunearyou/
+[flux docs]: /integrations/flux/
+[folder docs]: /integrations/folder/
+[folder_watcher docs]: /integrations/folder_watcher/
+[fritzbox docs]: /integrations/fritzbox/
+[frontend docs]: /integrations/frontend/
+[garmin_connect docs]: /integrations/garmin_connect/
+[gdacs docs]: /integrations/gdacs/
+[generic_thermostat docs]: /integrations/generic_thermostat/
+[gios docs]: /integrations/gios/
+[github docs]: /integrations/github/
+[google docs]: /integrations/calendar.google/
+[google_assistant docs]: /integrations/google_assistant/
+[google_cloud docs]: /integrations/google_cloud/
+[google_pubsub docs]: /integrations/google_pubsub/
+[graphite docs]: /integrations/graphite/
+[griddy docs]: /integrations/griddy/
+[group docs]: /integrations/group/
+[harmony docs]: /integrations/harmony/
+[hikvision docs]: /integrations/hikvision/
+[homeassistant docs]: /integrations/homeassistant/
+[homekit docs]: /integrations/homekit/
+[homekit_controller docs]: /integrations/homekit_controller/
+[homematic docs]: /integrations/homematic/
+[homematicip_cloud docs]: /integrations/homematicip_cloud/
+[http docs]: /integrations/http/
+[huawei_lte docs]: /integrations/huawei_lte/
+[hue docs]: /integrations/hue/
+[iammeter docs]: /integrations/iammeter/
+[icloud docs]: /integrations/icloud/
+[insteon docs]: /integrations/insteon/
+[intesishome docs]: /integrations/intesishome/
+[ios docs]: /integrations/ios/
+[ipp docs]: /integrations/ipp/
+[iqvia docs]: /integrations/iqvia/
+[islamic_prayer_times docs]: /integrations/islamic_prayer_times/
+[isy994 docs]: /integrations/isy994/
+[joaoapps_join docs]: /integrations/joaoapps_join/
+[keba docs]: /integrations/keba/
+[kef docs]: /integrations/kef/
+[knx docs]: /integrations/knx/
+[konnected docs]: /integrations/konnected/
+[lannouncer docs]: /integrations/lannouncer/
+[lastfm docs]: /integrations/lastfm/
+[lcn docs]: /integrations/lcn/
+[lifx docs]: /integrations/lifx/
+[light docs]: /integrations/light/
+[lightwave docs]: /integrations/lightwave/
+[local_ip docs]: /integrations/local_ip/
+[lock docs]: /integrations/lock/
+[logbook docs]: /integrations/logbook/
+[luci docs]: /integrations/luci/
+[lutron docs]: /integrations/lutron/
+[mastodon docs]: /integrations/mastodon/
+[maxcube docs]: /integrations/maxcube/
+[media_player docs]: /integrations/media_player/
+[melcloud docs]: /integrations/melcloud/
+[melissa docs]: /integrations/melissa/
+[metoffice docs]: /integrations/metoffice/
+[miflora docs]: /integrations/miflora/
+[minecraft_server docs]: /integrations/minecraft_server/
+[mochad docs]: /integrations/mochad/
+[moon docs]: /integrations/moon/
+[mqtt docs]: /integrations/mqtt/
+[mychevy docs]: /integrations/mychevy/
+[myq docs]: /integrations/myq/
+[mysensors docs]: /integrations/mysensors/
+[mystrom docs]: /integrations/mystrom/
+[nad docs]: /integrations/nad/
+[nederlandse_spoorwegen docs]: /integrations/nederlandse_spoorwegen/
+[netatmo docs]: /integrations/netatmo/
+[nexia docs]: /integrations/nexia/
+[nissan_leaf docs]: /integrations/nissan_leaf/
+[nmap_tracker docs]: /integrations/nmap_tracker/
+[nmbs docs]: /integrations/nmbs/
+[notion docs]: /integrations/notion/
+[nut docs]: /integrations/nut/
+[nws docs]: /integrations/nws/
+[onboarding docs]: /integrations/onboarding/
+[onewire docs]: /integrations/onewire/
+[opencv docs]: /integrations/opencv/
+[openerz docs]: /integrations/openerz/
+[opentherm_gw docs]: /integrations/opentherm_gw/
+[openuv docs]: /integrations/openuv/
+[orangepi_gpio docs]: /integrations/orangepi_gpio/
+[panasonic_viera docs]: /integrations/panasonic_viera/
+[pi4ioe5v9xxxx docs]: /integrations/pi4ioe5v9xxxx/
+[plant docs]: /integrations/plant/
+[plex docs]: /integrations/plex/
+[powerwall docs]: /integrations/powerwall/
+[proximity docs]: /integrations/proximity/
+[proxy docs]: /integrations/proxy/
+[qrcode docs]: /integrations/qrcode/
+[qvr_pro docs]: /integrations/qvr_pro/
+[qwikswitch docs]: /integrations/qwikswitch/
+[rachio docs]: /integrations/rachio/
+[rainmachine docs]: /integrations/rainmachine/
+[recorder docs]: /integrations/recorder/
+[remember_the_milk docs]: /integrations/remember_the_milk/
+[rflink docs]: /integrations/rflink/
+[rfxtrx docs]: /integrations/rfxtrx/
+[roku docs]: /integrations/roku/
+[roomba docs]: /integrations/roomba/
+[samsungtv docs]: /integrations/samsungtv/
+[schluter docs]: /integrations/schluter/
+[scrape docs]: /integrations/scrape/
+[scsgate docs]: /integrations/scsgate/
+[season docs]: /integrations/season/
+[sendgrid docs]: /integrations/sendgrid/
+[sense docs]: /integrations/sense/
+[serial docs]: /integrations/serial/
+[seven_segments docs]: /integrations/seven_segments/
+[shell_command docs]: /integrations/shell_command/
+[shodan docs]: /integrations/shodan/
+[sighthound docs]: /integrations/sighthound/
+[simplisafe docs]: /integrations/simplisafe/
+[sleepiq docs]: /integrations/sleepiq/
+[slide docs]: /integrations/slide/
+[smartthings docs]: /integrations/smartthings/
+[sms docs]: /integrations/sms/
+[snapcast docs]: /integrations/snapcast/
+[sonarr docs]: /integrations/sonarr/
+[spc docs]: /integrations/spc/
+[spotify docs]: /integrations/spotify/
+[sql docs]: /integrations/sql/
+[steam_online docs]: /integrations/steam_online/
+[synology docs]: /integrations/synology/
+[synology_dsm docs]: /integrations/synology_dsm/
+[synology_srm docs]: /integrations/synology_srm/
+[synologydsm docs]: /integrations/synology_dsm/
+[tado docs]: /integrations/tado/
+[tahoma docs]: /integrations/tahoma/
+[tankerkoenig docs]: /integrations/tankerkoenig/
+[tcp docs]: /integrations/tcp/
+[tellduslive docs]: /integrations/tellduslive/
+[template docs]: /integrations/template/
+[tensorflow docs]: /integrations/tensorflow/
+[tesla docs]: /integrations/tesla/
+[thomson docs]: /integrations/thomson/
+[tibber docs]: /integrations/tibber/
+[timer docs]: /integrations/timer/
+[totalconnect docs]: /integrations/totalconnect/
+[tplink docs]: /integrations/tplink/
+[tradfri docs]: /integrations/tradfri/
+[transmission docs]: /integrations/transmission/
+[trend docs]: /integrations/trend/
+[tts docs]: /integrations/tts/
+[tuya docs]: /integrations/tuya/
+[twitter docs]: /integrations/twitter/
+[unifi docs]: /integrations/unifi/
+[unifi_direct docs]: /integrations/unifi_direct/
+[updater docs]: /integrations/updater/
+[upnp docs]: /integrations/upnp/
+[uscis docs]: /integrations/uscis/
+[uvc docs]: /integrations/uvc/
+[vera docs]: /integrations/vera/
+[version docs]: /integrations/version/
+[vizio docs]: /integrations/vizio/
+[volvooncall docs]: /integrations/volvooncall/
+[water_heater docs]: /integrations/water_heater/
+[webostv docs]: /integrations/webostv/
+[websocket_api docs]: /integrations/websocket_api/
+[wirelesstag docs]: /integrations/wirelesstag/
+[withings docs]: /integrations/withings/
+[workday docs]: /integrations/workday/
+[xiaomi_miio docs]: /integrations/xiaomi_miio/
+[zamg docs]: /integrations/zamg/
+[zeroconf docs]: /integrations/zeroconf/
+[zha docs]: /integrations/zha/
+[zigbee docs]: /integrations/zigbee/
+[zoneminder docs]: /integrations/zoneminder/
+[zwave docs]: /integrations/zwave/
diff --git a/source/_redirects b/source/_redirects
index d319c1f03b8..0462167d36d 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -585,7 +585,6 @@
/components/notify.nfandroidtv /integrations/nfandroidtv
/components/notify.prowl /integrations/prowl
/components/notify.pushbullet /integrations/pushbullet
-/components/notify.pushetta /integrations/pushetta
/components/notify.pushover /integrations/pushover
/components/notify.pushsafer /integrations/pushsafer
/components/notify.rocketchat /integrations/rocketchat
@@ -872,7 +871,7 @@
/components/sensor.swiss_hydrological_data /integrations/swiss_hydrological_data
/components/sensor.swiss_public_transport /integrations/swiss_public_transport
/components/sensor.syncthru /integrations/syncthru
-/components/sensor.synologydsm /integrations/synologydsm
+/components/sensor.synologydsm /integrations/synology_dsm
/components/sensor.systemmonitor /integrations/systemmonitor
/components/sensor.sytadin /integrations/sytadin
/components/sensor.tado /integrations/tado
@@ -928,7 +927,6 @@
/components/sensor.xbox_live /integrations/xbox_live
/components/sensor.xs1 /integrations/xs1#sensors
/components/sensor.yr /integrations/yr
-/components/sensor.yweather /integrations/yweather
/components/sensor.zabbix /integrations/zabbix#sensor
/components/sensor.zamg /integrations/zamg#sensor
/components/sensor.zestimate /integrations/zestimate
@@ -1078,7 +1076,6 @@
/components/weather.metoffice /integrations/metoffice
/components/weather.openweathermap /integrations/openweathermap#weather
/components/weather.smhi /integrations/smhi
-/components/weather.yweather /integrations/yweather
/components/weather.zamg /integrations/zamg#weather
/components/xiaomi /integrations/xiaomi_aqara
@@ -1695,7 +1692,6 @@
/components/pulseaudio_loopback /integrations/pulseaudio_loopback
/components/push /integrations/push
/components/pushbullet /integrations/pushbullet
-/components/pushetta /integrations/pushetta
/components/pushover /integrations/pushover
/components/pushsafer /integrations/pushsafer
/components/pvoutput /integrations/pvoutput
@@ -1865,7 +1861,7 @@
/components/synology /integrations/synology
/components/synology_chat /integrations/synology_chat
/components/synology_srm /integrations/synology_srm
-/components/synologydsm /integrations/synologydsm
+/components/synologydsm /integrations/synology_dsm
/components/syslog /integrations/syslog
/components/system_health /integrations/system_health
/components/system_log /integrations/system_log
@@ -2014,7 +2010,6 @@
/components/yessssms /integrations/yessssms
/components/yi /integrations/yi
/components/yr /integrations/yr
-/components/yweather /integrations/yweather
/components/zabbix /integrations/zabbix
/components/zamg /integrations/zamg
/components/zengge /integrations/zengge
@@ -2030,6 +2025,7 @@
# Breaking changes
/integrations/switch.pca /integrations/elv
+/integrations/synologydsm /integrations/synology_dsm
/integrations/telegram_chatbot /integrations/telegram_bot
# Moved documentation
diff --git a/source/images/blog/2020-04-0.109/components.png b/source/images/blog/2020-04-0.109/components.png
new file mode 100644
index 00000000000..587faac6b3f
Binary files /dev/null and b/source/images/blog/2020-04-0.109/components.png differ
diff --git a/source/images/blog/2020-04-0.109/integration-page.png b/source/images/blog/2020-04-0.109/integration-page.png
new file mode 100644
index 00000000000..21746e5747c
Binary files /dev/null and b/source/images/blog/2020-04-0.109/integration-page.png differ
diff --git a/source/images/blog/2020-04-0.109/io.png b/source/images/blog/2020-04-0.109/io.png
new file mode 100644
index 00000000000..dcc4a766f49
Binary files /dev/null and b/source/images/blog/2020-04-0.109/io.png differ
diff --git a/source/images/blog/2020-04-0.109/search.png b/source/images/blog/2020-04-0.109/search.png
new file mode 100644
index 00000000000..23953b6cf58
Binary files /dev/null and b/source/images/blog/2020-04-0.109/search.png differ
diff --git a/source/images/blog/2020-04-0.109/social.png b/source/images/blog/2020-04-0.109/social.png
new file mode 100644
index 00000000000..f262d7dce3a
Binary files /dev/null and b/source/images/blog/2020-04-0.109/social.png differ
diff --git a/source/images/blog/2020-04-0.109/weather-card.png b/source/images/blog/2020-04-0.109/weather-card.png
new file mode 100644
index 00000000000..5a69fb7a2da
Binary files /dev/null and b/source/images/blog/2020-04-0.109/weather-card.png differ
diff --git a/source/images/screenshots/homekit_pairing_example.png b/source/images/screenshots/homekit_pairing_example.png
new file mode 100644
index 00000000000..5f83a411a3e
Binary files /dev/null and b/source/images/screenshots/homekit_pairing_example.png differ
diff --git a/source/images/supported_brands/arris.jpg b/source/images/supported_brands/arris.jpg
new file mode 100644
index 00000000000..cf824e0a148
Binary files /dev/null and b/source/images/supported_brands/arris.jpg differ
diff --git a/source/images/supported_brands/diodes.png b/source/images/supported_brands/diodes.png
new file mode 100644
index 00000000000..2608e875de9
Binary files /dev/null and b/source/images/supported_brands/diodes.png differ
diff --git a/source/images/supported_brands/pushetta.png b/source/images/supported_brands/pushetta.png
deleted file mode 100644
index 3a1d46e8d47..00000000000
Binary files a/source/images/supported_brands/pushetta.png and /dev/null differ
diff --git a/source/images/supported_brands/yahooweather.png b/source/images/supported_brands/yahooweather.png
deleted file mode 100644
index 78da70926f0..00000000000
Binary files a/source/images/supported_brands/yahooweather.png and /dev/null differ