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