From 6e47283c366525d09234b37374a74af280b52c94 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Wed, 3 Apr 2019 14:56:50 -0700
Subject: [PATCH 01/23] Update date
---
source/_posts/2019-04-03-release-91.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown
index 086ee1cc88b..a281728cbd2 100644
--- a/source/_posts/2019-04-03-release-91.markdown
+++ b/source/_posts/2019-04-03-release-91.markdown
@@ -2,7 +2,7 @@
layout: post
title: "0.91: More streaming, better Zigbee, cameras with ESPHome"
description: "Big update that brings goodies across the board."
-date: 2019-03-27 00:11:03
+date: 2019-04-03 00:11:03
date_formatted: "April 3, 2019"
author: Paulus Schoutsen
author_twitter: balloob
From 64327da9f835f60343dea5aab78fd0e5121adb22 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Wed, 3 Apr 2019 15:06:52 -0700
Subject: [PATCH 02/23] Update url to hasspodcast
---
source/_posts/2019-04-03-release-91.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown
index a281728cbd2..81d6e225ef0 100644
--- a/source/_posts/2019-04-03-release-91.markdown
+++ b/source/_posts/2019-04-03-release-91.markdown
@@ -17,7 +17,7 @@ It's time for release 0.91 and this release is all about streaming cameras. Home
- Support to ask Google Assistant to show your camera on its display or on a Chromecast
- Preload streams so that bringing up a stream on a device is super fast. This can be configured on a per camera basis via the camera more info dialog.
-Thanks to [@hunterjm] for all this work on this! ❤️ Check the latest release of the [Home Assistant podcast](https://hasspodcast.io/) for an interview with [@hunterjm] about streams in Home Assistant.
+Thanks to [@hunterjm] for all this work on this! ❤️ Check the latest release of the [Home Assistant podcast](https://hasspodcast.io/home-assistant-podcast-47-0-91-and-streaming-cameras-everywhere-with-jason/) for an interview with [@hunterjm] about streams in Home Assistant.
We're still in the process of updating more cameras to support the stream component. If you want to try it today, the easiest approach is to configure a [generic camera][generic docs] with a `stream_source` or buy a camera that supports the standard ONVIF protocol.
From f6668205a0fb417105f21e543403cd93992e665c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9-Marc=20Simard?=
Date: Sat, 30 Mar 2019 04:27:24 -0400
Subject: [PATCH 03/23] Document GTFS optional argument include_tomorrow
(#8491)
---
source/_components/gtfs.markdown | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/source/_components/gtfs.markdown b/source/_components/gtfs.markdown
index 63c6222f5b0..d69b79452db 100644
--- a/source/_components/gtfs.markdown
+++ b/source/_components/gtfs.markdown
@@ -71,4 +71,9 @@ offset:
required: false
default: 0
type: [integer, time]
+include_tomorrow:
+ description: Also search through tomorrow's schedule if no more departures are set for today.
+ required: false
+ default: false
+ type: boolean
{% endconfiguration %}
From 245964582c5ae28dad58f3ae8fbdda7ee8b108e8 Mon Sep 17 00:00:00 2001
From: SNoof85
Date: Sat, 30 Mar 2019 10:04:59 +0100
Subject: [PATCH 04/23] Freebox add Wifi switch documentation (#8843)
* Add Wifi switch documentation
* Added switch desc
* Added switch HA Category
* :pencil2: Tweaks
---
source/_components/freebox.markdown | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/source/_components/freebox.markdown b/source/_components/freebox.markdown
index a2e8344c895..9fc7f1c2f6c 100644
--- a/source/_components/freebox.markdown
+++ b/source/_components/freebox.markdown
@@ -12,6 +12,7 @@ ha_category:
- Network
- Presence Detection
- Sensor
+ - Switch
ha_release: 0.85
ha_iot_class: Local Polling
redirect_from:
@@ -25,6 +26,7 @@ There is currently support for the following device types within Home Assistant:
* [Sensor](#sensor) with traffic metrics
* [Device tracker](#presence-detection) for connected devices
+* [Switch](#switch) to control WiFi
## {% linkable_title Configuration %}
@@ -63,6 +65,9 @@ The first time Home Assistant will connect to your Freebox, you will need to
authorize it by pressing the right arrow on the facade of the Freebox when
prompted to do so.
+To make the WiFi switch working you will have to add "Modification des réglages de la Freebox
+" permission to Home Assitant application in "Paramètres de la Freebox" > "Gestion des accès" > "Applications".
+
### {% linkable_title Supported routers %}
Only the routers with Freebox OS are supported:
@@ -91,3 +96,7 @@ refreshes the devices states.
This platform offers you sensors to monitor a Freebox router. The monitored conditions are
instant upload and download rates in KB/s.
+
+## {% linkable_title Switch %}
+
+This platform offers you a switch to toggle the Wifi on or off. This will toggle all WiFi interfaces of the router (all SSID and all bands).
From e5fc2e201780a78e5a98021e9c1315840b92f6f6 Mon Sep 17 00:00:00 2001
From: Ryan Claussen
Date: Sat, 30 Mar 2019 03:28:51 -0500
Subject: [PATCH 05/23] Add hourly forecast sensor creation and documentation
for Dark Sky Sensor (#8871)
---
source/_components/darksky.markdown | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/source/_components/darksky.markdown b/source/_components/darksky.markdown
index 646a49f0fab..7a87aaf2f32 100644
--- a/source/_components/darksky.markdown
+++ b/source/_components/darksky.markdown
@@ -37,6 +37,9 @@ sensor:
api_key: YOUR_API_KEY
forecast:
- 0
+ hourly_forecast:
+ - 0
+ - 1
monitored_conditions:
- summary
- icon
@@ -54,7 +57,11 @@ name:
default: Dark Sky
type: string
forecast:
- description: List of days in the 7-day forecast you would like to receive data on, starting with today as day 0 and ending with day 7. Any condition from `monitored_conditions` with a daily forecast by Dark Sky will generate a sensor with entity_id `_`.
+ description: List of days in the 7-day forecast you would like to receive data on, starting with today as day 0 and ending with day 7. Any condition from `monitored_conditions` with a daily forecast by Dark Sky will generate a sensor with entity_id `_d`.
+ required: false
+ type: list
+hourly_forecast:
+ description: List of hours in the 48-hour forecast you would like to receive data on, starting with this hour as hour 0 and ending with hour 48. Any condition from `monitored_conditions` with an hourly forecast by Dark Sky will generate a sensor with entity_id `_h`.
required: false
type: list
language:
@@ -219,3 +226,4 @@ While the platform is called "darksky" the sensors will show up in Home Assistan
More details about the API are available in the [Dark Sky API documentation][].
[Dark Sky API documentation]: https://darksky.net/dev/docs
+
From e89cba9ef1c903e20b225b6bc721b0188ce426ed Mon Sep 17 00:00:00 2001
From: Heine Furubotten
Date: Sat, 30 Mar 2019 16:52:43 +0100
Subject: [PATCH 06/23] Entur doc for omit_non_boarding and
number_of_departures (#8921)
---
.../_components/entur_public_transport.markdown | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/source/_components/entur_public_transport.markdown b/source/_components/entur_public_transport.markdown
index d34a4b3f558..2685aeddad3 100644
--- a/source/_components/entur_public_transport.markdown
+++ b/source/_components/entur_public_transport.markdown
@@ -15,13 +15,13 @@ redirect_from:
- /components/sensor.entur_public_transport/
---
-The `entur_public_transport` sensor gives real-time departure information for the next two departures from any bus stop, car ferry quay, train station, airport and person ferries quay in Norway.
+The `entur_public_transport` sensor gives real-time departure information for the next departures from any bus stop, car ferry quay, train station, airport and person ferries quay in Norway.
-For each stop place given in the configuration, a sensor will be mounted for that stop place. It will give remaining minutes until the nearest departure in the state, but also next departure in the attributes. Information about if the departure is monitored in real-time or is from scheduled times, and how many minutes there is in delays, are included as well.
+For each stop place given in the configuration, a sensor will be mounted for that stop place. It will give remaining minutes until the nearest departure in the state, but also next departures in the attributes. Information about if the departure is monitored in real-time or is from scheduled times, and how many minutes there is in delays, are included as well.
Real-time data is fetched from [Entur](https://www.entur.org). Entur is a service which collects and delivers information about all public transport available in Norway under an [open source license](https://data.norge.no/nlod/no).
-Note that the underlying API is rate limited and to avoid getting your instance blocked from entur the sensor is only fetching new information once a minute. It's recommended to only define one platform in the configuration at one time to not hit the rate limiting.
+
Note that the underlying API is rate limited and to avoid getting your instance blocked from entur the sensor is only fetching new information every 45 seconds. It's recommended to not schedule updates more often than this.
## {% linkable_title Configuration %}
@@ -59,6 +59,16 @@ line_whitelist:
description: List of lines that should be whitelisted in the resulting sensors, and will only show when the defined lines are expected to leave the platform or station. All lines that you want on any of the sensors should be included in the list.
required: false
type: list
+omit_non_boarding:
+ description: If the sensors should remove resulting departures that doesn't take new passangers, or is at last stop.
+ required: false
+ type: boolean
+ default: true
+number_of_departures:
+ description: The number of departures that should be shown in the sensor attributes. Maximum 10, Minimum 2.
+ required: false
+ type: integer
+ default: 2
{% endconfiguration %}
## {% linkable_title Example usage %}
From 600d708c4321d4c405cc855e017fe7321ff6d423 Mon Sep 17 00:00:00 2001
From: Fredrik Erlandsson
Date: Sat, 30 Mar 2019 09:31:13 +0100
Subject: [PATCH 07/23] Add AirBase zone switches (#9040)
* added AirBase switched
* Remove redirect_from switch
---
source/_components/daikin.markdown | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/source/_components/daikin.markdown b/source/_components/daikin.markdown
index f7dcd4d9de9..11678457a2c 100644
--- a/source/_components/daikin.markdown
+++ b/source/_components/daikin.markdown
@@ -11,8 +11,10 @@ logo: daikin.png
ha_category:
- Climate
- Sensor
+ - Switch
ha_release: 0.59
ha_iot_class: Local Polling
+ha_qa_scale: platinum
redirect_from:
- /components/climate.daikin/
- /components/sensor.daikin/
@@ -24,6 +26,7 @@ There is currently support for the following device types within Home Assistant:
- [Climate](#climate)
- [Sensor](#sensor)
+- [Switch](#switch)
## {% linkable_title Supported hardware %}
@@ -71,3 +74,7 @@ The `daikin` sensor platform integrates Daikin air conditioning systems into Hom
- Inside temperature
- Outside temperature
+
+## {% linkable_title Switch %}
+
+Daikin AirBase units exposes zones (typically rooms) that can be switched on/off individually.
From 948a96c5979e8be0d4a9d7497828f2b846daa61e Mon Sep 17 00:00:00 2001
From: dilruacs
Date: Sat, 30 Mar 2019 09:32:43 +0100
Subject: [PATCH 08/23] Remove ADB public key, file is not needed anymore
(#9054)
* Remove references to adbkey.pub
* Upstream library does not need the public key anymore
---
source/_components/androidtv.markdown | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/source/_components/androidtv.markdown b/source/_components/androidtv.markdown
index 7ccb6a023f6..9e8ef468b3c 100644
--- a/source/_components/androidtv.markdown
+++ b/source/_components/androidtv.markdown
@@ -70,7 +70,7 @@ port:
default: 5555
type: integer
adbkey:
- description: The path to your `adbkey` file. Note that the file `adbkey.pub` must be in the same directory.
+ description: The path to your `adbkey` file.
required: false
type: string
adb_server_ip:
@@ -158,12 +158,12 @@ If you get a "Device authentication required, no keys available" error when tryi
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)):
+Once you've successfully connected to your Android TV / Fire TV via the command `adb connect `, the file `adbkey` will be created on your computer. The default locations for this file is (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.
+Copy the `adbkey` file to your Home Assistant folder and add the path to the `adbkey` file to your configuration.
## {% linkable_title ADB Troubleshooting %}
@@ -181,8 +181,6 @@ If you receive the error message `Error while setting up platform androidtv` in
* 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.
- * Newer ADB binaries do not generate an `adbkey.pub` file for you. This can be resolved by creating an empty `adbkey.pub` in the same directory, e.g., by running `touch adbkey.pub`.
-
## {% linkable_title Services %}
### {% linkable_title `media_player.select_source` %}
From dd0514c3d4dad48f7dfe44b5ed8f7d53d33c4387 Mon Sep 17 00:00:00 2001
From: Jason Hunter
Date: Sat, 30 Mar 2019 04:25:52 -0400
Subject: [PATCH 09/23] add record services (#9062)
---
source/_components/camera.markdown | 29 ++++++++++++++++++++++++++++-
source/_components/stream.markdown | 29 +++++++++++++++++++++++++++++
2 files changed, 57 insertions(+), 1 deletion(-)
diff --git a/source/_components/camera.markdown b/source/_components/camera.markdown
index 0aee4c4e8dc..8a0f52d2577 100644
--- a/source/_components/camera.markdown
+++ b/source/_components/camera.markdown
@@ -57,7 +57,7 @@ Take a snapshot from a camera.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. |
-| `filename ` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}`{% endraw %}. |
+| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}`{% endraw %}. |
The path part of `filename` must be an entry in the `whitelist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file.
@@ -73,6 +73,33 @@ action:
```
{% endraw %}
+#### {% linkable_title Service `record` %}
+
+Make a `.mp4` recording from a camera stream. Requires `stream` component to be set up.
+
+Both `duration` and `lookback` options are suggestions, but should be consistent per camera. The actual length of the recording may vary. It is suggested that you tweak these settings to fit your needs.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. |
+| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/{{ entity_id }}.mp4`{% endraw %}. |
+| `duration` | yes | Target recording length (in seconds). Default: 30 |
+| `lookback` | yes | Target lookback period (in seconds) to include in addition to duration. Only available if there is currently an active HLS stream. Default: 0 |
+
+The path part of `filename` must be an entry in the `whitelist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file.
+
+For example, the following action in an automation would take a recording from "yourcamera" and save it to /tmp with a timestamped filename.
+
+{% raw %}
+```yaml
+action:
+ service: camera.record
+ data:
+ entity_id: camera.yourcamera
+ filename: '/tmp/{{ entity_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4'
+```
+{% 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.
diff --git a/source/_components/stream.markdown b/source/_components/stream.markdown
index aa31666b926..1e67b3322e3 100644
--- a/source/_components/stream.markdown
+++ b/source/_components/stream.markdown
@@ -26,6 +26,35 @@ To enable this component, add the following lines to your `configuration.yaml` f
stream:
```
+### {% linkable_title Services %}
+
+Once loaded, the `stream` platform will expose services that can be called to perform various actions.
+
+#### {% linkable_title Service `record` %}
+
+Make a `.mp4` recording from a provided stream. While this service can be called directly, it is used internally by the [`camera.record`](/components/camera#service-record) service.
+
+Both `duration` and `lookback` options are suggestions, but should be consistent per stream. The actual length of the recording may vary. It is suggested that you tweak these settings to fit your needs.
+
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ----------- |
+| `stream_source` | no | The input source for the stream, e.g., `rtsp://my.stream.feed:554`. |
+| `filename` | no | The file name string. Variable is `entity_id`, e.g., `/tmp/my_stream.mp4`. |
+| `duration` | yes | Target recording length (in seconds). Default: 30 |
+| `lookback` | yes | Target lookback period (in seconds) to include in addition to duration. Only available if there is currently an active HLS stream for `stream_source`. Default: 0 |
+
+The path part of `filename` must be an entry in the `whitelist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file.
+
+For example, the following action in an automation would take a recording from `rtsp://my.stream.feed:554` and save it to `/tmp`.
+
+```yaml
+action:
+ service: camera.record
+ data:
+ stream_source: rtsp://my.stream.feed:554
+ filename: '/tmp/my_stream.mp4'
+```
+
## {% linkable_title Troubleshooting %}
Some users on manual installs may see the following error in their logs after restarting:
From a960d52e78a30a11b9f2c50a8df2499f10aac8fd Mon Sep 17 00:00:00 2001
From: Rohan Kapoor
Date: Sat, 30 Mar 2019 01:44:55 -0700
Subject: [PATCH 10/23] Split out mopar into multiple platforms (#9068)
* Split out mopar into multiple platforms
* :fire: Removed unnecessary redirects
---
source/_components/mopar.markdown | 32 +++++++++++++++++--------------
1 file changed, 18 insertions(+), 14 deletions(-)
diff --git a/source/_components/mopar.markdown b/source/_components/mopar.markdown
index fc7306b5c70..61ccb5e898c 100644
--- a/source/_components/mopar.markdown
+++ b/source/_components/mopar.markdown
@@ -8,17 +8,23 @@ comments: false
sharing: true
footer: true
logo: mopar.png
-ha_category: Car
+ha_category:
+ - Car
+ - Sensor
+ - Switch
+ - Lock
ha_release: 0.53
ha_iot_class: Cloud Polling
redirect_from:
- /components/sensor.mopar/
---
-The `mopar` sensor provides the following for owners of FCA vehicles with a uConnect subscription:
+The `mopar` component provides the following for owners of FCA vehicles with a uConnect subscription:
- Sensor per vehicle with vehicle health report and other meta-data
-- Service for remote commands: Lock/unlock, Engine on/off, Horn & lights
+- Lock per vehicle allowing to lock/unlock the vehicle
+- Switch per vehicle allowing to turn the engine on and off
+- A service for running the horn & lights
## {% linkable_title Setup %}
@@ -26,15 +32,14 @@ Be sure you have a [mopar.com](http://mopar.com) account with your vehicle(s) re
## {% linkable_title Configuration %}
-To enable this sensor, add the following lines to your `configuration.yaml`.
+To enable this component, add the following lines to your `configuration.yaml`. All platforms will be automatically loaded.
```yaml
# Example configuration.yaml entry
-sensor:
- - platform: mopar
- username: YOUR_USERNAME
- password: YOUR_PASSWORD
- pin: YOUR_UCONNECT_PIN
+mopar:
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+ pin: YOUR_UCONNECT_PIN
```
{% configuration %}
@@ -54,16 +59,15 @@ pin:
## {% linkable_title Service %}
-Call the `sensor.mopar_remote_command` service to perform a remote command on your vehicle.
+Call the `mopar.sound_horn` service to sound the horn and flash the lights on your vehicle.
-- **vehicle_index** (*Required*): `vehicle_index` attribute found on sensor.
-- **command** (*Required*): One of `LOCK/UNLOCK/START/STOP/HORN_LIGHT`.
+| Service data attribute | Description |
+| `vehicle_index` | The index of the vehicle to trigger. This is exposed in the sensor's device attributes. |
Example data:
```json
{
- "vehicle_index": 0,
- "command": "unlock"
+ "vehicle_index": 0
}
```
From d5c995135bea8f8ca5b62cd2b84c2741d99c1749 Mon Sep 17 00:00:00 2001
From: Erik-jan Riemers
Date: Tue, 2 Apr 2019 09:47:22 +0200
Subject: [PATCH 11/23] Update on z-wave docs because of upcoming change
(#9095)
* Update z-wave section
* :pencil2: Tweaks
---
source/_docs/z-wave/services.markdown | 25 +++++++------------------
1 file changed, 7 insertions(+), 18 deletions(-)
diff --git a/source/_docs/z-wave/services.markdown b/source/_docs/z-wave/services.markdown
index 905d85f7fd0..3c2e5f4664c 100644
--- a/source/_docs/z-wave/services.markdown
+++ b/source/_docs/z-wave/services.markdown
@@ -39,26 +39,15 @@ The `zwave` component exposes multiple services to help maintain the network. Al
| test_node | Tells the controller to send no-op command(s) to a specific node. Requires `node_id` field. You can specify amount of test_messages to send by specifying it with `messages` field. In theory, this could bring back nodes marked as "presumed dead"
| update_config | Attempt to update OZW configuration files from git to support newer devices. After you run this, wait a few minutes then stop Home Assistant. You can now back up your `zwcfg_*.xml` file, then delete the relevant entries from your `zwcfg_*.xml` (between and including `` and ``), and finally start Home Assistant. |
-The `soft_reset` and `heal_network` commands can be used as part of an automation script to help keep a Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a `heal_network` at midnight. This is a configuration option for the `zwave` component. The option defaults to `true` but can be disabled by setting `autoheal` to false. If you're having issues with your Z-Wave network, try disabling this automation.
+The `soft_reset` and `heal_network` commands can be used to help keep a Z-Wave network running reliably. This is a configuration option for the `zwave` component. The option defaults to `false` but can be enabled by setting `autoheal` to true. This, however, is bad practice since it introduces overhead that can be avoided since you only need to do a `heal_network` whenever one of the following actions are done:
+
+- Adding/Removing a new node
+- Moving a node around
+- Moving the Controller
+- Removing a Dead Node
Using the `soft_reset` function with some Z-Wave controllers can cause the Z-Wave network to hang.
-```yaml
-# Example configuration.yaml automation entry
-automation:
- - alias: test at 2:30am
- trigger:
- platform: time
- at: '2:30:00'
- action:
- service: zwave.test_network
-
- - alias: heal at 2:32am
- trigger:
- platform: time
- at: '2:32:00'
- action:
- service: zwave.heal_network
-```
+To trigger a `heal_network`, one can always use *Settings -> Z-Wave Network Management -> Heal Network* from the GUI whenever one of the above actions took place.
From 68064d61a177b4e918872a601b2f6452e83e14a8 Mon Sep 17 00:00:00 2001
From: Jason Hunter
Date: Mon, 1 Apr 2019 23:43:49 -0400
Subject: [PATCH 12/23] add preload stream section (#9097)
---
source/_components/camera.markdown | 11 ++++++++++-
.../components/camera/preload-stream.png | Bin 0 -> 504437 bytes
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 source/images/components/camera/preload-stream.png
diff --git a/source/_components/camera.markdown b/source/_components/camera.markdown
index 8a0f52d2577..bde3c074194 100644
--- a/source/_components/camera.markdown
+++ b/source/_components/camera.markdown
@@ -102,7 +102,7 @@ action:
#### {% linkable_title Service `play_stream` %}
-Play a live stream from a camera to selected media player(s). Requires `stream` component to be set up.
+Play a live stream from a camera to selected media player(s). Requires [`stream`](/components/stream) component to be set up.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
@@ -129,3 +129,12 @@ A simple way to test if you have set up your `camera` platform correctly, is to
"entity_id": "camera.living_room_camera"
}
```
+
+### {% linkable_title Preload Stream %}
+
+If your camera supports it, and the [`stream`](/components/stream) component is setup, You will notice a "Preload Stream" option in the top right of the dialog when clicking to view the camera stream. This option will keep the stream alive, and preload the feed on Home Assistant startup. This will result in reduced latency when opening the stream in the frontend, as well as when using the `play_stream` service or Google Assistant integration. It does, however, utilize more resources on your machine, so it is recommended to check CPU usage if you plan to use this feature.
+
+
+
+ Example showing the Preload Stream option in the camera dialog.
+
\ No newline at end of file
diff --git a/source/images/components/camera/preload-stream.png b/source/images/components/camera/preload-stream.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd6d5f8c22fa3a2ef1a32efa54e86343e84e6c3d
GIT binary patch
literal 504437
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