智能家居和报告状态:如果当前已知状态与现实不同,会发生什么?

And*_*ers 16 actions-on-google google-smart-home

我通过执行来实现一个基本的智能家居服务SYNC,EXECUTE以及DISCONNECT行动.在SYNC操作中,所有设备都已willReportState设置为false.

但是,在https://developers.google.com/actions/smarthome/report-state上,我读到我们需要自己报告状态更改.这意味着所有设备必须willReportState设置为true,我假设?

我的主要问题是,如果上次报告的状态与现实不同,会发生什么?

例如,假设我们在5分钟前报告某个设备(具有该OnOff特征)已关闭.几秒钟前,客户通过按下电源按钮手动为设备供电.让我们假设智能家居图尚未报告或知道此事实.

如果客户要求助理,现在会发生什么:关闭我的设备?这个请求会被拒绝吗?也就是说,即使Graph Home服务认为设备已经断电,履行服务是否会收到此后端?

另外,QUERY如果我们实施报告国家,我们还需要实施这项行动吗?或者都是必需的?

在旁注中,该文件也没有真正解决必须报告状态变化的频率.它是否记录在其他地方?

Mur*_*rat 2

是的,您需要支持 ReportState 并为具有状态特征的设备返回 willReportState: true 。请参阅特征文档,了解特征需要报告的状态。

关于您的主要问题,您需要能够报告 OnOff 特征的变化(例如用户打开设备),包括从其他表面(例如硬件开关或任何其他智能家居平台)触发的状态变化。如果命令与状态相关,则当用户尝试执行命令时,无法报告最新状态可能会导致错误。在此示例中,尝试关闭灯将起作用(因为开/关不依赖于状态),但任何其他依赖于状态的命令(例如变暗或变亮)可能会失败。

您仍然需要实施 QUERY,因为 Google 可能随时查询您的履行 url,而不是使用报告的状态。

最后,关于频率,一旦状态发生变化就需要报告状态。如果存在一系列快速状态变化导致最终状态,例如调节调光器开关直到达到所需的亮度,则可以等到达到最终状态。