اشتراک در رویدادها

رویدادها ناهمزمان هستند و توسط Google Cloud Pub/Sub، در یک موضوع واحد برای هر نفر، مدیریت می‌شوند. Projectرویدادها به‌روزرسانی‌هایی را برای همه دستگاه‌ها و ساختارها ارائه می‌دهند و دریافت رویدادها تا زمانی که توکن دسترسی توسط کاربر لغو نشده و پیام‌های رویداد منقضی نشده باشند، تضمین می‌شود.

رویدادها یک ویژگی اختیاری از API SDM هستند. آن‌ها را می‌توان به راحتی با استفاده از پروژه Google Cloud شما پیاده‌سازی و تأیید کرد.

فعال کردن رویدادها

رویدادها ممکن است در Device Access کنسول. اگر قبلاً پروژه خود را در کنسول انتخاب نکرده‌اید، آن را انتخاب کنید.

برو به Device Access کنسول

اگر قبلاً رویدادها را فعال کرده‌اید (مثلاً در حین ایجاد پروژه )، فیلد موضوع انتشار/زیرموضوع در بخش فعال کردن موضوع انتشار برای رویدادها باید از قبل مقداری به نام شناسه موضوع (Topic ID) با فرمت قدیمی‌تر زیر داشته باشد:

projects/sdm-prod/topics/enterprise-project-id

این قالب موضوع توسط گوگل میزبانی می‌شود و تا زمانی که موضوع Pub/Sub میزبانی شده توسط گوگل را غیرفعال نکنید، برای پروژه شما باقی خواهد ماند. اگر بعداً آن را دوباره فعال کنید، به موضوع Pub/Sub میزبانی شده توسط خود منتقل خواهید شد.

موضوعات Pub/Sub خود-میزبان را می‌توان در پروژه Google Cloud خود توسعه‌دهنده ایجاد یا تغییر داد. توسعه‌دهنده همچنین مسئول تمام هزینه‌های مرتبط با استفاده از Pub/Sub است، برای اطلاعات بیشتر به قیمت‌گذاری Pub/Sub مراجعه کنید.

ایجاد موضوع میخانه/زیرموضوع:

gcloud pubsub topics create {topic} --message-retention-duration=0s

مجوزهای لازم SDM API را برای دسترسی و انتشار داده‌های رویداد برای شناسه موضوع پروژه خود اعطا کنید:

gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"

قالب شناسه موضوع جدید ایجاد شده شما به شکل زیر خواهد بود:

projects/gcp-project-name/subscriptions/topic-id

شناسه موضوع خود را یادداشت کنید، برای تکمیل رویدادهای فعال‌سازی به آن نیاز خواهید داشت. برای اطلاعات بیشتر به ایجاد موضوع مراجعه کنید.

برای فعال کردن رویدادها:

  1. گزینه Enable events را تیک بزنید و روی Create Project کلیک کنید.
  2. روی آیکون برای موضوع Pub/Sub کلیک کنید و گزینه Enable events with PubSub topic را انتخاب کنید.
  3. شناسه‌ی میخانه/زیرموضوع را که قبلاً ارائه یا ایجاد شده است، وارد کنید.

شناسه موضوع خود را کپی کنید، برای ایجاد اشتراک در موضوع و بازیابی پیام‌های رویداد به آن نیاز خواهید داشت.

ایجاد اشتراک pull

اشتراک pull جایی است که یک مشترک درخواست‌هایی را برای پیام‌های رویداد در صف به سرور Pub/Sub ارسال می‌کند. این یک روش سریع و آسان برای تأیید ایجاد رویدادها برای دستگاه‌های مجاز شما است.

Cloud Shell را برای پروژه Google Cloud خود باز کنید:

به پوسته ابری گوگل بروید

در اعلان Cloud Shell، دستور زیر را اجرا کنید تا یک اشتراک pull برای موضوع خود ایجاد کنید، با استفاده از هر subscription-id دوست دارید و شناسه موضوع منحصر به فرد خود:

gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].

رویدادها را آغاز کنید

برای شروع رویدادها برای اولین بار پس از ایجاد اشتراک Pub/Sub، فراخوانی کنید تا دستگاه‌های شما به عنوان یک تریگر یکبار مصرف فهرست شوند:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

رویدادهای مربوط به همه ساختارها و دستگاه‌ها پس از این فراخوانی API منتشر خواهند شد.

ایجاد رویدادها

برای همه تغییرات فیلد ویژگی، رویدادها ایجاد می‌شوند که برخی از آنها خودکار و برخی دستی هستند.

برای مثال، اگر دمای محیط نزدیک ترموستات نست شما تغییر کند، رویدادی برایدما ویژگی به طور خودکار با مقدار جدید ambientTemperatureCelsius ارسال می‌شود.

برای تولید دستی، یکی از موارد زیر را انجام دهید:

  1. وضعیت دستگاه خود را به صورت فیزیکی تغییر دهید، مانند تغییر حالت ترموستات Nest.
  2. رویدادی مانند حرکت، شخص یا صدا را در دوربین داخلی Google Nest Cam فعال کنید.
  3. اجرای یک دستور دستگاه با استفاده از رابط برنامه‌نویسی کاربردی SDM.

مشاهده پیام‌ها

پیام‌های رویداد را می‌توان در پروژه Google Cloud شما، در بخش Pub/Subscriptions مشاهده کرد:

به اشتراک‌های Google Cloud Pub/Sub بروید

  1. روی شناسه اشتراکی که قبلاً ایجاد کرده‌اید کلیک کنید.
  2. در صفحه جزئیات اشتراک ، باید فعالیت مربوط به نمودار تعداد پیام‌های تایید نشده را ببینید. این نشان می‌دهد که پیام‌های رویداد برای اشتراک شما ارسال شده‌اند. اگر هیچ فعالیتی نمی‌بینید، کمی صبر کنید یا چند رویداد دیگر ایجاد کنید.
  3. برای نمایش پنل پیام‌ها ، روی VIEW MESSAGES کلیک کنید.
  4. برای مشاهده پیام‌ها، روی PULL کلیک کنید. آن‌ها باید با اقداماتی که برای تولید رویدادها استفاده کرده‌اید، مطابقت داشته باشند.

پیام‌ها را می‌توان با یک دستور pull ساده در Cloud Shell نیز مشاهده کرد:

gcloud pubsub subscriptions pull subscription-id

برای اطلاعات بیشتر در مورد انواع اشتراک، و همچنین انواع رویدادهای ارسال شده توسط SDM API و نحوه استفاده از آنها، به بخش رویدادها مراجعه کنید.

مدیریت پیام‌ها

پیام‌ها باید مرتباً تأیید و حذف شوند تا اشتراک تمیز بماند و از ارسال پیام‌های تکراری به سایر مشترکین جلوگیری شود. همه پیام‌های اشتراک را می‌توان به صورت دستی در بخش اشتراک‌های Pub/Sub حذف کرد:

به اشتراک‌های Google Cloud Pub/Sub بروید

  1. روی شناسه اشتراک کلیک کنید.
  2. چند راه برای تصدیق و پاکسازی وجود دارد:
    1. برای نمایش پنل پیام‌ها ، روی VIEW MESSAGES کلیک کنید. گزینه‌ی Enable ack messages را تیک بزنید و برای مشاهده و تایید همه‌ی پیام‌ها، روی PULL کلیک کنید.
    2. برای پاک کردن تمام پیام‌های موجود با تایید بدون مشاهده آنها، PURGE MESSAGES کلیک کنید. برای تایید روی PURGE کلیک کنید.

پیام‌ها همچنین می‌توانند در Cloud Shell با استفاده از پرچم --auto-ack با یک دستور pull ساده پاک شوند:

gcloud pubsub subscriptions pull subscription-id --auto-ack

مدیریت اشتراک‌ها

اشتراک‌ها را می‌توان به روش‌های مختلفی پیکربندی کرد، همانطور که در بخش «استفاده از ویژگی‌های اشتراک» توضیح داده شده است.

اگرچه نحوه مدیریت اشتراک‌ها و پیام‌ها به خودتان بستگی دارد، اما برای یک برنامه کاربردی در حال تولید، توصیه می‌کنیم از حساب‌های سرویس برای احراز هویت استفاده کنید، نه یک حساب کاربری مانند آنچه تاکنون در این راهنمای شروع سریع استفاده کرده‌اید. یک حساب سرویس توسط یک برنامه یا ماشین مجازی استفاده می‌شود، نه یک شخص، و کلید حساب منحصر به فرد خود را دارد.

برای اطلاعات بیشتر در مورد احراز هویت حساب سرویس با Device Access، به رویدادها مراجعه کنید.