diff --git a/_config.yml b/_config.yml index 1ff688248a1..126c3c527f7 100644 --- a/_config.yml +++ b/_config.yml @@ -100,9 +100,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 103 -current_patch_version: 6 -date_released: 2020-01-06 +current_minor_version: 104 +current_patch_version: 0 +date_released: 2020-01-15 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_cookbook/automation_for_rainy_days.markdown b/source/_cookbook/automation_for_rainy_days.markdown index c6d2eaf785d..35f66c70948 100644 --- a/source/_cookbook/automation_for_rainy_days.markdown +++ b/source/_cookbook/automation_for_rainy_days.markdown @@ -17,7 +17,7 @@ automation: to: 'rain' condition: - condition: state - entity_id: group.all_devices + entity_id: all state: 'home' - condition: time after: '14:00' diff --git a/source/_cookbook/automation_sun.markdown b/source/_cookbook/automation_sun.markdown index 8add13a3c5d..615aaed79d1 100644 --- a/source/_cookbook/automation_sun.markdown +++ b/source/_cookbook/automation_sun.markdown @@ -14,7 +14,7 @@ automation: offset: "-00:45:00" condition: condition: state - entity_id: group.all_devices + entity_id: all state: home action: service: light.turn_on diff --git a/source/_cookbook/ifttt.manything.markdown b/source/_cookbook/ifttt.manything.markdown index ccc39bd9bfc..45a8161b666 100644 --- a/source/_cookbook/ifttt.manything.markdown +++ b/source/_cookbook/ifttt.manything.markdown @@ -21,7 +21,7 @@ automation: # if we leave the house during the day. trigger: - platform: state - entity_id: group.all_devices + entity_id: all to: 'not_home' condition: - platform: state @@ -36,7 +36,7 @@ automation: # when we get home unless it's nighttime. trigger: - platform: state - entity_id: group.all_devices + entity_id: all to: 'home' condition: - condition: state @@ -59,9 +59,9 @@ For ManyThing support, you need to set up an `on` and `off` event. You can use the developer tools to test your [Maker Service](https://ifttt.com/maker_webhooks) trigger. To do this, open the Home Assistant UI, open the sidebar, click on the first icon in the developer tools. This should get you to the 'Call Service' screen. Fill in the following values: -Field | Value ------ | ----- -domain | `ifttt` -service | `trigger` -Service Data | `{"event": "manything_on"}` +| Field | Value | +| ------------ | --------------------------- | +| domain | `ifttt` | +| service | `trigger` | +| Service Data | `{"event": "manything_on"}` | diff --git a/source/_docs/automation/examples.markdown b/source/_docs/automation/examples.markdown index 3b19efd458f..c27aeeb0286 100644 --- a/source/_docs/automation/examples.markdown +++ b/source/_docs/automation/examples.markdown @@ -20,13 +20,13 @@ automation: event: sunset offset: '-01:00:00' - platform: state - entity_id: group.all_devices + entity_id: all to: 'home' condition: # Prefix the first line of each condition configuration # with a '-'' to enter multiple - condition: state - entity_id: group.all_devices + entity_id: all state: 'home' - condition: time after: '16:00:00' @@ -40,7 +40,7 @@ automation: - alias: 'Rule 2 - Away Mode' trigger: platform: state - entity_id: group.all_devices + entity_id: all to: 'not_home' action: service: light.turn_off diff --git a/source/_docs/ecosystem/appdaemon/api.markdown b/source/_docs/ecosystem/appdaemon/api.markdown index a81aba672da..6a44dfd1d9c 100644 --- a/source/_docs/ecosystem/appdaemon/api.markdown +++ b/source/_docs/ecosystem/appdaemon/api.markdown @@ -1650,7 +1650,7 @@ for tracker in trackers: ### everyone_home() -A convenience function to determine if everyone is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. +A convenience function to determine if everyone is home. #### Synopsis @@ -1669,7 +1669,7 @@ if self.everyone_home(): ``` ### anyone_home() -A convenience function to determine if one or more person is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. +A convenience function to determine if one or more person is home. #### Synopsis @@ -1689,7 +1689,7 @@ if self.anyone_home(): ``` ### noone_home() -A convenience function to determine if no people are at home. Use this in preference to getting the state of group.all_devices() as it avoids a race condition when using state change callbacks for device trackers. +A convenience function to determine if no people are at home. #### Synopsis diff --git a/source/_integrations/alarmdecoder.markdown b/source/_integrations/alarmdecoder.markdown index 25a80a4f5c0..0bdcd0dc360 100644 --- a/source/_integrations/alarmdecoder.markdown +++ b/source/_integrations/alarmdecoder.markdown @@ -80,6 +80,11 @@ panel_display: required: false default: false type: boolean +autobypass: + description: "If this is set to `true`, then when arming (home or away), it will automatically bypass all open zones (sending '6#')." + required: false + default: false + type: boolean zones: description: "AlarmDecoder has no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. For more information on the available zone types, take a look at the [Binary Sensor](/integrations/alarmdecoder) docs. *Note: If no zones are specified, Home Assistant will not load any binary_sensor integrations.*" required: false diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 0d016189628..330ad3bd066 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -207,6 +207,7 @@ Example configuration: ```yaml alexa: smart_home: + locale: en-US endpoint: https://api.amazonalexa.com/v3/events client_id: !secret alexa_client_id client_secret: !secret alexa_client_secret @@ -226,6 +227,8 @@ alexa: display_categories: LIGHT ``` +Set the `locale` to the locale of your Alexa devices. Supported locales are: `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`. Default is `en-US`. + The `endpoint`, `client_id` and `client_secret` are optional, and are only required if you want to enable Alexa's proactive mode (i.e. "Send Alexa Events" enabled). Please note the following if you want to enable proactive mode: - There are different endpoint URLs, depending on the region of your skill. Please check the available endpoints at diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index 4996966310d..7abee8ceb65 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -7,7 +7,6 @@ ha_category: - Binary Sensor - Camera - Sensor - - Switch ha_iot_class: Local Polling ha_release: 0.49 --- @@ -19,7 +18,6 @@ There is currently support for the following device types within Home Assistant: - Binary Sensor - Camera - Sensor -- Switch (deprecated) ## Configuration @@ -117,34 +115,12 @@ sensors: type: list default: None keys: - motion_detector: - description: > - Return `true`/`false` when motion is detected. - - **Note:** The motion_detector sensor is deprecated and will be removed in a future release. - Use **binary_sensors** option **motion_detected** instead. sdcard: description: Return the SD card usage by reporting the total and used space. ptz_preset: description: > Return the number of PTZ preset positions configured for the given camera. -switches: - description: > - Switches to display in the frontend. - - **Note:** Switches are deprecated and will be removed in a future release. - Use services and attributes instead. - - The following switches can be monitored: - required: false - type: list - default: None - keys: - motion_detection: - description: Enable/disable motion detection setting. - motion_recording: - description: Enable/disable recording on motion detection setting. control_light: description: > Automatically control the camera's indicator light, turning it on if the audio or video streams are enabled, and turning it off if both streams are disabled. @@ -254,7 +230,3 @@ amcrest: ``` To check if your Amcrest camera is supported/tested, visit the [supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix) link from the `python-amcrest` project. - -
-In previous versions, switch devices in setups with multiple cameras, would not have specific entity ID causing them to change randomly after each Home Assistant restart. The current version adds the name of the camera at the end of the switch entity ID, making it more specific and consistent and causes the name option to be required in a multi-camera system. This behavior matches the sensor behavior of the Amcrest component. Because of this, older automations may require updates to the entity ID. -
diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index 29b1bf90f8c..1e5b905164f 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -72,7 +72,7 @@ adb_server_port: default: 5037 type: integer get_sources: - description: Whether or not to retrieve the running apps as the list of sources for Fire TV devices; not used for Android TV devices. + description: Whether or not to retrieve the running apps as the list of sources. required: false default: true type: boolean @@ -193,9 +193,9 @@ If the setup for your Android TV or Fire TV device fails, then there is probably ## Services -### (Fire TV devices only) `media_player.select_source` +### `media_player.select_source` -For Fire TV devices, you can launch an app using the `media_player.select_source` command. Simply provide the app ID as the `source`. You can also stop an app by prefixing the app ID with a `!`. For example, you could define [scripts](/docs/scripts) to start and stop Netflix as follows: +You can launch an app on your device using the `media_player.select_source` command. Simply provide the app ID as the `source`. You can also stop an app by prefixing the app ID with a `!`. For example, you could define [scripts](/docs/scripts) to start and stop Netflix as follows: ```yaml start_netflix: @@ -251,6 +251,24 @@ You can also use the command `GET_PROPERTIES` to retrieve the properties used by A list of various intents can be found [here](https://gist.github.com/mcfrojd/9e6875e1db5c089b1e3ddeb7dba0f304). +### `androidtv.download` and `androidtv.upload` + +You can use the `androidtv.download` service to download a file from your Android TV / Fire TV device to your Home Assistant instance. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name of Android TV / Fire TV entity. +| `device_path` | no | The filepath on the Android TV / Fire TV device. +| `local_path` | no | The filepath on your Home Assistant instance. + +Similarly, you can use the `androidtv.upload` service to upload a file from Home Assistant instance to Android TV / Fire TV devices. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name(s) of Android TV / Fire TV entities. +| `device_path` | no | The filepath on the Android TV / Fire TV device. +| `local_path` | no | The filepath on your Home Assistant instance. + ## Custom State Detection The Android TV integration works by polling the Android TV / Fire TV device at a regular interval and collecting a handful of properties. Unfortunately, there is no standard API for determining the state of the device to which all apps adhere. Instead, the backend `androidtv` package uses three of the properties that it collects to determine the state: `audio_state`, `media_session_state`, and `wake_lock_size`. The correct logic for determining the state differs depending on the current app, and the backend `androidtv` package implements app-specific state detection logic for a handful of apps. Of course, it is not feasible to implement custom logic for each and every app in the `androidtv` package. Moreover, the correct state detection logic may differ across devices and device configurations. diff --git a/source/_integrations/binary_sensor.modbus.markdown b/source/_integrations/binary_sensor.modbus.markdown index 042a2c8355f..8adc0dd0d89 100644 --- a/source/_integrations/binary_sensor.modbus.markdown +++ b/source/_integrations/binary_sensor.modbus.markdown @@ -52,6 +52,11 @@ coils: description: Coil number. required: true type: integer + device_class: + description: The [type/class](/integrations/binary_sensor/#device-class) of the binary sensor to set the icon in the frontend. + required: false + type: device_class + default: None {% endconfiguration %} It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. diff --git a/source/_integrations/blink.markdown b/source/_integrations/blink.markdown index 98f58f37979..f1afacdab5d 100644 --- a/source/_integrations/blink.markdown +++ b/source/_integrations/blink.markdown @@ -119,17 +119,17 @@ Force a refresh of the Blink system. Trigger a camera to take a new still image. | Service Data Attribute | Optional | Description | -|------------------------|----------|----------------------------------------| -| `name` | no | Name of camera to take new image with. | +| ---------------------- | -------- | -------------------------------------- | +| `name` | no | Name of camera to take new image with. | ### `blink.save_video` Save the last recorded video of a camera to a local file. Note that in most cases, Home Assistant will need to know that the directory is writable via the `whitelist_external_dirs` in your `configuration.yaml` file (see example below). | Service Data Attribute | Optional | Description | -|------------------------|----------|------------------------------------------| -| `name` | no | Name of camera containing video to save. | -| `filename` | no | Location of save file. | +| ---------------------- | -------- | ---------------------------------------- | +| `name` | no | Name of camera containing video to save. | +| `filename` | no | Location of save file. | ```yaml @@ -178,7 +178,7 @@ Here, this example assumes your blink module is named `My Sync Module` and that alias: Arm Blink When Away trigger: platform: state - entity_id: group.all_devices + entity_id: all to: 'not_home' action: service: alarm_control_panel.alarm_arm_away @@ -194,7 +194,7 @@ Similar to the previous example, this automation will disarm blink when arriving alias: Disarm Blink When Home trigger: platform: state - entity_id: group.all_devices + entity_id: all to: 'home' action: service: alarm_control_panel.alarm_disarm diff --git a/source/_integrations/brother.markdown b/source/_integrations/brother.markdown new file mode 100644 index 00000000000..fe0412bf232 --- /dev/null +++ b/source/_integrations/brother.markdown @@ -0,0 +1,25 @@ +--- +title: Brother Printer +description: Instructions on how to integrate a Brother printer into Home Assistant. +logo: brother.png +ha_category: + - System Monitor +ha_release: 0.104 +ha_iot_class: Local Polling +ha_config_flow: true +--- + +The `Brother Printer` integration allows you to read current data from your local Brother printer. + +It usually provides information about the device's state, the left amount of ink or toner and the remaining life of the drum or other parts of the printer. +The integration monitors every supported part. + +## Configuration + +To add `Brother Printer` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Brother Printer**. + +
+ +Some very old Brother printers use different data format and these models are not supported. The integration will show information about that during configuration. + +
diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 2864d5a7163..f552501aa31 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -105,7 +105,7 @@ Note: deCONZ automatically signals Home Assistant when new sensors are added, bu ## Remote control devices -Remote controls (ZHASwitch category) will not be exposed as regular entities, but as events named `deconz_event` with a payload of `id` and `event`. Id will be the device name from deCONZ and Event will be the momentary state of the switch. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level. +Remote controls (ZHASwitch category) will not be exposed as regular entities, but as events named `deconz_event` with a payload of `id` and `event` and in case of the Aqara Magic Cube also `gesture`. Id will be the device name from deCONZ and Event will be the momentary state of the switch. Gesture is used for some Aqara Magic Cube specific events like: flip 90 degrees, flip 180 degrees, clockwise and counter clockwise rotation. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level. Typical values for switches, the event codes are 4 numbers where the first and last number are of interest here. @@ -120,6 +120,20 @@ Where for example on a Philips Hue Dimmer, 2001 would be holding the dim up butt For the IKEA Tradfri remote the first digit equals, 1 for the middle button, 2 for up, 3 for down, 4 for left, and 5 for right (e.g., "event: 1002" for middle button short release). +Specific gestures for the Aqara Magic Cube are: + +| Gesture | Description | +|---------|-------------| +| 0 | Awake | +| 1 | Shake | +| 2 | Free fall | +| 3 | Flip 90 | +| 4 | Flip 180 | +| 5 | Move on any side | +| 6 | Double tap on any side | +| 7 | Turn clockwise | +| 8 | Turn counter clockwise | + ### Finding your events Navigate to **Developer tools->Events**. In the section **Listen to events** add `deconz_event` and press **START LISTENING**. All events from deCONZ will now be shown and by pushing your remote button while monitoring the log it should be fairly easy to find the events you are looking for. @@ -141,6 +155,7 @@ Currently supported devices as device triggers: - Aqara Mini Switch - Aqara Round Switch - Aqara Square Switch +- Aqara Magic Cube #### Requesting support for new device trigger @@ -199,6 +214,18 @@ automation: brightness: > {% set bri = state_attr('light.lamp', 'brightness') | int %} {{ [bri-30, 0] | max }} + + - alias: 'Turn lamp on when turning cube clockwise' + initial_state: 'on' + trigger: + platform: event + event_type: deconz_event + event_data: + id: remote_control_1 + gesture: 7 + action: + service: light.turn_on + entity_id: light.lamp ``` {% endraw %} @@ -447,7 +474,6 @@ The `entity_id` name will be `sensor.device_name`, where `device_name` is define - Philips Hue Motion Sensor - IKEA Trådfri Remote - Philips Hue Dimmer Switch - - Xiaomi Cube - Xiaomi Aqara Smart Light Switch - Xiaomi Aqara Smart Wireless Switch - Xiaomi Smart Home Wireless Switch diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index 26790ffb7ad..80e53c600f1 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -94,4 +94,14 @@ A few notes: - To remotely power on Marantz receivers with Home Assistant, the Auto-Standby feature must be enabled in the receiver's settings. - Sound mode: The command to set a specific sound mode is different from the value of the current sound mode reported by the receiver (sound_mode_raw). There is a key-value structure (sound_mode_dict) that matches the raw sound mode to one of the possible commands to set a sound mode (for instance {'MUSIC':['PLII MUSIC']}. If you get a "Not able to match sound mode" warning, please open an issue on the [denonavr library](https://github.com/scarface-4711/denonavr), stating which raw sound mode could not be matched so it can be added to the matching dictionary. You can find the current raw sound mode under "Development Tools/States" in the front panel. + +#### Service `denonavr.get_command` + +Generic commands are supported, in particular, any command supported by the telnet protocol can be sent to `/goform/formiPhoneAppDirect.xml`, e.g., `/goform/formiPhoneAppDirect.xml?VSMONI2` to switch HDMI outputs on supported receivers. IR remote codes can also be sent to this endpoint, e.g. "/goform/formiPhoneAppDirect.xml?RCKSK0410370" as a mute toggle. A comprehensive list of telnet protocol commands is available at https://ca.denon.com/ca/product/hometheater/receivers/avrx4400h?docname=AVR-X6400H_X4400H_X3400H_X2400H_X1400H_S930H_S730H_PROTOCOL_V01.xlsx and a full list of IR codes at http://www.denon-hifi.nl/uk/product/hometheater/avreceivers/avr3313?docname=AVR3313_IR_CODE_V01.pdf + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------- | +| `entity_id` | no | Name of entity to send command to. For example `media_player.marantz`| +| `command` | no | Command to send to device, e.g. `/goform/formiPhoneAppDirect.xml?VSMONI2`| + [Denon]: /integrations/denon diff --git a/source/_integrations/elgato.markdown b/source/_integrations/elgato.markdown new file mode 100644 index 00000000000..06f9a097053 --- /dev/null +++ b/source/_integrations/elgato.markdown @@ -0,0 +1,41 @@ +--- +title: Elgato Key Light +description: Instructions on how to integrate an Elgato Key Light with Home Assistant. +logo: elgato.jpg +ha_category: + - Light +ha_release: 0.104 +ha_iot_class: Local Polling +ha_qa_scale: platinum +ha_config_flow: true +--- + +The [Elgato Key Light](https://www.elgato.com/en/gaming/key-light) sets the +bar for high-end studio lightning. With 80 LEDs, that put out a massive +2500 lumens, and can change the color temperature as well. + +The LED light panel is created specifically, and designed for streamers +and content creators, many of whom operate on platforms like YouTube and Twitch. + +## Configuration + +This integration can be configured using the integrations in the +Home Assistant frontend. + +Menu: **Configuration** -> **Integrations**. + +In most cases, Elgato Key Lights devices will be automatically discovered by +Home Assistant. Those automatically discovered devices are listed +on the integrations page. + +If for some reason (e.g., due to lack of mDNS support on your network), +the Elgato Key Light isn't discovered, it can be added manually. + +Click on the `+` sign to add an integration and click on **Elgato Key Light**. +After completing the configuration flow, the Key Light integration will be +available. + +## Lights + +This integration adds the Key Light device as a light in Home Assistant, and +allows you to control the color temperature, brightness, and its on/off state. diff --git a/source/_integrations/enocean.markdown b/source/_integrations/enocean.markdown index 0987c35a4de..d169f707dc3 100644 --- a/source/_integrations/enocean.markdown +++ b/source/_integrations/enocean.markdown @@ -21,7 +21,7 @@ The `enocean` integration adds support for some of these devices. You will need There is currently support for the following device types within Home Assistant: - [Binary Sensor](#binary-sensor) - Wall switches -- [Sensor](#sensor) - Power meters, temperature sensors and humidity sensors +- [Sensor](#sensor) - Power meters, temperature sensors, humidity sensors and window handles - [Light](#light) - Dimmers - [Switch](#switch) @@ -34,7 +34,7 @@ The following devices have been confirmed to work out of the box: - Omnio WS-CH-102-L-rw battery-less wall switch - Permundo PSC234 (switch and power monitor) - EnOcean STM-330 temperature sensor - +- Hoppe SecuSignal window handle from Somfy If you own a device not listed here, please check whether your device can talk in one of the listed [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) (EEP). If it does, it will most likely work. @@ -162,6 +162,7 @@ The EnOcean sensor platform currently supports the following device types: * [power sensor](#power-sensor) * [humidity sensor](#humidity-sensor) * [temperature sensor](#temperature-sensor) + * [window handle](#window-handle) To use your EnOcean device, you first have to set up your [EnOcean hub](#hub) and then add the following to your `configuration.yaml` file: @@ -190,7 +191,6 @@ device_class: default: powersensor {% endconfiguration %} - ### Power sensor This has been tested with a Permundo PSC234 switch, but any device sending EEP **A5-12-01** messages will work. @@ -206,7 +206,6 @@ sensor: device_class: powersensor ``` - ### Humidity sensor The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) are supported: @@ -300,6 +299,29 @@ sensor: range_to: 250 ``` +### Window handle + +As of now, the Hoppe SecuSignal window handle from Somfy has been successfully tested. However, any mechanical window handle that follows the EnOcean RPS telegram spec F6 10 00 (Hoppe AG) is supported. + +To configure a window handle, add the following code to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry for window handle EEP F6-10-00 +sensor: + - name: Living Room Window Handle + platform: enocean + id: [0xDE,0xAD,0xBE,0xEF] + device_class: windowhandle +``` + +The configuration does not have any optional parameters. + +The window handle sensor can have the following states: + +- **closed**: The window handle is in closed position (typically down, or 6 o'clock) +- **open**: The window handle is in open position (typically left or right, or 3 o'clock or 9 o'clock) +- **tilt**: The window handle is in tilt position (typically up or 12 o'clock) + ## Switch An EnOcean switch can take many forms. Currently, only a few types have been tested: Permundo PSC234 and Nod On SIN-2-1-01. diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown index b0a2af49245..cb86717166d 100644 --- a/source/_integrations/enphase_envoy.markdown +++ b/source/_integrations/enphase_envoy.markdown @@ -29,6 +29,14 @@ ip_address: description: The local IP address of your Envoy. Leave blank to use the default host name 'envoy', but this may not always be reliable. You should be able to just browse to this IP address. required: false type: string +username: + description: Access more information beyond the basics, such as Inverter data. Some Envoy devices do not use the standard username which is used by the API. This lets the user use a different username than the default of 'envoy'. + required: false + type: string +password: + description: Password to be used with the username configuration variable. + required: false + type: string monitored_conditions: description: The list of conditions to monitor. If you have an Envoy that doesn't support consumption metrics (ie. Envoy-C), it's best only configure the production metrics. required: false diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index b4048abd319..2762beae405 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -64,7 +64,7 @@ The first time Home Assistant will connect to your Freebox, you will need to authorize it by pressing the right arrow on the facade of the Freebox when prompted to do so. -To make the WiFi switch working you will have to add "Modification des réglages de la Freebox +To make the WiFi switch and the reboot service working you will have to add "Modification des réglages de la Freebox " permission to Home Assistant application in "Paramètres de la Freebox" > "Gestion des accès" > "Applications". ### Supported routers @@ -96,6 +96,12 @@ refreshes the devices states. This platform offers you sensors to monitor a Freebox router. The monitored conditions are instant upload and download rates in KB/s. +## Service + +### Service `freebox.reboot` + +This service will reboot your Freebox router. It does not take any parameter. Be aware there is no confirmation. + ## Switch This platform offers you a switch to toggle the Wifi on or off. This will toggle all WiFi interfaces of the router (all SSID and all bands). diff --git a/source/_integrations/gios.markdown b/source/_integrations/gios.markdown new file mode 100644 index 00000000000..0fa0898d78e --- /dev/null +++ b/source/_integrations/gios.markdown @@ -0,0 +1,32 @@ +--- +title: GIOŚ +description: Instructions on how to integrate GIOŚ (Polish Chief Inspectorate Of Environmental Protection) air quality service into Home Assistant. +logo: gios.png +ha_category: + - Health +ha_release: 0.104 +ha_iot_class: Cloud Polling +ha_config_flow: true +--- + +The `gios` integration uses the [GIOŚ](http://powietrze.gios.gov.pl/pjp/current) web service as a source for air quality data for your location. + +## Setup + +To obtain `station_id` of the measuring station, go to [GIOŚ](http://powietrze.gios.gov.pl/pjp/current) page, select the measuring station on the map and click the "More Info" link. The address of the opened page will look like this: `http://powietrze.gios.gov.pl/pjp/current/station_details/chart/291` and `291` will be `station_id` of measuring station. + +## Configuration + +To add GIOŚ to your installation, go to **Configuration** >> **Integrations** in the UI and enable the GIOŚ integration. + +{% configuration %} +name: + description: Manually specify Name. + required: false + type: string + default: GIOŚ +station_id: + description: Specify ID of the measuring station. + required: true + type: integer +{% endconfiguration %} diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 28e1881152f..458c0b49351 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -104,8 +104,6 @@ google_assistant: light.living_room: expose: false room: LIVING_ROOM - group.all_automations: - expose: false ``` {% configuration %} @@ -198,10 +196,6 @@ Currently, the following domains are available to be used with Google Assistant, - sensor (temperature setting for temperature sensors and humidity setting for humidity sensors) - Alarm Control Panel (arm/disarm) -
- The domain `groups` contains groups containing all items, such as `group.all_automations`. When telling Google Assistant to shut down everything, this will lead in this example to disabling all automations. -
- ### Secure Devices Certain devices are considered secure, including anything in the `lock` domain, `alarm_control_panel` domain and `covers` with device types `garage` and `door`. diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index 0e555479749..d14ea5e9154 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -62,18 +62,6 @@ control: type: string {% endconfiguration %} -## Default groups - -Some integrations automatically create special groups containing integration entities. These groups are named like `group.all_...`, for example: - -- `group.all_switches` -- `group.all_lights` -- `group.all_devices` -- `group.all_scripts` -- `group.all_automations` - -You can see list of these groups in **States** page of the **Developer Tools**. - ## Group behavior By default when any member of a group is `on` then the group will also be `on`. Similarly with a device tracker, when any member of the group is `home` then the group is `home`. If you set the `all` option to `true` though, this behavior is inverted and all members of the group have to be `on` for the group to turn on as well. @@ -150,40 +138,3 @@ Notice in the example below that in order to refer to the group "Living Room", y - group.living_room - group.bedroom ``` - -Default groups appear in the HOME tab, if not overridden by user views and groups. Default groups are hidden by default, so you must [customize](/docs/configuration/customizing-devices/) them to be visible in your custom groups and views. - -```yaml -# Example configuration.yaml to include default groups in custom view -customize: - group.all_automations: - hidden: false - group.all_scripts: - hidden: false -group: - automation_view: - name: Automation - view: true - entities: - - group.all_automations - - group.all_scripts -``` - -## Customize group order -You can also order your groups using [customize](/docs/configuration/customizing-devices/) with `order: ` if they don't show up in the order you want them in. - -```yaml -# Example configuration.yaml to order groups with order: -customize: - group.all_automations: - order: 1 - group.all_scripts: - order: 2 -group: - automation_view: - name: Automation - view: true - entities: - - group.all_automations - - group.all_scripts -``` diff --git a/source/_integrations/here_travel_time.markdown b/source/_integrations/here_travel_time.markdown index 5fc2b413701..1a5face1fd8 100644 --- a/source/_integrations/here_travel_time.markdown +++ b/source/_integrations/here_travel_time.markdown @@ -21,6 +21,10 @@ HERE offers a Freemium Plan which includes 250,000 free Transactions per month. By default HERE will deactivate your account if you exceed the free Transaction limit for the month. You can add payment details to reenable your account as described [here](https://developer.here.com/faqs) +### Migrate from app_code to api_key + +HERE has changed its authentication mechanism. It is no longer possible to use `app_id` and `app_code`. Existing users have to follow the [migration guide](https://developer.here.com/documentation/authentication/dev_guide/topics/api-key-credentials.html) in order to retrieve the now needed `api_key`. + ## Configuration To enable the sensor, add the following lines to your `configuration.yaml` file: @@ -29,8 +33,7 @@ To enable the sensor, add the following lines to your `configuration.yaml` file: # Example entry for configuration.yaml sensor: - platform: here_travel_time - app_id: "YOUR_APP_ID" - app_code: "YOUR_APP_CODE" + api_key: "YOUR_API_KEY" origin_latitude: "51.222975" origin_longitude: "9.267577" destination_latitude: "51.257430" @@ -38,12 +41,8 @@ sensor: ``` {% configuration %} -app_id: - description: "Your application's API id (get one by following the instructions above)." - required: true - type: string -app_code: - description: "Your application's API code (get one by following the instructions above)." +api_key: + description: "Your application's API key (get one by following the instructions above)." required: true type: string origin_latitude: @@ -111,15 +110,13 @@ Tracking can be set up to track entities of type `device_tracker`, `zone`, `sens sensor: # Tracking entity to entity - platform: here_travel_time - app_id: "YOUR_APP_ID" - app_code: "YOUR_APP_CODE" + api_key: "YOUR_API_KEY" name: Phone To Home origin_entity_id: device_tracker.mobile_phone destination_entity_id: zone.home # Full config - platform: here_travel_time - app_id: "YOUR_APP_ID" - app_code: "YOUR_APP_CODE" + api_key: "YOUR_API_KEY" name: Work to Home By Bike origin_entity_id: zone.work destination_latitude: 59.2842 diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index b4f6058b6e7..e35ab89203f 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -12,6 +12,8 @@ ha_category: - Switch - Binary Sensor - Sensor + - Fan + - Health ha_release: 0.68 ha_iot_class: Local Polling ha_config_flow: true @@ -35,8 +37,10 @@ There is currently support for the following device types within Home Assistant: - Light (HomeKit lights) - Lock (HomeKit lock) - Switch (HomeKit switches) -- Binary Sensor (HomeKit motion sensors and contact sensors) +- Binary Sensor (HomeKit motion, contact and smoke sensors) - Sensor (HomeKit humidity, temperature, co2 and light level sensors) +- Fan +- Air Quality HomeKit IP accessories for these device types may work with some caveats: diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown index 06073bf32c8..e71eb08c60f 100644 --- a/source/_integrations/homematic.markdown +++ b/source/_integrations/homematic.markdown @@ -136,6 +136,10 @@ host: description: IP address of CCU/Homegear device. required: true type: string +port: + description: "Port of CCU/Homegear XML-RPC Server. Wireless: 2001, wired: 2000, IP: 2010" + required: false + type: integer username: description: When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. required: false @@ -175,6 +179,7 @@ homematic: hosts: ccu2: host: 127.0.0.1 + port: 2001 username: Admin password: secret diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index 088f7e35ccf..d36ee4d080a 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -105,6 +105,7 @@ Within this delay the device registration should be completed in the App, otherw * Key Ring Remote Control - alarm (*HmIP-KRCA*) (battery only) * Alarm Siren (*HmIP-ASIR, -B1*) (battery only) * Remote Control for brand switches – 2-button (*HmIP-BRC2*) (battery only) + * Pluggable Power Supply Monitoring (*HmIP-PMFS*) * homematicip_cloud.climate * Climate group (*HmIP-HeatingGroup*) @@ -126,6 +127,7 @@ Within this delay the device registration should be completed in the App, otherw * Shutter actuator for flush-mount (*HmIP-FROLL*) * Blind Actuator for brand switches (*HmIP-BBL*) * Blind Actuator for flush-mount (*HmIP-FBL*) + * Garage door module for Tormatic (*HmIP-MOD_TM*) * homematicip_cloud.light * Switch actuator and meter for brand switches (*HmIP-BSM*) @@ -156,6 +158,7 @@ Within this delay the device registration should be completed in the App, otherw * Switch Circuit Board - 1x channels (*HmIP-PCBS*) * Switch Circuit Board - 2x channels (*HmIP-PCBS2*) * Printed Circuit Board Switch Battery (*HmIP-PCBS-BAT*) + * Switch Actuator for heating systems – 2 channels (*HmIP-WHS2*) * homematicip_cloud.weather * Weather Sensor – basic (*HmIP-SWO-B*) @@ -183,6 +186,7 @@ Afterward, this device can be implemented into Home Assistant. - `homematicip_cloud.deactivate_vacation`: Deactivates the vacation mode immediately. - `homematicip_cloud.set_active_climate_profile`: Set the active climate profile index. - `homematicip_cloud.dump_hap_config`: Dump the configuration of the Homematic IP Access Point(s). +- `homematicip_cloud.reset_energy_counter`: Reset energy counter of measuring actuators. ### Service Examples @@ -267,6 +271,16 @@ action: anonymize: True ``` +Reset energy counter of measuring actuators. + +```yaml +... +action: + service: homematicip_cloud.reset_energy_counter + data: + entity_id: switch.livingroom +``` + ## Additional info diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown index 024d884837a..2218a14c2fd 100644 --- a/source/_integrations/huawei_lte.markdown +++ b/source/_integrations/huawei_lte.markdown @@ -106,13 +106,56 @@ notify: required: false type: map keys: + name: + description: Name of the notification service. + default: "`huawei_lte`" + required: false + type: string recipient: description: The phone number of a default recipient or a list with multiple recipients. required: false type: [string, list] {% endconfiguration %} -### Tested devices +## Services + +The following router action services are available. When invoked by a user, administrator access is required. + +### Service `huawei_lte.clear_traffic_statistics` + +Clear traffic statistics. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +### Service `huawei_lte.reboot` + +Reboot router. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +### Service `huawei_lte.suspend_integration` + +Suspend integration. Suspending logs the integration out from the router, and stops accessing it. +Useful e.g. if accessing the router web interface from another source such as a web browser is temporarily required. +Invoke the `huawei_lte.resume_integration` service to resume. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +### Service `huawei_lte.resume_integration` + +Resume suspended integration. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +## Tested devices Devices we know to be working with this integration based on the [documentation of used libraries](https://github.com/Salamek/huawei-lte-api/#huawei-lte-api) and reports by users: diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index 62e01a13656..a86cf660f28 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -4,46 +4,69 @@ description: Instructions on how to use iCloud to track devices in Home Assistan logo: icloud.png ha_category: - Presence Detection + - Sensor +ha_iot_class: Cloud Polling ha_release: '0.10' +ha_config_flow: true --- -The `icloud` platform allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track the location of their iOS devices. +The `icloud` integration allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. + +There is currently support for the following platforms within Home Assistant: + +- [Device Tracker](#device-tracker) +- [Sensor](#sensor) It does require that your devices are registered with the [Find My](https://www.apple.com/uk/icloud/find-my/) service. -To integrate iCloud in Home Assistant, add the following section to your `configuration.yaml` file: +## Setup the integration + +There is two ways to integrate iCloud in Home Assistant + +### Via the frontend + +Menu: *Configuration* -> *Integrations*. Search for "iCloud", add your credentials, click submit. + +If you add the integration for the first time for an account: +1. Choose a trusted device from the list and submit. +2. It will send you a text message on your trusted device, add the received code to the next form and submit (if you missed the right code, you will be back to the previous step, and retry). +3. You are done! + +If you already added the integration before, you are done! + +### Via the configuration file + +Add the following section to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry -device_tracker: - - platform: icloud - username: USERNAME +icloud: + - username: USERNAME password: PASSWORD - account_name: accountname ``` {% configuration %} username: - description: The username for the iCloud account. + description: Your iCloud account email. required: true type: string password: - description: The password for your given username. + description: Your iCloud account password. required: true type: string account_name: - description: The friendly name for the account_name. If this isn't given, it will use the account_name of the username (so the part before the `@` in the email address). + description: A friendly name for your iCloud account. If this isn't given, it will use the part before the `@` of the username. required: false type: string max_interval: - description: Maximum interval in minutes between subsequent location upates. This tracker uses dynamic intervals for requesting location updates. When iphone is stationary, interval will eventually be set to `max_interval` to save battery. When iphone starts moving again interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Minimum value is 1 min. + description: Maximum interval in minutes between subsequent location updates. This tracker uses dynamic intervals for requesting location updates. When the iPhone is stationary, the interval will eventually be set to `max_interval` to save battery. When the iPhone starts moving again, the interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Minimum value is 1 min. required: false default: 30 type: integer gps_accuracy_threshold: - description: iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows more precise location monitoring and fewer false positive zone changes. + description: iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows for more precise location monitoring and fewer false-positive zone changes. required: false - default: 1000 + default: 500 type: integer {% endconfiguration %} @@ -52,7 +75,9 @@ Low `max_interval` may cause battery drainage as it wakes up your device to get
-You may receive an email from Apple stating that someone has logged into your account. +You may receive an email and a notification from Apple saying that someone has logged into your account. + +For the notification, press "Allow", then "OK".
If 2 Step Authentication is enabled for your iCloud account, some time after Home Assistant startup the integration will ask which device you want to use as the Trusted Device via a notification in the Home Assistant UI. The integration will send an SMS prompt to that device with the auth code to enter in Home Assistant. The duration of this authentication is determined by Apple, but is currently 2 months, so you will only need to verify your account every two months. @@ -61,8 +86,36 @@ If 2 Step Authentication is enabled for your iCloud account, some time after Hom To prevent excessive battery drainage, a dynamic interval is used for each individual device instead of a fixed interval for all devices linked to one account. The dynamic interval is based on the current zone of a device, the distance towards home and the battery level of the device. -4 services are available for this component: -- **update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iphone location. Can be used in automations when manual location update is needed, e.g., to check if anyone is home when door's been opened. -- **lost_iphone**: This service will play the Lost iPhone sound on a certain iDevice. The `account_name` and `device_name` are optional. -- **set_interval**: This service will change the dynamic interval of an iDevice. The `account_name` and `device_name` are optional. If `interval` is used in the service_data, the iDevice will be updated with that new interval. That interval will be fixed until the iDevice changes zone or if this service is called again. If `interval` isn't used in the service_data, the interval for that iDevice will revert back to its default dynamic interval based on its current zone, its distance towards home and its battery level. -- **reset_account**: This service can be used to reset an iCloud account. This is helpful when not all devices are found by the integration or if you have added a new iDevice to your account. The `account_name` is optional. +## In case of troubleshooting + +Go into your Home Assistant configuration `.storage` folder and delete the "icloud" folder, then retry. + +## Platforms + +### Device Tracker + +The iCloud integration will track available devices on your iCloud account. + +### Sensor + +The iCloud integration will add a battery sensor for each iCloud devices available on your iCloud account. + +## Services + +4 services are available: + +### Service `icloud.update` + +This service can be used to ask an update of a certain iDevice or all devices linked to an iCloud account. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iPhone location. It can be used in automations when a manual location update is needed, e.g., to check if anyone is home when a door been opened. + +### Service `icloud.play_sound` + +This service will play the Lost iPhone sound on your iDevice. It will still ring if you are on "Mute" or "Do not disturb" mode. + +### Service `icloud.display_message` + +This service will display a message on your iDevice. It can also ring your device. + +### Service `icloud.lost_device` + +This service will put your iDevice on "lost" mode (compatible devices only). You have to provide a phone number with a suffixed [country code](https://en.wikipedia.org/wiki/List_of_country_calling_codes) and a message. diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown index 5d481e4c18e..241341506b0 100644 --- a/source/_integrations/input_boolean.markdown +++ b/source/_integrations/input_boolean.markdown @@ -44,6 +44,18 @@ input_boolean: type: icon {% endconfiguration %} +### Services + +This integration provides the following services to modify the state of the `input_boolean` and a service to reload the +configuration without restarting Home Assistant itself. + +| Service | Data | Description | +| ------- | ---- | ----------- | +| `turn_on` | `entity_id(s)`
`area_id(s)` | Set the value of specific `input_boolean` entities to `on` +| `turn_off` | `entity_id(s)`
`area_id(s)` | Set the value of specific `input_boolean` entities to `off` +| `toggle` | `entity_id(s)`
`area_id(s)` | Toggle the value of specific `input_boolean` entities +| `reload` | | Reload `input_boolean` configuration | + ### Restore State If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown index 774cce64224..b3f663d7cf9 100644 --- a/source/_integrations/input_datetime.markdown +++ b/source/_integrations/input_datetime.markdown @@ -84,7 +84,7 @@ If you set a valid value for `initial` this integration will start with state se ### Services -Available service: `input_datetime.set_datetime`. +Available service: `input_datetime.set_datetime` and `input_datetime.reload`. Service data attribute | Format String | Description -|-|- @@ -94,6 +94,8 @@ Service data attribute | Format String | Description To set both the date and time in the same call, use `date` and `time` together, or use `datetime` by itself. Using `datetime` has the advantage that both can be set using one template. +`input_dateteime.reload` service allows one to reload `input_datetime`'s configuration without restarting Home Assistant itself. + ## Automation Examples The following example shows the usage of the `input_datetime` as a trigger in an diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 0c8b7ed65b7..5bee95ec089 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -75,6 +75,18 @@ input_number: type: icon {% endconfiguration %} +### Services + +This integration provides the following services to modify the state of the `input_number` and a service to reload the +configuration without restarting Home Assistant itself. + +| Service | Data | Description | +| ------- | ---- | ----------- | +| `decrement` | `entity_id(s)`
`area_id(s)` | Decrement the value of specific `input_number` entities by `step` +| `increment` | `entity_id(s)`
`area_id(s)` | Increment the value of specific `input_number` entities by `step` +| `reload` | | Reload `input_number` configuration | +| `set_value` | `value`
`entity_id(s)`
`area_id(s)` | Set the value of specific `input_number` entities + ### Restore State If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index 30992a9fa98..6bcb92e7b8e 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -76,6 +76,7 @@ This integration provides three services to modify the state of the `input_selec | `set_options` | `options`
`entity_id(s)` | Set the options for specific `input_select` entities. | `select_previous` | | Select the previous option. | `select_next` | | Select the next option. +| `reload` | | Reload `input_select` configuration | ### Scenes diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index 93c3c765cfa..b90ed64f900 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -73,11 +73,12 @@ input_text: ### Services -This integration provides a single service to modify the state of the `input_text`. +This integration provides a service to modify the state of the `input_text` and a service to reload the `input_text` configuration without restarting Home Assistant itself. | Service | Data | Description | | ------- | ---- | ----------- | | `set_value` | `value`
`entity_id(s)` | Set the value for specific `input_text` entities. +| `reload` | | Reload `input_text` configuration | ### Restore State diff --git a/source/_integrations/intesishome.markdown b/source/_integrations/intesishome.markdown new file mode 100644 index 00000000000..105c551fd84 --- /dev/null +++ b/source/_integrations/intesishome.markdown @@ -0,0 +1,54 @@ +--- +title: IntesisHome +description: Instructions how to integrate IntesisHome AC devices with Home Assistant +logo: intesishome.png +ha_category: Climate +ha_release: 0.104 +ha_iot_class: Cloud Push +--- + +The `IntesisHome` climate platform lets you control [IntesisHome](https://www.intesishome.com) and [Airconwithme](https://www.airconwithme.com) devices. IntesisHome provides integrations with air conditioners, including Panasonic, Daikin, Fujitsu, Toshiba, LG and more. + +Note: IntesisHome products are a separate product line to IntesisBox. This platform does not support IntesisBox devices (which can be controlled locally using the WMP protocol). + +## Configuration + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +climate: + - platform: intesishome + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: "Your username for [IntesisHome.com](https://user.intesishome.com) / [Airconwithme](https://user.airconwithme.com)" + required: true + type: string +password: + description: Your password for IntesisHome + required: true + type: string +device: + description: "`IntesisHome` or `airconwithme`." + required: false + default: IntesisHome + type: string +{% endconfiguration %} + +This component opens a TCP connection with the IntesisHome API to receive temperature and status updates, and to issue commands. +By default, the component will be named using the friendly device name from the IntesisHome website or application. +If internet connectivity is lost, the device will be marked as unavailable after 5 minutes. + +### Supported services + +Available services: + +- `climate.set_temperature` +- `climate.set_fan_mode` +- `climate.set_operation_mode` +- `climate.set_swing_mode` +- `climate.turn_on` +- `climate.turn_off` diff --git a/source/_integrations/kef.markdown b/source/_integrations/kef.markdown new file mode 100644 index 00000000000..a6f3fb0f94f --- /dev/null +++ b/source/_integrations/kef.markdown @@ -0,0 +1,85 @@ +--- +title: KEF +description: Instructions on how to integrate KEF Speakers into Home Assistant. +logo: kef.png +ha_category: + - Media Player +ha_iot_class: Local Polling +ha_release: 0.104 +--- + +The `kef` platform allows you to control the [KEF LS50 Wireless](https://international.kef.com/products/ls50-wireless) and [KEF LSX](https://international.kef.com/products/lsx) speakers from Home Assistant. + +Supported devices: + +- KEF LS50 Wireless +- KEF LSX (untested) + +To add KEF Speakers to your installation, add the following to your `configuration.yaml` file: + +## Configuration + +```yaml +# Example configuration.yaml entry +- platform: kef + host: IP_ADDRESS + type: LS50 +``` + +{% configuration %} +host: + description: "IP address of the device. Example: 192.168.1.32" + required: true + type: string +type: + description: The speaker type, either `LS50` or `LSX`. + required: true + type: string +name: + description: The name of the device + required: false + default: KEF + type: string +port: + description: The port of the device + required: false + default: 50001 + type: integer +maximum_volume: + description: Maximum volume allowed. Number between 0 and 1. + required: false + default: 0.5 + type: float +volume_step: + description: Volume step when increasing volume. + required: false + default: 0.05 + type: float +inverse_speaker_mode: + description: Switch channels from L/R to R/L. + required: false + default: false + type: boolean +standby_time: + description: The speakers automatically turn to standby mode after either `20` or `60` minutes. Leave out for the speaker to never go into standby mode. + required: false + type: integer +{% endconfiguration %} + +## Advanced configuration example + +```yaml +# Example configuration.yaml entry +- platform: kef + host: IP_ADDRESS + type: LS50 + name: My KEF speakers + maximum_volume: 0.6 + volume_step: 0.05 +``` + +Notes: + +- The LS50 Wireless is tested with the latest firmware of 19-11-2019: `p6.3001902221.105039422` and older firmware: `p6.2101809171.105039422` + +[KEF Speakers]: /integrations/kef/ diff --git a/source/_integrations/light.rflink.markdown b/source/_integrations/light.rflink.markdown index 054831cffc7..98852be2d27 100644 --- a/source/_integrations/light.rflink.markdown +++ b/source/_integrations/light.rflink.markdown @@ -99,18 +99,6 @@ devices: required: false default: true type: boolean - aliasses: - description: (**deprecated**) Alternative RFLink ID's this device is known by. - required: false - type: [list, string] - group_aliasses: - description: "(**deprecated**) `aliases` which only respond to group commands." - required: false - type: [list, string] - no_group_aliasses: - description: "(**deprecated**) `aliases` which do not respond to group commands." - required: false - type: [list, string] {% endconfiguration %} ### Light state diff --git a/source/_integrations/local_ip.markdown b/source/_integrations/local_ip.markdown new file mode 100644 index 00000000000..f59d988cc4c --- /dev/null +++ b/source/_integrations/local_ip.markdown @@ -0,0 +1,29 @@ +--- +title: Local IP Address +description: Instructions on how to integrate the Local IP Address sensor into Home Assistant. +logo: home-assistant.png +ha_category: + - Network +ha_iot_class: Local Polling +ha_release: 0.104 +ha_config_flow: true +--- + +The `local_ip` sensor will expose the local (LAN) IP address of your Home Assistant instance. This can be useful when your instance has a static public hostname (for example, if you use the Nabu Casa service), but have a dynamically allocated local LAN address (for example, configured via DHCP). + +The sensor can be added via the user interface or using the `configuration.yaml` file. To enable this sensor, via the `configuration.yaml` file, add the following minimal configuration: + +```yaml +# Example configuration.yaml entry +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/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown index ecb714eaeeb..625f4ba4427 100644 --- a/source/_integrations/lock.mqtt.markdown +++ b/source/_integrations/lock.mqtt.markdown @@ -51,6 +51,16 @@ payload_unlock: required: false type: string default: UNLOCK +state_locked: + description: The value that represents the lock to be in locked state + required: false + type: string + default: locked +state_unlocked: + description: The value that represents the lock to be in unlocked state + required: false + type: string + default: unlocked optimistic: description: Flag that defines if lock works in optimistic mode. required: false diff --git a/source/_integrations/onewire.markdown b/source/_integrations/onewire.markdown index 46f8e1252f8..7e410160910 100644 --- a/source/_integrations/onewire.markdown +++ b/source/_integrations/onewire.markdown @@ -33,6 +33,10 @@ To edit `/boot/config.txt` on Hass.io use [this documentation](https://developer When an interface adapter is used, sensors can be accessed on Linux hosts via [owfs 1-Wire file system](https://owfs.org/). When using an interface adapter and the owfs, the `mount_dir` option must be configured to correspond a directory, where owfs device tree has been mounted. +### owserver + +When an interface adapter is used, you can also access sensors on a remote or local Linux host that is running owserver. owserver by default runs on port 4304. Use the `host` option to specify the host or IP of the remote server, and the optional `port` option to change the port from the default. + ### Units with multiple sensors This platform works with devices with multiple sensors which will cause a discontinuity in recorded values. Existing devices will receive a new ID and therefore show up as new devices. @@ -72,6 +76,15 @@ mount_dir: description: Location of device tree if owfs driver used. required: false type: string +host: + description: Remote or local host running owserver. + required: false + type: string +port: + description: "The port number of the owserver (requires `host`)." + required: false + type: integer + default: 4304 {% endconfiguration %} ### Configuration Example diff --git a/source/_integrations/person.markdown b/source/_integrations/person.markdown index 7d792c2bfd7..b1690fe65c0 100644 --- a/source/_integrations/person.markdown +++ b/source/_integrations/person.markdown @@ -87,6 +87,8 @@ person: - device_tracker.beacon ``` +If you change the YAML, you can reload it by calling the `person.reload` service. + ### Customizing the picture for a person By following the instructions on the [customizing entities](/docs/configuration/customizing-devices#entity_picture) page, you can customize the picture used for a person entity in the `customize:` section of your configuration. For example: diff --git a/source/_integrations/pi_hole.markdown b/source/_integrations/pi_hole.markdown index bc3cc350fa4..207992a9385 100644 --- a/source/_integrations/pi_hole.markdown +++ b/source/_integrations/pi_hole.markdown @@ -11,7 +11,7 @@ ha_codeowners: - '@johnluetke' --- -The `pi_hole` integration allows you to retrieve statistics and interact with a single [Pi-hole](https://pi-hole.net/) system. +The `pi_hole` integration allows you to retrieve statistics and interact with a [Pi-hole](https://pi-hole.net/) system. ## Configuration @@ -20,16 +20,23 @@ To enable this integration with the default configuration, add the following lin ```yaml # Example configuration.yaml entry pi_hole: + - host: IP_ADDRESS ``` {% configuration %} host: description: > - The hostname (and port), e.g., '192.168.0.3:4865' of the host where Pi-hole is running. If your Pi-Hole instance is the Hass.io add-on, you *must* specify port `4865`. + The hostname (and port), e.g. '192.168.0.3:4865' of the host where Pi-hole is running. Hass.io add-on users should be sure to specify port `4865`. + required: true + type: string +name: + description: > + The name for this Pi-hole. This name will be a part of the sensors created, e.g. `name: My Awesome Pi-hole` would result in sensor names beginning with `sensor.my_awesome_pi_hole_`. + + **Note:** If you configure multiple Pi-Holes, each one *must* have a unique name. required: false type: string - default: pi.hole - + default: Pi-hole location: description: The installation location of the Pi-hole API. required: false @@ -53,14 +60,39 @@ api_key: default: None {% endconfiguration %} -### Full example +### Full examples + +Single Pi-hole running via Hass.io add-on: ```yaml -# Example configuration.yaml entry pi_hole: - host: 'localhost:4865' - ssl: false - verify_ssl: false + - host: 'localhost:4865' +``` + +Multiple Pi-holes: + +```yaml +pi_hole: + - host: '192.168.0.2' + - host: '192.168.0.3' + name: 'Secondary Pi-Hole' +``` + +Pi-hole with a self-signed certificate: + +```yaml +pi_hole: + - host: 'pi.hole' + ssl: true + verify_ssl: false +``` + +Pi-hole with an `api_key` that allows it to be enabled or disabled: + +```yaml +pi_hole: + - host: 'pi.hole' + api_key: !secret pi_hole_api_key ``` ## Services @@ -69,17 +101,22 @@ The platform provides the following services to interact with your Pi-hole. ### Service `pi_hole.disable` -Disable your Pi-hole for the specified amount of time. +Disables configured Pi-hole(s) for the specified amount of time. | Service data attribute | Required | Type | Description | | ---------------------- | -------- | -------- | ----------- | | `duration` | `True` | timedelta | Time for which Pi-hole should be disabled | +| `name` | `False` | string | If preset, disables the named Pi-hole, otherwise, disables all configured Pi-holes | _Note: This service requires `api_key` to be specified in the configuration._ ### Service `pi_hole.enable` -Enable your Pi-hole. +Enables configured Pi-holes(s). + +| Service data attribute | Required | Type | Description | +| ---------------------- | -------- | -------- | ----------- | +| `name` | `False` | string | If preset, enables the named Pi-hole, otherwise, enables all configured Pi-holes | _Note: This service requires `api_key` to be specified in the configuration._ diff --git a/source/_integrations/pilight.markdown b/source/_integrations/pilight.markdown index 083225103f6..1c7f3617bd0 100644 --- a/source/_integrations/pilight.markdown +++ b/source/_integrations/pilight.markdown @@ -22,6 +22,7 @@ There is currently support for the following device types within Home Assistant: - [Binary Sensor](#binary-sensor) - [Sensor](#sensor) - [Switch](#switch) +- [Light](#light) ## Configuration @@ -304,6 +305,52 @@ switch: state: 'off' ``` +## Light + +Pilight dimmer devices, which can have different brightness values, can be used as a light. +The configuration parameters are the same for dimmers and switches. + +{% configuration %} +lights: + description: The list that contains all command lights. + required: true + type: string + keys: + entry: + description: Name of the command light, which are the same like for switches. Multiple entries are possible. + required: true + type: list +{% endconfiguration %} + +### Example + +```yaml +light: + - platform: pilight + lights: + test2: + on_code: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + 'on': 1 + off_code: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + 'off': 1 + on_code_receive: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + state: 'on' + off_code_receive: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + state: 'off' +``` + ## Troubleshooting - A list of tested RF transceiver hardware is available [here](https://manual.pilight.org/electronics/index.html). This might be useful before buying. diff --git a/source/_integrations/rflink.markdown b/source/_integrations/rflink.markdown index c41fece28ca..2b45a808c76 100644 --- a/source/_integrations/rflink.markdown +++ b/source/_integrations/rflink.markdown @@ -48,7 +48,7 @@ wait_for_ack: default: true type: boolean ignore_devices: - description: List of device id's to ignore. Supports wildcards (`*`) at the end. + description: List of device id's to ignore. Supports wildcards (`*`, `?`). required: false type: [list, string] reconnect_interval: @@ -137,10 +137,6 @@ rflink: This configuration will ignore the button `1` of the `newkaku` device with ID `000001`, all devices of the `digitech` protocol and all switches of the `kaku` protocol device with codewheel ID `1`. -
-Wildcards only work at the end of the ID, not in the middle or front! -
- ### Device support Even though a lot of devices are supported by RFLink, not all have been tested/implemented. If you have a device supported by RFLink but not by this integration please consider testing and adding support yourself. diff --git a/source/_integrations/ring.markdown b/source/_integrations/ring.markdown index 5b15811f835..a84b2540db0 100644 --- a/source/_integrations/ring.markdown +++ b/source/_integrations/ring.markdown @@ -11,6 +11,7 @@ ha_category: - Light ha_release: 0.42 ha_iot_class: Cloud Polling +ha_config_flow: true --- The `ring` implementation allows you to integrate your [Ring.com](https://ring.com/) devices in Home Assistant. @@ -22,14 +23,18 @@ There is currently support for the following device types within Home Assistant: - [Sensor](#sensor) - [Switch](#switch) -Currently only doorbells are supported by this sensor. -

This component does NOT allow for live viewing of your Ring camera within Home Assistant.

## Configuration +Go to the integrations page in your config and click on new integration -> Ring. + +## YAML configuration + +YAML configuration is around for people that prefer YAML, but it's not preferred! The YAML method does not work with two-factor authentication and it requires you to store your username/password. The normal method only requires you to enter username/password once. + To enable device linked in your [Ring.com](https://ring.com/) account, add the following to your `configuration.yaml` file: ```yaml @@ -48,36 +53,11 @@ password: description: The password for accessing your Ring account. required: true type: string -scan_interval: - description: How frequently to query for new video, or current sensor values in seconds - required: false - type: integer - default: 10 {% endconfiguration %} ## Binary Sensor -Once you have enabled the [Ring integration](/integrations/ring), you can start using a binary sensor. Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: ring -``` - -{% configuration %} -monitored_conditions: - description: Conditions to display in the frontend. The following conditions can be monitored. If not specified, all conditions below will be enabled. - required: false - type: list - keys: - ding: - description: Return a boolean value when the doorbell button was pressed. - motion: - description: Return a boolean value when a movement was detected by the Ring doorbell. -{% endconfiguration %} - -Currently it supports doorbell, external chimes and stickup cameras. +Once you have enabled the [Ring integration](/integrations/ring), you can start using a binary sensor. Currently, it supports doorbell, external chimes and stickup cameras. ## Camera @@ -85,24 +65,7 @@ Currently it supports doorbell, external chimes and stickup cameras. Please note that downloading and playing Ring video will require a Ring Protect plan. -Once you have enabled the [Ring integration](/integrations/ring), you can start using the camera platform. Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: ring -``` - -{% configuration %} -ffmpeg_arguments: - description: Extra options to pass to ffmpeg, e.g., image quality or video filter options. - required: false - type: string -{% endconfiguration %} - -**Note:** To be able to playback the last capture, it is required to install the `ffmpeg` component. Make sure to follow the steps mentioned at [FFMPEG](/integrations/ffmpeg/) documentation. - -Currently it supports doorbell and stickup cameras. +Once you have enabled the [Ring integration](/integrations/ring), you can start using the camera platform. Currently, it supports doorbell and stickup cameras. ## Saving the videos captured by your Ring Door Bell @@ -154,58 +117,12 @@ hass.services.call("downloader", "download_file", data) ## Sensor -Once you have enabled the [Ring integration](/integrations/ring), you can start using the sensor platform. Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: ring -``` - -{% configuration %} -monitored_conditions: - type: list - required: false - description: Conditions to display in the frontend. The following conditions can be monitored. If not specified, all conditions below will be enabled. - keys: - battery: - description: Return the battery level from device. - last_activity: - description: Return the timestamp from the last event captured (ding/motion/on demand) by the Ring doorbell camera. - last_ding: - description: Return the timestamp from the last time the Ring doorbell button was pressed. - last_motion: - description: Return the timestamp from the last motion event captured by the Ring doorbell camera. - volume: - description: Return the volume level from the device. - wifi_signal_category: - description: Return the WiFi signal level from the device. - wifi_signal_strength: - description: Return the WiFi signal strength (dBm) from the device. -{% endconfiguration %} - -Currently it supports doorbell, external chimes and stickup cameras. +Once you have enabled the [Ring integration](/integrations/ring), you can start using the sensor platform. Currently, it supports doorbell, external chimes and stickup cameras. ## Switch -Once you have enabled the [Ring integration](/integrations/ring), you can start using the switch platform. Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: ring -``` - -This will add a switch for every camera that supports a siren. Note the siren will only turn on for 30 seconds before automatically turning off. +Once you have enabled the [Ring integration](/integrations/ring), you can start using the switch platform. This will add a switch for every camera that supports a siren. Note the siren will only turn on for 30 seconds before automatically turning off. ## Light -Once you have enabled the [Ring integration](/integrations/ring), you can start using the light platform. Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: ring -``` - -This will add a light for every camera that supports a light (such as a flood light). +Once you have enabled the [Ring integration](/integrations/ring), you can start using the light platform. This will add a light for every camera that supports a light (such as a floodlight). diff --git a/source/_integrations/sensor.modbus.markdown b/source/_integrations/sensor.modbus.markdown index 13378090288..600eca91fbd 100644 --- a/source/_integrations/sensor.modbus.markdown +++ b/source/_integrations/sensor.modbus.markdown @@ -73,6 +73,11 @@ registers: description: Unit to attach to value. required: false type: integer + device_class: + description: The [type/class](/integrations/sensor/#device-class) of the sensor to set the icon in the frontend. + required: false + type: device_class + default: None count: description: Number of registers to read. required: false diff --git a/source/_integrations/sensor.rflink.markdown b/source/_integrations/sensor.rflink.markdown index b9896eb28c1..5db5a1a7e61 100644 --- a/source/_integrations/sensor.rflink.markdown +++ b/source/_integrations/sensor.rflink.markdown @@ -63,13 +63,9 @@ devices: description: "Alternative RFLink ID's this device is known by." required: false type: [list, string] - aliasses: - description: "(**deprecated**) Alternative RFLink ID's this device is known by." - required: false - type: [list, string] {% endconfiguration %} -## Sensors types +## Sensor types Sensor type values: diff --git a/source/_integrations/sentry.markdown b/source/_integrations/sentry.markdown new file mode 100644 index 00000000000..7ecbcae0d8a --- /dev/null +++ b/source/_integrations/sentry.markdown @@ -0,0 +1,33 @@ +--- +title: Sentry +description: Record errors to Sentry. +logo: sentry.svg +ha_category: + - System Monitor +ha_iot_class: Cloud Polling +ha_release: 0.104 +ha_config_flow: true +--- + +The `sentry` integration integrates with [Sentry](https://sentry.io/) to capture both logged errors as well as unhandled exceptions in Home Assistant. + +## Configuration + +To use the `sentry` integration in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sentry: + dsn: SENTRY_DSN +``` + +{% configuration %} +dsn: + description: The DSN provided to you by Sentry. + required: true + type: string +environment: + description: An environment name to associate with events. + required: false + type: string +{% endconfiguration %} diff --git a/source/_integrations/signal_messenger.markdown b/source/_integrations/signal_messenger.markdown new file mode 100644 index 00000000000..814108ba7ea --- /dev/null +++ b/source/_integrations/signal_messenger.markdown @@ -0,0 +1,81 @@ +--- +title: Signal Messenger +description: Instructions on how to integrate Signal Messenger within Home Assistant. +logo: signal_messenger.png +ha_category: + - Notifications +ha_release: 0.104 +--- + +The `signal_messenger` integration uses the [Signal Messenger REST API](https://github.com/bbernhard/signal-cli-rest-api) to deliver notifications from Home Assistant to your Android or iOs device. + +## Setup + +The requirements are: + +- You need to set up the Signal Messenger REST API. +- You need a spare phone number to register with the Signal Messenger service. + + +Please follow those [instructions](https://github.com/bbernhard/signal-cli-rest-api/blob/master/doc/HOMEASSISTANT.md), to set up the Signal Messenger REST API. + + +## Configuration + +To send Signal Messenger notifications with Home Assistant, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry for Signal Messenger +notify: + - name: signal + platform: signal_messenger + url: "http://127.0.0.1:8080" # the URL where the Signal Messenger REST API is listening + number: YOUR_PHONE_NUMBER # the sender number + recipients: # one or more recipients + - RECIPIENT1 +``` + +{% 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 + type: string + default: notify +url: + description: The URL where the Signal Messenger REST API listens for incoming requests. + required: true + type: string +number: + description: The sender number. + required: true + type: string +recipients: + description: A list of recipients. + required: true + type: string +{% endconfiguration %} + +## Examples + +A few examples on how to use this integration. + +### Text message + +```yaml +... +action: + service: notify.NOTIFIER_NAME + data: + message: "That's an example that sends a simple text message to the recipients specified in the configuration.yaml" +``` + +### Text message with an attachment + +```yaml +... +action: + service: notify.NOTIFIER_NAME + data: + message: "Alarm in the living room!" + attachment: "/tmp/surveillance_camera.jpg" +``` diff --git a/source/_integrations/starline.markdown b/source/_integrations/starline.markdown index 3473d10880e..e9d3037865a 100644 --- a/source/_integrations/starline.markdown +++ b/source/_integrations/starline.markdown @@ -33,7 +33,7 @@ This integration provides the following platforms: 2. Open the integrations page and add the StarLine integration. 3. Fill in your application ID, secret, login and password. -After adding the integration, you can configure the API update interval on the integration page. +After adding the integration, you can configure the API update interval using [`starline.set_scan_interval`](#set-scan-interval) service.
diff --git a/source/_integrations/stookalert.markdown b/source/_integrations/stookalert.markdown new file mode 100644 index 00000000000..ab60733e85f --- /dev/null +++ b/source/_integrations/stookalert.markdown @@ -0,0 +1,35 @@ +--- +title: "Stookalert" +description: "Instructions on how to use Stookalert data within Home Assistant" +logo: stookalert.png +ha_category: + - Binary Sensor + - Environment +ha_release: 0.104 +ha_iot_class: Cloud Polling +--- + +The `stookalert` sensor platform queries the [RIVM stookalert](https://www.rivm.nl/stookalert) API for unfavorable weather conditions or poor air quality. With a Stookalert, the RIVM calls on people not to burn wood. This can prevent health problems in people in the area. + + +## Configuration + +To enable the platform, add the following lines to your `configuration.yaml` file: + +```yaml +binary_sensor: + - platform: stookalert + province: YOUR_NL_PROVINCE +``` + +{% configuration %} +province: + description: a province to use for the binary sensor's state. Currently only provinces in the Netherlands are supported. Valid values are `Drenthe`, `Flevoland`, `Friesland`, `Gelderland`, `Groningen`, `Limburg`, `Noord-Brabant`, `Noord-Holland`, `Overijssel`, `Utrecht`, `Zeeland` or `Zuid-Holland`. + required: true + type: string +name: + description: The sensor name to use in the frontend. + required: false + default: "Stookalert" + type: string +{% endconfiguration %} diff --git a/source/_integrations/surepetcare.markdown b/source/_integrations/surepetcare.markdown new file mode 100644 index 00000000000..72e70911314 --- /dev/null +++ b/source/_integrations/surepetcare.markdown @@ -0,0 +1,86 @@ +--- +title: Sure Petcare +description: Instructions on how to integrate the Sure Petcare cat and pet flaps into Home Assistant. +logo: sure_petcare.png +ha_category: + - Binary Sensor + - Sensor +ha_release: 0.104 +ha_iot_class: Cloud Polling +--- + +The `surepetcare` component allows you to get information on your Sure Petcare Connect Pet or Cat Flap. + +## Configuration + +To add a flap and pet, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +surepetcare: + username: x@y.com + password: v3rys3cr3t! + household_id: 1337 + flaps: [{id: 2337, name: Flap}] + pets: [{id: 3337, name: Pet}] +``` + +{% configuration %} + username: + description: The Sure Petcare Username/Email + required: true + type: string + password: + description: The Sure Petcare Password + required: true + type: string + household_id: + description: The Sure Petcare household_id + required: true + type: integer + flaps: + description: The Sure Petcare flaps + required: true + type: map + keys: + id: + description: The Sure Petcare id of a flap + required: true + type: integer + name: + description: A name for the flap + required: true + type: string + pets: + description: Pets managed by Sure Petcare flap(s) + required: true + type: map + keys: + id: + description: The Sure Petcare id of a pet + required: true + type: integer + name: + description: The name of the pet + required: true + type: string + icon: + description: "Icon to display (e.g., `mdi:cat`)" + required: false + default: "mdi:cat" + type: string + scan_interval: + description: "Minimum time interval between updates. Supported formats: `scan_interval: 'HH:MM:SS'`, `scan_interval: 'HH:MM'` and Time period dictionary (see example below)." + required: false + default: 3 minutes + type: time + device_class: + description: The type/class of the sensor to set the icon in the frontend. + required: false + default: lock + type: device_class +{% endconfiguration %} + +## Getting the IDs of your household, flaps and pets + +For now, please use the [sp_cli.py](https://github.com/rcastberg/sure_petcare/blob/master/sp_cli.py) from [@rcastberg](https://github.com/rcastberg) to fetch the IDs from the Sure Petcare API. With default setting, the IDs will be written as JSON to `~/.surepet.cache`. diff --git a/source/_integrations/switch.rflink.markdown b/source/_integrations/switch.rflink.markdown index 263a788bc28..cc46fb0915c 100644 --- a/source/_integrations/switch.rflink.markdown +++ b/source/_integrations/switch.rflink.markdown @@ -82,20 +82,20 @@ devices: default: 1 type: integer group: - description: Allow light to respond to group commands (ALLON/ALLOFF). + description: Allow switch to respond to group commands (ALLON/ALLOFF). required: false default: true type: boolean aliases: - description: "(**deprecated**) Alternative RFLink ID's this device is known by." + description: Alternative RFLink ID's this device is known by. required: false type: [list, string] group_aliases: - description: "(**deprecated**) `aliases` which only respond to group commands." + description: "`aliases` which only respond to group commands." required: false type: [list, string] no_group_aliases: - description: "(**deprecated**) `aliases` which do not respond to group commands." + description: "`aliases` which do not respond to group commands." required: false type: [list, string] {% endconfiguration %} diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown index 068eb94c1cc..d66cc6bf56e 100644 --- a/source/_integrations/tado.markdown +++ b/source/_integrations/tado.markdown @@ -13,7 +13,7 @@ ha_codeowners: - '@michaelarnauts' --- -The `tado` integration platform is used as an interface to the [my.tado.com](https://my.tado.com/webapp/#/account/sign-in) website. +The `tado` integration platform is used as an interface to the [my.tado.com](https://my.tado.com/) website. There is currently support for the following device types within Home Assistant: @@ -34,16 +34,21 @@ tado: {% configuration %} username: - description: Your username for my.tado.com. + description: Your username for [my.tado.com](https://my.tado.com/). required: true type: string password: - description: Your password for my.tado.com. + description: Your password for [my.tado.com](https://my.tado.com/). required: true type: string +fallback: + description: Indicates if you want to fallback to Smart Schedule on the next Schedule change, or stay in Manual mode until you set the mode back to Auto. + required: false + type: boolean + default: true {% endconfiguration %} -The tado thermostats are internet connected thermostats. There exists an unofficial API at [my.tado.com](https://my.tado.com/webapp/#/account/sign-in), which is used by their website and now by this component. +The tado thermostats are internet connected thermostats. There exists an unofficial API at [my.tado.com](https://my.tado.com/), which is used by their website and now by this component. It currently supports presenting the current temperature, the setting temperature and the current operation mode. Switching the mode is also supported. If no user is at home anymore, the devices are showing the away-state. Switching to away-mode is not supported. diff --git a/source/_integrations/telegram_chatbot.markdown b/source/_integrations/telegram_chatbot.markdown index f2aab30994b..a95a4e8848f 100644 --- a/source/_integrations/telegram_chatbot.markdown +++ b/source/_integrations/telegram_chatbot.markdown @@ -328,7 +328,7 @@ Message editor: platform: event event_type: telegram_callback event_data: - data: '/edit_msg' + command: '/edit_msg' action: - service: telegram_bot.answer_callback_query data_template: @@ -360,7 +360,7 @@ Keyboard editor: platform: event event_type: telegram_callback event_data: - data: '/remove button' + command: '/remove button' action: - service: telegram_bot.answer_callback_query data_template: @@ -385,7 +385,7 @@ Only acknowledges the 'NO' answer: platform: event event_type: telegram_callback event_data: - data: '/do_nothing' + command: '/do_nothing' action: - service: telegram_bot.answer_callback_query data_template: @@ -394,6 +394,29 @@ Only acknowledges the 'NO' answer: ``` {% endraw %} +Telegram callbacks also support arguments and commands the same way as normal messages. + +{% raw %} +```yaml +- alias: 'Telegram bot repeats arguments on callback query' + hide_entity: true + trigger: + platform: event + event_type: telegram_callback + event_data: + command: '/repeat' + action: + - service: telegram_bot.answer_callback_query + data_template: + show_alert: true + callback_query_id: '{{ trigger.event.data.id }}' + message: 'I repeat: {{trigger.event.data["args"]}}' +``` +{% endraw %} + +In this case, having a callback with `/repeat 1 2 3` with pop a notification saying `I repeat: [1, 2, 3]` + + For a more complex usage of the `telegram_bot` capabilities, using [AppDaemon](/docs/ecosystem/appdaemon/tutorial/) is advised. This is how the previous 4 automations would be through a simple AppDaemon app: diff --git a/source/_integrations/tesla.markdown b/source/_integrations/tesla.markdown index d9814a6f778..6f7a5ef81f2 100644 --- a/source/_integrations/tesla.markdown +++ b/source/_integrations/tesla.markdown @@ -12,6 +12,7 @@ ha_category: - Switch ha_release: 0.53 ha_iot_class: Cloud Polling +ha_config_flow: true ha_codeowners: - '@zabuldon' --- @@ -21,7 +22,7 @@ The `Tesla` integration offers integration with the [Tesla](https://auth.tesla.c This integration provides the following platforms: - Binary sensors - such as parking and charger connection. -- Sensors - such as Battery level, Inside/Outside temperature, odometer, and estimated range. +- 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. Enables you to control Tesla's door lock - Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system. @@ -29,7 +30,11 @@ This integration provides the following platforms: ## Configuration -To use Tesla in your installation, add the following to your `configuration.yaml` file: +Home Assistant offers the Tesla integration through **Configuration** -> **Integrations** -> **Tesla**. + +Enter username and password and then continue. + +Alternatively, Home Assistant will also load Tesla via the `configuration.yaml`. Add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/time_date.markdown b/source/_integrations/time_date.markdown index 84d09bc01e2..b4cfe86c2ad 100644 --- a/source/_integrations/time_date.markdown +++ b/source/_integrations/time_date.markdown @@ -22,13 +22,14 @@ sensor: - 'time' - 'date' - 'date_time' + - 'date_time_utc' - 'date_time_iso' - 'time_date' - 'time_utc' - 'beat' ``` -- **display_options** array (*Required*): The option to display. The types *date_time*, *time_date*, and *date_time_iso* shows the date and the time. The other types just the time or the date. *beat* shows the [Swatch Internet Time](https://www.swatch.com/en_us/internet-time). +- **display_options** array (*Required*): The option to display. The types *date_time*, *date_time_utc*, *time_date*, and *date_time_iso* shows the date and the time. The other types just the time or the date. *beat* shows the [Swatch Internet Time](https://www.swatch.com/en_us/internet-time).

diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index 82cb21c4c39..9239df07f6d 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -96,6 +96,10 @@ Manually finish a running timer earlier than scheduled. You can also use `entity | ---------------------- | -------- | ----------- | | `entity_id` | no | Name of the entity to take action, e.g., `timer.timer0`. | +### Service `timer.reload` + +Reload `timer`'s configuration without restarting Home Assistant itself. This service takes no service data attributes. + ### Use the service Select service developer tool icon **Services** from the **Developer Tools**. Choose **timer** from the list of **Domains**, select the **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. diff --git a/source/_integrations/tmb.markdown b/source/_integrations/tmb.markdown new file mode 100644 index 00000000000..47ed71cf9b6 --- /dev/null +++ b/source/_integrations/tmb.markdown @@ -0,0 +1,57 @@ +--- +title: "Transports Metropolitans de Barcelona" +description: "Instructions on how to integrate TMB iBus sensor within Home Assistant." +logo: tmb.png +ha_category: + - Transport +ha_release: 0.104 +ha_iot_class: Local Polling +--- + +This sensor will provide you the remaining time, in minutes, for the next bus in a specific stop by using the [iBus service](https://www.tmb.cat/en/barcelona/tmb-ibus). + +You must create an application on [developer.tmb.cat](https://developer.tmb.cat/account/applications/public/new) to obtain the `app_id` and `app_key` values that you will need. + +Add the data to your `configuration.yaml` file as shown in the example: + +```yaml +# Example configuration.yaml entry +sensor: +- platform: tmb + app_id: !secret tmb_app_id + app_key: !secret tmb_app_key + stops: + - line: V25 + stop: 3258 +``` + +{% configuration %} +app_id: + description: Your TMB APP identifier. + required: true + type: string +app_key: + description: Your TMB APP key. + required: true + type: string +stops: + description: List of bus stops to track. + required: false + type: list + keys: + line: + description: Identifier of the line to track. + required: true + type: string + stop: + description: Stop identifier. + required: true + type: integer + name: + description: Name you want to use to identifier that stop. + required: false + type: string + default: "LINE - STOP" +{% endconfiguration %} + +Data provided by [TMB](https://tmb.cat/). diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index d1e4af2fcf8..ad3f92b5b92 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -39,7 +39,7 @@ source: required: true type: string cycle: - description: How often to reset the counter. Valid values are `hourly`, `daily`, `weekly`, `monthly` and `yearly`. + description: How often to reset the counter. Valid values are `hourly`, `daily`, `weekly`, `monthly`, `quarterly` and `yearly`. required: true type: string offset: diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown index 0f673149d06..50f3475d9da 100644 --- a/source/_integrations/velbus.markdown +++ b/source/_integrations/velbus.markdown @@ -8,6 +8,7 @@ ha_category: - Climate - Sensor - Switch + - Light ha_iot_class: Local Push ha_release: '0.50' ha_config_flow: true @@ -15,7 +16,7 @@ ha_codeowners: - '@cereal2nd' --- -The `velbus` integration supports the Velbus USB, Velbus serial and a TCP/IP gateway. +The `velbus` integration is used to control [Velbus](https://www.velbus.eu/?lang=en) modules. It supports the Velbus USB, Velbus serial and a TCP/IP gateway. There is currently support for the following device types within Home Assistant: @@ -24,6 +25,9 @@ There is currently support for the following device types within Home Assistant: - Sensor - Switch - Cover +- Light + +The pushbutton LEDs of input modules are disabled by default. These can be enabled from the `Devices` panel in the `Configuration` page of the web interface. ## Configuration @@ -38,7 +42,7 @@ velbus: port: 'PORT_STRING' ``` -## Port Sstring +## Port String The port string used in the user interface or the configuration file can have 2 formats: @@ -51,3 +55,55 @@ port: required: true type: string {% endconfiguration %} + +## Example automation + +The Velbus integration allows you to link a Velbus button (i.e., a button of a [VMBGPOD](https://www.velbus.eu/products/view/?id=416302&lang=en) module) to a controllable entity of Home Assistant. +The actual linking can be realized by two automation rules. One rule to control the device using the push button and a second rule to update the LED state of the push button as soon as the entity state changes. + +```yaml +# Control light living from Velbus push_button_10 +- id: 'Control_light_living_from_Velbus' + alias: Control light living using Velbus push_button_10 + trigger: + - entity_id: binary_sensor.push_button_10 + platform: state + to: 'on' + condition: [] + action: + - entity_id: light.living + service: light.toggle + +# Keep status LED push_button_10 in sync to status light living +- id: 'Update LED of push_button_10' + alias: Update LED state of push_button_10 + trigger: + - entity_id: light.living + platform: state + to: 'on' + - entity_id: light.living + platform: state + to: 'off' + condition: [] + action: + - condition: or + conditions: + - condition: and + conditions: + - condition: state + entity_id: light.led_push_button_10 + state: 'on' + - condition: state + entity_id: light.living + state: 'off' + - condition: and + conditions: + - condition: state + entity_id: light.led_push_button_10 + state: 'off' + - condition: state + entity_id: light.living + state: 'on' + - entity_id: light.led_push_button_10 + service: light.toggle +``` diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown index 721facf9991..56e8e220074 100644 --- a/source/_integrations/venstar.markdown +++ b/source/_integrations/venstar.markdown @@ -55,6 +55,10 @@ password: description: Password for the thermostat. required: false type: string +pin: + description: Pin for Lockscreen (required if lock screen enabled) + required: false + type: string ssl: description: Whether to use SSL or not when communicating. required: false @@ -82,6 +86,7 @@ climate: ssl: true username: OPTIONAL_AUTH_USER_HERE password: OPTIONAL_AUTH_PASS_HERE + pin: LOCKSCREEN_PIN timeout: 5 humidifier: false ``` diff --git a/source/_integrations/vivotek.markdown b/source/_integrations/vivotek.markdown index 64bff28a801..4c4e63b41b2 100644 --- a/source/_integrations/vivotek.markdown +++ b/source/_integrations/vivotek.markdown @@ -45,6 +45,11 @@ password: description: The password for accessing your camera. required: true type: string +authentication: + description: "Type for authenticating the requests `basic` or `digest`." + required: false + default: basic + type: string security_level: description: The security level of the user accessing your camera. This could be `admin` or `viewer`. required: false @@ -83,6 +88,7 @@ camera: ssl: true username: !secret fd_camera_username password: !secret fd_camera_pwd + authentication: digest security_level: admin verify_ssl: false framerate: 5 diff --git a/source/_integrations/vizio.markdown b/source/_integrations/vizio.markdown index c2ab4d0faf8..9acaa316269 100644 --- a/source/_integrations/vizio.markdown +++ b/source/_integrations/vizio.markdown @@ -99,11 +99,6 @@ device_class: required: false type: string default: tv -suppress_warning: - description: Set to `true` to disable self-signed certificate warnings. - required: false - default: false - type: string {% endconfiguration %} ## Notes and limitations diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown index fb4895bba60..628cabf70e8 100644 --- a/source/_integrations/webostv.markdown +++ b/source/_integrations/webostv.markdown @@ -16,13 +16,12 @@ There is currently support for the following device types within Home Assistant: - [Media Player](#media-player) - [Notifications](#notifications) -## Media Player To begin with enable *LG Connect Apps* feature in *Network* settings of the TV [instructions](https://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others). Once basic configuration is added to your `configuration.yaml` file. A notification should be visible in the frontend's **Notification** section. Follow the instructions and accept the pairing request on your TV. -Pairing information will be saved to the `filename:` provided in the configuration. This process is IP address-sensitive, in case the IP address of your TV would change in future. +Pairing information will be saved to a configuration file `webostv.conf` in the Home Assistant configuration directory. This process is IP address-sensitive, in case the IP address of your TV would change in future. ### Configuration @@ -30,28 +29,23 @@ To add a TV to your installation, add the following to your `configuration.yaml` ```yaml # Example configuration.yaml entry -media_player: - - platform: webostv +webostv: ``` {% configuration %} host: description: "The IP of the LG webOS Smart TV, e.g., `192.168.0.10`." - required: false + required: true type: string name: description: The name you would like to give to the LG webOS Smart TV. required: false type: string -filename: - description: "The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. **NOTE**: When using multiple TVs each TV will need its own unique file." +standby_connection: + description: Keep connection alive when TV is in standby (this should be set to try if and only if the "Standby+" option is enabled in the TV UI.) required: false - type: string - default: webostv.conf -timeout: - description: The timeout for communication with the TV in seconds. - required: false - type: time + type: boolean + default: false turn_on_action: description: Defines an [action](/docs/automation/action/) to turn the TV on. required: false @@ -67,30 +61,30 @@ customize: type: list {% endconfiguration %} -If you do not specify `host:`, all LG webOS Smart TVs within your network will be auto-discovered. - ### Example A full configuration example will look like the sample below: ```yaml # Example configuration.yaml entry +webostv: + host: 192.168.0.10 + name: Living Room TV + standby_connection: true + turn_on_action: + service: persistent_notification.create + data: + message: "Turn on action" + customize: + sources: + - livetv + - youtube + - makotv + - netflix + media_player: - - platform: webostv - host: 192.168.0.10 - name: Living Room TV - filename: webostv.conf - timeout: 5 - turn_on_action: - service: persistent_notification.create - data: - message: "Turn on action" - customize: - sources: - - livetv - - youtube - - makotv - - netflix + +notify: ``` Avoid using `[ ]` in the `name:` of your device. @@ -107,14 +101,17 @@ On newer models (2017+), WakeOnLan may need to be enabled in the TV settings by # Example configuration.yaml entry wake_on_lan: # enables `wake_on_lan` domain +webostv: + host: 192.168.0.10 + #other settings + turn_on_action: + service: wake_on_lan.send_magic_packet + data: + mac: "B4:E6:2A:1E:11:0F" + media_player: - - platform: webostv - host: 192.168.0.10 - #other settings - turn_on_action: - service: wake_on_lan.send_magic_packet - data: - mac: "B4:E6:2A:1E:11:0F" + +notify: ``` Any other [actions](/docs/automation/action/) to power on the device can be configured. @@ -154,61 +151,47 @@ The behaviour of the next and previous buttons is different depending on the act - if the source is 'LiveTV' (television): next/previous buttons act as channel up/down - otherwise: next/previous buttons act as next/previous track +### Generic commands and buttons + +Available services: `button`, `command` + +#### Service `webostv.button` + +| Service data attribute | Optional | Description | +|------------------------|----------|---------------------------------------------------------| +| `entity_id` | no | Target a specific webostv media player. | +| `button` | no | Name of the button. Known possible values are `LEFT`, `RIGHT`, `DOWN`, `UP`, `HOME`, `BACK`, `ENTER`, `DASH`, `INFO`, `ASTERISK`, `CC`, `EXIT`, `MUTE`, `RED`, `GREEN`, `BLUE`, `VOLUMEUP`, `VOLUMEDOWN`, `CHANNELUP`, `CHANNELDOWN`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9` | + +#### Service `webostv.command` + +| Service data attribute | Optional | Description | +|------------------------|----------|---------------------------------------------------------| +| `entity_id` | no | Target a specific webostv media player. | +| `command` | no | Endpoint for the command, e.g. `media.controls/rewind`. The full list of known endpoints is available at https://github.com/bendavid/aiopylgtv/blob/master/aiopylgtv/endpoints.py | + +#### Example + +```yaml +script: + home_button: + sequence: + - service: webostv.button + data: + entity_id: media_player.lg_webos_smart_tv + button: "HOME" + + rewind_command: + sequence: + - service: webostv.command + data: + entity_id: media_player.lg_webos_smart_tv + command: "media.controls/rewind" +``` + ## Notifications The `webostv` notify platform allows you to send notifications to a LG webOS Smart TV. -When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. - -To add a TV to your installation, add the following to your `configuration.yaml` file and follow the configurator instructions: - -```yaml -# Example configuration.yaml entry -notify: - - platform: webostv - host: 192.168.0.112 - name: livingroom_tv - filename: webostv.conf -``` - -{% configuration %} -host: - description: The IP of the LG webOS Smart TV, e.g., 192.168.0.10 - required: true - type: string -name: - description: The name you would like to give to the LG webOS Smart TV. - required: true - type: string -filename: - description: "The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. **NOTE**: When using multiple TVs each TV will need its own unique file." - required: false - type: string - default: webostv.conf -icon: - description: The path to an image file to use as the icon in notifications. - required: false - type: [string, icon] -{% endconfiguration %} - -A possible automation could be: - -{% raw %} -```yaml -# Example configuration.yaml entry -automation: - - alias: Open a window - trigger: - platform: numeric_state - entity_id: sensor.netatmo_livingroom_co2 - above: 999 - action: - service: notify.livingroom_tv - data: - message: "You should open a window! (Livingroom Co2: {{ states('sensor.netatmo_livingroom_co2') }}ppm)" -``` -{% endraw %} - The icon can be overridden for individual notifications by providing a path to an alternative icon image to use: ```yaml diff --git a/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown b/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown index 05a28c95ea3..57c1f6060ed 100644 --- a/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown +++ b/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown @@ -43,11 +43,11 @@ automation: event: sunset offset: "-01:00:00" - platform: state - entity_id: group.all_devices + entity_id: all state: home condition: - platform: state - entity_id: group.all_devices + entity_id: all state: home - platform: time after: "16:00:00" diff --git a/source/_posts/2020-01-15-release-104.markdown b/source/_posts/2020-01-15-release-104.markdown new file mode 100644 index 00000000000..157b480a860 --- /dev/null +++ b/source/_posts/2020-01-15-release-104.markdown @@ -0,0 +1,1991 @@ +--- +layout: post +title: "0.104: Sentry, Signal Messenger, IntesisHome, Sure Petcare, KEF" +description: "Starting this new year with a packed release! Improved entity loading on startup and multi-select entities in Lovelace, ability to ignore a discovered device." +date: 2020-01-15 00:00:00 +date_formatted: "January 15, 2020" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: Release-Notes +og_image: /images/blog/2020-01-0.104/components.png +--- + + + +The first release of the new decade! Happy New Year! + +We are starting this new year with a packed release! So let us dive in! + +- [Improved entity handling on startup](/blog/2020/01/15/release-104/#improved-entity-handling-on-startup) +- [Ignore discovered devices & services](/blog/2020/01/15/release-104/#ignore-discovered-devices--services) +- [Reload all the input things & bye generated groups](/blog/2020/01/15/release-104/#reload-all-the-input-things--bye-generated-groups) +- [Add a device to Lovelace](/blog/2020/01/15/release-104/#add-a-device-to-lovelace) +- [Multi-select entity management](/blog/2020/01/15/release-104/#multi-select-entity-management) +- [ZHA configuration panel improvements](/blog/2020/01/15/release-104/#zha-configuration-panel-improvements) +- [Removing your Lovelace configuration](/blog/2020/01/15/release-104/#removing-your-lovelace-configuration) +- [In other news](/blog/2020/01/15/release-104/#in-other-news) +- [New Integrations](/blog/2020/01/15/release-104/#new-integrations) +- [New Platforms](/blog/2020/01/15/release-104/#new-platforms) +- [Breaking Changes](/blog/2020/01/15/release-104/#breaking-changes) +- [Beta Fixes](/blog/2020/01/15/release-104/#beta-fixes) +- [All changes](/blog/2020/01/15/release-104/#all-changes) + +## Improved entity handling on startup + +We are now restoring all entities, stored in the registry, +on Home Assistant startup. + +During the startup of Home Assistant, all your configured integrations are +loaded. Each of those integrations results in one or more devices +and entities. However, there was a catch! + +The loading of some integrations could take a while, which caused some entities +not to be available immediately. Sometimes, this affected multiple things, like +missing devices in HomeKit/Google/Alexa or those big red boxes in our Lovelace +UI. We are sure, at some point, we've all experienced that. + +As of this release, all these entities, if registered in our entity registry, +will be restored as "unavailable". That allows other parts of our system to use +them immediately, solving a lot of common issues during startup. + +These restored entities can be differentiated from normal "unavailable" entities +by an additional state attribute added to those entities: "restored". + +

+Screenshot of a removing an unavailable entity +Screenshot of a removing an unavailable entity. +

+ +As a result, entities will no longer "disappear", so restored and unavailable +entities are removable, as shown in the screenshot above. Please note that, +if an integration provides an unavailable entity, the providing integration +needs to be removed first, or else, those entities can not be deleted. + +## Ignore discovered devices & services + +Got that one device that gets discovered over and over again? + +It is now possible to ignore a specific discovered device with a single click! + +

+Screenshot of a discovered Hue bridge +Screenshot of a discovered Hue bridge. +

+ +It requires the integration to be updated to support this. For this release, +the Hue, Axis, deCONZ, WLED and HomeKit integrations are updated to support +this new feature. + +## Reload all the input things & bye generated groups + +All [`input_*` integrations](/integrations/#search/input) now have a `reload` +service to reload your YAML configuration for these integrations, without +the need to restart Home Assistant. + +Furthermore, time to say bye-bye, to all generated entity groups +(`group.all_*`). Chances are, you have never heard of those because they were +hidden. However, if you rely on those groups for your automations, you +need to adjust those automations. +Check out the [breaking changes section](#breaking-changes) for more information. + +## Add a device to Lovelace + +We added a button to the device page to add all entities of a device to Lovelace +in a blip! Home Assistant suggests cards based on the type of entities the +device provides so that you can add them to a view of your choice instantly. + +If you are using Lovelace in YAML mode, you still can use this new feature. The +generated YAML can be copied and pasted into your configuration file. + +

+Screenshot of a card suggestion for a light device +Screenshot of a card suggestion for a light device. +

+ +This same functionality is also added to the unused entities page of Lovelace. + +## Multi-select entity management + +Entity management has never been easier; It now allows for changing multiple +entities at once. Select multiple entities and remove, enable or disable them +with one click. + +

+Screenshot of the entities configuration page with multi selection +Screenshot of the entities configuration page with multi selection. +

+ +## ZHA configuration panel improvements + +[@dmulcahey][@dmulcahey] did a lot of work on the ZHA config panel this release. + +The navigation for the ZHA configuration panel has been redesigned to provide +a better user experience on mobile and desktop. + +As part of the redesign, full Zigbee group management has been added, allowing +you to create and manage Zigbee groups right from the UI. + +

+Screenshot of the ZHA configuration panel +Screenshot of the ZHA configuration panel. +

+ +In a future releases, the ability to bind devices directly to groups, +will be added as well. + +## Removing your Lovelace configuration + +Want to start your Lovelace configuration from scratch? Or go back to the +automatically generated Lovelace interface? + +Now you can by clearing the Lovelace configuration in the raw configuration +editor and saving it. + +

+Screenshot of the remove Lovelace confirmation dialog +Screenshot of the remove Lovelace confirmation dialog. +

+ +## In other news + +### Meanwhile, HassOS 3.8 got released! + + + +Besides the release of HassOS 3.8, the first beta version of HassOS 4.0 is +now available as well. This beta release adds support for +[Hardkernel's ODROID-N2](https://www.hardkernel.com/shop/odroid-n2-with-4gbyte-ram/)! + +The [ODROID-N2](https://www.hardkernel.com/shop/odroid-n2-with-4gbyte-ram/) +is a great and powerful alternative for the Raspberry Pi. + +### Custom now playing poster Lovelace card + +Brad Crc made this [impressive demo](https://www.reddit.com/r/homeassistant/comments/e7wo0j/floor_plan_how_to_show_currently_playing_media/) +of setting up a custom now playing poster card in Lovelace floor plans. +This allows you to show currently playing media in your floor plan! + +
+ +
+ +### Bas showing his Lovelace theme on his setup + +Bas Nijholt kept seeing his own theme popping up on Reddit, so he decided it was +time for him to show off his Lovelace dashboard, featuring this lovely theme. + +
I keep seeing my own theme on Reddit, so now it's my turn! [OC] from r/homeassistant
+ + +His theme is [publicly available on GitHub](https://github.com/basnijholt/lovelace-ios-dark-mode-theme/). + +## New Integrations + +- Add Elgato Key Light integration ([@frenck] - [#29592]) ([elgato docs]) (new-integration) +- Add IntesisHome Climate Platform ([@jnimmo] - [#25364]) ([intesishome docs]) (new-integration) +- Add Signal Messenger integration ([@bbernhard] - [#28537]) ([signalmessenger docs]) (new-integration) +- Revert Tahoma removal ([@balloob] - [#29840]) ([tahoma docs]) (new-integration) +- Add GIOS integration ([@bieniu] - [#28719]) ([gios docs]) (new-integration) +- Add local_ip component ([@issacg] - [#29973]) ([localip docs]) (new-integration) +- Add KEF speakers integration ([@basnijholt] - [#28959]) ([kef docs]) (new-integration) +- Add Sentry component ([@dcramer] - [#30422]) ([sentry docs]) (new-integration) +- Add surepetcare component ([@benleb] - [#24426]) ([surepetcare docs]) (new-integration) +- Add Brother Printer integration ([@bieniu] - [#30359]) ([brother docs]) (new-integration) +- Add TMB sensor ([@alemuro] - [#27964]) ([tmb docs]) (new-integration) +- Add Stookalert integration ([@fwestenberg] - [#30306]) ([stookalert docs]) (new-integration) + +## New Platforms + +- Add battery sensor to iCloud ([@Quentame] - [#29818]) ([icloud docs]) (new-platform) +- Add light support to Velbus integration ([@brefra] - [#30323]) ([velbus docs]) (new-platform) +- Add support for v1 and v2 HomeKit fans. ([@Jc2k] - [#30503]) ([homekit_controller docs]) (new-platform) +- Add support for homekit air quality sensors ([@Jc2k] - [#30510]) ([homekit_controller docs]) (new-platform) +- Add pilight dimmer as light component ([@Trekky12] - [#30107]) ([pilight docs]) (new-platform) + +## 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/home-assistant/issues). +Make sure to fill in all fields of the issue template, that is helping us a lot! + + + +## Breaking Changes + +- __Default groups__ - Entity integrations will no longer automatically maintain the hidden groups with all of their entities. The following groups are no longer automatically created and maintained: + + - `group.all_automations` + - `group.all_covers` + - `group.all_devices` + - `group.all_fans` + - `group.all_lights` + - `group.all_locks` + - `group.all_plants` + - `group.all_remotes` + - `group.all_scripts` + - `group.all_switches` + - `group.all_vacuum_cleaners` + - `group.calendar` + - `group.remember_the_milk_accounts` + + The automation and script configuration panels are updated to show and manage all automations/scripts. If you want to show cards in your Lovelace UI with all entities for a single domain, use the auto-entities card. If you want to target all entities in a service call, use `all` as value for `entity_id`. + + ([@balloob] - [#23789]) ([automation docs]) ([calendar docs]) ([cover docs]) ([device_tracker docs]) ([fan docs]) ([light docs]) ([lock docs]) ([plant docs]) ([remember_the_milk docs]) ([remote docs]) ([script docs]) ([switch docs]) ([vacuum docs]). + +- __UPnP__ - UPnP/IGD units of measurement have been aligned with other integrations and common uses, they're now kB and kB/s instead of kbyte and kbyte/sec respectively. - ([@scop] - [#29552]) ([upnp docs]) + +- __Worx Landroid__ - The `worxlandroid` sensor has been changed to not return the hardcoded state values `manual-stop`, `charging`, `charging-complete`, `going-home`, `mowing`, instead use the states given from the Landroid to Home Assistant. + + This includes the state `idle`, which means that something is broken with the mower. You can use this as a notification to check the physical state of the mower. + + You need to update any automations that depend on the state of the sensor. + + ([@geraldhansen] - [#27453]) ([worxlandroid docs]) + +- __Apple iCloud__ - The iCloud component is no longer part of the device tracker platform and is now an integration, which is configurable via the UI. The iCloud cookie folder moved from `[HA_dir]/icloud` to `[HA_dir]/.storage/icloud`.- ([@Quentame] - [#28968]) ([icloud docs]) + +- __Pi-hole__ - The default value for `host` is removed, and now must be specified manually. - ([@johnluetke] - [#27569]) ([pi_hole docs]) + + Example configuration: + + ```yaml + pi_hole: + - host: pi.hole + ssl: false + - host: backup.pi.hole + ``` + +- __HERE Travel Time__ - HERE has deprecated the usage of `app_code` and new users can only generate an `api_key`. If you are already using HERE Travel Time, you have to follow the [migration guide](https://developer.here.com/documentation/authentication/dev_guide/topics/api-key-credentials.html) to retrieve the, now required, `api_key`. - ([@eifinger] - [#29966]) ([here_travel_time docs]) + + Example configuration: + + ```yaml + sensor: + - platform: here_travel_time + api_key: "YOUR_API_KEY" + origin_latitude: "51.222975" + origin_longitude: "9.267577" + destination_latitude: "51.257430" + destination_longitude: "9.335892" + ``` + +- __ZHA__ - The default divisor for `active_power` has changed. Now, multiplier and divisor both default to 1 if the device does not support these attributes or when getting those attributes from the device fails. - ([@Adminiuga] - [#30130]) ([zha docs]) + +- __Keba__ - The unique_ids of the entities have changed and are now more future proof. The default `name` and `entity_id` of the entities have also changed. You need to clear stale entries from the entity registry and update concerned automations and scripts. - ([@dannerph] - [#30125]) ([keba docs]) + +- __Tesla__ - Config flow has been added for Tesla. Device tracker entity names have changed due to this. They now follow the naming convention of the rest of the Tesla entities. The `id` device tracker entity attribute was also removed because it is a duplicate of `trackr_id`. - ([@alandtse] - [#28744]) ([tesla docs]) +- __Huawei LTE__ - The Huawei LTE notify service name is now configurable. The default name for the Huawei LTE notify service has changed to `notify.huawei_lte` to avoid conflicts with other notify services. An option to provide a name for the service has also been added. - ([@scop] - [#30208]) ([huawei_lte docs]) + + Example configuration: + + ```yaml + huawei_lte: + - url: ... + password: ... + notify: + name: sms + ``` + +- __Amcrest__ *(Removed)* - Amcrest sensors and switches that were deprecated in previous releases have now been removed. - ([@pnbruckner] - [#30308]) ([amcrest docs]) + + Example configuration: + + ```yaml + amcrest: + - ... + sensors: + # This sensor type is no longer supported and must be removed. + - motion_detector + # All switch types are no longer supported and must be removed. + switches: + - motion_detection + - motion_recording + ``` + +- __MQTT__ - Added separate command and state topics for the MQTT lock. Two new properties are introduced with `state_locked` (default: LOCKED) and `state_unlocked` (default: UNLOCKED). If you are using the same topic as `state_topic` as for the `command_topic` you can reestablish the old behavior by setting `state_locked` to *LOCK* and `state_unlocked` to *UNLOCK*. Effectively, this change allows you to distinguish commands and states in two topics with different values. - ([@tuxbox] - [#29808]) ([mqtt docs]) + + Example configuration: + + ```yaml + lock: + - platform: mqtt + command_topic: "/dev/ha/lock/cmd" + state_topic: "/dev/ha/lock/state" + value_template: "{{ value_json.state }}" + state_locked: "locked" + state_unlocked: "unlocked" + ``` + +- __LG webOS Smart TV__ - The component setup now uses the `webostv` domain instead of `media_player`. The host configuration option is now required and the timeout and filename options have been removed. The state handling for webOStv has also been cleaned up. An entity will have `on` when the tv is on instead of `playing` or `paused` as was previously the case. You need to update automations that depend on the entity state. - ([@bendavid] - [#29296] [#30416]) ([webostv docs]) + + Example configuration: + + ```yaml + webostv: + name: LG TV + host: 192.168.1.53 + #other settings + turn_on_action: + service: wake_on_lan.send_magic_packet + data: + mac: "00:00:00:00:00:00" + standby_connection: true + ``` + +- __Axis__ - Axis integration will no longer accept manual configuration of devices, all configuration of the Axis integration will now be handled from the integrations panel. - ([@Kane610] - [#30365]) ([axis docs]) + + TL;DR This will no longer work: + + ```yaml + axis: + ``` + +- __WLED__ - Improved WLED pure white support for RGBW LED strips. When using WLED with RGBW strips, setting the color in Home Assistant to white, will turn off the RGB LEDs of the strip and use the W channel only. - ([@frenck] - [#30477]) ([wled docs]) + +- __Timer__ - Fire restarted event on restarting an active timer. This can break automations that should trigger on every timer start event. - ([@mnigbur] - [#30475]) ([timer docs]) + +- __Vizio__ - Removed `suppress_warning` from configuration options for Vizio integration. The `pyvizio` package now suppresses insecure HTTPS request warnings in a way that doesn't affect global requests from other integrations or Home Assistant itself. There is no need to globally suppress insecure warnings now. - ([@raman325] - [#30536]) ([vizio docs]) + + Example configuration: + + ```yaml + media_player: + - platform: vizio + host: ':' + access_token: '' + device_class: tv + ``` + +- __RFXtrx__ - Bump pyRFXtrx to 0.25. This update switches the commands for `open` and `close` for RFXtrx covers of the "Rollertrol" type, as they were switched (clicking open resulted in closing of the cover and vice versa). Existing automations should be updated. - ([@Ernst79] - [#30566]) ([rfxtrx docs]) + +- __Ring__ - Ring is now configurable via a config entry. This means it will no longer store the username and password and you're able to configure accounts that use 2FA. It's no longer possible to set scan interval, monitored conditions or FFmpeg arguments. The defaults are used. - ([@balloob] - [#30564]) ([ring docs]) + +- __Binary Sensor (Locks)__ - Updated ON/OFF condition and triggers to match the documentation and UI. This change inverts the logic of automations relating to binary sensor with the `lock` device class, but only for automations triggering on the lock state (rather than triggering a lock/unlock action). + + If you already created automations, you will need to check those, as they probably need to be inverted. The text displayed in the trigger or condition dropdowns in Lovelace will now be correct. + + One possible scenario is if you have set an automation using the state of one lock to trigger an action on other lock(s). This change would cause the action to trigger on `locking` if it was previously triggering on `unlocking`. - ([@davet2001] - [#30663]) ([binary_sensor docs]) + +## Beta Fixes + +- Fix upnp raw sensor state formatting when None ([@pnbruckner] - [#30444]) ([upnp docs]) (beta fix) +- Implement capability attributes ([@balloob] - [#30545]) ([fan docs]) ([media_player docs]) ([vacuum docs]) ([water_heater docs]) (beta fix) +- Add Ring config flow ([@balloob] - [#30564]) ([ring docs]) (breaking change) (beta fix) +- Fix problem with restoring POE control ([@Kane610] - [#30597]) ([unifi docs]) (beta fix) +- Set body size for Proxy / streams to 16mb ([@pvizeli] - [#30608]) ([http docs]) (beta fix) +- Bump Adafruit_BBIO to 1.1.1 ([@springstan] - [#30630]) ([bbb_gpio docs]) (beta fix) +- Do not save last_seen if older than prev_seen ([@pnbruckner] - [#30647]) ([life360 docs]) (beta fix) +- Fix HomeKit with entity registry restoration where supported_features is a non-None falsey ([@Jc2k] - [#30657]) ([homekit docs]) (beta fix) +- Fix ZHA temperature sensor restoration ([@Adminiuga] - [#30661]) ([zha docs]) (beta fix) +- Update ON/OFF condition and triggers to match documentation and UI, issue #30462 ([@davet2001] - [#30663]) ([binary_sensor docs]) (breaking change) (beta fix) +- Upgrade Ring to new version ([@balloob] - [#30666]) ([ring docs]) (beta fix) +- Fix Error with HomematicIP Cloud Cover ([@SukramJ] - [#30667]) ([homematicip_cloud docs]) (beta fix) +- Ring OTP improvement ([@balloob] - [#30688]) ([ring docs]) (beta fix) +- Log error when integration is missing platform setup ([@balloob] - [#30690]) (beta fix) +- Fix update person validation ([@balloob] - [#30691]) ([person docs]) (beta fix) +- Fix discovery for oauth2 flow implementations ([@frenck] - [#30700]) (beta fix) +- Revert "Forget auth token when going offline so we can reconnect (#26630)" ([@pnbruckner] - [#30705]) ([amcrest docs]) (beta fix) +- Fix Ring wifi sensors ([@balloob] - [#30735]) ([ring docs]) (beta fix) +- update aiopylgtv to 0.2.5 ([@bendavid] - [#30702]) ([webostv docs]) (beta fix) +- update aiopylgtv to 0.2.6 ([@bendavid] - [#30739]) ([webostv docs]) (beta fix) +- Bump ZHA quirks to 0.0.31 ([@dmulcahey] - [#30740]) ([zha docs]) (beta fix) +- Update Ring to 0.6.0 ([@balloob] - [#30748]) ([ring docs]) (beta fix) +- Set default locale for cloud Alexa config ([@balloob] - [#30749]) ([alexa docs]) ([cloud docs]) (beta fix) +- Bump teslajsonpy to 0.2.3 ([@alandtse] - [#30750]) ([tesla docs]) (beta fix) +- Update pyhomematic to 0.1.63 ([@danielperna84] - [#30594]) ([homematic docs]) (beta fix) +- Refactor HomeMatic / Fix issue with 0.104/dev ([@pvizeli] - [#30752]) ([homematic docs]) (beta fix) +- bump aiokef to 0.2.5 which uses locks ([@basnijholt] - [#30753]) ([kef docs]) (beta fix) +- Fix HomeKit behavior with lights supporting color and temperature ([@frenck] - [#30756]) ([homekit docs]) (beta fix) +- Revert #29701 ([@pvizeli] - [#30766]) ([zwave docs]) (beta fix) +- Refactor Ring data handling ([@balloob] - [#30777]) ([ring docs]) (beta fix) +- Restore unit_of_measurement from entity registry ([@Jc2k] - [#30780]) (beta fix) + +## All changes + +- Move imports to top for decora_wifi ([@springstan] - [#29439]) ([decora_wifi docs]) +- Make hassfest stricter ([@balloob] - [#29494]) +- Move imports to top for ambient_station ([@springstan] - [#29497]) ([ambient_station docs]) +- Move imports to top for google_pubsub ([@springstan] - [#29498]) ([google_pubsub docs]) +- Move imports to top for hue ([@springstan] - [#29501]) ([hue docs]) +- Move imports to top for google_translate ([@springstan] - [#29499]) ([google_translate docs]) +- Move imports to top for http ([@springstan] - [#29500]) ([http docs]) +- Move imports to top for system_log ([@springstan] - [#29465]) ([system_log docs]) +- Move imports to top for group ([@springstan] - [#29485]) ([group docs]) +- Move imports to top for frontend ([@springstan] - [#29487]) ([frontend docs]) +- Move imports to top for ipma ([@springstan] - [#29507]) ([ipma docs]) +- Move imports to top for mediaroom ([@springstan] - [#29509]) ([mediaroom docs]) +- Move imports to top for islamic_prayer_times ([@springstan] - [#29506]) ([islamic_prayer_times docs]) +- Move imports to top for mobile_app ([@springstan] - [#29511]) ([mobile_app docs]) +- Move imports to top for meteoalarm ([@springstan] - [#29510]) ([meteoalarm docs]) +- Move imports to top for statistics ([@springstan] - [#29223]) ([statistics docs]) +- Move imports to top for monoprice ([@springstan] - [#29516]) ([monoprice docs]) +- Move imports to top for mysensors ([@springstan] - [#29517]) ([mysensors docs]) +- Move imports to top for ign_sismologia ([@springstan] - [#29523]) ([ign_sismologia docs]) +- Move imports to top for nextbus ([@springstan] - [#29520]) ([nextbus docs]) +- Move imports to top for switcher_kis ([@springstan] - [#29530]) ([switcher_kis docs]) +- Add full state view for emulated_hue (apps using emulated_hue, 'sleep cycle' and 'sleep as android') ([@orrpan] - [#26650]) ([emulated_hue docs]) +- Move imports to top for mochad ([@springstan] - [#29514]) ([mochad docs]) +- Add input_boolean reload service ([@Adminiuga] - [#29379]) ([input_boolean docs]) +- Move imports to top for izone ([@springstan] - [#29508]) ([izone docs]) +- Move imports to top for modbus ([@springstan] - [#29515]) ([modbus docs]) +- Bump pytest to 5.3.1 ([@frenck] - [#29535]) +- Move imports to top for nx584 ([@springstan] - [#29537]) ([nx584 docs]) +- Move imports to top for pjlink ([@springstan] - [#29540]) ([pjlink docs]) +- Move imports to top for smhi ([@springstan] - [#29545]) ([smhi docs]) +- Move imports to top for sleepiq ([@springstan] - [#29544]) ([sleepiq docs]) +- Move imports to top for toon ([@springstan] - [#29553]) ([toon docs]) +- Move imports to top for influxdb ([@springstan] - [#29513]) ([influxdb docs]) +- Move imports to top for heatmiser ([@springstan] - [#29562]) ([heatmiser docs]) +- Move imports to top for plant ([@springstan] - [#29543]) ([plant docs]) +- Move imports to top for spc ([@springstan] - [#29547]) ([spc docs]) +- Bump lightwave to 0.17 ([@shortbloke] - [#29566]) ([lightwave docs]) +- Add service to set netatmo home heating schedule ([@1v0dev] - [#29244]) ([netatmo docs]) +- Move imports to top for homematic ([@springstan] - [#29558]) ([homematic docs]) +- Use "kB" and "s" as UPnP/IGD units ([@scop] - [#29552]) ([upnp docs]) (breaking change) +- Upgrade certifi to >=2019.11.28 ([@fabaff] - [#29571]) +- Move imports to top for notion ([@springstan] - [#29539]) ([notion docs]) +- Move imports to top for soundtouch ([@springstan] - [#29546]) ([soundtouch docs]) +- Treat BaseException as over-general ([@scop] - [#29573]) ([whois docs]) +- Move imports to top for zha ([@springstan] - [#29555]) ([zha docs]) +- Move imports to top for openuv ([@springstan] - [#29541]) ([openuv docs]) +- Move imports to top for onboarding ([@springstan] - [#29542]) ([onboarding docs]) +- Update Travis dist to bionic ([@scop] - [#29575]) +- Upgrade pyyaml to 5.2.0 ([@fabaff] - [#29586]) +- Add service to reboot the Freebox ([@SNoof85] - [#29525]) ([freebox docs]) +- Improve Tahoma Velux support ([@butako] - [#27920]) ([tahoma docs]) +- Register automation.reload service as an admin service. ([@Adminiuga] - [#29582]) ([automation docs]) +- Add input_datetime reload service. ([@Adminiuga] - [#29581]) ([input_datetime docs]) +- Add input_number.reload admin service. ([@Adminiuga] - [#29584]) ([input_number docs]) +- change icon for partly-cloudy-night ([@Mariusthvdb] - [#29601]) ([darksky docs]) +- Add additional Magic Cube Model ([@SukramJ] - [#29598]) ([deconz docs]) +- Add Elgato Key Light integration ([@frenck] - [#29592]) ([elgato docs]) (new-integration) +- Move imports to top for google_assistant ([@springstan] - [#29561]) ([google_assistant docs]) +- Move imports to top for tellduslive ([@springstan] - [#29550]) ([tellduslive docs]) +- Move imports to top for stream ([@springstan] - [#29548]) ([stream docs]) +- Add quarterly cycle for utility_meter component ([@aamcrae] - [#29534]) ([utility_meter docs]) +- bump freebox api version ([@SNoof85] - [#29527]) ([freebox docs]) +- Move imports to top for websocket_api ([@springstan] - [#29556]) ([websocket_api docs]) +- Move imports to top for fido ([@springstan] - [#29557]) ([fido docs]) +- Add Huawei LTE reboot and clear traffic statistics services ([@scop] - [#29594]) ([huawei_lte docs]) +- sort imports according to PEP8 for airly ([@basnijholt] - [#29615]) ([airly docs]) +- sort imports according to PEP8 for alarm_control_panel ([@basnijholt] - [#29616]) ([alarm_control_panel docs]) +- sort imports according to PEP8 for air_quality ([@basnijholt] - [#29614]) ([air_quality docs]) +- sort imports according to PEP8 for ads ([@basnijholt] - [#29613]) ([ads docs]) +- sort imports according to PEP8 for abode ([@basnijholt] - [#29610]) ([abode docs]) +- sort imports according to PEP8 for actiontec ([@basnijholt] - [#29612]) ([actiontec docs]) +- sort imports according to PEP8 for acer_projector ([@basnijholt] - [#29611]) ([acer_projector docs]) +- sort imports according to PEP8 for components ([@basnijholt] - [#29609]) +- sort imports according to PEP8 for yweather ([@basnijholt] - [#29608]) +- Upgrade keyring to 19.3.0 and keyrings.alt to 3.2.0 ([@fabaff] - [#29607]) +- sort imports according to PEP8 for auth ([@basnijholt] - [#29619]) ([auth docs]) +- sort imports according to PEP8 for alexa ([@basnijholt] - [#29618]) ([alexa docs]) +- sort imports according to PEP8 for buienradar ([@basnijholt] - [#29623]) ([buienradar docs]) +- Add IntesisHome Climate Platform ([@jnimmo] - [#25364]) ([intesishome docs]) (new-integration) +- Don't escape command parameters ([@Hypfer] - [#29504]) ([squeezebox docs]) +- Fix file permission ([@fabaff] - [#29635]) ([dsmr_reader docs]) ([here_travel_time docs]) ([tahoma docs]) +- sort imports according to PEP8 for axis ([@basnijholt] - [#29621]) ([axis docs]) +- sort imports according to PEP8 for hassio ([@basnijholt] - [#29634]) ([hassio docs]) +- Pass in parameters explicitly to DeconzSession ([@Kane610] - [#29617]) ([deconz docs]) +- use isort to sort imports according to PEP8 for fan ([@basnijholt] - [#29632]) ([fan docs]) +- use isort to sort imports according to PEP8 for automation ([@basnijholt] - [#29620]) ([automation docs]) +- use isort to sort imports according to PEP8 for cast ([@basnijholt] - [#29624]) ([cast docs]) +- use isort to sort imports according to PEP8 for binary_sensor ([@basnijholt] - [#29622]) ([binary_sensor docs]) +- Move imports to top for homekit_controller ([@springstan] - [#29564]) +- use isort to sort imports according to PEP8 for climate ([@basnijholt] - [#29625]) ([climate docs]) +- use isort to sort imports according to PEP8 for command_line ([@basnijholt] - [#29627]) ([command_line docs]) +- use isort to sort imports according to PEP8 for config ([@basnijholt] - [#29628]) ([config docs]) +- use isort to sort imports according to PEP8 for cover ([@basnijholt] - [#29629]) ([cover docs]) +- use isort to sort imports according to PEP8 for demo ([@basnijholt] - [#29630]) ([demo docs]) +- use isort to sort imports according to PEP8 for cloud ([@basnijholt] - [#29626]) ([cloud docs]) +- use isort to sort imports according to PEP8 for ecobee ([@basnijholt] - [#29631]) ([ecobee docs]) +- Sort imports according to PEP8 for homekit_controller ([@basnijholt] - [#29646]) ([homekit_controller docs]) +- use isort to sort imports according to PEP8 for mqtt ([@basnijholt] - [#29649]) ([mqtt docs]) +- use isort to sort imports according to PEP8 for light ([@basnijholt] - [#29648]) ([light docs]) ([mqtt docs]) +- Sort imports according to PEP8 for homekit ([@basnijholt] - [#29645]) ([homekit docs]) +- use isort to sort imports according to PEP8 for vacuum ([@basnijholt] - [#29650]) ([mqtt docs]) ([vacuum docs]) +- Fix file permission ([@fabaff] - [#29660]) ([intesishome docs]) +- Sort imports according to PEP8 for recorder ([@basnijholt] - [#29652]) ([recorder docs]) +- Sort imports according to PEP8 for switch ([@basnijholt] - [#29654]) ([switch docs]) +- Sort imports according to PEP8 for template ([@basnijholt] - [#29655]) ([template docs]) +- Sort imports according to PEP8 for hive ([@basnijholt] - [#29669]) ([hive docs]) +- Sort imports according to PEP8 for starline ([@basnijholt] - [#29653]) ([starline docs]) +- Change state values for Worx Landroid sensor ([@geraldhansen] - [#27453]) ([worxlandroid docs]) (breaking change) +- Sort imports according to PEP8 for plex ([@basnijholt] - [#29708]) ([plex docs]) +- Sort imports according to PEP8 for cert_expiry ([@basnijholt] - [#29705]) ([cert_expiry docs]) +- Sort imports according to PEP8 for geonetnz_volcano ([@basnijholt] - [#29716]) ([geonetnz_volcano docs]) +- Sort imports according to PEP8 for eufy ([@basnijholt] - [#29715]) ([eufy docs]) +- Sort imports according to PEP8 for dialogflow ([@basnijholt] - [#29714]) ([dialogflow docs]) +- Sort imports according to PEP8 for kodi ([@basnijholt] - [#29721]) ([kodi docs]) +- Add tests for vera component ([@vangorra] - [#28340]) ([vera docs]) +- Add Signal Messenger integration ([@bbernhard] - [#28537]) ([signalmessenger docs]) (new-integration) +- Protect Doorbird platform from failing when individual doorbird fails ([@gjbadros] - [#29374]) ([doorbird docs]) +- Sort imports according to PEP8 for velbus ([@basnijholt] - [#29676]) ([velbus docs]) +- Proactively report Alexa Endpoint Health properties ([@clapbr] - [#29736]) ([alexa docs]) +- Sort imports according to PEP8 for pi_hole ([@basnijholt] - [#29726]) ([pi_hole docs]) +- use isort to sort imports according to PEP8 for homeassistant ([@basnijholt] - [#29718]) ([homeassistant docs]) +- use isort to sort imports according to PEP8 for zone ([@basnijholt] - [#29712]) ([zone docs]) +- use isort to sort imports according to PEP8 for group ([@basnijholt] - [#29713]) +- Sort imports according to PEP8 for neato ([@basnijholt] - [#29724]) ([neato docs]) +- Sort imports according to PEP8 for input_text ([@basnijholt] - [#29719]) ([input_text docs]) +- Sort imports according to PEP8 for linky ([@basnijholt] - [#29722]) ([linky docs]) +- Sort imports according to PEP8 for minio ([@basnijholt] - [#29723]) ([minio docs]) +- Sort imports according to PEP8 for netgear_lte ([@basnijholt] - [#29725]) ([netgear_lte docs]) +- Sort imports according to PEP8 for iqvia ([@basnijholt] - [#29720]) ([iqvia docs]) +- Sort imports according to PEP8 for gpslogger ([@basnijholt] - [#29717]) ([gpslogger docs]) +- Sort imports according to PEP8 for soma ([@basnijholt] - [#29709]) ([soma docs]) +- Sort imports according to PEP8 for verisure ([@basnijholt] - [#29711]) ([verisure docs]) +- Sort imports according to PEP8 for darksky ([@basnijholt] - [#29706]) ([darksky docs]) +- Sort imports according to PEP8 for aws ([@basnijholt] - [#29704]) ([aws docs]) +- Sort imports according to PEP8 for device_automation ([@basnijholt] - [#29707]) ([device_automation docs]) +- Sort imports according to PEP8 for arest ([@basnijholt] - [#29703]) ([arest docs]) +- Sort imports according to PEP8 for arduino ([@basnijholt] - [#29702]) ([arduino docs]) +- Sort imports according to PEP8 for almond ([@basnijholt] - [#29688]) ([almond docs]) +- Sort imports according to PEP8 for geonetnz_quakes ([@basnijholt] - [#29668]) ([geonetnz_quakes docs]) +- Move imports to top for nsw_fuel_station ([@springstan] - [#29538]) ([nsw_fuel_station docs]) +- Sort imports according to PEP8 for jewish_calendar ([@basnijholt] - [#29697]) ([jewish_calendar docs]) +- Sort imports according to PEP8 for opentherm_gw ([@basnijholt] - [#29671]) ([opentherm_gw docs]) +- Sort imports according to PEP8 for xiaomi_miio ([@basnijholt] - [#29677]) ([xiaomi_miio docs]) +- Sort imports according to PEP8 for met ([@basnijholt] - [#29699]) ([met docs]) +- Sort imports according to PEP8 for locative ([@basnijholt] - [#29698]) ([locative docs]) +- Sort imports according to PEP8 for file ([@basnijholt] - [#29694]) ([file docs]) +- Sort imports according to PEP8 for ifttt ([@basnijholt] - [#29696]) ([ifttt docs]) +- Sort imports according to PEP8 for geofency ([@basnijholt] - [#29695]) ([geofency docs]) +- Sort imports according to PEP8 for counter ([@basnijholt] - [#29692]) ([counter docs]) +- Sort imports according to PEP8 for ffmpeg ([@basnijholt] - [#29693]) ([ffmpeg docs]) +- use isort to sort imports according to PEP8 for broadlink ([@basnijholt] - [#29690]) ([broadlink docs]) +- Sort imports according to PEP8 for ambiclimate ([@basnijholt] - [#29689]) ([ambiclimate docs]) +- Sort imports according to PEP8 for camera ([@basnijholt] - [#29691]) ([camera docs]) +- use isort to sort imports according to PEP8 for netatmo ([@basnijholt] - [#29682]) ([netatmo docs]) +- Sort imports according to PEP8 for specific_devices ([@basnijholt] - [#29687]) +- Sort imports according to PEP8 for wemo ([@basnijholt] - [#29685]) ([wemo docs]) +- Sort imports according to PEP8 for utility_meter ([@basnijholt] - [#29710]) ([utility_meter docs]) +- Sort imports according to PEP8 for vesync ([@basnijholt] - [#29684]) ([vesync docs]) +- Sort imports according to PEP8 for iaqualink ([@basnijholt] - [#29681]) ([iaqualink docs]) +- Sort imports according to PEP8 for sensor ([@basnijholt] - [#29683]) ([sensor docs]) +- Sort imports according to PEP8 for ring ([@basnijholt] - [#29680]) +- Sort imports according to PEP8 for http ([@basnijholt] - [#29679]) +- Sort imports according to PEP8 for dyson ([@basnijholt] - [#29678]) +- Sort imports according to PEP8 for somfy ([@basnijholt] - [#29675]) ([somfy docs]) +- Sort imports according to PEP8 for nest ([@basnijholt] - [#29670]) ([nest docs]) +- Sort imports according to PEP8 for rest ([@basnijholt] - [#29674]) ([rest docs]) +- Sort imports according to PEP8 for pilight ([@basnijholt] - [#29673]) ([pilight docs]) +- Sort imports according to PEP8 for owntracks ([@basnijholt] - [#29672]) ([owntracks docs]) +- Sort imports according to PEP8 for emulated_hue ([@basnijholt] - [#29667]) ([emulated_hue docs]) +- Sort imports according to PEP8 for device_tracker ([@basnijholt] - [#29666]) ([device_tracker docs]) +- Sort imports according to PEP8 for media_player ([@basnijholt] - [#29665]) ([media_player docs]) +- sort imports according to PEP8 for lock ([@basnijholt] - [#29663]) ([lock docs]) +- Sort imports according to PEP8 for unifi ([@basnijholt] - [#29656]) ([unifi docs]) +- Sort imports according to PEP8 for deconz ([@basnijholt] - [#29659]) +- Sort imports according to PEP8 for zwave ([@basnijholt] - [#29658]) ([zwave docs]) +- Sort imports according to PEP8 for websocket_api ([@basnijholt] - [#29657]) ([websocket_api docs]) +- Sort imports according to PEP8 for pushbullet ([@basnijholt] - [#29748]) ([pushbullet docs]) +- Sort imports according to PEP8 for versasense ([@basnijholt] - [#29753]) ([versasense docs]) +- Sort imports according to PEP8 for remote ([@basnijholt] - [#29749]) ([remote docs]) +- Sort imports according to PEP8 for yeelight ([@basnijholt] - [#29755]) ([yeelight docs]) +- Sort imports according to PEP8 for solarlog ([@basnijholt] - [#29752]) ([solarlog docs]) +- Sort imports according to PEP8 for scene ([@basnijholt] - [#29750]) ([scene docs]) +- Sort imports according to PEP8 for vicare ([@basnijholt] - [#29754]) ([vicare docs]) +- Sort imports according to PEP8 for plaato ([@basnijholt] - [#29747]) ([plaato docs]) +- Sort imports according to PEP8 for shopping_list ([@basnijholt] - [#29751]) ([shopping_list docs]) +- Sort imports according to PEP8 for emulated_roku ([@basnijholt] - [#29756]) +- Sort imports according to PEP8 for sleepiq ([@basnijholt] - [#29759]) +- Sort imports according to PEP8 for mobile_app ([@basnijholt] - [#29758]) +- Sort imports according to PEP8 for hue ([@basnijholt] - [#29757]) +- Sort imports according to PEP8 for vultr ([@basnijholt] - [#29760]) +- Remove Tahoma component #29744 ([@tetienne] - [#29745]) ([tahoma docs]) (breaking change) +- Sort imports according to PEP8 for components starting with "B" ([@basnijholt] - [#29762]) +- Sort imports according to PEP8 for components starting with "A" ([@basnijholt] - [#29761]) +- Sort imports according to PEP8 for components starting with "E" ([@basnijholt] - [#29765]) +- Sort imports according to PEP8 for components starting with "F" ([@basnijholt] - [#29766]) +- Sort imports according to PEP8 for components starting with "G" ([@basnijholt] - [#29767]) +- Sort imports according to PEP8 for components starting with "H" ([@basnijholt] - [#29768]) +- use isort to sort imports for components starting with 'm' ([@basnijholt] - [#29772]) +- Sort imports according to PEP8 for components starting with "I" ([@basnijholt] - [#29769]) +- Sort imports according to PEP8 for components starting with "L" ([@basnijholt] - [#29771]) +- Sort imports according to PEP8 for components starting with "K" ([@basnijholt] - [#29770]) ([kankun docs]) ([keba docs]) ([keyboard_remote docs]) +- Sort imports according to PEP8 for components starting with "O" ([@basnijholt] - [#29774]) +- Sort imports according to PEP8 for components starting with "P" ([@basnijholt] - [#29775]) +- Sort imports according to PEP8 for components starting with "S" ([@basnijholt] - [#29777]) +- Sort imports according to PEP8 for components starting with "R" ([@basnijholt] - [#29776]) +- Sort imports according to PEP8 for components starting with "T" ([@basnijholt] - [#29778]) +- Sort imports according to PEP8 for components starting with "V" ([@basnijholt] - [#29780]) +- Sort imports according to PEP8 for components starting with "N" ([@basnijholt] - [#29773]) +- Sort imports according to PEP8 for components starting with "W" ([@basnijholt] - [#29781]) +- Sort imports according to PEP8 for components starting with "Q" ([@basnijholt] - [#29785]) +- Sort imports according to PEP8 for components starting with "Y" ([@basnijholt] - [#29783]) ([yale_smart_alarm docs]) ([yamaha docs]) ([yamaha_musiccast docs]) ([yandex_transport docs]) ([yeelightsunflower docs]) ([yessssms docs]) ([yr docs]) +- Sort imports according to PEP8 for components starting with "X" ([@basnijholt] - [#29782]) ([x10 docs]) ([xbox_live docs]) ([xeoma docs]) ([xfinity docs]) ([xiaomi_tv docs]) ([xmpp docs]) ([xs1 docs]) +- Move imports to top for homekit ([@springstan] - [#29560]) ([homekit docs]) +- Cleanup removed component ([@pvizeli] - [#29788]) +- Sort imports according to PEP8 for 'script' folder ([@basnijholt] - [#29790]) +- use isort to sort imports for "setup.py" ([@basnijholt] - [#29792]) +- Sort imports according to PEP8 for 'homeassistant' folder ([@basnijholt] - [#29789]) +- Sort imports according to PEP8 for 'tests' ([@basnijholt] - [#29791]) +- Add config flow to iCloud ([@Quentame] - [#28968]) ([icloud docs]) (breaking change) +- Sort imports according to PEP8 for components starting with "D" ([@basnijholt] - [#29764]) +- Move imports to top for ness_alarm ([@springstan] - [#29518]) ([ness_alarm docs]) +- Sort imports according to PEP8 for components starting with "Z" ([@basnijholt] - [#29784]) ([zamg docs]) ([zengge docs]) ([zeroconf docs]) ([zestimate docs]) ([zha docs]) ([zigbee docs]) +- Sort imports according to PEP8 for components starting with "C" ([@basnijholt] - [#29763]) +- Fix 'pytest.register_assert_rewrite("tests.common")' warning ([@basnijholt] - [#29797]) +- Sort imports according to PEP8 for huawei_lte ([@basnijholt] - [#29664]) ([huawei_lte docs]) +- Sort imports according to PEP8 for components starting with "U" ([@basnijholt] - [#29779]) ([ue_smart_radio docs]) ([uk_transport docs]) ([universal docs]) ([updater docs]) ([uscis docs]) +- Fix build, invalid JSON file in icloud component ([@frenck] - [#29798]) ([icloud docs]) +- Sort imports according to PEP8 for google_assistant ([@basnijholt] - [#29633]) ([google_assistant docs]) +- Add ZHA group API ([@dmulcahey] - [#29641]) ([zha docs]) +- Add input_text reload service. ([@Adminiuga] - [#29644]) ([input_text docs]) +- Add input_select reload service. ([@Adminiuga] - [#29647]) ([input_select docs]) +- Add JSON files validation to hassfest ([@frenck] - [#29799]) +- Fix zha circular import ([@Adminiuga] - [#29802]) +- Nextbus: Sort results for upcoming times ([@ViViDboarder] - [#29811]) ([nextbus docs]) +- Adjusts repository README ([@frenck] - [#29805]) +- Install discovery requirements if used ([@balloob] - [#29795]) ([deconz docs]) ([hue docs]) +- Fix isort on a small set of misc files ([@frenck] - [#29803]) ([xiaomi_miio docs]) +- Fix tank utility token ([@proferabg] - [#29801]) ([tank_utility docs]) +- Re-authorize Huawei LTE on login required error ([@scop] - [#29597]) ([huawei_lte docs]) +- Fix withings wrong sleep state entry ([@vangorra] - [#29651]) ([withings docs]) +- Fix input_text initialization with empty config. ([@Adminiuga] - [#29829]) ([input_text docs]) +- Upgrade pydocstyle to 5.0.1 ([@scop] - [#29830]) +- Sort imports for requirements.py and its test using isort ([@basnijholt] - [#29836]) +- Fix Soma integration connection issue ([@ratsept] - [#27692]) ([soma docs]) +- Update rfxtrx component so it can be run as a custom_component ([@foxy82] - [#29638]) ([rfxtrx docs]) +- Revert Tahoma removal ([@balloob] - [#29840]) ([tahoma docs]) (new-integration) +- Use Bionic's ffmpeg on Travis, jonathonf/ffmpeg-4 is N/A at the moment ([@scop] - [#29860]) +- Fix package import sort on dwd_weather_warnings ([@frenck] - [#29874]) ([dwd_weather_warnings docs]) +- Sort import for tests/components/feedreader/test_init.py ([@basnijholt] - [#29878]) +- Add isort to CI and pre-commit ([@basnijholt] - [#29739]) +- Remove no longer needed auth.util, use secrets instead ([@scop] - [#29861]) +- Revert "Sort import for tests/components/feedreader/test_init.… ([@Adminiuga] - [#29882]) +- Log ZHA bind/unbind operations status ([@Adminiuga] - [#29842]) ([zha docs]) +- (Re)Add support for multiple Pi-Holes ([@johnluetke] - [#27569]) ([pi_hole docs]) (breaking change) +- ISY994 Node Filter Update ([@randellhodges] - [#28155]) ([isy994 docs]) +- Defer log formatting. ([@Adminiuga] - [#29888]) ([zha docs]) +- Bump python-miio version to 0.4.8 ([@syssi] - [#29890]) ([xiaomi_miio docs]) +- `genericpath` is an internal Python module and shouldn't be imported according to core Python devs. (see [this](https://bugs.python.org/msg358136) comment) ([@basnijholt] - [#29903]) +- Make Python deprecation notice easier to maintain ([@scop] - [#29900]) +- Upgrade Sphinx to 2.2.2 and sphinx-autodoc-typehintsi to 1.10.3 ([@fabaff] - [#29906]) +- Fix incorrect file format yr test fixure ([@frenck] - [#29910]) +- Fixes invalid JSON syntax in devcontainer ([@frenck] - [#29911]) +- Add integration platform helper ([@balloob] - [#29914]) ([intent docs]) +- Update Tahoma component's tahoma-api requirement's version ([@DjMoren] - [#29918]) ([tahoma docs]) +- Implement Alexa.EventDetectionSensor for Alexa ([@ochlocracy] - [#28276]) ([alexa docs]) +- Update androidtv version to improve source selection support ([@raman325] - [#29579]) ([androidtv docs]) +- Add battery sensor to iCloud ([@Quentame] - [#29818]) ([icloud docs]) (new-platform) +- bump venstar 0.12 ([@tyler-public] - [#29954]) +- Bump adb-shell to 0.1.0 and androidtv to 0.0.36 ([@JeffLIrion] - [#29938]) ([androidtv docs]) +- Start of using hass state for tests rather than direct object ([@elupus] - [#29377]) +- isort fix on test_media_player ([@caronc] - [#29965]) +- Upgrade keyring to 20.0.0 and keyrings.alt to 3.4.0 ([@fabaff] - [#29960]) +- Fix example value for Todoist service ([@boralyl] - [#29953]) +- Remove deprecated rflink configs ([@scop] - [#29972]) ([rflink docs]) +- Drop Python 3.6 support ([@scop] - [#29978]) +- Support case of unknown/unavailable temperature/humidity ([@elupus] - [#29959]) ([google_assistant docs]) +- Migrate to api_key ([@eifinger] - [#29966]) ([here_travel_time docs]) (breaking change) +- Remove 'SUPPORT_PLAY_MEDIA' from Volumio ([@JeffLIrion] - [#29969]) ([volumio docs]) +- Make hassfest import detection better ([@balloob] - [#29932]) ([filter docs]) ([history docs]) +- Fixed "condtion_type" to "condition_type" ([@rsnodgrass] - [#29984]) ([fan docs]) +- Fix condition typo ([@balloob] - [#29989]) ([climate docs]) ([device_tracker docs]) ([fan docs]) ([vacuum docs]) +- Don't use the locals parameter on exec. ([@lddubeau] - [#29979]) ([python_script docs]) +- Update binary_sensor.py ([@Emacee] - [#29977]) ([bmw_connected_drive docs]) +- Bump shodan to 1.21.0 ([@frenck] - [#29991]) ([shodan docs]) +- Bump pytest to 5.3.2 ([@frenck] - [#29990]) +- Add check-json to CI and Pre-commit ([@frenck] - [#29912]) +- Add unique ID to config entries ([@balloob] - [#29806]) +- Show current effect in yeelight device ([@zewelor] - [#28975]) ([yeelight docs]) +- Convert Hue to use unique ID ([@balloob] - [#30000]) ([hue docs]) +- Fix modbus service description ([@vzahradnik] - [#30005]) +- Fix persistent setup error notification content ([@frenck] - [#29995]) +- Make tplink light more responsive ([@vangorra] - [#28652]) ([tplink docs]) +- Z-Wave: Fibaro FGR*-222: Add venetian blind support ([@andre-richter] - [#29701]) ([zwave docs]) +- Upgrade matrix-client to 0.3.2 ([@fabaff] - [#30027]) ([matrix docs]) +- Upgrade zeroconf to 0.24.1 ([@fabaff] - [#30028]) ([zeroconf docs]) +- Update Envoy sensor to configure credentials and grab Inverter Date from updated API ([@gtdiehl] - [#28837]) ([enphase_envoy docs]) +- Add option to ignore flows ([@balloob] - [#30008]) ([config docs]) ([hue docs]) +- changed Venstar component temperature to half degree accuracy ([@erikkastelec] - [#30034]) ([venstar docs]) +- Add timer reload service. ([@Adminiuga] - [#30015]) ([timer docs]) +- Guard against future unknown SimpliSafe entity types ([@bachya] - [#30059]) ([simplisafe docs]) +- Set unique id on homekit_controller config entries ([@Jc2k] - [#30035]) ([homekit_controller docs]) +- Remove stream from camera after deps ([@balloob] - [#30057]) ([camera docs]) +- Add unit_of_measurement to various Transmission sensors ([@yegle] - [#30037]) ([transmission docs]) +- Refactor Alexa capabilityResources object into class, Implement Alexa semantics object ([@ochlocracy] - [#29917]) ([alexa docs]) +- Make Hassfest stricter pt 2 ([@balloob] - [#30068]) ([modbus docs]) ([mqtt docs]) ([tuya docs]) ([zamg docs]) +- Init entities as unavailable when offline ([@bieniu] - [#29738]) ([airly docs]) +- Make name of nmbs live sensor customizable via unique_id ([@springstan] - [#29662]) ([nmbs docs]) +- Include all SSDP data in discovery info ([@scop] - [#28197]) ([ssdp docs]) +- Rework tado component ([@michaelarnauts] - [#29246]) ([tado docs]) +- Add an open window sensor for heating zones ([@gppanayotov] - [#30090]) ([tado docs]) +- Explicitly include Alexa interface for image_processing entities. ([@ochlocracy] - [#30101]) ([alexa docs]) +- Don't error on removal of an ignored homekit_controller config entry ([@Jc2k] - [#30083]) ([homekit_controller docs]) +- add --show-diff-on-failure to pre-commit ([@basnijholt] - [#30097]) +- Upgrade mypy to 0.761 ([@scop] - [#30104]) +- Helpers type hint improvements ([@scop] - [#30106]) +- Add device class attribute to modbus sensors ([@vzahradnik] - [#30030]) ([modbus docs]) +- Upgrade python-velbus ([@Cereal2nd] - [#30110]) ([velbus docs]) +- Add a config entry mechanism to rediscover a discovery that was ignored ([@Jc2k] - [#30099]) ([homekit_controller docs]) +- Implement ZHA entity classes registry ([@Adminiuga] - [#30108]) ([zha docs]) +- Clean up mobile app webhooks ([@balloob] - [#30123]) ([http docs]) ([mobile_app docs]) +- Refactor ZHA electrical measurement sensor. ([@Adminiuga] - [#30130]) ([zha docs]) (breaking change) +- Cleanup ZHAEntity class ([@Adminiuga] - [#30131]) ([zha docs]) +- Upgrade zeroconf to 0.24.2 ([@fabaff] - [#30140]) ([zeroconf docs]) +- Refactor ZHA binary_sensor ([@Adminiuga] - [#30138]) ([zha docs]) +- Update Integration of Keba charging station ([@dannerph] - [#30125]) ([keba docs]) (breaking change) +- More helpers type improvements ([@scop] - [#30145]) +- Bump sqlalchemy to 1.3.12 ([@frenck] - [#30142]) ([recorder docs]) ([sql docs]) +- Clean up scaffold ([@cgtobi] - [#30135]) +- ZHA binary_sensor cleanup. ([@Adminiuga] - [#30149]) ([zha docs]) +- Add support for input_number entities in Alexa integration ([@ochlocracy] - [#30139]) ([alexa docs]) +- Add icon to Plex sensor ([@Quentame] - [#30172]) ([plex docs]) +- Add cast to state of Dyson Air Quality Sensor ([@springstan] - [#30100]) ([dyson docs]) +- Add icons to Freebox sensors ([@Quentame] - [#30132]) ([freebox docs]) +- Upgrade envoy_reader to 0.11.0 ([@gtdiehl] - [#30179]) ([enphase_envoy docs]) +- Updated formatting of total_blocks value ([@P-Verbrugge] - [#30170]) ([bitcoin docs]) +- New date_time_utc display option added to the time_date sensor platform ([@heckler] - [#30158]) ([time_date docs]) +- Enable config flow for Tesla ([@alandtse] - [#28744]) ([tesla docs]) (breaking change) +- Protect against bad data stored in ZHA ([@dmulcahey] - [#30183]) ([zha docs]) +- Upgrade zeroconf to 0.24.3 ([@fabaff] - [#30187]) ([zeroconf docs]) +- Fix AdGuard Home safe search sensor name ([@Quentame] - [#30171]) ([adguard docs]) +- Add onewire devices and owserver remote host support ([@garbled1] - [#29948]) ([onewire docs]) +- Bump importlib-metadata to 1.3.0 ([@springstan] - [#30196]) +- Bump datapoint to 0.9.5 ([@springstan] - [#30185]) ([metoffice docs]) +- Implement EqualizerController in Alexa for media_player. ([@ochlocracy] - [#30159]) ([alexa docs]) +- Upgrade youtube_dl to 2019.12.25 ([@BKPepe] - [#30203]) ([media_extractor docs]) +- Pull track position from MPD status ([@ndonegan] - [#28579]) ([mpd docs]) +- Add support for enocean window handle FA 10 00 (Hoppe) ([@rhadamantys] - [#29968]) ([enocean docs]) +- Update Vivotek camera component ([@HarlemSquirrel] - [#30191]) ([vivotek docs]) +- Make Huawei LTE notify service name configurable ([@scop] - [#30208]) ([huawei_lte docs]) (breaking change) +- Add Huawei LTE integration suspend and resume services ([@scop] - [#30207]) ([huawei_lte docs]) +- Bump teslajsonpy to 0.2.1 ([@alandtse] - [#30217]) ([tesla docs]) +- bump tuyaha 0.0.5 ([@PaulAnnekov] - [#30213]) ([tuya docs]) +- Fix handling of symlinked device descriptors in keyboard_remote and move remaining sync io to executor thread pool ([@bendavid] - [#30206]) ([keyboard_remote docs]) +- Bump ZHA dependencies ([@dmulcahey] - [#30228]) ([zha docs]) +- Bump shodan to 1.21.1 ([@frenck] - [#30234]) ([shodan docs]) +- DECONZ - Added support for Aqara single switch WXKG03LM ([@Kerwood] - [#30240]) ([deconz docs]) +- Bump python-qbittorrent to 0.4.1 ([@springstan] - [#30239]) ([qbittorrent docs]) +- Fix Huawei LTE error message on service call without URL and routers ([@scop] - [#30250]) ([huawei_lte docs]) +- Bump dependency for HomematicIp cloud ([@SukramJ] - [#30237]) ([homematicip_cloud docs]) +- Bump libpurecool to 0.6.0 ([@xlfe] - [#30247]) +- Huawei LTE: Fix YAML options overriding ones set from GUI ([@scop] - [#30249]) ([huawei_lte docs]) +- Add HmIP-MOD_TM to HomematicIP Cloud ([@SukramJ] - [#30255]) ([homematicip_cloud docs]) +- Note Huawei LTE notify service change requires restart ([@scop] - [#30223]) ([huawei_lte docs]) +- Bump python-velbus library to 2.0.32 to fix problems with the glaspanels ([@Cereal2nd] - [#30257]) ([velbus docs]) +- Whitelist Android/iOS auth callbacks ([@balloob] - [#30082]) ([auth docs]) +- Fixing timezone issue which caused wrong selection of data to be used. ([@vangorra] - [#30011]) ([withings docs]) +- Refactor ZHA channel logging ([@Adminiuga] - [#30259]) ([zha docs]) +- Fix ble_tracker randomly pygatt thrown error ([@liollury] - [#28671]) ([bluetooth_le_tracker docs]) +- Fix creating smappee sensors when remote is not active ([@mockersf] - [#30270]) ([smappee docs]) +- Upgrade rflink to 0.0.50, ignore_devices now supports * and ? anywhere ([@scop] - [#30268]) ([rflink docs]) +- Accept homekit_controller pairing codes both with and without dashes ([@Jc2k] - [#30273]) ([homekit_controller docs]) +- Add homekit_controller service.sensor.smoke ([@Jc2k] - [#30269]) ([homekit_controller docs]) +- Upgrade beautifulsoup4 to 4.8.2 ([@fabaff] - [#30274]) ([scrape docs]) +- Add custom validator for countries ([@fabaff] - [#30280]) ([workday docs]) +- Change default icons for Tesla components ([@alandtse] - [#30288]) ([tesla docs]) +- Contributing: Add note about feature suggestions and bug tracking ([@andygrunwald] - [#30225]) +- Bump ihcsdk to 2.4.0 ([@taisholland] - [#30279]) ([ihc docs]) +- Ignore google_maps updates when last_seen goes backwards ([@pnbruckner] - [#30178]) ([google_maps docs]) +- Add GIOS integration ([@bieniu] - [#28719]) ([gios docs]) (new-integration) +- Store capabilities and supported features in entity registry, restore registered entities on startup ([@balloob] - [#30094]) +- Fix Withings leaking time zone change into other tests ([@frenck] - [#30320]) +- Add local_ip component ([@issacg] - [#29973]) ([localip docs]) (new-integration) +- Update liveboxplay and pyteleloisirs ([@pschmitt] - [#30093]) ([liveboxplaytv docs]) +- Add homematic host port config for HMIP-only CCUs ([@sbyx] - [#30077]) ([homematic docs]) +- Bump dependency for HomematicIP Cloud ([@SukramJ] - [#30319]) ([homematicip_cloud docs]) +- Add support for Somfy RTS power socket and Somfy io Temperature sensor ([@rhadamantys] - [#30053]) ([tahoma docs]) +- Reduce solaredge logging severity ([@sdwilsh] - [#30305]) ([solaredge docs]) +- Remove Amcrest deprecated sensors and switches ([@pnbruckner] - [#30308]) ([amcrest docs]) (breaking change) +- Add support for Velux garage doors ([@cwildt] - [#30214]) ([velux docs]) +- Add separate command and state topics for mqtt lock ([@tuxbox] - [#29808]) ([mqtt docs]) (breaking change) +- Upgrade Sphinx to 2.3.1 ([@fabaff] - [#30310]) +- Add light support to Velbus integration ([@brefra] - [#30323]) ([velbus docs]) (new-platform) +- Fix luftdaten integration by adding a sensor for pressure at sealevel ([@Lars-P] - [#30317]) ([luftdaten docs]) +- Simplify Tesla icon get code ([@alandtse] - [#30301]) ([tesla docs]) +- Make the rest of ZHA platforms to use ZHA class registry ([@Adminiuga] - [#30261]) ([zha docs]) +- Improve Withings tests in different time zone ([@frenck] - [#30326]) +- Migrate dsmr tests from coroutine to async/await ([@frenck] - [#30333]) +- Migrate wunderground tests from coroutine to async/await ([@frenck] - [#30330]) +- Bump pyps4-2ndscreen to 1.0.4 ([@frenck] - [#30327]) ([ps4 docs]) +- Bump alarmdecoder to 1.13.9 ([@springstan] - [#30303]) ([alarmdecoder docs]) +- Migrate python_script tests from coroutine to async/await ([@frenck] - [#30335]) +- Migrate api tests from coroutine to async/await ([@frenck] - [#30338]) +- Migrate alexa tests from coroutine to async/await ([@frenck] - [#30332]) +- Migrate xiaomi_miio tests from coroutine to async/await ([@frenck] - [#30329]) +- Migrate emulated_hue tests from coroutine to async/await ([@frenck] - [#30331]) +- Migrate webostv to new library and make integration async with callback state updates ([@bendavid] - [#29296]) ([webostv docs]) (breaking change) +- Migrate input_* tests from coroutine to async/await ([@frenck] - [#30336]) +- Remove use of bin_type in Tesla component ([@alandtse] - [#30315]) ([tesla docs]) +- Upgrade youtube_dl to version 2020.01.01 ([@BKPepe] - [#30341]) ([media_extractor docs]) +- Upgrade zeroconf to 0.24.4 ([@fabaff] - [#30347]) ([zeroconf docs]) +- Migrate startca tests from coroutine to async/await ([@frenck] - [#30354]) +- Migrate teksavvy tests from coroutine to async/await ([@frenck] - [#30353]) +- Migrate timer tests from coroutine to async/await ([@frenck] - [#30352]) +- Migrate yr tests from coroutine to async/await ([@frenck] - [#30351]) +- Fix media_player example for select_source service ([@JeffLIrion] - [#30358]) +- Upgrade python_opendata_transport to 0.2.1 ([@fabaff] - [#30348]) ([swiss_public_transport docs]) +- Fix HVAC mode for Tesla ([@alandtse] - [#30287]) ([tesla docs]) +- Add attributes to fritz device_tracker ([@AaronDavidSchneider] - [#30350]) ([fritz docs]) +- Migrate mailbox tests from coroutine to async/await ([@frenck] - [#30361]) +- Migrate hassio tests from coroutine to async/await ([@frenck] - [#30363]) +- Migrate websocket_api tests from coroutine to async/await ([@frenck] - [#30364]) +- Migrate config tests from coroutine to async/await ([@frenck] - [#30366]) +- Migrate counter tests from coroutine to async/await ([@frenck] - [#30368]) +- Migrate owntracks tests from coroutine to async/await ([@frenck] - [#30369]) +- Migrate no_ip tests from coroutine to async/await ([@frenck] - [#30370]) +- Migrate camera tests from coroutine to async/await ([@frenck] - [#30372]) +- Migrate cast tests from coroutine to async/await ([@frenck] - [#30374]) +- Migrate ffmpeg tests from coroutine to async/await ([@frenck] - [#30375]) +- Migrate discovery tests from coroutine to async/await ([@frenck] - [#30376]) +- Migrate google_* tests from coroutine to async/await ([@frenck] - [#30377]) +- Add charging rate sensor to Tesla ([@alandtse] - [#30286]) ([tesla docs]) +- Restore state for Rfxtrx devices ([@Ernst79] - [#30309]) ([rfxtrx docs]) +- Remove unnessecary rfxtrx light property def ([@Ernst79] - [#30397]) ([rfxtrx docs]) +- Remove unnecessary string literal concatenations ([@scop] - [#30360]) +- Bump pre-commit to 1.21.0 ([@frenck] - [#30406]) +- fix issuecomment-570284682 ([@AaronDavidSchneider] - [#30405]) ([fritz docs]) +- Migrate local_file tests from coroutine to async/await ([@frenck] - [#30392]) +- Migrate fido tests from coroutine to async/await ([@frenck] - [#30391]) +- Migrate freedns tests from coroutine to async/await ([@frenck] - [#30390]) +- Migrate group tests from coroutine to async/await ([@frenck] - [#30389]) +- Migrate generic tests from coroutine to async/await ([@frenck] - [#30388]) +- Migrate media_player tests from coroutine to async/await ([@frenck] - [#30387]) +- Migrate frontend tests from coroutine to async/await ([@frenck] - [#30386]) +- Bump miflora and bluepy ([@springstan] - [#30411]) ([decora docs]) ([miflora docs]) +- Add generic command functionality to denonavr ([@bendavid] - [#29295]) ([denonavr docs]) +- Add generic command/button functionality to webostv ([@bendavid] - [#30379]) ([webostv docs]) +- Axis - Improve tests ([@Kane610] - [#30415]) +- Cleanup of state handling in webostv ([@bendavid] - [#30416]) ([webostv docs]) (breaking change) +- Remove ZHA establish device mappings function ([@dmulcahey] - [#30423]) ([zha docs]) +- Implemented media_play & media_pause / push to version 0.7.11 of denonavr ([@scarface-4711] - [#30421]) ([denonavr docs]) +- Add RTSP stream support for UVC (Unifi Video Client) integration ([@ochlocracy] - [#30297]) ([uvc docs]) +- Fix set tilt position ([@tetienne] - [#30428]) ([somfy docs]) +- Fix number of times seen in debug message ([@scop] - [#30429]) ([bluetooth_le_tracker docs]) +- Use config entry unique id for deCONZ ([@Kane610] - [#30122]) ([deconz docs]) +- Rework FlowManager to use inheritance ([@Jc2k] - [#30133]) ([auth docs]) ([config docs]) +- convert to integer if rounding precision is zero ([@agners] - [#30226]) ([filter docs]) +- Don't allow badly formed upnp devices to kill auto discovery ([@imduffy15] - [#30342]) ([deconz docs]) ([hue docs]) +- Mark API key as deprecated ([@elupus] - [#30402]) ([google_assistant docs]) +- Axis - Improve tests based on feedback ([@Kane610] - [#30430]) +- Update HomeKit position state characteristic for covers ([@neffs] - [#27867]) ([homekit docs]) +- Handle telegram event commands with args ([@sergioisidoro] - [#30254]) ([telegram_bot docs]) +- Various string cleanups ([@scop] - [#30435]) +- Add KEF speakers integration ([@basnijholt] - [#28959]) ([kef docs]) (new-integration) +- WIP deCONZ - Support Fyrtur/Kadrilj battery sensors ([@Kane610] - [#30403]) ([deconz docs]) +- isort homekit ([@Jc2k] - [#30437]) ([homekit docs]) +- Don't expose flows that aren't initialised. ([@Jc2k] - [#30432]) +- Check status field for UPS online binary sensor ([@andersonshatch] - [#30144]) ([apcupsd docs]) +- deCONZ - Improve tests based on Martins feedback in Axis integration ([@Kane610] - [#30438]) +- Bump ring to 0.2.9 ([@tchellomello] - [#30439]) ([ring docs]) +- Improve tests based on Martins feedback from Axis improve tests ([@Kane610] - [#30442]) +- Defer homekit_controller initial poll after all entities are created ([@Jc2k] - [#30355]) ([homekit_controller docs]) +- Implement supported locales for Alexa capabilities ([@ochlocracy] - [#30285]) ([alexa docs]) +- Axis - Remove manual configuration and legacy config file import ([@Kane610] - [#30365]) ([axis docs]) (breaking change) +- Add Sentry component ([@dcramer] - [#30422]) ([sentry docs]) (new-integration) +- Extract Collection helper from Person integration ([@balloob] - [#30313]) ([person docs]) ([websocket_api docs]) +- Fix async call inside sync context ([@brefra] - [#30458]) ([velbus docs]) +- Fix counter with empty config ([@pnbruckner] - [#30454]) ([counter docs]) +- Allow all sources and sound modes to be selected in google assistant ([@elupus] - [#30418]) ([google_assistant docs]) +- Make Axis integration use config entry unique id ([@Kane610] - [#30461]) ([axis docs]) +- Only return remote UI url if remote UI enabled ([@balloob] - [#30453]) ([cloud docs]) +- Allow adding unique device ID to mobile app registration ([@balloob] - [#30457]) ([mobile_app docs]) +- Bump elgato to 0.2.0 ([@frenck] - [#30485]) ([elgato docs]) +- Fix WLED light transition ([@frenck] - [#30490]) ([wled docs]) +- Add unique ID to elgato config entries ([@frenck] - [#30486]) ([elgato docs]) +- Bump adguardhome to 0.4.0 ([@frenck] - [#30483]) ([adguard docs]) +- Add unique ID to WLED config entries ([@frenck] - [#30480]) ([wled docs]) +- Improve WLED pure white support for RGBW ([@frenck] - [#30477]) ([wled docs]) (breaking change) +- Bump wled to 0.2.1 ([@frenck] - [#30474]) ([wled docs]) +- Bump twentemilieu to 0.2.0 ([@frenck] - [#30471]) ([twentemilieu docs]) +- deCONZ - Allow manual configuration to update existing configuration ([@Kane610] - [#30469]) ([deconz docs]) +- Add Zigbee group binding to ZHA ([@dmulcahey] - [#30433]) ([zha docs]) +- Fix timer with empty config ([@pnbruckner] - [#30463]) ([timer docs]) +- Mobile App add device tracker to person registering app ([@balloob] - [#30460]) ([mobile_app docs]) ([person docs]) +- Axis - Allow manual configuration to update existing configuration ([@Kane610] - [#30467]) ([axis docs]) +- Add person reload service ([@balloob] - [#30493]) ([person docs]) +- Add unique id property for Vizio devices so they get added to entity registry ([@raman325] - [#30497]) ([vizio docs]) +- Restore state helper to work with entity registry restoration ([@balloob] - [#30451]) +- Be consistent with Home Assistant and Hass.io spelling ([@scop] - [#30500]) +- Migrate automatic tests from coroutine to async/await ([@frenck] - [#30371]) +- Remove double person data validation ([@balloob] - [#30501]) ([person docs]) +- Add support for v1 and v2 HomeKit fans. ([@Jc2k] - [#30503]) ([homekit_controller docs]) (new-platform) +- Preserve new BLE tracker item name if seen before adding discovery ([@scop] - [#30318]) ([bluetooth_le_tracker docs]) +- Migrate collection of component tests from coroutine to async/await ([@frenck] - [#30504]) +- Add LED control of push buttons and bump velbus-library ([@brefra] - [#30445]) ([velbus docs]) +- Bump teslajsonpy to 0.2.2 ([@alandtse] - [#30512]) ([tesla docs]) +- deCONZ - Rotation support for Xiaomi magic cube ([@FrengerH] - [#30472]) ([deconz docs]) +- Spell Zigbee consistently, with lowercase "b" ([@scop] - [#30440]) ([emulated_hue docs]) ([zigbee docs]) +- Add HmIP-PMFS and HmIP-WHS2 to HomematicIP Cloud ([@SukramJ] - [#30325]) ([homematicip_cloud docs]) +- Add surepetcare component ([@benleb] - [#24426]) ([surepetcare docs]) (new-integration) +- Add support for homekit air quality sensors ([@Jc2k] - [#30510]) ([homekit_controller docs]) (new-platform) +- Set required_features field when registering fan services ([@Jc2k] - [#30516]) ([fan docs]) ([homekit_controller docs]) +- Add Brother Printer integration ([@bieniu] - [#30359]) ([brother docs]) (new-integration) +- Format all manifests with prettier ([@frenck] - [#30521]) +- Fix AVM FRITZ!DECT switch total consumption ([@Alexxander0] - [#30478]) ([fritzdect docs]) +- Register 'androidtv.download' and 'androidtv.upload' services ([@JeffLIrion] - [#30086]) ([androidtv docs]) +- Allow specific status codes while notifying mobile_app devices ([@rccoleman] - [#30496]) ([mobile_app docs]) +- Correct integration names in manifests (A-B) ([@frenck] - [#30527]) +- Fire restarted event on restarting active timer ([@mnigbur] - [#30475]) ([timer docs]) (breaking change) +- Bump synologydsm to 0.3.0 ([@Quentame] - [#30529]) ([synologydsm docs]) +- Add pilight dimmer as light component ([@Trekky12] - [#30107]) ([pilight docs]) (new-platform) +- Add "autobypass" option when arming AlarmDecoder integration ([@lexam79] - [#30002]) ([alarmdecoder docs]) +- Update vizio component to prepare for config flow and zeroconf support ([@raman325] - [#30522]) ([vizio docs]) +- Correct names in manifests (C-L) ([@frenck] - [#30532]) +- Use collection helpers for input_boolean ([@Adminiuga] - [#30514]) ([input_boolean docs]) +- Add venstar PIN to config and client initialization ([@csfreak] - [#30300]) ([venstar docs]) +- Swiss Transport Data: Save delay on sensor ([@colinfrei] - [#30526]) ([swiss_public_transport docs]) +- Update manifest.json: Typo fixed ([@casperklein] - [#30542]) ([default_config docs]) +- Upgrade to use new version of HASS-nabucasa ([@balloob] - [#30506]) ([cloud docs]) +- Correct names in manifests (M-P) ([@frenck] - [#30541]) +- Bump adb-shell to 0.1.1 and androidtv to 0.0.38 ([@JeffLIrion] - [#30539]) ([androidtv docs]) +- Catch UnicodeDecodeError exceptions in 'androidtv.adb_command' service ([@JeffLIrion] - [#30538]) ([androidtv docs]) +- Remove `suppress_warning` from config options for vizio component ([@raman325] - [#30536]) ([vizio docs]) (breaking change) +- Use capability attributes in climate ([@balloob] - [#30544]) ([climate docs]) +- Correct names in manifests (Q-S) ([@frenck] - [#30543]) +- Update featured integrations screenshot in README ([@springstan] - [#30134]) +- Correct names in manifests (T-Z) ([@frenck] - [#30546]) +- Add TMB sensor ([@alemuro] - [#27964]) ([tmb docs]) (new-integration) +- Add reset_energy_counter service to Homematic IP Cloud ([@SukramJ] - [#30256]) ([homematicip_cloud docs]) +- Add Integration Quality Scale to manifest ([@frenck] - [#30547]) +- Ease code before adding color and temperature to light template ([@tetienne] - [#30455]) ([template docs]) +- Entity Component to no longer generate automatic groups ([@balloob] - [#23789]) ([automation docs]) ([calendar docs]) ([cover docs]) ([device_tracker docs]) ([fan docs]) ([light docs]) ([lock docs]) ([plant docs]) ([remember_the_milk docs]) ([remote docs]) ([script docs]) ([switch docs]) ([vacuum docs]) (breaking change) +- Fix incorrect Rainmachine dict lookups ([@bachya] - [#30550]) ([rainmachine docs]) +- Fix missing strings for deconz magic cube rotation support ([@FrengerH] - [#30552]) ([deconz docs]) +- Fix hue flashing innr lights ([@InuSasha] - [#29828]) ([hue docs]) +- Migrate Integration Quality Scale from docs to manifest: internal ([@frenck] - [#30551]) +- Updated frontend to 20200107.0 ([@bramkragten] - [#30561]) ([frontend docs]) +- Add command to delete lovelace config ([@bramkragten] - [#30558]) ([lovelace docs]) +- Add android repo to issue template ([@dshokouhi] - [#30571]) +- Bump pyRFXtrx to 0.25 ([@Ernst79] - [#30566]) ([rfxtrx docs]) (breaking change) +- deCONZ - Make sensors sorted on creation for deterministic order ([@Kane610] - [#30569]) ([deconz docs]) +- deCONZ - Fix device automations ([@Kane610] - [#30577]) ([deconz docs]) +- Trigger automation without skipping condition ([@Santobert] - [#28484]) ([automation docs]) +- Use more consts for person implementation ([@Adminiuga] - [#30553]) ([person docs]) +- Migrate Integration Quality Scale from docs to manifest ([@frenck] - [#30579]) +- Add missing string for already_configured in Brother integration ([@bieniu] - [#30584]) ([brother docs]) +- Bump adguardhome to 0.4.1 ([@frenck] - [#30586]) ([adguard docs]) +- Add missing string for already_configured in GIOS integration ([@bieniu] - [#30590]) ([gios docs]) +- evohome: allow two round thermostats per gateway ([@zxdavb] - [#30589]) ([evohome docs]) +- Updated frontend to 20200108.0 ([@bramkragten] - [#30591]) ([frontend docs]) +- Fix WLED transition time unit ([@frenck] - [#30583]) ([wled docs]) +- Add Stookalert integration ([@fwestenberg] - [#30306]) ([stookalert docs]) (new-integration) +- The MFI Dimmer Switch model is missing from the list, causing the mfi Wall switches not to be recognized. ([@mohmacht] - [#30572]) ([mfi docs]) +- Add last_online and level attribute to steam online ([@mfaraco] - [#30321]) ([steam_online docs]) +- Fix upnp raw sensor state formatting when None ([@pnbruckner] - [#30444]) ([upnp docs]) (beta fix) +- Implement capability attributes ([@balloob] - [#30545]) ([fan docs]) ([media_player docs]) ([vacuum docs]) ([water_heater docs]) (beta fix) +- Add Ring config flow ([@balloob] - [#30564]) ([ring docs]) (breaking change) (beta fix) +- Fix problem with restoring POE control ([@Kane610] - [#30597]) ([unifi docs]) (beta fix) +- Set body size for Proxy / streams to 16mb ([@pvizeli] - [#30608]) ([http docs]) (beta fix) +- Bump Adafruit_BBIO to 1.1.1 ([@springstan] - [#30630]) ([bbb_gpio docs]) (beta fix) +- Do not save last_seen if older than prev_seen ([@pnbruckner] - [#30647]) ([life360 docs]) (beta fix) +- Fix HomeKit with entity registry restoration where supported_features is a non-None falsey ([@Jc2k] - [#30657]) ([homekit docs]) (beta fix) +- Fix ZHA temperature sensor restoration ([@Adminiuga] - [#30661]) ([zha docs]) (beta fix) +- Update ON/OFF condition and triggers to match documentation and UI, issue #30462 ([@davet2001] - [#30663]) ([binary_sensor docs]) (breaking change) (beta fix) +- Upgrade Ring to new version ([@balloob] - [#30666]) ([ring docs]) (beta fix) +- Fix Error with HomematicIP Cloud Cover ([@SukramJ] - [#30667]) ([homematicip_cloud docs]) (beta fix) +- Ring OTP improvement ([@balloob] - [#30688]) ([ring docs]) (beta fix) +- Log error when integration is missing platform setup ([@balloob] - [#30690]) (beta fix) +- Fix update person validation ([@balloob] - [#30691]) ([person docs]) (beta fix) +- Fix discovery for oauth2 flow implementations ([@frenck] - [#30700]) (beta fix) +- Revert "Forget auth token when going offline so we can reconnect (#26630)" ([@pnbruckner] - [#30705]) ([amcrest docs]) (beta fix) +- Fix Ring wifi sensors ([@balloob] - [#30735]) ([ring docs]) (beta fix) +- update aiopylgtv to 0.2.5 ([@bendavid] - [#30702]) ([webostv docs]) (beta fix) +- update aiopylgtv to 0.2.6 ([@bendavid] - [#30739]) ([webostv docs]) (beta fix) +- Bump ZHA quirks to 0.0.31 ([@dmulcahey] - [#30740]) ([zha docs]) (beta fix) +- Update Ring to 0.6.0 ([@balloob] - [#30748]) ([ring docs]) (beta fix) +- Set default locale for cloud Alexa config ([@balloob] - [#30749]) ([alexa docs]) ([cloud docs]) (beta fix) +- Bump teslajsonpy to 0.2.3 ([@alandtse] - [#30750]) ([tesla docs]) (beta fix) +- Update pyhomematic to 0.1.63 ([@danielperna84] - [#30594]) ([homematic docs]) (beta fix) +- Refactor HomeMatic / Fix issue with 0.104/dev ([@pvizeli] - [#30752]) ([homematic docs]) (beta fix) +- bump aiokef to 0.2.5 which uses locks ([@basnijholt] - [#30753]) ([kef docs]) (beta fix) +- Fix HomeKit behavior with lights supporting color and temperature ([@frenck] - [#30756]) ([homekit docs]) (beta fix) +- Revert #29701 ([@pvizeli] - [#30766]) ([zwave docs]) (beta fix) +- Refactor Ring data handling ([@balloob] - [#30777]) ([ring docs]) (beta fix) +- Restore unit_of_measurement from entity registry ([@Jc2k] - [#30780]) (beta fix) + +[#23789]: https://github.com/home-assistant/home-assistant/pull/23789 +[#24426]: https://github.com/home-assistant/home-assistant/pull/24426 +[#25364]: https://github.com/home-assistant/home-assistant/pull/25364 +[#26650]: https://github.com/home-assistant/home-assistant/pull/26650 +[#27453]: https://github.com/home-assistant/home-assistant/pull/27453 +[#27569]: https://github.com/home-assistant/home-assistant/pull/27569 +[#27692]: https://github.com/home-assistant/home-assistant/pull/27692 +[#27867]: https://github.com/home-assistant/home-assistant/pull/27867 +[#27920]: https://github.com/home-assistant/home-assistant/pull/27920 +[#27964]: https://github.com/home-assistant/home-assistant/pull/27964 +[#28155]: https://github.com/home-assistant/home-assistant/pull/28155 +[#28197]: https://github.com/home-assistant/home-assistant/pull/28197 +[#28276]: https://github.com/home-assistant/home-assistant/pull/28276 +[#28340]: https://github.com/home-assistant/home-assistant/pull/28340 +[#28484]: https://github.com/home-assistant/home-assistant/pull/28484 +[#28537]: https://github.com/home-assistant/home-assistant/pull/28537 +[#28579]: https://github.com/home-assistant/home-assistant/pull/28579 +[#28652]: https://github.com/home-assistant/home-assistant/pull/28652 +[#28671]: https://github.com/home-assistant/home-assistant/pull/28671 +[#28719]: https://github.com/home-assistant/home-assistant/pull/28719 +[#28744]: https://github.com/home-assistant/home-assistant/pull/28744 +[#28837]: https://github.com/home-assistant/home-assistant/pull/28837 +[#28959]: https://github.com/home-assistant/home-assistant/pull/28959 +[#28968]: https://github.com/home-assistant/home-assistant/pull/28968 +[#28975]: https://github.com/home-assistant/home-assistant/pull/28975 +[#29223]: https://github.com/home-assistant/home-assistant/pull/29223 +[#29244]: https://github.com/home-assistant/home-assistant/pull/29244 +[#29246]: https://github.com/home-assistant/home-assistant/pull/29246 +[#29295]: https://github.com/home-assistant/home-assistant/pull/29295 +[#29296]: https://github.com/home-assistant/home-assistant/pull/29296 +[#29374]: https://github.com/home-assistant/home-assistant/pull/29374 +[#29377]: https://github.com/home-assistant/home-assistant/pull/29377 +[#29379]: https://github.com/home-assistant/home-assistant/pull/29379 +[#29439]: https://github.com/home-assistant/home-assistant/pull/29439 +[#29465]: https://github.com/home-assistant/home-assistant/pull/29465 +[#29485]: https://github.com/home-assistant/home-assistant/pull/29485 +[#29487]: https://github.com/home-assistant/home-assistant/pull/29487 +[#29494]: https://github.com/home-assistant/home-assistant/pull/29494 +[#29497]: https://github.com/home-assistant/home-assistant/pull/29497 +[#29498]: https://github.com/home-assistant/home-assistant/pull/29498 +[#29499]: https://github.com/home-assistant/home-assistant/pull/29499 +[#29500]: https://github.com/home-assistant/home-assistant/pull/29500 +[#29501]: https://github.com/home-assistant/home-assistant/pull/29501 +[#29504]: https://github.com/home-assistant/home-assistant/pull/29504 +[#29506]: https://github.com/home-assistant/home-assistant/pull/29506 +[#29507]: https://github.com/home-assistant/home-assistant/pull/29507 +[#29508]: https://github.com/home-assistant/home-assistant/pull/29508 +[#29509]: https://github.com/home-assistant/home-assistant/pull/29509 +[#29510]: https://github.com/home-assistant/home-assistant/pull/29510 +[#29511]: https://github.com/home-assistant/home-assistant/pull/29511 +[#29513]: https://github.com/home-assistant/home-assistant/pull/29513 +[#29514]: https://github.com/home-assistant/home-assistant/pull/29514 +[#29515]: https://github.com/home-assistant/home-assistant/pull/29515 +[#29516]: https://github.com/home-assistant/home-assistant/pull/29516 +[#29517]: https://github.com/home-assistant/home-assistant/pull/29517 +[#29518]: https://github.com/home-assistant/home-assistant/pull/29518 +[#29520]: https://github.com/home-assistant/home-assistant/pull/29520 +[#29523]: https://github.com/home-assistant/home-assistant/pull/29523 +[#29525]: https://github.com/home-assistant/home-assistant/pull/29525 +[#29527]: https://github.com/home-assistant/home-assistant/pull/29527 +[#29530]: https://github.com/home-assistant/home-assistant/pull/29530 +[#29534]: https://github.com/home-assistant/home-assistant/pull/29534 +[#29535]: https://github.com/home-assistant/home-assistant/pull/29535 +[#29537]: https://github.com/home-assistant/home-assistant/pull/29537 +[#29538]: https://github.com/home-assistant/home-assistant/pull/29538 +[#29539]: https://github.com/home-assistant/home-assistant/pull/29539 +[#29540]: https://github.com/home-assistant/home-assistant/pull/29540 +[#29541]: https://github.com/home-assistant/home-assistant/pull/29541 +[#29542]: https://github.com/home-assistant/home-assistant/pull/29542 +[#29543]: https://github.com/home-assistant/home-assistant/pull/29543 +[#29544]: https://github.com/home-assistant/home-assistant/pull/29544 +[#29545]: https://github.com/home-assistant/home-assistant/pull/29545 +[#29546]: https://github.com/home-assistant/home-assistant/pull/29546 +[#29547]: https://github.com/home-assistant/home-assistant/pull/29547 +[#29548]: https://github.com/home-assistant/home-assistant/pull/29548 +[#29550]: https://github.com/home-assistant/home-assistant/pull/29550 +[#29552]: https://github.com/home-assistant/home-assistant/pull/29552 +[#29553]: https://github.com/home-assistant/home-assistant/pull/29553 +[#29555]: https://github.com/home-assistant/home-assistant/pull/29555 +[#29556]: https://github.com/home-assistant/home-assistant/pull/29556 +[#29557]: https://github.com/home-assistant/home-assistant/pull/29557 +[#29558]: https://github.com/home-assistant/home-assistant/pull/29558 +[#29560]: https://github.com/home-assistant/home-assistant/pull/29560 +[#29561]: https://github.com/home-assistant/home-assistant/pull/29561 +[#29562]: https://github.com/home-assistant/home-assistant/pull/29562 +[#29564]: https://github.com/home-assistant/home-assistant/pull/29564 +[#29566]: https://github.com/home-assistant/home-assistant/pull/29566 +[#29571]: https://github.com/home-assistant/home-assistant/pull/29571 +[#29573]: https://github.com/home-assistant/home-assistant/pull/29573 +[#29575]: https://github.com/home-assistant/home-assistant/pull/29575 +[#29579]: https://github.com/home-assistant/home-assistant/pull/29579 +[#29581]: https://github.com/home-assistant/home-assistant/pull/29581 +[#29582]: https://github.com/home-assistant/home-assistant/pull/29582 +[#29584]: https://github.com/home-assistant/home-assistant/pull/29584 +[#29586]: https://github.com/home-assistant/home-assistant/pull/29586 +[#29592]: https://github.com/home-assistant/home-assistant/pull/29592 +[#29594]: https://github.com/home-assistant/home-assistant/pull/29594 +[#29597]: https://github.com/home-assistant/home-assistant/pull/29597 +[#29598]: https://github.com/home-assistant/home-assistant/pull/29598 +[#29601]: https://github.com/home-assistant/home-assistant/pull/29601 +[#29607]: https://github.com/home-assistant/home-assistant/pull/29607 +[#29608]: https://github.com/home-assistant/home-assistant/pull/29608 +[#29609]: https://github.com/home-assistant/home-assistant/pull/29609 +[#29610]: https://github.com/home-assistant/home-assistant/pull/29610 +[#29611]: https://github.com/home-assistant/home-assistant/pull/29611 +[#29612]: https://github.com/home-assistant/home-assistant/pull/29612 +[#29613]: https://github.com/home-assistant/home-assistant/pull/29613 +[#29614]: https://github.com/home-assistant/home-assistant/pull/29614 +[#29615]: https://github.com/home-assistant/home-assistant/pull/29615 +[#29616]: https://github.com/home-assistant/home-assistant/pull/29616 +[#29617]: https://github.com/home-assistant/home-assistant/pull/29617 +[#29618]: https://github.com/home-assistant/home-assistant/pull/29618 +[#29619]: https://github.com/home-assistant/home-assistant/pull/29619 +[#29620]: https://github.com/home-assistant/home-assistant/pull/29620 +[#29621]: https://github.com/home-assistant/home-assistant/pull/29621 +[#29622]: https://github.com/home-assistant/home-assistant/pull/29622 +[#29623]: https://github.com/home-assistant/home-assistant/pull/29623 +[#29624]: https://github.com/home-assistant/home-assistant/pull/29624 +[#29625]: https://github.com/home-assistant/home-assistant/pull/29625 +[#29626]: https://github.com/home-assistant/home-assistant/pull/29626 +[#29627]: https://github.com/home-assistant/home-assistant/pull/29627 +[#29628]: https://github.com/home-assistant/home-assistant/pull/29628 +[#29629]: https://github.com/home-assistant/home-assistant/pull/29629 +[#29630]: https://github.com/home-assistant/home-assistant/pull/29630 +[#29631]: https://github.com/home-assistant/home-assistant/pull/29631 +[#29632]: https://github.com/home-assistant/home-assistant/pull/29632 +[#29633]: https://github.com/home-assistant/home-assistant/pull/29633 +[#29634]: https://github.com/home-assistant/home-assistant/pull/29634 +[#29635]: https://github.com/home-assistant/home-assistant/pull/29635 +[#29638]: https://github.com/home-assistant/home-assistant/pull/29638 +[#29641]: https://github.com/home-assistant/home-assistant/pull/29641 +[#29644]: https://github.com/home-assistant/home-assistant/pull/29644 +[#29645]: https://github.com/home-assistant/home-assistant/pull/29645 +[#29646]: https://github.com/home-assistant/home-assistant/pull/29646 +[#29647]: https://github.com/home-assistant/home-assistant/pull/29647 +[#29648]: https://github.com/home-assistant/home-assistant/pull/29648 +[#29649]: https://github.com/home-assistant/home-assistant/pull/29649 +[#29650]: https://github.com/home-assistant/home-assistant/pull/29650 +[#29651]: https://github.com/home-assistant/home-assistant/pull/29651 +[#29652]: https://github.com/home-assistant/home-assistant/pull/29652 +[#29653]: https://github.com/home-assistant/home-assistant/pull/29653 +[#29654]: https://github.com/home-assistant/home-assistant/pull/29654 +[#29655]: https://github.com/home-assistant/home-assistant/pull/29655 +[#29656]: https://github.com/home-assistant/home-assistant/pull/29656 +[#29657]: https://github.com/home-assistant/home-assistant/pull/29657 +[#29658]: https://github.com/home-assistant/home-assistant/pull/29658 +[#29659]: https://github.com/home-assistant/home-assistant/pull/29659 +[#29660]: https://github.com/home-assistant/home-assistant/pull/29660 +[#29662]: https://github.com/home-assistant/home-assistant/pull/29662 +[#29663]: https://github.com/home-assistant/home-assistant/pull/29663 +[#29664]: https://github.com/home-assistant/home-assistant/pull/29664 +[#29665]: https://github.com/home-assistant/home-assistant/pull/29665 +[#29666]: https://github.com/home-assistant/home-assistant/pull/29666 +[#29667]: https://github.com/home-assistant/home-assistant/pull/29667 +[#29668]: https://github.com/home-assistant/home-assistant/pull/29668 +[#29669]: https://github.com/home-assistant/home-assistant/pull/29669 +[#29670]: https://github.com/home-assistant/home-assistant/pull/29670 +[#29671]: https://github.com/home-assistant/home-assistant/pull/29671 +[#29672]: https://github.com/home-assistant/home-assistant/pull/29672 +[#29673]: https://github.com/home-assistant/home-assistant/pull/29673 +[#29674]: https://github.com/home-assistant/home-assistant/pull/29674 +[#29675]: https://github.com/home-assistant/home-assistant/pull/29675 +[#29676]: https://github.com/home-assistant/home-assistant/pull/29676 +[#29677]: https://github.com/home-assistant/home-assistant/pull/29677 +[#29678]: https://github.com/home-assistant/home-assistant/pull/29678 +[#29679]: https://github.com/home-assistant/home-assistant/pull/29679 +[#29680]: https://github.com/home-assistant/home-assistant/pull/29680 +[#29681]: https://github.com/home-assistant/home-assistant/pull/29681 +[#29682]: https://github.com/home-assistant/home-assistant/pull/29682 +[#29683]: https://github.com/home-assistant/home-assistant/pull/29683 +[#29684]: https://github.com/home-assistant/home-assistant/pull/29684 +[#29685]: https://github.com/home-assistant/home-assistant/pull/29685 +[#29687]: https://github.com/home-assistant/home-assistant/pull/29687 +[#29688]: https://github.com/home-assistant/home-assistant/pull/29688 +[#29689]: https://github.com/home-assistant/home-assistant/pull/29689 +[#29690]: https://github.com/home-assistant/home-assistant/pull/29690 +[#29691]: https://github.com/home-assistant/home-assistant/pull/29691 +[#29692]: https://github.com/home-assistant/home-assistant/pull/29692 +[#29693]: https://github.com/home-assistant/home-assistant/pull/29693 +[#29694]: https://github.com/home-assistant/home-assistant/pull/29694 +[#29695]: https://github.com/home-assistant/home-assistant/pull/29695 +[#29696]: https://github.com/home-assistant/home-assistant/pull/29696 +[#29697]: https://github.com/home-assistant/home-assistant/pull/29697 +[#29698]: https://github.com/home-assistant/home-assistant/pull/29698 +[#29699]: https://github.com/home-assistant/home-assistant/pull/29699 +[#29701]: https://github.com/home-assistant/home-assistant/pull/29701 +[#29702]: https://github.com/home-assistant/home-assistant/pull/29702 +[#29703]: https://github.com/home-assistant/home-assistant/pull/29703 +[#29704]: https://github.com/home-assistant/home-assistant/pull/29704 +[#29705]: https://github.com/home-assistant/home-assistant/pull/29705 +[#29706]: https://github.com/home-assistant/home-assistant/pull/29706 +[#29707]: https://github.com/home-assistant/home-assistant/pull/29707 +[#29708]: https://github.com/home-assistant/home-assistant/pull/29708 +[#29709]: https://github.com/home-assistant/home-assistant/pull/29709 +[#29710]: https://github.com/home-assistant/home-assistant/pull/29710 +[#29711]: https://github.com/home-assistant/home-assistant/pull/29711 +[#29712]: https://github.com/home-assistant/home-assistant/pull/29712 +[#29713]: https://github.com/home-assistant/home-assistant/pull/29713 +[#29714]: https://github.com/home-assistant/home-assistant/pull/29714 +[#29715]: https://github.com/home-assistant/home-assistant/pull/29715 +[#29716]: https://github.com/home-assistant/home-assistant/pull/29716 +[#29717]: https://github.com/home-assistant/home-assistant/pull/29717 +[#29718]: https://github.com/home-assistant/home-assistant/pull/29718 +[#29719]: https://github.com/home-assistant/home-assistant/pull/29719 +[#29720]: https://github.com/home-assistant/home-assistant/pull/29720 +[#29721]: https://github.com/home-assistant/home-assistant/pull/29721 +[#29722]: https://github.com/home-assistant/home-assistant/pull/29722 +[#29723]: https://github.com/home-assistant/home-assistant/pull/29723 +[#29724]: https://github.com/home-assistant/home-assistant/pull/29724 +[#29725]: https://github.com/home-assistant/home-assistant/pull/29725 +[#29726]: https://github.com/home-assistant/home-assistant/pull/29726 +[#29736]: https://github.com/home-assistant/home-assistant/pull/29736 +[#29738]: https://github.com/home-assistant/home-assistant/pull/29738 +[#29739]: https://github.com/home-assistant/home-assistant/pull/29739 +[#29745]: https://github.com/home-assistant/home-assistant/pull/29745 +[#29747]: https://github.com/home-assistant/home-assistant/pull/29747 +[#29748]: https://github.com/home-assistant/home-assistant/pull/29748 +[#29749]: https://github.com/home-assistant/home-assistant/pull/29749 +[#29750]: https://github.com/home-assistant/home-assistant/pull/29750 +[#29751]: https://github.com/home-assistant/home-assistant/pull/29751 +[#29752]: https://github.com/home-assistant/home-assistant/pull/29752 +[#29753]: https://github.com/home-assistant/home-assistant/pull/29753 +[#29754]: https://github.com/home-assistant/home-assistant/pull/29754 +[#29755]: https://github.com/home-assistant/home-assistant/pull/29755 +[#29756]: https://github.com/home-assistant/home-assistant/pull/29756 +[#29757]: https://github.com/home-assistant/home-assistant/pull/29757 +[#29758]: https://github.com/home-assistant/home-assistant/pull/29758 +[#29759]: https://github.com/home-assistant/home-assistant/pull/29759 +[#29760]: https://github.com/home-assistant/home-assistant/pull/29760 +[#29761]: https://github.com/home-assistant/home-assistant/pull/29761 +[#29762]: https://github.com/home-assistant/home-assistant/pull/29762 +[#29763]: https://github.com/home-assistant/home-assistant/pull/29763 +[#29764]: https://github.com/home-assistant/home-assistant/pull/29764 +[#29765]: https://github.com/home-assistant/home-assistant/pull/29765 +[#29766]: https://github.com/home-assistant/home-assistant/pull/29766 +[#29767]: https://github.com/home-assistant/home-assistant/pull/29767 +[#29768]: https://github.com/home-assistant/home-assistant/pull/29768 +[#29769]: https://github.com/home-assistant/home-assistant/pull/29769 +[#29770]: https://github.com/home-assistant/home-assistant/pull/29770 +[#29771]: https://github.com/home-assistant/home-assistant/pull/29771 +[#29772]: https://github.com/home-assistant/home-assistant/pull/29772 +[#29773]: https://github.com/home-assistant/home-assistant/pull/29773 +[#29774]: https://github.com/home-assistant/home-assistant/pull/29774 +[#29775]: https://github.com/home-assistant/home-assistant/pull/29775 +[#29776]: https://github.com/home-assistant/home-assistant/pull/29776 +[#29777]: https://github.com/home-assistant/home-assistant/pull/29777 +[#29778]: https://github.com/home-assistant/home-assistant/pull/29778 +[#29779]: https://github.com/home-assistant/home-assistant/pull/29779 +[#29780]: https://github.com/home-assistant/home-assistant/pull/29780 +[#29781]: https://github.com/home-assistant/home-assistant/pull/29781 +[#29782]: https://github.com/home-assistant/home-assistant/pull/29782 +[#29783]: https://github.com/home-assistant/home-assistant/pull/29783 +[#29784]: https://github.com/home-assistant/home-assistant/pull/29784 +[#29785]: https://github.com/home-assistant/home-assistant/pull/29785 +[#29788]: https://github.com/home-assistant/home-assistant/pull/29788 +[#29789]: https://github.com/home-assistant/home-assistant/pull/29789 +[#29790]: https://github.com/home-assistant/home-assistant/pull/29790 +[#29791]: https://github.com/home-assistant/home-assistant/pull/29791 +[#29792]: https://github.com/home-assistant/home-assistant/pull/29792 +[#29795]: https://github.com/home-assistant/home-assistant/pull/29795 +[#29797]: https://github.com/home-assistant/home-assistant/pull/29797 +[#29798]: https://github.com/home-assistant/home-assistant/pull/29798 +[#29799]: https://github.com/home-assistant/home-assistant/pull/29799 +[#29801]: https://github.com/home-assistant/home-assistant/pull/29801 +[#29802]: https://github.com/home-assistant/home-assistant/pull/29802 +[#29803]: https://github.com/home-assistant/home-assistant/pull/29803 +[#29805]: https://github.com/home-assistant/home-assistant/pull/29805 +[#29806]: https://github.com/home-assistant/home-assistant/pull/29806 +[#29808]: https://github.com/home-assistant/home-assistant/pull/29808 +[#29811]: https://github.com/home-assistant/home-assistant/pull/29811 +[#29818]: https://github.com/home-assistant/home-assistant/pull/29818 +[#29828]: https://github.com/home-assistant/home-assistant/pull/29828 +[#29829]: https://github.com/home-assistant/home-assistant/pull/29829 +[#29830]: https://github.com/home-assistant/home-assistant/pull/29830 +[#29836]: https://github.com/home-assistant/home-assistant/pull/29836 +[#29840]: https://github.com/home-assistant/home-assistant/pull/29840 +[#29842]: https://github.com/home-assistant/home-assistant/pull/29842 +[#29860]: https://github.com/home-assistant/home-assistant/pull/29860 +[#29861]: https://github.com/home-assistant/home-assistant/pull/29861 +[#29874]: https://github.com/home-assistant/home-assistant/pull/29874 +[#29878]: https://github.com/home-assistant/home-assistant/pull/29878 +[#29882]: https://github.com/home-assistant/home-assistant/pull/29882 +[#29888]: https://github.com/home-assistant/home-assistant/pull/29888 +[#29890]: https://github.com/home-assistant/home-assistant/pull/29890 +[#29900]: https://github.com/home-assistant/home-assistant/pull/29900 +[#29903]: https://github.com/home-assistant/home-assistant/pull/29903 +[#29906]: https://github.com/home-assistant/home-assistant/pull/29906 +[#29910]: https://github.com/home-assistant/home-assistant/pull/29910 +[#29911]: https://github.com/home-assistant/home-assistant/pull/29911 +[#29912]: https://github.com/home-assistant/home-assistant/pull/29912 +[#29914]: https://github.com/home-assistant/home-assistant/pull/29914 +[#29917]: https://github.com/home-assistant/home-assistant/pull/29917 +[#29918]: https://github.com/home-assistant/home-assistant/pull/29918 +[#29932]: https://github.com/home-assistant/home-assistant/pull/29932 +[#29938]: https://github.com/home-assistant/home-assistant/pull/29938 +[#29948]: https://github.com/home-assistant/home-assistant/pull/29948 +[#29953]: https://github.com/home-assistant/home-assistant/pull/29953 +[#29954]: https://github.com/home-assistant/home-assistant/pull/29954 +[#29959]: https://github.com/home-assistant/home-assistant/pull/29959 +[#29960]: https://github.com/home-assistant/home-assistant/pull/29960 +[#29965]: https://github.com/home-assistant/home-assistant/pull/29965 +[#29966]: https://github.com/home-assistant/home-assistant/pull/29966 +[#29968]: https://github.com/home-assistant/home-assistant/pull/29968 +[#29969]: https://github.com/home-assistant/home-assistant/pull/29969 +[#29972]: https://github.com/home-assistant/home-assistant/pull/29972 +[#29973]: https://github.com/home-assistant/home-assistant/pull/29973 +[#29977]: https://github.com/home-assistant/home-assistant/pull/29977 +[#29978]: https://github.com/home-assistant/home-assistant/pull/29978 +[#29979]: https://github.com/home-assistant/home-assistant/pull/29979 +[#29984]: https://github.com/home-assistant/home-assistant/pull/29984 +[#29989]: https://github.com/home-assistant/home-assistant/pull/29989 +[#29990]: https://github.com/home-assistant/home-assistant/pull/29990 +[#29991]: https://github.com/home-assistant/home-assistant/pull/29991 +[#29995]: https://github.com/home-assistant/home-assistant/pull/29995 +[#30000]: https://github.com/home-assistant/home-assistant/pull/30000 +[#30002]: https://github.com/home-assistant/home-assistant/pull/30002 +[#30005]: https://github.com/home-assistant/home-assistant/pull/30005 +[#30008]: https://github.com/home-assistant/home-assistant/pull/30008 +[#30011]: https://github.com/home-assistant/home-assistant/pull/30011 +[#30015]: https://github.com/home-assistant/home-assistant/pull/30015 +[#30027]: https://github.com/home-assistant/home-assistant/pull/30027 +[#30028]: https://github.com/home-assistant/home-assistant/pull/30028 +[#30030]: https://github.com/home-assistant/home-assistant/pull/30030 +[#30034]: https://github.com/home-assistant/home-assistant/pull/30034 +[#30035]: https://github.com/home-assistant/home-assistant/pull/30035 +[#30037]: https://github.com/home-assistant/home-assistant/pull/30037 +[#30053]: https://github.com/home-assistant/home-assistant/pull/30053 +[#30057]: https://github.com/home-assistant/home-assistant/pull/30057 +[#30059]: https://github.com/home-assistant/home-assistant/pull/30059 +[#30068]: https://github.com/home-assistant/home-assistant/pull/30068 +[#30077]: https://github.com/home-assistant/home-assistant/pull/30077 +[#30082]: https://github.com/home-assistant/home-assistant/pull/30082 +[#30083]: https://github.com/home-assistant/home-assistant/pull/30083 +[#30086]: https://github.com/home-assistant/home-assistant/pull/30086 +[#30090]: https://github.com/home-assistant/home-assistant/pull/30090 +[#30093]: https://github.com/home-assistant/home-assistant/pull/30093 +[#30094]: https://github.com/home-assistant/home-assistant/pull/30094 +[#30097]: https://github.com/home-assistant/home-assistant/pull/30097 +[#30099]: https://github.com/home-assistant/home-assistant/pull/30099 +[#30100]: https://github.com/home-assistant/home-assistant/pull/30100 +[#30101]: https://github.com/home-assistant/home-assistant/pull/30101 +[#30104]: https://github.com/home-assistant/home-assistant/pull/30104 +[#30106]: https://github.com/home-assistant/home-assistant/pull/30106 +[#30107]: https://github.com/home-assistant/home-assistant/pull/30107 +[#30108]: https://github.com/home-assistant/home-assistant/pull/30108 +[#30110]: https://github.com/home-assistant/home-assistant/pull/30110 +[#30122]: https://github.com/home-assistant/home-assistant/pull/30122 +[#30123]: https://github.com/home-assistant/home-assistant/pull/30123 +[#30125]: https://github.com/home-assistant/home-assistant/pull/30125 +[#30130]: https://github.com/home-assistant/home-assistant/pull/30130 +[#30131]: https://github.com/home-assistant/home-assistant/pull/30131 +[#30132]: https://github.com/home-assistant/home-assistant/pull/30132 +[#30133]: https://github.com/home-assistant/home-assistant/pull/30133 +[#30134]: https://github.com/home-assistant/home-assistant/pull/30134 +[#30135]: https://github.com/home-assistant/home-assistant/pull/30135 +[#30138]: https://github.com/home-assistant/home-assistant/pull/30138 +[#30139]: https://github.com/home-assistant/home-assistant/pull/30139 +[#30140]: https://github.com/home-assistant/home-assistant/pull/30140 +[#30142]: https://github.com/home-assistant/home-assistant/pull/30142 +[#30144]: https://github.com/home-assistant/home-assistant/pull/30144 +[#30145]: https://github.com/home-assistant/home-assistant/pull/30145 +[#30149]: https://github.com/home-assistant/home-assistant/pull/30149 +[#30158]: https://github.com/home-assistant/home-assistant/pull/30158 +[#30159]: https://github.com/home-assistant/home-assistant/pull/30159 +[#30170]: https://github.com/home-assistant/home-assistant/pull/30170 +[#30171]: https://github.com/home-assistant/home-assistant/pull/30171 +[#30172]: https://github.com/home-assistant/home-assistant/pull/30172 +[#30178]: https://github.com/home-assistant/home-assistant/pull/30178 +[#30179]: https://github.com/home-assistant/home-assistant/pull/30179 +[#30183]: https://github.com/home-assistant/home-assistant/pull/30183 +[#30185]: https://github.com/home-assistant/home-assistant/pull/30185 +[#30187]: https://github.com/home-assistant/home-assistant/pull/30187 +[#30191]: https://github.com/home-assistant/home-assistant/pull/30191 +[#30196]: https://github.com/home-assistant/home-assistant/pull/30196 +[#30203]: https://github.com/home-assistant/home-assistant/pull/30203 +[#30206]: https://github.com/home-assistant/home-assistant/pull/30206 +[#30207]: https://github.com/home-assistant/home-assistant/pull/30207 +[#30208]: https://github.com/home-assistant/home-assistant/pull/30208 +[#30213]: https://github.com/home-assistant/home-assistant/pull/30213 +[#30214]: https://github.com/home-assistant/home-assistant/pull/30214 +[#30217]: https://github.com/home-assistant/home-assistant/pull/30217 +[#30223]: https://github.com/home-assistant/home-assistant/pull/30223 +[#30225]: https://github.com/home-assistant/home-assistant/pull/30225 +[#30226]: https://github.com/home-assistant/home-assistant/pull/30226 +[#30228]: https://github.com/home-assistant/home-assistant/pull/30228 +[#30234]: https://github.com/home-assistant/home-assistant/pull/30234 +[#30237]: https://github.com/home-assistant/home-assistant/pull/30237 +[#30239]: https://github.com/home-assistant/home-assistant/pull/30239 +[#30240]: https://github.com/home-assistant/home-assistant/pull/30240 +[#30247]: https://github.com/home-assistant/home-assistant/pull/30247 +[#30249]: https://github.com/home-assistant/home-assistant/pull/30249 +[#30250]: https://github.com/home-assistant/home-assistant/pull/30250 +[#30254]: https://github.com/home-assistant/home-assistant/pull/30254 +[#30255]: https://github.com/home-assistant/home-assistant/pull/30255 +[#30256]: https://github.com/home-assistant/home-assistant/pull/30256 +[#30257]: https://github.com/home-assistant/home-assistant/pull/30257 +[#30259]: https://github.com/home-assistant/home-assistant/pull/30259 +[#30261]: https://github.com/home-assistant/home-assistant/pull/30261 +[#30268]: https://github.com/home-assistant/home-assistant/pull/30268 +[#30269]: https://github.com/home-assistant/home-assistant/pull/30269 +[#30270]: https://github.com/home-assistant/home-assistant/pull/30270 +[#30273]: https://github.com/home-assistant/home-assistant/pull/30273 +[#30274]: https://github.com/home-assistant/home-assistant/pull/30274 +[#30279]: https://github.com/home-assistant/home-assistant/pull/30279 +[#30280]: https://github.com/home-assistant/home-assistant/pull/30280 +[#30285]: https://github.com/home-assistant/home-assistant/pull/30285 +[#30286]: https://github.com/home-assistant/home-assistant/pull/30286 +[#30287]: https://github.com/home-assistant/home-assistant/pull/30287 +[#30288]: https://github.com/home-assistant/home-assistant/pull/30288 +[#30297]: https://github.com/home-assistant/home-assistant/pull/30297 +[#30300]: https://github.com/home-assistant/home-assistant/pull/30300 +[#30301]: https://github.com/home-assistant/home-assistant/pull/30301 +[#30303]: https://github.com/home-assistant/home-assistant/pull/30303 +[#30305]: https://github.com/home-assistant/home-assistant/pull/30305 +[#30306]: https://github.com/home-assistant/home-assistant/pull/30306 +[#30308]: https://github.com/home-assistant/home-assistant/pull/30308 +[#30309]: https://github.com/home-assistant/home-assistant/pull/30309 +[#30310]: https://github.com/home-assistant/home-assistant/pull/30310 +[#30313]: https://github.com/home-assistant/home-assistant/pull/30313 +[#30315]: https://github.com/home-assistant/home-assistant/pull/30315 +[#30317]: https://github.com/home-assistant/home-assistant/pull/30317 +[#30318]: https://github.com/home-assistant/home-assistant/pull/30318 +[#30319]: https://github.com/home-assistant/home-assistant/pull/30319 +[#30320]: https://github.com/home-assistant/home-assistant/pull/30320 +[#30321]: https://github.com/home-assistant/home-assistant/pull/30321 +[#30323]: https://github.com/home-assistant/home-assistant/pull/30323 +[#30325]: https://github.com/home-assistant/home-assistant/pull/30325 +[#30326]: https://github.com/home-assistant/home-assistant/pull/30326 +[#30327]: https://github.com/home-assistant/home-assistant/pull/30327 +[#30329]: https://github.com/home-assistant/home-assistant/pull/30329 +[#30330]: https://github.com/home-assistant/home-assistant/pull/30330 +[#30331]: https://github.com/home-assistant/home-assistant/pull/30331 +[#30332]: https://github.com/home-assistant/home-assistant/pull/30332 +[#30333]: https://github.com/home-assistant/home-assistant/pull/30333 +[#30335]: https://github.com/home-assistant/home-assistant/pull/30335 +[#30336]: https://github.com/home-assistant/home-assistant/pull/30336 +[#30338]: https://github.com/home-assistant/home-assistant/pull/30338 +[#30341]: https://github.com/home-assistant/home-assistant/pull/30341 +[#30342]: https://github.com/home-assistant/home-assistant/pull/30342 +[#30347]: https://github.com/home-assistant/home-assistant/pull/30347 +[#30348]: https://github.com/home-assistant/home-assistant/pull/30348 +[#30350]: https://github.com/home-assistant/home-assistant/pull/30350 +[#30351]: https://github.com/home-assistant/home-assistant/pull/30351 +[#30352]: https://github.com/home-assistant/home-assistant/pull/30352 +[#30353]: https://github.com/home-assistant/home-assistant/pull/30353 +[#30354]: https://github.com/home-assistant/home-assistant/pull/30354 +[#30355]: https://github.com/home-assistant/home-assistant/pull/30355 +[#30358]: https://github.com/home-assistant/home-assistant/pull/30358 +[#30359]: https://github.com/home-assistant/home-assistant/pull/30359 +[#30360]: https://github.com/home-assistant/home-assistant/pull/30360 +[#30361]: https://github.com/home-assistant/home-assistant/pull/30361 +[#30363]: https://github.com/home-assistant/home-assistant/pull/30363 +[#30364]: https://github.com/home-assistant/home-assistant/pull/30364 +[#30365]: https://github.com/home-assistant/home-assistant/pull/30365 +[#30366]: https://github.com/home-assistant/home-assistant/pull/30366 +[#30368]: https://github.com/home-assistant/home-assistant/pull/30368 +[#30369]: https://github.com/home-assistant/home-assistant/pull/30369 +[#30370]: https://github.com/home-assistant/home-assistant/pull/30370 +[#30371]: https://github.com/home-assistant/home-assistant/pull/30371 +[#30372]: https://github.com/home-assistant/home-assistant/pull/30372 +[#30374]: https://github.com/home-assistant/home-assistant/pull/30374 +[#30375]: https://github.com/home-assistant/home-assistant/pull/30375 +[#30376]: https://github.com/home-assistant/home-assistant/pull/30376 +[#30377]: https://github.com/home-assistant/home-assistant/pull/30377 +[#30379]: https://github.com/home-assistant/home-assistant/pull/30379 +[#30386]: https://github.com/home-assistant/home-assistant/pull/30386 +[#30387]: https://github.com/home-assistant/home-assistant/pull/30387 +[#30388]: https://github.com/home-assistant/home-assistant/pull/30388 +[#30389]: https://github.com/home-assistant/home-assistant/pull/30389 +[#30390]: https://github.com/home-assistant/home-assistant/pull/30390 +[#30391]: https://github.com/home-assistant/home-assistant/pull/30391 +[#30392]: https://github.com/home-assistant/home-assistant/pull/30392 +[#30397]: https://github.com/home-assistant/home-assistant/pull/30397 +[#30402]: https://github.com/home-assistant/home-assistant/pull/30402 +[#30403]: https://github.com/home-assistant/home-assistant/pull/30403 +[#30405]: https://github.com/home-assistant/home-assistant/pull/30405 +[#30406]: https://github.com/home-assistant/home-assistant/pull/30406 +[#30411]: https://github.com/home-assistant/home-assistant/pull/30411 +[#30415]: https://github.com/home-assistant/home-assistant/pull/30415 +[#30416]: https://github.com/home-assistant/home-assistant/pull/30416 +[#30418]: https://github.com/home-assistant/home-assistant/pull/30418 +[#30421]: https://github.com/home-assistant/home-assistant/pull/30421 +[#30422]: https://github.com/home-assistant/home-assistant/pull/30422 +[#30423]: https://github.com/home-assistant/home-assistant/pull/30423 +[#30428]: https://github.com/home-assistant/home-assistant/pull/30428 +[#30429]: https://github.com/home-assistant/home-assistant/pull/30429 +[#30430]: https://github.com/home-assistant/home-assistant/pull/30430 +[#30432]: https://github.com/home-assistant/home-assistant/pull/30432 +[#30433]: https://github.com/home-assistant/home-assistant/pull/30433 +[#30435]: https://github.com/home-assistant/home-assistant/pull/30435 +[#30437]: https://github.com/home-assistant/home-assistant/pull/30437 +[#30438]: https://github.com/home-assistant/home-assistant/pull/30438 +[#30439]: https://github.com/home-assistant/home-assistant/pull/30439 +[#30440]: https://github.com/home-assistant/home-assistant/pull/30440 +[#30442]: https://github.com/home-assistant/home-assistant/pull/30442 +[#30444]: https://github.com/home-assistant/home-assistant/pull/30444 +[#30445]: https://github.com/home-assistant/home-assistant/pull/30445 +[#30451]: https://github.com/home-assistant/home-assistant/pull/30451 +[#30453]: https://github.com/home-assistant/home-assistant/pull/30453 +[#30454]: https://github.com/home-assistant/home-assistant/pull/30454 +[#30455]: https://github.com/home-assistant/home-assistant/pull/30455 +[#30457]: https://github.com/home-assistant/home-assistant/pull/30457 +[#30458]: https://github.com/home-assistant/home-assistant/pull/30458 +[#30460]: https://github.com/home-assistant/home-assistant/pull/30460 +[#30461]: https://github.com/home-assistant/home-assistant/pull/30461 +[#30463]: https://github.com/home-assistant/home-assistant/pull/30463 +[#30467]: https://github.com/home-assistant/home-assistant/pull/30467 +[#30469]: https://github.com/home-assistant/home-assistant/pull/30469 +[#30471]: https://github.com/home-assistant/home-assistant/pull/30471 +[#30472]: https://github.com/home-assistant/home-assistant/pull/30472 +[#30474]: https://github.com/home-assistant/home-assistant/pull/30474 +[#30475]: https://github.com/home-assistant/home-assistant/pull/30475 +[#30477]: https://github.com/home-assistant/home-assistant/pull/30477 +[#30478]: https://github.com/home-assistant/home-assistant/pull/30478 +[#30480]: https://github.com/home-assistant/home-assistant/pull/30480 +[#30483]: https://github.com/home-assistant/home-assistant/pull/30483 +[#30485]: https://github.com/home-assistant/home-assistant/pull/30485 +[#30486]: https://github.com/home-assistant/home-assistant/pull/30486 +[#30490]: https://github.com/home-assistant/home-assistant/pull/30490 +[#30493]: https://github.com/home-assistant/home-assistant/pull/30493 +[#30496]: https://github.com/home-assistant/home-assistant/pull/30496 +[#30497]: https://github.com/home-assistant/home-assistant/pull/30497 +[#30500]: https://github.com/home-assistant/home-assistant/pull/30500 +[#30501]: https://github.com/home-assistant/home-assistant/pull/30501 +[#30503]: https://github.com/home-assistant/home-assistant/pull/30503 +[#30504]: https://github.com/home-assistant/home-assistant/pull/30504 +[#30506]: https://github.com/home-assistant/home-assistant/pull/30506 +[#30510]: https://github.com/home-assistant/home-assistant/pull/30510 +[#30512]: https://github.com/home-assistant/home-assistant/pull/30512 +[#30514]: https://github.com/home-assistant/home-assistant/pull/30514 +[#30516]: https://github.com/home-assistant/home-assistant/pull/30516 +[#30521]: https://github.com/home-assistant/home-assistant/pull/30521 +[#30522]: https://github.com/home-assistant/home-assistant/pull/30522 +[#30526]: https://github.com/home-assistant/home-assistant/pull/30526 +[#30527]: https://github.com/home-assistant/home-assistant/pull/30527 +[#30529]: https://github.com/home-assistant/home-assistant/pull/30529 +[#30532]: https://github.com/home-assistant/home-assistant/pull/30532 +[#30536]: https://github.com/home-assistant/home-assistant/pull/30536 +[#30538]: https://github.com/home-assistant/home-assistant/pull/30538 +[#30539]: https://github.com/home-assistant/home-assistant/pull/30539 +[#30541]: https://github.com/home-assistant/home-assistant/pull/30541 +[#30542]: https://github.com/home-assistant/home-assistant/pull/30542 +[#30543]: https://github.com/home-assistant/home-assistant/pull/30543 +[#30544]: https://github.com/home-assistant/home-assistant/pull/30544 +[#30545]: https://github.com/home-assistant/home-assistant/pull/30545 +[#30546]: https://github.com/home-assistant/home-assistant/pull/30546 +[#30547]: https://github.com/home-assistant/home-assistant/pull/30547 +[#30550]: https://github.com/home-assistant/home-assistant/pull/30550 +[#30551]: https://github.com/home-assistant/home-assistant/pull/30551 +[#30552]: https://github.com/home-assistant/home-assistant/pull/30552 +[#30553]: https://github.com/home-assistant/home-assistant/pull/30553 +[#30558]: https://github.com/home-assistant/home-assistant/pull/30558 +[#30561]: https://github.com/home-assistant/home-assistant/pull/30561 +[#30564]: https://github.com/home-assistant/home-assistant/pull/30564 +[#30566]: https://github.com/home-assistant/home-assistant/pull/30566 +[#30569]: https://github.com/home-assistant/home-assistant/pull/30569 +[#30571]: https://github.com/home-assistant/home-assistant/pull/30571 +[#30572]: https://github.com/home-assistant/home-assistant/pull/30572 +[#30577]: https://github.com/home-assistant/home-assistant/pull/30577 +[#30579]: https://github.com/home-assistant/home-assistant/pull/30579 +[#30583]: https://github.com/home-assistant/home-assistant/pull/30583 +[#30584]: https://github.com/home-assistant/home-assistant/pull/30584 +[#30586]: https://github.com/home-assistant/home-assistant/pull/30586 +[#30589]: https://github.com/home-assistant/home-assistant/pull/30589 +[#30590]: https://github.com/home-assistant/home-assistant/pull/30590 +[#30591]: https://github.com/home-assistant/home-assistant/pull/30591 +[#30594]: https://github.com/home-assistant/home-assistant/pull/30594 +[#30597]: https://github.com/home-assistant/home-assistant/pull/30597 +[#30608]: https://github.com/home-assistant/home-assistant/pull/30608 +[#30630]: https://github.com/home-assistant/home-assistant/pull/30630 +[#30647]: https://github.com/home-assistant/home-assistant/pull/30647 +[#30657]: https://github.com/home-assistant/home-assistant/pull/30657 +[#30661]: https://github.com/home-assistant/home-assistant/pull/30661 +[#30663]: https://github.com/home-assistant/home-assistant/pull/30663 +[#30666]: https://github.com/home-assistant/home-assistant/pull/30666 +[#30667]: https://github.com/home-assistant/home-assistant/pull/30667 +[#30688]: https://github.com/home-assistant/home-assistant/pull/30688 +[#30690]: https://github.com/home-assistant/home-assistant/pull/30690 +[#30691]: https://github.com/home-assistant/home-assistant/pull/30691 +[#30700]: https://github.com/home-assistant/home-assistant/pull/30700 +[#30702]: https://github.com/home-assistant/home-assistant/pull/30702 +[#30705]: https://github.com/home-assistant/home-assistant/pull/30705 +[#30735]: https://github.com/home-assistant/home-assistant/pull/30735 +[#30739]: https://github.com/home-assistant/home-assistant/pull/30739 +[#30740]: https://github.com/home-assistant/home-assistant/pull/30740 +[#30748]: https://github.com/home-assistant/home-assistant/pull/30748 +[#30749]: https://github.com/home-assistant/home-assistant/pull/30749 +[#30750]: https://github.com/home-assistant/home-assistant/pull/30750 +[#30752]: https://github.com/home-assistant/home-assistant/pull/30752 +[#30753]: https://github.com/home-assistant/home-assistant/pull/30753 +[#30756]: https://github.com/home-assistant/home-assistant/pull/30756 +[#30766]: https://github.com/home-assistant/home-assistant/pull/30766 +[#30777]: https://github.com/home-assistant/home-assistant/pull/30777 +[#30780]: https://github.com/home-assistant/home-assistant/pull/30780 +[@1v0dev]: https://github.com/1v0dev +[@AaronDavidSchneider]: https://github.com/AaronDavidSchneider +[@Adminiuga]: https://github.com/Adminiuga +[@Alexxander0]: https://github.com/Alexxander0 +[@BKPepe]: https://github.com/BKPepe +[@Cereal2nd]: https://github.com/Cereal2nd +[@DjMoren]: https://github.com/DjMoren +[@Emacee]: https://github.com/Emacee +[@Ernst79]: https://github.com/Ernst79 +[@FrengerH]: https://github.com/FrengerH +[@HarlemSquirrel]: https://github.com/HarlemSquirrel +[@Hypfer]: https://github.com/Hypfer +[@InuSasha]: https://github.com/InuSasha +[@Jc2k]: https://github.com/Jc2k +[@JeffLIrion]: https://github.com/JeffLIrion +[@Kane610]: https://github.com/Kane610 +[@Kerwood]: https://github.com/Kerwood +[@Lars-P]: https://github.com/Lars-P +[@Mariusthvdb]: https://github.com/Mariusthvdb +[@P-Verbrugge]: https://github.com/P-Verbrugge +[@PaulAnnekov]: https://github.com/PaulAnnekov +[@Quentame]: https://github.com/Quentame +[@SNoof85]: https://github.com/SNoof85 +[@Santobert]: https://github.com/Santobert +[@SukramJ]: https://github.com/SukramJ +[@Trekky12]: https://github.com/Trekky12 +[@ViViDboarder]: https://github.com/ViViDboarder +[@aamcrae]: https://github.com/aamcrae +[@agners]: https://github.com/agners +[@alandtse]: https://github.com/alandtse +[@alemuro]: https://github.com/alemuro +[@andersonshatch]: https://github.com/andersonshatch +[@andre-richter]: https://github.com/andre-richter +[@andygrunwald]: https://github.com/andygrunwald +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@basnijholt]: https://github.com/basnijholt +[@bbernhard]: https://github.com/bbernhard +[@bendavid]: https://github.com/bendavid +[@benleb]: https://github.com/benleb +[@bieniu]: https://github.com/bieniu +[@boralyl]: https://github.com/boralyl +[@bramkragten]: https://github.com/bramkragten +[@brefra]: https://github.com/brefra +[@butako]: https://github.com/butako +[@caronc]: https://github.com/caronc +[@casperklein]: https://github.com/casperklein +[@cgtobi]: https://github.com/cgtobi +[@clapbr]: https://github.com/clapbr +[@colinfrei]: https://github.com/colinfrei +[@csfreak]: https://github.com/csfreak +[@cwildt]: https://github.com/cwildt +[@danielperna84]: https://github.com/danielperna84 +[@dannerph]: https://github.com/dannerph +[@davet2001]: https://github.com/davet2001 +[@dcramer]: https://github.com/dcramer +[@dmulcahey]: https://github.com/dmulcahey +[@dshokouhi]: https://github.com/dshokouhi +[@eifinger]: https://github.com/eifinger +[@elupus]: https://github.com/elupus +[@erikkastelec]: https://github.com/erikkastelec +[@fabaff]: https://github.com/fabaff +[@foxy82]: https://github.com/foxy82 +[@frenck]: https://github.com/frenck +[@fwestenberg]: https://github.com/fwestenberg +[@garbled1]: https://github.com/garbled1 +[@geraldhansen]: https://github.com/geraldhansen +[@gjbadros]: https://github.com/gjbadros +[@gppanayotov]: https://github.com/gppanayotov +[@gtdiehl]: https://github.com/gtdiehl +[@heckler]: https://github.com/heckler +[@imduffy15]: https://github.com/imduffy15 +[@issacg]: https://github.com/issacg +[@jnimmo]: https://github.com/jnimmo +[@johnluetke]: https://github.com/johnluetke +[@lddubeau]: https://github.com/lddubeau +[@lexam79]: https://github.com/lexam79 +[@liollury]: https://github.com/liollury +[@mfaraco]: https://github.com/mfaraco +[@michaelarnauts]: https://github.com/michaelarnauts +[@mnigbur]: https://github.com/mnigbur +[@mockersf]: https://github.com/mockersf +[@mohmacht]: https://github.com/mohmacht +[@ndonegan]: https://github.com/ndonegan +[@neffs]: https://github.com/neffs +[@ochlocracy]: https://github.com/ochlocracy +[@orrpan]: https://github.com/orrpan +[@pnbruckner]: https://github.com/pnbruckner +[@proferabg]: https://github.com/proferabg +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@raman325]: https://github.com/raman325 +[@randellhodges]: https://github.com/randellhodges +[@ratsept]: https://github.com/ratsept +[@rccoleman]: https://github.com/rccoleman +[@rhadamantys]: https://github.com/rhadamantys +[@rsnodgrass]: https://github.com/rsnodgrass +[@sbyx]: https://github.com/sbyx +[@scarface-4711]: https://github.com/scarface-4711 +[@scop]: https://github.com/scop +[@sdwilsh]: https://github.com/sdwilsh +[@sergioisidoro]: https://github.com/sergioisidoro +[@shortbloke]: https://github.com/shortbloke +[@springstan]: https://github.com/springstan +[@syssi]: https://github.com/syssi +[@taisholland]: https://github.com/taisholland +[@tchellomello]: https://github.com/tchellomello +[@tetienne]: https://github.com/tetienne +[@tuxbox]: https://github.com/tuxbox +[@tyler-public]: https://github.com/tyler-public +[@vangorra]: https://github.com/vangorra +[@vzahradnik]: https://github.com/vzahradnik +[@xlfe]: https://github.com/xlfe +[@yegle]: https://github.com/yegle +[@zewelor]: https://github.com/zewelor +[@zxdavb]: https://github.com/zxdavb +[abode docs]: /integrations/abode/ +[acer_projector docs]: /integrations/acer_projector/ +[actiontec docs]: /integrations/actiontec/ +[adguard docs]: /integrations/adguard/ +[ads docs]: /integrations/ads/ +[air_quality docs]: /integrations/air_quality/ +[airly docs]: /integrations/airly/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alarmdecoder docs]: /integrations/alarmdecoder/ +[alexa docs]: /integrations/alexa/ +[almond docs]: /integrations/almond/ +[ambiclimate docs]: /integrations/ambiclimate/ +[ambient_station docs]: /integrations/ambient_station/ +[amcrest docs]: /integrations/amcrest/ +[androidtv docs]: /integrations/androidtv/ +[apcupsd docs]: /integrations/apcupsd/ +[arduino docs]: /integrations/arduino/ +[arest docs]: /integrations/arest/ +[auth docs]: /integrations/auth/ +[automation docs]: /integrations/automation/ +[aws docs]: /integrations/aws/ +[axis docs]: /integrations/axis/ +[bbb_gpio docs]: /integrations/bbb_gpio/ +[binary_sensor docs]: /integrations/binary_sensor/ +[bitcoin docs]: /integrations/bitcoin/ +[bluetooth_le_tracker docs]: /integrations/bluetooth_le_tracker/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[broadlink docs]: /integrations/broadlink/ +[brother docs]: /integrations/brother/ +[buienradar docs]: /integrations/buienradar/ +[calendar docs]: /integrations/calendar/ +[camera docs]: /integrations/camera/ +[cast docs]: /integrations/cast/ +[cert_expiry docs]: /integrations/cert_expiry/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[command_line docs]: /integrations/command_line/ +[config docs]: /integrations/config/ +[counter docs]: /integrations/counter/ +[cover docs]: /integrations/cover/ +[darksky docs]: /integrations/darksky/ +[deconz docs]: /integrations/deconz/ +[decora docs]: /integrations/decora/ +[decora_wifi docs]: /integrations/decora_wifi/ +[default_config docs]: /integrations/default_config/ +[demo docs]: /integrations/demo/ +[denonavr docs]: /integrations/denonavr/ +[device_automation docs]: /integrations/device_automation/ +[device_tracker docs]: /integrations/device_tracker/ +[dialogflow docs]: /integrations/dialogflow/ +[doorbird docs]: /integrations/doorbird/ +[dsmr_reader docs]: /integrations/dsmr_reader/ +[dwd_weather_warnings docs]: /integrations/dwd_weather_warnings/ +[dyson docs]: /integrations/dyson/ +[ecobee docs]: /integrations/ecobee/ +[elgato docs]: /integrations/elgato/ +[emulated_hue docs]: /integrations/emulated_hue/ +[enocean docs]: /integrations/enocean/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[eufy docs]: /integrations/eufy/ +[evohome docs]: /integrations/evohome/ +[fan docs]: /integrations/fan/ +[ffmpeg docs]: /integrations/ffmpeg/ +[fido docs]: /integrations/fido/ +[file docs]: /integrations/file/ +[filter docs]: /integrations/filter/ +[freebox docs]: /integrations/freebox/ +[fritz docs]: /integrations/fritz/ +[fritzdect docs]: /integrations/fritzdect/ +[frontend docs]: /integrations/frontend/ +[geofency docs]: /integrations/geofency/ +[geonetnz_quakes docs]: /integrations/geonetnz_quakes/ +[geonetnz_volcano docs]: /integrations/geonetnz_volcano/ +[gios docs]: /integrations/gios/ +[google_assistant docs]: /integrations/google_assistant/ +[google_maps docs]: /integrations/google_maps/ +[google_pubsub docs]: /integrations/google_pubsub/ +[google_translate docs]: /integrations/google_translate/ +[gpslogger docs]: /integrations/gpslogger/ +[group docs]: /integrations/group/ +[hassio docs]: /integrations/hassio/ +[heatmiser docs]: /integrations/heatmiser/ +[here_travel_time docs]: /integrations/here_travel_time/ +[history docs]: /integrations/history/ +[hive docs]: /integrations/hive/ +[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/ +[iaqualink docs]: /integrations/iaqualink/ +[icloud docs]: /integrations/icloud/ +[ifttt docs]: /integrations/ifttt/ +[ign_sismologia docs]: /integrations/ign_sismologia/ +[ihc docs]: /integrations/ihc/ +[influxdb docs]: /integrations/influxdb/ +[input_boolean docs]: /integrations/input_boolean/ +[input_datetime docs]: /integrations/input_datetime/ +[input_number docs]: /integrations/input_number/ +[input_select docs]: /integrations/input_select/ +[input_text docs]: /integrations/input_text/ +[intent docs]: /integrations/intent/ +[intesishome docs]: /integrations/intesishome/ +[ipma docs]: /integrations/ipma/ +[iqvia docs]: /integrations/iqvia/ +[islamic_prayer_times docs]: /integrations/islamic_prayer_times/ +[isy994 docs]: /integrations/isy994/ +[izone docs]: /integrations/izone/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[kankun docs]: /integrations/kankun/ +[keba docs]: /integrations/keba/ +[kef docs]: /integrations/kef/ +[keyboard_remote docs]: /integrations/keyboard_remote/ +[kodi docs]: /integrations/kodi/ +[life360 docs]: /integrations/life360/ +[light docs]: /integrations/light/ +[lightwave docs]: /integrations/lightwave/ +[linky docs]: /integrations/linky/ +[liveboxplaytv docs]: /integrations/liveboxplaytv/ +[localip docs]: /integrations/localip/ +[locative docs]: /integrations/locative/ +[lock docs]: /integrations/lock/ +[lovelace docs]: /integrations/lovelace/ +[luftdaten docs]: /integrations/luftdaten/ +[matrix docs]: /integrations/matrix/ +[media_extractor docs]: /integrations/media_extractor/ +[media_player docs]: /integrations/media_player/ +[mediaroom docs]: /integrations/mediaroom/ +[met docs]: /integrations/met/ +[meteoalarm docs]: /integrations/meteoalarm/ +[metoffice docs]: /integrations/metoffice/ +[mfi docs]: /integrations/mfi/ +[miflora docs]: /integrations/miflora/ +[minio docs]: /integrations/minio/ +[mobile_app docs]: /integrations/mobile_app/ +[mochad docs]: /integrations/mochad/ +[modbus docs]: /integrations/modbus/ +[monoprice docs]: /integrations/monoprice/ +[mpd docs]: /integrations/mpd/ +[mqtt docs]: /integrations/mqtt/ +[mysensors docs]: /integrations/mysensors/ +[neato docs]: /integrations/neato/ +[ness_alarm docs]: /integrations/ness_alarm/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[netgear_lte docs]: /integrations/netgear_lte/ +[nextbus docs]: /integrations/nextbus/ +[nmbs docs]: /integrations/nmbs/ +[notion docs]: /integrations/notion/ +[nsw_fuel_station docs]: /integrations/nsw_fuel_station/ +[nx584 docs]: /integrations/nx584/ +[onboarding docs]: /integrations/onboarding/ +[onewire docs]: /integrations/onewire/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[openuv docs]: /integrations/openuv/ +[owntracks docs]: /integrations/owntracks/ +[person docs]: /integrations/person/ +[pi_hole docs]: /integrations/pi_hole/ +[pilight docs]: /integrations/pilight/ +[pjlink docs]: /integrations/pjlink/ +[plaato docs]: /integrations/plaato/ +[plant docs]: /integrations/plant/ +[plex docs]: /integrations/plex/ +[ps4 docs]: /integrations/ps4/ +[pushbullet docs]: /integrations/pushbullet/ +[python_script docs]: /integrations/python_script/ +[qbittorrent docs]: /integrations/qbittorrent/ +[rainmachine docs]: /integrations/rainmachine/ +[recorder docs]: /integrations/recorder/ +[remember_the_milk docs]: /integrations/remember_the_milk/ +[remote docs]: /integrations/remote/ +[rest docs]: /integrations/rest/ +[rflink docs]: /integrations/rflink/ +[rfxtrx docs]: /integrations/rfxtrx/ +[ring docs]: /integrations/ring/ +[scene docs]: /integrations/scene/ +[scrape docs]: /integrations/scrape/ +[script docs]: /integrations/script/ +[sensor docs]: /integrations/sensor/ +[sentry docs]: /integrations/sentry/ +[shodan docs]: /integrations/shodan/ +[shopping_list docs]: /integrations/shopping_list/ +[signalmessenger docs]: /integrations/signalmessenger/ +[simplisafe docs]: /integrations/simplisafe/ +[sleepiq docs]: /integrations/sleepiq/ +[smappee docs]: /integrations/smappee/ +[smhi docs]: /integrations/smhi/ +[solaredge docs]: /integrations/solaredge/ +[solarlog docs]: /integrations/solarlog/ +[soma docs]: /integrations/soma/ +[somfy docs]: /integrations/somfy/ +[soundtouch docs]: /integrations/soundtouch/ +[spc docs]: /integrations/spc/ +[sql docs]: /integrations/sql/ +[squeezebox docs]: /integrations/squeezebox/ +[ssdp docs]: /integrations/ssdp/ +[starline docs]: /integrations/starline/ +[statistics docs]: /integrations/statistics/ +[steam_online docs]: /integrations/steam_online/ +[stookalert docs]: /integrations/stookalert/ +[stream docs]: /integrations/stream/ +[surepetcare docs]: /integrations/surepetcare/ +[swiss_public_transport docs]: /integrations/swiss_public_transport/ +[switch docs]: /integrations/switch/ +[switcher_kis docs]: /integrations/switcher_kis/ +[synologydsm docs]: /integrations/synologydsm/ +[system_log docs]: /integrations/system_log/ +[tado docs]: /integrations/tado/ +[tahoma docs]: /integrations/tahoma/ +[tank_utility docs]: /integrations/tank_utility/ +[telegram_bot docs]: /integrations/telegram_bot/ +[tellduslive docs]: /integrations/tellduslive/ +[template docs]: /integrations/template/ +[tesla docs]: /integrations/tesla/ +[time_date docs]: /integrations/time_date/ +[timer docs]: /integrations/timer/ +[tmb docs]: /integrations/tmb/ +[toon docs]: /integrations/toon/ +[tplink docs]: /integrations/tplink/ +[transmission docs]: /integrations/transmission/ +[tuya docs]: /integrations/tuya/ +[twentemilieu docs]: /integrations/twentemilieu/ +[ue_smart_radio docs]: /integrations/ue_smart_radio/ +[uk_transport docs]: /integrations/uk_transport/ +[unifi docs]: /integrations/unifi/ +[universal docs]: /integrations/universal/ +[updater docs]: /integrations/updater/ +[upnp docs]: /integrations/upnp/ +[uscis docs]: /integrations/uscis/ +[utility_meter docs]: /integrations/utility_meter/ +[uvc docs]: /integrations/uvc/ +[vacuum docs]: /integrations/vacuum/ +[velbus docs]: /integrations/velbus/ +[velux docs]: /integrations/velux/ +[venstar docs]: /integrations/venstar/ +[vera docs]: /integrations/vera/ +[verisure docs]: /integrations/verisure/ +[versasense docs]: /integrations/versasense/ +[vesync docs]: /integrations/vesync/ +[vicare docs]: /integrations/vicare/ +[vivotek docs]: /integrations/vivotek/ +[vizio docs]: /integrations/vizio/ +[volumio docs]: /integrations/volumio/ +[water_heater docs]: /integrations/water_heater/ +[webostv docs]: /integrations/webostv/ +[websocket_api docs]: /integrations/websocket_api/ +[wemo docs]: /integrations/wemo/ +[whois docs]: /integrations/whois/ +[withings docs]: /integrations/withings/ +[wled docs]: /integrations/wled/ +[workday docs]: /integrations/workday/ +[worxlandroid docs]: /integrations/worxlandroid/ +[x10 docs]: /integrations/x10/ +[xbox_live docs]: /integrations/xbox_live/ +[xeoma docs]: /integrations/xeoma/ +[xfinity docs]: /integrations/xfinity/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[xiaomi_tv docs]: /integrations/xiaomi_tv/ +[xmpp docs]: /integrations/xmpp/ +[xs1 docs]: /integrations/xs1/ +[yale_smart_alarm docs]: /integrations/yale_smart_alarm/ +[yamaha docs]: /integrations/yamaha/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[yandex_transport docs]: /integrations/yandex_transport/ +[yeelight docs]: /integrations/yeelight/ +[yeelightsunflower docs]: /integrations/yeelightsunflower/ +[yessssms docs]: /integrations/yessssms/ +[yr docs]: /integrations/yr/ +[zamg docs]: /integrations/zamg/ +[zengge docs]: /integrations/zengge/ +[zeroconf docs]: /integrations/zeroconf/ +[zestimate docs]: /integrations/zestimate/ +[zha docs]: /integrations/zha/ +[zigbee docs]: /integrations/zigbee/ +[zone docs]: /integrations/zone/ +[zwave docs]: /integrations/zwave/ diff --git a/source/_redirects b/source/_redirects index 5908e04daa6..1f2ec3c25fb 100644 --- a/source/_redirects +++ b/source/_redirects @@ -180,7 +180,6 @@ /components/binary_sensor.sleepiq /integrations/sleepiq /components/binary_sensor.smartthings /integrations/smartthings#binary-sensor /components/binary_sensor.spc /integrations/spc#binary-sensor -/components/binary_sensor.tahoma /integrations/tahoma /components/binary_sensor.tapsaff /integrations/tapsaff /components/binary_sensor.tcp /integrations/tcp#binary-sensor /components/binary_sensor.tellduslive /integrations/tellduslive @@ -307,7 +306,6 @@ /components/cover.scsgate /integrations/scsgate#cover /components/cover.smartthings /integrations/smartthings#cover /components/cover.supla /integrations/supla -/components/cover.tahoma /integrations/tahoma /components/cover.tellduslive /integrations/tellduslive /components/cover.tellstick /integrations/tellstick#cover /components/cover.tuya /integrations/tuya @@ -625,7 +623,6 @@ /components/scene.lutron /integrations/lutron#scene /components/scene.lutron_caseta /integrations/lutron_caseta#scene /components/scene.smartthings /integrations/smartthings#scene -/components/scene.tahoma /integrations/tahoma /components/scene.tuya /integrations/tuya /components/scene.velux /integrations/velux /components/scene.vera /integrations/vera @@ -883,7 +880,6 @@ /components/sensor.systemmonitor /integrations/systemmonitor /components/sensor.sytadin /integrations/sytadin /components/sensor.tado /integrations/tado -/components/sensor.tahoma /integrations/tahoma /components/sensor.tank_utility /integrations/tank_utility /components/sensor.tautulli /integrations/tautulli /components/sensor.tcp /integrations/tcp#sensor @@ -1034,7 +1030,6 @@ /components/switch.switchbot /integrations/switchbot /components/switch.switcher_kis /integrations/switcher_kis /components/switch.switchmate /integrations/switchmate -/components/switch.tahoma /integrations/tahoma /components/switch.tellduslive /integrations/tellduslive /components/switch.tellstick /integrations/tellstick#switch /components/switch.telnet /integrations/telnet @@ -1893,7 +1888,6 @@ /components/systemmonitor /integrations/systemmonitor /components/sytadin /integrations/sytadin /components/tado /integrations/tado -/components/tahoma /integrations/tahoma /components/tank_utility /integrations/tank_utility /components/tapsaff /integrations/tapsaff /components/tautulli /integrations/tautulli diff --git a/source/images/blog/2020-01-0.104/add-device-lovelace.png b/source/images/blog/2020-01-0.104/add-device-lovelace.png new file mode 100644 index 00000000000..e6bc5091e32 Binary files /dev/null and b/source/images/blog/2020-01-0.104/add-device-lovelace.png differ diff --git a/source/images/blog/2020-01-0.104/components.png b/source/images/blog/2020-01-0.104/components.png new file mode 100644 index 00000000000..b1da80eb98c Binary files /dev/null and b/source/images/blog/2020-01-0.104/components.png differ diff --git a/source/images/blog/2020-01-0.104/entities-multi-select.png b/source/images/blog/2020-01-0.104/entities-multi-select.png new file mode 100644 index 00000000000..c43b2775409 Binary files /dev/null and b/source/images/blog/2020-01-0.104/entities-multi-select.png differ diff --git a/source/images/blog/2020-01-0.104/ignore-discovery.png b/source/images/blog/2020-01-0.104/ignore-discovery.png new file mode 100644 index 00000000000..a9398dd1285 Binary files /dev/null and b/source/images/blog/2020-01-0.104/ignore-discovery.png differ diff --git a/source/images/blog/2020-01-0.104/lovelace-suggestion.png b/source/images/blog/2020-01-0.104/lovelace-suggestion.png new file mode 100644 index 00000000000..b5f07b0f31e Binary files /dev/null and b/source/images/blog/2020-01-0.104/lovelace-suggestion.png differ diff --git a/source/images/blog/2020-01-0.104/remove-entity.png b/source/images/blog/2020-01-0.104/remove-entity.png new file mode 100644 index 00000000000..338f189c8c6 Binary files /dev/null and b/source/images/blog/2020-01-0.104/remove-entity.png differ diff --git a/source/images/blog/2020-01-0.104/remove-lovelace-config.png b/source/images/blog/2020-01-0.104/remove-lovelace-config.png new file mode 100644 index 00000000000..56a5e9ecd76 Binary files /dev/null and b/source/images/blog/2020-01-0.104/remove-lovelace-config.png differ diff --git a/source/images/blog/2020-01-0.104/zha-config-panel.png b/source/images/blog/2020-01-0.104/zha-config-panel.png new file mode 100644 index 00000000000..7ce77f05540 Binary files /dev/null and b/source/images/blog/2020-01-0.104/zha-config-panel.png differ diff --git a/source/images/supported_brands/brother.png b/source/images/supported_brands/brother.png new file mode 100644 index 00000000000..78396fd914e Binary files /dev/null and b/source/images/supported_brands/brother.png differ diff --git a/source/images/supported_brands/elgato.jpg b/source/images/supported_brands/elgato.jpg new file mode 100644 index 00000000000..02074bc40de Binary files /dev/null and b/source/images/supported_brands/elgato.jpg differ diff --git a/source/images/supported_brands/gios.png b/source/images/supported_brands/gios.png new file mode 100644 index 00000000000..ecf74ab70d1 Binary files /dev/null and b/source/images/supported_brands/gios.png differ diff --git a/source/images/supported_brands/intesishome.png b/source/images/supported_brands/intesishome.png new file mode 100644 index 00000000000..88733475338 Binary files /dev/null and b/source/images/supported_brands/intesishome.png differ diff --git a/source/images/supported_brands/kef.png b/source/images/supported_brands/kef.png new file mode 100644 index 00000000000..3eb73f3a3e2 Binary files /dev/null and b/source/images/supported_brands/kef.png differ diff --git a/source/images/supported_brands/sentry.svg b/source/images/supported_brands/sentry.svg new file mode 100644 index 00000000000..59b79bc58f8 --- /dev/null +++ b/source/images/supported_brands/sentry.svg @@ -0,0 +1 @@ +sentry-logo-black \ No newline at end of file diff --git a/source/images/supported_brands/signal_messenger.png b/source/images/supported_brands/signal_messenger.png new file mode 100644 index 00000000000..c8cbb4ea03b Binary files /dev/null and b/source/images/supported_brands/signal_messenger.png differ diff --git a/source/images/supported_brands/stookalert.png b/source/images/supported_brands/stookalert.png new file mode 100644 index 00000000000..8f01864ca96 Binary files /dev/null and b/source/images/supported_brands/stookalert.png differ diff --git a/source/images/supported_brands/sure_petcare.png b/source/images/supported_brands/sure_petcare.png new file mode 100644 index 00000000000..0ede30903bc Binary files /dev/null and b/source/images/supported_brands/sure_petcare.png differ diff --git a/source/images/supported_brands/tmb.png b/source/images/supported_brands/tmb.png new file mode 100644 index 00000000000..0606dd3f180 Binary files /dev/null and b/source/images/supported_brands/tmb.png differ