Local Home SDK ช่วยปรับปรุงการผสานรวมสมาร์ทโฮมกับ Google Assistant โดยเพิ่มเส้นทางการตอบสนองในเครื่องเพื่อกำหนดเส้นทางIntent ของสมาร์ทโฮม
Local Home SDK มีความสามารถ 2 อย่าง ได้แก่ การดำเนินการในเครื่องและการค้นหาในเครื่อง
- การดำเนินการในเครื่องช่วยให้สามารถดำเนินการตามคำสั่งได้โดยการส่ง
EXECเจตนาผ่านเส้นทางการตอบสนองในเครื่องแทนการเรียกใช้ Cloud API เช่น คำขอ "เปิดไฟ" อาจได้รับการจัดการโดยการดำเนินการในเครื่อง - คำค้นหาในพื้นที่ช่วยให้จัดการคำค้นหาเกี่ยวกับสถานะของอุปกรณ์ได้โดยการส่ง
QUERYเจตนาผ่านเส้นทางการดำเนินการในพื้นที่ ตัวอย่างเช่น Local Query จะดำเนินการตามคำค้นหา "ไฟเปิดอยู่ไหม" โดยไม่ต้อง เรียกใช้ Cloud API
SDK ช่วยให้คุณเขียนแอปการจัดการคำสั่งซื้อในร้านค้าได้โดยใช้ TypeScript หรือ JavaScript ซึ่งมีตรรกะทางธุรกิจของสมาร์ทโฮม อุปกรณ์ Google Home หรือ Google Nest สามารถโหลดและ เรียกใช้แอปในอุปกรณ์ได้ แอปของคุณสื่อสารกับอุปกรณ์อัจฉริยะที่มีอยู่โดยตรงผ่าน Wi-Fi ในเครือข่ายท้องถิ่น (LAN) เพื่อดำเนินการตามคำสั่งของผู้ใช้ผ่านโปรโตคอลที่มีอยู่
การผสานรวม SDK จะช่วยปรับปรุงประสิทธิภาพของ การผสานรวม Cloud-to-cloud รวมถึงลดเวลาในการตอบสนองและเพิ่ม ความน่าเชื่อถือ การดำเนินการตามคำสั่งในพื้นที่รองรับอุปกรณ์ทุกประเภทและลักษณะของอุปกรณ์ ยกเว้นอุปกรณ์ที่ใช้การยืนยันผู้ใช้รอง
ทำความเข้าใจวิธีการทำงาน
หลังจากได้รับคำตอบ SYNC
จาก Fulfillment ในระบบคลาวด์แล้ว แพลตฟอร์ม Local Home จะสแกนเครือข่าย
ในพื้นที่ของผู้ใช้โดยใช้ mDNS, การออกอากาศ UDP หรือ UPnP เพื่อค้นหา
อุปกรณ์อัจฉริยะที่เชื่อมต่อกับ Assistant
แพลตฟอร์มจะส่งเจตนา IDENTIFY เพื่อพิจารณาว่าอุปกรณ์ควบคุมได้ในเครื่องหรือไม่ โดยการเปรียบเทียบรหัสอุปกรณ์ในการตอบกลับ IDENTIFY กับรหัสที่ส่งคืนโดยการตอบกลับ SYNC ก่อนหน้านี้ หากอุปกรณ์ที่ตรวจพบเป็นฮับหรือบริดจ์ แพลตฟอร์มจะส่ง Intent REACHABLE_DEVICES และถือว่าฮับเป็นอุปกรณ์พร็อกซีสำหรับการสื่อสารในพื้นที่
เมื่อได้รับคำตอบที่ยืนยันอุปกรณ์ในพื้นที่ แพลตฟอร์มจะสร้าง เส้นทางการจำหน่ายในพื้นที่ไปยังอุปกรณ์ Google Home หรือ Google Nest ของผู้ใช้ และจากนั้นจะกำหนดเส้นทาง คำสั่งของผู้ใช้สำหรับการจำหน่ายในพื้นที่
เมื่อผู้ใช้เรียกใช้Cloud-to-cloudการผสานรวมที่มีเส้นทางการตอบสนองในเครื่อง
Assistant จะส่ง Intent EXECUTE หรือ
Intent QUERY ไปยังอุปกรณ์ Google Home หรือ Google Nest
แทนการตอบสนองบนระบบคลาวด์ จากนั้นอุปกรณ์จะเรียกใช้แอปการปฏิบัติตามคำสั่งในเครื่องเพื่อ
ประมวลผลความตั้งใจ
แพลตฟอร์มบ้านอัจฉริยะในพื้นที่ไม่สามารถกำหนดได้ว่าจะเลือกอุปกรณ์ Google Home หรือ Google Nest เครื่องใดเพื่อทริกเกอร์คำสั่ง เจตนา 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 Report State ไม่รองรับการปฏิบัติตามข้อกำหนดในพื้นที่ Google ใช้การปฏิบัติตามคำสั่งซื้อในระบบคลาวด์ของคุณเพื่อประมวลผลคำขอเหล่านี้
วงจรการใช้งานแอปพลิเคชัน
ระบบจะโหลดแอปการดำเนินการในพื้นที่ตามต้องการเมื่อแพลตฟอร์มบ้านอัจฉริยะในพื้นที่ค้นพบ อุปกรณ์ในพื้นที่ใหม่ที่ตรงกับการกำหนดค่าการสแกนโปรเจ็กต์ หรือมี Intent ที่รอดำเนินการซึ่งเกี่ยวข้องกับอุปกรณ์ที่ระบุไว้ก่อนหน้านี้
อุปกรณ์ Google Home หรือ Google Nest มีข้อจำกัดด้านหน่วยความจำ และระบบอาจปิดแอปการจัดการคำสั่งซื้อในพื้นที่ของคุณ ได้ทุกเมื่อเนื่องจากหน่วยความจำในระบบเต็ม ปัญหานี้อาจเกิดขึ้นหากแอปเริ่มใช้หน่วยความจำมากเกินไป หรือหากระบบจำเป็นต้อง เพิ่มพื้นที่ว่างสำหรับแอปอื่น แพลตฟอร์ม Local Home จะรีสตาร์ทแอปของคุณเมื่อมี Intent ใหม่ที่จะส่งเท่านั้น และมีทรัพยากรหน่วยความจำเพียงพอสำหรับให้แอปทำงาน
แพลตฟอร์ม 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
โครงสร้างซอร์สโค้ด
เราขอแนะนำให้รวมทรัพยากร 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 เพื่อ
จัดการ 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 Preview