Zdarzenia są asynchroniczne i zarządzane przez Google Cloud Pub/Sub w jednym temacie na Project. Zdarzenia zapewniają aktualizacje na wszystkich urządzeniach i w strukturach, a ich odbiór jest gwarantowany, dopóki token dostępu nie zostanie unieważniony przez użytkownika i nie wygasną wiadomości o zdarzeniach.
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 mieć już wartość, czyli identyfikator tematu w starszym formacie:
projects/sdm-prod/topics/enterprise-project-id
Ten format tematu jest hostowany przez Google i będzie obowiązywać w Twoim projekcie, dopóki nie wyłączysz hostowanego przez Google tematu Pub/Sub. Jeśli włączysz go później, nastąpi przełączenie na hostowany samodzielnie temat Pub/Sub.
Hostowane samodzielnie tematy Pub/Sub można tworzyć i zmieniać we własnym projekcie w chmurze Google dewelopera. 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=0sPrzyznaj niezbędne uprawnienia SDM API, aby uzyskać dostęp do danych zdarzeń 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ć zdarzenia:
- Zaznacz Włącz zdarzenia i kliknij Utwórz projekt.
- Kliknij ikonę **Temat Pub/Sub ** i wybierz **Włącz zdarzenia za pomocą tematu Pub/Sub**.
- 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. Więcej
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. Jest to szybki i łatwy sposób na sprawdzenie, czy zdarzenia są generowane na autoryzowanych urządzeniach.
Otwórz Cloud Shell w projekcie w chmurze Google Cloud:
W wierszu poleceń Cloud Shell uruchom to polecenie, aby utworzyć subskrypcję 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].Inicjowanie zdarzeń
Aby po raz pierwszy zainicjować zdarzenia po utworzeniu subskrypcji Pub/Sub, wywołaj listę 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 tym wywołaniu interfejsu API zostaną opublikowane zdarzenia dotyczące wszystkich struktur i urządzeń.
Generowanie zdarzeń
Zdarzenia są generowane w przypadku wszystkich zmian pól cech. Niektóre z nich są automatyczne, a inne ręczne.
Jeśli np. zmieni się temperatura otoczenia w pobliżu urządzenia
Nest Thermostat, automatycznie zostanie wysłane zdarzenie dotyczące cechy
Temperature z nową wartością ambientTemperatureCelsius.
Aby wygenerować zdarzenie ręcznie:
- Zmień fizycznie stan urządzenia, np. tryb urządzenia Nest Thermostat.
- Wywołaj zdarzenie, np. ruch, osobę lub dźwięk, na kamerze wewnętrznej Google Nest Cam Indoor.
- Wykonaj polecenie urządzenia za pomocą interfejsu SDM API.
Wyświetl wiadomości
Wiadomości o zdarzeniach można 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 być widoczna aktywność na wykresie Liczba niepotwierdzonych wiadomości. Oznacza to, że wiadomości o zdarzeniach dotarły do Twojej subskrypcji. Jeśli nie widzisz żadnej aktywności, odczekaj chwilę lub wygeneruj kilka dodatkowych zdarzeń.
- Kliknij WYŚWIETL WIADOMOŚCI , aby otworzyć panel Wiadomości.
- Aby wyświetlić wiadomości, kliknij 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-idWięcej informacji o typach subskrypcji oraz typach zdarzeń wysyłanych przez interfejs SDM API i sposobach ich używania znajdziesz w artykule Zdarzenia.
Zarządzanie wiadomościami
Wiadomości należy regularnie potwierdzać i usuwać, aby subskrypcja była czysta i aby uniknąć dostarczania duplikatów wiadomości do innych subskrybentów. Wszystkie wiadomości subskrypcji można ręcznie usunąć w sekcji Subskrypcje Pub/Sub:
Otwórz subskrypcje 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 USUŃ WIADOMOŚCI , aby 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 kont usługi do uwierzytelniania, a nie 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 za pomocą konta usługi znajdziesz w artykule Device Access Zdarzenia.