feat: Rework casting profile and documentation (#1602)

* feat: Rework casting profile and documentation

* Apply suggestions from code review

Co-authored-by: Dermot Duffy <dermot.duffy@gmail.com>

* Some other minor details

* Update docs/usage/casting.md

Co-authored-by: Dermot Duffy <dermot.duffy@gmail.com>

* Improve const.ts

* Some other small changes

* Update docs/usage/casting.md

Co-authored-by: Dermot Duffy <dermot.duffy@gmail.com>

---------

Co-authored-by: Dermot Duffy <dermot.duffy@gmail.com>
This commit is contained in:
Felipe Santos
2024-10-02 19:45:16 -07:00
committed by GitHub
co-authored by Dermot Duffy
parent eccf50252f
commit 9098eb3483
4 changed files with 144 additions and 52 deletions
+110 -46
View File
@@ -1,18 +1,115 @@
# Casting the Card
# Casting
This card can be (Chrome) casted to a device (such as a [Nest
Hub](https://store.google.com/us/product/nest_hub_2nd_gen)) through the use of
[Home Assistant Cast](https://cast.home-assistant.io/).
This card allows casting a camera stream to a Google Cast device. You can enable the cast button with:
## Instructions
```yaml
type: custom:frigate-card
cameras:
- camera_entity: camera.office
live_provider: go2rtc
menu:
media_player:
enabled: true
```
- Visit [Home Assistant Cast](https://cast.home-assistant.io/) and click `Start Casting`
- Enter your Home Assistant URL, and authorize your account.
- Click `Start Casting` and choose the device to cast to from the browser menu.
- Choose which view/dashboard to display.
- If successful, the view will be cast to the device.
Clicking this button will allow you to choose a Google Cast device to cast the camera stream to, or the clip that is currently playing.
## Limitations
There are two different casting methods for cameras: `standard` and `dashboard` (see below).
## Standard Casting
This is the default casting method.
```yaml
type: custom:frigate-card
cameras:
- camera_entity: camera.office
live_provider: go2rtc
cast:
method: standard
menu:
media_player:
enabled: true
```
This will send the camera stream to the Google Cast device through the use of the [`media_player.play_media` Home Assistant action](https://www.home-assistant.io/integrations/media_source/#playing-media-from-a-media-source).
The main disadvantage of this method is that the stream will be played through HLS which has a **delay of around 10 seconds**, making it sub-optimal for live monitoring.
## Dashboard Casting
This method is powered by [Home Assistant Cast](https://cast.home-assistant.io) and requires additional configuration, but allows **low latency streaming** with go2rtc.
```yaml
type: custom:frigate-card
cameras:
- camera_entity: camera.office
live_provider: go2rtc
cast:
method: dashboard
dashboard:
dashboard_path: dashboard-cast
view_path: office
```
When the cast button is clicked, the card will perform the following Home Assistant action:
```yaml
action: cast.show_lovelace_view
data:
entity_id: media_player.kitchen
dashboard_path: dashboard-cast
view_path: office
```
Which in turn will cast the specified Home Assistant dashboard (and view) to the Google Cast device.
For the example above to work, a dashboard with `dashboard-cast` URL must exist:
![image](https://github.com/user-attachments/assets/67f0e145-df05-412a-8c6d-897feb5439d2)
Within that dashboard, create an `office` view and finally within that view you can place the Frigate card configured for that camera for a proper full-screen casting experience:
```yaml
views:
- title: Office
type: panel
path: office
cards:
- type: custom:frigate-card
cameras:
- camera_entity: camera.office
live_provider: go2rtc
profiles:
- low-performance
- casting
```
The `casting` profile pre-configures the card to be casted to a 16:9 screen (such as a TV), including hiding all interactive elements and the menu. The `low-performance` profile is also recommended, as normally casting devices have limited hardware capabilities.
![](https://github.com/user-attachments/assets/bd96c4ad-36f5-4501-9018-23b496e7edc5)
When casting to a Google Nest Hub, the following configuration can be used:
```yaml
type: custom:frigate-card
cameras:
- camera_entity: camera.office
live_provider: go2rtc
profiles:
- low-performance
- casting
menu:
style: hidden
dimensions:
aspect_ratio: 1024:600
```
This restores the menu and sets the aspect ratio to 1024:600, which is the resolution of the Nest Hub.
![](../images/card-on-nest-hub.jpg 'Casting on a Nest Hub :size=400')
### Limitations
Casting Home Assistant dashboards comes with a number of caveats:
@@ -20,38 +117,5 @@ Casting Home Assistant dashboards comes with a number of caveats:
([source](https://cast.home-assistant.io/faq.html)). This means clips playing
and the `ha` live provider can not work. Other live providers such as `jsmpeg`
and `webrtc-card` function correctly.
- The Javascript fullscreen API does not work (so the fullscreen button does not
work, but see below for an equivalent).
## The `casting` profile
The optional [casting profile](../configuration/profiles.md?id=casting) provides
some defaults to improve your casting experience. Use it like:
```yaml
profiles:
- casting
```
## Recommended configuration for Nest Hub
Using a `panel` dashboard with the following base configuration will result in
the card consuming the entire device screen:
### Configuration
```yaml
type: custom:frigate-card
cameras:
- camera_entity: camera.office
live_provider: go2rtc
dimensions:
aspect_ratio: 1024:600
aspect_ratio_mode: static
profile:
- casting
```
### Result
![](../images/card-on-nest-hub.jpg 'Casting on a Nest Hub :size=400')
- The Javascript fullscreen API does not work, so the fullscreen button does not
work (use a `panel` view instead).