Các sự kiện không đồng bộ và do Google Cloud Pub/Sub quản lý, trong một chủ đề duy nhất cho mỗi Project. Các sự kiện cung cấp thông tin cập nhật cho tất cả thiết bị và cấu trúc, đồng thời đảm bảo nhận được các sự kiện miễn là người dùng không thu hồi mã truy cập và thông báo sự kiện chưa hết hạn.
Sự kiện là một tính năng không bắt buộc của SDM API. Bạn có thể dễ dàng triển khai và xác minh các quy tắc này bằng cách sử dụng dự án Google Cloud của mình.
Bật sự kiện
Bạn có thể bật sự kiện trong Device Access Console. Chọn Dự án của bạn trong Bảng điều khiển (nếu bạn chưa chọn).
Chuyển đến Device Access Console
Nếu bạn đã bật sự kiện (ví dụ: trong quá trình tạo dự án), thì trường Chủ đề Pub/Sub trong phần Bật chủ đề Pub/Sub cho Sự kiện phải đã có một giá trị (gọi là Mã chủ đề) theo định dạng cũ:
projects/sdm-prod/topics/enterprise-project-id
Để di chuyển từ một chủ đề do Google lưu trữ, hãy tắt chủ đề Pub/Sub do Google lưu trữ trong Device Access Console và bật lại các sự kiện bằng cách sử dụng chủ đề Pub/Sub tự lưu trữ được tạo trong dự án trên đám mây của riêng bạn. Việc di chuyển cấu hình chủ đề Pub/Sub sẽ không làm mất hiệu lực mã truy cập người dùng hoặc quyền OAuth hiện có.
Bạn có thể tạo hoặc thay đổi các chủ đề Pub/Sub tự lưu trữ trong dự án trên đám mây của riêng mình và phải tuân theo mức giá tiêu chuẩn của Google Cloud Pub/Sub (bao gồm một cấp miễn phí là 10 GB mỗi tháng).
Tạo chủ đề Pub/Sub:
gcloud pubsub topics create {topic} --message-retention-duration=0sCấp các quyền SDM API cần thiết để truy cập và xuất bản dữ liệu sự kiện cho mã nhận dạng chủ đề của dự án:
gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"Định dạng của mã nhận dạng chủ đề mà bạn mới tạo sẽ có dạng như sau:
projects/gcp-project-name/subscriptions/topic-id
Ghi lại mã nhận dạng chủ đề của bạn, bạn sẽ cần mã này để hoàn tất việc bật sự kiện. Hãy xem phần Tạo một chủ đề để biết thêm thông tin.
Cách bật sự kiện (hoặc di chuyển từ một chủ đề do Google lưu trữ):
- Nếu tạo một dự án mới, hãy chọn Bật sự kiện rồi nhấp vào Tạo dự án. Nếu bạn đang di chuyển một dự án hiện có từ một chủ đề do Google lưu trữ, trước tiên, hãy tắt chủ đề Pub/Sub hiện có trong màn hình thông tin của dự án.
- Nhấp vào biểu tượng cho chủ đề Pub/Sub rồi chọn Bật sự kiện bằng chủ đề PubSub (hoặc Chỉnh sửa chủ đề hiện tại).
- Nhập mã nhận dạng chủ đề Pub/Sub tự lưu trữ mà bạn đã tạo trước đó.
Sao chép mã chủ đề của bạn. Bạn sẽ cần mã này để tạo một gói thuê bao cho chủ đề để có thể truy xuất thông báo sự kiện.
Tạo gói thuê bao kéo
Gói thuê bao kéo là nơi người đăng ký bắt đầu gửi yêu cầu đến máy chủ Pub/Sub để nhận các thông báo sự kiện trong hàng đợi. Đây là một cách nhanh chóng và dễ dàng để xác minh rằng các sự kiện đang được tạo cho các thiết bị được uỷ quyền của bạn.
Mở Cloud Shell cho dự án trên đám mây của bạn trên Google Cloud:
Tại lời nhắc Cloud Shell, hãy chạy lệnh sau để tạo một thuê bao kéo cho chủ đề của bạn, sử dụng bất kỳ subscription-id nào bạn muốn và mã nhận dạng chủ đề duy nhất của bạn:
gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].Bắt đầu sự kiện
Để bắt đầu các sự kiện lần đầu tiên sau khi gói thuê bao Pub/Sub được tạo, hãy gọi để liệt kê các thiết bị của bạn dưới dạng một trình kích hoạt một lần:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'Các sự kiện cho tất cả cấu trúc và thiết bị sẽ được xuất bản sau lệnh gọi API này.
Tạo sự kiện
Các sự kiện được tạo cho tất cả các thay đổi về trường đặc điểm, một số thay đổi là tự động, một số thay đổi là thủ công.
Ví dụ: nếu nhiệt độ môi trường xung quanh Nest Thermostat thay đổi, thì một sự kiện cho đặc điểmTemperature (Nhiệt độ) sẽ tự động được gửi kèm theo giá trị ambientTemperatureCelsius mới.
Để tạo một mã theo cách thủ công, hãy làm theo một trong 2 cách sau:
- Thay đổi trạng thái của thiết bị theo cách thủ công, chẳng hạn như thay đổi chế độ của Máy điều nhiệt Nest.
- Kích hoạt một sự kiện, chẳng hạn như chuyển động, người hoặc âm thanh trên Google Nest Cam Indoor.
- Thực thi lệnh trên thiết bị bằng SDM API.
Xem tin nhắn
Bạn có thể xem các thông báo về sự kiện trong dự án trên đám mây của mình trên Google Cloud, trong phần Pub/Sub Subscriptions (Đăng ký Pub/Sub):
Chuyển đến phần Gói thuê bao Google Cloud Pub/Sub
- Nhấp vào Mã thuê bao mà bạn đã tạo trước đó.
- Trên màn hình Thông tin chi tiết về gói thuê bao, bạn sẽ thấy hoạt động cho biểu đồ Số lượng thông báo chưa được xác nhận. Điều này cho biết các thông báo về sự kiện đã được gửi đến cho gói thuê bao của bạn. Nếu bạn không thấy hoạt động nào, hãy đợi một lát hoặc tạo thêm một vài sự kiện.
- Nhấp vào XEM TIN NHẮN để mở bảng Tin nhắn.
- Nhấp vào PULL (KÉO) để xem các thông báo. Chúng phải tương ứng với những hành động mà bạn đã dùng để tạo sự kiện.
Bạn cũng có thể xem các thông báo trong Cloud Shell bằng lệnh pull cơ bản:
gcloud pubsub subscriptions pull subscription-idĐể biết thêm thông tin về các loại sự kiện được gửi bởi SDM API và cách sử dụng các loại sự kiện này, cũng như các loại sự kiện được gửi, hãy xem phần Sự kiện.
Quản lý thư
Bạn nên thường xuyên xác nhận và xoá các thông báo để giữ cho một thuê bao luôn ở trạng thái sạch và tránh việc gửi trùng lặp thông báo cho những người đăng ký khác. Bạn có thể xoá tất cả các thông báo về gói thuê bao theo cách thủ công trong phần Gói thuê bao Pub/Sub:
Chuyển đến phần Gói thuê bao Google Cloud Pub/Sub
- Nhấp vào mã nhận dạng gói thuê bao.
- Có một số cách để xác nhận và xoá:
- Nhấp vào XEM TIN NHẮN để mở bảng Tin nhắn. Đánh dấu vào hộp Bật thông báo xác nhận rồi nhấp vào PULL để xem và xác nhận tất cả tin nhắn.
- Nhấp vào XOÁ HOÀN TOÀN THƯ để xoá hoàn toàn mọi thư hiện có bằng cách xác nhận mà không xem thư. Nhấp vào PURGE để xác nhận.
Bạn cũng có thể xoá các thông báo trong Cloud Shell bằng cách sử dụng cờ --auto-ack với lệnh pull cơ bản:
gcloud pubsub subscriptions pull subscription-id --auto-ackQuản lý gói thuê bao
Bạn có thể định cấu hình gói thuê bao theo nhiều cách, như mô tả trong phần Sử dụng các thuộc tính của gói thuê bao.
Mặc dù bạn có thể tuỳ ý quản lý các lượt đăng ký và thông báo, nhưng đối với một ứng dụng phát hành công khai, bạn nên sử dụng Tài khoản dịch vụ để xác thực thay vì tài khoản người dùng như bạn đã làm cho đến nay trong hướng dẫn bắt đầu nhanh này. Tài khoản dịch vụ được dùng bởi một ứng dụng hoặc máy ảo, chứ không phải một người, và có khoá tài khoản riêng biệt.
Để biết thêm thông tin về việc xác thực tài khoản dịch vụ bằng Device Access, hãy xem phần Sự kiện.