gpt4 book ai didi

actions-on-google - 智能家居报告 2 台或更多设备的实时状态

转载 作者:行者123 更新时间:2023-12-02 04:22:29 27 4
gpt4 key购买 nike

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

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

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

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

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

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

非常感谢。

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


更新:

我尝试了一些新的东西:

我完全按照上面链接中的教程使用了所有代码,仅将 Action 设备类型 action.devices.types.WASHER 更改为 action.devices.types.LIGHT action.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 应用用户界面未直接绑定(bind)到智能家居集成中的报告状态功能,因此它不是验证集成行为的最佳方法。我建议使用像 report state dashboard 这样的工具和 test suite for smart home来验证您发布到 Home Graph 的数据。如果您使用这些工具看到正确的结果,则意味着您的报表状态实现是正确的。

关于actions-on-google - 智能家居报告 2 台或更多设备的实时状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58568905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com