Google Cast

配置

要将 Google Cast 集成 添加到您的 Home Assistant 实例中,请使用此 My 按钮:

Google Cast 可以被 Home Assistant 自动发现。如果发现了实例, 它将显示为 已发现。您可以立即进行设置。

手动配置步骤

如果没有自动发现,请不要担心!您可以设置一个 手动集成条目:

在本地网络中支持 mDNS 发现是自动发现的必要条件。确保您的路由器启用了此功能。如果 mDNS 在您的网络中不起作用,可以按照下面提到的方式手动输入 Cast 设备的 IP 地址进行配置。

选项

Google Cast 的选项可以通过用户界面设置,具体步骤如下:

  • 浏览到您的 Home Assistant 实例。
  • 转到 设置 > 设备与服务
  • 如果配置了多个 Google Cast 实例,请选择您想配置的实例。
  • 选择集成,然后选择 配置
已知主机

Cast 设备的主机名或 IP 地址的逗号分隔列表,如果 mDNS 发现不起作用,请使用此选项

允许的 UUID

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

应忽略 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_iddata 下指定,而不是在操作中):

cast_downstairs_on_kitchen:
  alias: "在厨房显示楼下"
  sequence:
    - action: cast.show_lovelace_view
      data:
        dashboard_path: lovelace-cast
        entity_id: media_player.kitchen
        view_path: downstairs

Important

Home Assistant Cast 要求您的 Home Assistant 安装可以通过 https:// 访问。如果您使用的是 Home Assistant Cloud,则无需执行任何操作。否则,您必须确保已在 配置 中配置了 external_url

播放媒体

Note

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 可以使用内置应用程序默认媒体接收器播放许多现代 媒体(图像/音频/视频)格式。作为经验法则,如果 Chrome 浏览器可以播放媒体文件,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 应设置为 castmedia_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/mp4audio/mp3image/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 中找到,例如:

媒体参数

  • 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

媒体参数

  • 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 设备。