Fulfillment lokal

Local Home SDK meningkatkan integrasi smart home Anda dengan Asisten Google melalui penambahan jalur fulfillment lokal untuk merutekan intent smart home.

Local Home SDK menyediakan dua kemampuan: Eksekusi Lokal dan Kueri Lokal.

  • Eksekusi Lokal memberikan kemampuan untuk memenuhi perintah dengan mengirimkan intent EXEC melalui jalur fulfillment lokal, bukan melakukan panggilan API cloud. Misalnya, permintaan 'Nyalakan lampu' dapat ditangani oleh Eksekusi Lokal.
  • Local Query memberikan kemampuan untuk menangani kueri terkait status perangkat dengan mengirimkan intent QUERY melalui jalur fulfillment lokal. Misalnya, Kueri Lokal akan memenuhi kueri 'Apakah lampu saya menyala?' tanpa melakukan panggilan API cloud.

SDK ini memungkinkan Anda menulis aplikasi fulfillment lokal, menggunakan TypeScript atau JavaScript, yang berisi logika bisnis smart home Anda. Perangkat Google Home atau Google Nest dapat memuat dan menjalankan aplikasi Anda di perangkat. Aplikasi Anda berkomunikasi langsung dengan perangkat smart yang ada melalui Wi-Fi di jaringan area lokal (LAN) untuk memenuhi perintah pengguna, melalui protokol yang ada.

Integrasi SDK menawarkan peningkatan performa pada integrasi Cloud-to-cloud Anda, termasuk latensi yang lebih rendah dan keandalan yang lebih tinggi. Pemenuhan lokal didukung untuk semua jenis perangkat dan karakteristik perangkat, kecuali yang menggunakan verifikasi pengguna sekunder.

Mulai membangun Coba sampel

Memahami cara kerjanya

Setelah mendapatkan respons SYNC dari cloud fulfillment Anda, platform Local Home memindai jaringan area lokal pengguna menggunakan mDNS, siaran UDP, atau UPnP untuk menemukan perangkat smart yang terhubung ke Asisten.

Platform mengirimkan intent IDENTIFY untuk menentukan apakah perangkat dapat dikontrol secara lokal, dengan membandingkan ID perangkat dalam respons IDENTIFY dengan ID perangkat yang ditampilkan oleh respons SYNC sebelumnya. Jika perangkat yang terdeteksi adalah hub atau bridge, platform akan mengirimkan intent REACHABLE_DEVICES dan memperlakukan hub sebagai perangkat proxy untuk berkomunikasi secara lokal.

Saat menerima respons yang mengonfirmasi perangkat lokal, platform akan membuat jalur fulfillment lokal ke perangkat Google Home atau Google Nest pengguna, dan selanjutnya merutekan perintah pengguna untuk fulfillment lokal.

Saat pengguna memicu integrasi Cloud-to-cloud yang memiliki jalur pemenuhan lokal, Asisten akan mengirim intent EXECUTE atau QUERY ke perangkat Google Home atau Google Nest, bukan pemenuhan cloud. Perangkat kemudian menjalankan aplikasi fulfillment lokal untuk memproses intent.

Gambar ini menunjukkan alur eksekusi untuk pemenuhan lokal. Jalur
            eksekusi menangkap maksud pengguna dari ponsel dengan
            Asisten Google, lalu maksud pengguna diproses oleh
            Google Cloud, kemudian dieksekusi secara lokal di perangkat Google Home
            dan perintah dikeluarkan langsung ke hub perangkat atau
            langsung ke perangkat. Cloud developer tersedia sebagai
            penggantian cloud.
Gambar 1: Menambahkan jalur fulfillment lokal untuk Action smart home Anda.

Platform Local Home bersifat non-deterministik dalam memilih perangkat Google Home atau Google Nest yang akan memicu perintah. Intent EXECUTE dan QUERY dapat masuk melalui perangkat Google Home atau Google Nest yang ditentukan dalam struktur Home Graph yang sama dengan perangkat target.

Aplikasi fulfillment lokal

Aplikasi fulfillment lokal berisi logika bisnis untuk memproses intent yang dikirim oleh platform Local Home dan mengakses perangkat smart Anda melalui jaringan area lokal. Tidak ada modifikasi hardware yang diperlukan untuk mengintegrasikan pemenuhan lokal. Aplikasi memenuhi permintaan integrasi Cloud-to-cloud dengan mengirim perintah kontrol ke perangkat smart melalui protokol lapisan aplikasi, termasuk HTTP, TCP, atau UDP. Jika jalur fulfillment lokal gagal, fulfillment cloud Anda akan digunakan sebagai jalur eksekusi penggantian.

Untuk mendukung pembuatan aplikasi, Local Home SDK menyediakan dua class utama berikut:

  • DeviceManager: Menyediakan metode untuk berkomunikasi dengan perangkat smart menggunakan soket TCP, UDP, atau permintaan HTTP.
  • App: Menyediakan metode untuk melampirkan handler untuk intent yang dikirim Google setelah menemukan perangkat yang dapat dikontrol secara lokal (IDENTIFY, REACHABLE_DEVICES). Class ini juga memenuhi perintah pengguna (EXECUTE), dan menjawab kueri pengguna tentang status perangkat saat ini (QUERY).

Selama pengembangan, Anda dapat membangun dan menguji aplikasi dengan memuatnya di server hosting sendiri atau mesin pengembangan lokal. Dalam produksi, Google menghosting aplikasi Anda di lingkungan sandbox JavaScript yang aman di perangkat Google Home atau Google Nest pengguna.

Report State API saat ini tidak didukung untuk pemenuhan lokal. Google mengandalkan pemenuhan cloud Anda untuk memproses permintaan ini.

Siklus proses aplikasi

Aplikasi fulfillment lokal Anda dimuat sesuai permintaan saat platform Local Home menemukan perangkat lokal baru yang cocok dengan konfigurasi pemindaian project, atau memiliki maksud tertunda untuk mengirimkan terkait dengan perangkat yang sebelumnya diidentifikasi.

Perangkat Google Home atau Google Nest memiliki batasan memori dan aplikasi fulfillment lokal Anda dapat dihentikan kapan saja karena tekanan memori dalam sistem. Hal ini dapat terjadi jika aplikasi Anda mulai menggunakan terlalu banyak memori, atau jika sistem perlu menyediakan ruang untuk aplikasi lain. Platform Local Home memulai ulang aplikasi Anda hanya jika ada intent baru yang akan dikirimkan dan sumber daya memori yang cukup untuk menjalankan aplikasi.

Platform Local Home membongkar aplikasi Anda setelah waktu tunggu tidak ada aktivitas saat pengguna membatalkan tautan akunnya atau tidak ada lagi perangkat yang mendukung pemenuhan lokal yang terkait dengan agentUserId pengguna.

Perangkat yang didukung

Platform Local Home menjalankan aplikasi fulfillment lokal Anda di perangkat Google Home atau Google Nest yang didukung. Tabel berikut menjelaskan perangkat yang didukung, dan runtime yang digunakan di setiap perangkat. Untuk mempelajari lebih lanjut persyaratan runtime, lihat Lingkungan eksekusi.

Perangkat Jenis Lingkungan
Google Home Speaker Chrome
Google Home Mini Speaker Chrome
Google Home Max Speaker Chrome
Nest Mini Speaker Chrome
Nest Hub Display Chrome
Nest Hub Max Display Chrome
Nest Wifi Router Node.js
Titik Chrome

Lingkungan eksekusi

Lingkungan eksekusi untuk aplikasi pemenuhan lokal Anda bergantung pada perangkat Anda. Platform Local Home mendukung lingkungan runtime berikut:

  • Chrome: Aplikasi pemenuhan lokal Anda dijalankan dalam konteks browser Chrome window yang menjalankan Chrome M80 atau yang lebih baru dengan dukungan untuk ECMAScript versi ES2018.
  • Node.js: Aplikasi pemenuhan lokal Anda dieksekusi sebagai skrip dalam proses Node.js yang menjalankan Node v10.x LTS atau yang lebih baru dengan dukungan untuk ECMAScript versi ES2018.

Struktur kode sumber

Sebaiknya gabungkan dependensi Anda ke dalam satu file JavaScript menggunakan konfigurasi bundler yang disediakan oleh Local Home SDK dan kemas kode sumber Anda sebagai Immediately-invoked Function Expression (IIFE).

Alur implementasi

Untuk memanfaatkan Local Home SDK untuk integrasi smart home, Anda harus melakukan tugas berikut:

1 Siapkan konfigurasi pemindaian Konfigurasi Google Home Developer Console dengan parameter yang diperlukan agar Asisten dapat menemukan perangkat yang dapat dikontrol secara lokal.
2 Perbarui respons SYNC di fulfillment cloud Anda Di pemenuhan cloud, ubah penangan permintaan SYNC untuk mendukung kolom otherDeviceIds yang digunakan platform untuk membuat jalur pemenuhan lokal. Di kolom tersebut, tentukan ID perangkat yang dapat dikontrol secara lokal.
3 Menerapkan aplikasi fulfillment lokal Gunakan Local Home SDK untuk membuat aplikasi JavaScript guna menangani intent IDENTIFY, EXECUTE, dan QUERY. Untuk perangkat proxy hub atau jembatan, Anda juga harus menangani maksud REACHABLE_DEVICES.
4 Menguji dan men-debug aplikasi Uji integrasi Anda (atau lakukan sertifikasi mandiri) dengan menggunakan Google Home Test Suite.

Sebelum memulai