Device Access 專案會受到使用者、結構和速率限制,實際情況則視環境和商業產品類型而定。
我們希望開發人員打造引人入勝的使用者體驗,但同時也希望 Nest 服務和裝置隨時可供使用者存取。如果整合項目在特定時間範圍內發出大量要求,可能會影響服務和裝置的可用性,因此 SDM API 會套用頻率限制。頻率限制會限制特定時間範圍內的 API 呼叫次數,避免資源過度使用。
依環境劃分的限制
所有專案都會從 沙箱 環境開始。沙箱適用於評估 SDM API 和個人用途,因此設有相應限制。使用者人數較多的環境 (例如 商業開發 ) 則有不同限制。
沙箱使用者人數上限
沙箱中的開發人員帳戶在所有專案中,最多只能有 5 個結構和 25 位使用者。每個帳戶最多只能有 3 個專案。
每個結構最多只能有 5 位使用者,因此只有在 5 個結構都達到使用者上限時,才會達到使用者限制。開發人員帳戶 (擁有專案) 不會計入結構的 5 位使用者限制。
反之,如果專案有 15 位使用者,但只有 5 個結構,則只能將額外使用者新增至現有的 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 次查詢 |
指令層級
每項特徵指令 (devices.executeCommand) 的專案、使用者和裝置 QPM 上限為 5。
也就是說,如果專案有 2 位使用者,每位使用者有 2 部裝置 (共 4 部裝置),則每部裝置每分鐘可呼叫相同指令 5 次。
不過,如果專案有 2 位使用者,每位使用者有 3 部裝置,總共有 6 部裝置,則無法在 1 分鐘內為每部裝置呼叫 5 次相同指令。這樣一來,每位使用者的 QPM 會是 15,但專案使用者devices.executeCommand API 級別的速率限制為 10 QPM。
裝置例項層級
此外,為保護裝置電池,系統會在專案和指令 (devices.executeCommand) 中實作裝置例項層級的限制。這些限制會套用至每分鐘查詢次數 (QPM) 和每小時查詢次數 (QPH) 層級,且不適用於 get 和 list API 方法。
舉例來說,假設專案 A 和專案 B 都能存取同一部裝置 (裝置 A),可能是因為使用者授權了兩個不同的商業整合,而這兩個整合都使用同一部裝置。如果專案 A 在一分鐘內傳送了 4 個指令給裝置 A,則專案 B 在同一分鐘內只能傳送 1 個指令給裝置 A,否則就會達到裝置執行個體層級的速率限制。此時,系統會限制這兩個專案傳送給裝置 A 的指令,直到傳送給裝置 A 的第一個指令開始執行後的一分鐘結束為止。
如果裝置類型未列於下方,表示該裝置沒有裝置例項層級的速率限制。
| 裝置類型 | 裝置執行個體速率限制 |
|---|---|
| 溫度控制器 | 5 QPM 或 100 QPH |
| 相機 | 每分鐘 30 次查詢或每小時 100 次查詢 |
| DOORBELL | 每分鐘 30 次查詢或每小時 100 次查詢 |
錯誤
本指南可能會傳回下列錯誤代碼:
| 錯誤訊息 | 遠端程序呼叫 | 疑難排解 |
|---|---|---|
| 已達到每週數量上限。 | RESOURCE_EXHAUSTED |
每位開發人員都有配額限制,規定可發出的呼叫次數。如果通話次數超過配額,系統會顯示「速率限制」訊息。如要修正這個問題,請在配額到期後重新提交呼叫。 |
如需完整的 API 錯誤代碼清單,請參閱 API 錯誤代碼參考資料。