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.executeCommand
limit 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.