Device Access 项目受用户、结构和速率限制的限制,具体取决于商业产品的环境和类型。
我们希望开发者打造极具吸引力的用户体验,同时还希望 Nest 服务和设备始终为用户提供。如果集成在指定时间段内发出大量请求,可能会影响服务和设备的可用性,因此 SDM API 会应用速率限制。速率限制会限制给定时间段内的 API 调用次数,并防止资源利用率过高。
针对不同环境的限制
所有项目都是在 沙盒 环境中开始的。该沙盒旨在用于评估 SDM API 和个人用途,并且相关限制有相应的限制。用户群规模较大的环境(如 商业开发 )有不同的限制。
沙盒用户限制
在沙盒中,一个开发者帐号的所有项目在 5 个结构中最多只能有 25 位用户。每个账号最多只能有 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 位用户,他们共 6 台设备,每人有 3 台设备,则同一命令在一分钟内不能针对这 6 台设备分别调用 5 次。这样,当项目用户的 devices.executeCommand
API 级别速率限制为 10 QPM 时,每个用户的 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 |
摄像头 | 30 QPM 或 100 QPH |
门铃 | 30 QPM 或 100 QPH |
错误数
系统可能会返回与本指南相关的以下错误代码:
错误消息 | RPC | 问题排查 |
---|---|---|
调用频率受限。 | RESOURCE_EXHAUSTED |
每个开发者都有一个配额,限制可以发出的调用次数。如果您拨打的电话数量超过您的配额,您会收到“频率受限”消息。如需解决此问题,请在配额过期后重新提交调用。 |
如需查看 API 错误代码的完整列表,请参阅 API 错误代码参考。