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

Local Home SDK ช่วยปรับปรุงการผสานรวมสมาร์ทโฮมกับ Google Assistant โดยเพิ่มเส้นทางการตอบสนองในเครื่องเพื่อกำหนด Intent ของสมาร์ทโฮม

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 จะส่ง EXECUTE Intent หรือ QUERY Intent ไปยังอุปกรณ์ Google Home หรืออุปกรณ์ Google Nest แทนที่จะส่งไปยังการตอบสนองในระบบคลาวด์ จากนั้นอุปกรณ์จะเรียกใช้แอปการตอบสนองในเครื่องเพื่อประมวลผล Intent

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

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

แอปการตอบสนองในเครื่อง

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

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

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

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

ปัจจุบันระบบยังไม่รองรับ Report State API สำหรับการตอบสนองในเครื่อง Google จะใช้การตอบสนองในระบบคลาวด์เพื่อประมวลผลคำขอเหล่านี้

วงจรการใช้งานแอปพลิเคชัน

ระบบจะโหลดแอปการตอบสนองในเครื่องตามความต้องการเมื่อแพลตฟอร์ม Local Home ค้นพบอุปกรณ์ในเครื่องใหม่ที่ตรงกับการกำหนดค่าการสแกนโปรเจ็กต์ หรือมี 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
Point 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 มีให้ และแพ็กเกจซอร์สโค้ดเป็น Immediately-invoked Function Expression (IIFE)

เส้นทางการติดตั้งใช้งาน

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

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

ก่อนเริ่มต้น