使用者和頻率限制

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 次查詢
devices.get 每分鐘 10 次查詢
devices.list 每分鐘 5 次
structures.get 每分鐘 5 次
structures.list 每分鐘 5 次
structures.rooms.get 每分鐘 5 次
structures.rooms.list 每分鐘 5 次

指令層級

每個 trait 指令 (devices.executeCommand) 對每位使用者在每部裝置上的每項專案 5 QPM。

也就是說,如果專案中有 2 位使用者各有 2 部裝置 (共 4 部),每 4 部裝置可以在一分鐘內呼叫同一個指令 5 次。

不過,如果專案中有 2 位使用者各有 3 部裝置,每部裝置各有 6 部裝置,則這 6 部裝置在一分鐘內無法在一分鐘內呼叫同一個指令 5 次。當專案使用者的 devices.executeCommand API 級別頻率限制為 10 次 QPM 時,這會導致每位使用者產生 15 QPM。

裝置執行個體層級

此外,裝置執行個體層級限制是在所有專案和指令 (devices.executeCommand) 中實施,以保護裝置電池。這些限制同時適用於 QPM 和每小時查詢 (QPH) 層級,且不適用於 getlist API 方法。

舉例來說,假設專案 A 和專案 B 都能夠存取同一部裝置,即裝置 A (可能使用者已授權使用同一部裝置的兩項不同的商業整合作業)。如果專案 A 在一分鐘內向裝置 A 傳送 4 個指令,則專案 B 在達到裝置執行個體層級頻率限制前的一分鐘內,只能向裝置 A 傳送 1 次指令。屆時,從專案到裝置 A 的指令都會受到限制,直到從第一個指令對裝置 A 開始的分鐘結束為止。

如果下方未列出某個裝置類型,表示該裝置沒有裝置執行個體層級頻率限制。

裝置類型 裝置執行個體頻率限制
溫度控制器 每分鐘 5 次或 100 次查詢
相機 每分鐘 30 次查詢或每小時 100 次查詢
門鈴 每分鐘 30 次查詢或每小時 100 次查詢

錯誤

下方指南可能會傳回以下錯誤代碼:

錯誤訊息 RPC 疑難排解
頻率受限。 RESOURCE_EXHAUSTED 每位開發人員都有配額限制,可發出的呼叫數量設有上限。如果呼叫次數超過配額,您就會收到「頻率限制」的訊息。如要修正這個問題,請在配額到期後重新提交呼叫。

如需 API 錯誤代碼的完整清單,請參閱 API 錯誤代碼參考資料