Sorun giderme

Örnek uygulama

Home API'lerini kullanırken sorun yaşarsanız daha ayrıntılı hata ayıklama için günlükleri toplayabilirsiniz. Mobil cihazdan günlük toplamak için Android Debug Bridge (adb) gerekir. Google'dan yardım almanız gerekiyorsa hem Android cihazlardan hem de hub'dan günlükleri toplayın ve sorun izleyicide ilgili bilgilerle birlikte bu bilgilerle ilişkili günlükleri içeren bir bilet açın.

Android günlüklerini toplama

adb ile ilgili tüm adımlar için mobil cihazınızın yerel makinenize bağlı olması gerekir.

adb'yi yükleme

Henüz yapmadıysanız yerel makinenizde Android Debug Bridge'i kurun:

  1. Bilgisayarınıza "adb"yi yükleyin.
  2. Android telefonunuzda Geliştirici Seçenekleri ve USB hata ayıklama'yı etkinleştirin.

Mobil cihaz kimliğini alma

  1. Mobil cihazınızın kimliğini öğrenme:
    adb devices
    List of devices attached
    device-id    device
  2. Bu değeri phoneid adlı bir değişkende saklayın:
    phoneid=device-id

Sürüm bilgileri

Günlükleri toplamaya karar verdiğinizde kurulumunuzla ilgili tüm sürüm bilgilerini toplamanızı öneririz. Sorunları Google ile paylaşmanız gerekiyorsa bu işlem zorunludur.

  1. Çeşitli cihaz bilgilerini değişkenlere kaydetme:
    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. Tüm değişkenleri _versions.txt adlı bir dosyaya kaydedin:

    Değişkenleri dosyaya kaydetme komutlarını göstermek için genişletin.

    Bloğun tamamı kopyalanıp tek seferde bir terminale yapıştırılabilir.

    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. _versions.txt içeriğini doğrulayın:
    cat _versions.txt

    Örnek dosya çıkışını göstermek için genişletin

    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...
    Bu dosya artık sorun giderme için gerektiğinde Google'a sağlanabilir.

Ayrıntılı hata ayıklama işaretlerini etkinleştirme

Android cihaz günlüklerini toplamadan veya hata raporu çalıştırmadan önce kaydedici arabellek boyutunu yapılandırın ve Google Home ile GMS bileşenleri için ayrıntılı hata ayıklama etiketlerini etkinleştirin:

# 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

Komut dosyalarıyla Android günlüklerini toplama

Hata ayıklama oturumu sırasında canlı Android cihaz günlüklerini yakalamak için:

  1. Mevcut günlükleri temizlemek, arabellek boyutunu genişletmek ve ayrıntılı günlük kaydı etiketlerini ayarlamak için Ayrıntılı hata ayıklama işaretlerini etkinleştirme bölümündeki talimatları uygulayın.
  2. Mobil cihazda çalışan tüm uygulamaları kapatın.
  3. Testinizi başlatmadan önce mevcut günlük arabelleği gürültüsünü temizleyin:
    adb -s $phoneid logcat -c
  4. Bir terminal penceresinde günlük toplama işlemini başlatın:
    adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt
    Bu terminal penceresini açık bırakın. Bu işlem, süreç çalıştığı sürece cihazınızdaki günlükleri yakalar.
  5. Uygulamanızı çalıştırın ve sorunu yeniden oluşturmak için gereken tüm kullanıcı arayüzü işlemlerini gerçekleştirin.
  6. İşlem tamamlandığında terminalde Ctrl+C (veya Mac'te Cmd+C) tuşlarına basarak logcat işlemini durdurun.
  7. Bu oturumdaki günlükler android-logs_YYYYMMDDmmss.txt dosyasına kaydedilir. android-logs_YYYYMMDDmmss.txt ve _versions.txt dosyalarını hata raporlarına ekleyin.

adb bugreport ile Android günlüklerini toplama

Sistem düzeyindeki sorunları, kilitlenme dökümlerini veya düşük düzeyli ağ ve Bluetooth hata ayıklamayı kapsayan ayrıntılı teşhis bilgilerini paylaşmanız gerektiğinde tam bir Android hata raporu alın:

  • Matter BLE devreye alma: BLE ile ilgili bir Matter devreye alma sorunu bildirirken sorunu yeniden üretmeden önce Geliştirici Seçenekleri'nde (Ayarlar > Geliştirici seçenekleri > Bluetooth HCI araştırma günlüğünü etkinleştir) Bluetooth HCI araştırma günlüğünü etkinleştirin.
  • Test Öncesi Kurulum: Testinizi çalıştırmadan önce, cihazınızda ayrıntılı hata ayıklama özelliklerini etkinleştirmek için Ayrıntılı hata ayıklama işaretlerini etkinleştirme bölümündeki adımları uygulayın.
  • Hata raporu alma: Testinizi çalıştırıp sorunu yeniden oluşturduktan sonra tam bir hata raporu arşivi oluşturmak için aşağıdaki komutu çalıştırın:
    adb -s $phoneid bugreport ./android-bugreport_$(date +%Y%m%d%H%M%S).zip
  • Gelişmiş hata ayıklama bilgileri: Oluşturulan android-bugreport_YYYYMMDDmmss.zip dosyası, hata ayıklama için daha gelişmiş bilgiler sağlayan kapsamlı sistem düzeyinde teşhis verileri (tam sistem dökümleri, bellek istatistikleri, pil teşhisleri ve düşük düzeyli alt sistem izleri dahil) içerir.

Yayın merkezi cihaz günlükleri

Bu yöntemi kullanarak Google Nest Hub'ınızın cihaz günlüklerini görüntüleyebilirsiniz. Bu yöntem aşağıdaki modellerde desteklenir:

  • Google Home
  • Google Nest Audio
  • Google Nest Hub
  • Google Nest Mini

Yerel günlükleri almak için bir Cast hub'ı etkinleştirmek üzere:

  1. Android Debug Bridge'i kurun.
  2. Hub'ınızın IP adresini öğrenin:

    • Ekranı varsa hub'dan:
      1. Ekranın üst kısmından aşağı doğru kaydırın.
      2. Ayarlar simgesine dokunun.
      3. Cihazın IP adresini bulma: Nest Hub (2nd gen) cihazda Cihaz bilgileri > Teknik bilgiler > IP adresi'ne gidin.
    • Telefonunuzdaki GHA simgesinden:
      1. Cihaz ayrıntıları sayfasını açmak için cihaza dokunun.
      2. Ayarlar sayfasını açmak için Ayarlar simgesine dokunun.
      3. Cihazın IP adresini bulmak için Cihaz bilgileri > Teknik bilgiler > IP adresi'ne gidin.
  3. Cihazla aynı kablosuz ağa bağlı bir bilgisayarda:

      adb connect ip-address
      adb logcat
    

  4. Bir kullanıcıya günlük sağlamak için başarısız olan işlemi gerçekleştirin ve çıkışı bir metin dosyasına yönlendirin:

      adb logcat -d > platform-logs.txt
    

Otomasyonlar

Kenar algılama

Google Home ekosistemindeki otomasyonlarda sınır algılama özelliği bulunur. Bu özellik, başlatıcının yalnızca gerçek bir durum değişikliği olduğunda etkinleştiğini doğrulayan bir mantıktır. Cihazın önceki durumunu tekrarlayan bir durum güncellemesi olduğunda etkinleşmez.

Örneğin, bir ışığı açmak başlangıç ise kenar algılama, başlangıcın yalnızca ışık cihazı kapalıdan açığa geçtiğinde etkinleştiğini doğrular. Açıkken açığa geçişte (değişiklik yok) etkinleşmez.

Otomasyon beklendiği gibi çalışmıyor

Kenar algılama hesaba katıldıktan sonra bir otomasyon beklendiği gibi çalışmıyorsa:

  1. Her cihazın otomasyonunuzdan bağımsız olarak düzgün şekilde çalıştığından emin olmak için cihazları kontrol edin.

  2. Otomasyonunuzun otomasyon grafiğini inceleyerek otomasyon DSL'nizle karşılaştırın. Böylece, sizin tarafınızdan yapılan olası yanlış varsayımları ortaya çıkarabilirsiniz.

  3. Otomasyonunuz çalışırken Google Home uygulamasında cihazın durumunu gözlemleyin.

  4. Otomasyon tarafından referans verilen tüm cihazların, olmasını beklediğiniz yapıda bulunduğundan emin olun. Bir otomasyonun bağlı olduğu cihazın silinmesi istenmeyen sonuçlara yol açabilir. Cihaz silme işleminin otomasyonlar üzerindeki etkisi başlıklı makaleyi inceleyin.

Otomasyon, çalışmaması gereken zamanlarda çalışıyor

Otomasyonunuz gerekmediği zaman çalışıyorsa başlatıcı ölçütleri inceleyin. Durum değişikliğinin yalnızca bir kez yakalandığından ve otomasyonu yalnızca bir kez tetiklediğinden emin olmak için ek mantık eklemek gerekebilir.

Otomasyon derlenmiyor

Uygulamanızın, farklı düğüm türlerine karşılık gelen her sınıfın yanı sıra referans verdiğiniz özellikler de dahil olmak üzere gerekli tüm içe aktarma işlemlerini içerdiğinden emin olun.

Otomasyon oluşturma işlemi doğrulamayı geçemiyor

Otomasyon oluşturma işlemi doğrulamadan geçmezse bir uyarı veya hata mesajı sorun hakkında bilgi verir. Daha fazla bilgi için ValidationIssueType referansına bakın.

Liste işlevi istisnalar oluşturuyor

Automation API List işlevi çağrıldığında, okuma işleyicileri eksik API özellikleri nedeniyle istisna oluşturabilir. Bu sorunu azaltmak için etkilenen otomasyonu silin.

Bunu yapmak için:

  1. adb yüklü olduğundan emin olun. adb'yi yükleme başlıklı makaleyi inceleyin.
  2. Aşağıdaki komutu çağırarak otomasyonun kimliğini Android günlüklerinden alın:

    adb logcat -s GhpNative

    Örnek günlükler:

    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"
    ...

    Birden fazla otomasyon kimliğinin silinmesi gerekiyorsa çıkışı kontrol etmek için terminal sayfalayıcınızı kullanabilirsiniz:

    adb logcat -s GhpNative level:debug | less
  3. Otomasyonun kimliğini kullanarak otomasyonu silin:

    structure.deleteAutomation(new object : HasId(id = "1111-2222-3333-44444-55555"))
    

Discovery API, bir özellik kaydı silindiğinde uyarı günlüğe kaydeder

Discovery API, Trait not found için bir uyarı günlüğe kaydederse bu, API'nin Discovery adayları için özelliği kullanmaya çalıştığı ancak özellik başlatma sırasında kaydedilmediği için başarılı olamayacağı anlamına gelir. Örneğin:

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

Özellik tanımlayıcısı home.matter.6006.clusters.fc43 olup RelativeHumidityControl ile eşleşir. Bir kimlikten özellik adını belirlemek için Özellik dizinine bakın.

Bu örnekte, RelativeHumidityControl uygulamanın başlatılması sırasında kaydedilmelidir. Trait'inizi kayıt otoritesine eklemek için Trait'leri kaydetme başlıklı makaleyi inceleyin.

OAuth

Mevcut bir OAuth istemciniz varsa

Yayınlanmış bir uygulama için doğrulanmış bir OAuth istemciniz varsa Home API'lerini test etmek için mevcut OAuth istemcinizi kullanabilirsiniz.

Home API'lerini test etmek ve kullanmak için Google Home Developer Console kaydı gerekmez. Ancak, başka bir entegrasyondan doğrulanmış bir OAuth istemciniz olsa bile uygulamanızı yayınlamak için onaylanmış bir Developer Console kaydınızın olması gerekir.

Aşağıdaki noktaları göz önünde bulundurun:

  • Mevcut bir OAuth istemcisi kullanılırken 100 kullanıcı sınırı vardır. Test kullanıcısı ekleme hakkında bilgi edinmek içinOAuth izin ekranını ayarlayın. OAuth doğrulamadan bağımsız olarak, Home API'leri tarafından uygulamanıza izin verebilecek kullanıcı sayısı 100 ile sınırlandırılmıştır. Bu sınırlama, Developer Console kaydı tamamlandığında kaldırılır.

  • Developer Console kaydı , uygulamanızı Home API'leriyle güncellemeye hazırlanırken cihaz türü izinlerini OAuth üzerinden kısıtlamaya hazır olduğunuzda onay için gönderilmelidir.

OAuth doğrulaması bekleyen Google Cloud uygulamalarda, doğrulama tamamlanana kadar kullanıcılar OAuth akışını tamamlayamaz. İzin verme girişimleri aşağıdaki hatayla başarısız olur:

Access blocked: <Project Name> has not completed the Google verification process.