Zdarzenia są asynchroniczne i zarządzane przez Google Cloud Pub/Sub w jednym temacie na Project. Wydarzenia zapewniają aktualizacje wszystkich urządzeń i struktur, a ich odbiór jest gwarantowany, o ile użytkownik nie cofnie tokena dostępu i wiadomości o wydarzeniach 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), w sekcji Włącz temat Pub/Sub dla zdarzeń w polu Temat Pub/Sub powinna być już widoczna wartość, czyli identyfikator tematu, w starszym formacie:
projects/sdm-prod/topics/enterprise-project-id
Ten format tematu jest hostowany przez Google i będzie dostępny w Twoim projekcie, dopóki nie wyłączysz hostowanego przez Google tematu Pub/Sub. Jeśli później ponownie włączysz tę funkcję, nastąpi przełączenie na samodzielnie hostowany temat Pub/Sub.
Własne tematy Pub/Sub można tworzyć i zmieniać we własnym projekcie Google Cloud. Deweloper ponosi też 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 API, aby uzyskać dostęp do danych zdarzenia 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, będzie on potrzebny do włączenia zdarzeń. Więcej informacji znajdziesz w artykule Tworzenie tematu.
Aby włączyć wydarzenia:
- Zaznacz Włącz zdarzenia i kliknij Utwórz projekt.
- Kliknij ikonę obok opcji Temat Pub/Sub i wybierz Włącz zdarzenia z tematem PubSub.
- Wpisz identyfikator tematu Pub/Sub, który został podany lub utworzony wcześniej.
Skopiuj identyfikator tematu. Będzie on potrzebny do utworzenia subskrypcji tematu, aby można było pobierać wiadomości o zdarzeniach.
Tworzenie subskrypcji pull
W przypadku subskrypcji pull subskrybent inicjuje żądania do serwera Pub/Sub dotyczące wiadomości o zdarzeniach w kolejce. To szybki i łatwy sposób sprawdzenia, czy na autoryzowanych urządzeniach są generowane zdarzenia.
Otwórz Cloud Shell w projekcie 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].
Zdarzenia inicjujące
Aby po raz pierwszy zainicjować zdarzenia po utworzeniu subskrypcji Pub/Sub, wywołaj funkcję wyświetlania listy urządzeń 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 temperatura otoczenia w pobliżu termostatu Nest Thermostat się zmieni, 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, takie jak ruch, wykrycie osoby lub dźwięku, na kamerze 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 w ramach Twojej subskrypcji otrzymano wiadomości o zdarzeniach. Jeśli nie widzisz żadnej aktywności, poczekaj chwilę lub wygeneruj jeszcze kilka zdarzeń.
- Kliknij WYŚWIETL WIADOMOŚCI, aby otworzyć panel Wiadomości.
- Aby wyświetlić wiadomości, kliknij PULL (POBIERZ). 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, typach zdarzeń wysyłanych przez interfejs SDM API i sposobach ich używania znajdziesz w sekcji Zdarzenia.
Zarządzanie wiadomościami
Wiadomości powinny być regularnie potwierdzane i usuwane, aby utrzymać subskrypcję w czystości i 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 potwierdzania i usuwania:
- 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 TRWALE USUŃ 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 skonfigurować na różne sposoby, jak opisano w artykule Używanie 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 Zdarzenia.