Sorun giderme

Örnek uygulama

Home API'leri 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ıma ihtiyacınız varsa hem Android cihazlardan hem de merkezden günlükleri toplayın ve Issue Tracker'da ilgili bilgiler ve günlüklerle birlikte bir destek kaydı oluşturun.

Android günlüklerini toplama

adb içeren tüm adımlarda 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 Üzerinden Hata Ayıklama'yı açın.

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 bir dosyaya kaydetme komutlarını göstermek için genişletin

    Blokun tamamı kopyalanıp bir kerede 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 dosyasının 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 gönderilebilir.

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

Android cihaz günlüklerini toplamadan veya hata raporu çalıştırmadan önce günlükçü 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 displaying seconds on the screen
adb -s $phoneid shell settings put secure clock_seconds 1

# 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

Android günlüklerini komut dosyalarıyla 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ı etiketleri 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. 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, işlem çalıştığı sürece cihazınızdan 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 Ctrl+C (veya Mac'te Cmd+C) tuşlarına basarak terminaldeki logcat işlemini durdurun.
  7. Bu oturumun günlükleri android-logs_YYYYMMDDmmss.txt dosyasına kaydedilir. Hata raporlarına hem android-logs_YYYYMMDDmmss.txt hem de _versions.txt ekleyin.

adb bugreport ile Android günlüklerini toplama

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

  • Matter BLE yetkilendirmesi: BLE ile ilgili bir Matter yetkilendirme sorununu bildirirken sorunu yeniden oluşturmadan ö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 aşağıdaki komutu çalıştırarak tam bir hata raporu arşivi oluşturun:
    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ı; tam sistem dökümleri, bellek istatistikleri, pil teşhisleri ve alt düzey alt sistem izleri dahil olmak üzere kapsamlı sistem düzeyinde teşhis verileri içerir. Bu sayede hata ayıklama için daha gelişmiş bilgiler sağlanır.

Cast hub cihaz günlükleri

Aşağıdaki modellerde desteklenen bu yöntemi kullanarak Google Nest Hub'ınızın cihaz günlüklerini görüntüleyebilirsiniz:

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

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

  1. Android Debug Bridge'i kurun.
  2. Merkezinizin IP adresini öğrenme:

    • 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 bulun: Nest Hub (2nd gen) cihazında Cihaz bilgileri > Teknik bilgiler > IP adresi'ne gidin.
    • Telefonunuzda GHA uygulamasından:
      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 bulun: 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. Günlükleri birine göndermek 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 kenar 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şmesini sağlayan bir mantıktır. Cihazın önceki durumunu tekrarlayan durum güncellemelerinde etkinleşmez.

Örneğin, bir ışığın açılması başlatıcıysa kenar algılama, başlatıcının yalnızca ışık cihazı kapalıdan açık duruma geçtiğinde etkinleştiğini doğrular. Açıktan açık duruma geçtiğinde (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 davranmıyorsa:

  1. Her cihazı kontrol ederek otomasyonunuzdan bağımsız olarak düzgün çalıştığından emin olun.

  2. Otomasyonunuzun otomasyon grafiğini inceleyip otomasyon DSL'nizle karşılaştırarak hatalı olabilecek varsayımlarınızı tespit edin.

  3. Otomasyonunuzun yürütülmesi sırasında Google Home uygulamasında cihaz durumunu gözlemleyin.

  4. Otomasyonun referans verdiği tüm cihazların, beklediğiniz yapıda mevcut olduğundan emin olun. Bir otomasyonun bağlı olduğu cihazı silmek istenmeyen sonuçlara yol açabilir. Cihaz silme işleminin otomasyonlar üzerindeki etkisi başlıklı makaleyi inceleyin.

Otomasyon çalışmaması gerektiği halde çalışıyor

Otomasyonunuz çalışmaması gereken bir zamanda çalışıyorsa başlatıcı ölçütlerini inceleyin. Durum değişikliğinin yalnızca bir kez yakalanmasını ve otomasyonu yalnızca bir kez tetiklemesini sağlamak 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 ve 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ğrulanamıyor

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

List işlevi istisna oluşturuyor

Automation API List işlevi çağrılırken okuma işleyiciler, eksik API özellikleri nedeniyle istisnalar oluşturabilir. Bu sorunu gidermek için etkilenen otomasyonu silin.

Bunu yapmak için:

  1. adb uygulamasının yüklü olduğundan emin olun. adb'yi yükleme başlıklı makaleyi inceleyin.
  2. Aşağıdaki komutu çağırarak Android günlüklerinden otomasyonun kimliğini 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 sayfa gezgininizi 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 kayıtsız olduğunda uyarı 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, bu da RelativeHumidityControl değerine karşılık geliyor. Bir kimlikten özellik adını belirlemek için Özellik dizini'ne bakın.

Bu örnekte, RelativeHumidityControl uygulamanın başlatılması sırasında kaydedilmelidir. Özelliğinizi kayıt defterine eklemek için Özellikleri kaydetme bölümüne bakın.

OAuth

Mevcut bir OAuth istemciniz varsa

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

Home API'lerini test etmek ve kullanmak için Google Home Developer Console kaydı gerekli değildir. 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 hususlar geçerlidir:

  • Mevcut bir OAuth istemcisini kullanırken 100 kullanıcı sınırı vardır. Test kullanıcıları ekleme hakkında bilgi içinOAuth kullanıcı rızası ekranını ayarlayın. OAuth doğrulamasından 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. Developer Console kaydı tamamlandığında bu sınırlama kaldırılır.

  • Developer Console registration , uygulamanızı Home API'leri ile güncellemeye hazırlanırken OAuth üzerinden cihaz türü izinlerini kısıtlamaya hazır olduğunuzda onaya gönderilmelidir.

OAuth doğrulaması hâlâ beklemede olan Google Cloud uygulama için kullanıcılar, doğrulama tamamlanana kadar 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.