Ö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:
- Bilgisayarınıza "adb"yi yükleyin.
- Android telefonunuzda Geliştirici Seçenekleri ve USB Üzerinden Hata Ayıklama'yı açın.
Mobil cihaz kimliğini alma
- Mobil cihazınızın kimliğini öğrenme:
adb devicesList of devices attached device-id device
- Bu değeri
phoneidadlı 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.
- Ç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) - Tüm değişkenleri
_versions.txtadlı 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
_versions.txtdosyasının içeriğini doğrulayın:cat _versions.txtBu dosya artık sorun giderme için gerektiğinde Google'a gönderilebilir.Ö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...
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 VERBOSEAndroid günlüklerini komut dosyalarıyla toplama
Hata ayıklama oturumu sırasında canlı Android cihaz günlüklerini yakalamak için:
- 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.
- Mobil cihazda çalışan tüm uygulamaları kapatın.
- Testinizi başlatmadan önce mevcut günlük arabelleği gürültüsünü temizleyin:
adb -s $phoneid logcat -c - Terminal penceresinde günlük toplama işlemini başlatın:
Bu terminal penceresini açık bırakın. Bu işlem, işlem çalıştığı sürece cihazınızdan günlükleri yakalar.adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt - 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.
- İşlem tamamlandığında Ctrl+C (veya Mac'te Cmd+C) tuşlarına basarak terminaldeki
logcatişlemini durdurun. - Bu oturumun günlükleri
android-logs_YYYYMMDDmmss.txtdosyasına kaydedilir. Hata raporlarına hemandroid-logs_YYYYMMDDmmss.txthem de_versions.txtekleyin.
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.zipdosyası; 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:
- Android Debug Bridge'i kurun.
Merkezinizin IP adresini öğrenme:
- Ekranı varsa hub'dan:
- Ekranın üst kısmından aşağı doğru kaydırın.
- Ayarlar simgesine dokunun.
- Cihazın IP adresini bulun: Nest Hub (2nd gen) cihazında Cihaz bilgileri > Teknik bilgiler > IP adresi'ne gidin.
- Telefonunuzda GHA uygulamasından:
- Cihaz ayrıntıları sayfasını açmak için cihaza dokunun.
- Ayarlar sayfasını açmak için Ayarlar simgesine dokunun.
- Cihazın IP adresini bulun: Cihaz bilgileri > Teknik bilgiler > IP adresi'ne gidin.
- Ekranı varsa hub'dan:
Cihazla aynı kablosuz ağa bağlı bir bilgisayarda:
adb connect ip-addressadb logcatGü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:
Her cihazı kontrol ederek otomasyonunuzdan bağımsız olarak düzgün çalıştığından emin olun.
Otomasyonunuzun otomasyon grafiğini inceleyip otomasyon DSL'nizle karşılaştırarak hatalı olabilecek varsayımlarınızı tespit edin.
Otomasyonunuzun yürütülmesi sırasında Google Home uygulamasında cihaz durumunu gözlemleyin.
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:
adbuygulamasının yüklü olduğundan emin olun. adb'yi yükleme başlıklı makaleyi inceleyin.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 | lessOtomasyonun 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.