Subskrybuj wydarzenia

Zdarzenia są asynchroniczne i zarządzane przez Google Cloud Pub/Sub w ramach jednego tematu na Project. Zdarzenia dostarczają aktualizacje wszystkich urządzeń i struktur, a ich odbiór jest gwarantowany, dopóki użytkownik nie cofnie tokena dostępu i dopóki wiadomości o zdarzeniach 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), pole Temat Pub/Sub w sekcji Włącz temat Pub/Sub dla zdarzeń powinno już zawierać wartość, czyli identyfikator tematu, w starszym formacie:

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

Aby przeprowadzić migrację z tematu hostowanego przez Google, wyłącz temat Pub/Sub hostowany przez Google w  Device Access konsoli i ponownie włącz zdarzenia przy użyciu hostowanego samodzielnie tematu Pub/Sub utworzonego we własnym projekcie w chmurze Google. Migracja konfiguracji tematu Pub/Sub nie unieważnia istniejących tokenów dostępu użytkowników ani uprawnień OAuth.

Tematy Pub/Sub hostowane samodzielnie można tworzyć i zmieniać we własnym projekcie w chmurze Google Cloud. Podlegają one standardowym cenom Google Cloud Pub/Sub (które obejmują bezpłatny poziom 10 GB miesięcznie).

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 o zdarzeniach 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, który będzie Ci potrzebny do włączenia zdarzeń. Więcej informacji znajdziesz w artykule Tworzenie tematu.

Aby włączyć zdarzenia (lub przeprowadzić migrację z tematu hostowanego przez Google):

  1. Jeśli tworzysz nowy projekt, kliknij Włącz zdarzenia i Utwórz projekt. Jeśli przenosisz istniejący projekt z tematu hostowanego przez Google, najpierw wyłącz istniejący temat Pub/Sub na ekranie informacji o projekcie.
  2. Kliknij ikonę  obok opcji Temat Pub/Sub i wybierz Włącz wydarzenia z tematem PubSub (lub Edytuj bieżący temat).
  3. Wpisz utworzony wcześniej identyfikator tematu Pub/Sub hostowanego samodzielnie.

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

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. To szybki i łatwy sposób na sprawdzenie, czy na autoryzowanych urządzeniach są generowane zdarzenia.

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ę 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].

Wydarzenia inicjujące

Aby po raz pierwszy zainicjować zdarzenia po utworzeniu subskrypcji Pub/Sub, wywołaj funkcję listDevices 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 zmieni się temperatura otoczenia w pobliżu termostatu Nest, 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, np. wykrycie ruchu, osoby lub dźwięku przez kamerę wewnętrzną 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 wiadomości o zdarzeniach zostały dostarczone w ramach Twojej subskrypcji. 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. Kliknij PULL, aby wyświetlić wiadomości. 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, a także o rodzajach zdarzeń wysyłanych przez interfejs SDM API i sposobie ich używania znajdziesz w artykule Zdarzenia.

Zarządzanie wiadomościami

Wiadomości powinny być regularnie potwierdzane i usuwane, aby subskrypcja była czysta i aby 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 potwierdzenia i usunięcia danych:
    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 TRWAŁE USUWANIE 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 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 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 Wydarzenia.