האירועים הם אסינכרוניים והם מנוהלים על ידי Google Cloud Pub/Sub, בנושא יחיד לכל Project. אירועים מספקים עדכונים לכל המכשירים והמבנים, והקבלה של האירועים מובטחת כל עוד אסימון הגישה לא בוטל על ידי המשתמש ותוקף ההודעות על האירועים לא פג.
אירועים הם תכונה אופציונלית של SDM API. אפשר להטמיע אותם בקלות ולאמת אותם באמצעות הפרויקט ב-Google Cloud.
הפעל אירועים
אפשר להפעיל אירועים ב Device Access מסוף. בוחרים את הפרויקט במסוף, אם עדיין לא עשיתם זאת.
אם כבר הפעלתם אירועים (לדוגמה, במהלך יצירת הפרויקט), בשדה Pub/Sub topic בקטע Enable Pubsub topic for Events כבר אמור להיות ערך שנקרא Topic ID בפורמט הישן:
projects/sdm-prod/topics/enterprise-project-id
פורמט הנושא הזה מתארח ב-Google ויישאר בפרויקט שלכם, אלא אם תשביתו את נושא ה-Pub/Sub שמתארח ב-Google. אם תפעילו אותו מחדש מאוחר יותר, תועברו לנושא Pub/Sub שמתארח אצלכם.
אפשר ליצור או לשנות נושאי Pub/Sub באירוח עצמי בפרויקט של המפתח ב-Google Cloud. המפתח אחראי גם על כל העלויות שקשורות לשימוש ב-Pub/Sub. מידע נוסף זמין במאמר תמחור של 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
חשוב לשים לב למזהה הנושא, כי תצטרכו אותו כדי להשלים את הפעלת האירועים. למידע נוסף, ראו יצירת נושא.
כדי להפעיל אירועים:
- מסמנים את התיבה Enable events (הפעלת אירועים) ולוחצים על Create Project (יצירת פרויקט).
- לוחצים על הסמל של נושא Pub/Sub ובוחרים באפשרות Enable events with PubSub topic.
- מזינים את מזהה הנושא ב-Pub/Sub שסיפקתם או שיצרתם קודם.
מעתיקים את מזהה הנושא. המזהה הזה יידרש כדי ליצור מינוי לנושא, וכך יהיה אפשר לאחזר הודעות על אירועים.
יצירת מינוי משיכה
במינוי משיכה, המנוי יוצר בקשות לשרת Pub/Sub לקבלת הודעות אירוע שנמצאות בתור. זו דרך מהירה ופשוטה לוודא שנוצרים אירועים במכשירים המורשים.
פותחים את Cloud Shell לפרויקט ב-Google Cloud:
בשורת הפקודה של Cloud Shell, מריצים את הפקודה הבאה כדי ליצור הרשמה לעדכוני משיכה לנושא, באמצעות subscription-id כלשהו ומזהה הנושא הייחודי:
gcloud pubsub subscriptions create
Created subscription [projects/subscription-id --topic=projects/gcp-project-name /subscriptions/topic-id 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 הזו.
יצירת אירועים
המערכת יוצרת אירועים לכל השינויים בשדות המאפיינים, חלקם אוטומטיים וחלקם ידניים.
לדוגמה, אם הטמפרטורה הסביבתית ליד Nest Thermostat משתנה, יישלח באופן אוטומטי אירוע של המאפייןTemperature עם ערך ambientTemperatureCelsius
חדש.
כדי ליצור ניתוח באופן ידני:
- שינוי פיזי של מצב המכשיר, למשל שינוי המצב של Nest Thermostat.
- הפעלת אירוע, כמו תנועה, אדם או צליל, ב-Google Nest Cam Indoor.
- ביצוע פקודה במכשיר באמצעות ה-API של SDM.
הצגת הודעות
אפשר לראות את הודעות האירועים בפרויקט Google Cloud, בקטע Pub/Sub Subscriptions:
כניסה לדף 'מינויים ל-Google Cloud Pub/Sub'
- לוחצים על מזהה המינוי שיצרתם מקודם.
- במסך Subscription detail אמורה להופיע פעילות בתרשים Unacked message count. המשמעות היא שהודעות על אירועים הגיעו למינוי שלכם. אם לא מופיעה פעילות כלשהי, צריך להמתין קצת או ליצור עוד כמה אירועים.
- לוחצים על הצגת הודעות כדי להציג את החלונית הודעות.
- לוחצים על PULL כדי להציג את ההודעות. הן צריכות להתאים לפעולות שבהן השתמשתם כדי ליצור אירועים.
אפשר גם להציג את ההודעות ב-Cloud Shell באמצעות הפקודה הבסיסית pull
:
gcloud pubsub subscriptions pull subscription-id
מידע נוסף על סוגי המינויים, על סוגי האירועים שנשלחים על ידי SDM API ועל אופן השימוש בהם זמין במאמר אירועים.
ניהול ההודעות
מומלץ לאשר ולמחוק הודעות באופן קבוע כדי לשמור על רשימת תפוצה נקייה ולהימנע משליחת הודעות כפולות למנויים אחרים. אפשר למחוק באופן ידני את כל הודעות המינוי בקטע 'מינויים ל-Pub/Sub':
כניסה לדף 'מינויים ל-Google Cloud Pub/Sub'
- לוחצים על מזהה המינוי.
- יש כמה דרכים לאשר ולמחוק:
- לוחצים על הצגת הודעות כדי להציג את החלונית הודעות. מסמנים את התיבה Enable ack messages ולוחצים על PULL כדי להציג את כל ההודעות ולאשר אותן.
- לוחצים על מחיקה של ההודעות כדי למחוק את כל ההודעות הקיימות על ידי אישור בלי לצפות בהן. לוחצים על ניקוי כדי לאשר.
אפשר גם למחוק הודעות ב-Cloud Shell באמצעות הדגל --auto-ack
עם הפקודה הבסיסית pull
:
gcloud pubsub subscriptions pull subscription-id --auto-ack
ניהול מינויים
אפשר להגדיר מינויים בדרכים שונות, כפי שמתואר במאמר שימוש במאפייני מינויים.
אתם יכולים לנהל את המינויים וההודעות כרצונכם, אבל באפליקציה בסביבת הייצור מומלץ להשתמש בחשבונות שירות לצורך אימות, במקום בחשבון משתמש כמו שעשינו עד עכשיו במדריך למתחילים המהיר הזה. חשבון שירות משמש אפליקציה או מכונה וירטואלית, ולא אדם, ויש לו מפתח חשבון ייחודי משלו.
למידע נוסף על אימות של חשבון שירות באמצעות Device Access, ראו אירועים.