Device Access projekty są ograniczone przez limity użytkowników, struktury i liczby żądań w zależności od środowiska i rodzaju oferty komercyjnej.
Zależy nam na tym, aby deweloperzy tworzyli atrakcyjne usługi, ale chcemy też, aby usługa i urządzenia Nest były zawsze dostępne dla użytkownika. Integracje, które w danym okresie wysyłają dużą liczbę żądań, mogą wpływać na dostępność usługi i urządzenia, dlatego interfejs SDM API stosuje limity szybkości. Ograniczanie liczby wywołań interfejsu API w danym okresie zapobiega nadmiernemu wykorzystaniu zasobów.
Limity według środowiska
Wszystkie projekty zaczynają się w środowisku Sandbox . Piaskownica jest przeznaczona do oceny interfejsu SDM API i użytku osobistego, a limity są odpowiednio ograniczone. Środowiska z większą liczbą użytkowników, takie jak Commercial Development , 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. Na koncie można mieć maksymalnie 3 projekty.
Każda struktura może obejmować maksymalnie 5 użytkowników, więc limit użytkowników zostanie osiągnięty dopiero wtedy, gdy wszystkie 5 struktur będzie zawierać po 5 użytkowników. Konto dewelopera (które jest właścicielem projektu) nie wlicza się do limitu 5 użytkowników w przypadku struktury.
Jeśli 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 szybkości w piaskownicy
W przypadku piaskownicy obowiązują 3 poziomy ograniczeń częstotliwości. O ile nie wskazano inaczej, limity są ustawione na zapytania na minutę (QPM).
Poziom API
Wywołania interfejsu API są ograniczone na projekt i na użytkownika. Więcej informacji o poszczególnych metodach znajdziesz w dokumentacji interfejsu API.
| Metoda interfejsu API | Ograniczenie liczby żądań |
|---|---|
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 cechy (devices.executeCommand) jest ograniczone do 5 zapytań na minutę na projekt, użytkownika i urządzenie.
Oznacza to, że jeśli projekt ma 2 użytkowników, z których każdy ma 2 urządzenia (łącznie 4 urządzenia), tę samą komendę można wywołać 5 razy w ciągu minuty na każdym z tych 4 urządzeń.
Jeśli jednak projekt ma 2 użytkowników z 3 urządzeniami każdy, co daje łącznie 6 urządzeń, tego samego polecenia nie można wywołać 5 razy w ciągu minuty na każdym z tych 6 urządzeń. W takim przypadku każdy użytkownik będzie miał 15 zapytań na minutę, a devices.executeCommandlimit zapytań na minutę na poziomie interfejsu API dla użytkownika projektu wynosi 10.
Na poziomie instancji urządzenia
Dodatkowo w projektach i poleceniach (devices.executeCommand) obowiązują limity na poziomie instancji urządzenia, które chronią baterię urządzenia. Te limity
są stosowane zarówno na poziomie zapytań na minutę, jak i zapytań na godzinę i 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 A (być może użytkownik autoryzował 2 różne integracje komercyjne, które korzystają z tego samego urządzenia). Jeśli w ciągu minuty Projekt A wysłał do Urządzenia A 4 polecenia, Projekt B może w tej samej minucie wysłać do Urządzenia A tylko 1 polecenie, zanim zostanie osiągnięty limit szybkości na poziomie instancji urządzenia. W tym momencie polecenia z obu projektów do urządzenia A są ograniczane do końca minuty, która rozpoczęła się od pierwszego polecenia do urządzenia A.
Jeśli typu urządzenia nie ma na liście poniżej, nie ma on limitów szybkości na poziomie instancji urządzenia.
| Typ urządzenia | Limit szybkości instancji urządzenia |
|---|---|
| THERMOSTAT | 5 QPM lub 100 QPH |
| APARAT | 30 QPM lub 100 QPH |
| DZWONEK | 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 |
|---|---|---|
| Ograniczona liczba żądań. | RESOURCE_EXHAUSTED |
Każdy deweloper ma limit określający liczbę wywołań, które może wykonać. Jeśli wykonasz więcej połączeń niż wynosi Twój limit, zobaczysz komunikat o ograniczeniu liczby połączeń. Aby rozwiązać ten problem, prześlij wywołanie ponownie po wygaśnięciu limitu. |
Pełną listę kodów błędów interfejsu API znajdziesz w dokumentacji kodów błędów interfejsu API.