Subskrybuj wydarzenia

Zdarzenia są asynchroniczne i zarządzane przez Google Cloud Pub/Sub w jednym temacie na Project. Wydarzenia zapewniają aktualizacje wszystkich urządzeń i struktur, a ich odbiór jest gwarantowany, o ile użytkownik nie cofnie tokena dostępu i wiadomości o wydarzeniach nie wygasną.

Zdarzenia są opcjonalną funkcją interfejsu SDM API. Można je łatwo wdrożyć i zweryfikować za pomocą projektu Google Cloud.

Włącz wydarzenia

Zdarzenia można włączyć w  Device Access konsoli. Jeśli jeszcze tego nie zrobisz, wybierz projekt w konsoli.

Otwórz Device Access konsolę

Jeśli zdarzenia zostały już włączone (np. podczas tworzenia projektu), w sekcji Włącz temat Pub/Sub dla zdarzeń w polu Temat Pub/Sub powinna być już widoczna wartość, czyli identyfikator tematu, w starszym formacie:

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

Ten format tematu jest hostowany przez Google i będzie dostępny w Twoim projekcie, dopóki nie wyłączysz hostowanego przez Google tematu Pub/Sub. Jeśli później ponownie włączysz tę funkcję, nastąpi przełączenie na samodzielnie hostowany temat Pub/Sub.

Własne tematy Pub/Sub można tworzyć i zmieniać we własnym projekcie Google Cloud. Deweloper ponosi też wszystkie koszty związane z korzystaniem z Pub/Sub. Więcej informacji znajdziesz w cenniku Pub/Sub.

Utwórz temat Pub/Sub:

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

Przyznaj niezbędne uprawnienia interfejsu SDM API, aby uzyskać dostęp do danych zdarzenia i publikować je w przypadku identyfikatora tematu projektu:

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

Format nowo utworzonego identyfikatora tematu będzie wyglądać tak:

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

Zanotuj identyfikator tematu, będzie on potrzebny do włączenia zdarzeń. Więcej informacji znajdziesz w artykule Tworzenie tematu.

Aby włączyć wydarzenia:

  1. Zaznacz Włącz zdarzenia i kliknij Utwórz projekt.
  2. Kliknij ikonę  obok opcji Temat Pub/Sub i wybierz Włącz zdarzenia z tematem PubSub.
  3. Wpisz identyfikator tematu Pub/Sub, który został podany lub utworzony wcześniej.

Skopiuj identyfikator tematu. Będzie on potrzebny do utworzenia subskrypcji tematu, aby można było pobierać wiadomości o zdarzeniach.

Tworzenie subskrypcji pull

W przypadku subskrypcji pull subskrybent inicjuje żądania do serwera Pub/Sub dotyczące wiadomości o zdarzeniach w kolejce. To szybki i łatwy sposób sprawdzenia, czy na autoryzowanych urządzeniach są generowane zdarzenia.

Otwórz Cloud Shell w projekcie Google Cloud:

Otwórz Google Cloud Shell

W wierszu poleceń Cloud Shell uruchom to polecenie, aby utworzyć subskrypcję typu pull tematu, używając dowolnego subscription-id i unikalnego identyfikatora tematu:

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

Zdarzenia inicjujące

Aby po raz pierwszy zainicjować zdarzenia po utworzeniu subskrypcji Pub/Sub, wywołaj funkcję wyświetlania listy urządzeń jako jednorazowy wyzwalacz:

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

Po wywołaniu tego interfejsu API będą publikowane zdarzenia dotyczące wszystkich struktur i urządzeń.

Generowanie zdarzeń

Zdarzenia są generowane w przypadku wszystkich zmian w polach cech, z których niektóre są automatyczne, a inne ręczne.

Jeśli na przykład temperatura otoczenia w pobliżu termostatu Nest Thermostat się zmieni, automatycznie zostanie wysłane zdarzenie dotyczące cechyTemperatura z nową wartością ambientTemperatureCelsius.

Aby wygenerować go ręcznie:

  1. fizycznie zmieniać stan urządzenia, np. tryb termostatu Nest;
  2. wywoływać zdarzenie, takie jak ruch, wykrycie osoby lub dźwięku, na kamerze Google Nest Cam Indoor;
  3. Wykonywanie poleceń na urządzeniu za pomocą interfejsu SDM API.

Wyświetl wiadomości

Wiadomości o zdarzeniach możesz wyświetlać w projekcie Google Cloud w sekcji Subskrypcje Pub/Sub:

Otwórz stronę subskrypcji Google Cloud Pub/Sub

  1. Kliknij utworzony wcześniej identyfikator subskrypcji.
  2. Na ekranie Szczegóły subskrypcji powinna być widoczna aktywność na wykresie Liczba niepotwierdzonych wiadomości. Oznacza to, że w ramach Twojej subskrypcji otrzymano wiadomości o zdarzeniach. Jeśli nie widzisz żadnej aktywności, poczekaj chwilę lub wygeneruj jeszcze kilka zdarzeń.
  3. Kliknij WYŚWIETL WIADOMOŚCI, aby otworzyć panel Wiadomości.
  4. Aby wyświetlić wiadomości, kliknij PULL (POBIERZ). Powinny one odpowiadać działaniom, których używasz do generowania zdarzeń.

Wiadomości można też wyświetlać w Cloud Shell za pomocą podstawowego polecenia pull:

gcloud pubsub subscriptions pull subscription-id

Więcej informacji o rodzajach subskrypcji, typach zdarzeń wysyłanych przez interfejs SDM API i sposobach ich używania znajdziesz w sekcji Zdarzenia.

Zarządzanie wiadomościami

Wiadomości powinny być regularnie potwierdzane i usuwane, aby utrzymać subskrypcję w czystości i uniknąć dostarczania zduplikowanych wiadomości do innych subskrybentów. Wszystkie wiadomości subskrypcji można ręcznie usunąć w sekcji Subskrypcje Pub/Sub:

Otwórz stronę subskrypcji Google Cloud Pub/Sub

  1. Kliknij identyfikator subskrypcji.
  2. Istnieje kilka sposobów potwierdzania i usuwania:
    1. Kliknij WYŚWIETL WIADOMOŚCI, aby otworzyć panel Wiadomości. Zaznacz pole Włącz komunikaty potwierdzenia i kliknij Pobierz, aby wyświetlić i potwierdzić wszystkie wiadomości.
    2. Kliknij TRWALE USUŃ WIADOMOŚCI, aby trwale usunąć wszystkie istniejące wiadomości przez ich potwierdzenie bez wyświetlania. Aby potwierdzić, kliknij PURGE.

Wiadomości można też usuwać w Cloud Shell za pomocą flagi --auto-ack z podstawowym poleceniem pull:

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

Zarządzaj subskrypcjami

Subskrypcje można skonfigurować na różne sposoby, jak opisano w artykule Używanie właściwości subskrypcji.

Sposób zarządzania subskrypcjami i wiadomościami zależy od Ciebie, ale w przypadku aplikacji produkcyjnej zalecamy używanie do uwierzytelniania kont usługi zamiast konta użytkownika, jak w tym przewodniku. Konto usługi jest używane przez aplikację lub maszynę wirtualną, a nie przez osobę, i ma własny, unikalny klucz konta.

Więcej informacji o uwierzytelnianiu konta usługi za pomocą Device Accessznajdziesz w sekcji Zdarzenia.