Pemecahan masalah

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:

  1. Instal "adb" di komputer Anda.
  2. Aktifkan Opsi Developer dan Proses Debug USB di ponsel Android Anda.

Mendapatkan ID perangkat seluler

  1. Dapatkan ID perangkat seluler Anda:
    adb devices
    List of devices attached
    device-id    device
  2. Simpan nilai ini dalam variabel bernama phoneid:
    phoneid=device-id

Informasi versi

Sebaiknya kumpulkan semua informasi versi yang terkait dengan penyiapan Anda setiap kali Anda memutuskan untuk mengumpulkan log. Hal ini diperlukan jika Anda perlu membagikan masalah kepada Google.

  1. Simpan berbagai informasi perangkat ke variabel:
    containerinfo=$(adb -s $phoneid shell dumpsys package com.google.android.gms | grep -m 1 "versionName" || true); ghainfo=$(adb -s $phoneid shell dumpsys package com.google.android.apps.chromecast.app | grep -m 1 "versionName" || true); androidversion=$(adb -s $phoneid shell getprop ro.build.version.release || true); androidapiversion=$(adb -s $phoneid shell getprop ro.build.version.sdk || true); chimeradump=$(adb -s $phoneid shell dumpsys activity provider com.google.android.gms.chimera.container.GmsModuleProvider || true); homemoduleinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.home" || true); optionalhomemoduleinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.optional_home" || true); threadinfo=$(echo "$chimeradump" | grep -w "com.google.android.gms.threadnetwork" || true); enabledfeatures=$(echo "$chimeradump" | grep "Enabled features" | grep -i "home" | sort -u || true)
  2. 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="_versions.txt"
    echo "Saving version info to $versionfile"
    echo "Container version: $containerinfo" > $versionfile
    echo "Home Module version: $homemoduleinfo" >> $versionfile
    echo "Optional Home Module version: $optionalhomemoduleinfo" >> $versionfile
    echo "Thread Module version: $threadinfo" >> $versionfile
    echo "GHA version: $ghainfo" >> $versionfile
    echo "Android version: $androidversion" >> $versionfile
    echo "Android API version: $androidapiversion" >> $versionfile
    echo "Found enabled features: $enabledfeatures" >> $versionfile
  3. Verifikasi konten _versions.txt:
    cat _versions.txt

    Luaskan untuk menampilkan output file sampel

    Container version:     versionName=26.26.34 (190400-945364269)
    Home Module version:             com.google.android.gms.home [v262634001]
    Optional Home Module version:         com.google.android.gms.optional_home [262634025] ...
    Thread Module version:             com.google.android.gms.threadnetwork [v262634001]
    GHA version:     versionName=4.22.28.0
    Android version: 14
    Android API version: 34
    Found enabled features:             Enabled features: appsearch_impl, brella_dynamite, dck_management...
    File ini kini dapat diberikan kepada Google sesuai kebutuhan untuk pemecahan masalah.

Mengaktifkan tanda proses debug panjang

Sebelum mengumpulkan log perangkat Android atau menjalankan laporan bug, konfigurasi ukuran buffer logger dan aktifkan tag debug verbose untuk komponen Google Home dan GMS:

# Clear existing device logs and expand logger buffer size
adb -s $phoneid logcat -b all -c
adb -s $phoneid logcat -G 8M

# Enable GMS Service ID verbose flags
adb -s $phoneid shell setprop log.tag.gms_svc_id:168 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:304 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:305 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:319 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:336 VERBOSE
adb -s $phoneid shell setprop log.tag.gms_svc_id:360 VERBOSE

# Enable GHP and Matter log tags
adb -s $phoneid shell setprop log.tag.CameraCommissioningPlugin VERBOSE
adb -s $phoneid shell setprop log.tag.HomeSdk VERBOSE
adb -s $phoneid shell setprop log.tag.HomeClient VERBOSE
adb -s $phoneid shell setprop log.tag.InteractionApiChimeraService VERBOSE
adb -s $phoneid shell setprop log.tag.MatterCommissioner VERBOSE
adb -s $phoneid shell setprop log.tag.SampleApp VERBOSE

Mengumpulkan log Android dengan skrip

Untuk merekam log perangkat Android aktif selama sesi penelusuran bug:

  1. Ikuti petunjuk di Aktifkan tanda proses debug panjang untuk menghapus log yang ada, memperluas ukuran buffer, dan menetapkan tag pencatatan log panjang.
  2. Tutup semua aplikasi yang berjalan di perangkat seluler.
  3. Hapus gangguan buffer log yang ada sebelum memulai pengujian:
    adb -s $phoneid logcat -c
  4. Mulai proses pengumpulan log di jendela terminal:
    adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt
    Biarkan jendela terminal ini tetap terbuka. Tindakan ini akan merekam log dari perangkat Anda selama proses berjalan.
  5. Jalankan aplikasi Anda dan lakukan semua tindakan antarmuka pengguna yang diperlukan untuk mereproduksi masalah.
  6. Setelah selesai, hentikan proses logcat di terminal dengan menekan Ctrl+C (atau Cmd+C di Mac).
  7. Log dari sesi ini disimpan di android-logs_YYYYMMDDmmss.txt. Lampirkan android-logs_YYYYMMDDmmss.txt dan _versions.txt ke laporan bug.

Mengumpulkan log Android dengan laporan bug adb

Merekam laporan bug Android lengkap saat Anda perlu membagikan informasi diagnostik mendetail yang mencakup masalah tingkat sistem, dump error, atau proses debug jaringan dan Bluetooth tingkat rendah:

  • Penyiapan BLE Matter: Saat melaporkan masalah penyiapan Matter terkait BLE, aktifkan log pengintaian HCI Bluetooth di Opsi developer (Setelan > Opsi developer > Aktifkan log pengintaian HCI Bluetooth) sebelum mereproduksi masalah.
  • Penyiapan Pra-pengujian: Sebelum menjalankan pengujian, ikuti langkah-langkah di Mengaktifkan tanda proses debug panjang untuk mengaktifkan properti proses debug panjang di perangkat Anda.
  • Merekam Laporan Bug: Setelah menjalankan pengujian dan mereproduksi masalah, jalankan perintah berikut untuk membuat arsip laporan bug lengkap:
    adb -s $phoneid bugreport ./android-bugreport_$(date +%Y%m%d%H%M%S).zip
  • Informasi Debugging Lanjutan: File android-bugreport_YYYYMMDDmmss.zip yang dihasilkan berisi data diagnostik tingkat sistem yang komprehensif—termasuk dump sistem lengkap, statistik memori, diagnostik baterai, dan rekaman aktivitas subsistem tingkat rendah—yang memberikan informasi lebih lanjut untuk proses debugging.

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:

  1. Siapkan Android Debug Bridge.
  2. Mendapatkan alamat IP hub Anda:

    • Dari hub, jika memiliki layar:
      1. Geserkan jari pada layar dari atas ke bawah
      2. Ketuk ikon Setelan
      3. Temukan alamat IP perangkat: Di Nest Hub (2nd gen), buka Informasi perangkat > Informasi teknis > Alamat IP
    • Dari GHA di ponsel Anda:
      1. Ketuk perangkat untuk membuka halaman detail perangkat
      2. Ketuk ikon Setelan untuk membuka halaman setelan
      3. Temukan alamat IP perangkat: buka Informasi perangkat > Informasi teknis > Alamat IP
  3. Di komputer yang berada di jaringan Wi-Fi yang sama dengan perangkat:

      adb connect ip-address
      adb logcat
    

  4. 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 di 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 berfungsi seperti yang diharapkan:

  1. Periksa setiap perangkat untuk memastikan perangkat berfungsi dengan baik secara terpisah dari otomatisasi Anda.

  2. Lihat diagram otomatisasi untuk otomatisasi Anda, bandingkan dengan DSL otomatisasi Anda, untuk mengetahui asumsi yang mungkin salah di pihak Anda.

  3. Amati status perangkat di aplikasi Google Home selama eksekusi otomatisasi Anda.

  4. 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 berjalan

Jika otomatisasi Anda berjalan saat seharusnya tidak, 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 karakteristik 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:

  1. Periksa untuk memastikan adb yang diinstal sudah terinstal. Lihat Instal adb.
  2. 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
  3. 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 sifat untuk kandidat Penemuan, tetapi tidak akan berhasil karena sifat tersebut 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.