Mit Cloud IoT Core können Sie den Status jedes verbundenen Geräts überwachen. Der Status wird vom Gerät als Binärdaten gemeldet. Aktualisierungen des Gerätezustands werden in der Regel durch eine Änderung am Gerät ausgelöst – entweder durch eine Konfigurationsaktualisierung von Cloud IoT Core oder durch eine ähnliche Änderung von einer anderen externen Quelle, wie z. B. ein Firmware-Update.
Der Gerätestatus unterscheidet sich von der Gerätekonfiguration. Konfigurationsdaten werden von Cloud IoT Core an das Gerät gesendet. Statusdaten werden vom Gerät an Cloud IoT Core gesendet. Sie können sich die Konfiguration als externe Anweisung und den Status als interne Darstellung vorstellen.
Cloud IoT Core kann Ihnen helfen, grundlegende Fragen zu Konfiguration und Zustand zu beantworten: Was "denkt" das Gerät derzeit, was es tun sollte? Wie unterscheidet sich dies von der aktuellen Konfiguration für das Gerät?
Limits
Statusaktualisierungen sind auf 1 Aktualisierung pro Sekunde und Gerät beschränkt. Für optimale Ergebnisse sollte der Gerätestatus jedoch viel seltener aktualisiert werden, höchstens einmal alle 10 Sekunden.
Die Aktualisierungsrate wird als Zeit zwischen der letzten Serverbestätigung und der nächsten Aktualisierungsanfrage berechnet.
Gerätestatus melden
MQTT-Bridge
Um den Status an Cloud IoT Core über die MQTT-Bridge zu melden, veröffentlichen Sie Nachrichten an das MQTT-Topic /devices/DEVICE_ID/state
. Sie können ein Cloud Pub/Sub-Thema auswählen, um Statusereignisse zu speichern, wenn Sie eine Registry erstellen oder aktualisieren.
Weitere Informationen finden Sie unter Über die MQTT-Bridge veröffentlichen.
HTTP-Bridge
Wenn der Status über die HTTP-Bridge an Cloud IoT Core gemeldet wird, sollten Geräte eine setState
-Anfrage verwenden. Die binären Zustandsdaten werden im Hauptteil der Anfrage als ein base64-codierter String übergeben.
Weitere Informationen finden Sie unter Über die HTTP-Bridge veröffentlichen.
Gerätestatusdaten abrufen
In diesem Abschnitt wird erläutert, wie Sie die Statusdaten nach Geräten abrufen, die an Cloud IoT Core gemeldet werden. (Geräte selbst können keine Statusdaten aus der Cloud lesen.)
Statusdaten werden im Binärformat zurückgegeben. Statusdaten haben möglicherweise eine andere Struktur als die Konfigurationsdaten, die die Statusänderung auslösen.
Angenommen, Sie haben ein Gerät mit mehreren Lüftern. Ihre Konfigurationsdaten können ein JSON-Objekt sein, das einen einfachen booleschen Wert enthält, der die Kühlung aktiviert oder deaktiviert:
Beispiel für Konfigurationsdaten
{
'cooling': true
}
Die Statusdaten des Geräts können jedoch Diagnoseinformationen sowie die Lüfterdaten enthalten, die Sie als Reaktion auf eine 'cooling'
-Änderung erwarten:
Beispiel für Zustandsdaten
{
'fan1_target_rpm': 1000,
'fan2_target_rpm': 1200,
'firmware_version': '1.2.3b'
}
Die firmware_version
des Geräts bezieht sich nicht auf die Konfigurationsdaten, aber das Gerät gibt die vollständige interne Darstellung des Status zurück. Dieses Beispiel veranschaulicht, wie der Gerätestatus für die Fehlersuche im Allgemeinen sowie für die Bestätigung, dass Geräte bestimmte Konfigurationen bestätigt haben, nützlich sein kann.
Sie können Gerätestatusdaten mithilfe eines Cloud Pub/Sub-Themas, der Cloud Platform Console, der Cloud IoT Core API oder gcloud abrufen.
Cloud Pub/Sub-Thema
Cloud IoT Core speichert Statusdaten im Speicher. Sie können auch über die Cloud Console, gcloud oder die API ein optionales Cloud Pub/Sub-Thema für Benachrichtigungen konfigurieren. Dieses Thema kann mit dem Thema des Telemetrieereignisses identisch sein oder sich davon unterscheiden.
Statusdaten werden auf Best-Effort-Basis in Cloud Pub/Sub veröffentlicht: Wenn die Veröffentlichung zu einem Thema fehlschlägt, wird es nicht wiederholt. Wenn kein Thema definiert ist, werden Aktualisierungen des Gerätestatus weiterhin intern von Cloud IoT Core gespeichert, aber nur die letzten 10 Zustände werden beibehalten.
Console
- Rufen Sie in der Google Cloud Console die Seite Registrierungen auf.
Klicken Sie auf die ID der Registry für das Gerät.
Klicken Sie im Registry-Menü links auf Geräte.
Klicken Sie auf die ID des Geräts, um die Seite Gerätedetails aufzurufen.
Klicken Sie auf Konfigurations- und Statusverlauf. Verwenden Sie die Kästchen, um den Konfigurationsverlauf, den Statusverlauf oder beides anzuzeigen. Standardmäßig werden beide angezeigt.
- Ein grünes Häkchen zeigt an, dass die Konfiguration vom Gerät bestätigt wurde (nur MQTT).
- Ein gelbes Warnsymbol bedeutet, dass das Gerät die Konfiguration noch nicht bestätigt hat (nur MQTT).
- Klicken Sie auf eine Zeile, um die vollständigen Konfigurations- oder Statusdaten in JSON sowie den Zeitstempel und die Version abzurufen.
Klicken Sie auf Vergleichen, um die Konfigurationsdaten mit den Statusdaten zu vergleichen. Sie können diese Ansicht verwenden, um Konfigurationsfehler zu beheben und, wenn Sie MQTT verwenden, zu prüfen, ob die Geräte bestimmte Konfigurationsversionen bestätigt haben. (Die HTTP-Bridge unterstützt keine Bestätigung von Konfigurationen.)
gcloud
Führen Sie den Befehl gcloud iot devices states list
aus, um die neuesten Statusnachrichten für ein Gerät (bis zu 10) abzurufen.
gcloud iot devices states list \ --registry=REGISTRY_ID \ --device=DEVICE_ID \ --region=REGION
Für die Befehle gcloud iot registries create
und update
ist ein Cloud Pub/Sub-Flag für Statusbenachrichtigungen (--state-pubsub-topic
) verfügbar:
gcloud iot registries create REGISTRY_ID \ --project=PROJECT_ID \ --region=REGION \ [--event-notification-config=topic=TOPIC,[subfolder=SUBFOLDER] [--event-notification-config=...]] [--state-pubsub-topic=STATE_PUBSUB_TOPIC]
gcloud iot registries update REGISTRY_ID \ --project=PROJECT_ID \ --region=REGION \ [--event-notification-config=topic=TOPIC,[subfolder=SUBFOLDER] [--event-notification-config=...]] [--state-pubsub-topic=STATE_PUBSUB_TOPIC]
API
Verwenden Sie die Methode states.list
, um die neuesten Gerätestatus abzurufen (bis zu 10). Jede Device
-Ressource hat das Feld DeviceState
, das den Status enthält, der zuletzt vom Gerät empfangen wurde. Die Ressource DeviceRegistry
enthält das Feld StateNotificationConfig
, mit dem beim Erstellen oder Aktualisieren einer Registry ein Cloud Pub/Sub-Thema für die Statusbenachrichtigung angegeben werden kann.
Das folgende Beispiel zeigt, wie Sie den Gerätestatus aus einer Geräte-Registry abrufen: