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