Google Cast
配置
要将 Google Cast 集成 添加到您的 Home Assistant 实例中,请使用此 My 按钮:
Google Cast 可以被 Home Assistant 自动发现。如果发现了实例, 它将显示为 已发现。您可以立即进行设置。
手动配置步骤
如果没有自动发现,请不要担心!您可以设置一个 手动集成条目:
-
浏览到您的 Home Assistant 实例。
-
转到
设置 > 设备与服务。 -
在右下角,选择
Add Integration 按钮。 -
从列表中选择 Google Cast。
-
按照屏幕上的说明完成设置。
在本地网络中支持 mDNS 发现是自动发现的必要条件。确保您的路由器启用了此功能。如果 mDNS 在您的网络中不起作用,可以按照下面提到的方式手动输入 Cast 设备的 IP 地址进行配置。
选项
Google Cast 的选项可以通过用户界面设置,具体步骤如下:
- 浏览到您的 Home Assistant 实例。
- 转到 设置 > 设备与服务。
- 如果配置了多个 Google Cast 实例,请选择您想配置的实例。
- 选择集成,然后选择 配置。
Cast 设备的 UUID 的逗号分隔列表以添加到 Home Assistant。仅在您不想添加所有可用设备时使用。 设备在通过 mDNS 发现或包含在已知主机列表中之前不会被添加。要找到设备的 UUID,请使用 mDNS 浏览器,或者高级用户可以使用以下 Python 命令(根据需要调整友好名称) - python3 -c "import pychromecast; print(pychromecast.get_listed_chromecasts(friendly_names=['Living Room TV', 'Bedroom TV', 'Office Chromecast']))"
。此选项仅在用户配置文件中启用高级模式时可见。
应忽略 CEC 数据以确定活动输入的 Chromecast 的逗号分隔列表。有关更多信息,请参阅上游文档
Home Assistant Cast
Home Assistant 有自己的 Cast 应用程序,可以在任何 Chromecast 设备上显示 Home Assistant UI。您可以通过将 Cast 实体行 添加到您的仪表板,或者通过调用 cast.show_lovelace_view
操作来使用它。该操作需要仪表板视图的路径和 Cast 设备的实体 ID,以便在设备上显示视图。必须在仪表板的 YAML 中为每个视图定义一个 path
,如 视图文档 中所述。dashboard_path
是仪表板 URL 中定义的 base_url
之后的部分,通常是 “lovelace
”。以下是一个完整的脚本配置,用于开始投射 lovelace-cast
路径的 downstairs
选项卡(注意 entity_id
在 data
下指定,而不是在操作中):
cast_downstairs_on_kitchen:
alias: "在厨房显示楼下"
sequence:
- action: cast.show_lovelace_view
data:
dashboard_path: lovelace-cast
entity_id: media_player.kitchen
view_path: downstairs
Home Assistant Cast 要求您的 Home Assistant 安装可以通过 https://
访问。如果您使用的是 Home Assistant Cloud,则无需执行任何操作。否则,您必须确保已在 配置 中配置了 external_url
。
播放媒体
Chromecast 通常不会通过 mDNS 解析主机,也会忽略来自 DHCP 的 DNS 服务器,而是使用 Google 的公共 DNS 服务器 8.8.8.8 和 8.8.4.4。
这意味着媒体 URL 必须直接指定服务器的 IP 地址,例如 http://192.168.1.1:8123/movie.mp4
,或者可以公开解析,例如 http://homeassistant.internal.mydomain.com:8123/movie.mp4
,其中 homeassistant.internal.mydomain.com
使用 Google 的 DNS 服务器解析为 192.168.1.1
。无法公开解析的主机名,例如 http://homeassistant.local:8123/movie.mp4
将无法播放。
这在投射 TTS 或本地媒体源时尤为重要;cast 集成将从本地 Home Assistant URL 投射此类媒体,可以通过导航到 设置 > 系统 > 网络 或通过配置 internal_url
来配置。
使用内置媒体播放器应用程序(默认媒体接收器)
Chromecast 可以使用内置应用程序默认媒体接收器播放许多现代 媒体(图像/音频/视频)格式
媒体需要通过 HTTP(S) 访问。Chromecast 设备不支持其他协议,例如 DLNA 或从 SMB 文件共享播放。
您可以使用 media_player.play_media
操作播放 MP3 流(如网络广播)、FLAC 文件或本地网络中的视频,只要媒体可以通过 HTTP(S) 访问。您需要将 media_content_id
设置为媒体 URL,并将 media_content_type
设置为匹配的内容类型。
# 从本地网络播放视频文件:
action: media_player.play_media
target:
entity_id: media_player.chromecast
data:
media_content_type: "video"
media_content_id: "http://192.168.0.100/movies/sample-video.mkv"
# 显示 jpeg 图像:
action: media_player.play_media
target:
entity_id: media_player.chromecast
data:
media_content_type: "image/jpeg"
media_content_id: "http://via.placeholder.com/1024x600.jpg/0B6B94/FFFFFF/?text=Hello,%20Home%20Assistant!"
额外的媒体元数据(例如标题、副标题、艺术家或专辑名称)可以传递到操作中,并将在 Chromecast 显示屏上显示。
有关可能的元数据类型和值,请查看 Google cast 文档 > MediaInformation > metadata 字段
# 从互联网播放电影,并提供额外的元数据:
action: media_player.play_media
target:
entity_id: media_player.chromecast
data:
media_content_type: "video/mp4"
media_content_id: "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
extra:
metadata:
metadataType: 1
title: "Big Buck Bunny"
subtitle: "By Blender Foundation, Licensed under the Creative Commons Attribution license"
images:
- url: "https://peach.blender.org/wp-content/uploads/watchtrailer.gif"
# 播放网络广播,并提供额外的元数据:
action: media_player.play_media
target:
entity_id: media_player.chromecast
data:
media_content_type: "audio/mp3"
media_content_id: "http://stream.tilos.hu:8000/tilos"
extra:
metadata:
metadataType: 3
title: "Radio TILOS"
artist: "LIVE"
images:
- url: "https://tilos.hu/images/kockalogo.png"
使用其他应用程序进行投射
可以使用其他应用程序而不是默认媒体接收器进行播放。
为此,media_content_type
应设置为 cast
,media_content_id
应为包含应用程序参数的 JSON 字典,包括应用程序名称。
BBC iPlayer
此应用程序不会检索其自己的元数据,因此如果您希望投射界面或媒体播放器卡显示标题和/或图像,则必须自己提供数据。请参阅下面的示例。
注意:媒体 ID 不是 URL 中的 8 位字母数字,可以通过右键单击正在播放的视频找到。例如,此剧集
2908kbps | dash (mf_cloudfront_dash_https) |
b09w70r2 | 960x540 |
其中 b09w70r2 是 media_id
媒体参数
必需:
-
app_name
:bbciplayer
-
media_id
: 项目 ID
可选:
-
is_live
: 项目是直播流
示例
示例值以投射 此剧集
alias: "将 BBC iPlayer 投射到我的 Chromecast"
sequence:
- action: media_player.play_media
target:
entity_id: media_player.my_chromecast
data:
media_content_type: cast
media_content_id: '
{
"app_name": "bbciplayer",
"media_id": "b09w70r2"
}'
extra:
metadata:
metadataType: 0
title: "Bitz & Bob"
subtitle: "Castle Makeover"
images:
- url: "https://ichef.bbci.co.uk/images/ic/1280x720/p07j4m3r.jpg"
BBC Sounds
此应用程序不会检索其自己的元数据,因此如果您希望投射界面或媒体播放器卡显示标题和/或图像,则必须自己提供数据。请参阅下面的示例。
媒体参数
必需:
-
app_name
:bbcsounds
-
media_id
: 项目 ID
可选:
-
is_live
: 项目是直播流
示例
示例值以投射 BBC Radio 1
alias: "将 BBC Sounds 投射到我的 Chromecast"
sequence:
- action: media_player.play_media
target:
entity_id: media_player.my_chromecast
data:
media_content_type: cast
media_content_id: '
{
"app_name": "bbcsounds",
"media_id": "bbc_radio_one",
"is_live": true
}'
extra:
metadata:
metadataType: 0
title: "Radio 1"
images:
- url: "https://sounds.files.bbci.co.uk/2.3.0/networks/bbc_radio_one/background_1280x720.png"
BubbleUPNP
BubbleUPNP 应用程序具有与内置默认媒体接收器应用程序类似的功能,可以在默认应用程序无法播放媒体时用作备份。
媒体参数
必需:
-
app_name
:bubbleupnp
-
media_id
: 要播放的 URL
可选:
-
media_type
: 媒体类型,例如video/mp4
、audio/mp3
、image/jpeg
,默认为video/mp4
。
示例
'cast_bubbleupnp_to_my_chromecast':
alias: "使用 BubbleUPNP 将视频投射到我的 Chromecast"
sequence:
- action: media_player.play_media
target:
entity_id: media_player.my_chromecast
data:
media_content_type: cast
media_content_id: '
{
"app_name": "bubbleupnp",
"media_id": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",
"media_type": "video/mp4"
}'
NRK Radio
查找媒体 ID
媒体 ID 可以在 URL 中找到,例如:
- 直播频道: https://radio.nrk.no/direkte/p1
,媒体 ID 是 p1
- 播客: https://radio.nrk.no/podkast/tazte_priv/l_8457deb0-4f2c-4ef3-97de-b04f2c6ef314
,媒体 ID 是 l_8457deb0-4f2c-4ef3-97de-b04f2c6ef314
- 点播节目: https://radio.nrk.no/serie/radiodokumentaren/sesong/201011/MDUP01004510
,媒体 ID 是 MDUP01004510
媒体参数
-
app_name
:nrkradio
-
media_id
: NRK Radio 媒体 ID
示例
示例值以投射 https://radio.nrk.no/podkast/tazte_priv/l_8457deb0-4f2c-4ef3-97de-b04f2c6ef314
'cast_nrkradio_to_chromecast':
alias: "将 NRK Radio 投射到 Chromecast"
sequence:
- action: media_player.play_media
target:
entity_id: media_player.chromecast
data:
media_content_type: cast
media_content_id: '
{
"app_name": "nrkradio",
"media_id": "l_8457deb0-4f2c-4ef3-97de-b04f2c6ef314"
}'
NRK TV
查找媒体 ID
- 直播节目: ID 在 URL 中,例如 https://tv.nrk.no/direkte/nrk1
,媒体 ID 是 nrk1
- 点播节目: ID 通过点击分享按钮找到,例如 https://tv.nrk.no/serie/uti-vaar-hage/sesong/2/episode/2
的分享链接是 https://tv.nrk.no/se?v=OUHA43000207
,媒体 ID 是OUHA43000207
媒体参数
-
app_name
:nrktv
-
media_id
: NRK TV 媒体 ID
示例
示例值以投射 https://tv.nrk.no/serie/uti-vaar-hage/sesong/2/episode/2
'cast_nrktv_to_chromecast':
alias: "将 NRK TV 投射到 Chromecast"
sequence:
- action: media_player.play_media
target:
entity_id: media_player.chromecast
data:
media_content_type: cast
media_content_id: '
{
"app_name": "nrktv",
"media_id": "OUHA43000207"
}'
Plex
要直接从配置的 Plex 服务器投射媒体,请设置字段 如 Plex 集成文档中所述 并在 media_content_id
前加上 plex://
:
'cast_plex_to_chromecast':
alias: "将 Plex 投射到 Chromecast"
sequence:
- action: media_player.play_media
target:
entity_id: media_player.chromecast
data:
media_content_type: movie
media_content_id: 'plex://{"library_name": "Movies", "title": "Groundhog Day"}'
Supla
注意:媒体 ID 不是 URL 中的 8 位字母数字,可以通过右键单击正在播放的音频剪辑找到。例如,此剧集
128bps | dash (mf_cloudfront_nonbidi_dash_https) |
p009ycqz |
其中 p009ycqz 是 media_id
媒体参数
必需:
-
app_name
:supla
-
media_id
: Supla 项目 ID
可选:
-
is_live
: 项目是直播流
示例
示例值以投射 https://www.supla.fi/audio/3601824
'cast_supla_to_my_chromecast':
alias: "将 supla 投射到我的 Chromecast"
sequence:
- action: media_player.play_media
target:
entity_id: media_player.my_chromecast
data:
media_content_type: cast
media_content_id: '
{
"app_name": "supla",
"media_id": "3601824"
}'
YouTube
媒体参数
必需:
-
app_name
:youtube
-
media_id
: YouTube 视频 ID
可选:
-
enqueue
: 仅排队 -
playlist_id
: 从此播放列表中播放具有media_id
的视频。请注意,仅提供playlist_id
但不提供media_id
无效。
示例
'cast_youtube_to_my_chromecast':
alias: "将 YouTube 投射到我的 Chromecast"
sequence:
- action: media_player.play_media
target:
entity_id: media_player.my_chromecast
data:
media_content_type: cast
media_content_id: '
{
"app_name": "youtube",
"media_id": "dQw4w9WgXcQ"
}'
自动发现故障排除
mDNS 依赖于 UDP 多播,可能由于各种原因而失败。如果本节中的提示都没有帮助,建议的解决方案是确保所有 cast 设备都分配了静态 IP,并配置已知主机列表。
Zeroconf 配置
Google Cast 集成依赖于 Zeroconf 集成 进行 mDNS 发现。Zeroconf 集成有一些配置选项会影响 mDNS 路由。
Cast 设备和 Home Assistant 位于不同子网
Cast 设备只能在与 Home Assistant 位于同一子网时自动发现,因为 mDNS 数据包不会跨子网路由。 在 cast 设备位于与 Home Assistant 不同子网的设置中,自动发现不推荐且不受支持。 如果无法实现,则需要在子网之间启用 mDNS 转发或配置已知主机列表。
Home Assistant 容器
在 Docker 中运行 Home Assistant 容器 时,请确保它以主机网络模式运行。不以主机网络模式运行不受 Home Assistant 项目支持,并且会导致此集成无法发现您的 Cast 设备。