Veranstaltungen abonnieren

Ereignisse sind asynchron und werden von Google Cloud Pub/Sub in einem einzigen 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 Ereignismeldungen nicht abgelaufen sind.

Ereignisse sind eine optionale Funktion der SDM API. Sie können einfach mit Ihrem Google Cloud-Projekt implementiert und überprüft werden.

Ereignisse aktivieren

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

Zur Device Access Console

Wenn Sie Ereignisse bereits aktiviert haben (z. B. bei der Projekterstellung), sollte im Bereich Pub/Sub-Thema für Ereignisse aktivieren im Feld Pub/Sub-Thema bereits ein Wert vorhanden sein, eine Themen-ID im älteren Format:

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

Dieses Themenformat wird von Google gehostet und bleibt für Ihr Projekt bestehen, es sei denn, Sie deaktivieren das von Google gehostete Pub/Sub-Thema. Wenn Sie es später wieder aktivieren, wird zum selbst gehosteten Pub/Sub-Thema gewechselt.

Selbst gehostete Pub/Sub-Themen können im eigenen 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

Gewähren 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"

Das Format Ihrer neu erstellten Themen-ID sieht so aus:

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

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

So aktivieren Sie Ereignisse:

  1. Klicken Sie auf Ereignisse aktivieren und dann auf Projekt erstellen.
  2. Klicken Sie auf das Symbol für Pub/Sub Thema 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 Ereignismeldungen 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 Ereignismeldungen. So können Sie schnell und einfach prüfen, ob Ereignisse für Ihre autorisierten Geräte generiert werden.

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

Google Cloud Shell aufrufen

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 eine beliebige 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 initiieren

Wenn Sie Ereignisse zum ersten Mal initiieren 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

Ereignisse werden für alle Änderungen an Attributfeldern 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 das Attribut Temperature gesendet, das einen neuen Wert für ambientTemperatureCelsius enthält.

So generieren Sie manuell ein Ereignis:

  1. Ändern Sie den Status Ihres Geräts, z. B. den Modus Ihres Nest Thermostats.
  2. Lösen Sie ein Ereignis aus, z. B. eine Bewegung, eine Person oder ein Geräusch auf einer Google Nest Cam Indoor.
  3. Führen Sie einen Gerätebefehl mit der SDM API aus.

Nachrichten ansehen

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

Google Cloud Pub/Sub-Abos aufrufen

  1. Klicken Sie auf die zuvor erstellte Abo-ID.
  2. Auf dem Bildschirm Abo-Details sollten Aktivitäten für das Diagramm Anzahl der nicht bestätigten Nachrichten angezeigt werden. Das bedeutet, dass Ereignismeldungen 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 das Feld Nachrichten aufzurufen.
  4. Klicken Sie auf ABRUFEN , um die Nachrichten anzusehen. Sie sollten den Aktionen entsprechen, mit denen Sie Ereignisse generiert haben.

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

gcloud pubsub subscriptions pull subscription-id

Weitere Informationen zu Abo-Typen sowie zu den von der SDM API gesendeten Ereignistypen und ihrer Verwendung finden Sie unter Ereignisse.

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:

Google Cloud Pub/Sub-Abos aufrufen

  1. Klicken Sie auf die Abo-ID.
  2. Es gibt verschiedene Möglichkeiten, Nachrichten zu bestätigen und zu löschen:
    1. Klicken Sie auf NACHRICHTEN ANSEHEN , um das Feld Nachrichten aufzurufen. Klicken Sie das Kästchen Bestätigungsnachrichten aktivieren an und klicken Sie auf ABRUFEN , um alle Nachrichten anzusehen und zu bestätigen.
    2. Klicken Sie auf NACHRICHTEN LÖSCHEN , um alle vorhandenen Nachrichten durch Bestätigung zu löschen, ohne sie anzusehen. Klicken Sie zur Bestätigung auf PURGE.

Nachrichten können auch in Cloud Shell gelöscht werden. Verwenden Sie dazu das Flag --auto-ack mit einem einfachen pull-Befehl:

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

Abos verwalten

Abos können auf verschiedene Arten konfiguriert werden. Eine Beschreibung finden Sie unter Abo-Attribute verwenden.

Wie Sie Abos und Nachrichten verwalten möchten, liegt bei Ihnen. Für eine Produktionsanwendung empfehlen wir jedoch, für die Authentifizierung Dienstkonten zu verwenden und nicht wie bisher in dieser Kurzanleitung ein Nutzerkonto. 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 Ereignisse.