Device Access 项目受用户、结构和速率限制,具体取决于环境和商业产品的类型。
我们希望开发者打造出色的用户体验,但同时也希望 Nest 服务和设备始终可供用户使用。在给定时间段内发出大量请求的集成可能会影响服务和设备的可用性,因此 SDM API 会应用速率限制。 速率限制会限制指定时间段内的 API 调用次数,并防止资源过度使用。
按环境划分的限制
所有项目都从 沙盒 环境开始。沙盒旨在用于评估 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
) 的限制为每个项目、每个用户、每台设备 5 QPM。
也就是说,如果一个项目有 2 位用户,每位用户有 2 部设备(总共 4 部设备),那么对于这 4 部设备中的每一部,同一命令在一分钟内可以被调用 5 次。
不过,如果一个项目有 2 位用户,每位用户有 3 台设备,总共有 6 台设备,那么对于这 6 台设备中的每一台,同一命令在一分钟内都无法调用 5 次。这样一来,每位用户的 QPM 将达到 15,而项目的 devices.executeCommand
API 级速率限制为每位用户 10 QPM。
设备实例级
此外,为了保护设备电池,我们还在项目和命令 (devices.executeCommand
) 中实现了设备实例级限制。这些限制同时适用于 QPM 和每小时查询次数 (QPH) 级别,但不适用于 get
和 list
API 方法。
例如,假设项目 A 和项目 B 都有权访问同一设备(设备 A),可能是因为用户已授权两个不同的商业集成使用同一设备。如果项目 A 在 1 分钟内向设备 A 发送了 4 个命令,那么在达到设备实例级速率限制之前,项目 B 在同一分钟内只能向设备 A 发送 1 个命令。此时,来自两个项目到设备 A 的命令都会受到限制,直到以向设备 A 发出的第一个命令开始的分钟结束为止。
如果设备类型未在下方列出,则表示该设备类型没有设备实例级速率限制。
设备类型 | 设备实例速率限制 |
---|---|
THERMOSTAT | 5 QPM 或 100 QPH |
CAMERA | 30 QPM 或 100 QPH |
门铃 | 30 QPM 或 100 QPH |
错误
以下错误代码可能会与本指南相关联地返回:
错误消息 | RPC | 问题排查 |
---|---|---|
可配置数量暂时已达上限。 | RESOURCE_EXHAUSTED |
每个开发者都有配额限制,规定了他们可以进行的调用次数。如果您进行的调用次数超过配额,则会收到“速率受限”消息。为解决此问题,请在配额过期后重新提交调用。 |
如需查看完整的 API 错误代码列表,请参阅 API 错误代码参考文档。