用户和速率限制

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

我们希望开发者打造出引人入胜的用户体验,但也希望 Nest 服务和设备始终可供用户使用。如果集成在给定时间段内发出大量请求,可能会影响服务和设备可用性,因此 SDM API 会应用速率限制。速率限制可限制指定时间段内的 API 调用次数,并防止资源过度使用。

按环境的限制

所有项目均从   Sandbox   环境开始。该沙盒仅供评估 SDM API 和个人使用,因此限制较为严格。用户群较大的环境(例如  商业开发  )具有不同的限制。

沙盒用户数上限

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

每个结构的用户数上限为 5 人,因此只有当所有 5 个结构都达到了 5 位用户的上限时,用户数才会达到上限。开发者账号(项目所有者)不计入结构的 5 位用户限制。

反之,如果某个项目有 15 位用户分布在 5 个结构中,则只能将其他用户添加到现有的 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

命令级别

每个 trait 命令 (devices.executeCommand) 的 QPM 上限为每个项目、每个用户、每部设备 5 次。

也就是说,如果一个项目有 2 位用户,每位用户有 2 部设备(总计 4 部设备),则每部设备每分钟可以调用同一命令 5 次。

不过,如果一个项目有 2 位用户,每位用户有 3 部设备,总计 6 部设备,则每部设备每分钟不能对同一命令进行 5 次调用。如果项目用户的 devices.executeCommand API 级速率限制为 10 QPM,则每个用户的速率限制为 15 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 错误代码参考文档