Nutzer- und Ratenlimits

Device Access Projekte unterliegen je nach Umgebung und Art des kommerziellen Angebots Nutzer-, Struktur- und Ratenlimits.

Wir möchten, dass Entwickler ansprechende Nutzererlebnisse schaffen, aber auch, dass der Nest-Dienst und die Nest-Geräte für den Nutzer immer verfügbar sind. Integrationen, die innerhalb eines bestimmten Zeitraums eine große Anzahl von Anfragen stellen, können sich auf die Verfügbarkeit von Diensten und Geräten auswirken. Daher wendet die SDM API Ratenlimits an. Durch die Ratenbegrenzung wird die Anzahl der API-Aufrufe für einen bestimmten Zeitraum eingeschränkt und eine Überlastung der Ressourcen verhindert.

Limits nach Umgebung

Alle Projekte beginnen in der   Sandbox  -Umgebung. Die Sandbox ist für die Bewertung der SDM API und die private Nutzung vorgesehen. Die Limits sind entsprechend eingeschränkt. Für Umgebungen mit einer größeren Nutzerbasis wie die   kommerzielle Entwicklung   gelten andere Limits.

Nutzerlimits für die Sandbox

Ein Entwicklerkonto in der Sandbox ist auf 25 Nutzer in 5 Strukturen in allen Projekten beschränkt. Es gibt ein Limit von 3 Projekten pro Konto.

Strukturen sind auf jeweils 5 Nutzer beschränkt. Das Nutzerlimit wird also erst erreicht, wenn alle 5 Strukturen mit jeweils 5 Nutzern voll ausgelastet sind. Das Entwicklerkonto (dem das Projekt gehört) wird nicht auf das Limit von 5 Nutzern für eine Struktur angerechnet.

Wenn ein Projekt hingegen 15 Nutzer in 5 Strukturen hat, können nur zusätzliche Nutzer zu den bestehenden 5 Strukturen hinzugefügt werden, da das Limit für Strukturen bereits erreicht wurde.

Ratenlimits für die Sandbox

Die Sandbox ist auf 3 verschiedenen Ebenen ratenbegrenzt. Sofern nicht anders angegeben, werden die Limits in Abfragen pro Minute (Queries Per Minute, QPM) festgelegt.

API-Ebene

API-Aufrufe sind pro Projekt und Nutzer begrenzt. Weitere Informationen zu einzelnen Methoden finden Sie in der API Referenz.

API-Methode Ratenlimit
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

Befehlsebene

Jeder Befehl für ein Merkmal (devices.executeCommand) ist auf 5 QPM pro Projekt, Nutzer und Gerät begrenzt.

Wenn ein Projekt also 2 Nutzer mit jeweils 2 Geräten (insgesamt 4 Geräte) hat, kann derselbe Befehl für jedes dieser 4 Geräte 5 Mal pro Minute aufgerufen werden.

Wenn ein Projekt jedoch 2 Nutzer mit jeweils 3 Geräten (insgesamt 6 Geräte) hat, kann derselbe Befehl nicht für jedes dieser 6 Geräte 5 Mal pro Minute aufgerufen werden. Das würde 15 QPM pro Nutzer ergeben, während das Ratenlimit auf API-Ebene für devices.executeCommand für einen Nutzer eines Projekts 10 QPM beträgt.

Geräteinstanzebene

Außerdem werden Limits auf Geräteinstanzebene für Projekte und Befehle (devices.executeCommand) implementiert, um den Akku des Geräts zu schützen. Diese Limits werden sowohl auf QPM- als auch auf QPH-Ebene (Queries Per Hour, Abfragen pro Stunde) angewendet und gelten nicht für die API-Methoden get und list.

Angenommen, Projekt A und Projekt B haben beide Zugriff auf dasselbe Gerät, Gerät A (vielleicht hat der Nutzer zwei verschiedene kommerzielle Integrationen autorisiert, die dasselbe Gerät verwenden). Wenn Projekt A innerhalb einer Minute 4 Befehle an Gerät A gesendet hat, kann Projekt B in derselben Minute nur 1 Befehl an Gerät A senden, bevor das Ratenlimit auf Geräteinstanzebene erreicht wird. An diesem Punkt werden Befehle von beiden Projekten an Gerät A bis zum Ende der Minute, die mit dem ersten Befehl an Gerät A begonnen hat, gedrosselt.

Wenn ein Gerätetyp unten nicht aufgeführt ist, gelten für ihn keine Ratenlimits auf Geräteinstanzebene.

Gerätetyp Ratenlimit für Geräteinstanzen
THERMOSTAT 5 QPM oder 100 QPH
KAMERA 30 QPM oder 100 QPH
DOORBELL 30 QPM oder 100 QPH

Fehler

Die folgenden Fehlercodes können im Zusammenhang mit dieser Anleitung zurückgegeben werden:

Fehlermeldung RPC Fehlerbehebung
Limit erreicht RESOURCE_EXHAUSTED Jeder Entwickler hat ein Kontingent, das die Anzahl der Aufrufe begrenzt, die er ausführen kann. Wenn Sie mehr Aufrufe ausführen, als Ihr Kontingent zulässt, wird die Meldung „Limit erreicht“ angezeigt. Um dieses Problem zu beheben, senden Sie den Aufruf noch einmal, nachdem das Kontingent abgelaufen ist.

Eine vollständige Liste der API-Fehlercodes finden Sie in der API-Fehlercode-Referenz.