智能家居和报告状态:如果当前已知状态与现实不同步会怎样?
Smart Home & Report State: what happens if the current known state is not in sync with the reality?
我通过实施 SYNC
、EXECUTE
和 DISCONNECT
操作实施了基本的智能家居服务。在 SYNC
操作中,所有设备都将 willReportState
设置为 false
。
但是,在 https://developers.google.com/actions/smarthome/report-state 上,我读到要求我们自己报告状态更改。这意味着所有设备都必须将 willReportState
设置为 true
,我假设?
我的主要问题是,如果最后报告的状态与实际情况不同步会怎样?
例如,假设我们在 5 分钟前报告了某个设备(具有 OnOff
特征)已关机。几秒钟前,客户通过按下开机按钮手动为设备供电。假设此事实尚未报告给 Smart Home Graph,也未被 Smart Home Graph 知晓。
如果客户要求 Google 助理:关闭我的设备,现在会发生什么?这个请求会不会被拒绝?也就是说,即使 Graph Home 服务认为设备已经关机,fulfillment 服务是否会收到此后端?
还有,如果实现了Report State,还需要实现QUERY
动作吗?或者两者都需要?
附带说明一下,本文档也没有真正解决必须报告状态更改的频率。它在其他地方记录了吗?
是的,您需要支持 ReportState 和 return willReportState:对于具有 traits 状态的设备为真。请参阅特征文档以了解特征需要报告的状态。
关于您的主要问题,您需要能够报告 OnOff 特性的变化(例如用户打开设备),包括从其他表面(例如硬件开关或任何其他智能家居)触发的状态变化平台)。如果命令依赖于状态,则当用户尝试执行命令时,未能报告最新状态可能会导致错误。在此示例中,尝试关闭灯会起作用(因为 on/off 不依赖于状态)但任何其他依赖于状态的命令(例如调暗或增亮)可能会失败。
您仍然需要实施 QUERY,因为随时 Google 可能会查询您的履行情况 url 而不是使用报告的状态。
最后,关于频率,状态一有变化就上报。如果有一系列快速状态变化导致最终状态,例如调整调光开关直到达到所需的亮度,您可以等到达到最终状态。
我通过实施 SYNC
、EXECUTE
和 DISCONNECT
操作实施了基本的智能家居服务。在 SYNC
操作中,所有设备都将 willReportState
设置为 false
。
但是,在 https://developers.google.com/actions/smarthome/report-state 上,我读到要求我们自己报告状态更改。这意味着所有设备都必须将 willReportState
设置为 true
,我假设?
我的主要问题是,如果最后报告的状态与实际情况不同步会怎样?
例如,假设我们在 5 分钟前报告了某个设备(具有 OnOff
特征)已关机。几秒钟前,客户通过按下开机按钮手动为设备供电。假设此事实尚未报告给 Smart Home Graph,也未被 Smart Home Graph 知晓。
如果客户要求 Google 助理:关闭我的设备,现在会发生什么?这个请求会不会被拒绝?也就是说,即使 Graph Home 服务认为设备已经关机,fulfillment 服务是否会收到此后端?
还有,如果实现了Report State,还需要实现QUERY
动作吗?或者两者都需要?
附带说明一下,本文档也没有真正解决必须报告状态更改的频率。它在其他地方记录了吗?
是的,您需要支持 ReportState 和 return willReportState:对于具有 traits 状态的设备为真。请参阅特征文档以了解特征需要报告的状态。
关于您的主要问题,您需要能够报告 OnOff 特性的变化(例如用户打开设备),包括从其他表面(例如硬件开关或任何其他智能家居)触发的状态变化平台)。如果命令依赖于状态,则当用户尝试执行命令时,未能报告最新状态可能会导致错误。在此示例中,尝试关闭灯会起作用(因为 on/off 不依赖于状态)但任何其他依赖于状态的命令(例如调暗或增亮)可能会失败。
您仍然需要实施 QUERY,因为随时 Google 可能会查询您的履行情况 url 而不是使用报告的状态。
最后,关于频率,状态一有变化就上报。如果有一系列快速状态变化导致最终状态,例如调整调光开关直到达到所需的亮度,您可以等到达到最终状态。