FAQ Smart Home

Umum

T: Di mana dan dalam bahasa apa kami harus menerapkan infrastruktur pemenuhan Cloud-to-cloud?

J: Selama mendukung SSL (TLS) modern dan OAuth 2.0, Anda dapat menerapkan infrastruktur di platform mana pun dan dalam bahasa apa pun yang Anda pilih. Sebaiknya deploy sedekat mungkin dengan infrastruktur Anda yang lain, untuk meningkatkan keandalan dan mengurangi latensi eksekusi ke perangkat pengguna sebenarnya.


T: Apakah ID perangkat harus unik?

J: ID harus unik. Jika Anda tidak memiliki ID unik di seluruh layanan, ID tersebut harus unik setidaknya di tingkat per pengguna. Bayangkan pengguna dengan beberapa rumah, di mana kedua rumah memiliki integrasi ke pengguna yang sama. Meminta untuk menyalakan lampu di satu rumah tidak boleh menyalakan lampu dengan ID yang sama di rumah lain.


T: Apakah nama perangkat harus unik?

J: Nama tidak harus unik, meskipun seiring waktu kami dapat mendorong orang untuk memperbaiki penamaan yang buruk setelah penyiapan demi pengalaman pengguna yang lebih baik.

Berikut panduan singkat penamaan:

  • Nama harus berupa hal yang benar-benar dapat diucapkan orang.
  • Kami mengenali subset string, jadi jika Anda memiliki 'acme color light', kami juga akan menjawab 'acme light'.
  • Sebaiknya gunakan nama deskriptif untuk produk dan satu atau beberapa nama yang ditentukan pengguna.
  • Pengguna tidak perlu memberi nama ruangan untuk lampu, karena kita memiliki ruangan untuk itu; lampu harus memiliki nama unik per ruangan, tetapi selalu dapat menggunakan bentuk jamak untuk memerintahkan semuanya (misalnya, dua bohlam di lampu dinding kantor adalah 'lampu utara' dan 'lampu timur', tetapi dapat diperintahkan hanya sebagai 'lampu').

T: Seberapa sering status perangkat diperbarui?

J: Status sementara diambil saat QUERY atau EKSEKUSI, yang merupakan tindakan yang dimulai pengguna. Jika pengguna bertanya ‘apakah lampu menyala?', atau ingin menerangkan lampu, kita perlu melakukan kueri untuk mengetahui status saat ini.


T: Apakah Home Graph dapat diupdate secara langsung dengan status perangkat saat ini?

J: Ya, gunakan panggilan API Report State.


Penautan Akun dan OAuth

J: Ya, penautan akun diperlukan untuk menghubungkan perangkat pengguna ke layanan cloud penyedia.


T: Untuk OAuth, kami menghentikan masa berlaku token akses setiap 15.213 jam, apakah itu tidak masalah?

J: Ya, tetapi harap uji dengan waktu habis yang cukup singkat, misalnya 10-20 menit. Klien OAuth kita harus memperbarui token sesuai kebutuhan, dan pengujian dengan waktu habis masa berlaku yang singkat akan membuktikan bahwa hal itu berfungsi.


Intent

T: Kapan SINKRONISASI terjadi?

J: SYNC terjadi segera setelah OAuth selesai, dan setelah panggilan Request Sync dilakukan.


T: Mengapa SYNC tidak berfungsi?

J: Ada sejumlah alasan umum mengapa hal ini dapat gagal.

  • Anda mengirim jenis perangkat yang salah.

    • Misalnya, kami mengharapkan action.devices.types.LIGHT, tetapi Anda mengirim action.devices.types.Light.
  • Anda mengirim jenis perangkat yang tidak didukung.

    • Misalnya, Anda mengirim action.devices.types.FLASHLIGHT - ini bukan sesuatu yang kami dukung.
  • Anda mengirim kolom yang tidak valid/tidak didukung.

    • Misalnya, Anda memiliki kolom yang tidak ada dalam spesifikasi kami.
  • Ada masalah pemformatan lain dengan respons SYNC Anda.

    • Periksa bagan Anda.
  • Anda mengalami masalah penautan akun.

    • Pastikan Anda menerima token akses yang valid di header Auth permintaan SYNC.
  • Anda memerlukan waktu terlalu lama untuk merespons permintaan SYNC.

    • Pastikan Anda merespons permintaan SYNC dalam waktu 5 detik.

T: Apakah respons “tertunda” tidak masalah?

J: Kami lebih memilih respons berhasil/gagal, bukan tertunda, jika perangkat Anda tersedia secara real time. Hubungi kami jika Anda merasa bahwa Anda memerlukan respons 'tertunda' -- kami menyadari bahwa beberapa perangkat non-real-time berdaya rendah mungkin memerlukan respons tertunda dan model eksekusi asinkron.


Pengujian dan Pengiriman

T: Dapatkah kita menyiapkan lingkungan cloud pengembangan?

J: Ya, Anda dapat menguji lingkungan dan konfigurasi cloud yang belum diluncurkan.


T: Action saya tidak terlihat di bagian Kontrol Rumah pada aplikasi Google Home. Apa yang terjadi?

J: Pastikan Anda adalah Developer untuk project ini.


Status Laporan

T: Apakah ada prasyarat untuk menerapkan Report State?

J: Project harus menggunakan Smart Home API, mendukung OAuth2, dan harus memiliki trait yang memiliki status untuk dilaporkan.


T: Seberapa sering kita perlu Melaporkan Status di perangkat?

J: Google tertarik dengan transisi dan status terminal. Namun, jika ada banyak perubahan status dalam waktu singkat (misalnya, pengguna membuka dan menutup kulkas tiga kali dalam satu menit atau menggeser peredup), kita hanya memerlukan status akhir yang dilaporkan.


T: Apakah status perangkat lengkap perlu dikirim saat melakukan panggilan Report State?

J: Pembaruan status parsial tidak didukung, sehingga panggilan Report State harus selalu menyertakan semua data untuk trait tertentu yang telah diperbarui. Jika dua ciri akan menimbulkan inkonsistensi, keduanya harus dilaporkan bersama.


T: Dapatkah Google membuat kueri perangkat saya untuk mendapatkan status (yaitu, melakukan polling perangkat)?

J: Ini adalah mekanisme penggantian yang tidak kami rekomendasikan. Jika kami perlu melakukan polling perangkat secara sering untuk pengguna tersebut, kami tidak dapat menjamin beban tambahan yang akan terjadi. Kebutuhan ini berasal dari platform visual baru. Selain masalah pemuatan yang tidak diketahui, pengalaman pengguna akan menurun. Kami merasa bahwa Report State sangat penting untuk platform.


T: Apa saja karakteristik yang mendukung Status Laporan saat ini?

J: Semua sifat publik yang memiliki status terkait didukung. Setiap perubahan dalam status Online perangkat juga harus dilaporkan.

Perhatikan bahwa Adegan tidak memiliki status. Namun, hal ini dapat mengakibatkan perubahan status perangkat. Jika ada perangkat dalam Google Home Graph yang berubah status, hal ini harus dilaporkan kembali.


T: Apakah Report State mengharuskan stempel waktu dikirim?

J: Kami tidak memerlukan stempel waktu; status terakhir yang dikirim akan menggantikan panggilan sebelumnya.


T: Apakah saya perlu melaporkan Status secara terpisah jika saya sudah mengirimkan status dalam Query dan/atau Execute?

J: Home Graph hanya menyimpan status yang dikirim melalui Report State. Status yang ditampilkan sebagai respons terhadap maksud EKSEKUSI dan KUERI hanya digunakan untuk respons ucapan kepada pengguna dan tidak disimpan. Akibatnya, Report State harus dipanggil meskipun status baru perangkat telah ditampilkan sebagai respons terhadap intent EXECUTE atau QUERY.


T: Apa konsekuensi jika tidak menerapkan Report State sepenuhnya dalam batas waktu yang ditentukan?

J: Hal ini akan mengakibatkan penurunan kualitas pengalaman pengguna, misalnya di Google Home app (GHA) dan platform visual. Artinya, banyak intent QUERY akan dikirim untuk melakukan polling status dan kami tidak dapat menjamin apa yang akan sesuai dengan beban tambahan di cloud partner.


T: Bagaimana cara menguji penerapan Status Laporan kami?

J: Gunakan Home Graph Viewer - alat pengujian layanan mandiri yang menampilkan status perangkat saat ini yang disimpan di Home Graph.


T: Dapatkah kami menggunakan requestId acak untuk Report State?

J: Sebaiknya partner menggunakan requestId yang sama dengan yang mereka terima dari permintaan EXECUTE jika Report State dipicu oleh permintaan EXECUTE, atau Anda dapat menggunakan requestId acak.


T: Jika pengguna memiliki beberapa perangkat dan salah satunya berubah statusnya, apakah kita harus melaporkan status terbaru semua perangkat?

J: Tidak. Anda hanya perlu melaporkan status perangkat tertentu tersebut.


Praktik Terbaik

T: Latensi seperti apa yang dapat diterima?

J: Idealnya kurang dari 200 md, antara 2-5 dtk masih dapat diterima. Jika latensi Anda sekitar 5 detik, hubungi kami.


T: Bagaimana cara membuat speaker yang diaktifkan dengan suara merespons dengan benar saat offline?

A: Menampilkan status offline untuk perangkat offline. Kami menampilkan 'tidak tersedia saat ini' sebagai TTS untuk error ini. Untuk mengetahui informasi selengkapnya, lihat Error dan pengecualian.