Local Home SDK ช่วยปรับปรุงการผสานรวมสมาร์ทโฮมกับ Google Assistant โดยเพิ่มเส้นทางการดำเนินการภายในเพื่อกำหนดเส้นทางความตั้งใจของสมาร์ทโฮม
Local Home SDK มีความสามารถ 2 อย่าง ได้แก่ การดำเนินการภายในเครือข่ายและการค้นหาภายในเครือข่าย
- การดำเนินการในเครื่องช่วยให้สามารถดำเนินการตามคำสั่งได้โดยส่ง Intent
EXECผ่านเส้นทางการดำเนินการในเครื่อง แทนที่จะเรียกใช้ Cloud API ตัวอย่างเช่น คำขอ "เปิดไฟ" สามารถจัดการได้โดยการดำเนินการภายในเครื่อง - การค้นหาในเครื่องช่วยให้สามารถจัดการคำค้นหาเกี่ยวกับสถานะอุปกรณ์ได้โดยการส่ง Intent
QUERYผ่านเส้นทางการดำเนินการในเครื่อง ตัวอย่างเช่น การค้นหาในเครื่องจะตอบสนองต่อคำถาม "ไฟเปิดอยู่ไหม" โดยไม่ต้องเรียกใช้ Cloud API
SDK ช่วยให้คุณเขียนแอปการดำเนินการภายในโดยใช้ TypeScript หรือ JavaScript ซึ่งมีตรรกะทางธุรกิจของสมาร์ทโฮมได้ อุปกรณ์ Google Home หรืออุปกรณ์ Google Nest สามารถโหลดและเรียกใช้แอปในอุปกรณ์ได้ แอปของคุณจะสื่อสารกับอุปกรณ์อัจฉริยะที่มีอยู่โดยตรงผ่าน Wi-Fi ในเครือข่ายเฉพาะที่ (LAN) เพื่อดำเนินการตามคำสั่งของผู้ใช้ผ่านโปรโตคอลที่มีอยู่
การผสานรวม SDK ช่วยปรับปรุงประสิทธิภาพการผสานรวม Cloud-to-cloud ของคุณ ซึ่งรวมถึงเวลาในการตอบสนองที่ต่ำลงและความน่าเชื่อถือที่สูงขึ้น ระบบรองรับการดำเนินการภายในสำหรับอุปกรณ์ทุกประเภทและลักษณะของอุปกรณ์ ยกเว้นอุปกรณ์ที่ใช้วิธีการสำรองในการยืนยันผู้ใช้
ทำความเข้าใจวิธีการทำงาน
หลังจากได้รับการตอบกลับ SYNC จากการดำเนินการในระบบคลาวด์ แพลตฟอร์ม Local Home จะสแกนเครือข่ายเฉพาะที่ของผู้ใช้โดยใช้ mDNS, การออกอากาศ UDP หรือ UPnP เพื่อค้นหาอุปกรณ์อัจฉริยะที่เชื่อมต่อกับ Assistant
แพลตฟอร์มจะส่ง Intent IDENTIFY เพื่อระบุว่าอุปกรณ์ควบคุมได้ในเครื่องหรือไม่ โดยเปรียบเทียบรหัสอุปกรณ์ในการตอบกลับ IDENTIFY กับรหัสที่แสดงผลโดยการตอบกลับ SYNC ก่อนหน้า หากอุปกรณ์ที่ตรวจพบเป็นฮับหรือบริดจ์ แพลตฟอร์มจะส่ง Intent REACHABLE_DEVICES และถือว่าฮับเป็นอุปกรณ์พร็อกซีสำหรับการสื่อสารในเครื่อง
เมื่อได้รับการตอบกลับที่ยืนยันอุปกรณ์ในเครื่อง แพลตฟอร์มจะสร้างเส้นทางการดำเนินการในเครื่องไปยังอุปกรณ์ Google Home หรืออุปกรณ์ Google Nest ของผู้ใช้ จากนั้นจะกำหนดเส้นทางคำสั่งของผู้ใช้สำหรับการดำเนินการในเครื่อง
เมื่อผู้ใช้เรียกใช้การผสานรวม Cloud-to-cloud ที่มีเส้นทางการดำเนินการภายในเครื่อง Assistant จะส่ง Intent EXECUTE หรือ Intent QUERY ไปยังอุปกรณ์ Google Home หรืออุปกรณ์ Google Nest แทนการดำเนินการในระบบคลาวด์ จากนั้นอุปกรณ์จะเรียกใช้แอปการดำเนินการภายในเพื่อประมวลผล Intent
แพลตฟอร์ม Local Home ไม่ได้กำหนดว่าจะเลือกอุปกรณ์ Google Home หรืออุปกรณ์ Google Nest เครื่องใดเพื่อเรียกใช้คำสั่ง Intent EXECUTE และ QUERY อาจมาจากอุปกรณ์ Google Home หรือ Google Nest ที่กำหนดไว้ในโครงสร้าง Home Graph เดียวกันกับอุปกรณ์เป้าหมาย
แอปการดำเนินการตามคำสั่งซื้อในพื้นที่
แอปการดำเนินการในพื้นที่ประกอบด้วยตรรกะทางธุรกิจเพื่อประมวลผล Intent ที่ส่งโดยแพลตฟอร์ม Local Home และเข้าถึงอุปกรณ์อัจฉริยะผ่านเครือข่ายเฉพาะที่ (LAN) คุณไม่จำเป็นต้องแก้ไขฮาร์ดแวร์เพื่อผสานรวมการดำเนินการตามคำสั่งซื้อในพื้นที่ แอปจะดำเนินการตามคำขอการผสานรวม Cloud-to-cloud โดยส่งคำสั่งควบคุมไปยังอุปกรณ์อัจฉริยะผ่านโปรโตคอลเลเยอร์ของแอปพลิเคชัน ซึ่งรวมถึง HTTP, TCP หรือ UDP ในกรณีที่เส้นทางการดำเนินการในเครื่องไม่สำเร็จ ระบบจะใช้การดำเนินการในระบบคลาวด์เป็นเส้นทางการดำเนินการสำรอง
Local Home SDK มีคลาสหลัก 2 คลาสต่อไปนี้เพื่อรองรับการสร้างแอป
DeviceManager: มีเมธอดในการสื่อสารกับอุปกรณ์อัจฉริยะโดยใช้ TCP, ซ็อกเก็ต UDP หรือคำขอ HTTPApp: ระบุวิธีการแนบแฮนเดิลสำหรับ Intent ที่ Google ส่งหลังจากค้นพบอุปกรณ์ที่ควบคุมได้ในเครื่อง (IDENTIFY,REACHABLE_DEVICES) คลาสนี้ยังทำตามคำสั่งของผู้ใช้ (EXECUTE) และตอบคำถามของผู้ใช้เกี่ยวกับสถานะปัจจุบันของอุปกรณ์ (QUERY) ด้วย
ในระหว่างการพัฒนา คุณสามารถสร้างและทดสอบแอปได้โดยโหลดแอปบนเซิร์ฟเวอร์โฮสติ้งของคุณเองหรือคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์ในเครื่อง ในเวอร์ชันที่ใช้งานจริง Google จะโฮสต์แอปของคุณในสภาพแวดล้อมแซนด์บ็อกซ์ JavaScript ที่ปลอดภัยบนอุปกรณ์ Google Home หรืออุปกรณ์ Google Nest ของผู้ใช้
ปัจจุบันระบบยังไม่รองรับ API รายงานสถานะสําหรับการดำเนินการในพื้นที่ Google อาศัยการดำเนินการในระบบคลาวด์ของคุณเพื่อประมวลผลคำขอเหล่านี้
วงจรของแอปพลิเคชัน
ระบบจะโหลดแอป Local Fulfillment ตามคำขอเมื่อแพลตฟอร์ม Local Home ค้นพบอุปกรณ์ใหม่ในพื้นที่ซึ่งตรงกับการกำหนดค่าการสแกนของโปรเจ็กต์ หรือมี Intent ที่รอดำเนินการเพื่อส่งข้อมูลที่เกี่ยวข้องกับอุปกรณ์ที่ระบุไว้ก่อนหน้านี้
อุปกรณ์ Google Home หรือ Google Nest มีข้อจำกัดด้านหน่วยความจำ และแอป Fulfillment ในเครื่องอาจสิ้นสุดการทำงานได้ทุกเมื่อเนื่องจากแรงกดดันด้านหน่วยความจำในระบบ กรณีนี้อาจเกิดขึ้นหากแอปเริ่มใช้หน่วยความจำมากเกินไป หรือหากระบบต้องการเพิ่มพื้นที่ว่างสำหรับแอปอื่น แพลตฟอร์มสมาร์ทโฮมภายในเครื่องจะรีสตาร์ทแอปก็ต่อเมื่อมี Intent ใหม่ที่จะส่งและทรัพยากรหน่วยความจำเพียงพอสำหรับแอปที่จะทำงาน
แพลตฟอร์ม Local Home จะยกเลิกการโหลดแอปหลังจากหมดเวลาไม่มีการใช้งานเมื่อผู้ใช้ยกเลิกการลิงก์บัญชีหรือไม่มีอุปกรณ์ที่รองรับการดำเนินการภายในที่เชื่อมโยงกับ agentUserId ของผู้ใช้อีกต่อไป
อุปกรณ์ที่รองรับ
แพลตฟอร์มสมาร์ทโฮมภายในจะเรียกใช้แอปการดำเนินการภายในบนอุปกรณ์ 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 |
สภาพแวดล้อมการดำเนินการ
สภาพแวดล้อมการดำเนินการสำหรับแอป Fulfillment ในพื้นที่ขึ้นอยู่กับอุปกรณ์ของคุณ แพลตฟอร์ม Local Home รองรับสภาพแวดล้อมรันไทม์ต่อไปนี้
- Chrome: แอป Fulfillment ในพื้นที่ของคุณจะทำงานภายในบริบทของเบราว์เซอร์ Chrome
windowที่ใช้ Chrome M80 ขึ้นไปซึ่งรองรับ ECMAScript เวอร์ชัน ES2018 - Node.js: แอป Fulfillment ในพื้นที่ของคุณจะทำงานเป็นสคริปต์ภายในกระบวนการ Node.js ที่ใช้ Node v10.x LTS ขึ้นไป โดยรองรับ ECMAScript เวอร์ชัน ES2018
โครงสร้างซอร์สโค้ด
เราขอแนะนำให้รวมทรัพยากร Dependency ไว้ในไฟล์ JavaScript ไฟล์เดียวโดยใช้การกำหนดค่า Bundler ที่ Local Home SDK มีให้ และแพ็กซอร์สโค้ดเป็นนิพจน์ฟังก์ชันที่เรียกใช้ทันที (IIFE)
เส้นทางการใช้งาน
หากต้องการใช้ Local Home SDK สำหรับการผสานรวมสมาร์ทโฮม คุณต้องทำงานต่อไปนี้
| 1 | ตั้งค่าการกำหนดค่าการสแกน | กำหนดค่า Google Home Developer Console ด้วยพารามิเตอร์ที่จำเป็นเพื่อให้ Assistant ค้นพบอุปกรณ์ที่ควบคุมได้ในเครื่อง |
| 2 | อัปเดตการตอบสนอง SYNC ในการดำเนินการในระบบคลาวด์ | ในการดำเนินการในระบบคลาวด์ ให้แก้ไขเครื่องจัดการคำขอ SYNC เพื่อรองรับช่อง
otherDeviceIds ที่แพลตฟอร์มใช้เพื่อสร้างเส้นทางการดำเนินการในเครื่อง ในช่องนั้น ให้ระบุรหัสของอุปกรณ์ที่ควบคุมได้ในเครื่อง
|
| 3 | ติดตั้งใช้งานแอปการดำเนินการในพื้นที่ | ใช้ Local Home SDK เพื่อสร้างแอป JavaScript เพื่อจัดการ Intent IDENTIFY,
EXECUTE และ
QUERY สำหรับอุปกรณ์พร็อกซีฮับหรือบริดจ์ คุณควรจัดการ Intent REACHABLE_DEVICES ด้วย
|
| 4 | ทดสอบและแก้ไขข้อบกพร่องของแอป | ทดสอบการผสานรวม (หรือรับรองด้วยตนเอง) โดยใช้ชุดโปรแกรมทดสอบ Google Home |
ก่อนเริ่มต้น
- ทำความคุ้นเคยกับพื้นฐานของการสร้างการผสานรวม Cloud-to-cloud
- ใน Google Home Developer Console ให้ตรวจสอบว่าคุณมีโปรเจ็กต์สมาร์ทโฮมอยู่แล้ว และมีการกำหนดค่าการลิงก์บัญชี
- ตรวจสอบว่าคุณเข้าสู่ระบบด้วยบัญชี Google เดียวกันใน Developer Console และใน Assistant บนอุปกรณ์ทดสอบ
- คุณจะต้องมีสภาพแวดล้อม Node.js เพื่อเขียนแอป เราขอแนะนำให้ใช้ Node Version Manager ในการติดตั้ง Node.js และ npm
- หากต้องการทำงานกับ Local Home SDK เวอร์ชันล่าสุด คุณจะต้องลงทะเบียนอุปกรณ์ทดสอบในโปรแกรม Cast เวอร์ชันตัวอย่าง