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