Subskrybuj wydarzenia

Zdarzenia są asynchroniczne i zarządzane przez Google Cloud Pub/Sub w jednym temacie 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 potwierdzić, korzystając z 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 masz już włączone zdarzenia (np. podczas tworzenia projektu), w polu Temat Pub/Sub w sekcji Informacje o projekcie powinna być już wartość o nazwie Identyfikator tematu w formacie:

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

Jeśli nie masz włączonych zdarzeń:

  1. Kliknij ikonę  Pub/Sub temat i wybierz Edytuj.
  2. Zaznacz pole Włącz zdarzenia i kliknij Zapisz.
  3. Identyfikator tematu zostanie wygenerowany w formatzie pokazanym powyżej.

Skopiuj identyfikator tematu. Będzie Ci on potrzebny do utworzenia subskrypcji tematu, aby można było pobierać 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/sdm-prod/topics/enterprise-project-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].

Inicjowanie zdarzeń

Aby po utworzeniu subskrypcji Pub/Sub po raz pierwszy wywołać zdarzenia, 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 atrybutuTemperatura 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 stronę 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 niezapakowanych 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 uniknąć duplikatów 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 skrótowym. 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.