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) 層級,且不適用於 get
和 list
API 方法。
舉例來說,假設專案 A 和專案 B 都能夠存取同一部裝置,即裝置 A (可能使用者已授權使用同一部裝置的兩項不同的商業整合作業)。如果專案 A 在一分鐘內向裝置 A 傳送 4 個指令,則專案 B 在達到裝置執行個體層級頻率限制前的一分鐘內,只能向裝置 A 傳送 1 次指令。屆時,從專案到裝置 A 的指令都會受到限制,直到從第一個指令對裝置 A 開始的分鐘結束為止。
如果下方未列出某個裝置類型,表示該裝置沒有裝置執行個體層級頻率限制。
裝置類型 | 裝置執行個體頻率限制 |
---|---|
溫度控制器 | 每分鐘 5 次或 100 次查詢 |
相機 | 每分鐘 30 次查詢或每小時 100 次查詢 |
門鈴 | 每分鐘 30 次查詢或每小時 100 次查詢 |
錯誤
下方指南可能會傳回以下錯誤代碼:
錯誤訊息 | RPC | 疑難排解 |
---|---|---|
頻率受限。 | RESOURCE_EXHAUSTED |
每位開發人員都有配額限制,可發出的呼叫數量設有上限。如果呼叫次數超過配額,您就會收到「頻率限制」的訊息。如要修正這個問題,請在配額到期後重新提交呼叫。 |
如需 API 錯誤代碼的完整清單,請參閱 API 錯誤代碼參考資料。