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.
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=0sPrzyznaj 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):
- 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.
- Kliknij ikonę obok opcji Temat Pub/Sub i wybierz Włącz wydarzenia z tematem PubSub (lub Edytuj bieżący temat).
- 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:
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:
- fizycznie zmieniać stan urządzenia, np. tryb termostatu Nest;
- wywoływać zdarzenie, np. wykrycie ruchu, osoby lub dźwięku przez kamerę wewnętrzną Google Nest Cam Indoor;
- 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
- Kliknij utworzony wcześniej identyfikator subskrypcji.
- 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ń.
- Kliknij WYŚWIETL WIADOMOŚCI, aby otworzyć panel Wiadomości.
- 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-idWię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
- Kliknij identyfikator subskrypcji.
- Istnieje kilka sposobów potwierdzenia i usunięcia danych:
- 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.
- 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-ackZarzą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.