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) 级别,但不适用于 get
和 list
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 错误代码参考文档。