用户和速率限制

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

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

按环境划分的限制

所有项目都从   沙盒   环境开始。沙盒旨在评估 SDM API 和个人使用,因此限制相应受到限制。拥有较大用户群的环境(例如   商业开发  )的限制有所不同。

沙盒用户限制

沙盒中的开发者账号在所有项目中最多只能有 25 个用户,这些用户分布在 5 个结构中。每个账号最多只能有 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 个用户,每个用户有 3 个设备(共 6 个设备),则对于这 6 个设备中的每一个,同一命令在一分钟内不能 调用 5 次。这将导致每个用户的 QPM 为 15,而项目的用户的 devices.executeCommand API 级别速率限制为 10 QPM。

设备实例级别

此外,为了保护设备电池,我们还在项目和命令 (devices.executeCommand) 中实现了设备实例级别限制。这些限制同时适用于 QPM 和每小时查询次数 (QPH) 级别,但不适用于 getlist API 方法。

例如,假设项目 A 和项目 B 都可以访问同一设备(设备 A,可能是用户已授权两个不同的商业集成使用同一设备)。如果项目 A 在一分钟内向设备 A 发送了 4 个命令,则项目 B 在同一分钟内只能向设备 A 发送 1 个命令,然后就会达到设备实例级别速率限制。此时,来自两个项目到设备 A 的命令都会受到限制,直到以向设备 A 发送的第一个命令开始的那一分钟结束。

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

设备类型 设备实例速率限制
温控器 5 QPM 或 100 QPH
CAMERA 30 QPM 或 100 QPH
DOORBELL 30 QPM 或 100 QPH

错误

本指南可能会返回以下错误代码:

错误消息 RPC 问题排查
可配置数量暂时已达上限。 RESOURCE_EXHAUSTED 每个开发者都有配额,用于限制他们可以进行的调用次数。如果您进行的调用次数超过配额,您将收到“可配置数量暂时已达上限”消息。如需解决此问题,请在配额到期后重新提交调用。

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