ProjektyDevice Access są ograniczone przez limity dotyczące użytkowników, struktury i szybkości, w zależności od środowiska i typu oferty komercyjnej.
Chcemy, aby deweloperzy tworzyli atrakcyjne wrażenia dla użytkowników, ale jednocześnie chcemy, aby usługa i urządzenia Nest były zawsze dostępne dla użytkownika. Integracje, które wysyłają dużą liczbę żądań w danym przedziale czasu, mogą wpływać na dostępność usługi i urządzenia, dlatego interfejs SDM API stosuje limity szybkości. Ograniczenie szybkości ogranicza liczbę wywołań interfejsu API w danym okresie i zapobiega nadużywaniu zasobów.
Limity według środowiska
Wszystkie projekty zaczynają się w środowisku sandbox . Piaskownica jest przeznaczona do oceny interfejsu SDM API oraz do użytku osobistego. Na jej podstawie obowiązują odpowiednie ograniczenia. Środowiska z większą liczbą użytkowników, takie jak rozwój komercyjny , mają inne limity.
Limity użytkowników w piaskownicy
Konto dewelopera w piaskownicy jest ograniczone do 25 użytkowników w 5 strukturach we wszystkich projektach. Obowiązuje limit 3 projektów na konto.
Struktury są ograniczone do 5 użytkowników każda, więc limit użytkowników zostanie osiągnięty dopiero wtedy, gdy wszystkie 5 struktur będzie maksymalnie wykorzystanych (po 5 użytkowników każda). Konto dewelopera (które jest właścicielem projektu) nie wlicza się do limitu 5 użytkowników w ramach danej struktury.
Jeśli natomiast projekt ma 15 użytkowników w 5 strukturach, dodatkowych użytkowników można dodać tylko do tych 5 struktur, ponieważ limit struktur został już osiągnięty.
Limity liczby żądań piaskownicy
Częstotliwość korzystania z piaskownicy jest ograniczona na 3 różnych poziomach. O ile nie wskazano inaczej, limity są wyrażone w zapytaniach na minutę (QPM).
Poziom API
Wywołania interfejsu API są ograniczone na projekt i użytkownika. Więcej informacji o poszczególnych metodach znajdziesz w dokumentacji API.
Metoda interfejsu API | Limit szybkości |
---|---|
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 |
Poziom polecenia
Każde polecenie dotyczące cech (devices.executeCommand
) jest ograniczone do 5 QPM na projekt, użytkownika i urządzenie.
Oznacza to, że jeśli w ramach projektu są 2 użytkowników, a każde z nich ma po 4 urządzenia, to samo polecenie w ciągu minuty można wywołać 5 razy na minutę w przypadku każdego z tych 4 urządzeń.
Jeśli jednak projekt obejmuje 2 użytkowników, po 3 urządzenia, na 6 urządzeń, to samo polecenie nie może być wywoływane 5 razy na minutę na każdym z tych 6 urządzeń. Oznacza to, że każdy użytkownik będzie mógł wysyłać 15 tys. zapytań na minutę, jeśli devices.executeCommand
limit szybkości na poziomie interfejsu API dla użytkownika projektu wynosi 10 tys. zapytań na minutę.
Poziom instancji urządzenia
Dodatkowo w ramach projektów i komend (devices.executeCommand
) wdrożono limity na poziomie instancji urządzenia w celu ochrony baterii urządzenia. Te limity są stosowane zarówno w przypadku zapytań na minutę, jak i zapytań na godzinę. Nie dotyczą metod API get
i list
.
Załóżmy na przykład, że projekt A i projekt B mają dostęp do tego samego urządzenia, czyli urządzenia A (być może użytkownik autoryzował 2 różne integracje komercyjne, które korzystają z tego samego urządzenia). Jeśli projekt A wysłał 4 polecenia do urządzenia A w ciągu minuty, projekt B może wysłać tylko 1 polecenie do urządzenia A w tej samej minucie, zanim zostanie osiągnięty limit szybkości na poziomie instancji urządzenia. W tym momencie polecenia z obu projektów wysyłane do urządzenia A są ograniczane do końca minuty, która rozpoczęła się od pierwszego polecenia wysłanego do urządzenia A.
Jeśli typu urządzenia nie ma na liście poniżej, nie ma on limitów liczby żądań na poziomie instancji urządzenia.
Typ urządzenia | Limit szybkości instancji urządzenia |
---|---|
TERMOSTAT | 5 QPM lub 100 QPH |
APARAT | 30 QPM lub 100 QPH |
DOORBELL | 30 QPM lub 100 QPH |
Błędy
W związku z tym przewodnikiem mogą zostać zwrócone te kody błędów:
Komunikat o błędzie | RPC | Rozwiązywanie problemów |
---|---|---|
Ograniczenie liczby żądań. | RESOURCE_EXHAUSTED |
Każdy deweloper ma limit określający, ile wywołań może wykonać. Jeśli wykonasz więcej połączeń niż pozwala na to limit, otrzymasz komunikat o ograniczeniu stawki. Aby to naprawić, prześlij ponownie połączenie, gdy upłynie limit. |
Pełną listę kodów błędów interfejsu API znajdziesz w dokumentacji kodu błędu interfejsu API.