From f9ff302bcdee6022dac261ec35eca62fcd3f21b2 Mon Sep 17 00:00:00 2001
From: Ian Richardson
Date: Wed, 27 Feb 2019 22:26:23 -0600
Subject: [PATCH 01/71] Update changelog.markdown (#8771)
---
source/lovelace/changelog.markdown | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/source/lovelace/changelog.markdown b/source/lovelace/changelog.markdown
index 2b7224c81e7..bda320b452d 100644
--- a/source/lovelace/changelog.markdown
+++ b/source/lovelace/changelog.markdown
@@ -8,6 +8,13 @@ comments: false
sharing: true
footer: true
---
+## {% linkable_title Changes in 0.88.0 %}
+- 📣 Disable toast notifications for successful operations ([#2700](https://github.com/home-assistant/home-assistant-polymer/pull/2822))
+- 📣 Color Picker: Toggleable between segmented and continuous ([#2806](https://github.com/home-assistant/home-assistant-polymer/pull/2806))
+- 📣 Theming: New CSS card style `ha-card-box-shadow` ([#2855](https://github.com/home-assistant/home-assistant-polymer/pull/2855))
+- 🔧 Fix login issue on Firefox ([#2860](https://github.com/home-assistant/home-assistant-polymer/pull/2860))
+- 🔧 [light card]: Fix click events ([#2850](https://github.com/home-assistant/home-assistant-polymer/pull/2850))
+
## {% linkable_title Changes in 0.87.0 %}
- 📣 MDI icons updated to [3.3.92](https://cdn.materialdesignicons.com/3.3.92/)
- 📣 New system-health card in dev-info
From aae5a60b91ff641c52ab808d4ac5aa28ecbc7257 Mon Sep 17 00:00:00 2001
From: Victor Vostrikov <1998617+gorynychzmey@users.noreply.github.com>
Date: Thu, 28 Feb 2019 09:11:08 +0100
Subject: [PATCH 02/71] Added description for source priority. (#8773)
---
source/_components/person.markdown | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/source/_components/person.markdown b/source/_components/person.markdown
index 6a0782635c8..ca118e5c1b7 100644
--- a/source/_components/person.markdown
+++ b/source/_components/person.markdown
@@ -13,7 +13,11 @@ ha_qa_scale: internal
ha_release: 0.88
---
-The person component allows to connect device tracker entities to one or more person entities. The last state update of a connected device tracker will set the state of the person. For example if you connect your router and your OwnTracks device as trackers to your person, the last state update from either the router or your OwnTracks device will set the state of your person.
+The person component allows to connect device tracker entities to one or more person entities. The state updates of a connected device trackers will set the state of the person. When multiple device tracers used, the state of berson will be determined next way:
+
+1. If there are sources presenting status 'home', than latest of this sources will be taken.
+2. If there are sources of type 'gps', than latest of this sources will be taken.
+3. Otherwise will be taken latest source with status 'not_home'.
You can manage persons via the UI from the person page inside the configuration panel or via `YAML`.
From 055b3c3a02b1450b83ad19e6ff91fd2616322860 Mon Sep 17 00:00:00 2001
From: msvinth
Date: Fri, 1 Mar 2019 08:22:03 +0100
Subject: [PATCH 03/71] Document IHC on_in and off_id (#8218)
* Document on_in and off_id
* Space fix
* Also add on_id and off_id to switch
---
source/_components/light.ihc.markdown | 8 ++++++++
source/_components/switch.ihc.markdown | 8 ++++++++
2 files changed, 16 insertions(+)
diff --git a/source/_components/light.ihc.markdown b/source/_components/light.ihc.markdown
index c977b9a1c5b..3b4ae606129 100644
--- a/source/_components/light.ihc.markdown
+++ b/source/_components/light.ihc.markdown
@@ -57,6 +57,14 @@ light:
description: The IHC resource id.
required: true
type: integer
+ on_id:
+ description: Optional IHC resource id that will be pulsed to turn ON this light.
+ required: false
+ type: integer
+ off_id:
+ description: Optional IHC resource id that will be pulsed to turn OFF this light.
+ required: false
+ type: integer
name:
description: The name of the component
required: false
diff --git a/source/_components/switch.ihc.markdown b/source/_components/switch.ihc.markdown
index 21b2e5ecdcc..14958dd106d 100644
--- a/source/_components/switch.ihc.markdown
+++ b/source/_components/switch.ihc.markdown
@@ -50,6 +50,14 @@ switch:
description: The IHC resource id.
required: true
type: integer
+ on_id:
+ description: Optional IHC resource id that will be pulsed to turn ON this switch.
+ required: false
+ type: integer
+ off_id:
+ description: Optional IHC resource id that will be pulsed to turn OFF this switch.
+ required: false
+ type: integer
name:
description: The name of the component
required: false
From aa0c9a4a61b24d894b0fc190ac9091381f710ae6 Mon Sep 17 00:00:00 2001
From: cpopp
Date: Fri, 1 Mar 2019 05:44:01 -0600
Subject: [PATCH 04/71] Add support for homekit controller sensors (#8781)
Adds support for homekit devices with temperature, humidity, and
light level characteristics (such as the iHome iSS50)
---
source/_components/homekit_controller.markdown | 3 +++
1 file changed, 3 insertions(+)
diff --git a/source/_components/homekit_controller.markdown b/source/_components/homekit_controller.markdown
index 1f64ea1b02c..60a66137679 100644
--- a/source/_components/homekit_controller.markdown
+++ b/source/_components/homekit_controller.markdown
@@ -17,6 +17,7 @@ ha_category:
- Lock
- Switch
- Binary Sensor
+ - Sensor
ha_release: 0.68
ha_iot_class: "Local Polling"
redirect_from:
@@ -26,6 +27,7 @@ redirect_from:
- /components/light.homekit_controller/
- /components/lock.homekit_controller/
- /components/switch.homekit_controller/
+ - /components/sensor.homekit_controller/
---
[HomeKit](https://developer.apple.com/homekit/) controller integration for Home Assistant allows you to connect HomeKit accessories to Home Assistant. This component should not be confused with the [HomeKit](/components/homekit/) component, which allows you to control Home Assistant devices via HomeKit.
@@ -39,6 +41,7 @@ There is currently support for the following device types within Home Assistant:
- Lock (HomeKit lock)
- Switch (HomeKit switches)
- Binary Sensor (HomeKit motion sensors)
+- Sensor (HomeKit humidity, temperature, and light level sensors)
The component will be automatically configured if the [`discovery:`](/components/discovery/) component is enabled and an enable entry added for HomeKit:
From fc5964bd5daf31d6a87c6a85ce0239b85851df5e Mon Sep 17 00:00:00 2001
From: Kevin Fronczak
Date: Sat, 2 Mar 2019 05:32:25 -0500
Subject: [PATCH 05/71] Remove warning (#8796)
---
source/_components/blink.markdown | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/_components/blink.markdown b/source/_components/blink.markdown
index 78d9bf8c945..6275343f057 100644
--- a/source/_components/blink.markdown
+++ b/source/_components/blink.markdown
@@ -23,8 +23,6 @@ redirect_form:
- /components/sensor.blink/
---
-
Blink has started blocking Home Assistant users. More info in the forums.
-
The `blink` component lets you view camera images and motion events from [Blink](http://blinkforhome.com) camera and security systems.
## {% linkable_title Setup %}
@@ -109,6 +107,8 @@ blink:
## {% linkable_title Services %}
+Any sequential calls to services relating to blink should have a minimum of a 5 second delay in between them to prevent the calls fro being throttled and ignored.
+
### {% linkable_title `blink.blink_update` %}
Force a refresh of the Blink system.
From 24ed0278dd5a4ca254d996e0b9d2b4c26600db0f Mon Sep 17 00:00:00 2001
From: shanbs
Date: Sun, 3 Mar 2019 04:52:38 +0100
Subject: [PATCH 06/71] Supporting for multiple Netatmo thermostates/valves
(#7884)
* climate/netatmo: Document change for supporting for multiple thermostats/valves
* Support multiple homes
---
source/_components/climate.netatmo.markdown | 35 +++++++++++++--------
1 file changed, 22 insertions(+), 13 deletions(-)
diff --git a/source/_components/climate.netatmo.markdown b/source/_components/climate.netatmo.markdown
index bb9e538de08..d3c40c54fc4 100644
--- a/source/_components/climate.netatmo.markdown
+++ b/source/_components/climate.netatmo.markdown
@@ -18,7 +18,7 @@ The `netatmo` thermostat platform is consuming the information provided by a [Ne
To enable the Netatmo thermostat, you first have to set up [netatmo](/components/netatmo/), this will use discovery to add your thermostat.
-If you want to select a specific thermostat, set discovery to False for [netatmo](/components/netatmo/) and add the following lines to your `configuration.yaml`:
+If you want to select specific homes or specific rooms, set discovery to False for [netatmo](/components/netatmo/) and add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
@@ -27,26 +27,35 @@ climate:
```
{% configuration %}
-relay:
- description: Will display the thermostats of this relay only.
- required: false
- type: string
-thermostat:
- description: Thermostat to use.
+homes:
+ description: Will display the thermostats of the homes listed.
required: false
type: list
keys:
- thermostat_name:
- description: Name of the thermostat to display.
+ name:
+ required: true
+ description: The home name.
+ rooms:
+ description: Rooms to be displayed. Multiple entities allowed.
+ required: false
+ type: [list, string]
+ description: List of the names of the rooms to be displayed.
{% endconfiguration %}
-If **relay** and **thermostat** are not provided, all thermostats will be displayed.
+If **homes** and **rooms** are not provided, all thermostats will be displayed.
```yaml
# Example configuration.yaml entry
climate:
platform: netatmo
- relay: relay_name
- thermostat:
- - thermostat_name
+ homes:
+ - name: home1_name
+ rooms:
+ - room1_name
+ - room2_name
+ - name: home2_name
+ rooms:
+ - room3_name
+ - room4_name
+ - room5_name
```
From 2aa946ce26eb9ecf1cc1b76b6246d9b154cd880d Mon Sep 17 00:00:00 2001
From: Diogo Gomes
Date: Sun, 3 Mar 2019 12:03:51 +0000
Subject: [PATCH 07/71] add throughput_network_* (#8799)
---
.../_components/sensor.systemmonitor.markdown | 48 ++++++++++---------
1 file changed, 25 insertions(+), 23 deletions(-)
diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown
index 8c28c152579..e174bdb29e8 100644
--- a/source/_components/sensor.systemmonitor.markdown
+++ b/source/_components/sensor.systemmonitor.markdown
@@ -47,29 +47,31 @@ resources:
The table contains types and their argument to use in your `configuration.yaml`
file.
-| Type (`type:`) | Argument (`arg:`) |
-| :------------------ |:--------------------------|
-| disk_use_percent | Path, e.g., `/` |
-| disk_use | Path, e.g., `/` |
-| disk_free | Path, e.g., `/` |
-| memory_use_percent | |
-| memory_use | |
-| memory_free | |
-| swap_use_percent | |
-| swap_use | |
-| swap_free | |
-| load_1m | |
-| load_5m | |
-| load_15m | |
-| network_in | Interface, e.g., `eth0` |
-| network_out | Interface, e.g., `eth0` |
-| packets_in | Interface, e.g., `eth0` |
-| packets_out | Interface, e.g., `eth0` |
-| ipv4_address | Interface, e.g., `eth0` |
-| ipv6_address | Interface, e.g., `eth0` |
-| processor_use | |
-| process | Binary, e.g., `octave-cli` |
-| last_boot | |
+| Type (`type:`) | Argument (`arg:`) |
+| :--------------------- |:--------------------------|
+| disk_use_percent | Path, e.g., `/` |
+| disk_use | Path, e.g., `/` |
+| disk_free | Path, e.g., `/` |
+| memory_use_percent | |
+| memory_use | |
+| memory_free | |
+| swap_use_percent | |
+| swap_use | |
+| swap_free | |
+| load_1m | |
+| load_5m | |
+| load_15m | |
+| network_in | Interface, e.g., `eth0` |
+| network_out | Interface, e.g., `eth0` |
+| throughput_network_in | Interface, e.g., `eth0` |
+| throughput_network_out | Interface, e.g., `eth0` |
+| packets_in | Interface, e.g., `eth0` |
+| packets_out | Interface, e.g., `eth0` |
+| ipv4_address | Interface, e.g., `eth0` |
+| ipv6_address | Interface, e.g., `eth0` |
+| processor_use | |
+| process | Binary, e.g., `octave-cli` |
+| last_boot | |
## {% linkable_title Linux specific %}
From 032f1c4df512f5dd4c8fa7c67148c46aac97c031 Mon Sep 17 00:00:00 2001
From: srirams <638940+srirams@users.noreply.github.com>
Date: Sun, 3 Mar 2019 15:44:55 -0600
Subject: [PATCH 08/71] add optional sender name to sendgrid (#8807)
---
source/_components/notify.sendgrid.markdown | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/source/_components/notify.sendgrid.markdown b/source/_components/notify.sendgrid.markdown
index 50cc9b07166..c5f37d0d10f 100644
--- a/source/_components/notify.sendgrid.markdown
+++ b/source/_components/notify.sendgrid.markdown
@@ -45,6 +45,10 @@ sender:
description: The e-mail address of the sender.
required: true
type: string
+sender_name:
+ description: The name of the sender. Defaults to "Home Assistant" if not set.
+ required: false
+ type: string
recipient:
description: The recipient of the notification.
required: true
From e45c4971c888b3778621e499ed95df6b7c71b775 Mon Sep 17 00:00:00 2001
From: Jeff Irion
Date: Sun, 3 Mar 2019 16:57:12 -0800
Subject: [PATCH 09/71] Document 'firetv.adb_command' service (#8722)
* Document 'media_player.firetv_adb_cmd' service
* Change 'ENTER' to 'CENTER'
* Rename 'cmd' to 'command'
* Change 'media_player.firetv_adb_command' to 'firetv.adb_command'
* Address reviewer comments
---
.../_components/media_player.firetv.markdown | 33 +++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/source/_components/media_player.firetv.markdown b/source/_components/media_player.firetv.markdown
index 3078d45b9bd..e695737b0ce 100644
--- a/source/_components/media_player.firetv.markdown
+++ b/source/_components/media_player.firetv.markdown
@@ -117,3 +117,36 @@ If you receive the error message `Issue: Error while setting up platform firetv`
3. Home Assistant does not have the appropriate permissions for the `adbkey` file and so it is not able to use it. Once you fix the permissions, the component should work.
4. You are already connected to the Fire TV via ADB from another device. Only one device can be connected, so disconnect the other device, restart the Fire TV (for good measure), and then restart Home Assistant.
+
+
+## {% linkable_title Service %}
+
+The service `firetv.adb_command` allows you to send either keys or ADB shell commands to the Fire TV.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | no | Name(s) of Fire TV entities.
+| `command` | no | Either a key command or an ADB shell command.
+
+In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this:
+
+```yaml
+action:
+ service: firetv.adb_command
+ data:
+ entity_id: media_player.fire_tv_living_room
+ command: "HOME"
+```
+
+Available key commands are:
+
+* `POWER`
+* `SLEEP`
+* `HOME`
+* `UP`
+* `DOWN`
+* `LEFT`
+* `RIGHT`
+* `CENTER`
+* `BACK`
+* `MENU`
From 18943185354f573810e7416944ed4ab151c3d864 Mon Sep 17 00:00:00 2001
From: Aaron Bach
Date: Sun, 3 Mar 2019 17:58:30 -0700
Subject: [PATCH 10/71] Add pause/unpause service descriptions for RainMachine
(#8788)
---
source/_components/rainmachine.markdown | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/source/_components/rainmachine.markdown b/source/_components/rainmachine.markdown
index f01419dcec6..238a7825600 100644
--- a/source/_components/rainmachine.markdown
+++ b/source/_components/rainmachine.markdown
@@ -113,6 +113,14 @@ switches:
## {% linkable_title Services %}
+### {% linkable_title `rainmachine.pause_watering` %}
+
+Pause all watering activities for a number of seconds.
+
+| Service Data Attribute | Optional | Description |
+|---------------------------|----------|--------------------------------|
+| `seconds` | no | The number of seconds to pause |
+
### {% linkable_title `rainmachine.start_program` %}
Start a RainMachine program.
@@ -150,6 +158,10 @@ Stop a RainMachine zone.
|---------------------------|----------|----------------------|
| `zone_id` | no | The zone to stop |
+### {% linkable_title `rainmachine.unpause_watering` %}
+
+Unpause all watering activities.
+
## {% linkable_title Switch %}
The `rainmachine` switch platform allows you to control programs and zones within a [RainMachine smart Wi-Fi sprinkler controller](http://www.rainmachine.com/).
@@ -161,4 +173,4 @@ After Home Assistant loads, new switches will be added for every enabled program
- Program On/Off: starts/stops a program
- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to determine how long to run for)
-Programs and zones are linked. While a program is running, you will see both the program and zone switches turned on; turning either one off will turn the other one off (just like in the web app).
\ No newline at end of file
+Programs and zones are linked. While a program is running, you will see both the program and zone switches turned on; turning either one off will turn the other one off (just like in the web app).
From 3a58c5f92b26ecf9ba0808f4c60b148ed3563cd2 Mon Sep 17 00:00:00 2001
From: Jeff Irion
Date: Sun, 3 Mar 2019 17:06:43 -0800
Subject: [PATCH 11/71] Add 'apps' config entry to Fire TV (#8806)
* Add 'apps' config entry to Fire TV
* Clarify app IDs vs. app names
* Address reviewer comments
---
.../_components/media_player.firetv.markdown | 36 ++++++++++++++++---
1 file changed, 31 insertions(+), 5 deletions(-)
diff --git a/source/_components/media_player.firetv.markdown b/source/_components/media_player.firetv.markdown
index e695737b0ce..8be1bdb2fd2 100644
--- a/source/_components/media_player.firetv.markdown
+++ b/source/_components/media_player.firetv.markdown
@@ -1,6 +1,6 @@
---
layout: page
-title: "FireTV"
+title: "Fire TV"
description: "Instructions on how to integrate Fire-TV into Home Assistant."
date: 2015-10-23 18:00
sidebar: true
@@ -26,23 +26,24 @@ Steps to configure your Amazon Fire TV stick with Home Assistant:
- From the main (Launcher) screen, select Settings.
- Select System > About > Network.
-To add FireTV to your installation, Note your device name, and add the following to your `configuration.yaml` file:
+
+## {% linkable_title Configuration %}
```yaml
# Example configuration.yaml entry
media_player:
- # a device that does not require ADB authentication
+ # Use the Python ADB implementation without authentication
- platform: firetv
name: Fire TV 1
host: 192.168.0.111
- # a device that does require ADB authentication
+ # Use the Python ADB implementation with authentication
- platform: firetv
name: Fire TV 2
host: 192.168.0.222
adbkey: "/config/android/adbkey"
- # use an ADB server for sending ADB commands instead of the Python ADB implementation
+ # Use an ADB server for sending ADB commands
- platform: firetv
name: Fire TV 3
host: 192.168.0.123
@@ -82,8 +83,31 @@ get_sources:
required: false
default: true
type: boolean
+apps:
+ description: A dictionary where the keys are app IDs and the values are app names that will be displayed in the UI; see example below.
+ required: false
+ default: {}
+ type: dict
{% endconfiguration %}
+
+### {% linkable_title Full Configuration %}
+
+```yaml
+# Example configuration.yaml entry
+media_player:
+ # Use the Python ADB implementation with authentication,
+ # don't get the running apps, and provide an app name
+ - platform: firetv
+ name: Fire TV
+ host: 192.168.0.222
+ adbkey: "/config/android/adbkey"
+ get_sources: false
+ apps:
+ com.amazon.tv.launcher: "Fire TV"
+```
+
+
## {% linkable_title ADB Setup %}
This component works by sending ADB commands to your Fire TV device. There are two ways to accomplish this:
@@ -91,6 +115,7 @@ This component works by sending ADB commands to your Fire TV device. There are
1. Using the `adb` Python package. If your device requires ADB authentication, you will need to follow the instructions in the "ADB Authentication (for Fire TV devices with recent software)" section below. Once you have an authenticated key, this approach does not require any additional setup or addons. However, users with newer devices may find that the ADB connection is unstable. If setting the `get_sources` configuration option to `false` does not help, they should use the next option.
2. Using an ADB server. For Hass.io users, you can install the [Android Debug Bridge](https://github.com/hassio-addons/addon-adb/blob/v0.1.0/README.md) addon. With this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value.
+
### {% linkable_title ADB Authentication (for Fire TV devices with recent software) %}
If you get a "Device authentication required, no keys available" error when trying to set up Fire TV, then you'll need to create an adbkey and add its path to your configuration. Follow the instructions on this page to connect to your Fire TV from your computer: [Connecting to Fire TV Through adb](https://developer.amazon.com/zh/docs/fire-tv/connecting-adb-to-device.html).
@@ -106,6 +131,7 @@ Once you've successfully connected to your Fire TV via the command `adb connect
Copy the `adbkey` and `adbkey.pub` files to your Home Assistant folder and add the path to the `adbkey` file to your configuration.
+
#### ADB Troubleshooting
If you receive the error message `Issue: Error while setting up platform firetv` in your log when trying to set up a Fire TV device with an ADB key, then there is probably an issue with your ADB key. Here are some possible causes.
From b6a562171bff4e41e3ddcbab4819d755e5f30c0d Mon Sep 17 00:00:00 2001
From: Nick Whyte
Date: Mon, 4 Mar 2019 19:07:16 +1100
Subject: [PATCH 12/71] Allow configuration of update_interval (#8720)
* ness_alarm: Allow configuration of update_interval
* update_interval -> scan_interval
---
source/_components/ness_alarm.markdown | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/source/_components/ness_alarm.markdown b/source/_components/ness_alarm.markdown
index 74d7d727aa1..9a3f36dbf7a 100644
--- a/source/_components/ness_alarm.markdown
+++ b/source/_components/ness_alarm.markdown
@@ -59,6 +59,11 @@ port:
description: The port on which the IP232 module listens for clients.
required: true
type: integer
+scan_interval:
+ description: "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: '00:01:00'
+ type: time
zones:
description: List of zones to add
required: false
@@ -79,6 +84,18 @@ zones:
type: string
{% endconfiguration %}
+#### {% linkable_title Time period dictionary example %}
+
+```yaml
+scan_interval:
+ # At least one of these must be specified:
+ days: 0
+ hours: 0
+ minutes: 0
+ seconds: 10
+ milliseconds: 0
+```
+
## {% linkable_title Services %}
### {% linkable_title Service `aux` %}
From 7d229953ed4053354dc3ce894480d84ddeae34da Mon Sep 17 00:00:00 2001
From: Phil Cole
Date: Mon, 4 Mar 2019 12:13:45 +0000
Subject: [PATCH 13/71] Add nissan_leaf.start_charge service and doc fixes.
(#8801)
---
source/_components/nissan_leaf.markdown | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/source/_components/nissan_leaf.markdown b/source/_components/nissan_leaf.markdown
index 5a1c4ce801a..4650df72481 100644
--- a/source/_components/nissan_leaf.markdown
+++ b/source/_components/nissan_leaf.markdown
@@ -15,10 +15,10 @@ ha_iot_class: "Cloud Polling"
The `nissan_leaf` component offers integration with the [NissanConnect EV](http://youplus.nissan.co.uk/GB/en/YouPlus/ConnectedServices.html) cloud service. NissanConnect EV was previously known as Nissan Carwings. It offers:
-* sensors for the battery status and range
+* sensors for the battery status, range and charging status
* a switch to start and stop the climate control
-* a switch to start the car charging (cannot be stopped remotely - API limitation)
* a device tracker to locate the car (only on later Leaf models)
+* services to request updates from the car and to request the car starts charging.
## {% linkable_title Configuration %}
@@ -48,7 +48,7 @@ nissan_connect:
description: If your car has the updated head unit (NissanConnect rather than Carwings) then the location can be aquired and exposed via a device tracker. If you have a pre-2014 24 kWh Leaf then you will have Carwings and this should be set to false.
required: false
type: boolean
-scan_interval:
+update_interval:
description: The interval between updates if the climate control is off and the car is not charging. Set in any time unit (e.g. minutes, hours, days!).
required: false
default: 1 hour
@@ -76,7 +76,7 @@ nissan_leaf:
password: "YOUR_PASSWORD"
region: "YOUR_REGION"
nissan_connect: true
- scan_interval:
+ update_interval:
hours: 1
update_interval_charging:
minutes: 15
@@ -85,9 +85,19 @@ nissan_leaf:
force_miles: true
```
+## {% linkable_title Starting a Charge %}
+
+You can use the `nissan_leaf.start_charge` service to send a request to the Nissan servers to start a charge. The car must be plugged in! The service requires you to provide the vehicle identification number (VIN) as a parameter. You can see the VIN on the attributes of all the entities created by this component, except the device_tracker.
+
+```yaml
+- service: nissan_leaf.start_charge
+ data:
+ vin: '1HGBH41JXMN109186' # replace
+```
+
## {% linkable_title Updating on-demand using Automation %}
-You can also use the `nissan_leaf.update` service to request an on-demand update. To update almost exclusively via the service set the `update_interval` to a high value in the component configuration. The service requires you to provide the vehicle identification number (VIN) as a parameter. You can see the VIN on the attributes of all the entities created by this component, except the device_tracker.
+You can also use the `nissan_leaf.update` service to request an on-demand update. To update almost exclusively via the service set the `update_interval` to a high value in the component configuration. The service requests the VIN number as described above.
```yaml
- id: update_when_driver_not_home
@@ -111,7 +121,9 @@ You can also use the `nissan_leaf.update` service to request an on-demand update
* The update interval has a minimum of two minutes.
* Requesting updates uses a small amount of power from the 12 V battery. The 12 V battery charges from the main traction battery when the car is not plugged in. If the car is left plugged in for a long time, or if the main traction battery is very low then the 12 V battery may gradually discharge. A low update interval may cause the 12 V battery to become flat. When the 12 V battery is flat the car will not start. _Do not set the update interval too low. Use at your own risk._
* This component communicates with the Nissan Servers which then communicate with the car. The communication between the car and the Nissan Servers is very slow, and takes up to five minutes to get information from the car, therefore the default polling interval is set to one hour to not overwhelm the connection.
-* Responses from the Nissan servers are received separately for the battery/range, climate control and location. The `updated_on` attribute will show the last time the data was retrieved from the server. There are separate attributes for when the `next_update` is scheduled, and if an `update_inprogress`. The `nissan_leaf.update` service will reset the `next_update` attribute.
+* Responses from the Nissan servers are received separately for the battery/range, climate control and location. The `updated_on` attribute will show the last time the data was retrieved from the server. There are separate attributes for when the `next_update` is scheduled, and to indicate if `update_in_progress`. The `nissan_leaf.update` service will reset the `next_update` attribute.
+* The Nissan APIs do not allow charging to be stopped remotely.
+* The Nissan servers have a history of being unstable, therefore please confirm that the official Nissan Leaf app/website is working correctly before reporting bugs.
Please report bugs using the following logger configuration.
From 5c942883a8bfddcb1eef59e1f9d23224a99a7c01 Mon Sep 17 00:00:00 2001
From: Nate Clark
Date: Mon, 4 Mar 2019 11:01:11 -0500
Subject: [PATCH 14/71] Add temperature sensor config documentation for
Konnected (#8626)
* add temperature sensor config documentation for Konnected
* update Konnected sensor doc
* update docs for digital sensor config
---
source/_components/konnected.markdown | 48 ++++++++++++++++++++++++---
1 file changed, 43 insertions(+), 5 deletions(-)
diff --git a/source/_components/konnected.markdown b/source/_components/konnected.markdown
index d6b35102fd3..e49c2096d20 100644
--- a/source/_components/konnected.markdown
+++ b/source/_components/konnected.markdown
@@ -12,6 +12,7 @@ ha_category:
- Alarm
- Binary Sensor
- Switch
+ - Sensor
ha_release: "0.70"
redirect_from:
- /components/binary_sensor.konnected/
@@ -26,8 +27,13 @@ The component currently supports the following device types in Home Assistant:
- Binary Sensor: Wired door and window sensors, motion detectors, glass-break detectors, leak sensors, smoke & CO detectors or any open/close switch.
- Switch: Actuate a siren, strobe, buzzer or relay module.
+- Sensor: Periodic measurements from DHT temperature/humidity sensors and DS18B20 temperature sensors.
-This component requires the [`discovery`](/components/discovery) component to be enabled.
+This component uses the [`discovery`](/components/discovery) component, which must be enabled for device discovery to work. If you don't want to use discovery, set the _host_ and _port_ for each device in the description.
+
+
+Konnected devices communicate with Home Assistant over your local LAN -- there is no cloud component! For best performance we recommend allowing unsecured HTTP API traffic between Konnected devices and Home Assistant on your LAN. This means that you should not use the `http` component to serve SSL/TLS certificates. Instead, use a proxy like Nginx or Caddy to serve SSL/TLS. [Read more.](https://help.konnected.io/support/solutions/articles/32000023964-set-up-hass-io-with-secure-remote-access-using-duckdns-and-nginx-proxy)
+
### {% linkable_title Configuration %}
@@ -77,7 +83,7 @@ devices:
type: list
keys:
pin:
- description: The number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values are 1, 2, 5, 6, 7 and 9.
+ description: The number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values are `1`, `2`, `5`, `6`, `7` and `9`.
required: exclusive
zone:
description: The number corresponding to the labeled zone on the [Konnected Alarm Panel](https://konnected.io) board. Valid values are `1`, `2`, `3`, `4`, `5` and `6`.
@@ -94,6 +100,29 @@ devices:
description: Inverts the open/closed meaning of a binary sensor circuit. Commonly needed for normally open wired smoke alarm circuits.
required: false
default: false
+ sensors:
+ description: A list of digital sensors (currently supports DHT and DS18B20 sensors) connected to the device
+ required: false
+ type: list
+ keys:
+ pin:
+ description: The number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values for sensors are `1`, `2`, `5`, `6`, `7` and `9`.
+ required: exclusive
+ zone:
+ description: The number corresponding to the labeled zone on the [Konnected Alarm Panel](https://konnected.io) board. Valid values for sensors are `1`, `2`, `3`, `4`, `5` and `6`.
+ required: exclusive
+ name:
+ description: The name of the device used in the front end.
+ required: false
+ default: automatically generated
+ type:
+ description: The type of sensor. Valid values are `dht` or `ds18b20`
+ required: true
+ poll_interval:
+ type: integer
+ description: The frequency (in minutes) that the Konnected device will report sensor data. Minimum `1` minute. _Note:_ this is only implemented for `dht` sensors.
+ required: false
+ default: not set (device default is 3 minutes)
switches:
description: A list of actuators (on/off switches) connected to the device. See [Konnected Switch](/components/switch.konnected/) for configuration variables.
required: false
@@ -184,17 +213,22 @@ konnected:
binary_sensors:
- pin: 1
type: motion
- name: 'Office Motion'
+ name: Office Motion
- pin: 2
type: door
- name: 'Office Door'
+ name: Office Door
switches:
- pin: 5
- name: 'Garage Door'
+ name: Garage Door
activation: low
momentary: 500
- pin: 8
name: LED Light
+ sensors:
+ - pin: 6
+ name: Kitchen
+ type: dht
+
```
### {% linkable_title Pin Mapping %}
@@ -213,6 +247,10 @@ Konnected runs on an ESP8266 board with the NodeMCU firmware. It is commonly use
### {% linkable_title Revision History %}
+#### 0.89
+
+- Added support for `dht` and `ds18b20` temperature sensors
+
#### 0.80
- Added ability to specify `host` and `port` to set up devices without relying on discovery.
From 80d9b4b1accfc4ef95fbf27fbc0c98d3c5313f58 Mon Sep 17 00:00:00 2001
From: yosilevy <37745463+yosilevy@users.noreply.github.com>
Date: Mon, 4 Mar 2019 19:00:12 +0200
Subject: [PATCH 15/71] Added conditional element documentation (#8795)
* Added conditional element documentation
Will add an example later on
* Fixed required
* Added conditional example
* Update picture-elements.markdown
---
source/_lovelace/picture-elements.markdown | 55 ++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/source/_lovelace/picture-elements.markdown b/source/_lovelace/picture-elements.markdown
index 997bccd14c3..38aac6b58e9 100644
--- a/source/_lovelace/picture-elements.markdown
+++ b/source/_lovelace/picture-elements.markdown
@@ -397,6 +397,38 @@ style:
default: "position: absolute, transform: translate(-50%, -50%)"
{% endconfiguration %}
+### {% linkable_title Conditional Element %}
+
+Much like the Conditional card, this element will let you show its sub-elements based on entity states.
+
+{% configuration %}
+type:
+ required: true
+ description: conditional
+ type: string
+conditions:
+ required: true
+ description: List of entity IDs and matching states.
+ type: list
+ keys:
+ entity:
+ required: true
+ description: HA entity ID.
+ type: string
+ state:
+ required: false
+ description: Entity state is equal to this value.*
+ type: string
+ state_not:
+ required: false
+ description: Entity state is unequal to this value.*
+ type: string
+elements:
+ required: true
+ description: One or more elements of any type to show when conditions are met. See below for an example.
+ type: list
+{% endconfiguration %}
+
### {% linkable_title Custom Elements %}
{% configuration %}
@@ -554,3 +586,26 @@ elements:
left: 75%
width: 5%
```
+
+## {% linkable_title Conditional Example %}
+
+```yaml
+type: picture-elements
+image: /local/House.png
+elements:
+ # conditionally show TV off button shortcut when dad's away and daughter is home
+ - type: conditional
+ conditions:
+ - entity: sensor.presence_daughter
+ state: 'home'
+ - entity: sensor.presence_dad
+ state: 'not_home'
+ elements:
+ - type: state-icon
+ entity: switch.tv
+ tap_action:
+ action: toggle
+ style:
+ top: 47%
+ left: 42%
+```
From 4b8326d918b323fbf6db7c7a1b84b7b72ad2a3fa Mon Sep 17 00:00:00 2001
From: Colby Rome
Date: Tue, 5 Mar 2019 01:58:49 -0500
Subject: [PATCH 16/71] Xfinity gateway device_tracker documentation and logo
(#8535)
* added xfinity documentation and logo
* bump version to 0.89
* Bump to 0.90; remove optional parameters from config example
---
.../device_tracker.xfinity.markdown | 39 +++++++
source/images/supported_brands/xfinity.svg | 102 ++++++++++++++++++
2 files changed, 141 insertions(+)
create mode 100644 source/_components/device_tracker.xfinity.markdown
create mode 100644 source/images/supported_brands/xfinity.svg
diff --git a/source/_components/device_tracker.xfinity.markdown b/source/_components/device_tracker.xfinity.markdown
new file mode 100644
index 00000000000..45bf58fb5ce
--- /dev/null
+++ b/source/_components/device_tracker.xfinity.markdown
@@ -0,0 +1,39 @@
+---
+layout: page
+title: "Xfinity Gateway"
+description: "Instructions on how to integrate Xfinity Gateways into Home Assistant."
+date: 2019-02-12 19:44
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Presence Detection
+logo: xfinity.svg
+ha_release: 0.90
+ha_iot_class: "Local Polling"
+
+---
+
+The `xfinity` device tracker platform offers presence detection by looking at connected devices to an Xfinity gateway.
+
+It was tested with an Xfinity Gateway model TG1682G.
+
+## {% linkable_title Configuration %}
+
+To use an Xfinity Gateway in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+device_tracker:
+ - platform: xfinity
+```
+
+{% configuration %}
+host:
+ description: The IP address of your router, e.g., `192.168.1.1`.
+ required: false
+ type: string
+ default: 10.0.0.1
+{% endconfiguration %}
+
+See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
diff --git a/source/images/supported_brands/xfinity.svg b/source/images/supported_brands/xfinity.svg
new file mode 100644
index 00000000000..8a9ec171c8a
--- /dev/null
+++ b/source/images/supported_brands/xfinity.svg
@@ -0,0 +1,102 @@
+
+
+
+
From ae3f96f66c5acdabf5508b974662fef077b6fa6e Mon Sep 17 00:00:00 2001
From: Victor Vostrikov <1998617+gorynychzmey@users.noreply.github.com>
Date: Tue, 5 Mar 2019 22:56:04 +0100
Subject: [PATCH 17/71] Add example of choice of sources for Person (#8779)
* Added description for source priority.
* Changed description of source priority.
* Added example of sources' choice.
* Corrected example
* Added TL;DR to example
* Updated TL:DR
* Added hint for consider_home
---
source/_components/person.markdown | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/source/_components/person.markdown b/source/_components/person.markdown
index ca118e5c1b7..6295e772ced 100644
--- a/source/_components/person.markdown
+++ b/source/_components/person.markdown
@@ -15,10 +15,26 @@ ha_release: 0.88
The person component allows to connect device tracker entities to one or more person entities. The state updates of a connected device trackers will set the state of the person. When multiple device tracers used, the state of berson will be determined next way:
-1. If there are sources presenting status 'home', than latest of this sources will be taken.
+1. If there are stationary sources (which type is not 'gps') presenting status 'home', than latest of this sources will be taken.
2. If there are sources of type 'gps', than latest of this sources will be taken.
3. Otherwise will be taken latest source with status 'not_home'.
+Lets say for example, that you have 3 trackers: 'tracker_gps', 'tracker_router' and 'tracker_ble'.
+
+1. You're at home, all 3 devices shows status 'home' - status of your Person entity will be 'home' with source 'tracker_router' or 'tracker_ble', whatever was latest.
+2. You're going out. 'tracker_gps' shows status 'not_home', but other two trackers show status 'home' according to their setting 'consider_home'. You are still considered to be at home.
+3. After some time both stationary trackers show status 'not_home'. Now your Person entity has status 'not_home' with source 'tracker_gps'.
+4. While you are outside your home, your Home Assistant was suddenly restarted. Until 'tracker_gps' receives update, your status will be determined by stationary tracker, which gets latest update after restart. Obviously the status will be 'not_home'.
+5. Than you're going into area marked as 'zone1', 'tracker_gps' is getting update, and now your status is 'zone1' with source 'tracker_gps'.
+6. You've returned home, and your mobile device has connected to router, but GPS update yet didn't occur. Your status will be 'home' with source 'tracker_router'.
+7. After GPS update occurs, your status still be 'home' with source 'tracker_router' or 'tracker_ble', whatever updates later.
+
+TL;DR: When you're at home, your position is determined firstly by stationary trackers (if any) and then by GPS. When you're outside your home, your position is determined firstly by GPS and then by stationary trackers.
+
+
+**Hint**: When you use multiple device trackers together, especially stationary and GPS trackers, it's advisable to set `consider_home`for stationary trackers as low as possible.
+
+
You can manage persons via the UI from the person page inside the configuration panel or via `YAML`.
## {% linkable_title Configuring the `person` component via the Home Assistant configuration panel %}
From 4b62a85f8d87d10ed202eb9a8b138c23c4f62bac Mon Sep 17 00:00:00 2001
From: Diogo Gomes
Date: Wed, 6 Mar 2019 12:54:52 +0000
Subject: [PATCH 18/71] Change type of offset in utility_meter (#8459)
* change offset type
* missing "
Co-Authored-By: dgomes
---
source/_components/utility_meter.markdown | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/source/_components/utility_meter.markdown b/source/_components/utility_meter.markdown
index 17d13b8763b..1f5bbdd8b59 100644
--- a/source/_components/utility_meter.markdown
+++ b/source/_components/utility_meter.markdown
@@ -46,9 +46,10 @@ cycle:
required: true
type: string
offset:
- description: Cycle reset occur at the beginning of the period (0 minutes, 0h00 hours, Monday, day 1, January). This option enables the offsetting of these beginnings.
+ description: "Cycle reset occur at the beginning of the period (0 minutes, 0h00 hours, Monday, day 1, January). This option enables the offsetting of these beginnings. Supported formats: `offset: 'HH:MM:SS'`, `offset: 'HH:MM'` and Time period dictionary (see example below)."
required: false
default: 0
+ type: time
type: integer
net_consumption:
description: Set this to True if you would like to treat the source as a net meter. This will allow your counter to go both positive and negative.
@@ -62,6 +63,16 @@ tariffs:
type: list
{% endconfiguration %}
+### {% linkable_title Time period dictionary example %}
+
+```yaml
+offset:
+ # At least one of these must be specified:
+ days: 1
+ hours: 0
+ minutes: 0
+```
+
## {% linkable_title Services %}
### {% linkable_title Service `utility_meter.reset` %}
From 794dca39fe103f9f329749fe055589c17debce03 Mon Sep 17 00:00:00 2001
From: ktnrg45 <38207570+ktnrg45@users.noreply.github.com>
Date: Wed, 6 Mar 2019 13:08:04 -0700
Subject: [PATCH 19/71] Add multiple device support in docs (#8679)
* Add multiple device support in docs.
* minor edits
---
source/_components/media_player.ps4.markdown | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/_components/media_player.ps4.markdown b/source/_components/media_player.ps4.markdown
index 4b35521c547..e4da489b382 100644
--- a/source/_components/media_player.ps4.markdown
+++ b/source/_components/media_player.ps4.markdown
@@ -16,7 +16,7 @@ ha_iot_class: "Local Polling"
The `ps4` component allows you to control a
[Sony PlayStation 4 console](https://www.playstation.com/en-us/explore/ps4/).
-- This component supports controlling a single PlayStation 4 for your instance. Additional consoles may be supported in a future release.
+- This component supports controlling multiple PlayStation 4 consoles for your Home Assistant instance. Additional consoles can be added by running the configuration for the PS4 Integration again.
## {% linkable_title Requirements %}
@@ -53,7 +53,7 @@ There are varying methods to perform this, dependent on your OS that is running
If your Home Assistant device is running Hass.io on HassOS, it does not require additional configuration.
-- Example for Debian:
+- Example for Debian-based and most UNIX operating systems:
`sudo setcap 'cap_net_bind_service=+ep' /usr/bin/python3.5`
Replace "/usr/bin/python3.5" with your path to Python that is running Home Assistant.
From fde72cafda0d750ad90f3fdfec62b17c329d95bd Mon Sep 17 00:00:00 2001
From: Joe Trabulsy
Date: Wed, 6 Mar 2019 15:41:41 -0500
Subject: [PATCH 20/71] Include support for new etekcity vesync outlet and
switches (#8746)
* Include support for new outlet and switches
* :shirt: Removed additional whitespace
---
source/_components/switch.vesync.markdown | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/source/_components/switch.vesync.markdown b/source/_components/switch.vesync.markdown
index 6d11779b6fe..3a2929100ef 100644
--- a/source/_components/switch.vesync.markdown
+++ b/source/_components/switch.vesync.markdown
@@ -1,7 +1,7 @@
---
layout: page
title: "VeSync Switch"
-description: "Instructions on how to set up Etekcity VeSync switches within Home Assistant."
+description: "Instructions on how to set up Etekcity VeSync switches and outlets within Home Assistant."
date: 2018-03-09 02:11
sidebar: true
comments: false
@@ -12,9 +12,11 @@ ha_category: Switch
ha_release: 0.66
---
-The `vesync` switch platform enables integration with Etekcity VeSync smart switches.
+The `vesync` switch platform enables integration with Etekcity VeSync smart wall switches and outlets.
-VeSync switches are low-cost wifi smart plugs that offer energy monitoring and work with popular voice assistants.
+VeSync outlets are low-cost wifi smart plugs that offer energy monitoring and work with popular voice assistants.
+
+Supports both the 7A round outlets and 15A rectangular outlets, as well as the in wall switches.
## {% linkable_title Configuration %}
@@ -41,7 +43,7 @@ password:
## {% linkable_title Exposed Attributes %}
-VeSync switches will expose the following details.
+VeSync switches will expose the following details for only the smart outlets. Energy monitoring not available for in-wall switches.
| Attribute | Description | Example |
| ------------------- | ------------------------------------------------------------------- | --------------- |
From cd7ad03e733381355796b853650bde5c8091e3a8 Mon Sep 17 00:00:00 2001
From: Markus Jankowski
Date: Wed, 6 Mar 2019 21:48:18 +0100
Subject: [PATCH 21/71] Update HomematicIP overview (#8810)
* Update HomematicIP overview
add missing devices
* added HmIP-MOD-OC8
* fix
* added climate entity related devices
* Added description
---
source/_components/homematicip_cloud.markdown | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/source/_components/homematicip_cloud.markdown b/source/_components/homematicip_cloud.markdown
index c2706495025..7da8e4f6fab 100644
--- a/source/_components/homematicip_cloud.markdown
+++ b/source/_components/homematicip_cloud.markdown
@@ -98,26 +98,36 @@ authtoken:
* Water detector (*HmIP-SWD*)
* homematicip_cloud.climate
- * Radiator thermostat (*HmIP-eTRV,-2*) - should also work with (*HmIP-eTRV-2-UK, -B, -B1, -C*)
* Climate group (*HmIP-HeatingGroup*)
+ * This includes temperature/humidity measures for climate devices of a room delivered by:
+ * Wall-mounted thermostat (*HmIP-WTH, -2*)
+ * Brand Wall-mounted thermostat (*HmIP-BWTH, -24*)
+ * Radiator thermostat (*HmIP-eTRV, -2, -C*)
+ * Temperature and humidity sensor (*HmIP-STH*)
+ * Temperature and humidity Sensor with display (*HmIP-STHD*)
* homematicip_cloud.light
* Switch actuator and meter for brand switches (*HmIP-BSM*)
* Dimming actuator for brand switches (*HmIP-BDT*)
* Dimming actuator flush-mount (*HmIP-FDT*)
* Switch Actuator and Meter – flush-mount (*HmIP-FSM*)
+ * Switch Actuator for brand switches – with signal lamp (*HmIP-BSL*)
* homematicip_cloud.sensor
* Accesspoint duty-cycle (*HmIP-HAP, -B1*)
* Wall-mounted thermostat (*HmIP-WTH, -2*)
+ * Brand Wall-mounted thermostat (*HmIP-BWTH, -24*)
+ * Radiator thermostat (valve position only) (*HmIP-eTRV,-2*, -C) - should also work with (*HmIP-eTRV-2-UK, -B, -B1*)
* Temperature and humidity sensor (*HmIP-STH*)
* Temperature and humidity Sensor with display (*HmIP-STHD*)
* Outdoor temperature and humidity sensor (*HmIP-STHO, -A*)
* Illuminance sensor (*HmIP-SMI*)
+ * Light Sensor outdoor (*HmIP-SLO*)
* homematicip_cloud.switch
* Pluggable Switch (*HmIP-PS*)
* Pluggable Switch and Meter (*HmIP-PSM*) - should also work with (*HmIP-PSM-CH, -IT, -UK, -PE*)
+ * Switch actuator with open collector output (*HmIP-MOD-OC8*)
* homematicip_cloud.shutter
* Blind actuator for brand switches (*HmIP-BBL*)
From a610730c3c9a57c03ee528b11e5e8fd67eac874a Mon Sep 17 00:00:00 2001
From: Penny Wood
Date: Thu, 7 Mar 2019 04:55:24 +0800
Subject: [PATCH 22/71] Room/Area support documentation. (#8772)
* Room/Area support documentation.
* :pencil2: Tweak
---
source/_components/google_assistant.markdown | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown
index b6165599f75..84c0ce110f1 100644
--- a/source/_components/google_assistant.markdown
+++ b/source/_components/google_assistant.markdown
@@ -201,6 +201,10 @@ https://developers.google.com/actions/reference/smarthome/traits/modes
"Hey Google, change input source to TV on Living Room Receiver"
+### {% linkable_title Room/Area support %}
+
+Entities that have not got rooms explicitly set and that have been placed in Home Assistant areas will return room hints to Google with the devices in those areas.
+
### {% linkable_title Climate Operation Modes %}
There is not an exact 1-1 match between Home Assistant and Google Assistant for the available operation modes.
From f6bfbb72af34887a0cfeb50782ba1a1508a651f5 Mon Sep 17 00:00:00 2001
From: Steven Looman
Date: Wed, 6 Mar 2019 21:55:41 +0100
Subject: [PATCH 23/71] Document dlna_dmr.callback_url_override option (#8797)
* Document dlna_dmr.callback_url_override option
* :pencil2: Tweak
---
source/_components/media_player.dlna_dmr.markdown | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/source/_components/media_player.dlna_dmr.markdown b/source/_components/media_player.dlna_dmr.markdown
index 605e0028902..9404a031669 100644
--- a/source/_components/media_player.dlna_dmr.markdown
+++ b/source/_components/media_player.dlna_dmr.markdown
@@ -47,4 +47,8 @@ name:
description: The name you would like to give to the device, e.g., `TV living room`.
required: false
type: string
+callback_url_override:
+ description: Override the advertised callback URL. In case the home assistant instance is not directly reachable (e.g., running in a docker container without bridged-networking), advertise this callback URL for events.
+ required: false
+ type: string
{% endconfiguration %}
From be2eeead68f505dbf639f0fc03afcd2757b50be4 Mon Sep 17 00:00:00 2001
From: Marco M
Date: Wed, 6 Mar 2019 21:56:05 +0100
Subject: [PATCH 24/71] Mqtt alarm code_arm_required (#8822)
* Mqtt alarm value_template and code_arm_required
* :pencil2: Tweak
---
source/_components/alarm_control_panel.mqtt.markdown | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/source/_components/alarm_control_panel.mqtt.markdown b/source/_components/alarm_control_panel.mqtt.markdown
index f084ef7d17a..dc35ef32963 100644
--- a/source/_components/alarm_control_panel.mqtt.markdown
+++ b/source/_components/alarm_control_panel.mqtt.markdown
@@ -85,6 +85,11 @@ code:
description: If defined, specifies a code to enable or disable the alarm in the frontend.
required: false
type: string
+code_arm_required:
+ description: If true the code is required to arm the alarm.
+ required: false
+ type: boolean
+ default: true
availability_topic:
description: The MQTT topic subscribed to receive availability (online/offline) updates.
required: false
From 7e705f732e26bc66026f27788eaa663ce4de1401 Mon Sep 17 00:00:00 2001
From: Sergio Oller
Date: Thu, 7 Mar 2019 04:47:32 +0100
Subject: [PATCH 25/71] Support multiple keys in ifttt triggers (#8751)
* Support multiple keys in ifttt triggers
* Rename `to` to `target` in ifttt as suggested
---
source/_components/ifttt.markdown | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown
index 2c127fe08a1..691a561305d 100644
--- a/source/_components/ifttt.markdown
+++ b/source/_components/ifttt.markdown
@@ -70,6 +70,19 @@ Once you have added your key to your `configuration.yaml` file, restart your Hom
After restarting the server, be sure to watch the console for any logging errors that show up in red, white or yellow.
+### {% linkable_title Multiple IFTTT keys %}
+
+If you have multiple IFTTT users you can specify multiple IFTTT keys with:
+
+```yaml
+# Example configuration.yaml entry
+ifttt:
+ key:
+ YOUR_KEY_NAME1: YOUR_API_KEY1
+ YOUR_KEY_NAME2: YOUR_API_KEY2
+```
+
+
### {% linkable_title Testing your trigger %}
You can use the **Developer tools** to test your [Webhooks](https://ifttt.com/maker_webhooks) trigger. To do this, open the Home Assistant frontend, 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:
@@ -85,6 +98,17 @@ Service Data | `{"event": "EventName", "value1": "Hello World"}`
When your screen looks like this, click the 'call service' button.
+By default the trigger is sent to all the api keys from `configuration.yaml`. If you
+want to send the trigger to a specific key use the `target` field:
+
+Field | Value
+----- | -----
+domain | `ifttt`
+service | `trigger`
+Service Data | `{"event": "EventName", "value1": "Hello World", "target": "YOUR_KEY_NAME1"}`
+
+The `target` field can contain a single key name or a list of key names.
+
### {% linkable_title Setting up a recipe %}
Press the *New applet* button and search for *Webhooks*.
From cb2416dd1703b66a72c509f976255a008bff2302 Mon Sep 17 00:00:00 2001
From: Teemu R
Date: Thu, 7 Mar 2019 11:36:48 +0100
Subject: [PATCH 26/71] remove obsolete tplink platform documentations (#8853)
---
source/_components/light.tplink.markdown | 61 --------------
source/_components/switch.tplink.markdown | 96 -----------------------
2 files changed, 157 deletions(-)
delete mode 100644 source/_components/light.tplink.markdown
delete mode 100644 source/_components/switch.tplink.markdown
diff --git a/source/_components/light.tplink.markdown b/source/_components/light.tplink.markdown
deleted file mode 100644
index 95deb5f127a..00000000000
--- a/source/_components/light.tplink.markdown
+++ /dev/null
@@ -1,61 +0,0 @@
----
-layout: page
-title: "TP-Link Bulb"
-description: "Instructions on how to integrate TP-Link bulbs into Home Assistant."
-date: 2017-07-25 08:00
-sidebar: true
-comments: false
-sharing: true
-footer: true
-logo: tp-link.png
-ha_category: Light
-ha_iot_class: "Local Polling"
-ha_release: "0.50"
----
-
-The `tplink` light platform allows you to control the state of your [TP-Link smart bulb](http://www.tp-link.com/en/products/list-5609.html).
-
-Supported units:
-
-- LB100
-- LB110
-- LB120
-- LB130
-- LB230
-- KL110
-- KL120
-- KL130
-
-To use your TP-Link light in your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-light:
- - platform: tplink
- host: IP_ADDRESS
-```
-
-{% configuration %}
-name:
- description: The name to use when displaying this bulb.
- required: false
- type: string
- default: TP-Link Light
-host:
- description: "The IP address of your TP-Link bulb, e.g., `192.168.1.32`."
- required: true
- type: string
-{% endconfiguration %}
-
-## {% linkable_title Adding multiple lights %}
-
-You may need to add [multiple lights](https://community.home-assistant.io/t/multiple-tp-link-switches/6935) and the config would need to include multiple lights separately.
-
-```yaml
-# Example configuration.yaml entry
-light:
- - platform: tplink
- host: FIRST_IP_ADDRESS
- - platform: tplink
- host: SECOND_IP_ADDRESS
-```
diff --git a/source/_components/switch.tplink.markdown b/source/_components/switch.tplink.markdown
deleted file mode 100644
index f12e5629338..00000000000
--- a/source/_components/switch.tplink.markdown
+++ /dev/null
@@ -1,96 +0,0 @@
----
-layout: page
-title: "TP-Link Switch"
-description: "Instructions on how to integrate TP-Link switches into Home Assistant."
-date: 2016-07-13 08:00
-sidebar: true
-comments: false
-sharing: true
-footer: true
-logo: tp-link.png
-ha_category: Switch
-ha_iot_class: "Local Polling"
-ha_release: "0.24"
----
-
-The `tplink` switch platform allows you to control the state of your [TP-Link smart switch](http://www.tp-link.com/en/products/list-5258.html).
-
-Supported units:
-
-- HS100
-- HS103
-- HS105
-- HS110
-- HS200
-
-## {% linkable_title Configuration %}
-
-To use your TP-Link switch or socket in your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-switch:
- - platform: tplink
- host: IP_ADDRESS
-```
-
-{% configuration %}
-name:
- description: The name to use when displaying this switch.
- required: false
- type: string
- default: TP-Link Switch
-host:
- description: "The IP address of your TP-Link switch, e.g., `192.168.1.32`."
- required: true
- type: string
-enable_leds:
- description: If the LEDs on the switch (WiFi and power) should be lit.
- required: false
- type: boolean
-{% endconfiguration %}
-
-## {% linkable_title Adding multiple switches %}
-
-You may need to add [multiple switches](https://community.home-assistant.io/t/multiple-tp-link-switches/6935) and the config would need to include multiple switches separately.
-
-```yaml
-# Example configuration.yaml entry
-switch:
- - platform: tplink
- host: FIRST_IP_ADDRESS
- - platform: tplink
- host: SECOND_IP_ADDRESS
-```
-
-## {% linkable_title Configure Energy Sensors %}
-
-In order to get the power consumption readings from the HS110, you'll have to create a [template sensor](/components/switch.template/). In the example below, change all of the `my_tp_switch`'s to match your switch's entity ID.
-
-{% raw %}
-```yaml
-sensor:
- - platform: template
- sensors:
- my_tp_switch_amps:
- friendly_name_template: "{{ states.switch.my_tp_switch.name}} Current"
- value_template: '{{ states.switch.my_tp_switch.attributes["current_a"] | float }}'
- unit_of_measurement: 'A'
- my_tp_switch_watts:
- friendly_name_template: "{{ states.switch.my_tp_switch.name}} Current Consumption"
- value_template: '{{ states.switch.my_tp_switch.attributes["current_power_w"] | float }}'
- unit_of_measurement: 'W'
- my_tp_switch_total_kwh:
- friendly_name_template: "{{ states.switch.my_tp_switch.name}} Total Consumption"
- value_template: '{{ states.switch.my_tp_switch.attributes["total_energy_kwh"] | float }}'
- unit_of_measurement: 'kWh'
- my_tp_switch_volts:
- friendly_name_template: "{{ states.switch.my_tp_switch.name}} Voltage"
- value_template: '{{ states.switch.my_tp_switch.attributes["voltage"] | float }}'
- unit_of_measurement: 'V'
- my_tp_switch_today_kwh:
- friendly_name_template: "{{ states.switch.my_tp_switch.name}} Today's Consumption"
- value_template: '{{ states.switch.my_tp_switch.attributes["today_energy_kwh"] | float }}'
- unit_of_measurement: 'kWh'
-```
-{% endraw %}
From 418869c9b1c83d7d97158392a1cb6d64fe66f35c Mon Sep 17 00:00:00 2001
From: Manuel Zubieta
Date: Thu, 7 Mar 2019 04:55:37 -0600
Subject: [PATCH 27/71] Note how !include_dir* funcs do not support .yml
extension (#8846)
Addresses #16808. I don't believe it's necessary to support `.yml` files, but explicitly noting this would be helpful for others.
---
source/_docs/configuration/splitting_configuration.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown
index c04bd04460c..2fe7bb652a2 100644
--- a/source/_docs/configuration/splitting_configuration.markdown
+++ b/source/_docs/configuration/splitting_configuration.markdown
@@ -165,7 +165,7 @@ You can get help from the command line using: `hass --script check_config --help
### {% linkable_title Advanced Usage %}
-We offer four advanced options to include whole directories at once.
+We offer four advanced options to include whole directories at once. Please note that your files must have the `.yaml` file extension; `.yml` is not supported.
- `!include_dir_list` will return the content of a directory as a list with each file content being an entry in the list.
- `!include_dir_named` will return the content of a directory as a dictionary which maps filename => content of file.
- `!include_dir_merge_list` will return the content of a directory as a list by merging all files (which should contain a list) into 1 big list.
From c505bdf26b8742b5dd97776c38b240271c38629e Mon Sep 17 00:00:00 2001
From: zewelor
Date: Thu, 7 Mar 2019 19:15:22 +0100
Subject: [PATCH 28/71] Allow light.toggle service to accept all service light
turn on params (#8612)
* Allow light.toggle service to accept all service light turn on params
* Minor change
---
source/_components/light.markdown | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/source/_components/light.markdown b/source/_components/light.markdown
index 0b6ffb23f5b..2d7bd0445f7 100644
--- a/source/_components/light.markdown
+++ b/source/_components/light.markdown
@@ -76,11 +76,8 @@ Turns one or multiple lights off.
### {% linkable_title Service `light.toggle` %}
-Toggles the state of one or multiple lights using [groups]({{site_root}}/components/group/).
+Toggles the state of one or multiple lights using [groups]({{site_root}}/components/group/).
+Takes the same arguments as [`turn_on`](#service-lightturn_on) service.
*Note*: If `light.toggle` is used for a group of lights, it will toggle the individual state of each light.
-| Service data attribute | Optional | Description |
-| ---------------------- | -------- | ----------- |
-| `entity_id` | no | String or list of strings that point at `entity_id`s of lights. Else targets all.
-| `transition` | yes | Integer that represents the time the light should take to transition to the new state in seconds.
From 1c0784ac3ecd604f594b7b1894eefc8661adbc62 Mon Sep 17 00:00:00 2001
From: Finbarr Brady
Date: Fri, 8 Mar 2019 13:56:54 +0000
Subject: [PATCH 29/71] Adding enigma2 media player (#8776)
* Adding enigma2 media player
* Changes based on comments
* add e2 to discovery
* Adding prefer_picon option
* Update media_player.enigma2.markdown
* Add discovery blurb
---
source/_components/discovery.markdown | 2 +
.../_components/media_player.enigma2.markdown | 52 ++++++++++++++++++
source/images/supported_brands/openwebif.png | Bin 0 -> 8076 bytes
3 files changed, 54 insertions(+)
create mode 100644 source/_components/media_player.enigma2.markdown
create mode 100644 source/images/supported_brands/openwebif.png
diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown
index 4f9900020b4..4f2a4ed2810 100644
--- a/source/_components/discovery.markdown
+++ b/source/_components/discovery.markdown
@@ -22,6 +22,7 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi
* [Denon network receivers](/components/media_player.denonavr/)
* [DirecTV receivers](/components/media_player.directv/)
* [DLNA DMR enabled devices](/components/media_player.dlna_dmr/)
+ * [Enigma2 media player](/components/media_player.enigma2/)
* [Frontier Silicon internet radios](/components/media_player.frontier_silicon/)
* [Google Cast](/components/media_player.cast/)
* [HomeKit](/components/homekit_controller/)
@@ -79,6 +80,7 @@ Valid values for ignore are:
* `bose_soundtouch`: Bose Soundtouch speakers
* `denonavr`: Denon network receivers
* `directv`: DirecTV receivers
+ * `enigma2`: Enigma2 media players
* `frontier_silicon`: Frontier Silicon internet radios
* `google_cast`: Google Cast
* `harmony`: Logitech Harmony Hub
diff --git a/source/_components/media_player.enigma2.markdown b/source/_components/media_player.enigma2.markdown
new file mode 100644
index 00000000000..2b57133e546
--- /dev/null
+++ b/source/_components/media_player.enigma2.markdown
@@ -0,0 +1,52 @@
+---
+layout: page
+title: "Enigma2"
+description: "Instructions on how to integrate an Enigma2 based box running OpenWebif into Home Assistant."
+date: 2019-02-21 12:02
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: openwebif.png
+ha_category: Media Player
+featured: false
+ha_release: 0.90
+ha_iot_class: "Local Polling"
+---
+
+The `enigma2` platform allows you to control a Linux based set-top box which is running [Enigma2](https://github.com/oe-alliance/oe-alliance-enigma2) with the OpenWebif plugin installed.
+
+[OpenWebif](https://github.com/E2OpenPlugins/e2openplugin-OpenWebif) is an open source web interface for Enigma2 based set-top boxes.
+
+Enigma2 devices should be discovered automatically by using the [the discovery component](/components/discovery/).
+
+To manually add a set-top box to your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+media_player:
+ - platform: enigma2
+ host: IP_ADDRESS
+```
+
+{% configuration %}
+ host:
+ description: The IP/hostname of the Enigma2 set-top box on your home network.
+ required: true
+ type: string
+ use_channel_icon:
+ description: By default, a screen grab of the current channel is shown. If you prefer the channel icon to be shown instead, set this to true.
+ required: false
+ type: boolean
+ default: false
+ port:
+ description: Port which Openwebif is listening on.
+ required: false
+ type: integer
+ default: 80
+ name:
+ description: A name for easy identification of the device.
+ required: false
+ type: string
+ default: Enigma2 Media Player
+{% endconfiguration %}
diff --git a/source/images/supported_brands/openwebif.png b/source/images/supported_brands/openwebif.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcf13e70de70a5c66816d8c6288220e3715807ce
GIT binary patch
literal 8076
zcmZX3Wl&t*(lrn)xCLhzAOvTyAcI4I0KtP3d~g_?$q?Kfg1ZI}uEB#l!JXjlE`gUk
z_kQ=@s_&etQ@wlj>h9fpSDha#L|IV=8-pAJ0RaJ9_We6m1O!CDvn_^>`urUNlWsmc
zzF101D$7br0+k)1W|lS(1O&zy6GKC0SyskABO^n@zF`(73`aNB;NWmo!?w=$;r32o
zmti+BBS}y1H!0rlPH)05O+D@CIiP*tA-VI1&lCBzUml5h%aa{7=)nz_K8S8|Rt{V*
zUeKXMr>Ci=rD2+GBg}#OQKaa_uCRc*_04$*T_T94VMK^j=%y=(l@l}vxIkBeq~R_k
z4MKtqEK_-eIV4%UI@I8F93x%t*?zJRCb2rSKK5XWcJGN!sgA{V)tMOYCRx-*fo~jw
zV%goXDJ0}rj%av;959Xs4n~e7Zc+{{t{pD^gglKnZzAwE$wy*HzIhxYKawP`dWV2$
zeOAru+V?UY+#qcwnU22pF@!uEB6GZ4Q8XU~b0Wbgyg`G$cEh5f_Vz_TJo%KK_6iT&
z7k*t#{z(HusHmRSsDZZI7zAMit2pKlJrcnNX=XOaM(6yT92Lv=Pfyk4FJ9cgMh$Eu
ze0q9n*?D?u3-h^pv3?+igYeqT@^`p30q*lTq*;E{a@JD#05*ZzvKyH~jUntXTl?p8
zLO>9LfuBuVh_ew8W@}^T1cnLI{u2Ryw*R_8w7`EtoUMgvwG@A8jo7eBAiKk@$`^52U8!_@vSlb7dz
ziT?xqnD6$NM}j5ey;Fe
zw7qC3_(ajEeNsf?3JQ84%ba{&9jmznjgqB0o%$L!+lc|z`a0gsI%hXF_kpUg{7q&v
zZT&IEZcI7UU|Jy1mzLy-lH=rQ#7Dq
zr8E~F$Mb6;i9Emh72j
qf6>GR3MbTbqD3*a7V!cpQN`ny7A)B|h!y5eO&%
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
HhQ9v?^21O`
literal 0
HcmV?d00001
From 63cda779c95170a3bc5d253895dfce2e8abb2e76 Mon Sep 17 00:00:00 2001
From: Finbarr Brady
Date: Fri, 8 Mar 2019 15:55:54 +0000
Subject: [PATCH 30/71] Fix release and add OpenWebif to title (#8865)
---
source/_components/media_player.enigma2.markdown | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/_components/media_player.enigma2.markdown b/source/_components/media_player.enigma2.markdown
index 2b57133e546..ac498ba9a44 100644
--- a/source/_components/media_player.enigma2.markdown
+++ b/source/_components/media_player.enigma2.markdown
@@ -1,6 +1,6 @@
---
layout: page
-title: "Enigma2"
+title: "Enigma2 (OpenWebif)"
description: "Instructions on how to integrate an Enigma2 based box running OpenWebif into Home Assistant."
date: 2019-02-21 12:02
sidebar: true
@@ -10,7 +10,7 @@ footer: true
logo: openwebif.png
ha_category: Media Player
featured: false
-ha_release: 0.90
+ha_release: "0.90"
ha_iot_class: "Local Polling"
---
From ab297eedd5c0ee89d504ca611b9b133549b3db85 Mon Sep 17 00:00:00 2001
From: Finbarr Brady
Date: Sat, 9 Mar 2019 11:20:08 +0000
Subject: [PATCH 31/71] Add device tracker support for Cisco Mobility Express
(#8777)
* Adding cisco me
* Bump version
* Apply suggestions from code review
Co-Authored-By: fbradyirl
* Update device_tracker.cisco_mobility_express.markdown
---
...ce_tracker.cisco_mobility_express.markdown | 53 +++++++++++++++++++
1 file changed, 53 insertions(+)
create mode 100644 source/_components/device_tracker.cisco_mobility_express.markdown
diff --git a/source/_components/device_tracker.cisco_mobility_express.markdown b/source/_components/device_tracker.cisco_mobility_express.markdown
new file mode 100644
index 00000000000..075bdbbe1d5
--- /dev/null
+++ b/source/_components/device_tracker.cisco_mobility_express.markdown
@@ -0,0 +1,53 @@
+---
+layout: page
+title: "Cisco Mobility Express"
+description: "Instructions on how to integrate Cisco Mobility Express wireless controllers into Home Assistant."
+date: 2019-02-27 11:59
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: cisco.png
+ha_category: Presence Detection
+ha_release: "0.90"
+---
+
+This is a presence detection scanner for [Cisco](https://www.cisco.com) Mobility Express wireless controllers.
+
+To use this device tracker in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+device_tracker:
+ - platform: cisco_mobility_express
+ host: CONTROLLER_IP_ADDRESS
+ username: YOUR_ADMIN_USERNAME
+ password: YOUR_ADMIN_PASSWORD
+```
+
+{% configuration %}
+host:
+ description: The IP address of your controller, e.g., 192.168.10.150.
+ required: true
+ type: string
+username:
+ description: The username of a user with administrative privileges.
+ required: true
+ type: string
+password:
+ description: The password for your given admin account.
+ required: true
+ type: string
+ssl:
+ description: Use HTTPS instead of HTTP to connect.
+ required: false
+ type: boolean
+ default: false
+verify_ssl:
+ description: Enable or disable SSL certificate verification. Set to false if you have a self-signed SSL certificate and haven't installed the CA certificate to enable verification.
+ required: false
+ default: true
+ type: boolean
+{% endconfiguration %}
+
+See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
From 22f5308903a0d86da042f125f56a3761951010a8 Mon Sep 17 00:00:00 2001
From: Matt Robinson
Date: Sat, 9 Mar 2019 07:52:43 -0500
Subject: [PATCH 32/71] Fix type in mastodon docs (#8881)
---
source/_components/notify.mastodon.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/notify.mastodon.markdown b/source/_components/notify.mastodon.markdown
index 65bdc1e38a4..f8ec261d25b 100644
--- a/source/_components/notify.mastodon.markdown
+++ b/source/_components/notify.mastodon.markdown
@@ -12,7 +12,7 @@ ha_category: Notifications
ha_release: 0.67
---
-The `mastodon` platform uses [MAstodon](https://joinmastodon.org/) to delivery notifications from Home Assistant.
+The `mastodon` platform uses [Mastodon](https://joinmastodon.org/) to delivery notifications from Home Assistant.
Go to **Preferences** in the Mastodon web interface, then to **Development** and create a new application.
From 3df9f52770f46aa5e7b16afde48b8d1b42883ff2 Mon Sep 17 00:00:00 2001
From: Ian Richardson
Date: Sun, 10 Mar 2019 05:12:03 -0500
Subject: [PATCH 33/71] Update docs for show/hide name/icon (#8889)
* Update default tap_action
* show/hide name/icon
---
source/_lovelace/entity-button.markdown | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/source/_lovelace/entity-button.markdown b/source/_lovelace/entity-button.markdown
index 78cbcac9788..1cd473e21ab 100644
--- a/source/_lovelace/entity-button.markdown
+++ b/source/_lovelace/entity-button.markdown
@@ -41,6 +41,16 @@ icon:
description: Overwrites icon or entity picture.
type: string
default: Entity Domain Icon
+show_name:
+ required: false
+ description: Show name.
+ type: boolean
+ default: "true"
+show_icon:
+ required: false
+ description: Show icon.
+ type: boolean
+ default: "true"
tap_action:
required: false
description: Action to take on tap
@@ -50,7 +60,7 @@ tap_action:
required: true
description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `none`)"
type: string
- default: "`more-info`"
+ default: "`toggle`"
navigation_path:
required: false
description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`"
From bcc9d705ee1968314f92bc3a790e957066a614ed Mon Sep 17 00:00:00 2001
From: Peter Epley
Date: Sun, 10 Mar 2019 11:04:36 -0400
Subject: [PATCH 34/71] Add custom holidays to workday sensor (#8887)
* Add custom holidays to workday sensor
* Keep configuration sample minimal
---
.../binary_sensor.workday.markdown | 25 ++++++++++++++++---
1 file changed, 21 insertions(+), 4 deletions(-)
diff --git a/source/_components/binary_sensor.workday.markdown b/source/_components/binary_sensor.workday.markdown
index 75cd8c6e271..d21550d0d92 100644
--- a/source/_components/binary_sensor.workday.markdown
+++ b/source/_components/binary_sensor.workday.markdown
@@ -30,7 +30,6 @@ To enable the `workday` sensor in your installation, add the following to your `
binary_sensor:
- platform: workday
country: DE
- workdays: [mon, wed, fri]
```
{% configuration %}
@@ -63,11 +62,14 @@ days_offset:
required: false
type: integer
default: 0
+add_holidays:
+ description: "Add custom holidays (such as company, personal holidays or vacations). Needs to formatted as `YYYY-MM-DD`."
+ required: false
+ type: list
{% endconfiguration %}
Days are specified as follows: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`.
-The keyword `holiday` is used for public
-holidays identified by the holidays module.
+The keyword `holiday` is used for public holidays identified by the holidays module.
If you use the sensor for Norway (`NO`) you need to wrap `NO` in quotes or write the name in full.
@@ -76,6 +78,22 @@ If you use the sensor for Canada (`CA`) with Ontario (`ON`) as `province:` then
Otherwise the value is evaluated as `true` (check the YAML documentation for further details) and the sensor will not work.
+## {% linkable_title Full example %}
+
+This examples excludes Saturdays, Sundays and holiday. Two custom holidays are added.
+
+```yaml
+# Example configuration.yaml entry
+binary_sensor:
+ - platform: workday
+ country: DE
+ workdays: [mon, wed, fri]
+ excludes: [sat, sun, holiday]
+ add_holidays:
+ - '2018-12-26'
+ - '2018-12-31'
+```
+
## {% linkable_title Automation example %}
Example usage for automation:
@@ -98,4 +116,3 @@ automation:
Please remember that [as explained here](/docs/configuration/devices/) you can only have a single `automation:` entry. Add the automation to your existing automations.
-
From b12e93b4c3476997df36e024f3299b1fd1635f35 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?=
Date: Sun, 10 Mar 2019 17:59:25 +0100
Subject: [PATCH 35/71] Add invert to netdata documentation (#8883)
* Add invert to netdata documentation
Add invert to netdata documentation
* Move network interface sample
---
source/_components/sensor.netdata.markdown | 25 ++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/source/_components/sensor.netdata.markdown b/source/_components/sensor.netdata.markdown
index d758364265d..67dc414b48b 100644
--- a/source/_components/sensor.netdata.markdown
+++ b/source/_components/sensor.netdata.markdown
@@ -98,5 +98,30 @@ resources:
required: false
type: icon
default: "mdi:desktop-classic"
+ invert:
+ description: Invert the sensor values.
+ required: false
+ type: boolean
+ default: false
{% endconfiguration %}
+
+## {% linkable_title Full examples %}
+
+### {% linkable_title Network interface details %}
+
+Netdata returns all bandwidth related sensors as positive/negative numbers related to the interface.
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: netdata
+ resources:
+ network_downstream:
+ data_group: net.eth1
+ element: received
+ network_upstream:
+ data_group: net.eth1
+ element: sent
+ invert: true
+```
From c5c0cf9a7109a2cc701b098f0e250ebeb497b3b2 Mon Sep 17 00:00:00 2001
From: Colby Rome
Date: Mon, 11 Mar 2019 00:26:34 -0400
Subject: [PATCH 36/71] Add use_https configuration option to quantum_gateway
component (#8826)
* add use_https configuration option
* Update to 'use_https' to CONF_SSL string 'ssl'
---
source/_components/device_tracker.quantum_gateway.markdown | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/source/_components/device_tracker.quantum_gateway.markdown b/source/_components/device_tracker.quantum_gateway.markdown
index 05ff8524740..3949b2e663c 100644
--- a/source/_components/device_tracker.quantum_gateway.markdown
+++ b/source/_components/device_tracker.quantum_gateway.markdown
@@ -38,6 +38,11 @@ password:
description: The password for the `admin` user. The default password may be printed on the gateway itself.
required: true
type: string
+ssl:
+ description: Use HTTPS when connecting to gateway. New firmware may require HTTPS while older may require this to be False.
+ required: false
+ type: boolean
+ default: True
{% endconfiguration %}
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
From 2085bd634329f1ac2b7e5bdcb98b81bf9fb9e0d3 Mon Sep 17 00:00:00 2001
From: Brad Dixon
Date: Mon, 11 Mar 2019 03:51:43 -0400
Subject: [PATCH 37/71] Doc: Add as_timestamp as a Jinja filter. (#8905)
---
source/_docs/configuration/templating.markdown | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown
index 53c5af9d775..fc5699801a6 100644
--- a/source/_docs/configuration/templating.markdown
+++ b/source/_docs/configuration/templating.markdown
@@ -149,7 +149,7 @@ With strings:
- For specific values: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()`
- `utcnow()` will be rendered as UTC time.
- For specific values: `utcnow().second`, `utcnow().minute`, `utcnow().hour`, `utcnow().day`, `utcnow().month`, `utcnow().year`, `utcnow().weekday()` and `utcnow().isoweekday()`.
-- `as_timestamp()` will convert datetime object or string to UNIX timestamp.
+- `as_timestamp()` will convert datetime object or string to UNIX timestamp. This function also be used as a filter.
- `strptime(string, format)` will parse a string to a datetime based on a [format](https://docs.python.org/3.6/library/datetime.html#strftime-and-strptime-behavior).
- Filter `timestamp_local` will convert an UNIX timestamp to local time/data.
- Filter `timestamp_utc` will convert a UNIX timestamp to UTC time/data.
@@ -236,10 +236,10 @@ The other part of templating is processing incoming data. It allows you to modif
It depends per component or platform, but it is common to be able to define a template using the `value_template` configuration key. When a new value arrives, your template will be rendered while having access to the following values on top of the usual Home Assistant extensions:
-| Variable | Description |
-| ------------ | -------------------------------------- |
-| `value` | The incoming value. |
-| `value_json` | The incoming value parsed as JSON. |
+| Variable | Description |
+|--------------|------------------------------------|
+| `value` | The incoming value. |
+| `value_json` | The incoming value parsed as JSON. |
This means that if the incoming values looks like the sample below:
From e4f3c423b6df1d2420d717130692ca955f6d4c29 Mon Sep 17 00:00:00 2001
From: Jpsy
Date: Mon, 11 Mar 2019 08:52:35 +0100
Subject: [PATCH 38/71] KNX Cookbook deleted (moved to forum) (#8903)
As further changes to the KNX Cookbook will not be merged (read Paulus in home-assistant#8393 (comment)) this incomplete Cookbook should be removed from the repo. I have moved the latest version to the forum (again as suggested by Paulus): https://community.home-assistant.io/t/knx-cookbook/104707
---
source/_cookbook/automation_knx.markdown | 217 -----------------------
1 file changed, 217 deletions(-)
delete mode 100644 source/_cookbook/automation_knx.markdown
diff --git a/source/_cookbook/automation_knx.markdown b/source/_cookbook/automation_knx.markdown
deleted file mode 100644
index 5092d6b09a3..00000000000
--- a/source/_cookbook/automation_knx.markdown
+++ /dev/null
@@ -1,217 +0,0 @@
----
-layout: page
-title: "KNX automation and interaction with other systems"
-description: "General KNX set up and communication with other systems like the Philips Hue."
-date: 2019-01-20 22:00 +0100
-sidebar: true
-comments: false
-sharing: true
-footer: true
-ha_category: Automation Examples
----
-
-This cookbook shows a general KNX set up and communication with other systems like the Philips Hue.
-
-## {% linkable_title General KNX setup %}
-
-``` yaml
-knx:
- # This is all you need to get the KNX component up and running.
- # Auto config works nicely and usually no config data for your KNX ip tunnel is needed.
- # If the KNX router is not found automatically, check the docs and add the IP config here.
-
-# get some sensor data from KNX to HA
-sensor:
- - platform: knx
- name: Helligkeit Treppe oben
- address: '6/1/0'
- type: 'illuminance'
- # The entity_id of this sensor will be generated from the name by a slug function.
- # In this case, it will be sensor.helligkeit_treppe_oben
- # See dev tools' state page (icons at the bottom of left side menu) for a list of all entity_ids
-
-light:
- # See "sensor" remarks above for an explanation of the resulting entity_ids
- - platform: knx
- # switched light
- name: 'Eltern Decke'
- address: '1/2/10'
- state_address: '1/2/11'
-
- - platform: knx
- # dimmed light
- name: 'Eltern Bett'
- address: '1/2/12'
- state_address: '1/2/15'
- brightness_address: '1/2/13'
- brightness_state_address: '1/2/16'
-
-cover:
- # KNX Covers are roller shutters and blinds.
- # These items currently expose a bug with the invert_position setting:
- # Either you will get 100% for an open shutter and 0% for a closed one
- # or you will get the function of up and down arrows exchanged wrongly.
- # Hope this is resolved soon.
- # ---
- # See "sensor" remarks above for an explanation of the resulting entity_ids
- - platform: knx
- name: "Eltern"
- move_long_address: '3/2/0'
- move_short_address: '3/2/1'
- position_address: '3/2/3'
- position_state_address: '3/2/2'
- travelling_time_up: 23
- travelling_time_down: 21
- invert_position: true
-
- - platform: knx
- name: "Büro"
- move_long_address: '3/2/4'
- move_short_address: '3/2/5'
- position_address: '3/2/7'
- position_state_address: '3/2/6'
- travelling_time_up: 23
- travelling_time_down: 21
- invert_position: true
-```
-
-## {% linkable_title Using some values from HA within KNX %}
-
-``` yaml
-# configuration.yaml example
-sensor:
-# Register with Dark Sky to retrieve current environment data.
-# Registration is free for the amount of requests we need here.
-- platform: openweathermap
- name: OpenWeather
- language: de
- api_key: YOUR_API_KEY
- monitored_conditions:
- - weather
- - temperature
- - wind_speed
- - wind_bearing
- - humidity
- - pressure
- - clouds
- - rain
- - snow
- - weather_code
-
-knx:
- # Expose the above sensor data from HA to KNX group addresses.
- # To find the right "type" setting for each parameter, create a group address in ETS,
- # add a consuming actor for this kind of parameter to it and check the properties pane.
- # ETS will show you a data type (DPT) that you can compare to the available DPTs in the
- # documentation of the HA KNX component.
- expose:
- - type: 'temperature'
- entity_id: 'sensor.dark_sky_temperature'
- address: '0/1/10'
- - type: 'humidity'
- entity_id: 'sensor.dark_sky_humidity'
- address: '0/1/11'
- - type: 'temperature'
- entity_id: 'sensor.dark_sky_pressure'
- address: '0/1/12'
- - type: 'DPT-9'
- entity_id: 'sensor.dark_sky_wind_speed'
- address: '0/1/13'
- - type: 'DPT-14'
- entity_id: 'sensor.dark_sky_wind_bearing'
- address: '0/1/14'
-```
-
-## {% linkable_title Basic KNX automation %}
-
-This example uses an automation that is activated by a KNX switch.
-
-The automation then triggers a script that controls a KNX light and dims it down in 5 steps from 80% to 0% over a time span of 5 minutes.
-
-Care must be taken to stop the script, when the light is otherwise switched (i.e., by its normal on/off KNX switch). If we don't do that, the light will first switch correctly, but then the script will continue to run in the background and after the next delay has passed it will kick in again and activate its next dim level.
-
-```yaml
-knx:
-
-switch:
-- platform: knx
- # The normal on/off switch for the light
- name: "Licht, Eltern Bett"
- address: '1/2/12'
-- platform: knx
- # The switch that triggers the dim script
- # This switch must be configured in ETS to send on when pressed and off when released
- name: "Licht, Eltern Bett, Fadeout"
- address: '1/2/17'
-
-light:
- # This is the light that we want to dim (more precisely it is the dimming actuator of the light).
- # It is directly controlled through the first switch above.
- # (Note that the switch shares its group address with this light and thus controls it over the KNX bus.)
- - platform: knx
- name: 'Eltern Bett'
- address: '1/2/12'
- state_address: '1/2/15'
- brightness_address: '1/2/13'
- brightness_state_address: '1/2/16'
-
-automation:
-# start the dim script, if the dim switch is pressed
-- id: light_eltern_bett_fadeout
- alias: Licht Eltern Bett Fade-Out
- trigger:
- - entity_id: switch.licht_eltern_bett_fadeout
- platform: state
- to: 'on'
- condition: []
- action:
- # in case the script was already running, we first stop it
- - service: script.turn_off
- entity_id: script.light_eltern_bett_fadeout
- - service: script.turn_on
- entity_id: script.light_eltern_bett_fadeout
-
-# stop the dim script, if light is switched manually
-- id: light_eltern_bett_fadeout_stop
- alias: Licht Eltern Bett Fade-Out STOP
- trigger:
- - entity_id: switch.licht_eltern_bett
- platform: state
- # no argument here = trigger with ANY state change
- condition: []
- action:
- - service: script.turn_off
- entity_id: script.light_eltern_bett_fadeout
-
-script:
- light_eltern_bett_fadeout:
- alias: Licht Eltern Bett Fade-Out
- sequence:
- - service: light.turn_on
- entity_id: light.eltern_bett
- data:
- brightness_pct: 80
- - delay: '00:01:00'
- - service: light.turn_on
- entity_id: light.eltern_bett
- data:
- brightness_pct: 60
- - delay: '00:01:00'
- - service: light.turn_on
- entity_id: light.eltern_bett
- data:
- brightness_pct: 40
- - delay: '00:01:00'
- - service: light.turn_on
- entity_id: light.eltern_bett
- data:
- brightness_pct: 20
- - delay: '00:01:00'
- - service: light.turn_on
- entity_id: light.eltern_bett
- data:
- brightness_pct: 10
- - delay: '00:01:00'
- - service: light.turn_off
- entity_id: light.eltern_bett
-```
From 03c02ac247b56623364b149c0cc739f6c2b32012 Mon Sep 17 00:00:00 2001
From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com>
Date: Mon, 11 Mar 2019 07:33:18 -0500
Subject: [PATCH 39/71] Add docs describing cloudhook support (#8902)
---
source/_components/smartthings.markdown | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown
index db2b6fa7530..528325a990e 100644
--- a/source/_components/smartthings.markdown
+++ b/source/_components/smartthings.markdown
@@ -59,6 +59,17 @@ See it in action, with a step-by-step setup guide, thanks to a fan! (v0.87 featu
## {% linkable_title Basic requirements %}
+The SmartThings integration utilizes a webhook to receive push updates from the SmartThings cloud through either a cloudhook or an internet accessible webhook based on whether Home Assistant Cloud is configured and logged in with a non-expired subscription (this is not configurable at this time).
+
+### {% linkable_title Cloudhook via Nabu Casa %}
+
+If you are using Home Assistant Cloud (Nabu Casa) the integraiton will create a cloudhook automatically. This greatly simplifies the basic requirements and does not require Home Assistant to be exposed to the internet. **If you have previously setup the component prior to meeting the requirements for a cloudhook or prior to v0.90.0, you must remove all prior integrations and run through the configuration again.**
+
+1. A [personal access token](https://account.smartthings.com/tokens) tied to a Samsung or SmartThings account (see below for instructions).
+2. Home Assistant Cloud is configured and logged-in with a non-expired subscription.
+
+### {% linkable_title Webhook %}
+
1. A [personal access token](https://account.smartthings.com/tokens) tied to a Samsung or SmartThings account (see below for instructions).
2. Home Assistant setup for [remote access](/docs/configuration/remote/) via a domain name secured with SSL. *Self-signed SSL certificates are not supported by the SmartThings Cloud API.*
3. [`base_url` of the http component](/components/http#base_url) set the URL that Home Assistant is available on the internet.
@@ -281,7 +292,7 @@ The SmartThings Switch platform lets you control devices that have the [`switch`
### {% linkable_title Setup %}
-Perform the following steps if you receive one of the following error messages while attempting to setup the integration:
+Perform the following steps if you receive one of the following error messages while attempting to setup the integration (this does not apply when integrated through Home Assistant Cloud):
- "SmartThings could not validate the endpoint configured in base_url. Please review the component requirements."
- "Unable to setup the SmartApp. Please try again."
From a2db7792722bc1dac0a8d35a14e962a01d8a53e3 Mon Sep 17 00:00:00 2001
From: Marco Orovecchia
Date: Mon, 11 Mar 2019 16:17:13 +0100
Subject: [PATCH 40/71] Changed from nanoleaf_aurora to nanoleaf (#8906)
Now supports multiple nanoleaf light panels
---
...urora.markdown => light.nanoleaf.markdown} | 18 +++++++++---------
...af_aurora_light.png => nanoleaf_light.png} | Bin
2 files changed, 9 insertions(+), 9 deletions(-)
rename source/_components/{light.nanoleaf_aurora.markdown => light.nanoleaf.markdown} (70%)
rename source/images/supported_brands/{nanoleaf_aurora_light.png => nanoleaf_light.png} (100%)
diff --git a/source/_components/light.nanoleaf_aurora.markdown b/source/_components/light.nanoleaf.markdown
similarity index 70%
rename from source/_components/light.nanoleaf_aurora.markdown
rename to source/_components/light.nanoleaf.markdown
index dc0805ffeb0..37842ad67e2 100644
--- a/source/_components/light.nanoleaf_aurora.markdown
+++ b/source/_components/light.nanoleaf.markdown
@@ -1,13 +1,13 @@
---
layout: page
-title: "Nanoleaf Aurora Light Panel"
-description: "Instructions how to integrate Nanoleaf Aurora Light Panels into Home Assistant."
+title: "Nanoleaf Light Panel"
+description: "Instructions how to integrate Nanoleaf Light Panels into Home Assistant."
date: 2018-01-04 20:00
sidebar: true
comments: false
sharing: true
footer: true
-logo: nanoleaf_aurora_light.png
+logo: nanoleaf_light.png
ha_category: Light
ha_iot_class: "Local Polling"
featured: false
@@ -16,16 +16,16 @@ ha_release: 0.67
### {% linkable_title Configuration Sample %}
-The `nanoleaf_aurora` platform allows you to control [Nanoleaf Aurora Light Panels](https://nanoleaf.me) from Home Assistant.
+The `nanoleaf` platform allows you to control [Nanoleaf Light Panels](https://nanoleaf.me) from Home Assistant.
-The preferred way to set up this platform is by enabling the [discovery component](/components/discovery/). Make sure to press and hold the *ON* button for 5 seconds (the LED will start flashing) on your Nanoleaf Aurora Panel while Home Assistant is starting.
+The preferred way to set up this platform is by enabling the [discovery component](/components/discovery/). Make sure to press and hold the *ON* button for 5 seconds (the LED will start flashing) on your Nanoleaf Lights while Home Assistant is starting.
-To configure the Aurora lights manually, add the following lines to your `configuration.yaml` file:
+To configure the Nanoleaf lights manually, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
light:
- - platform: nanoleaf_aurora
+ - platform: nanoleaf
host: 192.168.1.10
token: xxxxxxxxxxxxxxxxxxxxx
```
@@ -43,12 +43,12 @@ name:
description: Name of the component, make this unique if you have multiple Light Panels
required: false
type: string
- default: Aurora
+ default: Nanoleaf
{% endconfiguration %}
### {% linkable_title Getting The Auth Token %}
-1. Make sure that your Nanoleaf Aurora Panel is fully patched (as of the time of writing the latest version was 2.2.0)
+1. Make sure that your Nanoleaf Light Panel is fully patched (as of the time of writing the latest version was 3.0.8 for Aurora and 1.2.0 for Canvas)
2. Hold down the *ON* button on the Panel for 5 seconds; the LED will start flashing
3. Issue a *POST* request to the API endpoint, e.g., via `$ curl -i -X POST http://192.168.1.155:16021/api/v1/new`
4. The output should include the auth token like *{"auth_token":"xxxxxxxxxxxxxxxxxxxxx"}*, copy the resulting token into your configuration
diff --git a/source/images/supported_brands/nanoleaf_aurora_light.png b/source/images/supported_brands/nanoleaf_light.png
similarity index 100%
rename from source/images/supported_brands/nanoleaf_aurora_light.png
rename to source/images/supported_brands/nanoleaf_light.png
From 81cd16d5c310e5068f745130c3dcb056d76dd316 Mon Sep 17 00:00:00 2001
From: ehendrix23
Date: Mon, 11 Mar 2019 12:52:55 -0600
Subject: [PATCH 41/71] Add press hold for send command (#7985)
* Updated for new parameter hold_secs
* Updated based on review
* :pencil2: Tweak
---
source/_components/harmony.markdown | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/source/_components/harmony.markdown b/source/_components/harmony.markdown
index 0545e2b028b..6a69ea302a1 100644
--- a/source/_components/harmony.markdown
+++ b/source/_components/harmony.markdown
@@ -67,6 +67,11 @@ delay_secs:
description: Default duration in seconds between sending commands to a device.
required: false
type: float
+ default: 0.4
+hold_secs:
+ description: Default duration in seconds between sending the "press" command and sending the "release" command.
+ required: false
+ default: 0
{% endconfiguration %}
### {% linkable_title Configuration file %}
@@ -77,7 +82,7 @@ Upon startup one file will be written to your Home Assistant configuration direc
- List of all programmed device names and ID numbers
- List of all available commands per programmed device
-This file will be overwritten whenever the Harmony HUB has a new configuration, there is no need to restart HASS.
+This file will be overwritten whenever the Harmony HUB has a new configuration, there is no need to restart Home Assistant.
### {% linkable_title Service `remote.turn_off` %}
@@ -85,7 +90,7 @@ Turn off all devices that were switched on from the start of the current activit
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
-| `entity_id` | yes | Only act on a specific remote, else target all.
+| `entity_id` | no | Entity ID to target.
### {% linkable_title Service `remote.turn_on` %}
@@ -93,7 +98,7 @@ Start an activity. Will start the default `activity` from configuration.yaml if
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
-| `entity_id` | yes | Only act on a specific remote, else target all.
+| `entity_id` | no | Entity ID to target.
| `activity` | yes | Activity ID or Activity Name to start.
##### {% linkable_title Example %}
@@ -127,7 +132,7 @@ Send a single command or a set of commands to one device, device ID and availabl
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
-| `entity_id` | yes | Only act on a specific remote, else target all.
+| `entity_id` | no | Entity ID to target.
| `device` | no | Device ID or Device Name to send the command to.
| `command` | no | A single command or a list of commands to send.
| `num_repeats` | yes | The number of times to repeat the command(s).
@@ -159,7 +164,6 @@ In the file 'harmony_REMOTENAME.conf' you can find the available devices and com
}
```
-
A typical service call for sending several button presses looks like this:
```yaml
@@ -190,7 +194,7 @@ Sends the change channel command to the Harmony HUB
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
-| `entity_id` | no | Only act on a specific remote, else target all.
+| `entity_id` | no | Entity ID to target.
| `channel` | no | Channel number to change to
A typical service call for changing the channel would be::
@@ -208,7 +212,7 @@ Force synchronization between the Harmony device and the Harmony cloud.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
-| `entity_id` | yes | Only act on a specific remote, else target all.
+| `entity_id` | no | Entity ID to target.
### {% linkable_title Examples %}
From 68298c5c083044744081e4174eeddcda2be51ca3 Mon Sep 17 00:00:00 2001
From: Jason Hu
Date: Mon, 11 Mar 2019 11:59:00 -0700
Subject: [PATCH 42/71] Deprecated http.api_password (#8894)
* Update providers.markdown
* Update http.markdown
* Update http.markdown
* Update source/_components/http.markdown
Co-Authored-By: awarecan
* Update source/_components/http.markdown
Co-Authored-By: awarecan
---
source/_components/http.markdown | 11 ++---------
source/_docs/authentication/providers.markdown | 6 +++---
2 files changed, 5 insertions(+), 12 deletions(-)
diff --git a/source/_components/http.markdown b/source/_components/http.markdown
index 2b452b4cb0c..93e9cbff19f 100644
--- a/source/_components/http.markdown
+++ b/source/_components/http.markdown
@@ -22,12 +22,11 @@ Don't use option `server_host` on a Hass.io installation!
```yaml
# Example configuration.yaml entry
http:
- api_password: YOUR_PASSWORD
```
{% configuration %}
api_password:
- description: Protect the Home Assistant API with a password - this password can also be used to log in to the frontend. Where your client or other software supports it, you should use [long lasting access token](/docs/authentication/#your-account-profile) instead, as [shown in the REST API](https://developers.home-assistant.io/docs/en/external_api_rest.html) and [websocket API](https://developers.home-assistant.io/docs/en/external_api_websocket.html) documentation.
+ description: "**Deprecated since 0.90 release. Configuration moved to [Legacy API password auth provider](/docs/authentication/providers/#legacy-api-password).** Protect the Home Assistant API with a password - this password can also be used to log in to the frontend. Where your client or other software supports it, you should use [long lasting access token](/docs/authentication/#your-account-profile) instead, as [shown in the REST API](https://developers.home-assistant.io/docs/en/external_api_rest.html) and [websocket API](https://developers.home-assistant.io/docs/en/external_api_websocket.html) documentation."
required: false
type: string
server_host:
@@ -71,7 +70,7 @@ trusted_proxies:
required: false
type: string, list
trusted_networks:
- description: "List of trusted networks, consisting of IP addresses or networks, that are allowed to bypass password protection when accessing Home Assistant. If using a reverse proxy with the `use_x_forwarded_for` and `trusted_proxies` options enabled, requests proxied to Home Assistant with a trusted `X-Forwarded-For` header will appear to come from the IP given in that header instead of the proxy IP."
+ description: "**Deprecated since 0.89 release. Configuration moved to [Trusted Networks auth provider](/docs/authentication/providers/#trusted-networks).** List of trusted networks, consisting of IP addresses or networks, that are allowed to bypass password protection when accessing Home Assistant. If using a reverse proxy with the `use_x_forwarded_for` and `trusted_proxies` options enabled, requests proxied to Home Assistant with a trusted `X-Forwarded-For` header will appear to come from the IP given in that header instead of the proxy IP."
required: false
type: string, list
ip_ban_enabled:
@@ -96,7 +95,6 @@ The sample below shows a configuration entry with possible values:
```yaml
# Example configuration.yaml entry
http:
- api_password: YOUR_PASSWORD
server_port: 12345
ssl_certificate: /etc/letsencrypt/live/hass.example.com/fullchain.pem
ssl_key: /etc/letsencrypt/live/hass.example.com/privkey.pem
@@ -107,11 +105,6 @@ http:
trusted_proxies:
- 127.0.0.1
- ::1
- trusted_networks:
- - 127.0.0.1
- - ::1
- - 192.168.0.0/24
- - fd00::/8
ip_ban_enabled: true
login_attempts_threshold: 5
```
diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown
index a36531c6258..5455a7da2d2 100644
--- a/source/_docs/authentication/providers.markdown
+++ b/source/_docs/authentication/providers.markdown
@@ -132,11 +132,11 @@ Activating this auth provider will allow you to authenticate with the API passwo
homeassistant:
auth_providers:
- type: legacy_api_password
-
-http:
- api_password: !secret http_password
+ api_password: !secret http_password
```
+`api_password` is required option since 0.90 rlease.
+
Activating this auth provider will also allow you to provide the API password using an authentication header to make requests against the Home Assistant API. This feature will be dropped in the future in favor of long-lived access tokens.
If you don't specify any `auth_providers` section in the `configuration.yaml` file then this provider will be set up automatically if `api_password` was configured under `http` section.
From 8ecb1affafbc198c465eaf91de00484d8d3fb90c Mon Sep 17 00:00:00 2001
From: Leonardo Merza
Date: Mon, 11 Mar 2019 15:02:20 -0400
Subject: [PATCH 43/71] add person device tracking (#8855)
* add person device tracking
* Update sensor.google_travel_time.markdown
---
source/_components/sensor.google_travel_time.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/sensor.google_travel_time.markdown b/source/_components/sensor.google_travel_time.markdown
index 4439d4ebe71..8fcc76f1572 100644
--- a/source/_components/sensor.google_travel_time.markdown
+++ b/source/_components/sensor.google_travel_time.markdown
@@ -97,7 +97,7 @@ options:
## {% linkable_title Dynamic Configuration %}
-Tracking can be setup to track entities of type `device_tracker`, `zone` and `sensor`. If an entity is placed in the origin or destination then every 5 minutes when the platform updates it will use the latest location of that entity.
+Tracking can be setup to track entities of type `device_tracker`, `zone`, `sensor` and `person`. If an entity is placed in the origin or destination then every 5 minutes when the platform updates it will use the latest location of that entity.
```yaml
# Example entry for configuration.yaml
From b4519eccbcc4785c4bdba0a8c7331e8682bc75d5 Mon Sep 17 00:00:00 2001
From: gertdb <42268196+gertdb@users.noreply.github.com>
Date: Mon, 11 Mar 2019 20:05:24 +0100
Subject: [PATCH 44/71] Update modbus.markdown (#8814)
---
source/_components/modbus.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/modbus.markdown b/source/_components/modbus.markdown
index fe3ffbbcd79..6ed59bbed9e 100644
--- a/source/_components/modbus.markdown
+++ b/source/_components/modbus.markdown
@@ -149,7 +149,7 @@ modbus:
| hub | Hub name (defaults to 'default' when omitted) |
| unit | Slave address (set to 255 you talk to Modbus via TCP) |
| address | Address of the Register (e.g., 138) |
-| value | An array of 16-bit values. Might need reverse ordering. E.g., to set 0x0004 you might need to set `[4,0]` |
+| value | A single value or an array of 16-bit values. Single value will call modbus function code 6. Array will call modbus function code 16. Array might need reverse ordering. E.g., to set 0x0004 you might need to set `[4,0]` |
## {% linkable_title Building on top of Modbus %}
From 5a6039fcc5a4cad9ec8332fa93406d2120ca0efd Mon Sep 17 00:00:00 2001
From: Finbarr Brady
Date: Mon, 11 Mar 2019 19:06:54 +0000
Subject: [PATCH 45/71] Adding some missing config options for Enigma2
media_player. (#8911)
* Add missing config to e2
* more info
* Remove default params markdown
---
.../_components/media_player.enigma2.markdown | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/source/_components/media_player.enigma2.markdown b/source/_components/media_player.enigma2.markdown
index ac498ba9a44..03712d7ab7f 100644
--- a/source/_components/media_player.enigma2.markdown
+++ b/source/_components/media_player.enigma2.markdown
@@ -40,10 +40,25 @@ media_player:
type: boolean
default: false
port:
- description: Port which Openwebif is listening on.
+ description: Port which OpenWebif is listening on.
required: false
type: integer
default: 80
+ username:
+ description: The username of a user with privileges to access the box. This is only required if you have enabled the setting "Enable HTTP Authentication" in OpenWebif settings. _(e.g., on the remote by pressing `Menu`>`Plugins`>`OpenWebif`)_.
+ required: false
+ type: string
+ default: root
+ password:
+ description: The password for your given account. Again, this is only required if you have enabled the setting "Enable HTTP Authentication" in OpenWebif settings. _(e.g., on the remote by pressing `Menu`>`Plugins`>`OpenWebif`)_.
+ required: false
+ type: string
+ default: dreambox
+ ssl:
+ description: Use HTTPS instead of HTTP to connect. This is only required if you have enabled the setting "Enable HTTPS" in OpenWebif settings. _(e.g., on the remote by pressing `Menu`>`Plugins`>`OpenWebif`)_. You will need to ensure you have a valid CA certificate in place or SSL verification will fail with this component.
+ required: false
+ type: boolean
+ default: false
name:
description: A name for easy identification of the device.
required: false
From d52fb948b4fe00ef6c67ec29486758dd23037f22 Mon Sep 17 00:00:00 2001
From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com>
Date: Mon, 11 Mar 2019 14:08:31 -0500
Subject: [PATCH 46/71] Add Three Axis Sensor docs (#8879)
---
source/_components/smartthings.markdown | 1 +
1 file changed, 1 insertion(+)
diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown
index 528325a990e..6f1bdc9fd98 100644
--- a/source/_components/smartthings.markdown
+++ b/source/_components/smartthings.markdown
@@ -267,6 +267,7 @@ The SmartThings Sensor platform lets your view devices that have sensor-related
| [`thermostatMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Mode) | `thermostatMode`
| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `thermostatOperatingState`
| [`thermostatSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Setpoint) | `thermostatSetpoint`
+| [`threeAxis`](https://docs.smartthings.com/en/latest/capabilities-reference.html#three-axis) | `threeAxis` (as discrete sensors `X`, `Y` and `Z`)
| [`tvChannel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tv-Channel) | `tvChannel`
| [`tvocMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tvoc-Measurement) | `tvocLevel`
| [`ultravioletIndex`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Ultraviolet-Index) | `ultravioletIndex`
From 9a693888ff75768129a6364d0cb1dd6987d49c81 Mon Sep 17 00:00:00 2001
From: Zak
Date: Mon, 11 Mar 2019 14:09:18 -0500
Subject: [PATCH 47/71] Add cppm tracker markdown (#8832)
* Added cppm tracker markdown
* Added suggested changes
* Suggested changes.
* Updated description.
* :pencil2: Tweaks
---
source/_components/cppm.markdown | 52 ++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
create mode 100644 source/_components/cppm.markdown
diff --git a/source/_components/cppm.markdown b/source/_components/cppm.markdown
new file mode 100644
index 00000000000..735f74cbd48
--- /dev/null
+++ b/source/_components/cppm.markdown
@@ -0,0 +1,52 @@
+---
+layout: page
+title: "Aruba ClearPass"
+description: "Instructions on how to integrate Aruba ClearPass into Home Assistant."
+date: 2019-03-05 10:45
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: aruba.png
+ha_category: Presence Detection
+ha_release: "0.90"
+ha_iot_class: Local Polling
+---
+
+This platform allows you to detect presence by looking at connected devices to [Aruba Clearpass](https://www.arubanetworks.com/products/security/network-access-control/).
+
+Supported platforms (tested):
+
+- Aruba ClearPass 6.7.5
+
+
+You must first creat an API client from here: https://clearpass.server.com/guest/api_clients.php
+
+
+To use this device tracker in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+device_tracker:
+ - platform: cppm_tracker
+ host: clearpass.server.org
+ client_id: clearpassapi
+ api_key: 00000004qyO513hTdCfjIO2ZWWnmex8QZ5000000000
+```
+
+{% configuration %}
+host:
+ description: "The IP address or hostname of the ClearPass server, e.g., `clearpass.server.com`."
+ required: true
+ type: string
+client_id:
+ description: "The client ID from here: `https://clearpass.server.com/guest/api_clients.php`"
+ required: true
+ type: string
+api_key:
+ description: "Secret from here: `https://clearpass.server.com/guest/api_clients.php`"
+ required: true
+ type: string
+{% endconfiguration %}
+
+See the [device tracker component page](/components/device_tracker/) for instructions on how to configure the people to be tracked.
From 13bd8bc1eea643843aea8b39d0a38663a8bbfe3d Mon Sep 17 00:00:00 2001
From: Marvin Wichmann
Date: Mon, 11 Mar 2019 21:44:26 +0100
Subject: [PATCH 48/71] KNX: Update docs - added rate_limit and
target_temperature_state_address (#8785)
* KNX: Update docs - added rate_limit and target_temperature_state_address
* :pencil2: Tweak
---
source/_components/climate.knx.markdown | 30 ++++++++++++++++++++-----
source/_components/knx.markdown | 5 +++++
2 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/source/_components/climate.knx.markdown b/source/_components/climate.knx.markdown
index d121ed48283..b25d43f21d3 100644
--- a/source/_components/climate.knx.markdown
+++ b/source/_components/climate.knx.markdown
@@ -27,7 +27,7 @@ climate:
temperature_address: '5/1/1'
setpoint_shift_address: '5/1/2'
setpoint_shift_state_address: '5/1/3'
- target_temperature_address: '5/1/4'
+ target_temperature_state_address: '5/1/4'
operation_mode_address: '5/1/5'
```
@@ -41,16 +41,32 @@ climate:
temperature_address: '5/1/1'
setpoint_shift_address: '5/1/2'
setpoint_shift_state_address: '5/1/3'
- target_temperature_address: '5/1/4'
+ target_temperature_state_address: '5/1/4'
operation_mode_frost_protection_address: '5/1/5'
operation_mode_night_address: '5/1/6'
operation_mode_comfort_address: '5/1/7'
```
-`operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` are not necessary if `operation_mode_address` is specified.
-
If your device doesn't support setpoint_shift calculations (i.e. if you don't provide a `setpoint_shift_address` value) please set the `min_temp` and `max_temp`
-attributes of the climate device to avoid issues with increasing the temperature in the frontend.
+attributes of the climate device to avoid issues with increasing the temperature in the frontend. Please do also make sure to add the `target_temperature_address`
+to the config in this case.:
+
+```yaml
+# Example configuration.yaml entry
+climate:
+ - platform: knx
+ name: HASS-Kitchen.Temperature
+ temperature_address: '5/1/2'
+ target_temperature_address: '5/1/4'
+ target_temperature_state_address: '5/1/1'
+ operation_mode_frost_protection_address: '5/1/5'
+ operation_mode_night_address: '5/1/6'
+ operation_mode_comfort_address: '5/1/7'
+ min_temp: 7.0
+ max_temp: 32.0
+```
+
+`operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` are not necessary if `operation_mode_address` is specified.
The following values are valid for the `operation_modes` attribute:
@@ -72,6 +88,10 @@ temperature_address:
required: true
type: string
target_temperature_address:
+ description: KNX group address for setting target temperature.
+ required: false
+ type: string
+target_temperature_state_address:
description: KNX group address for reading current target temperature from KNX bus.
required: true
type: string
diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown
index 9b5f0038255..037e506688e 100644
--- a/source/_components/knx.markdown
+++ b/source/_components/knx.markdown
@@ -52,6 +52,11 @@ config_file:
description: The path for XKNX configuration file.
required: false
type: string
+rate_limit:
+ description: Defines the maximum number of telegrams to be sent to the bus per second (range 1-100).
+ required: false
+ default: 20
+ type: integer
{% endconfiguration %}
If the auto detection of the KNX/IP device does not work you can specify ip/port of the tunneling device:
From 1b071fee036af3be713c67d88a749dedc01c470d Mon Sep 17 00:00:00 2001
From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com>
Date: Mon, 11 Mar 2019 15:45:18 -0500
Subject: [PATCH 49/71] Add SmartThings climate support for Air Conditioners
(#8878)
* Add SmartThings climate support for Samsung Air Conditioners
* Added missing line break
---
source/_components/smartthings.markdown | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/source/_components/smartthings.markdown b/source/_components/smartthings.markdown
index 6f1bdc9fd98..c48fce6e8d6 100644
--- a/source/_components/smartthings.markdown
+++ b/source/_components/smartthings.markdown
@@ -169,7 +169,26 @@ The SmartThings Binary Sensor platform lets you view devices that have binary se
### {% linkable_title Climate %}
-The SmartThings Climate platform lets you control devices that have thermostat-related capabilities. For a SmartThings device to be represented by the climate platform, it must have all the capabilities from either "set a" _or_ "set b":
+The SmartThings Climate platform lets you control devices that have air conditioner or thermostat related capabilities.
+
+#### {% linkable_title Air Conditioners %}
+
+For a SmartThings Air Conditioner to be represented by the climate platform, it must have all of the following required capabilities:
+
+| Capability |Climate Features
+|-------------------------------------|--------------------------------------------|
+| [`airConditionerMode`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Air-Conditioner-Mode) (required) | `operation mode`
+| [`fanSpeed`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Fan-Speed) (required) | `fan mode`
+| [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) (required) | `on/off`
+| [`temperatureMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Temperature-Measurement) (required) | `temperature`
+| [`thermostatCoolingSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Cooling-Setpoint) (required) | `target temp`
+| [`demandResponseLoadControl`](https://docs.smartthings.com/en/latest/capabilities-reference.html#demand-response-load-control) | `drlc_status_duration` (state attribute), `drlc_status_level` (state attribute), `drlc_status_override` (state attribute), `drlc_status_start` (state attribute)
+| [`powerConsumptionReport`](https://docs.smartthings.com/en/latest/capabilities-reference.html#power-consumption-report) | `power_consumption_end` (state attribute), `power_consumption_energy` (state attribute), `power_consumption_power` (state attribute), `power_consumption_start` (state attribute)
+
+
+#### {% linkable_title Thermostats %}
+
+For a SmartThings thermostat to be represented by the climate platform, it must have all the capabilities from either "set a" _or_ "set b":
| Capability |Climate Features
|-------------------------------------|--------------------------------------------|
From 9a505f204989d2bb7a6ac8ad2ba93eb0ad52c682 Mon Sep 17 00:00:00 2001
From: Jose Motta Lopes
Date: Mon, 11 Mar 2019 18:35:22 -0300
Subject: [PATCH 50/71] Create sensor.tof (#8672)
* Create sensor.tof
* Review documentation
* Fix i2c address typo
* update ha release from launch
* Add i2c_bus to configuration
* Update source/_components/sensor.tof.markdown
Co-Authored-By: josemotta
* Update source/_components/sensor.tof.markdown
Co-Authored-By: josemotta
* Update sensor.tof.markdown
* Add VL53L1X docs and schematic
* Update sensor.tof.markdown
* Update sensor.tof.markdown
* Update sensor.tof.markdown
* Update sensor.tof.markdown
* Update sensor.tof.markdown
* :pencil2: Tweaks
* Moves page from platform page to component page
Signed-off-by: Franck Nijhof
---
source/_components/tof.markdown | 119 ++++++++++++++++++++++++++++++++
1 file changed, 119 insertions(+)
create mode 100644 source/_components/tof.markdown
diff --git a/source/_components/tof.markdown b/source/_components/tof.markdown
new file mode 100644
index 00000000000..bf5c68a3674
--- /dev/null
+++ b/source/_components/tof.markdown
@@ -0,0 +1,119 @@
+---
+layout: page
+title: "Time of Flight sensor using VL53L1X"
+description: "Instructions on how to integrate a VL53L1X ToF sensor into Home Assistant."
+date: 2019-02-21 00:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: raspberry-pi.png
+ha_category:
+ - DIY
+ - Sensor
+ha_release: "0.90"
+ha_iot_class: Local Polling
+---
+
+The Time of Flight sensor uses an invisible laser to measure distance with millimeter resolution.
+
+Tested devices:
+
+- [Raspberry Pi](https://www.raspberrypi.org/)
+- [VL53L1X](https://www.st.com/en/imaging-and-photonics-solutions/vl53l1x.html)
+- [Schematic](https://cdn.sparkfun.com/assets/3/5/c/e/2/Qwiic_Distance_Sensor_-_VL53L1X.pdf)
+
+## {% linkable_title Configuration %}
+
+To use the VL53L1X sensor in your installation, add to your `configuration.yaml`:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: tof
+```
+
+{% configuration %}
+name:
+ description: Name of the sensor.
+ required: false
+ default: VL53L1X
+ type: string
+i2c_bus:
+ description: I2c bus used.
+ required: false
+ default: 1, for Raspberry Pi 2 and 3.
+ type: integer
+i2c_address:
+ description: I2c address of the sensor.
+ required: false
+ default: "0x29"
+ type: string
+xshut:
+ description: GPIO port used to reset device.
+ required: false
+ default: 16
+ type: integer
+{% endconfiguration %}
+
+## {% linkable_title Example %}
+
+The distance is measured in millimeters, according to the VL53L1X specifications.
+
+```yaml
+# Example of customized configuration.yaml entry
+sensor:
+ - platform: tof
+ name: ToF sensor
+ i2c_address: 0x29
+ xshut: 16
+```
+Several devices may be attached and a GPIO port from RPI is used for reset. XSHUT signal is generated pulsing LOW at initialization and after that, it is kept HIGH all time. This version uses VL53L1X long-range mode that may reach up to 4 meters.
+
+## {% linkable_title Directions for installing i2c on Raspberry Pi %}
+
+Enable the I2c interface with the Raspberry Pi configuration utility:
+
+```bash
+# pi user environment: Enable i2c interface
+$ sudo raspi-config
+```
+
+Select `Interfacing options->I2C` choose `` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot.
+
+Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group:
+
+```bash
+# pi user environment: Install i2c dependencies and utilities
+$ sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev
+
+# pi user environment: Add homeassistant user to the i2c group
+$ sudo addgroup homeassistant i2c
+
+# pi user environment: Reboot Raspberry Pi to apply changes
+$ sudo reboot
+```
+
+### {% linkable_title Check the i2c address of the sensor %}
+
+After installing `i2c-tools`, a new utility is available to scan the addresses of the connected sensors:
+
+```bash
+$ /usr/sbin/i2cdetect -y 1
+```
+
+It will output a table like this:
+
+```text
+ 0 1 2 3 4 5 6 7 8 9 a b c d e f
+00: -- -- -- -- -- -- -- -- -- -- -- -- --
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+20: -- -- -- 23 -- -- -- -- -- 29 -- -- -- -- -- --
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+70: -- -- -- -- -- -- -- --
+```
+
+So you can see the sensor address what you are looking for is **0x29** (there are more i2c sensors in this Raspberry Pi).
From 72ce74d9fc80001a2e4d05ee59e717ac5953acb2 Mon Sep 17 00:00:00 2001
From: Ian Richardson
Date: Tue, 12 Mar 2019 14:42:12 -0500
Subject: [PATCH 51/71] Glance show icon (#8892)
* Update default tap_action
* Add `show_icon` to glance-card
---
source/_lovelace/glance.markdown | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/source/_lovelace/glance.markdown b/source/_lovelace/glance.markdown
index 9bb335b1fca..c4656aed604 100644
--- a/source/_lovelace/glance.markdown
+++ b/source/_lovelace/glance.markdown
@@ -32,7 +32,12 @@ title:
type: string
show_name:
required: false
- description: Show entity names.
+ description: Show entity name.
+ type: boolean
+ default: "true"
+show_icon:
+ required: false
+ description: Show entity icon.
type: boolean
default: "true"
show_state:
From c8d9f585977964431c823d25ede62547bcd9f875 Mon Sep 17 00:00:00 2001
From: Jason Hunter
Date: Tue, 12 Mar 2019 15:58:09 -0400
Subject: [PATCH 52/71] Add documentation for stream component (#8838)
* add documentation for stream component
* update docs per changes to PR
* remove keepalive for now
* Apply suggestions from code review
Co-Authored-By: hunterjm
* Update configuration sample
* Remove whitespaces
---
source/_components/camera.markdown | 22 +++++++++++++++++++++-
source/_components/stream.markdown | 27 +++++++++++++++++++++++++++
2 files changed, 48 insertions(+), 1 deletion(-)
create mode 100644 source/_components/stream.markdown
diff --git a/source/_components/camera.markdown b/source/_components/camera.markdown
index 0231195e04c..4a91357d16f 100644
--- a/source/_components/camera.markdown
+++ b/source/_components/camera.markdown
@@ -15,7 +15,7 @@ The camera component allows you to use IP cameras with Home Assistant. With a li
Once loaded, the `camera` platform will expose services that can be called to perform various actions.
-Available services: `turn_on`, `turn_off`, `enable_motion_detection`, `disable_motion_detection`, and `snapshot`.
+Available services: `turn_on`, `turn_off`, `enable_motion_detection`, `disable_motion_detection`, `snapshot`, and `play_stream`.
#### {% linkable_title Service `turn_on` %}
@@ -72,6 +72,26 @@ action:
```
{% endraw %}
+#### {% linkable_title Service `play_stream` %}
+
+Play a live stream from a camera to selected media player(s). Requires `stream` component to be set up.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | no | Name of entity to fetch stream from, e.g., `camera.living_room_camera`. |
+| `media_player` | no | Name of media player to play stream on, e.g., `media_player.living_room_tv`. |
+| `format` | yes | Stream format supported by `stream` component and selected `media_player`. Default: `hls` |
+
+For example, the following action in an automation would send an `hls` live stream to your chromecast.
+
+```yaml
+action:
+ service: camera.play_stream
+ data:
+ entity_id: camera.yourcamera
+ media_player: media_player.chromecast
+```
+
### {% linkable_title Test if it works %}
A simple way to test if you have set up your `camera` platform correctly, is to use **Services** from the **Developer Tools**. Choose your service from the dropdown menu **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**.
diff --git a/source/_components/stream.markdown b/source/_components/stream.markdown
new file mode 100644
index 00000000000..cd277349a98
--- /dev/null
+++ b/source/_components/stream.markdown
@@ -0,0 +1,27 @@
+---
+layout: page
+title: "Stream"
+description: "Instructions on how to integrate live streams within Home Assistant."
+date: 2019-02-06 13:40
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: home-assistant.png
+ha_category:
+ - Other
+ha_release: "0.90"
+ha_iot_class: Local Push
+ha_qa_scale: internal
+---
+
+The `stream` component provides a way to proxy live streams through Home Assistant. The component currently only supports the HLS format.
+
+## {% linkable_title Configuration %}
+
+To enable the random binary sensor, add the following lines to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+stream:
+```
From 0a8e58cbe0b5c465501cbbd07a4642bbe2b82a8c Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Tue, 12 Mar 2019 21:00:44 +0100
Subject: [PATCH 53/71] Fix copy-&-paste error
---
source/_components/stream.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/stream.markdown b/source/_components/stream.markdown
index cd277349a98..56453247b30 100644
--- a/source/_components/stream.markdown
+++ b/source/_components/stream.markdown
@@ -19,7 +19,7 @@ The `stream` component provides a way to proxy live streams through Home Assista
## {% linkable_title Configuration %}
-To enable the random binary sensor, add the following lines to your `configuration.yaml` file:
+To enable this component, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
From fd897598bc9322df5b3f3373e3acf075ce9d6737 Mon Sep 17 00:00:00 2001
From: Markus Jankowski
Date: Wed, 13 Mar 2019 12:14:28 +0100
Subject: [PATCH 54/71] Add weather sensors to Homematic IP (#8896)
* Add weather to Homematic IP
* fix after review
* Readed line 20
---
source/_components/homematicip_cloud.markdown | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/source/_components/homematicip_cloud.markdown b/source/_components/homematicip_cloud.markdown
index 7da8e4f6fab..b49a30b44f4 100644
--- a/source/_components/homematicip_cloud.markdown
+++ b/source/_components/homematicip_cloud.markdown
@@ -17,6 +17,7 @@ ha_category:
- Light
- Sensor
- Switch
+ - Weather
ha_iot_class: "Cloud Push"
ha_release: 0.66
featured: false
@@ -41,6 +42,7 @@ There is currently support for the following device types within Home Assistant:
* Light
* Sensor
* Switch
+* Weather
## {% linkable_title Setup the component via the frontend %}
@@ -133,4 +135,9 @@ authtoken:
* Blind actuator for brand switches (*HmIP-BBL*)
* Shutter actuator brand-mount (*HmIP-BROLL*)
* Shutter actuator flush-mount (*HmIP-FROLL*)
+
+* homematicip_cloud.weather
+ * Weather Sensor – basic (*HmIP-SWO-B*)
+ * Weather Sensor – plus (*HmIP-SWO-PL*)
+ * Weather Sensor – pro (*HmIP-SWO-PR*)
From 389354c292f2cdb4d6a281099fbae759205d2bbc Mon Sep 17 00:00:00 2001
From: Jeff Irion
Date: Wed, 13 Mar 2019 04:38:56 -0700
Subject: [PATCH 55/71] Document 'firetv' -> 'androidtv' renaming and added
Android TV functionality (#8913)
* Document Android TV functionality in Fire TV component
* Remove extra ')'
* More documentation updates for Android TV support
* Remove "stick"
* Clarify that 'get_sources' only applies to Fire TV devices
* Generalize to Android TV and Fire Tv
* More Android TV / Fire TV generalization
* Generalize the host and port descriptions to Android TV / Fire TV
* Rename integration from 'firetv' to 'androidtv'
* Add Android TV + Fire TV image
* Rename 'media_player.firetv.markdown' -> 'media_player.androidtv.markdown' and add redirect
* Rename 'firetv.adb_command' -> 'androidtv.adb_command'
* :pencil2: Tweaks
* :pencil2: Tweak
* :hammer: Changed to component doc instead of platform
---
source/_components/androidtv.markdown | 226 ++++++++++++++++++
.../_components/media_player.firetv.markdown | 178 --------------
source/images/supported_brands/androidtv.png | Bin 0 -> 20705 bytes
3 files changed, 226 insertions(+), 178 deletions(-)
create mode 100644 source/_components/androidtv.markdown
delete mode 100644 source/_components/media_player.firetv.markdown
create mode 100644 source/images/supported_brands/androidtv.png
diff --git a/source/_components/androidtv.markdown b/source/_components/androidtv.markdown
new file mode 100644
index 00000000000..691948a810b
--- /dev/null
+++ b/source/_components/androidtv.markdown
@@ -0,0 +1,226 @@
+---
+layout: page
+title: "Android TV"
+description: "Instructions on how to integrate Android TV and Fire TV devices into Home Assistant."
+date: 2015-10-23 18:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: androidtv.png
+ha_category: Media Player
+ha_release: 0.7.6
+ha_iot_class: Local Polling
+redirect_from:
+ - /components/media_player.firetv/
+---
+
+The `androidtv` platform allows you to control an Android TV device or [Amazon Fire TV](https://www.amazon.com/b/?node=8521791011) device.
+
+## {% linkable_title Device preparation %}
+
+To set up your device, you will need to find its IP address and enable ADB debugging. For Android TV devices, please consult the documentation for your device.
+
+For Fire TV devices, the instructions are as follows:
+
+- Turn on ADB Debugging on your Amazon Fire TV:
+ - From the main (Launcher) screen, select Settings.
+ - Select System > Developer Options.
+ - Select ADB Debugging.
+- Find Amazon Fire TV device IP address:
+ - From the main (Launcher) screen, select Settings.
+ - Select System > About > Network.
+
+## {% linkable_title Configuration %}
+
+```yaml
+# Example configuration.yaml entry
+media_player:
+ # Use the Python ADB implementation without authentication
+ - platform: androidtv
+ name: Android TV 1
+ host: 192.168.0.111
+
+ # Use the Python ADB implementation with authentication
+ - platform: androidtv
+ name: Android TV 2
+ host: 192.168.0.222
+ adbkey: "/config/android/adbkey"
+
+ # Use an ADB server for sending ADB commands
+ - platform: androidtv
+ name: Android TV 3
+ host: 192.168.0.123
+ adb_server_ip: 127.0.0.1
+```
+
+{% configuration %}
+host:
+ description: The IP address for your Android TV / Fire TV device.
+ required: true
+ type: string
+name:
+ description: The friendly name of the device.
+ required: false
+ default: Android TV
+ type: string
+port:
+ description: The port for your Android TV / Fire TV device.
+ required: false
+ default: 5555
+ type: integer
+adbkey:
+ description: The path to your `adbkey` file. Note that the file `adbkey.pub` must be in the same directory.
+ required: false
+ type: string
+adb_server_ip:
+ description: The IP address of the ADB server.
+ required: false
+ type: string
+adb_server_port:
+ description: The port for the ADB server.
+ required: false
+ default: 5037
+ type: port
+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.
+ required: false
+ default: true
+ type: boolean
+apps:
+ description: A dictionary where the keys are app IDs and the values are app names that will be displayed in the UI; see example below.
+ required: false
+ default: {}
+ type: dict
+device_class:
+ description: "The type of device: `auto` (detect whether it is an Android TV or Fire TV device), `androidtv`, or `firetv`."
+ required: false
+ default: auto
+ type: string
+{% endconfiguration %}
+
+### {% linkable_title Full Configuration %}
+
+```yaml
+# Example configuration.yaml entry
+media_player:
+ # Use an ADB server to setup an Android TV device
+ # and provide an app name
+ - platform: androidtv
+ name: Android TV
+ device_class: androidtv
+ host: 192.168.0.222
+ adb_server_ip: 127.0.0.1
+ apps:
+ com.amazon.tv.launcher: "Fire TV"
+
+ # Use the Python ADB implementation with authentication
+ # to setup a Fire TV device and don't get the running apps
+ - platform: androidtv
+ name: Fire TV
+ device_class: firetv
+ host: 192.168.0.222
+ adbkey: "/config/android/adbkey"
+ get_sources: false
+```
+
+## {% linkable_title ADB Setup %}
+
+This component works by sending ADB commands to your Android TV / Fire TV device. There are two ways to accomplish this:
+
+### {% linkable_title 1. ADB Server %}
+
+You can use an ADB server to connect to your Android TV and Fire TV devices.
+
+For Hass.io users, you can install the [Android Debug Bridge](https://github.com/hassio-addons/addon-adb/blob/master/README.md) addon. Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android TV / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value.
+
+### {% linkable_title 2. Python ADB Implementation %}
+
+The second option is to connect to your device using the `adb` Python package.
+
+If your device requires ADB authentication, you will need to follow the instructions in the [ADB Authentication](#adb-authentication) section below. Once you have an authenticated key, this approach does not require any additional setup or addons. However, users with newer devices may find that the ADB connection is unstable. For a Fire TV device, you can try setting the `get_sources` configuration option to `false`. If the problem cannot be resolved, you should use the ADB server option.
+
+### {% linkable_title ADB Authentication %}
+
+If you get a "Device authentication required, no keys available" error when trying to set up your Android TV or Fire TV, then you'll need to create an adbkey and add its path to your configuration. Follow the instructions on this page to connect to your device from your computer: [Connecting to Fire TV Through adb](https://developer.amazon.com/zh/docs/fire-tv/connecting-adb-to-device.html).
+
+
+In the dialog appearing on your Android TV / Fire TV, you must check the box that says "always allow connections from this device." ADB authentication in Home Assistant will only work using a trusted key.
+
+
+Once you've successfully connected to your Android TV / Fire TV via the command `adb connect `, the files `adbkey` and `adbkey.pub` will be created on your computer. The default locations for these files are (from [https://developer.android.com/studio/command-line/adb](https://developer.android.com/studio/command-line/adb)):
+
+- Linux and Mac: `$HOME/.android.`
+- Windows: `%userprofile%\.android.`
+
+Copy the `adbkey` and `adbkey.pub` files to your Home Assistant folder and add the path to the `adbkey` file to your configuration.
+
+#### {% linkable_title ADB Troubleshooting %}
+
+If you receive the error message `Issue: Error while setting up platform androidtv` in your log when trying to set up an Android TV or Fire TV device with an ADB key, then there is probably an issue with your ADB key. Here are some possible causes.
+
+1. ADB is not enabled on your device.
+
+2. Your key is not pre-authenticated. Before using the `adbkey` in Home Assistant, you _**must**_ connect to your device using the ADB binary and tell it to always allow connections from this computer. For more information, see the section [ADB Authentication](#adb-authentication) above.
+
+3. Home Assistant does not have the appropriate permissions for the `adbkey` file and so it is not able to use it. Once you fix the permissions, the component should work.
+
+4. You are already connected to the Android TV / Fire TV via ADB from another device. Only one device can be connected, so disconnect the other device, restart the Android TV / Fire TV (for good measure), and then restart Home Assistant.
+
+## {% linkable_title Services %}
+
+### {% linkable_title `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:
+
+```yaml
+start_netflix:
+ sequence:
+ - service: media_player.select_source
+ data:
+ entity_id: media_player.fire_tv_living_room
+ source: 'com.netflix.ninja'
+
+stop_netflix:
+ sequence:
+ - service: media_player.select_source
+ data:
+ entity_id: media_player.fire_tv_living_room
+ source: '!com.netflix.ninja'
+```
+
+### {% linkable_title `androidtv.adb_command` %}
+
+The service `androidtv.adb_command` allows you to send either keys or ADB shell commands to your Android TV / Fire TV device.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | no | Name(s) of Android TV / Fire TV entities.
+| `command` | no | Either a key command or an ADB shell command.
+
+In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this:
+
+```yaml
+action:
+ service: androidtv.adb_command
+ data:
+ entity_id: media_player.androidtv_tv_living_room
+ command: "HOME"
+```
+
+Available key commands include:
+
+- `POWER`
+- `SLEEP`
+- `HOME`
+- `UP`
+- `DOWN`
+- `LEFT`
+- `RIGHT`
+- `CENTER`
+- `BACK`
+- `MENU`
+
+The full list of key commands can be found [here](https://github.com/JeffLIrion/python-androidtv/blob/e1c07176efc9216cdcff8245c920224c0234ea56/androidtv/constants.py#L115-L155).
+
+You can also use the command `GET_PROPERTIES` to retrieve the properties used by Home Assistant to update the device's state. These will be logged at the INFO level and can be used to help improve state detection in the backend [androidtv](https://github.com/JeffLIrion/python-androidtv) package.
diff --git a/source/_components/media_player.firetv.markdown b/source/_components/media_player.firetv.markdown
deleted file mode 100644
index 8be1bdb2fd2..00000000000
--- a/source/_components/media_player.firetv.markdown
+++ /dev/null
@@ -1,178 +0,0 @@
----
-layout: page
-title: "Fire TV"
-description: "Instructions on how to integrate Fire-TV into Home Assistant."
-date: 2015-10-23 18:00
-sidebar: true
-comments: false
-sharing: true
-footer: true
-logo: firetv.png
-ha_category: Media Player
-ha_release: 0.7.6
-ha_iot_class: "Local Polling"
----
-
-
-The `firetv` platform allows you to control an [Amazon Fire TV/stick](https://www.amazon.com/b/?node=8521791011).
-
-Steps to configure your Amazon Fire TV stick with Home Assistant:
-
-- Turn on ADB Debugging on your Amazon Fire TV:
- - From the main (Launcher) screen, select Settings.
- - Select System > Developer Options.
- - Select ADB Debugging.
-- Find Amazon Fire TV device IP:
- - From the main (Launcher) screen, select Settings.
- - Select System > About > Network.
-
-
-## {% linkable_title Configuration %}
-
-```yaml
-# Example configuration.yaml entry
-media_player:
- # Use the Python ADB implementation without authentication
- - platform: firetv
- name: Fire TV 1
- host: 192.168.0.111
-
- # Use the Python ADB implementation with authentication
- - platform: firetv
- name: Fire TV 2
- host: 192.168.0.222
- adbkey: "/config/android/adbkey"
-
- # Use an ADB server for sending ADB commands
- - platform: firetv
- name: Fire TV 3
- host: 192.168.0.123
- adb_server_ip: 127.0.0.1
-```
-
-{% configuration %}
-host:
- description: The IP address for your Fire TV device.
- required: true
- type: string
-name:
- description: The friendly name of the device.
- required: false
- default: Amazon Fire TV
- type: string
-port:
- description: The port for your Fire TV device.
- required: false
- default: 5555
- type: integer
-adbkey:
- description: The path to your `adbkey` file. Note that the file `adbkey.pub` must be in the same directory.
- required: false
- type: string
-adb_server_ip:
- description: The IP address of the ADB server.
- required: false
- type: string
-adb_server_port:
- description: The port for the ADB server.
- required: false
- default: 5037
- type: port
-get_sources:
- description: Whether or not to retrieve the running apps as the list of sources.
- required: false
- default: true
- type: boolean
-apps:
- description: A dictionary where the keys are app IDs and the values are app names that will be displayed in the UI; see example below.
- required: false
- default: {}
- type: dict
-{% endconfiguration %}
-
-
-### {% linkable_title Full Configuration %}
-
-```yaml
-# Example configuration.yaml entry
-media_player:
- # Use the Python ADB implementation with authentication,
- # don't get the running apps, and provide an app name
- - platform: firetv
- name: Fire TV
- host: 192.168.0.222
- adbkey: "/config/android/adbkey"
- get_sources: false
- apps:
- com.amazon.tv.launcher: "Fire TV"
-```
-
-
-## {% linkable_title ADB Setup %}
-
-This component works by sending ADB commands to your Fire TV device. There are two ways to accomplish this:
-
-1. Using the `adb` Python package. If your device requires ADB authentication, you will need to follow the instructions in the "ADB Authentication (for Fire TV devices with recent software)" section below. Once you have an authenticated key, this approach does not require any additional setup or addons. However, users with newer devices may find that the ADB connection is unstable. If setting the `get_sources` configuration option to `false` does not help, they should use the next option.
-2. Using an ADB server. For Hass.io users, you can install the [Android Debug Bridge](https://github.com/hassio-addons/addon-adb/blob/v0.1.0/README.md) addon. With this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value.
-
-
-### {% linkable_title ADB Authentication (for Fire TV devices with recent software) %}
-
-If you get a "Device authentication required, no keys available" error when trying to set up Fire TV, then you'll need to create an adbkey and add its path to your configuration. Follow the instructions on this page to connect to your Fire TV from your computer: [Connecting to Fire TV Through adb](https://developer.amazon.com/zh/docs/fire-tv/connecting-adb-to-device.html).
-
-
- In the dialog appearing on your Fire TV, you must check the box that says "always allow connections from this device." ADB authentication in Home Assistant will only work using a trusted key.
-
-
-Once you've successfully connected to your Fire TV via the command `adb connect `, the files `adbkey` and `adbkey.pub` will be created on your computer. The default locations for these files are (from [https://developer.android.com/studio/command-line/adb](https://developer.android.com/studio/command-line/adb)):
-
-* Linux and Mac: `$HOME/.android.`
-* Windows: `%userprofile%\.android.`
-
-Copy the `adbkey` and `adbkey.pub` files to your Home Assistant folder and add the path to the `adbkey` file to your configuration.
-
-
-#### ADB Troubleshooting
-
-If you receive the error message `Issue: Error while setting up platform firetv` in your log when trying to set up a Fire TV device with an ADB key, then there is probably an issue with your ADB key. Here are some possible causes.
-
-1. ADB is not enabled on your Fire TV. To remedy this, enable ADB by following the instructions above.
-
-2. Your key is not pre-authenticated. Before using the `adbkey` in Home Assistant, you _**must**_ connect to your Fire TV device using the ADB binary and tell the Fire TV to always allow connections from this computer. For more information, see the section "ADB Authentication (for Fire TV devices with recent software)" above.
-
-3. Home Assistant does not have the appropriate permissions for the `adbkey` file and so it is not able to use it. Once you fix the permissions, the component should work.
-
-4. You are already connected to the Fire TV via ADB from another device. Only one device can be connected, so disconnect the other device, restart the Fire TV (for good measure), and then restart Home Assistant.
-
-
-## {% linkable_title Service %}
-
-The service `firetv.adb_command` allows you to send either keys or ADB shell commands to the Fire TV.
-
-| Service data attribute | Optional | Description |
-| ---------------------- | -------- | ----------- |
-| `entity_id` | no | Name(s) of Fire TV entities.
-| `command` | no | Either a key command or an ADB shell command.
-
-In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this:
-
-```yaml
-action:
- service: firetv.adb_command
- data:
- entity_id: media_player.fire_tv_living_room
- command: "HOME"
-```
-
-Available key commands are:
-
-* `POWER`
-* `SLEEP`
-* `HOME`
-* `UP`
-* `DOWN`
-* `LEFT`
-* `RIGHT`
-* `CENTER`
-* `BACK`
-* `MENU`
diff --git a/source/images/supported_brands/androidtv.png b/source/images/supported_brands/androidtv.png
new file mode 100644
index 0000000000000000000000000000000000000000..b98653066daedf1f4241191f6b9afd7b4a90dd47
GIT binary patch
literal 20705
zcmc$FQ+p;&+ir|Iw#_@4U}8+1Jh5#}Y}>YN+cqb*ZQI6|_cyGKRU3WuRv*<@UtM*o
z!sKK`5dgRV5D*XqaWP>95D-wvpZj-RZ7Q3k>BZx(maW8g(U`i8`f$vg{HMHLU9PD0-|M`
zYI+%LY%D~4EQpHws_*mnmPGw>J$y4Pc}m9i^CXpKdRA6i)^o=5R%aRkQ=sqv^VmtB
zefd}IK@)A`V=)|upvd>DPC4Bg424hBuo`d4Lsd!Mr6o-m$fj@7$Tl%BH_f{`RsL7w70Gs@p+j)8YCY@
zLBfuQfVG1q$wYh!Q@UW!ged?kzWMjZc;e6wgXFWxu;q3~w!$4BqJiu4LWfJ$pV&Gz
z$Ux-3xIVyA1AHQ-E3rO|eK$Ad-rd0=BQ(@!N*xy~k`8%R<#qCHhAS5-v#7jOCGn^+
zkByquPQzic3Y8iHlV8*~?6|*iKF7z#K3saA*IR79VR0rQwqf(jk1gTZrOlDbQhP(v
zDep*PZyenIsdZPfK5tAFWPEob%~RFHLyaC-5QnyZXVjClHy!Cvc;l
zVf7>^bPc|{FH_{(YvgXQ96FXZ^k~E8fG<$FsV^S9Z`1(kv|EI0rg;+6lfRTDB+gVv
zM}fLHQLnm5$<^xhPUlOy3A0i+S^V0p4u+=x0-y9Uf77^m6{>WDf`ZbiMStvv?;1cNtD~gk$o{`VL=}S+BCGta<543g
z7oem9;=kF&^(V(f;0Q$&6E_;fbGCMt6#IhV=&%OKTETB7HSxU#$AZPqoa(Vh9ZD2}
zXb8FrdiF2J#l?Y<1O^4&j*bSR!@vOHag97zCvhJ0e8S4oTxcNH0brp(7%6DWo^s=%
zv<Z>}>zGKlgOOi{m6dqp0ISyWSrc?z$_6qpeF$1uc@k!ZZ4`V7
zf6ODvr93#}IR$>*mfFYst9!-w!z(Nwov1dSl}GP*7J=c3LM&VE>(&FwlCR!ef^CDU
z+!<;?A9aK1Oy8a0YzGTj9RoR5t%E%GZw{N@aNMHoZseo(Q{R-3#kbl*Jd5%P_`Fiy
zCFkTBQuuR`SAqsnGJ*ObA9J0ze(%{*rmqWPinv>L&uIr`(3tG^ea)PZ`q$}Wo?y;+
z9g=eoA+jzv9|&X(pV7ryQD>2!Zhz|Fn~`7+r1C4QRbSw=GUE0>A-<#QuzOmI$+v&}
z?`0=)N1H+K^TX}gO)qW7R}o%CuD-tkM1;BwtB!>u3?1T-R@n$vgh-E$i!Pmvg!_5h
zc2bud3QtmxWoJ2FDTT;HIV0ze!3dC$B5*2|YAAAQCt|cJi5%bbIFS1<%~sqlyxR4~
zlZArv*`8wm?T4ede>Np}o0*-$y}pVl-rvK4Gaeot514p^#3r#vHs!Gg!aQZKdc22F
zHNWof#Hqe9$eOFU>nO7pASl&0?}XP`jgJrWG;BG?+&S7eH)lTdgK5^;FVQEHPM(TZWrzZfi6;zt=@pKm~ffoQCjLAmNr^KMfvW
zYvlJV_Ii<)7dJzuQ8v<{o!zQv+P3LxrkdGjl$)z)x(k_V8ao_NdL_6owSNv#)gA$v=m!DeYVW6%1=Uxh6>~r}OoNwX7_p&)XJ~T)E=cZ|{Z99|>
z9-OwW$3Ltzx#n3_So^usuBwS21jjYJrLYHrEt|TODzn3hN
zYQnS5qNYgTTEa!jBDw55E3K@VIhH`iXWsR&5YI5j8N49_#92jkHmFfZ^J)6xb=68n
z_sKv^^VjckCR=gSe+TnZ$IR3Uy@d*8FN1^R9`5eJI0~8?>10JECe1~~#Vv=2I1$TL
zn$HK(1l+@?2*I1N$Cb3Q66PA35)v9Z8X9Y4%M$QutE)w2W@g*IM_|v=7LqbDX5(W^
zO@{{uU5v4#PBSZWrQe(rzLMcjB|37d(CI0vFX{vVYYqVW>OSZUO0DS1Z2c+A@QsvB
zVp*|jU1t<1%@`*G_%(Tz$sM@oLd(fk0Py5l^!4Cca>EfInPC
z)~_aUNniLwtB#v4OA2wExmzfwYSs_b92Y
zwPm5ZIA5~L>~T1rdPk=bVLRyBc_Uy&XwtBXiHbr1nLot}NE%L}mDH6hQ;xcWc@mprnr&p{YV}_1Q$`{u!bT?uFE_&zvY_PSDX#n;)Z?nVKixP=
z1(u(gtq({iSblcdJbw}#AZzk0S664+0asYMMHyv%#7WBCkN6DBkFStwQf=!rk=>yn
z=qg+*WEECEM?DO8-cNtC`sD{P+0O1u|u-9F@O&e)DOg|ZEdd~Z;#i%wp#6$v$(S8c_=B5I>}7
zDIV@1T|_F&7vTQBz(JPkWuZ1);2`TnTv>&Q8JUz~W%Vkhsc*n)9WO5?^!`7&`M{{W
z;x9CzQNM}6!uFzV|8nkuaT_BZB{
zfv#Be-om|v4Ke-aTLMEB!jV6axXB1_dG}+3-c3)iXhJ3V_PDCGe5VIbF-wyd5!i!;
z$V?y#E03$r=J&H0XBU`@$Gb^i&Li76{zgiX_l!?(iYC*`Udx3bN8mkn1p(-6)*BqW
zBqVt#5Y5_B0CDlr%hlCYP<3_nfH};Cv(l(Il(@@k55qJ)-kZ}?bp~D4`MjOLyAt4I
z9~g;m*9HZQz|@q}A3eU3wJT`mFSXRDJ{D@C^`fzeAVD!f95g6lz*;-Cnc(IgyxXBt
zg;1@whJOj@POFVr3h@&mcJy0J2MqI9@X1;4c9M1wc78?4hm3W4Bly^bZ5kvG%%%R)qsS6C1!QKNvN>x_v_e3xXm#LqBnk?^B%IOT7We+{E((v$
z(%Wu4nT}6X8l-w!g=P_JaLr#ZZ$}`4dZW>7egJ$ClZlyG*Y_OHH;_JD9JDbci-Lk8
zMvHx3|Gn;#Pu*jrmKaLu>+sOqt0Eo@_T`pX?@v0^ENjDS>6!YUiT^xH8wP5M&$PqP
zo$=R3er8@AkgNx{=2hg*5h}j&7lJa{V#Y1~2N*zK!M@V}Tbx+eGnIdCV~T_9DXS>y
zK{LmlhJ55i|rqgITi&fwQ|(~C-0uorZP%Wf2zvUITcU)h8eLH
z#8%O+5WKJnRDPdoPHXs$vpk{=rR6j6W4p*N`t_^z-(vsue@Y$F>AHq)eTz*^oiI6l
z03aW2|NZ;-V~}U}O8nNcY95F3KM@gj&^*Uh*xP?|a|#WX9;huSS*5{{_u)YD5b|grYvimYJvU_x;}t9UKQeCpfVE)
zypAoOX-C0E|LHuvs_(y^#JN@_om$CN3x?0D7?(dutLU#X5T(`GCMLtVku0wTHT@9I
zHu@SuuHD@t;6OIMB3^2~ITlvFcK4^-o3XMKC`rIS=mgz3RT*CR$F2=J=T5Rm~lx-zJz!e+hmNeh#k
zGJiLjG@W?4w()=cE^!$hP?&o!-HPg*`-)zY8}QFY<9_k|$z(=bZXPT&rT408)>yz)
z%7+=merZL$yEN}V^-OwBsFCbm5j1>QL%Ljl0!qtQU&qQ%i$iIA@N}>oA?FQt>;Pt+
zBn&;72_4s->n%MUoSs9i`R&j%TJKvK8eQdKnz+}u%&%8NCJDNC*RS?yVK7mqR1w!f^D}szK(+?jcpIg1y%bid;=ZGXdTGGCPeA@3@=K
z0O6!0?4#skUNNjw?w&5H?z+`+%;BOkGrQXy<`Utr8FIE?E$zlavd&JHmw$BDkyX-G
z@t?rnbT{5X=Eu6s91Jav@%k%@Ghu#5^<2ze+e0dhSj&HlTBpyEcq0nP5RKZuL+Onr-}^eI*pPz(h$@C_tl8i
zkWMCR;FgVFCT2OK!&~tCqcxAhUHw0Ylde5)m!gg2!Q*&5e}%(EMcTY=E3Y(dc2ZaI
z9E%AE)YhG=3=scO25M?o*X8Ojt0abBzckPY2*$%y`AIP(bjl*%mR(TZXQ=MVlUxp2
z%Gd2;xjtaL^FcuZ%FXeS*t|7o{aB*vmEAOTqY;#}ld!QJ73RH#o+fd15VBg
zYrk@DA2XA&E2tikpwV>(3H%+J>jeEcQOhER4T+It?T+;7cWWpwi|e
zL#xvqI17F^rZgifb2E^1j^*4_58h-ITa)zM`8M0X@5UdGYrLzhGrCH)owsQkm>*9j
zsLH&;togVR7v`2`YJ)C6sP#LpesgG2vj5sHtV)o4B+N`WN5t7q%qY%=rFpLO4oQyb
zfnfefuY#6rU?*b03I06%f{**fj=yI6+&o|eJEK}5L`#|a&NRNGlXI?V;BE>BPVz(3
zXuHCnC@Ped=X)?3NfLC~{W3DsC0<|9a;&p6P1VQcii=(q%dIjWp;v+R|Ob`i>9&
zrz5?kkS)Dtz+N_rTW7sc8tiOHO=0){OtrpfHKdbTts+RI(XQRme7Y*?I5d)1h`TX$
z+AA@t=_r>-v6lo+!_^rvF+P>^GxWFedq};JfS%opD3jPKJ
zIlSfJBQ${B$JI7tuz+q93Fn99IYFe{wPzPNsH-t%l$&U;c{_fNwNLY&JnvNVK3-|B
z$5c%(Ezn!SIj09)L6npNR%$A5O`wGUX$Wx)luL9x7z)4ZB0hfRE;ifbAd7h^t=WAm
z+?NG@`uv^gdd!epY_^IC3qpMia~3MvJ6IJLKH1cX<#31Dw%
zOn6B+dOc5(9}ZKt#EGKY-=^;qLqkK}F8^6BZsdy1E6H4F_6oFnK4bGXk)-N65Nlp>
zbuxEb$5GZZ`8woir*H>`$(Fi#M5{Gm&)_;dUPR>yrrs}#=Q;LRyZk+5F|iEf*pVb=
zDjnXVdJAuI{oc3IbcnCf8xXF4bK
zW%sjK1jvjrHhyEi|z;r+VfZY
zTsB3`op_)f`enKKcBN}*xNlCjIf2xA<&{N$eS40Z5xbV($y`P9GFKn|n^2sji2kIo
zV{_HUMAGnqxeS5ilQalP#?lRe1yn%t1O>}C+gT1YX^|NKO_QiD9Zo!>#F0`kfgu+N
zhN;^TIK7@gJiG!wL0faT9GFUJD`0)TvBI!c96B}k$?4Z>$(`!miy)sz`6pVs(SHUS
zcyKMfMOTyQKFh;qfP<_KK*m8nM)Ufo-uZqTEQF%0=m7zQ?3=(N{WbhUYF8I|GLX>6
z$EYOzR%D$2ML8z%VFtQz{UF<|Eh}hMaVQCZK*w+oOrY&p!p_h#{e_kXu?Am(B9snmpNR8gldYPO0T}ovQsXBL3=mif6%~R
z-OSa-TSbTc?Ts1BSWrr{TZsuBFBT+0J5NT|MjoU=SwvQzRi?V(1dCeFhr)WEyyeDI
zzTzZ4Ig~I9I`pL>&l>^&TBRg)}}Q5g0*j^>*rP~uQ=!!7rF{(Swo5g##(N9`f6S!EItcRIB7bz
zyxb)F;V%FT^k;ojc;1s3;TP9Gz52}nl@!B$I12pXj5`O-0TkoX?@%s!XGpt$f(W>`
zG7=LL7xLvCr(aqNOD8Ax?(ZUs-R(K@%}QqnYm})I{ZEm@ioqAic(gq@si=+@&t(8(
z+7Z{0W!aZ;=(fT1+@>6yD+$3hS?EKs0xY@Nck)ht0mMOp#L}CB)hWKPg|#zL=tE|{
zzOC5}m9&37KESlR@f-OOe9__Q5?&P|tj&C0IDo<-)5x?>g+HWG%U~y0=zAn2M^p%6
z{Lk3v5dG-C1i{Yxou%t=bd@R%R!%lHXW5ikZi49B+pyQPv|xDyG%!eBDp6fb42;c7
zy}-^~PAv%;nXhH1?GN%;uvDb5N69x9qWbhC_Ce2;=)zj|RYLL?qQMFzL%Y@U_5`rf
z3tUqMtT{40)6QCWQ`6`pb|S6cC3?#{Tht5E0B=>QpswFu34-%U;`-;i@t?cOiVP7Z
z_9hP`3^kb>D9Tsgy|KJgnyq(lYq5FZ#i!kO<)c&q8_#u0Fyp~lMbPybEsdDW;8a24
z3{WYuH>SM8Do~9FO@mRuEltn&XGs8X+4BxH)?Xk`t}(1BsIc%aFD>o3?uG3}o5S(_
z?d>fq4?(0o3&Ga-wC?R70w;T3u83R7k6<)6clSFx6?ed27E#4%={n4tvgo!a0Nud+
z$m}3Vu}x<-6T{{f_Qc0jiLUo#RG^A?gIM8Z=R}1yRpZ!Q#6LaI3pJ%47hPaz?1dYu
z+cN7B&dTrrYzB1-sx6sQM7|g$NwHhqr8m{rCIpunD14QDo8M`027E@45)c%7vm_ik
zqSW7C1Q~@l{6#9QcXqAH=Kgeb_0;H_+`M(Eu|rloiaZsqkKFLB!AwCdKk*>
zF+amTbd>A)JbEc1syBp{WH#|Nes}vE4Y0=g
z6UQbc#6T!VUOOV)4qYyqJqkQMXuS3|LXKq2q3>nPA=@(z9=Lhfx0;cfQlmj(bS5fw
zJp5Bzw!7hR<}}b-5Y|!bsdaO*cuLIzU%=erYkTZ#9MThVJuLhm-uw9IzZo1XtRc%{
z2(YvCklAZ!a5zXy3!n-@;@jZiWM!>_Y=nH4R`?i8qNUnJlq3%>EKJnN$Z1@gi1@GI
zR(ILyJ^@=3x8>ub%MkDG2T(e@Z}5YGlhj$CF5@BMQ9V5eWuEX%ZsN&OEYr;gs!DgS
zNuFg)Vk)^YWDb*qxQ{KW1%oj6x!^2`;y-N%FqYD4q?@{
zlEV>XK@s#YH1kPP44c9e%%K|DQ(B#lf&Sjt+3_v{A4@gGa=a|h+JM#j!hv^j8zqaz
zg?7GWEn@?33?&3Gs#-g4$iNsLxB*GEf9_)1e@RW}^wg2O80tJC7xx*3-{(*vnwbjf
z=7^$I{i({_9BW@0u*?KKE_~`LN~+G&+`L?{WM2PEASbAF(fBmKz;G%;I`kyf^hXsE
zU?kx`$%zRMFSmo_=0sEoJAi|WaJF8(yFy!Ltz0FrD~{ErT4JbkUt^*Zo>P`Oa(FiF
zUh{0V&6f;)BL$D-7&Po`NXM}Ifm-xXk9W!+jN$?}v`Vs)AWjKr*Z&PRdbW@~Xj-S&
zOQ@sVK%fpJS#qP>&LDfI%k>->DL+R3hdj46=$a*#=ct>^RcWy2HXRZHowSZUL)G78HfY{>8%y
zeB~pK%v57kRGeq8QmflrwQw7?{8^X}S~(`OLt)~2_@hIL$OA}g_v8!e^t7dtq+8Uus(TPsfn?BPeC7CCbAQSp=V|!cj>+jeTQi7K|S0i4>HP+mB}Y>
zZ9G%|VV}^CE*QUVvpB)U>~ls65Qf4NY~7WYNsB*93aJpxbR{mQ+o!mGw7q#9@?H+4
z(ZwkyDKo1EtID(?vxMHG2fm34kC1rLWzPyc9y>Th<|0=|CqJXCQcnPGZ1>JFa|EDe
z+zrKc#+Dv>ovMa<=aw>iFL=UxAC6`?W~k|b{5t_-pHPn3{YZX4BAWK+e-ZSE)CRhI4cc;a=T@8Ycf3CD}LTG>qPIYM-4z_NKu$Z18ikjHtlpon~u%D7?FnvoNH`+aVGp*@8XYTTyPz>C8gvm-;7%%C1Ws
zG;R~s2}J2`+-qywtsfQOB7CT%?-SDQ&K6VShSqGB^6cd=A6qMLEn(vBr55q74hSHD
z9HvqGi1_hSi9$L=|At5RIN-OjMXM^w9t&9PFlUhIf0Vr}6wC3JJ4Yj{l11j&_Xy;4
z9;o?IyNVRdI;J6Sa^oj;N)&A+#>Y3a(2n0E2H+>ULaa|`J$d(t2^J|F3auVpDTj*f
zwzA!>!cFm@x+>f!Y)2&T2znaL5d84g|6F5}iI>9$y9}_jhQnhH?aELL?@~CYf$*sK
zBKrjIJJS2#wBiCY>9|5H#Kgu*njJCKL{tF0D_%q^^|pe~m(!B~yQzElEX`)={T?iZ
zm+3GUWitd46G1JM=)?WjEkE`B_MpNIr^XK5=RA6^i8W%+tWhV)X-nSDdJCL84e`9E
z73dyq7wQ_uZtq$4lTLVNzKdlM_`^MKA4y`iylvW{ColYM5OGk@a!=}s1?@He2<+bK
zoqd+uSX8!BC3#7b$=TBfhw$)l!qe->>;%IZ5mC{c>vMiJ0cLq>KkED~Fu|A8*lWD8
zwXh!ensfvB>QvJ`{7U3`2KfM_U^QGR7HeAJ<&WJo!`y60n(mNeT#3q?g{?2
zM_#r;Ty6TVX+I>qAH_s~lFxfbv@^n`B6`@Uf2#0}!bAe`fIP7&+0E18K@Z7Vd)XY@
zXrlrcUY2!D94xT(*g+h`YO&NApPgODEJ3hHNeQ+5D;k!a7Kl!xQ!%**2MEW)LVvLF
zcpi$%p!)ak-!+CPM>`9YRDWBn_{&||#BvY&d>=tyl%Y2U=peFnx;gAA73f2zUtkY|
zAB`zm^!*t-uyBQ-0>j(7knt4v=?CvT{E=$TK+iw)sw%eR*0?LKqv+;pH=YXG8G|JN
zCkwjb4R~_M!$_ciT(h^lbBOKl>-3KA*951896TDJT}X?HGsz{y9Nwi3z$}(2O=0Z<
zUPLTHKfqo;3BYU?GCra`lPwVx*4~6)d#NpJaM1Kn)KPa^-=^pnk7`Y)MtmjMn;sq@
zrb?{^@We{`i1nF$_r%9%wlmX6c(E}tfyG!}J6>v_H$okc>)pVMcJa1s7ZRtI!NPK$
z*bdseo5G^l=Uq%pT)0R|O6GLtjmN4AomKyHp(WFHbG@ng)uCi+)ir#d*l{frz*3VgACyxgnujjRzdo-hWEK(8#N;XEA?vh6LNo
zB0?KhrdQbV8gAf;CVt`0*HZD}p%@_Ur)*l?6)!J5%7UBz7o}^x^CY>T!J!azgP(Mg
zJTm2|Usn(gefd8c3Rju4K;M+%ImRNPRB(17^>+Ix8l{S?dr%o||v&M()Ybb2%-|Rm2C!*1#qon6$KBd#-g$6eFl3q)TIIPUU
zrnf2uq_B?8E+4<|zCcuszxszIM7M_kVtPR5dl%AFQW$8QptbcCIU|p|8C;55q?c&@ZDFc3mBR8K0Rwstq4K
zN=!F^!=V7z1Lb19-m{`Lo5Pq%38W
zlooK3B&?i^#De%D%5k8Ri>#WYyf;Q4DiyWULACG
z)@GUtoAC+!0QK;(G!4(|g3|*JN%>3QM$T@5%S7Ya$yuAWI0CTEI?Z|VE3;R73S5hq
zqx&_^2^t<)m*n7a5EX2(zuUc5Tq{0>7V#d%`VQ|i&k9sCOP7S0?sQSx1JWm2~B
zIu;i@3z#>S5-qU$&7?FmY9c0?e>=Di!>BT%cjGH7_K;61X2Cs^TS%TaoLF!!;jMQx
zE0;)BYvxC>ydD>_27ARV)HWh4IFV5FZ<|Ty>C#jbW9`tss}P8(Mt~>0f&Y<3c@v>n
z=qfhBQ(9!k3Q9eKKkd}?g
z*`ZlJYP=g7-}bMChg+G$r2-0^b0mzvl_AGrKG(co))R|Tf!A=?gqq)j$puC7KYW*Y
zsS%f{_S*$tliBRYx9!0fe_})}xhU=H`-?p2<%>AsQRAa3Wx)Nz~KdsUh
z=1ovTHt7#&@f?_Q?m}|1O)f2f
zw1sT%G-t>rxk@IA)Ymqw^}2Se4-HRR?uaITjn|mEzHgj9Lb-E8^9r$GVZ46@%CQ|7
zJ1p4{HXhEeJ}EyO^FyRuSezohb6vBMB)R$YR}~gmz3McwX5nmRi{iCmJcvG_o`qJ8
zaIdFRxpgXYo;9BeMxkaF`(=NbdL2wO9JzT?j14&$Bp
zLOJl9lB~rA(il*HD408OS)|0ODtNf2qNsuV#bN>biJL=9u#_$PjTc$~d#BY{Q$XL8
zBER?~_@?VwH_-SpCEn*cO^^(BJ$yl1*3(jR_x9XWC|RWQU5}wCt657xaWN7>F%iLU
z?!$Pz?Q_jPL0l2{vn``pS8SN^%DlQ1`IPO0~XrB;Sj~RQKFc=MU35w*J{l*KvJ;5eQ
zzTULg5EjlaY0H{6Xs$i~R~XM?@X{$OjhZ-q0N!lKOm}cMNT6KrPcrn%oOP;L>&S-O
znT#h!Q=rOHR|HG_z6^(rIH~@(kaaiVBX`c^2X3GZQ%kzWza+Pw>8c`LTiGX8M>N&{
zvJRKzOfHKSbY84eN<5nvw>0_j(yf2eFNTXA-{5!NFqa(g%-@}CUCTV5zsX*tt~=Tc
zxR$!p-!f^7Bt~FJUw+5;ODAicp;X6i!GdR@;YW%%<`?;P^&ok?VM?Yurcw;N|J3Y}
zF-LUMsSBp>@OmeL+D6mw`MOQv2=X2G$mR-G%Ac6g<*YSH$;*QT!;C>+=P@ycw)o4Q
zUY17S8#=aE4B4E_luMW2qv;azLdqOIa5s5xcpx432%x^
zli-#ENn=>g!_wdwT$0hx1xsLWJnw+?{qWM73tH-^qKmC}NGc-A7LUDeudk!scWaZ~
z6V0H5zP4pDB$%q3u=i}0U4VZ20$fVTHi2tNYB
zkGp@VrrN3MGlwzO{whm$)dqgPD>={WY7-_*`q=gT<&m}QnrT;uRLh`s$ai`EE{TP*
zvpus7-wZdN;M`(#vN!?78}x=V^`=Gth@T>R?f(~geizS!q{wQzfT;dpiyeL*at2CH
z4}u9q;B$>*57BWd&1vB39W!v8;^4!11l;Y`W9#v=`q+9GZiRamzwSVc=yFCfyVgX$
zTW*U1l7Uwz#3(=`x;p}K#Bee{r~a=SA7v`zPdv$pA61nY+7EpR1Xzg;0_5MceBH7E
zB~eBDFVh*QE|6J$Ow2@_BL0-gW|Ysfs|&ak
zK>+K|wH1;qEQTWvwjl&GN)@lR-|6NHvG<`ZAV=Hjwl^V6iZlZE#5Qic*7nbRnENBg
zZ;H+z{8|#3+=*~VHA;?3w$OlmmKAZxuX)77FZm7s*CD4vFFN?W9{nAw)fsoZw&6X2
zf99LxOh;c2@sgBE{CI&y^#X&m4o!%%*i!*4bu8{u4jC!3Ex{D1%3drV(NwXR+LT&wX#+V|j-FQ5Y
zNsk3X8WY}lI4gPax*(Y0hcjN}@w-EAM84O7KWe(f*AoOhtAaNw2ny5sv87Bp}i4#J!i#wSgxpYSfO_L#(J1bfuzCu(L#
zY^pop!rBdAfdh>D(4Q!+ezaI%yh@zCaBX!)I(WzCMG|tuN+#@*pwI$FT_V^RAuWW=Qgdn=%`te)NwPx;BkTk
z1-S@^wlxg7mspur9ME8&u%6c7{%Qa)zAyz;w{tm3(Z{-z}
zscv@ev)*c`JGav~eJ=*IyIZoWT4Rag)krC3Q)HA0I@Y9RKSW
zzg$db>`o$~BtjF1jBJ_R$O-+IPncN#^e$g_5XjkT!!KAj7no)26I4Wqu1zsf-zRy*
z=U3DpDr~93)3lghq}zWY?h(CQ5vvLf(Fi?qYSFp`?=~S9y_ziPgOKCIMustr!8{G4
z5e6M4KpbRXj;GZzkiO}oz<*5I;;*oxB2Tm)ezJ(&8Kfajl>Se8Ny=20P|=DuSA)3A
z@AH;#5~j5K&3C3(uUdrEcTlJuV)TeCE}bCf!f5%KF|^0GFZ&hw@_e5ZQYk^eN(T&l
zg>uXV)%ZHns~up@bM6RU8w!7e>`9$K$F^Q*X!{
zKad=Jj6bjAU}7EdTa%Gw+kU=>JW$e`yaew~-qu+{_|Fsj&nGk!jA(zX%bV4wHw&Vgm
z!M1bw^@FYhdnxpb1gE1Lk9N->ya?|a{nF%DvT5Cr#~W};*{z`3Q35jq9N~@Mzir)T
z_#p)KWI$%|gYKUEkMin_JifPz13owx+($g1uG|o>d>|A!4?K_*cs@QMH$uSeU(iEI
z_64h-uOTn{rNME30rhU;s!|C}Xnj3MUQbT!{+NFP=VcLD
zPEJLkfg+!XQ12cx0=|7zT`=H}4lf>96Gs`l4lNEd+(GchhGB&mtZ*p-6W~BCXL!BQ
z;!6}!7ghrIB$Kr82cKk{FbZxMnEaarcBlJQ7
ze#Yy56I$|$Qhf5@Kfl{@f6mGjVO+%&E+moX2v%fdR37(d|#}
zb6GP(K3*@~YvOps1Y}zVt_fo4d$&b*I}l89)!?NVlS3#&ctYIjv}N)9u)71Vrv$p~
ziIFK{2l1TAK79lkll<8FpNDht5qV=kMgvzGaBylouab2NCSR_a@@Yop->O@jM
zVSR4UXN^D^Ii+vEK|;`aASR43DKZSeB5Fq!L=ha~NMxi2dBWdXUnGy&@9Yz+Xg(18
z2WfEUTGjNiqVSr2b1Sfd{8G2UtkNcPi)9?ZD!${Ah(*&y?y1Sxqo;4j4#?DmSSB#w2my#(v4JAo(o0%HNwOkO71ef}d>
zlJ^I1;gXdzi0UwK%dvW@AF{xiCNg73sm@T+Yif^ES7
zet{%n%Y(-J*Y|y)FBo)#T>!%ys@fCvRHFj$vvU5G`9Z(0Q_o~T?^C7l$Qv9i?ifEc
zTMRU4E!>&y4MPr301Xmi2fQv9ARO=o6|Q~*@{f0t6vc1zLg`fdFcXR-)RybTTJV@`
zLG*e+;#t6Lcqbd0KNf?`bZy*dDl%4r$nUM{8KW_q-p}GOiK!;quDYv$F}DV6-FJ#d
zs{aghK+3-pfmHv>@r?`hNBZ|9pe0<;Htp`UF%dcXhf}(Ku^ok;sU#%o?(uUJ4e7(V
zT2nJt3j{2~uBL#lOH4rQ*Lzuw@ZA&muXh$xw&{LWTH+Y>#9_c^fy?`pyw=LefN8CIw|Jd?ZF-FaS8vNiD_Zr%~
zV=2FgaHtEGCk3I)8*!~q>7|SCZk3b32`12+FjzA}*~Pl(8BTA^GT_cxtqGhAasvjc
zkY&!%qu;&v8cyzf*KvX^Bl;C>l>p!i`qEmngZvkBAQ#bpb)Kl}
z@nm9vVq|v!XoH=KmT6uuDc1v;#~h8%d3V)40gc^iBG=`;l1IONuzx5tu%p5~8CGpC
z*Q-tQ`a>G{S5|_ULfZDm0yM(rPLZ&~B^`)I7zU*9PlUvi2W%qpHu$1{egZ^t#D}T(
znFk^M|AJ)Rvt0lO`XkS84no=Iw6TXr^4$|QB(l{5IBP{!YIZ|INjN3VOv3+-68?8z
zZt`k*X`6OYHY?N)>1(u7CgUTHg#vbZT8AL0>7D?V3LWnx)ALXIq{Y{SY0+%T=~Zk7
z6zGZ0PSh5iP)1Z
z&II}b+eQi)!(T<85Ra~5GaTAN!)B>b`_})$(;;$L8AsWB~n-?ngL`n#~|U!X_i;2)CA#|LC=ce1r2L5j)
zpB(hSKU#eM*F#1_dMArtmTffyyRHe)3cl}kar7Z4*rrsmv)j3mF~ZMhd_YqpB+Z0X
z7pu`)|FAygys4xO`7{wNTx2n(^`RoMUs_xRXrw@q?C%Km
z_#Q9;t2$#bC=o!jmJL8v$#;g=@9AWXId!{T3_7Ssdf<@pU?K`VS0-=INF4qRM@D|D``0Hbj5K3xC}{O6*lWcO;k#U|5sM)vH(ZS{
zAm-2A$mL0Az_x|3u)j
z%Cc#&>kZIx#MFJN_KHH3Jjlcoe`>`q!5>PDM528l8Kf|_S0@Xd2?rWTUUys>7XQa1
zU5Oad0rftaPJ9k#`&k@tyq~JOj!JQF6?UON;xd{H@1NaI81#K!b!!>r;eY4*hg_F`
z%X!4GfxIqg3H?pHP8>{Q=zdA*RK)`DgEPkvQ_*diQ&>X~8;iv?{7!fq3mX_Z^6?-;
zEF&F*l?R&bPvem$a+5-v62GnPL5(SN)4jyyGAJx7=E1#3PrJSqj&4SL=y6v9C?Rns
zq4N0z3xS>x4L5?Skv#GK{8B6q|B
zt}zK9USH+i(LyM78_Y>PNF#KG-1bF3RYazNU#naG=U0O||z
z3-+6DvzL#(a9}o%SyYN?)oA?ize2re!<+^Rv29Q*lb>{!1`YHYRP4M=>of|r&sGrn
z8T|(#L18k7cs#3sJD@Sc(gX3a_xnSk5DsbPA;;+C)n$;J10vn1$NzyIeg+*oF^-tg
zT|a3DSFCS+*ENHd#)PrZ_h2uokB0+1!q_RYY$e9xMM0D}PD0HJnH!fU!Cx*rv3PN2
zN^w(=zUw5^D);*me%V>Gu5Tw_r!e+f2B2pTpTg-M+dhdM{HpXOL=M^J2!ZT3o6g9g
zu%o!jT?HHOW=r(b9rZav>UeZv@xsIzrL>d?6->jw4J~iC5?$}-n&QFwvjyIJdF=C~
zO=4Xy(&~3zFYpP4OeFQ$1m0Glis7%;$Sr4hdgp}$eFHx5;ir-m{(B>R!(Q=NeeVnQ
z1}}K*mQ~;v5D*Zof*O07p)l?C2WgOQU~cR*)NIDTUys)hy*
zHsHhjQ_pB8D)bFRW_XkWzpl$kyx}qSBt&)L(c67%>R{g)_qMlUK=Jh7-KY&V{8(Bk!}IO
z5yFrLMPeci5;95}=ZJxHE8Qw8HBuB9jdVyUj3G+HR7ygAJg?z7Z{YlS?$77Gt|OK4
z(#t4qn>;Bj>e;j^cowMYu-OryZ;p8pkBbqecffY2x(@IltUx(q_QmaFhy_=M*1sfC
zpxccD_QWdAFMnxttyF=NWFg`RDjB8yYqOip3!lKLn*#F_SH1fTqNGv=54n%w3V+=H
z3DWY0L7+U?XN^wEp_4}T{A>Tn1ZXGpqJ&MsDe?+u#=O`P{CL
z9uu`~Ub5zS_ax7!p}p5z+}}9M427eZfAS1Ita-^<3=M-F$bl}T#!-h>r4<=t74`2F
zv*H{3^fhSNCA?-QSkfv`b(Qd3qZm^M(>CAxg$A9bl!~stLYORw8<~0s=^p7{hN3R;
z>3&0AqC73NePGP^mae{9Gn8XD0ZH85ILOJTN^&dpydVywNif>z%1MPh{|;DQdL6RO
zcE$k7*c4BTW-zFio44R8!iv+pQ$FQ!7i|kmW$xakwI#naD^*7zZ+wSGTuolpA$70Q
z3!FdEMrk4z9nywwBz#+wIE!#GH?7qrpr0(UQ|ps;!FQ~MGN&Bk0p@X+LV;E6y|sfI
zsan+E*7)C|UF)tpZ%JJL3Do!n4pWTXU#gT81$s8@3yf>f8G&&O4yjCQ=E8qxcn&QH
zHhfMdS!auU;*x}_@*=C!IeY)U^P}{Nfx>b)^V$xw|3zZ9dc1s9?e^Mb(vB{lmRuiT
z-V6lN%`JC+GApORU&yyOaeQ94K~NF<+=pMV?SrHPv`V!(3Q|+|+*us@neIUNRi3--
z^;3yX^EoG@J{x>GLW34))*wY1Nzcqvg9KimQ~#H!WzRmczTE7iLo^^=4LO1EKPkdg
z)6PUWO!g8DkgRK(#cqyIJ=g5$luJwawIHW*BJl
zb!hGL1z?|=z4h6brSJQFb|!4=c+t!@iKTkmhWq3
z{YjI1(QL|tA0J~bZvP?UZscVAyBX%HbiX#rDmJjmMS*@<^k
zO5~He%ZECZYfNRqcv#;sr`U}HG$%dyBX}HM!_f1wm
zP2l0;#fdeDMqAE$%Y^4fgkF6+?xz3x!z`Md1sC#(XEUWG4{yh$N!ymSNq|sP
zT1@oep$b@NO##&bt$b-x&nMG_+#0rb9#a!tNQVpRF|wD&zE8HTsT-w_
zuC>o@j6yagEX;^WJk%19;hfKL(Jt`b;shkSe63J$A|BJ-PY3U?Mcc8WSU1&CH%-6T
zn#ohse8!yEpdE&}@Rr1EM#OiooREolKs0|TEbQIs&1gY(vHUCp*hfoqWWH&AP-L0o
z`Lf-fmdYA@UbA+r^CHl-BH+EXh@w@N`KQ~G51f)SEp3Ec`iH?AqG9j0uLOV(;lQkI
z;BmxOqX!rSNu*)7@{Ui9WZc23>W_6_)P=_?-_E|ec$tC$F}>Z@okPaN#?DSJim#3$
z?1?uE*QgqH{>k)zhmp@Xd0c&^&5OUSa6-#5qgk&6%Q4o5VE3`8CJF$w1zu~~HEw=C
zlT&ciHy6{`ayrEuHqJm3O06B|Yr*LO<~fM7VFSs=-kt6A5l1}DU)IKwC|Hh%-xiGI
z^NKZ2$wx}WZ}6>YUuGc+C8JsgJ0r&VdmgH_X(?BGKqU`MB7E-%=s|)GzcEUU`aIu0YLWFhIWK@&p+n%yZq+qQ-SlW11RH{OMZ1YQK(5$P8VtIIv_D
zeXBL&9KV~#NwI#~Fud0O$85403z)IG8lk~Gpd-~L3@Sr=P?x$#^=N)t7-5?vST+U_
z6m3qf?*;!gZ2rso9S$7lY_jE;fBKM740KIT%;kE^o?A9%Lj+GJlou@e>jdg>@sJ7q
zq({aPN=b!2Gg!oDhDQ%&v}9h}HU?-CYagJ)a_Y9Bch_VmSsJOP!N_2ZE77nZy~%VN
zF(H91zW>%i`!3}fN`MdQZzl22{ju7E{!+#{xS%zd79}o>%_;9XF
zyWUt*GNaDwT*=(-Ttkdm{5UK(5^Umv3vc;=0q8TC*!bx(E=7B@mn!oc*2m5Mi^Uwtyq_q)79EA=QG%WGUBaDzd=rPEBRV*N
zPsB=BgI2(x0z~e2CMjDhcWYh*~pq
zbuT#o#h)7uR%CbCY}hSxUG+pOY{F13Scga^+`ed>t96xS{%qga>cDJqPU
zw(C5ci))sGpZmE}9{B&zYzvQGPo(9jbwNmH?yNR#xrn5h17a;dl
zA&-Bq96sWFoT$~)DdbRDA?&j(D(3rI!9y8-CMVpmGT8mNAEg{_f>XCuUE!ydzk{M&
zyb+lmtKA7!z0yPq*)+@fu(8RF?z^p5IqiFFpfoMcpd6G$Njv*8<%f=S
zRD|J^?o0nK0`O;HB|;4Gmk~n8#1jBcQ@2y4q0Opx#n$a@f>@^>
zwkKtte^)5?5fXWNi~b_dX&sN56_sA-lB9cFq3hV4bZ1mvsAllcC*h#|>pMWH*-&Bq
zwE
z(X`~$#MG5)({Bh>kGo?hEl2(8Nc74-j0&QcAT>kEqR+@+JyCoC^ux+!j&|Rz$-cj#
zvS)f)j>-@6q-Q&gOsB1y
z`TQ2TCI!j8tarUzr}@zu0*{A&{p)6MnMHnD@LfMwmy3}3dvabpqCf1@3cWsAsJ%x+
zzIZV;RpcM~(;%<#(RV+dwg+PvG_!YK6mmN>G?`VN)bZh)LV4Ro^+DVbaa9Q3@(Wpc
zTQ5T-C3HSy^-Ej+Glm^h>P_MW_q)GW-;^YQby(@Tim583gWftn!Dw&}AnV*zF5h<^!pF3?eeAAOF5x-o&Ve-pMTL$s-*V`8lIZiXM#e#fM
zaJ0%WV}4=RpEFISR~mIc#(y+Q@UPWdmeA404av|wy&Y9oB|LqutNy>Z
zAq+*OXiD~43wqPyWz@Yb(_Vb^Rg=rz1$>RcLW^Pp96RiO@@~
zjJ4p;@kmxH`u`&;yrfIdTWCZ_lYg2dV>W#o)$yS}(9~gWVK4#4o#W?2_8P3r7wi3}
zAO;YqhftkIS;D!8
z49`WV$w@t`HT{=#Mx_0U4(&7Vy0ytu@6Z!Qcr`&u(!ycPo@*t(=MXwit3*rS>R6L|
zX~iEODg@`rFGwbAG@m@Y*bJ{+WymYEb{{DT!i`5T_Fx#&1x&znQ!5E7&T@
z>juBSU$q)?6UPtw5p-NSsU)Gccv^GJpQ+wgXf%TJ>)Htks8>vpYS?@u0EHn6wFP4L
zOb`gN@5&+cq_nn_YPDzM#bp@^n{}nYqyY8BV!}`+snh|zE;Sbam?`W)EH4diuWJ@7
zFHyCGraRzf{cOrwzhiF`PTiG~OUt4UXW+a$ExbGh={k`tpGwsTocn7i-i`*u(TwfY
z;Kw{<^r|QY)K3a(y;{bqoS3^V1j%X)SU@``Xh2g{z*zD}JrWg~OV|RY%iwtBC-Mgq
zwe*B^|F&9kQPc(qOWFE0^%Z6&M+eMWG&DF*IDLKuFi#_gcZB!jwJ6h{%lvqF0S8;O
zP@pGAP65qgL4eFqRIyW6M}hOo$w;8lD+1(x2v2kX4a%PXRfdig(=^FUewjGTX7^^d
zX*h20POaOxftfrxOBj-kUH*`JC5eZTr7O
Date: Wed, 13 Mar 2019 12:46:06 +0100
Subject: [PATCH 56/71] Update tellstick to match with new sensor configuration
(#8716)
* Updated to match with new sensor configuration
Sensor configuration will now use static identifiers instead of ID number to set the name of named sensors.
* Update source/_components/tellstick.markdown
Co-Authored-By: endor-force <1937941+endor-force@users.noreply.github.com>
---
source/_components/tellstick.markdown | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/source/_components/tellstick.markdown b/source/_components/tellstick.markdown
index 59c145c9b1c..828b8ade735 100644
--- a/source/_components/tellstick.markdown
+++ b/source/_components/tellstick.markdown
@@ -108,10 +108,19 @@ sensor:
required: false
type: string
only_named:
- description: Only show the named sensors. Set to `true` to hide sensors.
+ description: Only add and include specified sensors. If this is not specified all sensors will be imported and the names will be based on each sensor's ID number.
required: false
default: false
- type: boolean
+ type: list
+ keys:
+ id:
+ description: The ID-number of the sensor to include.
+ required: true
+ type: integer
+ name:
+ description: Specify the name of the selected sensor.
+ required: true
+ type: string
temperature_scale:
description: The scale of the temperature value.
required: false
@@ -134,11 +143,13 @@ In this section you find some real-life examples of how to use this sensor.
# Example configuration.yaml entry
sensor:
- platform: tellstick
- 135: Outside
- 21: Inside
- only_named: true
temperature_scale: "°C"
datatype_mask: 1
+ only_named:
+ - id: 135
+ name: Outside
+ - id: 21
+ name: Inside
```
## {% linkable_title Switch %}
@@ -151,4 +162,4 @@ To use your TellStick device, you first have to set up your [Tellstick hub](#con
# Example configuration.yaml entry
switch:
- platform: tellstick
-```
\ No newline at end of file
+```
From 920104bf985d49b2d0e588d5a5742a4c88ffc214 Mon Sep 17 00:00:00 2001
From: Aaron Bach
Date: Wed, 13 Mar 2019 13:51:13 -0600
Subject: [PATCH 57/71] Add service updates to RainMachine docs (#8860)
---
source/_components/rainmachine.markdown | 34 +++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/source/_components/rainmachine.markdown b/source/_components/rainmachine.markdown
index 238a7825600..eca1b4c2691 100644
--- a/source/_components/rainmachine.markdown
+++ b/source/_components/rainmachine.markdown
@@ -113,6 +113,40 @@ switches:
## {% linkable_title Services %}
+### {% linkable_title `rainmachine.disable_program` %}
+
+Disable a RainMachine program. This will mark the program switch as
+`Unavailable` in the UI.
+
+| Service Data Attribute | Optional | Description |
+|---------------------------|----------|-------------------------|
+| `program_id` | no | The program to disable |
+
+### {% linkable_title `rainmachine.disable_zone` %}
+
+Disable a RainMachine zone. This will mark the zone switch as
+`Unavailable` in the UI.
+
+| Service Data Attribute | Optional | Description |
+|---------------------------|----------|-------------------------|
+| `zone_id` | no | The zone to disable |
+
+### {% linkable_title `rainmachine.enable_program` %}
+
+Enable a RainMachine program.
+
+| Service Data Attribute | Optional | Description |
+|---------------------------|----------|-------------------------|
+| `program_id` | no | The program to enable |
+
+### {% linkable_title `rainmachine.enable_zone` %}
+
+Enable a RainMachine zone.
+
+| Service Data Attribute | Optional | Description |
+|---------------------------|----------|-------------------------|
+| `zone_id` | no | The zone to enable |
+
### {% linkable_title `rainmachine.pause_watering` %}
Pause all watering activities for a number of seconds.
From af4a91b5c32d905644016e15ec6c7d73d7712efd Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Wed, 13 Mar 2019 13:14:55 -0700
Subject: [PATCH 58/71] Add draft for 0.90
---
_config.yml | 6 +-
source/_posts/2019-03-20-release-90.markdown | 616 +++++++++++++++++++
2 files changed, 619 insertions(+), 3 deletions(-)
create mode 100644 source/_posts/2019-03-20-release-90.markdown
diff --git a/_config.yml b/_config.yml
index 6fbceb62596..bfabc39b356 100644
--- a/_config.yml
+++ b/_config.yml
@@ -138,9 +138,9 @@ social:
# Home Assistant release details
current_major_version: 0
-current_minor_version: 89
-current_patch_version: 2
-date_released: 2019-03-12
+current_minor_version: 90
+current_patch_version: 0
+date_released: 2019-03-20
# 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/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown
new file mode 100644
index 00000000000..7ce76490ba6
--- /dev/null
+++ b/source/_posts/2019-03-20-release-90.markdown
@@ -0,0 +1,616 @@
+---
+layout: post
+title: "0.90: TBD - Update date"
+description: "TBD"
+date: 2019-03-13 00:11:03
+date_formatted: "March 20, 2019"
+author: Paulus Schoutsen
+author_twitter: balloob
+comments: true
+categories: Release-Notes
+og_image: /images/blog/2019-03-release-90/components.png
+---
+
+
+
+ - Remote connection available for Home Assistant Cloud! Check out the cloud page in config
+ - New stream component to stream cameras smoothly to frontend and other devices like Chromecast. Initial version only supports h264 codec. Each camera integration will need to be updated for it.
+ - User groups! Restrict admin access to users ([at least UI wise](https://developers.home-assistant.io/blog/2019/03/11/user-permissions.html))
+
+
+## {% linkable_title New Platforms %}
+
+- Add support for homekit controller sensors ([@cpopp] - [#21535]) ([homekit_controller docs]) (new-platform)
+- Add separate on/off ids on manual configured IHC lights ([@msvinth] - [#20253]) ([ihc docs]) ([light.ihc docs]) (new-platform)
+- Add storage helper to ZHA and use it for the device node descriptor ([@dmulcahey] - [#21500]) ([zha docs]) (new-platform)
+- Add support for DHT and DS18B20 sensors via Konnected firmware ([@heythisisnate] - [#21189]) ([konnected docs]) ([sensor.konnected docs]) (new-platform)
+- Add SmartThingsAccelCluster to ZHA binary_sensor ([@roblandry] - [#21609]) ([zha docs]) (new-platform)
+- Xfinity Gateway device_tracker platform ([@cisasteelersfan] - [#21026]) ([device_tracker docs]) (new-platform)
+- Add Time of Flight Sensor using VL53L1X ([@josemotta] - [#21230]) ([sensor.tof docs]) (new-platform)
+- Adding enigma2 media player ([@fbradyirl] - [#21271]) ([media_player.enigma2 docs]) (new-platform)
+- Add support for Cisco Mobility Express ([@fbradyirl] - [#21531]) ([cisco_mobility_express docs]) (new-platform)
+- Add ClearPass Policy Manger device tracker ([@zemerick1] - [#21673]) ([device_tracker docs]) (new-platform)
+- Live Streams Component ([@hunterjm] - [#21473]) ([camera docs]) ([stream docs]) ([camera.ffmpeg docs]) (new-platform)
+- Add Weather Sensors to Homematic IP ([@SukramJ] - [#21887]) ([homematicip_cloud docs]) (new-platform)
+
+## {% linkable_title New Features %}
+
+- SmartThings remove SmartApp/Automation on integration removal ([@andrewsayre] - [#21594]) ([smartthings docs]) (new-feature)
+- Add SmartThings climate support for Air Conditioners ([@andrewsayre] - [#21840]) ([smartthings docs]) (new-feature)
+- Add SmartThings sensor support for Three Axis ([@andrewsayre] - [#21841]) ([smartthings docs]) (new-feature)
+
+## {% linkable_title If you need help... %}
+
+...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
+
+## {% linkable_title Reporting Issues %}
+
+Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template.
+
+
+
+## {% linkable_title Breaking Changes %}
+
+- Added support for multiple Netatmo thermostats/valves ([@shanbs] - [#19407]) ([netatmo docs]) ([climate.netatmo docs]) (breaking change)
+- Return Netatmo climate operation_mode instead of boiler status ([@shanbs] - [#21633]) ([netatmo docs]) (breaking change)
+- Utility Meter offset defined by a time_period ([@dgomes] - [#20926]) ([utility_meter docs]) (breaking change)
+- Introduce target_temperature_state_address for climate device ([@marvin-w] - [#21541]) ([knx docs]) (breaking change)
+- Deprecate http.api_password ([@awarecan] - [#21884]) ([api docs]) ([frontend docs]) ([hassio docs]) ([http docs]) ([mqtt docs]) ([websocket_api docs]) ([zeroconf docs]) ([camera.proxy docs]) (breaking change)
+- Changed from nanoleaf_aurora to nanoleaf ([@Oro] - [#21913]) ([light.nanoleaf docs]) (breaking change)
+- Rename 'firetv' to 'androidtv' and add Android TV functionality ([@JeffLIrion] - [#21944]) (breaking change)
+- Tellstick sensor configuration cleanup ([@endor-force] - [#21402]) ([tellstick docs]) (breaking change)
+- Pass Message object to MQTT message callbacks ([@emontnemery] - [#21959]) ([mqtt docs]) (breaking change)
+
+## {% linkable_title All changes %}
+
+- Upgrade pyopenuv to 1.0.9 ([@bachya] - [#21513]) ([openuv docs])
+- Upgrade pypollencom to 2.2.3 ([@bachya] - [#21517]) ([sensor.pollen docs])
+- Upgrade pytile to 2.0.6 ([@bachya] - [#21516]) ([device_tracker docs])
+- Upgraded py17track to 2.2.2 ([@bachya] - [#21515]) ([sensor.seventeentrack docs])
+- Upgrade pyflunearyou to 1.0.2 ([@bachya] - [#21514]) ([sensor.flunearyou docs])
+- Bump starlingbank version to 3.1 ([@Dullage] - [#21501]) ([sensor.starlingbank docs])
+- Upgrade opensensemap-api to 0.1.5 ([@fabaff] - [#21524]) ([air_quality docs])
+- Register 'firetv.adb_command' service ([@JeffLIrion] - [#21419]) ([media_player.firetv docs])
+- Add arm night for alarm decoder ([@koolsb] - [#21488]) ([alarmdecoder docs])
+- Upgrade numpy to 1.16.2 ([@fabaff] - [#21525]) ([binary_sensor.trend docs]) ([image_processing.opencv docs]) ([image_processing.tensorflow docs]) ([sensor.pollen docs])
+- Upgrade python-mystrom to 0.5.0 ([@fabaff] - [#21523]) ([light.mystrom docs]) ([switch.mystrom docs])
+- Mqtt alarm added value_template and code_arm_required ([@ToRvaLDz] - [#19558]) ([alarm_control_panel.mqtt docs])
+- Add direct binding for remotes and lights for ZHA ([@dmulcahey] - [#21498]) ([zha docs])
+- Add support for homekit controller sensors ([@cpopp] - [#21535]) ([homekit_controller docs]) (new-platform)
+- Update CODEOWNERS ([@dgomes] - [#21545])
+- Clean up gpslogger tests ([@MartinHjelmare] - [#21543])
+- new websocket api way ([@dmulcahey] - [#21533]) ([zha docs])
+- Add pause/unpause services to RainMachine ([@bachya] - [#21548]) ([rainmachine docs])
+- prevent duplicate event channel registration ([@dmulcahey] - [#21534]) ([zha docs])
+- Allow config entry reloading ([@balloob] - [#21502])
+- Add separate on/off ids on manual configured IHC lights ([@msvinth] - [#20253]) ([ihc docs]) ([light.ihc docs]) (new-platform)
+- add friendly name to devices in the device registry ([@dmulcahey] - [#21499]) ([zha docs])
+- Allow chaining contexts ([@balloob] - [#21028]) ([automation docs])
+- bump pyxeoma to 1.4.1 to fix and close #19306 ([@trunet] - [#21568]) ([camera.xeoma docs])
+- fix exception ([@dmulcahey] - [#21571]) ([zha docs])
+- Add config entry remove callback ([@andrewsayre] - [#21576])
+- Memory optimization for logbook ([@amelchio] - [#21549]) ([logbook docs])
+- Get room hints from areas ([@Swamp-Ig] - [#21519]) ([google_assistant docs])
+- Centrally define Watt ([@dgomes] - [#21570])
+- Add network throughput statistics to systemmonitor sensor ([@dgomes] - [#21575]) ([sensor.systemmonitor docs])
+- Update for new pyvesyncv_v2 library and vesync switch support ([@webdjoe] - [#21449]) ([switch.vesync docs])
+- ZHA fixes ([@dmulcahey] - [#21592]) ([zha docs])
+- Update pyhomematic ([@danielperna84] - [#21600]) ([homematic docs])
+- Add parameter hold_secs for Harmony remote send command ([@ehendrix23] - [#19650]) ([remote docs]) ([remote.harmony docs])
+- Upgrade motorparts to 1.1.0 ([@rohankapoorcom] - [#21602]) ([sensor.mopar docs])
+- Further Yale ZWave lock device mapping cleanup ([@mw-white] - [#21128]) ([zwave docs])
+- Added support for multiple Netatmo thermostats/valves ([@shanbs] - [#19407]) ([netatmo docs]) ([climate.netatmo docs]) (breaking change)
+- Add the velbus sync clock service ([@Cereal2nd] - [#21308]) ([velbus docs])
+- SmartThings remove SmartApp/Automation on integration removal ([@andrewsayre] - [#21594]) ([smartthings docs]) (new-feature)
+- Bumping aioasuswrt ([@kennedyshead] - [#21627]) ([asuswrt docs])
+- Add device HMIP-eTRV-C to HomematicIP ([@SukramJ] - [#21612])
+- Add 'app_name' property and 'apps' config entry to Fire TV ([@JeffLIrion] - [#21601]) ([firetv docs])
+- Add optional sender name for SendGrid ([@srirams] - [#21610]) ([notify.sendgrid docs])
+- fix derived rate, fixes #20097 ([@wburgers] - [#21620]) ([sensor.dsmr docs])
+- Bump pyflunearyou to 1.0.3 ([@bachya] - [#21634]) ([sensor.flunearyou docs])
+- Return Netatmo climate operation_mode instead of boiler status ([@shanbs] - [#21633]) ([netatmo docs]) (breaking change)
+- Expose create/delete cloudhook ([@balloob] - [#21606]) ([cloud docs])
+- Add storage helper to ZHA and use it for the device node descriptor ([@dmulcahey] - [#21500]) ([zha docs]) (new-platform)
+- Allow configuration of update interval for ness_alarm ([@nickw444] - [#21415]) ([ness_alarm docs])
+- Replace travis ([@pvizeli] - [#21641])
+- Fix actions with tox ([@pvizeli] - [#21642])
+- GitHub Workflow ([@pvizeli] - [#21643])
+- Upgrade youtube_dl to 2019.03.01 ([@fabaff] - [#21647]) ([media_extractor docs])
+- Add support for DHT and DS18B20 sensors via Konnected firmware ([@heythisisnate] - [#21189]) ([konnected docs]) ([sensor.konnected docs]) (new-platform)
+- Allow targeting areas in service calls ([@balloob] - [#21472]) ([alert docs]) ([automation docs]) ([group docs]) ([image_processing docs]) ([light docs]) ([scene docs]) ([script docs])
+- Add camera name to logs ([@arsaboo] - [#21653]) ([camera.generic docs])
+- Netatmo, handle missing thermostat devices ([@Danielhiversen] - [#21651]) ([netatmo docs])
+- Add SmartThingsAccelCluster to ZHA binary_sensor ([@roblandry] - [#21609]) ([zha docs]) (new-platform)
+- Add support for multiple devices for PS4 component ([@ktnrg45] - [#21302]) ([ps4 docs])
+- Xfinity Gateway device_tracker platform ([@cisasteelersfan] - [#21026]) ([device_tracker docs]) (new-platform)
+- Adds option in UPnP component to override callback url ([@StevenLooman] - [#21583]) ([media_player.dlna_dmr docs])
+- Serialize amcrest snapshot commands and bump PyPI package to 1.2.4 ([@pnbruckner] - [#21664]) ([amcrest docs])
+- Bump nessclient version to 0.9.14 ([@nickw444] - [#21679]) ([ness_alarm docs])
+- Allow 202 status code as a successful REST notify response ([@u1f35c] - [#21678]) ([notify docs])
+- Bump teslajsonpy to 0.0.24 ([@alandtse] - [#21675]) ([tesla docs])
+- Fix Z-Wave relative imports ([@balloob] - [#21693]) ([zwave docs])
+- Use new style for built-in ws commmands ([@balloob] - [#21694]) ([websocket_api docs])
+- Google Assistant: Create and pass context to service calls ([@Swamp-Ig] - [#21551]) ([google_assistant docs])
+- Update to teslajsonpy v0.0.25 ([@alandtse] - [#21702]) ([tesla docs])
+- Utility Meter offset defined by a time_period ([@dgomes] - [#20926]) ([utility_meter docs]) (breaking change)
+- Change amcrest camera_image to async ([@pnbruckner] - [#21720]) ([amcrest docs])
+- Start preparing for homekit_controller config entries ([@Jc2k] - [#21564]) ([homekit_controller docs])
+- Support multiple keys in ifttt triggers ([@zeehio] - [#21454]) ([ifttt docs])
+- Fix initialization and add "pending" status of Satel integra ([@c-soft] - [#21194]) ([satel_integra docs])
+- Fix pylint warning on python 3.7 ([@awarecan] - [#21714]) ([climate.eq3btsmart docs])
+- Make pytest in tox quite ([@awarecan] - [#21727])
+- tplink - catch SmartDeviceException on is_dimmable call ([@ljmerza] - [#21726]) ([tplink docs])
+- Remove pytest warning message ([@awarecan] - [#21713])
+- Update .travis.yml ([@pvizeli] - [#21736])
+- Revert Travis until github actions work better for PR ([@pvizeli] - [#21746])
+- Allow light toggle service to accept all turn on params ([@zewelor] - [#20912]) ([light docs])
+- Introduce target_temperature_state_address for climate device ([@marvin-w] - [#21541]) ([knx docs]) (breaking change)
+- Upgrade pylint to 2.3.1 ([@scop] - [#21789])
+- Add Time of Flight Sensor using VL53L1X ([@josemotta] - [#21230]) ([sensor.tof docs]) (new-platform)
+- Upgrade huawei-lte-api to 1.1.5 ([@scop] - [#21791]) ([huawei_lte docs])
+- Adding enigma2 media player ([@fbradyirl] - [#21271]) ([media_player.enigma2 docs]) (new-platform)
+- Bump loopenergy to 0.1.0. Loop updated their socket.io server from 0.9 to 2.0 - which required a library update. ([@pavoni] - [#21809]) ([sensor.loopenergy docs])
+- remove occupancy, as it is not available at this level in the iRail api ([@nudded] - [#21810]) ([sensor.nmbs docs])
+- Onboarding to generate auth code ([@balloob] - [#21777]) ([auth docs]) ([onboarding docs])
+- Remove stub from config component ([@balloob] - [#21822]) ([config docs])
+- change paths to be relative ([@uchagani] - [#21827]) ([zwave docs])
+- Change how we import config modules ([@balloob] - [#21824]) ([config docs])
+- Load logger and system_log components as soon as possible ([@awarecan] - [#21799])
+- Resolve auth_store loading race condition ([@awarecan] - [#21794])
+- Log if aiohttp hits error during IndieAuth ([@robbiet480] - [#21780]) ([auth docs])
+- Add support for Cisco Mobility Express ([@fbradyirl] - [#21531]) ([cisco_mobility_express docs]) (new-platform)
+- Synology sensor quick return if attr is null ([@cmsimike] - [#21709]) ([sensor.synologydsm docs])
+- fix empty TOPIC_BASE issue ([@engrbm87] - [#21740]) ([mqtt docs])
+- Updated to pyeconet 0.0.10 ([@w1ll1am23] - [#21837]) ([water_heater docs])
+- Fix config entry exception in Ambient PWS ([@bachya] - [#21836]) ([ambient_station docs])
+- Fixed a misspelling in a docstring ([@bachya] - [#21846]) ([ambient_station docs])
+- mobile_app improvements ([@robbiet480] - [#21607]) ([mobile_app docs])
+- Update honeywell.py to read current humidity for US Thermostats ([@Hackashaq666] - [#21728]) ([climate.honeywell docs])
+- Fix TypeError ([@wburgers] - [#21734]) ([sensor.dsmr docs])
+- Introduce Entity.async_write_ha_state() to not miss state transition ([@emontnemery] - [#21590])
+- Fix authorization header in cors ([@piitaya] - [#21662]) ([http docs])
+- Only commit if need. ([@awarecan] - [#21848])
+- Bump quirks for ZHA and handle resulting battery % change ([@dmulcahey] - [#21869]) ([zha docs])
+- Better cloud check ([@balloob] - [#21875]) ([cloud docs]) ([mobile_app docs])
+- Add ClearPass Policy Manger device tracker ([@zemerick1] - [#21673]) ([device_tracker docs]) (new-platform)
+- Add SmartThings climate support for Air Conditioners ([@andrewsayre] - [#21840]) ([smartthings docs]) (new-feature)
+- Add SmartThings sensor support for Three Axis ([@andrewsayre] - [#21841]) ([smartthings docs]) (new-feature)
+- Add user group ([@balloob] - [#21832])
+- Update ZHA state handling ([@dmulcahey] - [#21866]) ([zha docs])
+- Change lib for whois sensor ([@ludeeus] - [#21878]) ([sensor.whois docs])
+- Don't wait until final position of Velux cover is reached ([@Julius2342] - [#21558]) ([velux docs])
+- Fix missing code_required check in async_alarm_arm_night ([@ToRvaLDz] - [#21858]) ([mqtt docs])
+- Fix icon for sensor.discogs_random_record ([@thibmaek] - [#21891]) ([sensor.discogs docs])
+- Add myself to CODEOWNERS for NMBS code ([@thibmaek] - [#21892])
+- Modbus write_register accept single value and array ([@gertdb] - [#21621]) ([modbus docs])
+- Add custom holidays to workday sensor ([@epleypa] - [#21718]) ([binary_sensor.workday docs])
+- Return time based attributes as datetime in Unifi module ([@ndonegan] - [#21146]) ([device_tracker docs])
+- Allow emulated hue to set climate component temperature ([@chilicheech] - [#19034]) ([emulated_hue docs])
+- bump netdisco to 2.4.0 ([@fbradyirl] - [#21914])
+- Deprecate http.api_password ([@awarecan] - [#21884]) ([api docs]) ([frontend docs]) ([hassio docs]) ([http docs]) ([mqtt docs]) ([websocket_api docs]) ([zeroconf docs]) ([camera.proxy docs]) (breaking change)
+- Don't hang forever if manually added cast is down ([@emontnemery] - [#21565]) ([cast docs])
+- Add WS subscription command for MQTT ([@balloob] - [#21696]) ([mqtt docs]) ([websocket_api docs])
+- Add 'ssl' parameter for FiOS Quantum Gateway and upgrade Pypi ([@cisasteelersfan] - [#21669]) ([device_tracker docs])
+- Add as_timestamp() to Jinja filters. ([@rbdixon] - [#21910])
+- HomeKit controller config flow fixes ([@Jc2k] - [#21898]) ([homekit_controller docs])
+- Update enigma2 based on review comments ([@fbradyirl] - [#21890]) ([enigma2 docs])
+- Remove confusing warning for TTS without entity_id ([@amelchio] - [#21927]) ([tts docs])
+- Fixes Modbus service.yaml validity ([@gertdb] - [#21923])
+- Add cloudhook support to SmartThings component ([@andrewsayre] - [#21905]) ([smartthings docs])
+- If registration supports encryption then return encrypted payloads ([@robbiet480] - [#21853]) ([mobile_app docs])
+- Allow inverting netdata sensor values ([@michaelarnauts] - [#21711]) ([sensor.netdata docs])
+- Changed from nanoleaf_aurora to nanoleaf ([@Oro] - [#21913]) ([light.nanoleaf docs]) (breaking change)
+- Minor version bump for anthemav package ([@nugget] - [#21932]) ([media_player.anthemav docs])
+- Add area permission check ([@balloob] - [#21835])
+- Add an asyncio Lock around pairing, which cant be used concurrently ([@Jc2k] - [#21933]) ([homekit_controller docs])
+- Add update user command ([@balloob] - [#21922]) ([config docs])
+- Offload Cloud component ([@pvizeli] - [#21937]) ([cloud docs])
+- Upgrade schiene to 0.23 ([@fabaff] - [#21940]) ([sensor.deutsche_bahn docs])
+- Live Streams Component ([@hunterjm] - [#21473]) ([camera docs]) ([stream docs]) ([camera.ffmpeg docs]) (new-platform)
+- Update lametric icon to be HA logo ([@robbiet480] - [#21957]) ([lametric docs])
+- Avoid playing queue pollution when restoring Sonos snapshots ([@amelchio] - [#21963]) ([sonos docs])
+- Update to sense component to fully be async ([@kbickar] - [#21698]) ([sense docs])
+- fix ephember doing http call from property ([@ttroy50] - [#21855]) ([climate.ephember docs])
+- Add Weather Sensors to Homematic IP ([@SukramJ] - [#21887]) ([homematicip_cloud docs]) (new-platform)
+- Add cloud status ([@balloob] - [#21960]) ([cloud docs])
+- Fix MagicHome LEDs with flux_led component ([@autinerd] - [#20733]) ([light.flux_led docs])
+- Stream: Only add base url when needed ([@balloob] - [#21979]) ([camera docs]) ([stream docs])
+- Allow changing password without being admin ([@balloob] - [#21978]) ([config docs])
+- Fix some cloud things ([@balloob] - [#21977])
+- homekit_controller: Bump homekit to 0.13.0 ([@Jc2k] - [#21965]) ([homekit_controller docs])
+- skip flaky test ([@balloob] - [#21981])
+- Write state directly in all MQTT platforms ([@emontnemery] - [#21971]) ([mqtt docs])
+- Use .get to ensure we dont get KeyError ([@robbiet480] - [#21993]) ([mobile_app docs])
+- Fix error introduced by #21933 ([@Jc2k] - [#21988]) ([homekit_controller docs])
+- Add stream source for amcrest component ([@dshokouhi] - [#21983]) ([amcrest docs])
+- Set homekit controller entity as unavailable if new connections fail ([@Jc2k] - [#21901]) ([homekit_controller docs])
+- Centrally define Energy Units (kWh and Wh) ([@dgomes] - [#21719])
+- Mobile App: Registration schema improvements ([@robbiet480] - [#21850]) ([mobile_app docs])
+- Add a service require_admin wrapper ([@balloob] - [#21953])
+- Update pyhomematic to 0.1.58 ([@danielperna84] - [#21989]) ([homematic docs])
+- Use asyncio lock ([@amelchio] - [#21985]) ([sonos docs])
+- Add breaking change section to PR template ([@awarecan] - [#21994])
+- Rename 'firetv' to 'androidtv' and add Android TV functionality ([@JeffLIrion] - [#21944]) (breaking change)
+- Tellstick sensor configuration cleanup ([@endor-force] - [#21402]) ([tellstick docs]) (breaking change)
+- Add availability and next run datetime to RainMachine switches ([@bachya] - [#21786]) ([rainmachine docs])
+- Add program/zone enable/disable services to RainMachine ([@bachya] - [#21785]) ([rainmachine docs])
+- Bump NabuCasa library to 0.5 ([@pvizeli] - [#22010]) ([cloud docs])
+- Avoid playing queue pollution with Sonos unjoin ([@amelchio] - [#22004]) ([sonos docs])
+- Wait for Sonos regrouping in service calls ([@amelchio] - [#22006]) ([sonos docs])
+- fix error in LutronButton init if Button doesn't have a type ([@beavis9k] - [#21921]) ([lutron docs])
+- HomeKit controller light - remove code that can never execute ([@Jc2k] - [#21951]) ([homekit_controller docs])
+- Nanoleaf availability check ([@Oro] - [#21945]) ([light.nanoleaf docs])
+- Pass Message object to MQTT message callbacks ([@emontnemery] - [#21959]) ([mqtt docs]) (breaking change)
+- Remove default temp unit ([@andrewsayre] - [#22012]) ([smartthings docs])
+- Allow all success status codes in REST notify response ([@isabellaalstrom] - [#22011]) ([notify docs])
+- Check updated_date for list and pick first ([@GGeezes] - [#22008])
+
+[#19034]: https://github.com/home-assistant/home-assistant/pull/19034
+[#19407]: https://github.com/home-assistant/home-assistant/pull/19407
+[#19558]: https://github.com/home-assistant/home-assistant/pull/19558
+[#19650]: https://github.com/home-assistant/home-assistant/pull/19650
+[#20253]: https://github.com/home-assistant/home-assistant/pull/20253
+[#20733]: https://github.com/home-assistant/home-assistant/pull/20733
+[#20912]: https://github.com/home-assistant/home-assistant/pull/20912
+[#20926]: https://github.com/home-assistant/home-assistant/pull/20926
+[#21026]: https://github.com/home-assistant/home-assistant/pull/21026
+[#21028]: https://github.com/home-assistant/home-assistant/pull/21028
+[#21128]: https://github.com/home-assistant/home-assistant/pull/21128
+[#21146]: https://github.com/home-assistant/home-assistant/pull/21146
+[#21189]: https://github.com/home-assistant/home-assistant/pull/21189
+[#21194]: https://github.com/home-assistant/home-assistant/pull/21194
+[#21230]: https://github.com/home-assistant/home-assistant/pull/21230
+[#21271]: https://github.com/home-assistant/home-assistant/pull/21271
+[#21302]: https://github.com/home-assistant/home-assistant/pull/21302
+[#21308]: https://github.com/home-assistant/home-assistant/pull/21308
+[#21402]: https://github.com/home-assistant/home-assistant/pull/21402
+[#21415]: https://github.com/home-assistant/home-assistant/pull/21415
+[#21419]: https://github.com/home-assistant/home-assistant/pull/21419
+[#21449]: https://github.com/home-assistant/home-assistant/pull/21449
+[#21454]: https://github.com/home-assistant/home-assistant/pull/21454
+[#21472]: https://github.com/home-assistant/home-assistant/pull/21472
+[#21473]: https://github.com/home-assistant/home-assistant/pull/21473
+[#21488]: https://github.com/home-assistant/home-assistant/pull/21488
+[#21498]: https://github.com/home-assistant/home-assistant/pull/21498
+[#21499]: https://github.com/home-assistant/home-assistant/pull/21499
+[#21500]: https://github.com/home-assistant/home-assistant/pull/21500
+[#21501]: https://github.com/home-assistant/home-assistant/pull/21501
+[#21502]: https://github.com/home-assistant/home-assistant/pull/21502
+[#21513]: https://github.com/home-assistant/home-assistant/pull/21513
+[#21514]: https://github.com/home-assistant/home-assistant/pull/21514
+[#21515]: https://github.com/home-assistant/home-assistant/pull/21515
+[#21516]: https://github.com/home-assistant/home-assistant/pull/21516
+[#21517]: https://github.com/home-assistant/home-assistant/pull/21517
+[#21519]: https://github.com/home-assistant/home-assistant/pull/21519
+[#21523]: https://github.com/home-assistant/home-assistant/pull/21523
+[#21524]: https://github.com/home-assistant/home-assistant/pull/21524
+[#21525]: https://github.com/home-assistant/home-assistant/pull/21525
+[#21531]: https://github.com/home-assistant/home-assistant/pull/21531
+[#21533]: https://github.com/home-assistant/home-assistant/pull/21533
+[#21534]: https://github.com/home-assistant/home-assistant/pull/21534
+[#21535]: https://github.com/home-assistant/home-assistant/pull/21535
+[#21541]: https://github.com/home-assistant/home-assistant/pull/21541
+[#21543]: https://github.com/home-assistant/home-assistant/pull/21543
+[#21545]: https://github.com/home-assistant/home-assistant/pull/21545
+[#21548]: https://github.com/home-assistant/home-assistant/pull/21548
+[#21549]: https://github.com/home-assistant/home-assistant/pull/21549
+[#21551]: https://github.com/home-assistant/home-assistant/pull/21551
+[#21558]: https://github.com/home-assistant/home-assistant/pull/21558
+[#21564]: https://github.com/home-assistant/home-assistant/pull/21564
+[#21565]: https://github.com/home-assistant/home-assistant/pull/21565
+[#21568]: https://github.com/home-assistant/home-assistant/pull/21568
+[#21570]: https://github.com/home-assistant/home-assistant/pull/21570
+[#21571]: https://github.com/home-assistant/home-assistant/pull/21571
+[#21575]: https://github.com/home-assistant/home-assistant/pull/21575
+[#21576]: https://github.com/home-assistant/home-assistant/pull/21576
+[#21583]: https://github.com/home-assistant/home-assistant/pull/21583
+[#21590]: https://github.com/home-assistant/home-assistant/pull/21590
+[#21592]: https://github.com/home-assistant/home-assistant/pull/21592
+[#21594]: https://github.com/home-assistant/home-assistant/pull/21594
+[#21600]: https://github.com/home-assistant/home-assistant/pull/21600
+[#21601]: https://github.com/home-assistant/home-assistant/pull/21601
+[#21602]: https://github.com/home-assistant/home-assistant/pull/21602
+[#21606]: https://github.com/home-assistant/home-assistant/pull/21606
+[#21607]: https://github.com/home-assistant/home-assistant/pull/21607
+[#21609]: https://github.com/home-assistant/home-assistant/pull/21609
+[#21610]: https://github.com/home-assistant/home-assistant/pull/21610
+[#21612]: https://github.com/home-assistant/home-assistant/pull/21612
+[#21620]: https://github.com/home-assistant/home-assistant/pull/21620
+[#21621]: https://github.com/home-assistant/home-assistant/pull/21621
+[#21627]: https://github.com/home-assistant/home-assistant/pull/21627
+[#21633]: https://github.com/home-assistant/home-assistant/pull/21633
+[#21634]: https://github.com/home-assistant/home-assistant/pull/21634
+[#21641]: https://github.com/home-assistant/home-assistant/pull/21641
+[#21642]: https://github.com/home-assistant/home-assistant/pull/21642
+[#21643]: https://github.com/home-assistant/home-assistant/pull/21643
+[#21647]: https://github.com/home-assistant/home-assistant/pull/21647
+[#21651]: https://github.com/home-assistant/home-assistant/pull/21651
+[#21653]: https://github.com/home-assistant/home-assistant/pull/21653
+[#21662]: https://github.com/home-assistant/home-assistant/pull/21662
+[#21664]: https://github.com/home-assistant/home-assistant/pull/21664
+[#21669]: https://github.com/home-assistant/home-assistant/pull/21669
+[#21673]: https://github.com/home-assistant/home-assistant/pull/21673
+[#21675]: https://github.com/home-assistant/home-assistant/pull/21675
+[#21678]: https://github.com/home-assistant/home-assistant/pull/21678
+[#21679]: https://github.com/home-assistant/home-assistant/pull/21679
+[#21693]: https://github.com/home-assistant/home-assistant/pull/21693
+[#21694]: https://github.com/home-assistant/home-assistant/pull/21694
+[#21696]: https://github.com/home-assistant/home-assistant/pull/21696
+[#21698]: https://github.com/home-assistant/home-assistant/pull/21698
+[#21702]: https://github.com/home-assistant/home-assistant/pull/21702
+[#21709]: https://github.com/home-assistant/home-assistant/pull/21709
+[#21711]: https://github.com/home-assistant/home-assistant/pull/21711
+[#21713]: https://github.com/home-assistant/home-assistant/pull/21713
+[#21714]: https://github.com/home-assistant/home-assistant/pull/21714
+[#21718]: https://github.com/home-assistant/home-assistant/pull/21718
+[#21719]: https://github.com/home-assistant/home-assistant/pull/21719
+[#21720]: https://github.com/home-assistant/home-assistant/pull/21720
+[#21726]: https://github.com/home-assistant/home-assistant/pull/21726
+[#21727]: https://github.com/home-assistant/home-assistant/pull/21727
+[#21728]: https://github.com/home-assistant/home-assistant/pull/21728
+[#21734]: https://github.com/home-assistant/home-assistant/pull/21734
+[#21736]: https://github.com/home-assistant/home-assistant/pull/21736
+[#21740]: https://github.com/home-assistant/home-assistant/pull/21740
+[#21746]: https://github.com/home-assistant/home-assistant/pull/21746
+[#21777]: https://github.com/home-assistant/home-assistant/pull/21777
+[#21780]: https://github.com/home-assistant/home-assistant/pull/21780
+[#21785]: https://github.com/home-assistant/home-assistant/pull/21785
+[#21786]: https://github.com/home-assistant/home-assistant/pull/21786
+[#21789]: https://github.com/home-assistant/home-assistant/pull/21789
+[#21791]: https://github.com/home-assistant/home-assistant/pull/21791
+[#21794]: https://github.com/home-assistant/home-assistant/pull/21794
+[#21799]: https://github.com/home-assistant/home-assistant/pull/21799
+[#21809]: https://github.com/home-assistant/home-assistant/pull/21809
+[#21810]: https://github.com/home-assistant/home-assistant/pull/21810
+[#21822]: https://github.com/home-assistant/home-assistant/pull/21822
+[#21824]: https://github.com/home-assistant/home-assistant/pull/21824
+[#21827]: https://github.com/home-assistant/home-assistant/pull/21827
+[#21832]: https://github.com/home-assistant/home-assistant/pull/21832
+[#21835]: https://github.com/home-assistant/home-assistant/pull/21835
+[#21836]: https://github.com/home-assistant/home-assistant/pull/21836
+[#21837]: https://github.com/home-assistant/home-assistant/pull/21837
+[#21840]: https://github.com/home-assistant/home-assistant/pull/21840
+[#21841]: https://github.com/home-assistant/home-assistant/pull/21841
+[#21846]: https://github.com/home-assistant/home-assistant/pull/21846
+[#21848]: https://github.com/home-assistant/home-assistant/pull/21848
+[#21850]: https://github.com/home-assistant/home-assistant/pull/21850
+[#21853]: https://github.com/home-assistant/home-assistant/pull/21853
+[#21855]: https://github.com/home-assistant/home-assistant/pull/21855
+[#21858]: https://github.com/home-assistant/home-assistant/pull/21858
+[#21866]: https://github.com/home-assistant/home-assistant/pull/21866
+[#21869]: https://github.com/home-assistant/home-assistant/pull/21869
+[#21875]: https://github.com/home-assistant/home-assistant/pull/21875
+[#21878]: https://github.com/home-assistant/home-assistant/pull/21878
+[#21884]: https://github.com/home-assistant/home-assistant/pull/21884
+[#21887]: https://github.com/home-assistant/home-assistant/pull/21887
+[#21890]: https://github.com/home-assistant/home-assistant/pull/21890
+[#21891]: https://github.com/home-assistant/home-assistant/pull/21891
+[#21892]: https://github.com/home-assistant/home-assistant/pull/21892
+[#21898]: https://github.com/home-assistant/home-assistant/pull/21898
+[#21901]: https://github.com/home-assistant/home-assistant/pull/21901
+[#21905]: https://github.com/home-assistant/home-assistant/pull/21905
+[#21910]: https://github.com/home-assistant/home-assistant/pull/21910
+[#21913]: https://github.com/home-assistant/home-assistant/pull/21913
+[#21914]: https://github.com/home-assistant/home-assistant/pull/21914
+[#21921]: https://github.com/home-assistant/home-assistant/pull/21921
+[#21922]: https://github.com/home-assistant/home-assistant/pull/21922
+[#21923]: https://github.com/home-assistant/home-assistant/pull/21923
+[#21927]: https://github.com/home-assistant/home-assistant/pull/21927
+[#21932]: https://github.com/home-assistant/home-assistant/pull/21932
+[#21933]: https://github.com/home-assistant/home-assistant/pull/21933
+[#21937]: https://github.com/home-assistant/home-assistant/pull/21937
+[#21940]: https://github.com/home-assistant/home-assistant/pull/21940
+[#21944]: https://github.com/home-assistant/home-assistant/pull/21944
+[#21945]: https://github.com/home-assistant/home-assistant/pull/21945
+[#21951]: https://github.com/home-assistant/home-assistant/pull/21951
+[#21953]: https://github.com/home-assistant/home-assistant/pull/21953
+[#21957]: https://github.com/home-assistant/home-assistant/pull/21957
+[#21959]: https://github.com/home-assistant/home-assistant/pull/21959
+[#21960]: https://github.com/home-assistant/home-assistant/pull/21960
+[#21963]: https://github.com/home-assistant/home-assistant/pull/21963
+[#21965]: https://github.com/home-assistant/home-assistant/pull/21965
+[#21971]: https://github.com/home-assistant/home-assistant/pull/21971
+[#21977]: https://github.com/home-assistant/home-assistant/pull/21977
+[#21978]: https://github.com/home-assistant/home-assistant/pull/21978
+[#21979]: https://github.com/home-assistant/home-assistant/pull/21979
+[#21981]: https://github.com/home-assistant/home-assistant/pull/21981
+[#21983]: https://github.com/home-assistant/home-assistant/pull/21983
+[#21985]: https://github.com/home-assistant/home-assistant/pull/21985
+[#21988]: https://github.com/home-assistant/home-assistant/pull/21988
+[#21989]: https://github.com/home-assistant/home-assistant/pull/21989
+[#21993]: https://github.com/home-assistant/home-assistant/pull/21993
+[#21994]: https://github.com/home-assistant/home-assistant/pull/21994
+[#22004]: https://github.com/home-assistant/home-assistant/pull/22004
+[#22006]: https://github.com/home-assistant/home-assistant/pull/22006
+[#22008]: https://github.com/home-assistant/home-assistant/pull/22008
+[#22010]: https://github.com/home-assistant/home-assistant/pull/22010
+[#22011]: https://github.com/home-assistant/home-assistant/pull/22011
+[#22012]: https://github.com/home-assistant/home-assistant/pull/22012
+[@Cereal2nd]: https://github.com/Cereal2nd
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@Dullage]: https://github.com/Dullage
+[@GGeezes]: https://github.com/GGeezes
+[@Hackashaq666]: https://github.com/Hackashaq666
+[@Jc2k]: https://github.com/Jc2k
+[@JeffLIrion]: https://github.com/JeffLIrion
+[@Julius2342]: https://github.com/Julius2342
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@Oro]: https://github.com/Oro
+[@StevenLooman]: https://github.com/StevenLooman
+[@SukramJ]: https://github.com/SukramJ
+[@Swamp-Ig]: https://github.com/Swamp-Ig
+[@ToRvaLDz]: https://github.com/ToRvaLDz
+[@alandtse]: https://github.com/alandtse
+[@amelchio]: https://github.com/amelchio
+[@andrewsayre]: https://github.com/andrewsayre
+[@arsaboo]: https://github.com/arsaboo
+[@autinerd]: https://github.com/autinerd
+[@awarecan]: https://github.com/awarecan
+[@bachya]: https://github.com/bachya
+[@balloob]: https://github.com/balloob
+[@beavis9k]: https://github.com/beavis9k
+[@c-soft]: https://github.com/c-soft
+[@chilicheech]: https://github.com/chilicheech
+[@cisasteelersfan]: https://github.com/cisasteelersfan
+[@cmsimike]: https://github.com/cmsimike
+[@cpopp]: https://github.com/cpopp
+[@danielperna84]: https://github.com/danielperna84
+[@dgomes]: https://github.com/dgomes
+[@dmulcahey]: https://github.com/dmulcahey
+[@dshokouhi]: https://github.com/dshokouhi
+[@ehendrix23]: https://github.com/ehendrix23
+[@emontnemery]: https://github.com/emontnemery
+[@endor-force]: https://github.com/endor-force
+[@engrbm87]: https://github.com/engrbm87
+[@epleypa]: https://github.com/epleypa
+[@fabaff]: https://github.com/fabaff
+[@fbradyirl]: https://github.com/fbradyirl
+[@gertdb]: https://github.com/gertdb
+[@heythisisnate]: https://github.com/heythisisnate
+[@hunterjm]: https://github.com/hunterjm
+[@isabellaalstrom]: https://github.com/isabellaalstrom
+[@josemotta]: https://github.com/josemotta
+[@kbickar]: https://github.com/kbickar
+[@kennedyshead]: https://github.com/kennedyshead
+[@koolsb]: https://github.com/koolsb
+[@ktnrg45]: https://github.com/ktnrg45
+[@ljmerza]: https://github.com/ljmerza
+[@ludeeus]: https://github.com/ludeeus
+[@marvin-w]: https://github.com/marvin-w
+[@michaelarnauts]: https://github.com/michaelarnauts
+[@msvinth]: https://github.com/msvinth
+[@mw-white]: https://github.com/mw-white
+[@ndonegan]: https://github.com/ndonegan
+[@nickw444]: https://github.com/nickw444
+[@nudded]: https://github.com/nudded
+[@nugget]: https://github.com/nugget
+[@pavoni]: https://github.com/pavoni
+[@piitaya]: https://github.com/piitaya
+[@pnbruckner]: https://github.com/pnbruckner
+[@pvizeli]: https://github.com/pvizeli
+[@rbdixon]: https://github.com/rbdixon
+[@robbiet480]: https://github.com/robbiet480
+[@roblandry]: https://github.com/roblandry
+[@rohankapoorcom]: https://github.com/rohankapoorcom
+[@scop]: https://github.com/scop
+[@shanbs]: https://github.com/shanbs
+[@srirams]: https://github.com/srirams
+[@thibmaek]: https://github.com/thibmaek
+[@trunet]: https://github.com/trunet
+[@ttroy50]: https://github.com/ttroy50
+[@u1f35c]: https://github.com/u1f35c
+[@uchagani]: https://github.com/uchagani
+[@w1ll1am23]: https://github.com/w1ll1am23
+[@wburgers]: https://github.com/wburgers
+[@webdjoe]: https://github.com/webdjoe
+[@zeehio]: https://github.com/zeehio
+[@zemerick1]: https://github.com/zemerick1
+[@zewelor]: https://github.com/zewelor
+[air_quality docs]: /components/air_quality/
+[alarm_control_panel.mqtt docs]: /components/alarm_control_panel.mqtt/
+[alarmdecoder docs]: /components/alarmdecoder/
+[alert docs]: /components/alert/
+[ambient_station docs]: /components/ambient_station/
+[amcrest docs]: /components/amcrest/
+[api docs]: /components/api/
+[asuswrt docs]: /components/asuswrt/
+[auth docs]: /components/auth/
+[automation docs]: /components/automation/
+[binary_sensor.trend docs]: /components/binary_sensor.trend/
+[binary_sensor.workday docs]: /components/binary_sensor.workday/
+[camera docs]: /components/camera/
+[camera.ffmpeg docs]: /components/camera.ffmpeg/
+[camera.generic docs]: /components/camera.generic/
+[camera.proxy docs]: /components/camera.proxy/
+[camera.xeoma docs]: /components/camera.xeoma/
+[cast docs]: /components/cast/
+[cisco_mobility_express docs]: /components/cisco_mobility_express/
+[climate.ephember docs]: /components/climate.ephember/
+[climate.eq3btsmart docs]: /components/climate.eq3btsmart/
+[climate.honeywell docs]: /components/climate.honeywell/
+[climate.netatmo docs]: /components/climate.netatmo/
+[cloud docs]: /components/cloud/
+[config docs]: /components/config/
+[device_tracker docs]: /components/device_tracker/
+[emulated_hue docs]: /components/emulated_hue/
+[enigma2 docs]: /components/enigma2/
+[firetv docs]: /components/firetv/
+[frontend docs]: /components/frontend/
+[google_assistant docs]: /components/google_assistant/
+[group docs]: /components/group/
+[hassio docs]: /components/hassio/
+[homekit_controller docs]: /components/homekit_controller/
+[homematic docs]: /components/homematic/
+[homematicip_cloud docs]: /components/homematicip_cloud/
+[http docs]: /components/http/
+[huawei_lte docs]: /components/huawei_lte/
+[ifttt docs]: /components/ifttt/
+[ihc docs]: /components/ihc/
+[image_processing docs]: /components/image_processing/
+[image_processing.opencv docs]: /components/image_processing.opencv/
+[image_processing.tensorflow docs]: /components/image_processing.tensorflow/
+[knx docs]: /components/knx/
+[konnected docs]: /components/konnected/
+[lametric docs]: /components/lametric/
+[light docs]: /components/light/
+[light.flux_led docs]: /components/light.flux_led/
+[light.ihc docs]: /components/light.ihc/
+[light.mystrom docs]: /components/light.mystrom/
+[light.nanoleaf docs]: /components/light.nanoleaf/
+[logbook docs]: /components/logbook/
+[lutron docs]: /components/lutron/
+[media_extractor docs]: /components/media_extractor/
+[media_player.anthemav docs]: /components/media_player.anthemav/
+[media_player.dlna_dmr docs]: /components/media_player.dlna_dmr/
+[media_player.enigma2 docs]: /components/media_player.enigma2/
+[media_player.firetv docs]: /components/media_player.firetv/
+[mobile_app docs]: /components/mobile_app/
+[modbus docs]: /components/modbus/
+[mqtt docs]: /components/mqtt/
+[ness_alarm docs]: /components/ness_alarm/
+[netatmo docs]: /components/netatmo/
+[notify docs]: /components/notify/
+[notify.sendgrid docs]: /components/notify.sendgrid/
+[onboarding docs]: /components/onboarding/
+[openuv docs]: /components/openuv/
+[ps4 docs]: /components/ps4/
+[rainmachine docs]: /components/rainmachine/
+[remote docs]: /components/remote/
+[remote.harmony docs]: /components/remote.harmony/
+[satel_integra docs]: /components/satel_integra/
+[scene docs]: /components/scene/
+[script docs]: /components/script/
+[sense docs]: /components/sense/
+[sensor.deutsche_bahn docs]: /components/sensor.deutsche_bahn/
+[sensor.discogs docs]: /components/sensor.discogs/
+[sensor.dsmr docs]: /components/sensor.dsmr/
+[sensor.flunearyou docs]: /components/sensor.flunearyou/
+[sensor.konnected docs]: /components/sensor.konnected/
+[sensor.loopenergy docs]: /components/sensor.loopenergy/
+[sensor.mopar docs]: /components/sensor.mopar/
+[sensor.netdata docs]: /components/sensor.netdata/
+[sensor.nmbs docs]: /components/sensor.nmbs/
+[sensor.pollen docs]: /components/sensor.pollen/
+[sensor.seventeentrack docs]: /components/sensor.seventeentrack/
+[sensor.starlingbank docs]: /components/sensor.starlingbank/
+[sensor.synologydsm docs]: /components/sensor.synologydsm/
+[sensor.systemmonitor docs]: /components/sensor.systemmonitor/
+[sensor.tof docs]: /components/sensor.tof/
+[sensor.whois docs]: /components/sensor.whois/
+[smartthings docs]: /components/smartthings/
+[sonos docs]: /components/sonos/
+[stream docs]: /components/stream/
+[switch.mystrom docs]: /components/switch.mystrom/
+[switch.vesync docs]: /components/switch.vesync/
+[tellstick docs]: /components/tellstick/
+[tesla docs]: /components/tesla/
+[tplink docs]: /components/tplink/
+[tts docs]: /components/tts/
+[utility_meter docs]: /components/utility_meter/
+[velbus docs]: /components/velbus/
+[velux docs]: /components/velux/
+[water_heater docs]: /components/water_heater/
+[websocket_api docs]: /components/websocket_api/
+[zeroconf docs]: /components/zeroconf/
+[zha docs]: /components/zha/
+[zwave docs]: /components/zwave/
From 8db1129f5c44655cdd14091a339f6e6ab4bf13e9 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Wed, 13 Mar 2019 21:21:48 -0700
Subject: [PATCH 59/71] Update 2019-03-20-release-90.markdown
---
source/_posts/2019-03-20-release-90.markdown | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown
index 7ce76490ba6..8f0ce5d97a0 100644
--- a/source/_posts/2019-03-20-release-90.markdown
+++ b/source/_posts/2019-03-20-release-90.markdown
@@ -13,9 +13,23 @@ og_image: /images/blog/2019-03-release-90/components.png
- - Remote connection available for Home Assistant Cloud! Check out the cloud page in config
- - New stream component to stream cameras smoothly to frontend and other devices like Chromecast. Initial version only supports h264 codec. Each camera integration will need to be updated for it.
- - User groups! Restrict admin access to users ([at least UI wise](https://developers.home-assistant.io/blog/2019/03/11/user-permissions.html))
+Remote connection available for Home Assistant Cloud! Check out the cloud page in config to get going.
+
+## {% linkable_title Streams %}
+
+New stream component to stream cameras smoothly to frontend and other devices like Chromecast. Initial version only supports h264 codec. Each camera integration will need to be updated for it.
+
+Add to config: `stream:`. Now there is a new camera.play_stream service.
+
+
+
+
+
+## {% linkable_title User Groups %}
+
+User groups! Restrict admin access to users ([at least UI wise](https://developers.home-assistant.io/blog/2019/03/11/user-permissions.html))
+
+
## {% linkable_title New Platforms %}
From 0983468be6c5a4a1971b5b9869b43b937d730da8 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Thu, 14 Mar 2019 16:29:20 -0700
Subject: [PATCH 60/71] Mention ST cloudhooks
---
source/_posts/2019-03-20-release-90.markdown | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown
index 8f0ce5d97a0..c4ccc1d40b2 100644
--- a/source/_posts/2019-03-20-release-90.markdown
+++ b/source/_posts/2019-03-20-release-90.markdown
@@ -29,6 +29,10 @@ Add to config: `stream:`. Now there is a new camera.play_stream service.
User groups! Restrict admin access to users ([at least UI wise](https://developers.home-assistant.io/blog/2019/03/11/user-permissions.html))
+## {% linkable_title Smarter SmartThings %}
+
+If you use Home Assistant Cloud, you will now be able to set up SmartThings without exposing your instance to the internet, by leveraging cloudhooks.
+
From 10d3e79bf366c47b69a0f1f9c71e5f78f7a9eeef Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Fri, 15 Mar 2019 10:39:46 -0700
Subject: [PATCH 61/71] Add video
---
source/_posts/2019-03-20-release-90.markdown | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown
index c4ccc1d40b2..ee7c98d4ac0 100644
--- a/source/_posts/2019-03-20-release-90.markdown
+++ b/source/_posts/2019-03-20-release-90.markdown
@@ -11,8 +11,6 @@ categories: Release-Notes
og_image: /images/blog/2019-03-release-90/components.png
---
-
-
Remote connection available for Home Assistant Cloud! Check out the cloud page in config to get going.
## {% linkable_title Streams %}
@@ -33,8 +31,11 @@ User groups! Restrict admin access to users ([at least UI wise](https://develope
If you use Home Assistant Cloud, you will now be able to set up SmartThings without exposing your instance to the internet, by leveraging cloudhooks.
+## {% linkable_title Improved integration setup flow %}
-
+
+
+
## {% linkable_title New Platforms %}
From f4c7638706b0aa67450b9cf746e7bbea222109bb Mon Sep 17 00:00:00 2001
From: Daniel Shokouhi
Date: Thu, 14 Mar 2019 17:11:35 -0700
Subject: [PATCH 62/71] Add troubleshooting section (#8940)
* Add troubleshooting section
When I first attempted to setup the stream component in my dev environment I had the following errors that were only solved by installing these packages. When I moved to a second pi to do further testing I again needed to run the same commands to setup the component so this will be helpful to any user who has the same error.
* Update stream.markdown
---
source/_components/stream.markdown | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/source/_components/stream.markdown b/source/_components/stream.markdown
index 56453247b30..aa31666b926 100644
--- a/source/_components/stream.markdown
+++ b/source/_components/stream.markdown
@@ -25,3 +25,19 @@ To enable this component, add the following lines to your `configuration.yaml` f
# Example configuration.yaml entry
stream:
```
+
+## {% linkable_title Troubleshooting %}
+
+Some users on manual installs may see the following error in their logs after restarting:
+
+```
+2019-03-12 08:49:59 ERROR (SyncWorker_5) [homeassistant.util.package] Unable to install package av==6.1.2: Command "/home/pi/home-assistant/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-udfl2b3t/av/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-ftn5zmh2/install-record.txt --single-version-externally-managed --compile --install-headers /home/pi/home-assistant/include/site/python3.6/av" failed with error code 1 in /tmp/pip-install-udfl2b3t/av/
+2019-03-12 08:49:59 ERROR (MainThread) [homeassistant.requirements] Not initializing stream because could not install requirement av==6.1.2
+2019-03-12 08:49:59 ERROR (MainThread) [homeassistant.setup] Setup failed for stream: Could not install all requirements.
+```
+
+If you see this error you can solve it by running the following commands and restarting Home Assistant (commands do not need to be ran as the `homeassistant` user):
+
+```
+sudo apt-get install -y python-dev pkg-config libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libavresample-dev libavfilter-dev
+```
From e1ae87bb08e9d0a78c266b902b21f126b77ae9c2 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Fri, 15 Mar 2019 11:42:41 -0700
Subject: [PATCH 63/71] area sentence
---
source/_posts/2019-03-20-release-90.markdown | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown
index ee7c98d4ac0..cf9048f316f 100644
--- a/source/_posts/2019-03-20-release-90.markdown
+++ b/source/_posts/2019-03-20-release-90.markdown
@@ -31,7 +31,11 @@ User groups! Restrict admin access to users ([at least UI wise](https://develope
If you use Home Assistant Cloud, you will now be able to set up SmartThings without exposing your instance to the internet, by leveraging cloudhooks.
-## {% linkable_title Improved integration setup flow %}
+## {% linkable_title Area love %}
+
+Allow using areas in services instead of specifying entities.
+
+Improved integration setup flow:
From 57804f9aa4093b4d2a9218e4a8a123622f89c1d0 Mon Sep 17 00:00:00 2001
From: cogneato
Date: Tue, 19 Mar 2019 02:43:43 -0600
Subject: [PATCH 64/71] Describe Breaking Changes for .90
Added descriptive breaking changes. Still waiting on Netatmo and possibly suggestions for MQTT
---
source/_posts/2019-03-20-release-90.markdown | 24 ++++++++++++--------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown
index cf9048f316f..84d6028776a 100644
--- a/source/_posts/2019-03-20-release-90.markdown
+++ b/source/_posts/2019-03-20-release-90.markdown
@@ -74,15 +74,21 @@ Experiencing issues introduced by this release? Please report them in our [issue
## {% linkable_title Breaking Changes %}
-- Added support for multiple Netatmo thermostats/valves ([@shanbs] - [#19407]) ([netatmo docs]) ([climate.netatmo docs]) (breaking change)
-- Return Netatmo climate operation_mode instead of boiler status ([@shanbs] - [#21633]) ([netatmo docs]) (breaking change)
-- Utility Meter offset defined by a time_period ([@dgomes] - [#20926]) ([utility_meter docs]) (breaking change)
-- Introduce target_temperature_state_address for climate device ([@marvin-w] - [#21541]) ([knx docs]) (breaking change)
-- Deprecate http.api_password ([@awarecan] - [#21884]) ([api docs]) ([frontend docs]) ([hassio docs]) ([http docs]) ([mqtt docs]) ([websocket_api docs]) ([zeroconf docs]) ([camera.proxy docs]) (breaking change)
-- Changed from nanoleaf_aurora to nanoleaf ([@Oro] - [#21913]) ([light.nanoleaf docs]) (breaking change)
-- Rename 'firetv' to 'androidtv' and add Android TV functionality ([@JeffLIrion] - [#21944]) (breaking change)
-- Tellstick sensor configuration cleanup ([@endor-force] - [#21402]) ([tellstick docs]) (breaking change)
-- Pass Message object to MQTT message callbacks ([@emontnemery] - [#21959]) ([mqtt docs]) (breaking change)
+- __Netatmo__ Added support for multiple Netatmo thermostats/valves ([@shanbs] - [#19407]) ([netatmo docs]) ([climate.netatmo docs])
+- __Netatmo__ Return Netatmo climate operation_mode instead of boiler status ([@shanbs] - [#21633]) ([netatmo docs])
+- __Utility Meter__ - Currently the offset configuration parameter is an integer that limits daily cycles to have offsets in days, monthly cycles to have offsets in months, etc.
+This change increases the flexibility of offset by making it a more flexible time period that can be described in a combination of hours, days, months, etc. This makes it possible for a yearly cycle to start at a given day of a given month. Please see the updated documentation for further details. ([@dgomes] - [#20926]) ([utility_meter docs])
+- __KNX__ - An update for xknx to version 0.10.0 requires users to update their configuration by changing `target_temperature_address` to `target_temperature_state_address`. Other fixes and features:
+ * Connection config can now be configured in xknx.yml.
+ * Introduce a configurable rate limit which limits the number of KNX telegrams sent to the bus per second.
+ * Users who configured their lights via xknx.yml no longer need to manually set min_kelvin and max_kelvin (fixes #21251) ([@marvin-w] - [#21541]) ([knx docs])
+- __http.api_password__ - __Deprecated__ - Users who are still using api_password for authentication will need to move it under auth_providers. Please see the [updated documentation](https://www.home-assistant.io/docs/authentication/providers/#legacy-api-password) for further details.
+Those who don't make this change will see an INFO level reminder in the Home Assistant logs until the fix is made for a time, but please note, __api_password authentication will eventually be removed completely__ and we advise users to change to use one of the [other authentication methods](https://www.home-assistant.io/docs/authentication/providers/#available-auth-providers). ([@awarecan] - [#21884]) ([api docs]) ([frontend docs]) ([hassio docs]) ([http docs]) ([mqtt docs]) ([websocket_api docs]) ([zeroconf docs]) ([camera.proxy docs])
+- __Nanoleaf__ - The Nanoleaf component now supports _both_ nanoleaf lights, Aurora and Canvas. As a result of this change the user needs to change the platform from `nanoleaf_aurora` to `nanoleaf` ([@Oro] - [#21913]) ([light.nanoleaf docs])
+- __FireTV__- is now androidtv. Instead of having near-duplicate integrations for androidtv and firetv, the decision was made to combine them into one.
+Users will need to change `- platform: firetv` to `- platform: androidtv` in their configuration. ([@JeffLIrion] - [#21944])
+- __Tellstick__ - Some configuration cleanup. The way Tellsick sensor configuration was set up using dynamic values for named sensors will not be supported in future versions of Home Assistant. Users that have configured the optional named sensors initiated with only_named will have to update their configuration. Make sure to check the updated documentation for further details. ([@endor-force] - [#21402]) ([tellstick docs])
+- __MQTT__ - Pass `Message` object to MQTT message callbacks instead of `topic`, `message` and `qos`. Users of custom components please take note, these values are now available on the passed in message object: `msg.topic`, `msg.message`, `msg.qos`. ([@emontnemery] - [#21959]) ([mqtt docs])
## {% linkable_title All changes %}
From 51826a9c32c990ce7f76ac999e7f7db0d0e0eee3 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Tue, 19 Mar 2019 09:46:44 -0700
Subject: [PATCH 65/71] Update 2019-03-20-release-90.markdown
---
source/_posts/2019-03-20-release-90.markdown | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown
index 84d6028776a..c592e36815e 100644
--- a/source/_posts/2019-03-20-release-90.markdown
+++ b/source/_posts/2019-03-20-release-90.markdown
@@ -88,7 +88,8 @@ Those who don't make this change will see an INFO level reminder in the Home Ass
- __FireTV__- is now androidtv. Instead of having near-duplicate integrations for androidtv and firetv, the decision was made to combine them into one.
Users will need to change `- platform: firetv` to `- platform: androidtv` in their configuration. ([@JeffLIrion] - [#21944])
- __Tellstick__ - Some configuration cleanup. The way Tellsick sensor configuration was set up using dynamic values for named sensors will not be supported in future versions of Home Assistant. Users that have configured the optional named sensors initiated with only_named will have to update their configuration. Make sure to check the updated documentation for further details. ([@endor-force] - [#21402]) ([tellstick docs])
-- __MQTT__ - Pass `Message` object to MQTT message callbacks instead of `topic`, `message` and `qos`. Users of custom components please take note, these values are now available on the passed in message object: `msg.topic`, `msg.message`, `msg.qos`. ([@emontnemery] - [#21959]) ([mqtt docs])
+- __MQTT__ - Pass `Message` object to MQTT message callbacks instead of `topic`, `message` and `qos`. Users of custom components please take note, these values are now available on the passed in message object: `msg.topic`, `msg.message`, `msg.qos`. The old method will continue to work for now but will print warnings. ([@emontnemery] - [#21959]) ([mqtt docs])
+- __Default Config__ - Default config no longer contains the discovery component. That is now part of the initial written configuration.yaml. If you rely on default config and want to use discovery, add `discovery:` back to your configuration.yaml.
## {% linkable_title All changes %}
From 85bdf49c5b0dfa59fad09cb7b896a9c28cd7c12c Mon Sep 17 00:00:00 2001
From: cogneato
Date: Tue, 19 Mar 2019 12:45:37 -0600
Subject: [PATCH 66/71] Fixed up and combined Netatmo breaking changes
---
source/_posts/2019-03-20-release-90.markdown | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown
index c592e36815e..79d07728e68 100644
--- a/source/_posts/2019-03-20-release-90.markdown
+++ b/source/_posts/2019-03-20-release-90.markdown
@@ -74,10 +74,11 @@ Experiencing issues introduced by this release? Please report them in our [issue
## {% linkable_title Breaking Changes %}
-- __Netatmo__ Added support for multiple Netatmo thermostats/valves ([@shanbs] - [#19407]) ([netatmo docs]) ([climate.netatmo docs])
-- __Netatmo__ Return Netatmo climate operation_mode instead of boiler status ([@shanbs] - [#21633]) ([netatmo docs])
+- __Netatmo__
+ * Added support for multiple Netatmo thermostats/valves allowing the user to specify different homes or rooms! Please check the [updated documentation](https://www.home-assistant.io/components/climate.netatmo/) for configuration details. ([@shanbs] - [#19407]) ([netatmo docs]) ([climate.netatmo docs])
+ * `current_operation` will no longer return the the boiler status, but the operation_mode. For example, heat, cool, or idle. Please check the [updated documentation](https://www.home-assistant.io/components/climate.netatmo/) for more details. ([@shanbs] - [#21633]) ([netatmo docs])
- __Utility Meter__ - Currently the offset configuration parameter is an integer that limits daily cycles to have offsets in days, monthly cycles to have offsets in months, etc.
-This change increases the flexibility of offset by making it a more flexible time period that can be described in a combination of hours, days, months, etc. This makes it possible for a yearly cycle to start at a given day of a given month. Please see the updated documentation for further details. ([@dgomes] - [#20926]) ([utility_meter docs])
+This change increases the flexibility of offset by making it a more flexible time period that can be described in a combination of hours, days, months, etc. This makes it possible for a yearly cycle to start at a given day of a given month. Please see the [updated documentation](https://www.home-assistant.io/components/utility_meter/) for the new configuration options. ([@dgomes] - [#20926]) ([utility_meter docs])
- __KNX__ - An update for xknx to version 0.10.0 requires users to update their configuration by changing `target_temperature_address` to `target_temperature_state_address`. Other fixes and features:
* Connection config can now be configured in xknx.yml.
* Introduce a configurable rate limit which limits the number of KNX telegrams sent to the bus per second.
From 9304032a1443143c4a8377e59052d0eba4d337fa Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Tue, 19 Mar 2019 22:15:30 -0700
Subject: [PATCH 67/71] Fix broken links
---
....markdown => cisco_mobility_express.markdown} | 0
..._player.enigma2.markdown => enigma2.markdown} | 2 ++
source/_components/onboarding.markdown | 16 ++++++++++++++++
3 files changed, 18 insertions(+)
rename source/_components/{device_tracker.cisco_mobility_express.markdown => cisco_mobility_express.markdown} (100%)
rename source/_components/{media_player.enigma2.markdown => enigma2.markdown} (98%)
create mode 100644 source/_components/onboarding.markdown
diff --git a/source/_components/device_tracker.cisco_mobility_express.markdown b/source/_components/cisco_mobility_express.markdown
similarity index 100%
rename from source/_components/device_tracker.cisco_mobility_express.markdown
rename to source/_components/cisco_mobility_express.markdown
diff --git a/source/_components/media_player.enigma2.markdown b/source/_components/enigma2.markdown
similarity index 98%
rename from source/_components/media_player.enigma2.markdown
rename to source/_components/enigma2.markdown
index 03712d7ab7f..11aaf3b7050 100644
--- a/source/_components/media_player.enigma2.markdown
+++ b/source/_components/enigma2.markdown
@@ -12,6 +12,8 @@ ha_category: Media Player
featured: false
ha_release: "0.90"
ha_iot_class: "Local Polling"
+redirect_from:
+ - /components/media_player.enigma2/
---
The `enigma2` platform allows you to control a Linux based set-top box which is running [Enigma2](https://github.com/oe-alliance/oe-alliance-enigma2) with the OpenWebif plugin installed.
diff --git a/source/_components/onboarding.markdown b/source/_components/onboarding.markdown
new file mode 100644
index 00000000000..fa50caaf358
--- /dev/null
+++ b/source/_components/onboarding.markdown
@@ -0,0 +1,16 @@
+---
+layout: page
+title: "Onboarding"
+description: "This component is responsible for providing the onboarding endpoints."
+date: 2018-03-19 21:04
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: home-assistant.png
+ha_category: Other
+ha_release: 0.73
+ha_qa_scale: internal
+---
+
+This component creates the endpoints for the onboarding that is built into Home Assistant. There are no configuration options for this component directly.
From a18b2bd9fbce246564e7d515dd8bee4ea2697f4e Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Wed, 20 Mar 2019 10:24:50 -0700
Subject: [PATCH 68/71] Update some notes
---
source/_posts/2019-03-20-release-90.markdown | 152 ++++++++++++++++--
.../images/blog/2019-03-release-90/remote.png | Bin 0 -> 33842 bytes
2 files changed, 137 insertions(+), 15 deletions(-)
create mode 100644 source/images/blog/2019-03-release-90/remote.png
diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown
index 79d07728e68..acac390ea59 100644
--- a/source/_posts/2019-03-20-release-90.markdown
+++ b/source/_posts/2019-03-20-release-90.markdown
@@ -1,18 +1,22 @@
---
layout: post
-title: "0.90: TBD - Update date"
-description: "TBD"
-date: 2019-03-13 00:11:03
+title: "0.90: Remote UI, Streams, User Groups"
+description: "Bring your next level home to the next next leve."
+date: 2019-03-20 00:11:03
date_formatted: "March 20, 2019"
author: Paulus Schoutsen
author_twitter: balloob
comments: true
categories: Release-Notes
-og_image: /images/blog/2019-03-release-90/components.png
+og_image: /images/blog/2019-03-release-90/remote.png
---
Remote connection available for Home Assistant Cloud! Check out the cloud page in config to get going.
+
+
+
+
## {% linkable_title Streams %}
New stream component to stream cameras smoothly to frontend and other devices like Chromecast. Initial version only supports h264 codec. Each camera integration will need to be updated for it.
@@ -45,16 +49,17 @@ Improved integration setup flow:
- Add support for homekit controller sensors ([@cpopp] - [#21535]) ([homekit_controller docs]) (new-platform)
- Add separate on/off ids on manual configured IHC lights ([@msvinth] - [#20253]) ([ihc docs]) ([light.ihc docs]) (new-platform)
+- mobile_app component ([@robbiet480] - [#21475]) ([mobile_app docs]) (beta fix) (new-platform)
- Add storage helper to ZHA and use it for the device node descriptor ([@dmulcahey] - [#21500]) ([zha docs]) (new-platform)
-- Add support for DHT and DS18B20 sensors via Konnected firmware ([@heythisisnate] - [#21189]) ([konnected docs]) ([sensor.konnected docs]) (new-platform)
- Add SmartThingsAccelCluster to ZHA binary_sensor ([@roblandry] - [#21609]) ([zha docs]) (new-platform)
- Xfinity Gateway device_tracker platform ([@cisasteelersfan] - [#21026]) ([device_tracker docs]) (new-platform)
-- Add Time of Flight Sensor using VL53L1X ([@josemotta] - [#21230]) ([sensor.tof docs]) (new-platform)
+- Add Time of Flight Sensor using VL53L1X ([@josemotta] - [#21230]) ([tof docs]) (new-platform)
- Adding enigma2 media player ([@fbradyirl] - [#21271]) ([media_player.enigma2 docs]) (new-platform)
- Add support for Cisco Mobility Express ([@fbradyirl] - [#21531]) ([cisco_mobility_express docs]) (new-platform)
- Add ClearPass Policy Manger device tracker ([@zemerick1] - [#21673]) ([device_tracker docs]) (new-platform)
-- Live Streams Component ([@hunterjm] - [#21473]) ([camera docs]) ([stream docs]) ([camera.ffmpeg docs]) (new-platform)
+- Live Streams Component ([@hunterjm] - [#21473]) ([camera docs]) ([stream docs]) (new-platform)
- Add Weather Sensors to Homematic IP ([@SukramJ] - [#21887]) ([homematicip_cloud docs]) (new-platform)
+- Mobile App: Sensors ([@robbiet480] - [#21854]) ([mobile_app docs]) (beta fix) (new-platform)
## {% linkable_title New Features %}
@@ -74,7 +79,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
## {% linkable_title Breaking Changes %}
-- __Netatmo__
+- __Netatmo__
* Added support for multiple Netatmo thermostats/valves allowing the user to specify different homes or rooms! Please check the [updated documentation](https://www.home-assistant.io/components/climate.netatmo/) for configuration details. ([@shanbs] - [#19407]) ([netatmo docs]) ([climate.netatmo docs])
* `current_operation` will no longer return the the boiler status, but the operation_mode. For example, heat, cool, or idle. Please check the [updated documentation](https://www.home-assistant.io/components/climate.netatmo/) for more details. ([@shanbs] - [#21633]) ([netatmo docs])
- __Utility Meter__ - Currently the offset configuration parameter is an integer that limits daily cycles to have offsets in days, monthly cycles to have offsets in months, etc.
@@ -92,6 +97,41 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
- __MQTT__ - Pass `Message` object to MQTT message callbacks instead of `topic`, `message` and `qos`. Users of custom components please take note, these values are now available on the passed in message object: `msg.topic`, `msg.message`, `msg.qos`. The old method will continue to work for now but will print warnings. ([@emontnemery] - [#21959]) ([mqtt docs])
- __Default Config__ - Default config no longer contains the discovery component. That is now part of the initial written configuration.yaml. If you rely on default config and want to use discovery, add `discovery:` back to your configuration.yaml.
+## {% linkable_title Beta Fixes %}
+
+- mobile_app component ([@robbiet480] - [#21475]) ([mobile_app docs]) (beta fix) (new-platform)
+- Remove UTF8 decoding for Waze ([@philhawthorne] - [#22020]) ([sensor.waze_travel_time docs]) (beta fix)
+- Bring back the boiler status ([@cgtobi] - [#22021]) ([netatmo docs]) (beta fix)
+- Update additional platforms to use new MQTT message callback ([@emontnemery] - [#22030]) ([device_tracker docs]) ([mqtt_eventstream docs]) ([owntracks docs]) ([snips docs]) ([alarm_control_panel.manual_mqtt docs]) ([automation.mqtt docs]) ([sensor.arwn docs]) ([sensor.mqtt_room docs]) (beta fix)
+- Fix lifx light async error ([@awarecan] - [#22031]) ([lifx docs]) (beta fix)
+- Fix Google Assistant User with Cloud ([@pvizeli] - [#22042]) ([cloud docs]) (beta fix)
+- Mobile App: Require encryption for registrations that support it ([@robbiet480] - [#21852]) ([mobile_app docs]) (beta fix)
+- Mobile App: Support rendering multiple templates at once ([@robbiet480] - [#21851]) ([mobile_app docs]) (beta fix)
+- Mobile App: Update Location schema updates & device ID generation ([@robbiet480] - [#21849]) ([mobile_app docs]) (beta fix)
+- Mobile App: Register devices into the registry ([@robbiet480] - [#21856]) ([mobile_app docs]) (beta fix)
+- Mobile App: Sensors ([@robbiet480] - [#21854]) ([mobile_app docs]) (beta fix) (new-platform)
+- Bump androidtv to 0.0.11 ([@JeffLIrion] - [#22025]) ([androidtv docs]) (beta fix)
+- Mobile App: Enable loading via discovery (surprise inside!) ([@robbiet480] - [#22027]) ([mobile_app docs]) (beta fix)
+- Mobile App: Discovery to default configuration.yaml, zeroconf to default_config ([@robbiet480] - [#22028]) ([default_config docs]) ([mobile_app docs]) (beta fix)
+- Mobile App: Expose Cloud Remote UI FQDN in registration response ([@robbiet480] - [#22055]) ([cloud docs]) ([mobile_app docs]) (beta fix)
+- Return config entry ID after creation ([@balloob] - [#22060]) ([config docs]) (beta fix)
+- Correct context ([@awarecan] - [#22061]) ([alexa docs]) (beta fix)
+- Binary Sensor for Remote UI & Fix timezone ([@pvizeli] - [#22076]) (beta fix)
+- Bump androidtv to 0.0.12 ([@JeffLIrion] - [#22072]) ([androidtv docs]) (beta fix)
+- Prevent cloud remote UI when using 127.0.0.1 as trusted network ([@balloob] - [#22093]) ([cloud docs]) (beta fix)
+- Beta Fix: FFMPEG and Stream component ([@hunterjm] - [#22091]) ([camera.ffmpeg docs]) ([camera.generic docs]) ([camera.onvif docs]) (beta fix)
+- delete previously removed service option from services yaml ([@hunterjm] - [#22123]) (beta fix)
+- Remove hass.config from aws_lambda notify payload ([@awarecan] - [#22125]) (breaking change) (beta fix)
+- Allow non-admins to listen to certain events ([@balloob] - [#22137]) ([websocket_api docs]) (beta fix)
+- Bump tado version ([@WebSpider] - [#22145]) ([tado docs]) (beta fix)
+- Fix resetting access token on streams with keepalive ([@hunterjm] - [#22148]) ([stream docs]) (beta fix)
+- Remove config check over supervisor ([@pvizeli] - [#22156]) ([hassio docs]) (beta fix)
+- Upgrade toonapilib to 3.2.2 + lower interval ([@frenck] - [#22160]) ([toon docs]) (beta fix)
+- bump total_connect_client to 0.24 ([@uchagani] - [#22166]) ([totalconnect docs]) (beta fix)
+- Update Hass-NabuCasa 0.8 ([@pvizeli] - [#22177]) ([cloud docs]) (beta fix)
+- Always load Hass.io component on Hass.io ([@balloob] - [#22185]) (beta fix)
+- Fixed typing errors ([@Swamp-Ig] - [#22207]) (beta fix)
+
## {% linkable_title All changes %}
- Upgrade pyopenuv to 1.0.9 ([@bachya] - [#21513]) ([openuv docs])
@@ -120,6 +160,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
- bump pyxeoma to 1.4.1 to fix and close #19306 ([@trunet] - [#21568]) ([camera.xeoma docs])
- fix exception ([@dmulcahey] - [#21571]) ([zha docs])
- Add config entry remove callback ([@andrewsayre] - [#21576])
+- mobile_app component ([@robbiet480] - [#21475]) ([mobile_app docs]) (beta fix) (new-platform)
- Memory optimization for logbook ([@amelchio] - [#21549]) ([logbook docs])
- Get room hints from areas ([@Swamp-Ig] - [#21519]) ([google_assistant docs])
- Centrally define Watt ([@dgomes] - [#21570])
@@ -135,7 +176,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
- SmartThings remove SmartApp/Automation on integration removal ([@andrewsayre] - [#21594]) ([smartthings docs]) (new-feature)
- Bumping aioasuswrt ([@kennedyshead] - [#21627]) ([asuswrt docs])
- Add device HMIP-eTRV-C to HomematicIP ([@SukramJ] - [#21612])
-- Add 'app_name' property and 'apps' config entry to Fire TV ([@JeffLIrion] - [#21601]) ([firetv docs])
+- Add 'app_name' property and 'apps' config entry to Fire TV ([@JeffLIrion] - [#21601]) ([androidtv docs])
- Add optional sender name for SendGrid ([@srirams] - [#21610]) ([notify.sendgrid docs])
- fix derived rate, fixes #20097 ([@wburgers] - [#21620]) ([sensor.dsmr docs])
- Bump pyflunearyou to 1.0.3 ([@bachya] - [#21634]) ([sensor.flunearyou docs])
@@ -147,7 +188,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
- Fix actions with tox ([@pvizeli] - [#21642])
- GitHub Workflow ([@pvizeli] - [#21643])
- Upgrade youtube_dl to 2019.03.01 ([@fabaff] - [#21647]) ([media_extractor docs])
-- Add support for DHT and DS18B20 sensors via Konnected firmware ([@heythisisnate] - [#21189]) ([konnected docs]) ([sensor.konnected docs]) (new-platform)
+- Add support for DHT and DS18B20 sensors via Konnected firmware ([@heythisisnate] - [#21189]) ([konnected docs])
- Allow targeting areas in service calls ([@balloob] - [#21472]) ([alert docs]) ([automation docs]) ([group docs]) ([image_processing docs]) ([light docs]) ([scene docs]) ([script docs])
- Add camera name to logs ([@arsaboo] - [#21653]) ([camera.generic docs])
- Netatmo, handle missing thermostat devices ([@Danielhiversen] - [#21651]) ([netatmo docs])
@@ -177,7 +218,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
- Allow light toggle service to accept all turn on params ([@zewelor] - [#20912]) ([light docs])
- Introduce target_temperature_state_address for climate device ([@marvin-w] - [#21541]) ([knx docs]) (breaking change)
- Upgrade pylint to 2.3.1 ([@scop] - [#21789])
-- Add Time of Flight Sensor using VL53L1X ([@josemotta] - [#21230]) ([sensor.tof docs]) (new-platform)
+- Add Time of Flight Sensor using VL53L1X ([@josemotta] - [#21230]) ([tof docs]) (new-platform)
- Upgrade huawei-lte-api to 1.1.5 ([@scop] - [#21791]) ([huawei_lte docs])
- Adding enigma2 media player ([@fbradyirl] - [#21271]) ([media_player.enigma2 docs]) (new-platform)
- Bump loopenergy to 0.1.0. Loop updated their socket.io server from 0.9 to 2.0 - which required a library update. ([@pavoni] - [#21809]) ([sensor.loopenergy docs])
@@ -237,7 +278,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
- Add update user command ([@balloob] - [#21922]) ([config docs])
- Offload Cloud component ([@pvizeli] - [#21937]) ([cloud docs])
- Upgrade schiene to 0.23 ([@fabaff] - [#21940]) ([sensor.deutsche_bahn docs])
-- Live Streams Component ([@hunterjm] - [#21473]) ([camera docs]) ([stream docs]) ([camera.ffmpeg docs]) (new-platform)
+- Live Streams Component ([@hunterjm] - [#21473]) ([camera docs]) ([stream docs]) (new-platform)
- Update lametric icon to be HA logo ([@robbiet480] - [#21957]) ([lametric docs])
- Avoid playing queue pollution when restoring Sonos snapshots ([@amelchio] - [#21963]) ([sonos docs])
- Update to sense component to fully be async ([@kbickar] - [#21698]) ([sense docs])
@@ -275,6 +316,37 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
- Remove default temp unit ([@andrewsayre] - [#22012]) ([smartthings docs])
- Allow all success status codes in REST notify response ([@isabellaalstrom] - [#22011]) ([notify docs])
- Check updated_date for list and pick first ([@GGeezes] - [#22008])
+- Remove UTF8 decoding for Waze ([@philhawthorne] - [#22020]) ([sensor.waze_travel_time docs]) (beta fix)
+- Bring back the boiler status ([@cgtobi] - [#22021]) ([netatmo docs]) (beta fix)
+- Update additional platforms to use new MQTT message callback ([@emontnemery] - [#22030]) ([device_tracker docs]) ([mqtt_eventstream docs]) ([owntracks docs]) ([snips docs]) ([alarm_control_panel.manual_mqtt docs]) ([automation.mqtt docs]) ([sensor.arwn docs]) ([sensor.mqtt_room docs]) (beta fix)
+- Fix lifx light async error ([@awarecan] - [#22031]) ([lifx docs]) (beta fix)
+- Fix Google Assistant User with Cloud ([@pvizeli] - [#22042]) ([cloud docs]) (beta fix)
+- Mobile App: Require encryption for registrations that support it ([@robbiet480] - [#21852]) ([mobile_app docs]) (beta fix)
+- Mobile App: Support rendering multiple templates at once ([@robbiet480] - [#21851]) ([mobile_app docs]) (beta fix)
+- Mobile App: Update Location schema updates & device ID generation ([@robbiet480] - [#21849]) ([mobile_app docs]) (beta fix)
+- Mobile App: Register devices into the registry ([@robbiet480] - [#21856]) ([mobile_app docs]) (beta fix)
+- Mobile App: Sensors ([@robbiet480] - [#21854]) ([mobile_app docs]) (beta fix) (new-platform)
+- Bump androidtv to 0.0.11 ([@JeffLIrion] - [#22025]) ([androidtv docs]) (beta fix)
+- Mobile App: Enable loading via discovery (surprise inside!) ([@robbiet480] - [#22027]) ([mobile_app docs]) (beta fix)
+- Mobile App: Discovery to default configuration.yaml, zeroconf to default_config ([@robbiet480] - [#22028]) ([default_config docs]) ([mobile_app docs]) (beta fix)
+- Mobile App: Expose Cloud Remote UI FQDN in registration response ([@robbiet480] - [#22055]) ([cloud docs]) ([mobile_app docs]) (beta fix)
+- Return config entry ID after creation ([@balloob] - [#22060]) ([config docs]) (beta fix)
+- Correct context ([@awarecan] - [#22061]) ([alexa docs]) (beta fix)
+- Binary Sensor for Remote UI & Fix timezone ([@pvizeli] - [#22076]) (beta fix)
+- Bump androidtv to 0.0.12 ([@JeffLIrion] - [#22072]) ([androidtv docs]) (beta fix)
+- Prevent cloud remote UI when using 127.0.0.1 as trusted network ([@balloob] - [#22093]) ([cloud docs]) (beta fix)
+- Beta Fix: FFMPEG and Stream component ([@hunterjm] - [#22091]) ([camera.ffmpeg docs]) ([camera.generic docs]) ([camera.onvif docs]) (beta fix)
+- delete previously removed service option from services yaml ([@hunterjm] - [#22123]) (beta fix)
+- Remove hass.config from aws_lambda notify payload ([@awarecan] - [#22125]) (breaking change) (beta fix)
+- Allow non-admins to listen to certain events ([@balloob] - [#22137]) ([websocket_api docs]) (beta fix)
+- Bump tado version ([@WebSpider] - [#22145]) ([tado docs]) (beta fix)
+- Fix resetting access token on streams with keepalive ([@hunterjm] - [#22148]) ([stream docs]) (beta fix)
+- Remove config check over supervisor ([@pvizeli] - [#22156]) ([hassio docs]) (beta fix)
+- Upgrade toonapilib to 3.2.2 + lower interval ([@frenck] - [#22160]) ([toon docs]) (beta fix)
+- bump total_connect_client to 0.24 ([@uchagani] - [#22166]) ([totalconnect docs]) (beta fix)
+- Update Hass-NabuCasa 0.8 ([@pvizeli] - [#22177]) ([cloud docs]) (beta fix)
+- Always load Hass.io component on Hass.io ([@balloob] - [#22185]) (beta fix)
+- Fixed typing errors ([@Swamp-Ig] - [#22207]) (beta fix)
[#19034]: https://github.com/home-assistant/home-assistant/pull/19034
[#19407]: https://github.com/home-assistant/home-assistant/pull/19407
@@ -301,6 +373,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[#21454]: https://github.com/home-assistant/home-assistant/pull/21454
[#21472]: https://github.com/home-assistant/home-assistant/pull/21472
[#21473]: https://github.com/home-assistant/home-assistant/pull/21473
+[#21475]: https://github.com/home-assistant/home-assistant/pull/21475
[#21488]: https://github.com/home-assistant/home-assistant/pull/21488
[#21498]: https://github.com/home-assistant/home-assistant/pull/21498
[#21499]: https://github.com/home-assistant/home-assistant/pull/21499
@@ -404,9 +477,14 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[#21841]: https://github.com/home-assistant/home-assistant/pull/21841
[#21846]: https://github.com/home-assistant/home-assistant/pull/21846
[#21848]: https://github.com/home-assistant/home-assistant/pull/21848
+[#21849]: https://github.com/home-assistant/home-assistant/pull/21849
[#21850]: https://github.com/home-assistant/home-assistant/pull/21850
+[#21851]: https://github.com/home-assistant/home-assistant/pull/21851
+[#21852]: https://github.com/home-assistant/home-assistant/pull/21852
[#21853]: https://github.com/home-assistant/home-assistant/pull/21853
+[#21854]: https://github.com/home-assistant/home-assistant/pull/21854
[#21855]: https://github.com/home-assistant/home-assistant/pull/21855
+[#21856]: https://github.com/home-assistant/home-assistant/pull/21856
[#21858]: https://github.com/home-assistant/home-assistant/pull/21858
[#21866]: https://github.com/home-assistant/home-assistant/pull/21866
[#21869]: https://github.com/home-assistant/home-assistant/pull/21869
@@ -457,6 +535,32 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[#22010]: https://github.com/home-assistant/home-assistant/pull/22010
[#22011]: https://github.com/home-assistant/home-assistant/pull/22011
[#22012]: https://github.com/home-assistant/home-assistant/pull/22012
+[#22020]: https://github.com/home-assistant/home-assistant/pull/22020
+[#22021]: https://github.com/home-assistant/home-assistant/pull/22021
+[#22025]: https://github.com/home-assistant/home-assistant/pull/22025
+[#22027]: https://github.com/home-assistant/home-assistant/pull/22027
+[#22028]: https://github.com/home-assistant/home-assistant/pull/22028
+[#22030]: https://github.com/home-assistant/home-assistant/pull/22030
+[#22031]: https://github.com/home-assistant/home-assistant/pull/22031
+[#22042]: https://github.com/home-assistant/home-assistant/pull/22042
+[#22055]: https://github.com/home-assistant/home-assistant/pull/22055
+[#22060]: https://github.com/home-assistant/home-assistant/pull/22060
+[#22061]: https://github.com/home-assistant/home-assistant/pull/22061
+[#22072]: https://github.com/home-assistant/home-assistant/pull/22072
+[#22076]: https://github.com/home-assistant/home-assistant/pull/22076
+[#22091]: https://github.com/home-assistant/home-assistant/pull/22091
+[#22093]: https://github.com/home-assistant/home-assistant/pull/22093
+[#22123]: https://github.com/home-assistant/home-assistant/pull/22123
+[#22125]: https://github.com/home-assistant/home-assistant/pull/22125
+[#22137]: https://github.com/home-assistant/home-assistant/pull/22137
+[#22145]: https://github.com/home-assistant/home-assistant/pull/22145
+[#22148]: https://github.com/home-assistant/home-assistant/pull/22148
+[#22156]: https://github.com/home-assistant/home-assistant/pull/22156
+[#22160]: https://github.com/home-assistant/home-assistant/pull/22160
+[#22166]: https://github.com/home-assistant/home-assistant/pull/22166
+[#22177]: https://github.com/home-assistant/home-assistant/pull/22177
+[#22185]: https://github.com/home-assistant/home-assistant/pull/22185
+[#22207]: https://github.com/home-assistant/home-assistant/pull/22207
[@Cereal2nd]: https://github.com/Cereal2nd
[@Danielhiversen]: https://github.com/Danielhiversen
[@Dullage]: https://github.com/Dullage
@@ -471,6 +575,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[@SukramJ]: https://github.com/SukramJ
[@Swamp-Ig]: https://github.com/Swamp-Ig
[@ToRvaLDz]: https://github.com/ToRvaLDz
+[@WebSpider]: https://github.com/WebSpider
[@alandtse]: https://github.com/alandtse
[@amelchio]: https://github.com/amelchio
[@andrewsayre]: https://github.com/andrewsayre
@@ -481,6 +586,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[@balloob]: https://github.com/balloob
[@beavis9k]: https://github.com/beavis9k
[@c-soft]: https://github.com/c-soft
+[@cgtobi]: https://github.com/cgtobi
[@chilicheech]: https://github.com/chilicheech
[@cisasteelersfan]: https://github.com/cisasteelersfan
[@cmsimike]: https://github.com/cmsimike
@@ -496,6 +602,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[@epleypa]: https://github.com/epleypa
[@fabaff]: https://github.com/fabaff
[@fbradyirl]: https://github.com/fbradyirl
+[@frenck]: https://github.com/frenck
[@gertdb]: https://github.com/gertdb
[@heythisisnate]: https://github.com/heythisisnate
[@hunterjm]: https://github.com/hunterjm
@@ -516,6 +623,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[@nudded]: https://github.com/nudded
[@nugget]: https://github.com/nugget
[@pavoni]: https://github.com/pavoni
+[@philhawthorne]: https://github.com/philhawthorne
[@piitaya]: https://github.com/piitaya
[@pnbruckner]: https://github.com/pnbruckner
[@pvizeli]: https://github.com/pvizeli
@@ -538,20 +646,25 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[@zemerick1]: https://github.com/zemerick1
[@zewelor]: https://github.com/zewelor
[air_quality docs]: /components/air_quality/
+[alarm_control_panel.manual_mqtt docs]: /components/alarm_control_panel.manual_mqtt/
[alarm_control_panel.mqtt docs]: /components/alarm_control_panel.mqtt/
[alarmdecoder docs]: /components/alarmdecoder/
[alert docs]: /components/alert/
+[alexa docs]: /components/alexa/
[ambient_station docs]: /components/ambient_station/
[amcrest docs]: /components/amcrest/
+[androidtv docs]: /components/androidtv/
[api docs]: /components/api/
[asuswrt docs]: /components/asuswrt/
[auth docs]: /components/auth/
[automation docs]: /components/automation/
+[automation.mqtt docs]: /docs/automation/trigger/#mqtt-trigger
[binary_sensor.trend docs]: /components/binary_sensor.trend/
[binary_sensor.workday docs]: /components/binary_sensor.workday/
[camera docs]: /components/camera/
[camera.ffmpeg docs]: /components/camera.ffmpeg/
[camera.generic docs]: /components/camera.generic/
+[camera.onvif docs]: /components/camera.onvif/
[camera.proxy docs]: /components/camera.proxy/
[camera.xeoma docs]: /components/camera.xeoma/
[cast docs]: /components/cast/
@@ -562,10 +675,10 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[climate.netatmo docs]: /components/climate.netatmo/
[cloud docs]: /components/cloud/
[config docs]: /components/config/
+[default_config docs]: /components/default_config/
[device_tracker docs]: /components/device_tracker/
[emulated_hue docs]: /components/emulated_hue/
[enigma2 docs]: /components/enigma2/
-[firetv docs]: /components/firetv/
[frontend docs]: /components/frontend/
[google_assistant docs]: /components/google_assistant/
[group docs]: /components/group/
@@ -583,6 +696,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[knx docs]: /components/knx/
[konnected docs]: /components/konnected/
[lametric docs]: /components/lametric/
+[lifx docs]: /components/lifx/
[light docs]: /components/light/
[light.flux_led docs]: /components/light.flux_led/
[light.ihc docs]: /components/light.ihc/
@@ -598,12 +712,14 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[mobile_app docs]: /components/mobile_app/
[modbus docs]: /components/modbus/
[mqtt docs]: /components/mqtt/
+[mqtt_eventstream docs]: /components/mqtt_eventstream/
[ness_alarm docs]: /components/ness_alarm/
[netatmo docs]: /components/netatmo/
[notify docs]: /components/notify/
[notify.sendgrid docs]: /components/notify.sendgrid/
[onboarding docs]: /components/onboarding/
[openuv docs]: /components/openuv/
+[owntracks docs]: /components/owntracks/
[ps4 docs]: /components/ps4/
[rainmachine docs]: /components/rainmachine/
[remote docs]: /components/remote/
@@ -612,13 +728,14 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[scene docs]: /components/scene/
[script docs]: /components/script/
[sense docs]: /components/sense/
+[sensor.arwn docs]: /components/sensor.arwn/
[sensor.deutsche_bahn docs]: /components/sensor.deutsche_bahn/
[sensor.discogs docs]: /components/sensor.discogs/
[sensor.dsmr docs]: /components/sensor.dsmr/
[sensor.flunearyou docs]: /components/sensor.flunearyou/
-[sensor.konnected docs]: /components/sensor.konnected/
[sensor.loopenergy docs]: /components/sensor.loopenergy/
[sensor.mopar docs]: /components/sensor.mopar/
+[sensor.mqtt_room docs]: /components/sensor.mqtt_room/
[sensor.netdata docs]: /components/sensor.netdata/
[sensor.nmbs docs]: /components/sensor.nmbs/
[sensor.pollen docs]: /components/sensor.pollen/
@@ -626,15 +743,20 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the
[sensor.starlingbank docs]: /components/sensor.starlingbank/
[sensor.synologydsm docs]: /components/sensor.synologydsm/
[sensor.systemmonitor docs]: /components/sensor.systemmonitor/
-[sensor.tof docs]: /components/sensor.tof/
+[sensor.waze_travel_time docs]: /components/sensor.waze_travel_time/
[sensor.whois docs]: /components/sensor.whois/
[smartthings docs]: /components/smartthings/
+[snips docs]: /components/snips/
[sonos docs]: /components/sonos/
[stream docs]: /components/stream/
[switch.mystrom docs]: /components/switch.mystrom/
[switch.vesync docs]: /components/switch.vesync/
+[tado docs]: /components/tado/
[tellstick docs]: /components/tellstick/
[tesla docs]: /components/tesla/
+[tof docs]: /components/tof/
+[toon docs]: /components/toon/
+[totalconnect docs]: /components/totalconnect/
[tplink docs]: /components/tplink/
[tts docs]: /components/tts/
[utility_meter docs]: /components/utility_meter/
diff --git a/source/images/blog/2019-03-release-90/remote.png b/source/images/blog/2019-03-release-90/remote.png
new file mode 100644
index 0000000000000000000000000000000000000000..d8845668696b2e6b2cc80ff37e56923e2ddb85c3
GIT binary patch
literal 33842
zcmd42WmsH66DB$YLV%C}gAMMk0|eLL?iPG-3GVJ>u;2_HBuH=w?l8E800DwSa0%{m
zC*QYspZjP3-Q8#Z&2(2+SG^_Or|KN2nu_cj3}Orb0Psd$PD%p+K!pGR$gyb1h!I;G
zLu>%x1-qJ(mh|)U^WEJYO4-Hj?JXrG<@NRT<>e)UW_Ne@?Ck9D@bK^7zb7XrJ3Bj%
zPfweho9*rG7Z(>_zkaQ*t{xp7U0+|Ho16Rc<;(K&a@y=Y4Gqoi)e|El4qudhEbF%cUZ>+I|-(r`svb?N5jcJ=Ti
zDk@sD_Hb};z{SP2b@{Y(@|cp6QuzCR;qOyLMTN1kabaQM-0_o+jt)CJyM%-UZutdy
z#bsGp+2Z12LqkL5%Kg;T)cM`>z`%gNzrUKAnqKGi(B5NudU|GNrmU=N&-Nn}3RO^0
z2pPX^YHG@!zn`9-E?vIoSrzcUxWk^WK*#0AX?PX3*j+K>_
zLD%)ij~{DmYomYMxeVSC5fLROCQctca@SoM7#OIvU9F!#O&&aY4&O4@T-L8Y@I2gmZ|DesrCBDj~{{cKZ}>{qx*LoHy$ke
zZWLOs{YP(#7Vq7QdK?FC?X#LhOE*-@mXzuaIZAeoil+*y8hgiQ&6{?M23NAXe*F%u
zF9!fZy5yxKw7h>G&Vt_nC;=$o6Q|7ecbtYlGk046ClL?;s2`w~4+6-50a}cx!RnX*
z{AeUoJY@0z-BXc+#$?k7=jFsa`|B&K&5DEzkOBkR)i41F88{FE;30Rv?gwD^15Vz9
z|MySDb_fVB6q8*YeAR+ymy*48bD2?6PtV{
zDlk6aGbrN$S_beQ8~LN6ba@QuPRAq3Xou==ea)1y1BhA%I1mtJR6tu^$>;+-n{)DC
z^3q#FM2!}n{M$+W^u#muzRuvyP%dAH9dCeOjY0v
zVEu2iv{oqqufCwBsd*i}75W%6M;v$n_B^p+oUuWi%mhB@9Sg9PVE~Ah5sjz%IK{#%
zUgKgJ0oF!aC0T318Mxdpx0yKsLLPHWT)^{uPIWVY=K;hgZa528#u)|Zc8tmg1G)9m
zU?37jOz{^+xSQ<*5BqRdMWtBfds4vsQOidNt9{&X8tgW+LVyezfKIBa+)mIi@JDW}
z4jvm(h8UTVG#~kZkZzket5NI~0LXuR^nE~X%wN^h?m!Vh8KStHOIu9LdTqgh6pUg#
zv8k*t{~7E9tQYRTu!bVZrNE3KPs&P*CMz!h=