测试和调试应用

我们建议你使用前文所述步骤构建本地执行方式应用,然后按照以下步骤在你自己的托管环境中测试智能家居集成:

  1. 在你自己的托管环境中,提供用于运行本地执行方式应用的 HTML 页面。以下代码段显示了一个运行本地执行方式应用的静态 HTML 文件示例。

    <html>
      <head>
        <!-- Local Home SDK -->
        <script src="//www.gstatic.com/eureka/smarthome/smarthome_sdk.js"></script>
        <!-- Local app under development -->
        <script src="local_execution.js"></script>
      </head>
    
    </html>
  2. 测试设备控制

  3. 从 Chrome 调试。使用断点和日志排查集成问题。

  4. 修改并编译你的 TypeScript 代码,然后重复这些步骤。

通过重复这个构建和测试过程,你可以快速查看更改的实际运行情况,并更轻松地捕获和调试代码问题。

测试设备控制

在 Action 控制台中,你需要指定你的 Web 应用的网址,此网址将提供在本地执行方式期间在 Google Home 或 Google Nest 设备上加载的 HTML。

如需通过本地执行方式测试设备控件,请按以下步骤操作:

Chrome

  1. 在 Actions 控制台中打开你的智能家居项目。
  2. 点击左侧导航栏中的 Actions
  3. Configure local home SDK (optional) > Enter your testing URL for Chrome 下,指定一个开发服务器网址,该网址提供将运行本地执行方式应用的 HTML。
  4. 点击 Save。Google 最多可能需要 30 分钟来传播你的控制台更改。
  5. 重新启动测试用 Google Home 或 Google Nest 设备。
  6. 向智能设备发出命令。例如,如果你的设备实现了 OnOff 特征,你可以说“Ok Google,开灯”。

Node.js

  1. 在 Actions 控制台中打开你的智能家居项目。
  2. 点击左侧导航栏中的 Actions
  3. Configure local home SDK (optional) > Enter your testing URL for Node 下,指定一个开发服务器网址,该网址提供将运行本地执行方式应用的 JavaScript。
  4. 点击 Save。Google 最多可能需要 30 分钟来传播你的控制台更改。
  5. 重新启动测试用 Google Home 或 Google Nest 设备。
  6. 向智能设备发出命令。例如,如果你的设备实现了 OnOff 特征,你可以说“Ok Google,开灯”。

如需详细了解您的设备使用的运行时,请参阅支持的设备

从 Chrome 调试

您可以使用 Chrome 开发者工具调试本地执行方式应用。在调试之前,请确保你的环境设置正确:

  • 你已在控制台中将开发网址设置为可由 Google Home 或 Google Nest 设备(通过局域网或互联网)访问的网址:
  • 你的机器和你在测试的 Google Home 或 Google Nest 设备会连接到同一局域网。
  • 你的网络不会阻止设备之间的数据包。
  • 你在 Actions 控制台和 Google Home 或 Google Nest 设备上使用同一 Google 账号登录。
  • 您已在云执行方式中更新了 SYNC 响应。 它应该在 otherDeviceIds 字段中返回至少一个有效值。
  • 您已在 Actions 控制台中输入正确的扫描配置信息

如需将本地执行方式应用关联到 Chrome 开发者工具调试程序,请按以下步骤操作:

Chrome

  1. 在你的本地开发机器上,安装并启动 Google Chrome 浏览器
  2. 在 Chrome 浏览器的地址字段中,输入 chrome://inspect#devices 以启动 Chrome 检查器。你应该会在页面上看到设备列表,并且你的 HTML 文件应该会列在测试用 Google Home 或 Google Nest 设备的名称下方。
  3. 点击你的 HTML 下的蓝色检查链接可启动 Chrome 开发者工具。 切换到 Console 标签页。 Local Home 平台会在控制台日志中输出你的应用版本和 Local Home SDK 版本。如果你看到该日志,则表示 Google 已成功加载你的应用,并且能够与之关联。 否则,请重新启动 Google Home 或 Google Nest 设备。
  4. 图 1:chrome://inspect 中的本地执行方式应用。

Node.js

  1. 在你的本地开发机器上,安装并启动 Google Chrome 浏览器
  2. 确定你的测试设备的本地 IP 地址。
  3. 在 Chrome 浏览器的地址字段中,输入 chrome://inspect#devices 以启动 Chrome 检查器。
  4. 选择 Configure... 以打开 Target discovery settings
  5. 图 2:chrome://inspect 中的 Target discovery settings。
  6. 在列表中输入 DEVICE_IP_ADDRESS:9222,然后点击 Done
  7. 点击你的脚本下的蓝色检查链接可启动 Chrome 开发者工具。 切换到 Console 标签页。 Local Home 平台会在控制台日志中输出你的应用版本和 Local Home SDK 版本。如果你看到该日志,则表示 Google 已成功加载你的应用,并且能够与之关联。 否则,请重新启动 Google Home 或 Google Nest 设备。

如需详细了解您的设备使用的运行时,请参阅支持的设备

调试提示

调试期间,还需要注意以下事项:

  • 不要将多个 Google Home 或 Google Nest 设备与同一本地网络中的测试账号相关联。你将无法使用本地执行方式命令控制要定位哪个 Google Home 或 Google Nest 设备。
  • 在 Chrome 开发者工具中刷新页面,以重新加载本地执行方式应用容器,其中包含来自开发网址的最新代码。该操作不会重置 Local Home 平台,而这一点可能是在你的本地执行方式应用中重新触发平台 intent(例如 IDENTIFY)所需要的。如需重置 Local Home 平台,请重新启动 Google Home 或 Google Nest 设备。
  • 检查 JavaScript 应用是否正确加载。为此,请查看开发者工具页面的控制台部分。如果出现问题,你会看到以下类似消息:Uncaught TypeError: Cannot read property ‘open’ of null.
  • IDENTIFY 响应中的 verificationId 必须与 SYNC 响应中的某个 otherDeviceIds 匹配。
  • 对于 EXECUTE 处理程序,请确保你的设备可以接收 HTTP、TCP 或 UDP 命令并按预期工作。
  • 请务必从处理程序返回 Promise
  • 避免在内存中保持全局状态。 请参阅应用生命周期
  • 本地执行方式应用抛出的错误会显示在你的项目错误日志中。

准备和发布正式版

准备好启动智能家居 Action 后,请按以下步骤操作:

  1. 打开终端。在你的项目目录中,运行 npm run build 命令。此命令会在 dist 目录下为您的应用生成以下 JavaScript 软件包:
    project-directory/
    └── dist
     ├── web
     │    └── bundle.js
     └── node
          └── bundle.js
    
  2. 在控制台中,依次点击 Develop > Actions,上传您的 JavaScript 应用。在 Configure Local Home SDK 部分中,点击 Upload JavaScript files
    图 3:上传您的 JavaScript 应用。
  3. Upload files 对话框中,上传你之前生成的软件包文件。请务必上传两个版本的软件包文件(Node、Web),以便您的 Action 配置为可在本地执行方式所支持的所有运行时环境中正常运行。
    1. Upload your JavaScript targeting Node.js:从 dist/node 目录上传 bundle.js 文件。
    2. Upload your JavaScript targeting Chrome (browser):从 dist/web 目录中上传 bundle.js 文件。
  4. 在内置 Google 助理的设备上测试你的 Action,以验证其在生产环境中的行为是否符合预期。如需了解详情,请参阅测试和共享智能家居 Action
  5. 如果你对 Action 的运行表现感到满意,请按照启动智能家居 Action 中的说明将其提交给 Google 进行生产部署。这包括完成自测和认证请求步骤。