用户和速率限制

Device Access 项目受用户、结构和速率限制的限制,具体取决于商业产品的环境和类型。

我们希望开发者打造极具吸引力的用户体验,同时还希望 Nest 服务和设备始终为用户提供。如果集成在指定时间段内发出大量请求,可能会影响服务和设备的可用性,因此 SDM API 会应用速率限制。速率限制会限制给定时间段内的 API 调用次数,并防止资源利用率过高。

针对不同环境的限制

所有项目都是在  沙盒  环境中开始的。该沙盒旨在用于评估 SDM API 和个人用途,并且相关限制有相应的限制。用户群规模较大的环境(如  商业开发  )有不同的限制。

沙盒用户限制

在沙盒中,一个开发者帐号的所有项目在 5 个结构中最多只能有 25 位用户。每个账号最多只能有 3 个项目。

每个结构最多只能包含 5 位用户,因此只有在 5 个结构都达到 5 个用户后,才会达到上限。开发者帐号(拥有相应项目)不会计入结构的 5 位用户限制。

相反,如果某个项目在 5 个结构中拥有 15 个用户,则只能向现有的 5 个结构添加其他用户,因为已达到结构上限。

沙盒速率限制

沙盒有 3 个不同级别的速率限制。除非另有说明,否则限额按每分钟查询次数 (QPM) 设定。

API 级别

每个项目中每个用户的 API 调用次数有限制。如需详细了解各个方法,请参阅 API 参考

API 方法 速率限制
devices.executeCommand 10 QPM
devices.get 10 QPM
devices.list 5 QPM
structures.get 5 QPM
structures.list 5 QPM
structures.rooms.get 5 QPM
structures.rooms.list 5 QPM

命令级别

每个项目、每台设备的每个特征命令 (devices.executeCommand) 的上限为 5 QPM。

这意味着,如果一个项目有 2 位用户,每人有 2 台设备(共 4 台设备),那么对于这 4 台设备,同一命令每分钟可以调用 5 次。

但是,如果一个项目有 2 位用户,他们共 6 台设备,每人有 3 台设备,则同一命令在一分钟内不能针对这 6 台设备分别调用 5 次。这样,当项目用户的 devices.executeCommand API 级别速率限制为 10 QPM 时,每个用户的 API 级别速率限制为 10 QPM。

设备实例级

此外,设备实例级限制还跨项目和命令 (devices.executeCommand) 实施,以保护设备电池。这些限制适用于 QPM 和每小时查询次数 (QPH),不适用于 getlist API 方法。

例如,假设项目 A 和项目 B 都有权访问同一设备,即设备 A(可能用户已授权使用相同设备的两个不同的商业集成)。如果项目 A 在一分钟内向设备 A 发送了 4 个命令,则项目 B 只能在达到设备实例级速率限制前的同一分钟内向设备 A 发送 1 个命令。届时,从这两个项目发送到设备 A 的命令都会受到限制,直到向设备 A 发出第一条命令开始的分钟结束时。

如果某个设备类型未在下方列出,则表示它没有设备实例级速率限制。

设备类型 设备实例速率限制
温控器 5 QPM 或 100 QPH
摄像头 30 QPM 或 100 QPH
门铃 30 QPM 或 100 QPH

错误数

系统可能会返回与本指南相关的以下错误代码:

错误消息 RPC 问题排查
调用频率受限。 RESOURCE_EXHAUSTED 每个开发者都有一个配额,限制可以发出的调用次数。如果您拨打的电话数量超过您的配额,您会收到“频率受限”消息。如需解决此问题,请在配额过期后重新提交调用。

如需查看 API 错误代码的完整列表,请参阅 API 错误代码参考