【问题标题】:Smart Home Report State real-time in 2 or more devices智能家居报告状态实时在 2 个或更多设备中
【发布时间】:2019-10-26 07:33:10
【问题描述】:

我花了很多时间尝试在超过 1 台设备上实时更新 Home Graph。

实际上这个项目有 2 个设备:1 个洗衣机和 1 个灯。

当我直接在数据库中进行更改时,洗衣机是完美的实时更新。

灯是问题所在。如果我直接在数据库中进行更改,它只会在我关闭设备页面并再次打开时更新(当然是在 Google Home App 上)。它不是实时更新的。

我相信问题出在下面的这段代码中,因为我不知道它在 [context.params.deviceId] 中调用了多少设备,但我不确定这是否是问题或如何解决.

请帮帮我。我白白地在这度过了一夜。

非常感谢。

PS:我已按照该教程使洗衣机完美工作。 https://codelabs.developers.google.com/codelabs/smarthome-washer/


更新:

我尝试了一些新的东西:

我完全按照上面链接上的教程使用了所有代码,只将动作设备类型action.devices.types.WASHER更改为action.devices.types.LIGHTaction.devices.types.SWITCH

经过这次测试,我意识到实时 ReportState 只适用于洗衣机,而不适用于灯或开关,甚至只更改了一行代码。

所以看起来问题出在 Google 上,而不是代码上。有人同意吗?

/**
 * Send a REPORT STATE call to the homegraph when data for any device id
 * has been changed.
 */
exports.reportstate = functions.database.ref('{deviceId}').onWrite(async (change, context) => {
  console.info('Firebase write event triggered this cloud function');
  const snapshot = change.after.val();

  const requestBody = {
    requestId: 'ff36a3cc', /* Any unique ID */
    agentUserId: '123', /* Hardcoded user ID */
    payload: {
      devices: {
        states: {         
          [context.params.deviceId]: {
            on: snapshot.OnOff.on,          
          },          
        },
      },
    },
  };

  const res = await homegraph.devices.reportStateAndNotification({
    requestBody
  });
  console.info('Report state response:', res.status, res.data);
});

【问题讨论】:

  • 你能澄清几件事吗?报告状态方法是在任何情况下都返回错误还是总是返回成功?另外,当您说“实时更新”时,您是指更新 Google Home 应用中的 UI,还是使用其他方法来验证数据是否已保存到 Home Graph?
  • 当然,感谢您的帮助。 1 - ReportState 总是成功返回。 2 - 当我说“实时更新”时,是的,我指的是我的 Android 智能手机上 Google Home 应用中的 UI。

标签: actions-on-google google-assistant-sdk google-home google-smart-home


【解决方案1】:

Google Home 应用 UI 与智能家居集成中的报告状态功能没有直接关联,因此它不是验证集成行为的最佳方法。我建议使用 report state dashboardtest suite for smart home 之类的工具来验证您发布到 Home Graph 的数据。如果您使用这些工具看到了正确的结果,则说明您的报告状态实现是正确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2020-10-19
    • 1970-01-01
    • 2022-01-26
    • 2019-12-18
    相关资源
    最近更新 更多