Actions on google 智能家居及;报告状态:如果当前已知状态与现实不同步,会发生什么情况?

Actions on google 智能家居及;报告状态:如果当前已知状态与现实不同步,会发生什么情况?,actions-on-google,google-smart-home,Actions On Google,Google Smart Home,我通过执行SYNC、EXECUTE和DISCONNECT操作实现了基本的智能家居服务。在SYNC操作中,所有设备都将willReportState设置为false 然而,在我读到的这篇文章中,我们必须自己报告状态变化。这意味着所有设备都必须将willReportState设置为true,我想是吧 我的主要问题是,如果上次报告的状态与现实不同步,会发生什么 例如,假设我们在5分钟前报告某个设备(具有OnOff特性)已关机。几秒钟前,客户通过按下开机按钮手动为设备供电。让我们假设这一事实尚未报告给智

我通过执行
SYNC
EXECUTE
DISCONNECT
操作实现了基本的智能家居服务。在
SYNC
操作中,所有设备都将
willReportState
设置为
false

然而,在我读到的这篇文章中,我们必须自己报告状态变化。这意味着所有设备都必须将
willReportState
设置为
true
,我想是吧

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

例如,假设我们在5分钟前报告某个设备(具有
OnOff
特性)已关机。几秒钟前,客户通过按下开机按钮手动为设备供电。让我们假设这一事实尚未报告给智能家居图,也未被智能家居图所知

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

此外,如果我们实现了报告状态,是否还必须实现
查询
操作?或者两者都是必需的


另一方面,本文档也没有真正说明必须报告状态更改的频率。是否在其他地方记录了它?

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

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

您仍然需要实现查询,因为任何时候Google都可以查询您的履行url,而不是使用报告的状态


最后,关于频率,您需要在状态发生变化时立即报告状态。如果有一系列快速状态变化导致终端状态,例如调整调光器开关直到达到所需亮度,您可以等待,直到达到终端状态。

我在这个问题上添加了价值100点的奖励!如果您的服务无法支持报表状态,为什么要使用它?如果无法支持报告状态,只需将
willReportState
设置为
false
。您的服务将不符合您发布的链接中所述的可视助手的资格。如果每次请求操作时将
willReportState
设置为
false
,则操作将被执行,每次请求状态时,查询将被取消executed@pincopallino您的推荐描述了所需的流程。但文件中说,报告状态实施是智能家居代理公开发布的一项要求(见相关链接),所以我想知道这到底意味着什么。不幸的是,我将其解释为必须实施报告状态。如果这是真的,我对这一要求有一些疑问或担忧。我想(我希望有人能证实)这意味着新的谷歌助手的公开发布比以前更加直观。查看他们在上一次IO上展示的内容,例如,他们展示了与智能设备(如)交互的新方式。谢谢。关于主要问题,特质文档中的哪些地方明确说明了需要报告的特质?我找不到那个信息。尽管您提到打开/关闭设备不依赖于状态,但这并不明显。我在文档中找不到?例如,可以实现on命令,该命令仅在状态为off时将请求传播到设备(反之亦然)?每个trait文档都有一个部分列出与trait相关的状态。无论执行是否依赖于状态,特质中的每个状态都需要报告。在开/关示例中,很明显它不依赖于状态,因为可以在不检查状态的情况下执行以下操作,例如关闭已关闭的灯。但是,如果不检查设备的当前状态,则无法执行某些操作(如点亮灯光),否则点亮灯光可能会导致实际变暗,甚至在灯光关闭时打开灯光。再次,伴侣需要报告所支持特征的所有状态,不必担心行为是否依赖于状态。这是助手将弄清楚的,并决定使用报告的数据,或在必要时查询您的后端。