用户和速率限制

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

命令级别

对于每个项目、每个用户和每台设备,每个特征命令 (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
DOORBELL 30 QPM 或 100 QPH

错误

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

错误消息 RPC 问题排查
速率受限。 RESOURCE_EXHAUSTED 每个开发者都有配额限制,用于限制其可以进行的调用次数。如果您发出的调用次数超出配额,则会收到“速率受限”消息。要解决此问题,请在配额过期后重新提交调用。

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