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

ה-Local Home SDK משפר את השילוב של הבית החכם עם Google Assistant על ידי הוספת נתיב מקומי למילוי הזמנות, לניתוב אובייקטים של Intents לבית חכם.

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

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

מתחילים לפתח רוצים לנסות את הדוגמה?

איך זה עובד?

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

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

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

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

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

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

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

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

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

  • DeviceManager: מספקת שיטות לתקשורת עם מכשירים חכמים באמצעות TCP, UDP או בקשות HTTP.
  • App: מספק שיטות לצירוף רכיבי handler ל-Intents ש-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 הגדרת התצורה של הסריקה מגדירים במסוף הפעולות את הפרמטרים הנחוצים כדי ש-Assistant תוכל לזהות מכשירים שהוגדרו באופן מקומי.
2 עדכון תגובת הסנכרון במילוי הבקשה בענן במילוי הבקשה בענן, צריך לשנות את ה-handler של הבקשה SYNC כך שיתמוך בשדה otherDeviceIds שהפלטפורמה משתמשת בו כדי ליצור נתיב מקומי של מילוי הזמנה. בשדה הזה צריך לציין את המזהים של מכשירים שאפשר לשלוט בהם באופן מקומי.
3 הטמעה של האפליקציה המקומית למילוי הזמנות אפשר להשתמש ב-Local Home SDK כדי ליצור אפליקציית JavaScript שמטפלת באובייקטים מסוג IDENTIFY, EXECUTE ו- QUERY. במכשירי שרת proxy מסוג Hub או ברידג', צריך לטפל גם ב-Intent REACHABLE_DEVICES.
4 איך בודקים וניפוי באגים באפליקציה בודקים את השילוב (או אישור עצמי) באמצעות הכלי לבדיקה של Google Home.

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