Subskrybuj wydarzenia

Zdarzenia są asynchroniczne i zarządzane przez Google Cloud Pub/Sub w ramach jednego tematu na Project. Zdarzenia dostarczają aktualizacji dla wszystkich urządzeń i struktur. Odbieranie zdarzeń jest zapewnione, o ile użytkownik nie cofnie tokenu dostępu, a wiadomości zdarzeń 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 zrobiono, 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ść o nazwie „Identyfikator tematu” w starszym formacie:

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

Ten format tematu jest hostowany przez Google i będzie przechowywany w Twoim projekcie, chyba że wyłączysz hostowany przez Google temat Pub/Sub. Jeśli później ponownie ją włączysz, temat Pub/Sub zostanie przełączony na hostowany samodzielnie temat Pub/Sub.

Tematy Pub/Sub hostowane lokalnie można tworzyć i zmieniać w projekcie Google Cloud dewelopera. Deweloper jest też odpowiedzialny za 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 do uzyskiwania dostępu do danych zdarzeń i publikowania ich 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:

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

Zapisz identyfikator tematu, który będzie Ci potrzebny do włączenia zdarzeń. Więcej informacji znajdziesz w artykule Tworzenie tematu.

Aby włączyć zdarzenia:

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

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

Tworzenie subskrypcji pull

W ramach subskrypcji pull subskrybent inicjuje żądania do serwera Pub/Sub w celu pobrania wiadomości o zdarzeniach z kolejki. To szybki i prosty sposób na sprawdzenie, czy zdarzenia są generowane na Twoich autoryzowanych urządzeniach.

Otwórz Cloud Shell dla projektu Google Cloud:

Otwórz Google Cloud Shell

W Cloud Shell uruchom to polecenie, aby utworzyć subskrypcję tematu z pull, używając dowolnego subscription-id i wyjątkowego 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 wywołać zdarzenia po utworzeniu subskrypcji Pub/Sub, wykonaj wywołanie, aby wyświetlić listę urządzeń jako jednorazowy bodziec:

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 w polach cech, z których część jest wprowadzana automatycznie, a część ręcznie.

Jeśli np. temperatura otoczenia w pobliżu termostatu Nest Thermostat ulegnie zmianie, zdarzenie dotyczące cechyTemperature zostanie automatycznie wysłane z nową wartością ambientTemperatureCelsius.

Aby wygenerować go ręcznie:

  1. fizycznie zmieniać stan urządzenia, np. zmieniać tryb termostatu Nest Thermostat;
  2. Wywoływanie zdarzeń, takich jak wykrycie ruchu, osoby lub dźwięku, na kamerze Google Nest Cam Indoor.
  3. Wykonaj polecenie urządzenia za pomocą interfejsu SDM API.

Wyświetl wiadomości

Wiadomości zdarzeń możesz 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 pojawić się aktywność na wykresie Liczba niezaakceptowanych wiadomości. Oznacza to, że wiadomości o zdarzeniach zostały dostarczone w ramach subskrypcji. Jeśli nie widzisz żadnej aktywności, odczekaj 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. Powinny one odpowiadać działaniom, które generują zdarzenia.

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 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ąć dublowania wiadomości do innych subskrybentów. Wszystkie wiadomości subskrypcji można ręcznie usunąć w sekcji Subskrypcje Pub/Sub:

Otwórz stronę Subskrypcje Google Cloud Pub/Sub

  1. Kliknij identyfikator subskrypcji.
  2. Możesz potwierdzić i usunąć dane na kilka sposobów:
    1. Kliknij  WYŚWIETL WIADOMOŚCI, aby otworzyć panel Wiadomości. Zaznacz pole wyboru Włącz komunikaty potwierdzenia i kliknij PULL, aby wyświetlić i potwierdzić wszystkie wiadomości.
    2. Kliknij  TRWAŁE USUŃ WIADOMOŚCI, aby trwale usunąć wszystkie istniejące wiadomości przez ich potwierdzenie bez ich wyświetlania. Aby potwierdzić, kliknij USUNĘĆ.

Wiadomości można też usunąć w Cloud Shell, używając flagi --auto-ack w podstawowym poleceniu 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 to miało miejsce do tej pory w tym przewodniku. Konto usługi jest używane przez aplikację lub maszynę wirtualną, a nie przez osobę, i ma własny klucz konta.

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