我们建议你使用前文所述步骤构建本地执行方式应用,然后按照以下步骤在你自己的托管环境中测试智能家居集成:
在你自己的托管环境中,提供用于运行本地执行方式应用的 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>
从 Chrome 调试。使用断点和日志排查集成问题。
修改并编译你的 TypeScript 代码,然后重复这些步骤。
通过重复这个构建和测试过程,你可以快速查看更改的实际运行情况,并更轻松地捕获和调试代码问题。
测试设备控制
在 Action 控制台中,你需要指定你的 Web 应用的网址,此网址将提供在本地执行方式期间在 Google Home 或 Google Nest 设备上加载的 HTML。
如需通过本地执行方式测试设备控件,请按以下步骤操作:
Chrome
- 在 Actions 控制台中打开你的智能家居项目。
- 点击左侧导航栏中的 Actions。
- 在 Configure local home SDK (optional) > Enter your testing URL for Chrome 下,指定一个开发服务器网址,该网址提供将运行本地执行方式应用的 HTML。
- 点击 Save。Google 最多可能需要 30 分钟来传播你的控制台更改。
- 重新启动测试用 Google Home 或 Google Nest 设备。
- 向智能设备发出命令。例如,如果你的设备实现了 OnOff 特征,你可以说“Ok Google,开灯”。
Node.js
- 在 Actions 控制台中打开你的智能家居项目。
- 点击左侧导航栏中的 Actions。
- 在 Configure local home SDK (optional) > Enter your testing URL for Node 下,指定一个开发服务器网址,该网址提供将运行本地执行方式应用的 JavaScript。
- 点击 Save。Google 最多可能需要 30 分钟来传播你的控制台更改。
- 重新启动测试用 Google Home 或 Google Nest 设备。
- 向智能设备发出命令。例如,如果你的设备实现了 OnOff 特征,你可以说“Ok Google,开灯”。
如需详细了解您的设备使用的运行时,请参阅支持的设备。
从 Chrome 调试
您可以使用 Chrome 开发者工具调试本地执行方式应用。在调试之前,请确保你的环境设置正确:
- 你已在控制台中将开发网址设置为可由 Google Home 或 Google Nest 设备(通过局域网或互联网)访问的网址:
- 你的机器和你在测试的 Google Home 或 Google Nest 设备会连接到同一局域网。
- 你的网络不会阻止设备之间的数据包。
- 你在 Actions 控制台和 Google Home 或 Google Nest 设备上使用同一 Google 账号登录。
- 您已在云执行方式中更新了 SYNC 响应。
它应该在
otherDeviceIds
字段中返回至少一个有效值。 - 您已在 Actions 控制台中输入正确的扫描配置信息。
如需将本地执行方式应用关联到 Chrome 开发者工具调试程序,请按以下步骤操作:
Chrome
- 在你的本地开发机器上,安装并启动 Google Chrome 浏览器。
- 在 Chrome 浏览器的地址字段中,输入
chrome://inspect#devices
以启动 Chrome 检查器。你应该会在页面上看到设备列表,并且你的 HTML 文件应该会列在测试用 Google Home 或 Google Nest 设备的名称下方。 - 点击你的 HTML 下的蓝色检查链接可启动 Chrome 开发者工具。 切换到 Console 标签页。 Local Home 平台会在控制台日志中输出你的应用版本和 Local Home SDK 版本。如果你看到该日志,则表示 Google 已成功加载你的应用,并且能够与之关联。 否则,请重新启动 Google Home 或 Google Nest 设备。
Node.js
- 在你的本地开发机器上,安装并启动 Google Chrome 浏览器。
- 确定你的测试设备的本地 IP 地址。
- 在 Chrome 浏览器的地址字段中,输入
chrome://inspect#devices
以启动 Chrome 检查器。 - 选择 Configure... 以打开 Target discovery settings。
- 在列表中输入
DEVICE_IP_ADDRESS:9222
,然后点击 Done。 - 点击你的脚本下的蓝色检查链接可启动 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 后,请按以下步骤操作:
- 打开终端。在你的项目目录中,运行
npm run build
命令。此命令会在dist
目录下为您的应用生成以下 JavaScript 软件包:project-directory/ └── dist ├── web │ └── bundle.js └── node └── bundle.js
- 在控制台中,依次点击 Develop > Actions,上传您的 JavaScript 应用。在 Configure Local Home SDK 部分中,点击 Upload JavaScript files。
- 在 Upload files 对话框中,上传你之前生成的软件包文件。请务必上传两个版本的软件包文件(Node、Web),以便您的 Action 配置为可在本地执行方式所支持的所有运行时环境中正常运行。
- Upload your JavaScript targeting Node.js:从
dist/node
目录上传bundle.js
文件。 - Upload your JavaScript targeting Chrome (browser):从
dist/web
目录中上传bundle.js
文件。
- Upload your JavaScript targeting Node.js:从
- 在内置 Google 助理的设备上测试你的 Action,以验证其在生产环境中的行为是否符合预期。如需了解详情,请参阅测试和共享智能家居 Action。
- 如果你对 Action 的运行表现感到满意,请按照启动智能家居 Action 中的说明将其提交给 Google 进行生产部署。这包括完成自测和认证请求步骤。