Aplikasi contoh
Jika Anda mengalami masalah saat menggunakan Home API, Anda dapat mengumpulkan log untuk proses debug lebih lanjut. Pengumpulan log dari perangkat seluler memerlukan Android Debug Bridge (adb
). Jika Anda memerlukan bantuan dari Google, kumpulkan log dari perangkat Android dan hub, lalu buka tiket di pelacak masalah dengan informasi dan log yang relevan terkait masalah tersebut.
Mengumpulkan log Android
Perangkat seluler Anda harus terhubung ke komputer lokal untuk semua langkah yang melibatkan adb
.
Instal adb
Jika belum melakukannya, siapkan Android Debug Bridge di komputer lokal Anda:
- Instal "adb" di komputer Anda.
- Aktifkan Opsi Developer dan Proses Debug USB di ponsel Android Anda.
Plugin Google Home untuk Android Studio
Google Home Plugin for Android Studio adalah alat yang berguna untuk mengumpulkan dan menganalisis log, serta dibuat khusus untuk developer Google Home platform. Plugin ini memberi Anda akses ke Google Assistant Simulator, Cloud Logging, dan alat lainnya untuk menyederhanakan proses pengembangan smart home Anda.
Gunakan alat ini bersama dengan adb
untuk menganalisis lebih lanjut log perangkat Matter.
Untuk mempelajari lebih lanjut dan mendapatkan alat ini, lihat Google Home Plugin for Android Studio.
Informasi versi
Sebaiknya kumpulkan semua informasi versi yang terkait dengan penyiapan Anda setiap kali Anda memutuskan untuk mengumpulkan log. Info ini diperlukan jika Anda perlu membagikan masalah kepada Google.
- Dapatkan ID perangkat seluler Anda:
adb devices
List of devices attached device-id device
- Simpan nilai ini dalam variabel bernama
phoneid
:phoneid=device-id
- Menyimpan berbagai informasi perangkat ke variabel:
containerinfo=$(adb -s $phoneid shell dumpsys package com.google.android.gms | grep "versionName" || true); homemoduleinfo=$(adb -s $phoneid shell dumpsys activity provider com.google.android.gms.chimera.container.GmsModuleProvider | grep "com.google.android.gms.home " || true); optionalhomemoduleinfo=$(adb -s $phoneid shell dumpsys activity provider com.google.android.gms.chimera.container.GmsModuleProvider | grep "com.google.android.gms.optional_home " || true); policyhomemoduleinfo=$(adb -s $phoneid shell dumpsys activity provider com.google.android.gms.chimera.container.GmsModuleProvider | grep "com.google.android.gms.policy_home" || true); threadinfo=$(adb -s $phoneid shell dumpsys activity provider com.google.android.gms.chimera.container.GmsModuleProvider | grep "com.google.android.gms.threadnetwork" || true); ghainfo=$(adb -s $phoneid shell dumpsys package com.google.android.apps.chromecast.app | grep versionName || true); enabledfeatures=$((adb -s $phoneid shell dumpsys activity provider com.google.android.gms.chimera.container.GmsModuleProvider | grep "Enabled features" | grep -i "home") || true); androidversion=$(adb -s $phoneid shell getprop ro.build.version.release || true); androidapiversion=$(adb -s $phoneid shell getprop ro.build.version.sdk || true)
- Simpan semua variabel ke file bernama
_versions.txt
:Luaskan untuk menampilkan perintah guna menyimpan variabel ke file
Seluruh blok dapat disalin dan ditempelkan ke terminal sekaligus.
versionfile=$logtimestamp"_versions.txt" echo "Saving version info to $versionfile"
echo "Container version:" >> $versionfile echo $containerinfo >> $versionfile echo "" >> $versionfile
echo "Home Module version:" >> $versionfile echo $homemoduleinfo >> $versionfile echo "" >> $versionfile
echo "Optional Home Module version:" >> $versionfile echo $optionalhomemoduleinfo >> $versionfile echo "" >> $versionfile
echo "Policy Home Module version:" >> $versionfile echo $policyhomemoduleinfo >> $versionfile echo "" >> $versionfile
echo "Thread Module version:" >> $versionfile echo $threadinfo >> $versionfile echo "" >> $versionfile
echo "GHA version:" >> $versionfile echo $ghainfo >> $versionfile echo "" >> $versionfile
echo "Android version: " >> $versionfile echo $androidversion >> $versionfile echo "" >> $versionfile
echo "Android API version: " >> $versionfile echo $androidapiversion >> $versionfile echo "" >> $versionfile
echo "Found enabled features (blank if missing):" >> $versionfile echo $enabledfeatures >> $versionfile echo "" >> $versionfile
- Verifikasi konten
_versions.txt
:cat _versions.txt
File ini kini dapat diberikan kepada Google sesuai kebutuhan untuk pemecahan masalah.Luaskan untuk menampilkan output file sampel
Container version: versionName=23.19.12 (190400-530524295) versionName=22.46.17 (190408-491726958)
Home Module version: com.google.android.gms.home [v230508900]
Optional Home Module version:
Policy Home Module version: com.google.android.gms.policy_home [230508900] [230508900065.505615668.505615668] [Download:000003be/dl-Home.integ_230508900100400.apk] [download:/Home.integ/230508900100400:Home.integ:230508900100400]
Thread Module version: com.google.android.gms.threadnetwork [v231912000]
GHA version: versionName=3.2.32.1
Android version: 13
Android API version: 33
Found enabled features (blank if missing):
Mengumpulkan log
Untuk mengumpulkan log, tutup semua aplikasi yang berjalan di perangkat seluler. Lalu:
- Buka jendela terminal dan hapus log perangkat yang ada:
adb logcat -b all -c
- Mulai proses pengumpulan log:
Biarkan terminal ini tetap terbuka. Tindakan ini akan mengumpulkan log dari perangkat Anda selama proses berjalan.adb logcat >> _logs.txt
- Jalankan aplikasi contoh dan rekam semua tindakan antarmuka pengguna. Setelah selesai, hentikan proses
logcat
yang berjalan di terminal dengan menekan Ctrl+C (atau Cmd+C di Mac). - Log dari sesi ini disimpan dalam file bernama
_logs.txt
.
Anda dapat menganalisis info di file ini dengan berbagai cara, termasuk menelusuri
kata kunci seperti error
, exception
, atau crash
.
Skrip log
Untuk memudahkan Anda, aplikasi contoh menyediakan skrip untuk mendapatkan log yang relevan dan mengompilasinya ke dalam file teks. Untuk memberikan pengalaman debug terbaik, log ini harus dilampirkan pada bug yang dilaporkan untuk memfasilitasi analisis penyebab masalah oleh Google.
Log ini berada di direktori scripts
di pohon sumber aplikasi contoh.
Jalankan langkah-langkah berikut dari direktori root project:
- Dapatkan ID perangkat seluler Anda:
adb devices -l
List of devices attached device-id device
- Jalankan skrip
get_logs.sh
:./scripts/get_logs.sh device-id
Cleared previous logs from device. Saving version information to home_api_sample_logs_20240605233243.txt... Saving logs to home_api_sample_logs_20240605233243.txt... (Press CTRL+C to stop the script)
- Reproduksi masalah.
- Tekan
CTRL+C
untuk menghentikan skrip.
Skrip akan membuat file log yang diberi stempel waktu dan berisi semua informasi yang relevan. Lampirkan rekaman ini ke laporan bug yang Anda temukan.
Log perangkat hub Cast
Anda dapat melihat log perangkat untuk hub Google Nest menggunakan metode ini, yang didukung untuk model berikut:
- Google Home
- Google Nest Audio
- Google Nest Hub
- Google Nest Mini
Untuk mengaktifkan hub Cast untuk pengambilan log lokal:
- Siapkan Android Debug Bridge.
Mendapatkan alamat IP hub Anda:
- Dari hub, jika memiliki layar:
- Geserkan jari pada layar dari atas ke bawah
- Ketuk ikon Setelan
- Temukan alamat IP perangkat: Di Nest Hub (2nd gen), buka Informasi perangkat > Informasi teknis > Alamat IP
- Dari GHA di ponsel Anda:
- Ketuk perangkat untuk membuka halaman detail perangkat
- Ketuk ikon Setelan untuk membuka halaman setelan
- Temukan alamat IP perangkat: buka Informasi perangkat > Informasi teknis > Alamat IP
- Dari hub, jika memiliki layar:
Di komputer yang berada di jaringan Wi-Fi yang sama dengan perangkat:
adb connect ip-address
adb logcat
Untuk memberikan log kepada seseorang, lakukan operasi yang gagal dan salurkan output ke file teks:
adb logcat -d > platform-logs.txt
Otomatisasi
Deteksi tepi
Otomatisasi dalam ekosistem Google Home memiliki fitur deteksi tepi, yang merupakan logika yang memverifikasi bahwa pemicu hanya diaktifkan saat ada perubahan status yang sebenarnya, bukan update status yang hanya mengulangi status perangkat sebelumnya.
Misalnya, jika menyalakan lampu adalah pemicu, deteksi tepi akan memverifikasi pemicu hanya diaktifkan jika perangkat lampu tersebut berubah dari mati menjadi menyala, bukan dari menyala menjadi menyala (tidak ada perubahan).
Otomatisasi tidak berfungsi seperti yang diharapkan
Setelah memperhitungkan deteksi tepi, jika otomatisasi tidak berperilaku seperti yang diharapkan:
Periksa setiap perangkat untuk memastikan perangkat berfungsi dengan baik secara terpisah dari otomatisasi Anda.
Lihat diagram otomatisasi untuk otomatisasi Anda, bandingkan dengan DSL otomatisasi Anda, untuk mengungkap asumsi yang berpotensi salah di pihak Anda.
Amati status perangkat di aplikasi Google Home selama eksekusi otomatisasi Anda.
Periksa untuk memastikan bahwa semua perangkat yang dirujuk oleh otomatisasi ada dalam struktur yang Anda harapkan. Menghapus perangkat yang menjadi dasar otomatisasi dapat menimbulkan konsekuensi yang tidak diinginkan. Lihat Dampak penghapusan perangkat pada otomatisasi.
Otomatisasi berjalan saat seharusnya tidak
Jika otomatisasi Anda berjalan saat seharusnya tidak berjalan, periksa kriteria pemicu. Anda mungkin perlu menambahkan logika tambahan untuk memastikan bahwa perubahan status hanya dicatat satu kali dan memicu otomatisasi hanya satu kali.
Otomatisasi tidak dikompilasi
Pastikan aplikasi Anda berisi semua impor yang diperlukan, termasuk setiap class yang sesuai dengan berbagai jenis node serta trait yang Anda referensikan.
Pembuatan otomatisasi gagal divalidasi
Jika pembuatan otomatisasi tidak lulus validasi, pesan peringatan atau error akan memberikan informasi tentang masalah tersebut. Untuk mengetahui informasi selengkapnya, lihat
referensi ValidationIssueType
.
Fungsi daftar menampilkan pengecualian
Saat memanggil fungsi Daftar Automation API, handler baca dapat memunculkan pengecualian karena fitur API tidak ada. Untuk memitigasi hal ini, hapus otomatisasi yang terpengaruh.
Untuk melakukannya:
- Periksa untuk memastikan
adb
yang diinstal sudah terinstal. Lihat Menginstal adb. Ambil ID otomatisasi dari log Android dengan memanggil:
adb logcat -s GhpNative
Contoh log:
adb logcat -s GhpNative level:debug | grep -A 10 -B 10 AutomationManagerTrait\.ListResponse INTERACTION RESPONSE -> SendCommandsResponse: 1 { 1: "automation@global" 3 { 1: "home.internal.traits.automation.AutomationManagerTrait.ListResponse" 2: 5 { 1: "type.googleapis.com/home.internal.traits.automation.AutomationManagerTrait.ListResponse" 1 { 1: "1111-2222-3333-44444-55555" // Automation ID to delete 2: "structure@2222-3333-4444-5555-6666" ...
Jika beberapa ID otomatisasi perlu dihapus, Anda dapat menggunakan pager terminal untuk mengontrol output:
adb logcat -s GhpNative level:debug | less
Hapus otomatisasi menggunakan ID otomatisasi:
structure.deleteAutomation(new object : HasId(id = "1111-2222-3333-44444-55555"))
Discovery API mencatat peringatan saat trait dibatalkan pendaftarannya
Jika Discovery API mencatat peringatan untuk Trait not found
, berarti API mencoba menggunakan trait untuk kandidat Penemuan, tetapi tidak akan berhasil karena trait tidak terdaftar selama inisialisasi. Contoh:
09-03 17:45:20.578 10646 10646 W AutomationSdk: trait_id: "home.matter.6006.clusters.fc43" and Exception occurred com.google.home.HomeException: 18: Trait not found: home.matter.6006.clusters.fc43
09-03 17:45:20.578 10646 10646 W AutomationSdk: While converting candidate: # com.google.home.platform.traits.AutomationCandidateNode@76f0b582
ID karakteristiknya adalah home.matter.6006.clusters.fc43
, yang sesuai
dengan RelativeHumidityControl
. Untuk menentukan nama karakteristik dari ID, lihat
Indeks karakteristik.
Dari contoh ini, RelativeHumidityControl
harus didaftarkan selama inisialisasi aplikasi. Lihat Mendaftarkan trait untuk menambahkan trait Anda ke registry.
OAuth
Jika Anda memiliki klien OAuth yang sudah ada
Jika sudah memiliki klien OAuth terverifikasi untuk aplikasi yang dipublikasikan, Anda dapat menggunakan klien OAuth yang ada untuk menguji Home API.
Pendaftaran Google Home Developer Console tidak diperlukan untuk menguji dan menggunakan Home API. Namun, Anda tetap memerlukan pendaftaran Developer Console yang disetujui untuk memublikasikan aplikasi, meskipun Anda memiliki klien OAuth terverifikasi dari integrasi lain.
Pertimbangan berikut berlaku:
Ada batas 100 pengguna saat menggunakan klien OAuth yang sudah ada. Untuk mengetahui informasi tentang cara menambahkan pengguna pengujian, lihat Siapkan layar izin OAuth. Terlepas dari verifikasi OAuth, ada batas 100 pengguna yang dapat memberikan izin ke aplikasi Anda yang ditetapkan oleh Home API. Batasan ini akan dicabut setelah pendaftaran Developer Console selesai.
Developer Console pendaftaran harus dikirim untuk mendapatkan persetujuan saat Anda siap membatasi pemberian jenis perangkat melalui OAuth sebagai persiapan untuk mengupdate aplikasi Anda dengan Home API.
Untuk aplikasi Google Cloud yang masih menunggu verifikasi OAuth, pengguna tidak dapat menyelesaikan alur OAuth hingga verifikasi selesai. Upaya untuk memberikan izin akan gagal dengan error berikut:
Access blocked: <Project Name> has not completed the Google verification process.