การจำหน่ายในท้องถิ่น

Local Home SDK เพิ่มประสิทธิภาพการผสานรวมสมาร์ทโฮมกับ Google Assistant โดยการเพิ่มเส้นทางการตอบสนองในเครื่องลงในเส้นทางความตั้งใจของสมาร์ทโฮม

SDK ให้คุณเขียนแอป Fulfillment ในเครื่องโดยใช้ TypeScript หรือ JavaScript ที่มีตรรกะทางธุรกิจของสมาร์ทโฮม อุปกรณ์ Google Home หรือ Google Nest สามารถโหลดและเรียกใช้แอปของคุณในอุปกรณ์ได้ แอปสื่อสารกับอุปกรณ์อัจฉริยะที่มีอยู่ได้โดยตรงผ่าน Wi-Fi ในเครือข่ายท้องถิ่น (LAN) เพื่อดำเนินการตามคำสั่งของผู้ใช้ผ่านโปรโตคอลที่มีอยู่

การผสานรวม SDK จะช่วยปรับปรุงประสิทธิภาพการทำงานในสมาร์ทโฮมของคุณ ซึ่งรวมถึงเวลาในการตอบสนองที่น้อยลงและความน่าเชื่อถือสูงขึ้น Fulfillment ในเครื่องรองรับอุปกรณ์ทุกประเภทและลักษณะเฉพาะของอุปกรณ์ ยกเว้นที่ใช้การยืนยันผู้ใช้รอง

เริ่มสร้าง ลองใช้ตัวอย่าง

ทำความเข้าใจวิธีการทำงาน

หลังจากได้รับการตอบกลับ SYNC จากการ Fulfillment ระบบคลาวด์แล้ว แพลตฟอร์ม Local Home จะสแกนเครือข่ายในพื้นที่ของผู้ใช้โดยใช้ mDNS, การส่งข้อมูลเตือนภัย UDP หรือ UPnP เพื่อค้นหาอุปกรณ์อัจฉริยะที่เชื่อมต่อกับ Assistant

แพลตฟอร์มจะส่ง Intent IDENTIFY เพื่อระบุว่าอุปกรณ์ควบคุมในเครื่องได้หรือไม่โดยการเปรียบเทียบรหัสอุปกรณ์ในการตอบกลับ IDENTIFY กับรหัสที่ตอบกลับโดยการตอบกลับก่อนหน้านี้ของ SYNC หากอุปกรณ์ที่ตรวจพบเป็นฮับหรือบริดจ์ แพลตฟอร์มจะส่ง Intent REACHABLE_DEVICES และถือว่าฮับนั้นเป็นอุปกรณ์พร็อกซีสำหรับการสื่อสารภายในเครื่อง

เมื่อได้รับการตอบกลับที่ยืนยันอุปกรณ์ในเครือข่ายเดียวกัน แพลตฟอร์มจะสร้างเส้นทางการตอบสนองในเครื่องไปยังอุปกรณ์ Google Home หรือ Google Nest ของผู้ใช้ จากนั้นกำหนดเส้นทางคำสั่งของผู้ใช้สำหรับการดำเนินการตามคำสั่งซื้อในเครื่อง

เมื่อผู้ใช้ทริกเกอร์การดำเนินการสำหรับสมาร์ทโฮมที่มีเส้นทาง Fulfillment ภายในเครื่อง Assistant จะส่ง Intent ของ EXECUTE หรือ QUERY ไปยังอุปกรณ์ Google Home หรือ Google Nest แทน Fulfillment ระบบคลาวด์ จากนั้นอุปกรณ์จะเรียกใช้แอป Fulfillment ในเครื่องเพื่อประมวลผล Intent

รูปนี้แสดงโฟลว์การดำเนินการสำหรับ Fulfillment ภายในเครื่อง เส้นทางการดำเนินการบันทึกความตั้งใจของผู้ใช้จากโทรศัพท์ด้วย Google Assistant จากนั้น Google Cloud จะประมวลผล Intent ของผู้ใช้ จากนั้นจะประมวลผลภายในอุปกรณ์ Google Home และออกคำสั่งไปยังฮับอุปกรณ์โดยตรงหรือออกคำสั่งไปยังอุปกรณ์โดยตรง ระบบคลาวด์ของนักพัฒนาซอฟต์แวร์พร้อมให้ใช้งานเป็นระบบคลาวด์สำรอง
ภาพที่ 1: การเพิ่มเส้นทาง Fulfillment ภายในสำหรับการดำเนินการสมาร์ทโฮม

แพลตฟอร์ม Local Home ไม่ได้เป็นตัวกำหนดว่าจะเลือกใช้อุปกรณ์ Google Home หรือ Google Nest ใดเพื่อทริกเกอร์คำสั่ง Intent ของ EXECUTE และ QUERY อาจมาจากอุปกรณ์ Google Home หรือ Google Nest ที่กำหนดในโครงสร้าง Home Graph เดียวกับอุปกรณ์เป้าหมาย

แอป Fulfillment ในพื้นที่

แอป Fulfillment ในพื้นที่มีตรรกะทางธุรกิจเพื่อประมวลผล Intent ที่ส่งโดยแพลตฟอร์ม Local Home และเข้าถึงอุปกรณ์อัจฉริยะผ่านเครือข่ายในพื้นที่ คุณคาดว่าจะไม่มีการปรับเปลี่ยนฮาร์ดแวร์เพื่อผสานรวม Fulfillment ภายในเครื่อง แอปนี้จะทำตามคำขอการดำเนินการของสมาร์ทโฮมโดยการส่งคำสั่งควบคุมไปยังอุปกรณ์อัจฉริยะผ่านโปรโตคอลเลเยอร์ของแอปพลิเคชัน ซึ่งรวมถึง HTTP, TCP หรือ UDP ในกรณีที่เส้นทาง Fulfillment ภายในล้มเหลว ระบบจะใช้การดำเนินการบนระบบคลาวด์เป็นเส้นทางการดำเนินการสำรอง

Local Home SDK มีคลาสหลัก 2 คลาสเพื่อรองรับการสร้างแอป

  • DeviceManager: ให้วิธีการสื่อสารกับอุปกรณ์อัจฉริยะโดยใช้ TCP, ซ็อกเก็ต UDP หรือคำขอ HTTP
  • App: ให้วิธีการแนบเครื่องจัดการสำหรับ Intent ที่ Google ส่งหลังจากพบอุปกรณ์ที่ควบคุมในเครื่อง (IDENTIFY, REACHABLE_DEVICES) คลาสนี้ยังทำตามคำสั่งของผู้ใช้ (EXECUTE) และตอบคำถามของผู้ใช้เกี่ยวกับสถานะปัจจุบันของอุปกรณ์ (QUERY) ด้วย

ในระหว่างการพัฒนา คุณจะสร้างและทดสอบแอปได้โดยโหลดแอปในเซิร์ฟเวอร์โฮสติ้งหรือเครื่องการพัฒนาภายในของคุณเอง ในเวอร์ชันที่ใช้งานจริง Google จะโฮสต์แอปในสภาพแวดล้อมแซนด์บ็อกซ์ของ JavaScript ที่ปลอดภัยในอุปกรณ์ Google Home หรือ Google Nest ของผู้ใช้

ขณะนี้ API สถานะรายงาน ยังไม่รองรับสำหรับ Fulfillment ในพื้นที่ ทั้งนี้ Google จะใช้ Fulfillment ระบบคลาวด์ของคุณในการดำเนินการตามคำขอเหล่านี้

วงจรของแอปพลิเคชัน

ระบบจะโหลดแอป Fulfillment ในเครื่องของคุณเมื่อแพลตฟอร์ม Local Home พบอุปกรณ์ใหม่ในพื้นที่ที่ตรงกับการกำหนดค่าการสแกนโปรเจ็กต์ หรือมีความตั้งใจที่รอดำเนินการในการส่งมอบซึ่งเกี่ยวข้องกับอุปกรณ์ที่ระบุก่อนหน้านี้

อุปกรณ์ Google Home หรือ Google Nest มีการจำกัดหน่วยความจำและแอป Fulfillment ในเครื่องอาจหยุดทำงานได้ทุกเมื่อเนื่องจากแรงดันหน่วยความจำในระบบ ข้อผิดพลาดนี้อาจเกิดขึ้นหากแอปเริ่มใช้หน่วยความจำมากเกินไป หรือระบบจำเป็นต้องเพิ่มพื้นที่สำหรับแอปอื่น แพลตฟอร์ม Local Home จะรีสตาร์ทแอปเมื่อมี Intent ใหม่ในการส่งและมีทรัพยากรหน่วยความจำที่เพียงพอต่อการทำงานของแอปเท่านั้น

แพลตฟอร์ม Local Home จะยกเลิกการโหลดแอปของคุณหลังจากหมดเวลาเมื่อไม่มีการใช้งาน เมื่อผู้ใช้ยกเลิกการลิงก์บัญชีหรือไม่มีอุปกรณ์ที่รองรับ Fulfillment ในเครื่องที่เชื่อมโยงกับ agentUserId ของผู้ใช้อีกต่อไป

อุปกรณ์ที่รองรับ

แพลตฟอร์ม Local Home จะดำเนินการกับแอป Fulfillment ในท้องถิ่นของคุณบนอุปกรณ์ Google Home หรือ Google Nest ที่รองรับ ตารางต่อไปนี้จะอธิบายอุปกรณ์ที่รองรับ และรันไทม์ที่ใช้ในอุปกรณ์แต่ละเครื่อง ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อกำหนดของรันไทม์ได้ที่สภาพแวดล้อมการดำเนินการ

อุปกรณ์ ประเภท สภาพแวดล้อม
Google Home ลำโพง Chrome
Google Home Mini ลำโพง Chrome
Google Home Max ลำโพง Chrome
Nest Mini ลำโพง Chrome
Nest Hub Display Chrome
Nest Hub Max Display Chrome
Nest Wifi เราเตอร์ Node.js
จุด Chrome

สภาพแวดล้อมการดำเนินการ

สภาพแวดล้อมการดำเนินการสำหรับแอป Fulfillment ในเครื่องขึ้นอยู่กับอุปกรณ์ของคุณ แพลตฟอร์ม Local Home รองรับสภาพแวดล้อมรันไทม์ต่อไปนี้

  • Chrome: แอป Fulfillment ในเครื่องจะทำงานภายในบริบทของเบราว์เซอร์ Chrome window ที่ใช้ ChromeM80 ขึ้นไป พร้อมรองรับ ECMAScript เวอร์ชัน ES2018
  • Node.js: ระบบจะเรียกใช้แอป Fulfillment ในเครื่องเป็นสคริปต์ภายในกระบวนการ Node.js ที่เรียกใช้ Node v10.x LTS ขึ้นไป โดยมีการรองรับ ECMAScript เวอร์ชัน ES2018

โครงสร้างซอร์สโค้ด

เราขอแนะนำให้รวมทรัพยากร Dependency ไว้ในไฟล์ JavaScript ไฟล์เดียวโดยใช้การกำหนดค่าแพ็กเกจที่ Local Home SDK มีให้ และรวมซอร์สโค้ดเป็นนิพจน์ฟังก์ชันที่เรียกใช้ทันที (IIFE)

เส้นทางการใช้งาน

หากต้องการใช้ Local Home SDK สำหรับการผสานรวมสมาร์ทโฮม คุณจะต้องดำเนินการต่อไปนี้

1 ตั้งค่าการกำหนดค่าการสแกน กำหนดค่าคอนโซล Actions ด้วยพารามิเตอร์ที่จำเป็นเพื่อให้ Assistant ค้นพบอุปกรณ์ที่ควบคุมได้ในเครื่อง
2 อัปเดตการตอบสนองการซิงค์ใน Fulfillment ระบบคลาวด์ ใน Fulfillment ระบบคลาวด์ ให้แก้ไขตัวแฮนเดิลคำขอ SYNC เพื่อรองรับช่อง otherDeviceIds ที่แพลตฟอร์มใช้ในการสร้างเส้นทางการดำเนินการตามคำสั่งซื้อในเครื่อง ในช่องดังกล่าว ให้ระบุรหัสของอุปกรณ์ที่ควบคุมในเครื่องได้
3 ใช้แอป Fulfillment ในพื้นที่ ใช้ Local Home SDK เพื่อสร้างแอป JavaScript สำหรับจัดการ Intent IDENTIFY, EXECUTE และ QUERY สำหรับอุปกรณ์พร็อกซีของฮับหรือบริดจ์ คุณควรจัดการ Intent REACHABLE_DEVICES ด้วย
4 ทดสอบและแก้ไขข้อบกพร่องของแอป ทดสอบการผสานรวม (หรือรับรองด้วยตนเอง) โดยใช้ชุดทดสอบ Google Home

ข้อควรปฏิบัติก่อนที่จะเริ่มต้น