Veranstaltungen abonnieren

Ereignisse sind asynchron und werden von Google Cloud Pub/Sub in einem einzelnen Thema pro Projectverwaltet. Ereignisse liefern Updates für alle Geräte und Gebäude. Der Empfang von Ereignissen ist sichergestellt, solange das Zugriffstoken nicht vom Nutzer widerrufen wurde und die Ereignisnachrichten nicht abgelaufen sind.

Ereignisse sind eine optionale Funktion der SDM API. Sie lassen sich einfach implementieren und mit Ihrem Google Cloud-Projekt überprüfen.

Veranstaltungen aktivieren

Ereignisse können in der Device Access Console aktiviert werden. Wählen Sie in der Console Ihr Projekt aus, falls Sie dies noch nicht getan haben.

Zur Device Access Console

Wenn Sie Ereignisse bereits aktiviert haben (z. B. bei der Projekterstellung), sollte das Feld Pub/Sub-Thema im Abschnitt Pub/Sub-Thema für Ereignisse aktivieren bereits einen Wert haben, eine Themen-ID im alten Format:

projects/sdm-prod/topics/enterprise-project-id

Dieses Thema wird von Google gehostet und bleibt für Ihr Projekt bestehen, sofern Sie das von Google gehostete Pub/Sub-Thema nicht deaktivieren. Wenn Sie sie später wieder aktivieren, wird das selbst gehostete Pub/Sub-Thema verwendet.

Selbst gehostete Pub/Sub-Themen können im Google Cloud-Projekt eines Entwicklers erstellt oder geändert werden. Der Entwickler ist auch für alle Kosten verantwortlich, die mit der Verwendung von Pub/Sub verbunden sind. Weitere Informationen finden Sie unter Pub/Sub-Preise.

Erstellen Sie das Pub/Sub-Thema:

gcloud pubsub topics create {topic} --message-retention-duration=0s

Erteilen Sie die erforderlichen SDM API-Berechtigungen, um auf Ereignisdaten für die Themen-ID Ihres Projekts zuzugreifen und sie zu veröffentlichen:

gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"

Die neu erstellte Themen-ID hat das folgende Format:

projects/gcp-project-name/subscriptions/topic-id

Notieren Sie sich die Themen-ID. Sie benötigen sie, um Ereignisse zu aktivieren. Weitere Informationen finden Sie unter Thema erstellen.

So aktivieren Sie Ereignisse:

  1. Klicken Sie das Kästchen Ereignisse aktivieren an und klicken Sie auf Projekt erstellen.
  2. Klicken Sie für Pub/Sub-Thema auf das Symbol  und wählen Sie Ereignisse mit Pub/Sub-Thema aktivieren aus.
  3. Geben Sie die Pub/Sub-Themen-ID ein, die entweder bereitgestellt oder zuvor erstellt wurde.

Kopieren Sie Ihre Themen-ID. Sie benötigen sie, um ein Abo für das Thema zu erstellen, damit Ereignisnachrichten abgerufen werden können.

Pull-Abo erstellen

Bei einem Pull-Abo initiiert ein Abonnent Anfragen an den Pub/Sub-Server für in die Warteschlange gestellte Ereignisnachrichten. So können Sie schnell und einfach überprüfen, ob Ereignisse für Ihre autorisierten Geräte generiert werden.

Öffnen Sie Cloud Shell für Ihr Google Cloud-Projekt:

Zu Google Cloud Shell

Führen Sie an der Cloud Shell-Eingabeaufforderung den folgenden Befehl aus, um ein Pull-Abo für Ihr Thema zu erstellen. Verwenden Sie dazu ein beliebiges subscription-id und Ihre eindeutige Themen-ID:

gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].

Ereignisse auslösen

Wenn Sie Ereignisse zum ersten Mal auslösen möchten, nachdem das Pub/Sub-Abo erstellt wurde, rufen Sie Ihre Geräte als einmaligen Trigger auf:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Nach diesem API-Aufruf werden Ereignisse für alle Gebäude und Geräte veröffentlicht.

Ereignisse generieren

Für alle Änderungen an Attributfeldern werden Ereignisse generiert. Einige davon erfolgen automatisch, andere manuell.

Wenn sich beispielsweise die Umgebungstemperatur in der Nähe Ihres Nest Thermostats ändert, wird automatisch ein Ereignis für dasTemperature -Attribut mit einem neuen ambientTemperatureCelsius-Wert gesendet.

So generieren Sie eine manuell:

  1. Den Status Ihres Geräts physisch ändern, z. B. den Modus Ihres Nest Thermostats.
  2. Lösen Sie ein Ereignis aus, z. B. eine Bewegung, eine Person oder ein Geräusch, das von einer Google Nest Cam Indoor erkannt wird.
  3. Gerätebefehl ausführen mit der SDM API.

Nachrichten ansehen

Ereignisnachrichten können in Ihrem Google Cloud-Projekt im Bereich „Pub/Sub-Abos“ aufgerufen werden:

Zu Google Cloud Pub/Sub-Abos

  1. Klicken Sie auf die Abo-ID, die Sie zuvor erstellt haben.
  2. Auf dem Bildschirm Abo-Details sollten Sie Aktivitäten im Diagramm Anzahl der nicht bestätigten Nachrichten sehen. Das bedeutet, dass Ereignisbenachrichtigungen für Ihr Abo eingegangen sind. Wenn keine Aktivitäten angezeigt werden, warten Sie eine Weile oder generieren Sie einige weitere Ereignisse.
  3. Klicken Sie auf NACHRICHTEN ANSEHEN, um den Bereich Nachrichten aufzurufen.
  4. Klicken Sie auf ABRUFEN, um die Nachrichten aufzurufen. Sie sollten den Aktionen entsprechen, mit denen Sie Ereignisse generiert haben.

Nachrichten können auch in Cloud Shell mit einem einfachen pull-Befehl aufgerufen werden:

gcloud pubsub subscriptions pull subscription-id

Weitere Informationen zu Abotypen sowie zu den von der SDM API gesendeten Ereignistypen und deren Verwendung finden Sie unter Events.

Nachrichten verwalten

Nachrichten sollten regelmäßig bestätigt und gelöscht werden, um ein Abo sauber zu halten und die Zustellung doppelter Nachrichten an andere Abonnenten zu vermeiden. Alle Abo-Nachrichten können im Bereich „Pub/Sub-Abos“ manuell gelöscht werden:

Zu Google Cloud Pub/Sub-Abos

  1. Klicken Sie auf die Abo-ID.
  2. Es gibt mehrere Möglichkeiten, die Bestätigung zu erhalten und die Daten zu löschen:
    1. Klicken Sie auf NACHRICHTEN ANSEHEN, um den Bereich Nachrichten aufzurufen. Klicken Sie auf das Kästchen Bestätigungsnachrichten aktivieren und dann auf ABRUFEN, um alle Nachrichten anzusehen und zu bestätigen.
    2. Klicken Sie auf NACHRICHTEN DAUERHAFT LÖSCHEN, um alle vorhandenen Nachrichten durch Bestätigung dauerhaft zu löschen, ohne sie anzusehen. Klicken Sie zum Bestätigen auf PURGE.

Nachrichten können auch in Cloud Shell gelöscht werden, indem Sie das Flag --auto-ack mit einem einfachen pull-Befehl verwenden:

gcloud pubsub subscriptions pull subscription-id --auto-ack

Abos verwalten

Abos können auf verschiedene Arten konfiguriert werden, wie unter Abo-Eigenschaften verwenden beschrieben.

Wie Sie Abos und Nachrichten verwalten möchten, liegt ganz bei Ihnen. Für eine Produktionsanwendung empfehlen wir jedoch, Dienstkonten für die Authentifizierung zu verwenden und nicht ein Nutzerkonto, wie Sie es bisher in dieser Kurzanleitung getan haben. Ein Dienstkonto wird von einer Anwendung oder einer virtuellen Maschine verwendet, nicht von einer Person, und hat einen eigenen eindeutigen Kontoschlüssel.

Weitere Informationen zur Dienstkontoauthentifizierung mit Device Accessfinden Sie unter Events.