dream/ 十二月 21, 2018/ home assistant/ 0评论

本文翻译自home assistant手册google assistant页面,原链接:https://www.home-assistant.io/components/google_assistant/

Google Assistant


google_assistant组件允许您通过Google智能助理(在您的手机或平板电脑上)或Google Home设备进行控制。

通过Home Assistant Cloud自动设置

借助Home Assistant Cloud,只需点击几下鼠标即可将您的Home Assistant实例连接到Google智能助理。使用Home Assistant Cloud,您无需处理路由器上的动态DNS,SSL证书或打开端口。只需通过用户界面登录,即可建立与云的安全连接。Home Assistant Cloud在30天免费试用后需要付费订阅。

对于Home Assistant Cloud用户,可以在此处找到文档。

手动设置

由于Google需要设置智能助理应用的方式,因此Google智能助理组件需要比大多数设置更多的设置。

要使用Google智能助理,您的Home Assistant配置必须可通过主机名和SSL证书外部访问。如果您尚未配置,则应在继续之前执行此操作。

迁移到0.80及以上版本

如果这是第一次设置Google智能助理集成,您可以跳过此部分并继续执行下面的第一次设置

自版本0.80以来,支持帐户链接的Authorization Code类型OAuth。要从0.79或更低版本迁移现有配置,您需要:

  1. 在Google控制台上Account linking的“ 操作”中更改您的设置,查找Advanced Options侧栏左下角的。
    • 改变Linking typeOAuthAuthorization Code
    • 在该Client information部分:
      • 更改Client IDhttps://oauth-redirect.googleusercontent.com/的斜杠是很重要的。
      • 输入您喜欢的任何字符串Client Secret,Home Assistant不需要此字段。
      • 更改Authorization URLhttps://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize(替换为您的实际网址)。
      • 更改Token URLhttps://[YOUR HOME ASSISTANT URL:PORT]/auth/token(替换为您的实际网址)。
    • 在该Configure your client部分:
      • 千万不要Google to transmit clientID and secret via HTTP basic auth header
    • 点击右上角的“保存”,然后点击“测试”以生成测试应用的新草稿版本。
  2. 更改您的configuration.yaml文件:
    • 删除client_idaccess_tokenagent_user_id从配置google_assistant:,因为他们不再需要。
  3. 重新启动Home Assistant,Google Home在手机上打开应用程序,然后转到Account > Settings > Assistant > Home Control,然后按3 dot icon in the top right > Manage accounts > [test] your app name > Unlink account再重新选择重新链接您的帐户[test] your app name
  4. 浏览器将打开并要求您登录Home Assistant实例,然后将重定向回Google Assistant应用程序。

如果您已将Home Assistant添加到主屏幕,则必须先将其从主屏幕中删除,否则,此HTML5应用程序将显示而不是浏览器。使用它会阻止Home Assistant重定向回Google Assistant应用程序。

第一次设置

您需要使用Google Cloud API控制台创建API密钥,该控制台允许您在不取消关联和重新链接帐户的情况下更新设备(请参阅下文)。如果您不提供,google_assistant.request_sync则不会公开该服务。建议设置此配置密钥,因为它还允许使用以下命令“Ok Google,sync my devices”。设置此组件后,每次添加要通过Google智能助理集成控制的新设备时,都需要调用此服务(或命令)。

  1. 在Google操作系统控制台上创建一个新项目。
    1. 添加/导入项目并为其命名。
    2. 点击Home Control卡片,选择Smart home推荐。
    3. 在构建部分下创建一个Action。添加您的主页助理URL https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant:,将[YOUR HOME ASSISTANT URL:PORT]域名/ IP地址和可以访问主助手的端口替换为。
    4. 点击Done。然后单击Overview,这将引导您返回应用程序详细信息屏幕。
  2. Account linking您的应用需要与Home Assistant进行互动。在该Quick Setup部分下进行设置。
    1. 保留默认值No, I only want to allow account creation on my website并选择Next。
    2. 对于Linking type选择OAuthAuthorization Code
    3. 客户端ID https://oauth-redirect.googleusercontent.com/:,尾部斜杠很重要。
    4. 客户秘密:任何你喜欢的东西,Home Assistant都不需要这个字段。
    5. 授权URL(与你的实际URL替换): https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize
    6. 令牌URL(与你的实际URL替换): https://[YOUR HOME ASSISTANT URL:PORT]/auth/token
    7. 配置您的客户端。为email和添加范围name
    8. 千万不要Google to transmit clientID and secret via HTTP basic auth header
    9. 测试说明:输入任何内容。没关系,因为你不会提交这个应用程序。

    屏幕截图:帐户关联

  3. 返回概述页面。点击Simulator下方TEST。它将创建一个新的草案版本Test App。您不必进行实际测试,但需要生成此草稿版本的测试应用程序。
  4. google_assistant组件配置添加到您的configuration.yaml文件,然后按照下面的配置指南重新启动Home Assistant 。
  5. 打开Goog​​le Home应用,然后进入Account > Settings > Assistant > Home Control
  6. 点击+标志,在底部附近,您应该[test] your app name在“添加新内容”下列出。选择该选项应该会引导您访问浏览器以登录您的Home Assistant实例,然后重定向回屏幕,您可以在其中设置设备的房间或设备的昵称。

如果您已将Home Assistant添加到主屏幕,则必须先将其从主屏幕中删除,否则,此HTML5应用程序将显示而不是浏览器。使用它会阻止Home Assistant重定向回Google Assistant应用程序。

  1. 如果您想允许其他家庭用户控制设备:
    1. 转到您在Google操作系统控制台上创建的项目的设置。
    2. 单击Test -> Simulator,然后单击右上角的Share图标。按照屏幕上的说明操作:
      1. 添加团队成员:Settings -> Permission点击Add,键入新用户的电子邮件地址并选择Project -> Viewer角色。
      2. 复制并与新用户共享链接。
      3. 当新用户使用自己的Google帐户打开链接时,它会在您的帐户下启用草稿测试应用。
    3. 让新用户访问他们的Google Assistant应用以添加[test] your app name到他们的帐户。
  2. 如果要使用该google_assistant.request_sync服务,在Home Assistant中更新设备而不取消链接和重新链接,则为您的项目启用Homegraph API:
    1. 转到Google API控制台
    2. 选择项目,然后单击“启用Homegraph API”。
    3. 转到凭据,您可以在密钥图标下的左侧导航栏中找到该凭据,然后从“创建凭据”中选择“API密钥”。
    4. 记下生成的API密钥并在配置中使用它。

 配置

现在将以下行添加到您的configuration.yaml文件中:

# Example configuration.yaml entry
google_assistant:
  project_id: YOUR_PROJECT_ID
  api_key: YOUR_API_KEY
  exposed_domains:
    - switch
    - light
    - group
  entity_config:
    switch.kitchen:
      name: CUSTOM_NAME_FOR_GOOGLE_ASSISTANT
      aliases:
        - BRIGHT_LIGHTS
        - ENTRY_LIGHTS
    light.living_room:
      expose: false
      room: LIVING_ROOM

配置变量

PROJECT_ID

字符串(必需)来自Google控制台上的操作的项目ID(看起来像words-2ab12

allow_unlock

布尔值(可选)如果为True,则允许Google智能助理解锁。

默认值:false

API_KEY

字符串(可选)您的Homegraph API密钥(用于google_assistant.request_sync服务)

expose_by_default

布尔值(可选)默认情况下,在所有支持的域中公开设备。如果设置为false,则需要公开域或向每个实体添加公开配置选项entity_config并将其设置为true。

默认值:true

exposed_domains

列表(可选)要向Google智能助理公开的实体域列表。

entity_config

地图(可选)Google智能助理的实体特定配置

<ENTITY_ID>

map(可选)要配置的实体

name

字符串(可选)要在Google智能助理中显示的实体的名称

expose

boolean(可选)强制公开/排除实体。

aliases

list(可选)也可用于引用此实体的别名

room

字符串(可选)允许将此设备与Google智能助理中的会议室相关联。

可用域名

目前,以下域名可与Google智能助理一起使用,并以默认类型列出:

  • group (on/off)
  • input boolean (on/off)
  • scene (on)
  • script (on)
  • switch (on/off)
  • fan (on/off/speed)
  • light (on/off/brightness/rgb color/color temp)
  • lock (lock/unlock (若要允许助手解锁,allow_unlock在配置中设置密钥) )
  • cover (on/off/set position (通过设定亮度) )
  • media_player (on/off/set volume (通过设定亮度) /source (通过设定输入源) )
  • climate (温度设定)
  • vacuum (dock/start/stop/pause)(停靠/开始/停止/暂停)

媒体播放器来源

媒体播放器来源通过Google智能助理中的模式特征发送。
目前,此功能存在一个限制,需要一组硬编码设置。因此,此功能可以使用此功能的唯一来源:
https ://developers.google.com/actions/reference/smarthome/traits/modes

示例命令:

“Hey Google, change input source to TV on Living Room Receiver”

对REQUEST_SYNC服务进行故障排除

request_sync服务要求Google的初始同步包含agent_user_id。如果没有,该服务将记录一个错误,该错误类似于“请求包含无效参数”。如果发生这种情况,请取消该帐户与Home Control的链接并重新链接。

如果Homegraph API的project_id与您在Google控制台上的操作上的项目首选项中找到的Actions SDK的project_id不同,则request_sync服务可能会失败404 。解决这个问题:

  1. Google控制台上操作中删除项目。
  2. 将新项目添加到Google Cloud API控制台。在这里你得到一个新的project_id
  3. 启用Homegraph API到新项目。
  4. 生成新的API密钥。
  5. 再次,在Actions on Google控制台上创建一个新项目。如上所述。但是,在“动作SDK框下的构建”步骤中,选择新创建的项目。通过这个,他们分享相同的project_id

使用NGINX进行故障排除

使用NGINX时,请确保您的proxy_pass线路没有尾随/,因为这会导致错误。你的行应该是这样的:

proxy_pass http://localhost:8123;

取消链接和重新链接

如果您在取消链接服务后遇到帐户链接失败的问题,请尝试清除浏览器历史记录和缓存。

点击数:347

Share this Post

说点什么

avatar
300
  订阅  
提醒