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