אירועים הם אסינכרוניים והם מנוהלים על ידי Google Cloud Pub/Sub, בנושא יחיד לכל Project. אירועים מספקים עדכונים לכל המכשירים והמבנים, והקבלה של האירועים מובטחת כל עוד המשתמש לא ביטל את אסימון הגישה וההודעות של האירועים לא פג תוקפן.
אירועים הם תכונה אופציונלית של SDM API. אפשר להטמיע אותם בקלות ולאמת אותם באמצעות הפרויקט שלכם ב-Google Cloud.
הפעל אירועים
אפשר להפעיל אירועים ב Device Access Console. אם עדיין לא עשיתם זאת, בוחרים את הפרויקט במסוף.
אם כבר הפעלתם אירועים (לדוגמה, במהלך יצירת פרויקט), בשדה נושא ב-Pub/Sub בקטע הפעלת הנושא ב-PubSub לאירועים אמור להיות כבר ערך, שנקרא מזהה נושא, בפורמט הישן:
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 שסופק או נוצר קודם.
מעתיקים את מזהה הנושא. תצטרכו אותו כדי ליצור מינוי לנושא, כדי שתוכלו לאחזר הודעות אירועים.
יצירת מינוי מסוג 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 הזו.
יצירת אירועים
אירועים נוצרים לכל השינויים בשדות המאפיינים, חלקם אוטומטיים וחלקם ידניים.
לדוגמה, אם הטמפרטורה הסביבתית ליד תרמוסטט 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זמין במאמר בנושא אירועים.