Beispiel-App
Wenn bei der Verwendung der Home APIs Probleme auftreten, können Sie Protokolle zur weiteren Fehlerbehebung erfassen. Zum Erfassen von Logs vom Mobilgerät ist die Android Debug Bridge (adb) erforderlich. Wenn Sie Unterstützung von Google benötigen, erfassen Sie die Logs von den Android-Geräten und vom Hub und erstellen Sie im Issue Tracker ein Ticket mit den entsprechenden Informationen und Logs.
Android-Logs erfassen
Ihr Mobilgerät muss für alle Schritte, die adb betreffen, mit Ihrem lokalen Computer verbunden sein.
adb installieren
Wenn Sie Android Debug Bridge noch nicht eingerichtet haben, gehen Sie so vor:
- Installieren Sie „adb“ auf Ihrem Computer.
- Entwickleroptionen und USB-Debugging aktivieren auf Ihrem Android-Smartphone.
Mobilgeräte-ID abrufen
- So rufen Sie die ID Ihres Mobilgeräts ab:
adb devicesList of devices attached device-id device
- Speichern Sie diesen Wert in einer Variablen namens
phoneid:phoneid=device-id
Versionsinformationen
Wir empfehlen, alle Versionsinformationen zu Ihrer Einrichtung zu erfassen, wenn Sie sich entscheiden, Protokolle zu sammeln. Dies ist erforderlich, wenn Sie Probleme mit Google teilen müssen.
- Verschiedene Geräteinformationen in Variablen speichern:
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) - Speichern Sie alle Variablen in einer Datei mit dem Namen
_versions.txt:Erweitern, um Befehle zum Speichern von Variablen in einer Datei anzuzeigen
Der gesamte Block kann kopiert und in ein Terminal eingefügt werden.
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
- Prüfen Sie den Inhalt von
_versions.txt:cat _versions.txtDiese Datei kann jetzt bei Bedarf zur Fehlerbehebung an Google gesendet werden.Maximieren, um die Ausgabe der Beispieldatei anzuzeigen
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...
Ausführliche Debugging-Flags aktivieren
Bevor Sie Android-Gerätelogs erfassen oder einen Fehlerbericht erstellen, konfigurieren Sie die Größe des Logger-Puffers und aktivieren Sie ausführliche Debugging-Tags für Google Home- und GMS-Komponenten:
# 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 VERBOSEAndroid-Logs mit Skripts erfassen
So erfassen Sie Live-Android-Gerätelogs während einer Debugging-Sitzung:
- Folgen Sie der Anleitung unter Ausführliche Debugging-Flags aktivieren, um vorhandene Logs zu löschen, die Puffergröße zu maximieren und ausführliche Logging-Tags festzulegen.
- Schließen Sie alle auf dem Mobilgerät ausgeführten Anwendungen.
- Entfernen Sie vorhandene Störungen im Logpuffer, bevor Sie mit dem Test beginnen:
adb -s $phoneid logcat -c - Starten Sie das Erfassen von Logs in einem Terminalfenster:
Lassen Sie dieses Terminalfenster geöffnet. Dadurch werden Logs von Ihrem Gerät erfasst, solange der Prozess läuft.adb -s $phoneid logcat | tee android-logs_$(date +%Y%m%d%H%M%S).txt - Führen Sie Ihre App aus und führen Sie alle Benutzeroberflächenaktionen aus, die zum Reproduzieren des Problems erforderlich sind.
- Wenn Sie fertig sind, beenden Sie den
logcat-Prozess im Terminal, indem Sie Strg+C (oder Cmd+C auf dem Mac) drücken. - Protokolle aus dieser Sitzung werden in
android-logs_YYYYMMDDmmss.txtgespeichert. Hängen Sie beide Dateien (android-logs_YYYYMMDDmmss.txtund_versions.txt) an alle Fehlerberichte an.
Android-Logs mit „adb bugreport“ erfassen
Erstellen Sie einen vollständigen Android-Fehlerbericht, wenn Sie detaillierte Diagnoseinformationen zu Problemen auf Systemebene, Absturzberichte oder Low-Level-Debugging für Netzwerk und Bluetooth teilen möchten:
- Matter-Inbetriebnahme über BLE:Wenn du ein Problem bei der Matter-Inbetriebnahme über BLE meldest, aktiviere vor dem Reproduzieren des Problems das Bluetooth HCI-Snoop-Protokoll in den Entwickleroptionen (Einstellungen > Entwickleroptionen > Bluetooth HCI-Snoop-Protokoll aktivieren).
- Einrichtung für den Pre-Test:Bevor Sie den Test ausführen, folgen Sie der Anleitung unter Ausführliche Debugging-Flags aktivieren, um die ausführlichen Debugging-Properties auf Ihrem Gerät zu aktivieren.
- Fehlerbericht erfassen:Nachdem Sie den Test ausgeführt und das Problem reproduziert haben, führen Sie den folgenden Befehl aus, um ein vollständiges Fehlerberichtarchiv zu generieren:
adb -s $phoneid bugreport ./android-bugreport_$(date +%Y%m%d%H%M%S).zip - Erweiterte Debugging-Informationen:Die generierte
android-bugreport_YYYYMMDDmmss.zip-Datei enthält umfassende Diagnosedaten auf Systemebene, darunter vollständige Systemdumps, Speicherstatistiken, Akkudiagnosen und Subsystem-Traces auf niedriger Ebene. So erhalten Sie erweiterte Informationen für das Debugging.
Protokolle von Hub-Geräten für die Übertragung
Mit dieser Methode können Sie sich Gerätelogs für Ihren Google Nest Hub ansehen. Sie wird für die folgenden Modelle unterstützt:
- Google Home
- Google Nest Audio
- Google Nest Hub
- Google Nest Mini
So aktivieren Sie einen Cast-Hub für den Abruf lokaler Logs:
- Android Debug Bridge einrichten
Rufen Sie die IP-Adresse Ihres Hubs ab:
- Über den Hub, sofern er ein Display hat:
- Wischen Sie vom oberen Displayrand nach unten.
- Tippe auf das Symbol für die Einstellungen .
- IP-Adresse des Geräts finden: Gehe auf einem Nest Hub (2nd gen) zu Geräteinformationen > Technische Informationen > IP-Adresse.
- Auf Ihrem Smartphone in GHA:
- Tippen Sie auf das Gerät, um die Seite mit den Gerätedetails aufzurufen.
- Tippe auf das Symbol für die Einstellungen , um die Seite mit den Einstellungen aufzurufen.
- IP-Adresse des Geräts finden: Gehe zu Geräteinformationen > Technische Informationen > IP-Adresse.
- Über den Hub, sofern er ein Display hat:
Auf einem Computer, der sich im selben WLAN wie das Gerät befindet:
adb connect ip-addressadb logcatWenn Sie jemandem Logs zur Verfügung stellen möchten, führen Sie den fehlgeschlagenen Vorgang aus und leiten Sie die Ausgabe in eine Textdatei um:
adb logcat -d > platform-logs.txt
Automatisierungen
Kantenerkennung
Automatisierte Abläufe im Google Home-Ökosystem umfassen die Edge-Erkennung. Dabei handelt es sich um eine Logik, die dafür sorgt, dass ein Auslöser nur dann aktiviert wird, wenn sich der Status tatsächlich ändert, und nicht bei einer Statusaktualisierung, bei der der vorherige Status des Geräts wiederholt wird.
Wenn das Einschalten einer Lampe beispielsweise ein Starter ist, wird durch die Kantenerkennung überprüft, ob der Starter nur aktiviert wird, wenn das entsprechende Gerät von „Aus“ zu „Ein“ wechselt und nicht von „Ein“ zu „Ein“ (keine Änderung).
Automatisierung funktioniert nicht wie erwartet
Wenn sich ein automatisierter Ablauf nach der Berücksichtigung der Kantenerkennung nicht wie erwartet verhält, gehen Sie so vor:
Prüfe jedes Gerät, um sicherzustellen, dass es unabhängig von deiner Automatisierung richtig funktioniert.
Sehen Sie sich das Automatisierungsdiagramm für Ihre Automatisierung an und vergleichen Sie es mit Ihrer Automatisierungs-DSL, um potenzielle falsche Annahmen Ihrerseits aufzudecken.
Beobachten Sie den Gerätestatus in der Google Home App während der Ausführung Ihres automatisierten Ablaufs.
Prüfe, ob alle Geräte, auf die sich die Automatisierung bezieht, in dem Gebäude vorhanden sind, in dem du sie erwartest. Das Löschen eines Geräts, von dem eine Automatisierung abhängt, kann unbeabsichtigte Folgen haben. Weitere Informationen finden Sie unter Auswirkungen des Löschens von Geräten auf Automatisierungen.
Automatisierung wird ausgeführt, wenn sie nicht ausgeführt werden sollte
Wenn Ihre Automatisierung ausgeführt wird, obwohl sie es nicht sollte, prüfen Sie die Auslöserkriterien. Möglicherweise müssen Sie zusätzliche Logik hinzufügen, damit eine Zustandsänderung nur einmal erfasst wird und die Automatisierung nur einmal ausgelöst wird.
Automatisierung wird nicht kompiliert
Achten Sie darauf, dass Ihre App alle erforderlichen Importe enthält, einschließlich jeder Klasse, die den verschiedenen Knotentypen entspricht, sowie der Traits, auf die Sie verweisen.
Automatisierung kann aufgrund von Validierungsfehlern nicht erstellt werden
Wenn die Automatisierungserstellung die Validierung nicht besteht, wird eine Warnung oder Fehlermeldung mit Informationen zum Problem angezeigt. Weitere Informationen finden Sie in der Referenz zu ValidationIssueType.
Die Listenfunktion löst Ausnahmen aus
Beim Aufrufen der Automation API-Listenfunktion können Lese-Handler aufgrund fehlender API-Funktionen Ausnahmen auslösen. Um dieses Problem zu beheben, löschen Sie die betroffene Automatisierung.
Gehen Sie dazu so vor:
- Prüfen Sie, ob
adbinstalliert ist. Weitere Informationen finden Sie unter adb installieren. Rufen Sie die ID der Automatisierung aus den Android-Logs ab, indem Sie Folgendes aufrufen:
adb logcat -s GhpNativeBeispiellogs:
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" ...Wenn mehrere Automatisierungs-IDs gelöscht werden müssen, können Sie die Ausgabe mit Ihrem Terminal-Pager steuern:
adb logcat -s GhpNative level:debug | lessLöschen Sie die Automatisierung anhand ihrer ID:
structure.deleteAutomation(new object : HasId(id = "1111-2222-3333-44444-55555"))
Die Discovery API protokolliert eine Warnung, wenn ein Merkmal nicht registriert ist
Wenn die Discovery API eine Warnung für Trait not found protokolliert, bedeutet das, dass die API versucht, das Attribut für Discovery-Kandidaten zu verwenden. Das funktioniert jedoch nicht, da das Attribut während der Initialisierung nicht registriert wurde. Beispiel:
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
Die Attribut-ID ist home.matter.6006.clusters.fc43, was RelativeHumidityControl entspricht. Informationen zum Ermitteln des Attributnamens anhand einer ID finden Sie im Attributindex.
In diesem Beispiel muss RelativeHumidityControl bei der Initialisierung der App registriert werden. Informationen zum Hinzufügen Ihres Traits zur Registrierung finden Sie hier.
OAuth
Wenn Sie einen vorhandenen OAuth-Client haben
Wenn Sie bereits einen bestätigten OAuth-Client für eine veröffentlichte App haben, können Sie ihn zum Testen der Home APIs verwenden.
Die Registrierung von Google Home Developer Console ist nicht erforderlich, um die Home-APIs zu testen und zu verwenden. Sie benötigen jedoch weiterhin eine genehmigte Developer Console-Registrierung, um Ihre App zu veröffentlichen, auch wenn Sie einen bestätigten OAuth-Client aus einer anderen Integration haben.
Dabei gilt Folgendes:
Wenn Sie einen vorhandenen OAuth-Client verwenden, gilt eine Beschränkung von 100 Nutzern. Informationen zum Hinzufügen von Testnutzern finden Sie unterOAuth-Zustimmungsbildschirm einrichten Unabhängig von der OAuth-Überprüfung gilt für die Home-APIs ein Limit von 100 Nutzern, die Ihrer Anwendung Berechtigungen erteilen können. Diese Einschränkung wird aufgehoben, sobald die Registrierung für Developer Console abgeschlossen ist.
DieDeveloper ConsoleRegistrierung sollte zur Genehmigung gesendet werden, wenn Sie bereit sind, die Gewährung von Gerätetypen über OAuth einzuschränken, um Ihre App mit den Home-APIs zu aktualisieren.
Bei Google Cloud-Apps, bei denen die OAuth-Prüfung noch aussteht, können Nutzer den OAuth-Ablauf erst abschließen, wenn die Prüfung abgeschlossen ist. Versuche, Berechtigungen zu erteilen, schlagen mit folgendem Fehler fehl:
Access blocked: <Project Name> has not completed the Google verification process.