מילוי הזמנה מקומי

ה-Local Home SDK משפר את השילוב של הפתרון שלכם לבית חכם עם Google Assistant על ידי הוספת נתיב מקומי לשרשור פעולות (fulfillment) כדי לנתב כוונות (intents) של הבית החכם.

ה-SDK ‏Local Home מספק שתי יכולות: ביצוע מקומי ושאילתה מקומית.

  • ביצוע מקומי מאפשר לבצע פקודות על ידי שליחת EXEC כוונות דרך נתיב הביצוע המקומי, במקום לבצע קריאה ל-API בענן. לדוגמה, בקשה כמו 'הדלקת האור' יכולה להיות מטופלת על ידי Local Execution.
  • Local Query מאפשרת לטפל בשאילתות שקשורות למצב המכשיר על ידי שליחת כוונות QUERY דרך נתיב האספקה המקומי. לדוגמה, שאילתה מקומית תמלא את השאילתה 'האם האור דולק?' בלי לבצע קריאה ל-API בענן.

ערכת ה-SDK מאפשרת לכם לכתוב אפליקציה מקומית לביצוע הזמנות באמצעות TypeScript או JavaScript, שכוללת את הלוגיקה העסקית של הבית החכם. מכשירי Google Home או Google Nest יכולים לטעון את האפליקציה ולהריץ אותה במכשיר. האפליקציה מתקשרת ישירות עם המכשירים החכמים הקיימים שלכם באמצעות Wi-Fi ברשת מקומית (LAN) כדי לבצע פקודות של משתמשים, באמצעות פרוטוקולים קיימים.

שילוב של ה-SDK משפר את הביצועים של השילוב שלכם עם Cloud-to-cloud, כולל זמני אחזור קצרים יותר ומהימנות גבוהה יותר. האפשרות 'הזמנה עם משלוח מקומי' נתמכת בכל סוגי המכשירים ובכל תכונות המכשירים, למעט מכשירים שמשתמשים באימות משתמש משני.

מתחילים לבנות לניסיון הדוגמה

איך זה עובד

אחרי קבלת תגובה מסוג SYNC מההשלמה בענן, פלטפורמת Local Home סורקת את הרשת המקומית של המשתמש באמצעות mDNS, שידור UDP או UPnP כדי לגלות מכשירים חכמים שמחוברים ל-Assistant.

הפלטפורמה שולחת כוונת IDENTIFY כדי לקבוע אם אפשר לשלוט במכשיר באופן מקומי, על ידי השוואת מזהה המכשיר בתגובת IDENTIFY למזהים שהוחזרו בתגובת SYNC הקודמת. אם המכשיר שזוהה הוא רכזת או גשר, הפלטפורמה שולחת כוונת REACHABLE_DEVICES ומתייחסת לרכזת כמכשיר ה-proxy לתקשורת מקומית.

כשהפלטפורמה מקבלת תשובה שמאשרת שמדובר במכשיר מקומי, היא יוצרת נתיב מקומי למימוש ההזמנה למכשיר Google Home או Google Nest של המשתמש, ולאחר מכן מעבירה את פקודות המשתמש למימוש מקומי.

כשמשתמש מפעיל שילוב של Cloud-to-cloud שיש לו מסלול מקומי לשרשור פעולות (fulfillment),‏ Assistant שולחת את הכוונה (intent) EXECUTE או את הכוונה QUERY למכשיר Google Home או Google Nest ולא לשרשור הפעולות בענן. לאחר מכן, המכשיר מריץ את אפליקציית ההזמנה מחנות מקומית כדי לעבד את הכוונה.

באיור הזה מוצג תהליך הביצוע של משלוח מקומי.             נתיב הביצוע מתעד את כוונת המשתמש מטלפון עם Google Assistant, ואז הכוונה של המשתמש מעובדת על ידי Google Cloud, ואז היא מבוצעת באופן מקומי במכשיר Google Home והפקודה מונפקת ישירות למרכזיית המכשיר או ישירות למכשיר. הענן למפתחים זמין כגיבוי בענן.
תרשים 1: הוספת מסלול מקומי לשרשור פעולות (fullfillment) לפעולה של הבית החכם.

פלטפורמת Local Home לא קובעת מראש איזה מכשיר Google Home או Google Nest יפעיל את הפקודה. יכול להיות שהכוונה EXECUTE והכוונה QUERY יגיעו דרך כל מכשיר Google Home או Google Nest שמוגדר באותו מבנה של Home Graph כמו מכשיר היעד.

אפליקציה למילוי הזמנות מקומי

אפליקציית השרשור המקומי של פעולות (fullfillment) מכילה את הלוגיקה העסקית לעיבוד הכוונות (intents) שנשלחות על ידי פלטפורמת Local Home ולגישה למכשיר החכם שלכם דרך הרשת המקומית. כדי לשלב אספקה מקומית, לא צפויים שינויים בציוד שלכם. האפליקציה ממלאת בקשות שילוב של Cloud-to-cloud על ידי שליחת פקודות בקרה למכשיר החכם באמצעות פרוטוקולים של שכבת האפליקציה, כולל HTTP,‏ TCP או UDP. אם נתיב ההגשמה המקומי נכשל, נתיב ההגשמה בענן משמש כנתיב ביצוע חלופי.

כדי לתמוך בפיתוח האפליקציה, ה-SDK ‏Local Home מספק את שני המחלקות העיקריות האלה:

  • DeviceManager: מספק שיטות לתקשורת עם מכשירים חכמים באמצעות TCP, שקעי UDP או בקשות HTTP.
  • App: מספק שיטות לצירוף מטפלים לכוונות ש-Google שולחת אחרי גילוי מכשירים שאפשר לשלוט בהם באופן מקומי (IDENTIFY,‏ REACHABLE_DEVICES). המחלקה הזו גם מבצעת פקודות של משתמשים (EXECUTE) ומשיבה לשאילתות של משתמשים לגבי המצב הנוכחי של המכשיר (QUERY).

במהלך הפיתוח, אתם יכולים ליצור את האפליקציה ולבדוק אותה על ידי טעינה שלה בשרת האירוח שלכם או במחשב הפיתוח המקומי. בסביבת הייצור, Google מארחת את האפליקציה שלכם בסביבת ארגז חול מאובטחת של JavaScript במכשיר Google Home או Google Nest של המשתמש.

‫API Report State לא נתמך כרגע בהזמנות מקומיות. ‫Google מסתמכת על תהליך השלמת ההזמנה בענן כדי לעבד את הבקשות האלה.

מחזור החיים של האפליקציה

אפליקציית ההשלמה המקומית נטענת לפי דרישה כשהפלטפורמה Local Home מגלה מכשירים מקומיים חדשים שתואמים להגדרת הסריקה של הפרויקט, או שיש לה כוונות ממתינות להעברה שקשורות למכשיר שזוהה בעבר.

מכשירים של Google Home או Google Nest מוגבלים בזיכרון, והאפליקציה המקומית לביצוע הזמנות עשויה להיסגר בכל שלב בגלל עומס על הזיכרון במערכת. זה יכול לקרות אם האפליקציה מתחילה לצרוך יותר מדי זיכרון, או אם המערכת צריכה לפנות מקום לאפליקציה אחרת. פלטפורמת Local Home מפעילה מחדש את האפליקציה רק אם יש כוונות חדשות להעברה ומשאבי זיכרון מספיקים להפעלת האפליקציה.

פלטפורמת Local Home מסירה את האפליקציה אחרי פרק זמן קצוב של חוסר פעילות, כשהמשתמש מבטל את הקישור של החשבון שלו או כשאין יותר מכשירים שתומכים בביצוע מקומי שמשויכים ל-agentUserId של המשתמש.

מכשירים נתמכים

פלטפורמת Local Home מפעילה את אפליקציית הביצוע המקומי במכשירי Google Home או Google Nest נתמכים. בטבלה הבאה מתוארים המכשירים הנתמכים וזמן הריצה שמשמש בכל מכשיר. מידע נוסף על דרישות זמן הריצה זמין במאמר בנושא סביבת ביצוע.

מכשיר סוג סביבה
Google Home רמקול Chrome
Google Home Mini רמקול Chrome
Google Home Max רמקול Chrome
Nest Mini רמקול Chrome
Nest Hub רשת המדיה Chrome
Nest Hub Max רשת המדיה Chrome
Nest Wifi נתב Node.js
נקודה Chrome

סביבת הפעלה

סביבת ההפעלה של אפליקציית ההזמנות המקומיות תלויה במכשיר שלכם. פלטפורמת Local Home תומכת בסביבות זמן הריצה הבאות:

  • Chrome: אפליקציית ההזמנות המקומיות מופעלת בהקשר של דפדפן Chrome window שפועל בגרסה Chrome M80 ומעלה עם תמיכה ב-ECMAScript גרסה ES2018.
  • Node.js: אפליקציית ההשלמה המקומית מופעלת כסקריפט בתהליך Node.js שפועל ב-Node v10.x LTS ואילך עם תמיכה ב-ECMAScript גרסה ES2018.

מבנה קוד המקור

מומלץ לארוז את התלויות בקובץ JavaScript יחיד באמצעות הגדרות של כלי לאריזת מודולים שסופקו על ידי Local Home SDK, ולארוז את קוד המקור כביטוי פונקציה שמופעל באופן מיידי (IIFE).

נתיב ההטמעה

כדי להשתמש ב-Local Home SDK לשילוב של בית חכם, צריך לבצע את המשימות הבאות:

1 הגדרת התצורה של הסריקה מגדירים את Google Home Developer Console עם הפרמטרים הנדרשים כדי ש-Assistant יוכל לגלות מכשירים מקומיים שאפשר לשלוט בהם.
2 עדכון תגובת הסנכרון בענן בשרשור הפעולות (fulfillment) בענן, משנים את SYNC request handler כך שיתמוך בשדה otherDeviceIds שבו הפלטפורמה משתמשת כדי ליצור מסלול מקומי לשרשור פעולות. בשדה הזה מציינים את המזהים של המכשירים שאפשר לשלוט בהם באופן מקומי.
3 הטמעת האפליקציה לניהול משלוחים מקומיים משתמשים ב-Local Home SDK כדי ליצור אפליקציית JavaScript שתטפל ב-intents‏ IDENTIFY,‏ EXECUTE ו- QUERY. במכשירי פרוקסי של רכזות או גשרים, צריך לטפל גם ב-intent‏ REACHABLE_DEVICES.
4 בדיקה וניפוי באגים באפליקציה כדי לבדוק את השילוב (או לקבל אישור עצמי), משתמשים בחבילת הבדיקות של Google Home.

לפני שמתחילים