Subskrybuj wydarzenia

Zdarzenia są asynchroniczne i zarządzane przez Google Cloud Pub/Sub w jednym temacie na Project. Zdarzenia zapewniają aktualizacje na wszystkich urządzeniach i w strukturach, a ich odbiór jest gwarantowany, dopóki token dostępu nie zostanie unieważniony przez użytkownika i nie wygasną wiadomości o zdarzeniach.

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), pole Temat Pub/Sub w sekcji Włącz temat Pub/Sub dla zdarzeń powinno mieć już wartość, czyli identyfikator tematu w starszym formacie:

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

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

Hostowane samodzielnie tematy Pub/Sub można tworzyć i zmieniać we własnym projekcie w chmurze Google dewelopera. 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 SDM API, aby uzyskać dostęp do danych zdarzeń 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ć zdarzenia:

  1. Zaznacz Włącz zdarzenia i kliknij Utwórz projekt.
  2. Kliknij ikonę **Temat Pub/Sub ** i wybierz **Włącz zdarzenia za pomocą tematu Pub/Sub**.
  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. Więcej

Tworzenie subskrypcji pull

Subskrypcja pull to subskrypcja, w której subskrybent inicjuje żądania do serwera Pub/Sub dotyczące wiadomości o zdarzeniach w kolejce. Jest to szybki i łatwy sposób na sprawdzenie, czy zdarzenia są generowane na autoryzowanych urządzeniach.

Otwórz Cloud Shell w projekcie w chmurze Google Cloud:

Otwórz Google Cloud Shell

W wierszu poleceń Cloud Shell uruchom to polecenie, aby utworzyć subskrypcję 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].

Inicjowanie zdarzeń

Aby po raz pierwszy zainicjować zdarzenia po utworzeniu subskrypcji Pub/Sub, wywołaj listę 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 tym wywołaniu interfejsu API zostaną opublikowane zdarzenia dotyczące wszystkich struktur i urządzeń.

Generowanie zdarzeń

Zdarzenia są generowane w przypadku wszystkich zmian pól cech. Niektóre z nich są automatyczne, a inne ręczne.

Jeśli np. zmieni się temperatura otoczenia w pobliżu urządzenia Nest Thermostat, automatycznie zostanie wysłane zdarzenie dotyczące cechy Temperature z nową wartością ambientTemperatureCelsius.

Aby wygenerować zdarzenie ręcznie:

  1. Zmień fizycznie stan urządzenia, np. tryb urządzenia Nest Thermostat.
  2. Wywołaj zdarzenie, np. ruch, osobę lub dźwięk, na kamerze wewnętrznej Google Nest Cam Indoor.
  3. Wykonaj polecenie urządzenia za pomocą interfejsu SDM API.

Wyświetl wiadomości

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

Otwórz subskrypcje 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 wiadomości o zdarzeniach dotarły do Twojej subskrypcji. Jeśli nie widzisz żadnej aktywności, odczekaj chwilę lub wygeneruj kilka dodatkowych zdarzeń.
  3. Kliknij WYŚWIETL WIADOMOŚCI , aby otworzyć panel Wiadomości.
  4. Aby wyświetlić wiadomości, kliknij 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 typach subskrypcji oraz typach zdarzeń wysyłanych przez interfejs SDM API i sposobach ich używania znajdziesz w artykule Zdarzenia.

Zarządzanie wiadomościami

Wiadomości należy regularnie potwierdzać i usuwać, aby subskrypcja była czysta i aby uniknąć dostarczania duplikatów wiadomości do innych subskrybentów. Wszystkie wiadomości subskrypcji można ręcznie usunąć w sekcji Subskrypcje Pub/Sub:

Otwórz subskrypcje 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 USUŃ WIADOMOŚCI , aby 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 konfigurować na różne sposoby, jak opisano w artykule Korzystanie z 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 kont usługi do uwierzytelniania, a nie 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 za pomocą konta usługi znajdziesz w artykule Device Access Zdarzenia.