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 Strukturen. 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 noch nicht geschehen.
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
Wenn Sie von einem von Google gehosteten Thema migrieren möchten, deaktivieren Sie das von Google gehostete Pub/Sub-Thema in der Device Access Console und aktivieren Sie Ereignisse noch einmal mit einem selbst gehosteten Pub/Sub-Thema, das in Ihrem eigenen Google Cloud-Projekt erstellt wurde. Durch die Migration der Pub/Sub-Themenkonfiguration werden vorhandene Nutzerzugriffstokens oder OAuth-Berechtigungen nicht ungültig.
Selbst gehostete Pub/Sub-Themen können in Ihrem eigenen Google Cloud-Projekt erstellt oder geändert werden und unterliegen den standardmäßigen Google Cloud Pub/Sub-Preisen (einschließlich eines kostenlosen Kontingents von 10 GB pro Monat).
Erstellen Sie das Pub/Sub-Thema:
gcloud pubsub topics create {topic} --message-retention-duration=0sErteilen Sie die erforderlichen SDM API-Berechtigungen für den Zugriff auf und die Veröffentlichung von Ereignisdaten für die Themen-ID Ihres Projekts:
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 folgendes Format:
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 (oder migrieren von einem von Google gehosteten Thema):
- Wenn Sie ein neues Projekt erstellen, wählen Sie Ereignisse aktivieren aus und klicken Sie auf Projekt erstellen. Wenn Sie ein vorhandenes Projekt von einem von Google gehosteten Thema migrieren, deaktivieren Sie zuerst das vorhandene Pub/Sub-Thema auf dem Informationsbildschirm des Projekts.
- Klicken Sie für Pub/Sub-Thema auf das Symbol und wählen Sie Ereignisse mit Pub/Sub-Thema aktivieren (oder Aktuelles Thema bearbeiten) aus.
- Geben Sie die selbst gehostete Pub/Sub-Themen-ID ein, die Sie zuvor erstellt haben.
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 prüfen, ob Ereignisse für Ihre autorisierten Geräte generiert werden.
Öffnen Sie Cloud Shell für Ihr Google Cloud-Projekt:
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 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'Ereignisse für alle Gebäude und Geräte werden nach diesem API-Aufruf veröffentlicht.
Ereignisse generieren
Für alle Änderungen an Attributfeldern werden Ereignisse generiert. Einige davon sind automatisch, andere manuell.
Wenn sich beispielsweise die Umgebungstemperatur in der Nähe Ihres Nest Thermostats ändert, wird automatisch ein Ereignis für dasTemperature -Trait mit einem neuen ambientTemperatureCelsius-Wert gesendet.
So generieren Sie eine manuell:
- Den Status deines Geräts physisch ändern, z. B. den Modus deines Nest Thermostats.
- Lösen Sie ein Ereignis aus, z. B. Bewegung, Person oder Geräusch, auf einer Google Nest Cam Indoor.
- Gerätebefehl über die SDM API ausführen
Nachrichten ansehen
Ereignisnachrichten können in Ihrem Google Cloud-Projekt im Bereich „Pub/Sub-Abos“ aufgerufen werden:
- Klicken Sie auf die Abo-ID, die Sie zuvor erstellt haben.
- Auf dem Bildschirm Abodetails sollten Aktivitäten im 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.
- Klicken Sie auf NACHRICHTEN ANZEIGEN, um den Bereich Nachrichten aufzurufen.
- 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-idWeitere Informationen zu Abotypen sowie zu den von der SDM API gesendeten Ereignistypen und deren 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:
- Klicken Sie auf die Abo-ID.
- Es gibt mehrere Möglichkeiten, die Daten zu bestätigen und zu löschen:
- Klicken Sie auf NACHRICHTEN ANZEIGEN, um den Bereich Nachrichten aufzurufen. Klicken Sie das Kästchen Bestätigungsnachrichten aktivieren an und klicken Sie auf PULL, um alle Nachrichten anzusehen und zu bestätigen.
- Klicken Sie auf PURGE MESSAGES (NACHRICHTEN LÖSCHEN), um alle vorhandenen Nachrichten zu löschen, ohne sie anzusehen. Klicken Sie zur Bestätigung 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-ackAbos verwalten
Abos können auf verschiedene Arten konfiguriert werden, wie unter Aboattribute verwenden beschrieben.
Wie Sie Abos und Nachrichten verwalten möchten, liegt ganz bei Ihnen. Für eine Produktionsanwendung empfehlen wir jedoch, zur Authentifizierung Dienstkonten zu verwenden und nicht wie bisher in dieser Kurzanleitung ein Nutzerkonto. Ein Dienstkonto wird von einer Anwendung oder einer virtuellen Maschine und nicht von einer Person verwendet und hat einen eigenen eindeutigen Kontoschlüssel.
Weitere Informationen zur Dienstkonto-Authentifizierung mit Device Accessfinden Sie unter Events.