ยินดีต้อนรับสู่ศูนย์นักพัฒนาซอฟต์แวร์ Google Home ซึ่งเป็นจุดหมายใหม่เกี่ยวกับวิธีพัฒนาการดําเนินการสําหรับบ้านอัจฉริยะ หมายเหตุ: คุณจะสร้างการดําเนินการต่างๆ ต่อไปในคอนโซลการดําเนินการ

การจําหน่ายในร้าน

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

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

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

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

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

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

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

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

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

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

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

แอปติดตามในพื้นที่

แอปการตอบสนองในพื้นที่มีตรรกะทางธุรกิจสําหรับประมวลผล Intent ที่ส่งโดยแพลตฟอร์ม Home ในพื้นที่และเข้าถึงอุปกรณ์อัจฉริยะผ่านเครือข่าย LAN คาดว่าฮาร์ดแวร์ของคุณจะไม่มีการผสานรวมฮาร์ดแวร์ที่ดําเนินการในเครื่อง แอปจะดําเนินการตามคําขอการดําเนินการสําหรับสมาร์ทโฮมด้วยการส่งคําสั่งควบคุมไปยังอุปกรณ์อัจฉริยะผ่านโปรโตคอลเลเยอร์แอปพลิเคชัน ซึ่งรวมถึง 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 ของผู้ใช้

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

อายุการใช้งานของแอปพลิเคชัน

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

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

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

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

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

อุปกรณ์ Type สภาพแวดล้อม
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

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

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

  • 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 กําหนดค่าการสแกน กําหนดค่าคอนโซล Actions ด้วยพารามิเตอร์ที่จําเป็นเพื่อให้ Assistant ค้นพบอุปกรณ์ที่ควบคุมได้ในระบบ
2 อัปเดตการตอบสนอง SYNC ในการตอบสนองด้วยระบบคลาวด์ ในการตอบสนองด้วยระบบคลาวด์ ให้แก้ไขเครื่องจัดการคําขอ SYNC เพื่อรองรับช่อง otherDeviceIds ที่แพลตฟอร์มใช้ในการสร้างเส้นทางการดําเนินการในเครื่อง ในช่องดังกล่าว ให้ระบุรหัสของอุปกรณ์ที่ควบคุมในเครื่องได้
3 ใช้แอปการดําเนินการตามท้องถิ่น ใช้ Local Home SDK เพื่อสร้างแอป JavaScript เพื่อรองรับ Intent ของ IDENTIFY, EXECUTE และ QUERY สําหรับอุปกรณ์พร็อกซี Hub หรือ Bridge คุณควรจัดการกับ Intent REACHABLE_DEVICES
4 ทดสอบและแก้ไขข้อบกพร่องของแอป ทดสอบการผสานรวม (หรือรับรองด้วยตนเอง) โดยใช้ชุดทดสอบ Google Home

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