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.
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:
- Zaznacz pole Włącz zdarzenia i kliknij Utwórz projekt.
- Kliknij ikonę tematu Pub/Sub i wybierz Włącz zdarzenia z tematem Pub/Sub.
- 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:
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:
- fizycznie zmieniać stan urządzenia, np. zmieniać tryb termostatu Nest Thermostat;
- Wywoływanie zdarzeń, takich jak wykrycie ruchu, osoby lub dźwięku, na kamerze Google Nest Cam Indoor.
- 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
- Kliknij utworzony wcześniej identyfikator subskrypcji.
- 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ń.
- Kliknij WYŚWIETL WIADOMOŚCI, aby otworzyć panel Wiadomości.
- 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
- Kliknij identyfikator subskrypcji.
- Możesz potwierdzić i usunąć dane na kilka sposobów:
- 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.
- 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.