Diese Dashboards und Benachrichtigungen helfen Ihnen, proaktiv eine hochwertige Integration in das Google Home-Ökosystem aufrechtzuerhalten. Google unterstützt Partner bei der Entwicklung eines hochwertigen Ökosystems für alle Kunden.
Das Dashboard enthält drei Abschnitte, die jeweils einen wichtigen Aspekt abdecken, der zur Qualität einer Integration beiträgt.
Messwerte für die Zusammenarbeit zwischen Google und Partnern: Hier wird der Zustand von Aufrufen von Google an Ihr Cloud-Backend gemessen.
System Health - Partner to Google Metrics (Systemstatus – Partner-zu-Google-Messwerte): Hier wird der Status von Aufrufen von Ihrem System an Google gemessen.
Gerätezustand – Genauigkeit des Status: Misst die Genauigkeit der in Google-Systemen gespeicherten Status, die zur Bearbeitung von Nutzeranfragen verwendet werden.
Wenn Messwerte ihre Zielwerte nicht erreichen, werden sie rot hervorgehoben, um auf ein Problem hinzuweisen, das sich auf die Nutzerfreundlichkeit auswirken könnte. Die folgenden Informationen enthalten Details zu den einzelnen Zielen und dazu, warum sie für Ihre Nutzer wichtig sind.
Wenn Sie über die folgende Schaltfläche nicht direkt zum Dashboard gelangen, können Sie es aufrufen, indem Sie die Seite Übersicht auswählen, dann Dashboards und in der Liste Meine Dashboards das Google Home-Vitals-Dashboard (Cloud) auswählen.
Messwerte von Google an Partner
Mit der Messwert Erfolgsrate bei Anfragen/Ausführungen >= 99,5% wird gemessen, wie oft Nutzerbefehle korrekt ausgeführt werden.So werden Assistant-Antworten wie „Ich kann das Gerät nicht erreichen“ oder fälschlicherweise bestätigte Befehle, die nicht ausgeführt wurden, vermieden.
Was definiert einen „Erfolg“?
Eine Transaktion wird als erfolgreich markiert, wenn die Google Home-Plattform eine gültige Antwort erhält, die angibt, dass die beabsichtigte Aktion ausgeführt oder der angeforderte Status abgerufen wurde.
Antworten, die nicht blockierende Ausnahmen enthalten (z. B. ein SUCCESS-Status in Verbindung mit einer lowBattery-Ausnahme), werden als erfolgreiche Transaktionen gezählt.
Der Befehl wurde vom Gerät empfangen und der Intent wurde trotz der Warnung ausgeführt.
Was ist ein „Fehler“?
Die Fehler, die unter Gängige Plattformfehlercodes aufgeführt sind und als Partner Actionable gekennzeichnet sind, werden bei der Berechnung der Erfolgsraten für QUERY und EXECUTE als „Fehler“ betrachtet. Außerdem sind die Fehler, die unter Fehler und Ausnahmen gefunden werden, ebenfalls „Fehler“, mit den folgenden Ausnahmen:
| Fehlerausnahmen | ||
|---|---|---|
| aboveMaximumLightEffectsDuration | armLevelNeeded | inOffMode |
| alreadyArmed | bagFull | lockedToRange |
| alreadyAtMax | belowMinimumLightEffectsDuration | lowBattery |
| alreadyAtMin | binFull | maxSpeedReached |
| alreadyClosed | cancelArmingRestricted | minSpeedReached |
| alreadyDisarmed | deadBattery | notSupported |
| alreadyDocked | degreesOutOfRange | Offline |
| alreadyInState | deviceJammingDetected | percentOutOfRange |
| alreadyLocked | deviceNotMounted | rangeTooClose |
| alreadyOff | deviceNotReady | relinkRequired |
| alreadyOn | deviceOffline | remoteSetDisabled |
| alreadyOpen | deviceTurnedOff | safetyShutOff |
| alreadyPaused | discreteOnlyOpenClose | targetAlreadyReached |
| alreadyStarted | functionNotSupported | tooManyFailedAttempts |
| alreadyStopped | inAutoMode | valueOutOfRange |
| alreadyUnlocked | inEcoMode |
Der Messwert Latenz bei Abfrage/Ausführung (p90) <= 1.000 ms misst die Wartezeit für angeforderte Aktionen und trägt dazu bei, dass Nutzer nicht zu lange warten müssen, z. B. einige Sekunden, bis das Licht ausgeschaltet wird.
Latenzmesswerte
Die Latenz ist ein wichtiger Indikator dafür, wie schnell Ihre Integration für den Endnutzer reagiert. Im Dashboard wird die Latenz im 90. Perzentil (P90) erfasst. Diese gibt an, wie die „langsamsten“ Nutzer die Latenz wahrnehmen. Ein P90-Wert von 800 ms bedeutet beispielsweise, dass 90% der Anfragen innerhalb von 800 ms oder weniger beantwortet werden.
Google misst die Latenz für Statusprüfungen und Gerätebefehle unterschiedlich, um die technische Genauigkeit zu gewährleisten.
1. ABFRAGELATENZ (FRAGEND)
Dieser Messwert gibt die Umlaufzeit von Cloud-to-cloud an, wenn Google den aktuellen Status eines Geräts anfordert.
- Start: Google sendet eine
action.devices.QUERY-Anfrage an Ihre Fulfillment-URL. - Messzeitraum: Die Zeit, die Ihre Cloud benötigt, um die vollständige HTTP-Antwort zu empfangen, zu verarbeiten und an Google zurückzusenden.
- Ende: Google empfängt und bestätigt die Nutzlast der endgültigen Antwort von Ihrem Dienst.
2. EXECUTE-Latenz (Aktion)
Damit wird die Zeit gemessen, die vergeht, bis ein Befehl bestätigt wird, wenn Google eine Steuerungsanfrage an ein Gerät sendet.
- Start: Google sendet eine
action.devices.EXECUTE-Anfrage an Ihre Fulfillment-URL. - Messzeitraum: Die Zeit, die deine Cloud benötigt, um den Befehl zu empfangen und eine Bestätigungsantwort zurückzugeben.
- Ende: Google erhält die Statusantwort
SUCCESS,PENDINGoderOFFLINE. - Technischer Umfang: Mit dieser Messung wird die Zeit für die „Antwortbestätigung“ zwischen der Cloud von Google und Ihrer Cloud gemessen. Es wird nicht die Zeit gemessen, die die physische Hardware (z. B. eine Glühbirne) benötigt, um den physischen Status zu ändern, da dies oft eine lokale Mesh-Netzwerklatenz außerhalb des Cloud-to-Cloud-Pfads beinhaltet.
Optionen zur Reduzierung der Latenz
Architekturempfehlungen für das geografische Routing
Wenn die Implementierung von Anycast-IP nicht möglich ist, empfehlen wir die folgenden kostengünstigen Alternativen, um sicherzustellen, dass Nutzer vom nächstgelegenen regionalen Rechenzentrum bedient werden.
Global Load Balancing (GLB)
Verwenden Sie anstelle von statischem Routing einen Global Application Load Balancer (bei den meisten großen Cloud-Anbietern verfügbar).
Funktionsweise:Sie konfigurieren einen einzelnen globalen Einstiegspunkt (URL) am Netzwerkrand. Der Load-Balancer erkennt automatisch den geografischen Ursprung der Anfrage aus den Fulfillment-Clustern von Google und leitet den Traffic an das nächstgelegene regionale fehlerfreie Back-End weiter.
Vorteil:Diese Option bietet die Leistung von Anycast bei deutlich geringerer Konfigurationskomplexität und geringeren Kosten.
Standortbezogenes DNS (GeoDNS)
Funktionsweise:Konfigurieren Sie Ihren DNS-Anbieter so, dass Ihre Fulfillment-URL basierend auf dem geografischen Standort der DNS-Anfrage in verschiedene IP-Adressen aufgelöst wird.
Implementierung:Achten Sie darauf, dass Ihr DNS-Anbieter für die Google-Ausgangspunkte optimiert ist. Wenn die regionalen Fulfillment-Dienste von Google (z. B. in den USA, der EU oder Asien) Ihre Domain auflösen, erhalten sie die IP-Adresse für das Rechenzentrum in der jeweiligen Region.
Optimierungsstrategien auf der Anwendungsebene
Neben dem Routing auf Infrastrukturebene können Sie die folgenden Strategien auf Anwendungsebene implementieren, um die Latenz bei der Anfrageverarbeitung zu reduzieren.
Die „Trampolin“-Proxy-Methode
Wenn Sie ein primäres Rechenzentrum betreiben müssen, verwenden Sie regionale Lightweight-Proxyserver (Trampolines), um den ersten Handshake zu verarbeiten.
Google ruft Ihre globale URL auf.
Ein regionaler Proxy (z. B. eine einfache Nginx- oder Lambda-Funktion) empfängt die Anfrage.
Der Proxy leitet die Nutzlast über Ihr internes Hochgeschwindigkeits-Backbone an die primäre Datenbank weiter.
Vorteil:Dadurch wird die Zeit für den TCP-Handshake verkürzt, die bei Anfragen über große Entfernungen oft den größten Beitrag zur Latenz leistet.
Hinweise zur Region für Zugriffstokens
Während der Kontoverknüpfung (OAuth) kann Ihr System die Wohnregion des Nutzers ermitteln.
Implementierung:Codieren Sie eine Regions-ID in der
access_token, die an Google ausgegeben wird. Wenn Google eine Erfüllungsanfrage sendet, kann Ihr Gateway das Token sofort prüfen und die Anfrage an den richtigen regionalen Cluster weiterleiten, ohne dass eine Datenbanksuche erforderlich ist.
Systemzustand – Partner- zu Google-Messwerte
Wenn du eine Erfolgsrate von mindestens 99,5% beibehältst, wird sichergestellt, dass Gerätestatus in Google Home korrekt sind, Geräte hinzugefügt und entfernt werden, Automatisierungen ausgelöst werden und Verlaufsereignisse auf dem Tab „Aktivität“ des Google Home app (GHA) angezeigt werden.
Die Erfolgsrate wird anhand der HTTP-Antwortcodes berechnet, die von Google zurückgegeben werden, wenn deine Cloud Statusaktualisierungen sendet. Damit Partner nicht für Infrastrukturprobleme auf Google-Seite bestraft werden, werden interne Google-Fehler aus der Fehleranzahl ausgeschlossen. Die in die Berechnung einbezogenen API-Aufrufe finden Sie in der HomeGraph API-Referenz.
Was definiert einen „Erfolg“?
2xx (Erfolg): Die Statusaktualisierung wurde von Home Graph erfolgreich empfangen und verarbeitet.
Was ist ein „Fehler“?
4xx-Fehler (Partnerfehler) stellen Fehler dar und weisen auf ein Problem mit der Anfrage hin, die von Ihrer Cloud gesendet wurde. Häufige Codes sind:
400 Fehlerhafte Anfrage
Ursache:Der Server konnte die Anfrage aufgrund einer ungültigen Syntax nicht verarbeiten. Häufige Ursachen sind fehlerhaftes JSON oder die Verwendung von „null“ anstelle von „“ für einen Stringwert.
Lösung:Achte darauf, dass der Anfragetext gültiges JSON ist (keine fehlerhafte Struktur oder Nullwerte für Stringfelder) und dass agentUserId mit dem Wert aus der SYNC-Antwort übereinstimmt.
404 Nicht gefunden
Ursache:deviceId oder agentUserId wurde in HomeGraph nicht gefunden (noch nicht synchronisiert, bereits entknüpft oder ID-Konflikt).
Lösung:
- Achte darauf, dass
agentUserIdmit dem Wert in deiner SYNC-Antwort übereinstimmt. - Verwende die Home Graph SYNC API, um festzustellen, ob der Fehler 404 „Nicht gefunden“ durch ein fehlendes Gerät oder einen fehlenden Nutzer in Home Graph verursacht wird.
- Achten Sie darauf,
requestSyncnach dem Hinzufügen, Entfernen, Umbenennen oder Aktualisieren eines Geräts oder Kontos auszulösen, damit der Status immer aktuell ist. DISCONNECT-Intents richtig verarbeiten, um die Meldung veralteter Geräte zu beenden. Nachdem Ihr Cloud-Dienst dieDISCONNECT-Absicht empfangen hat, sollte er keine Änderungen mehr mit Request Sync und Report State an Google senden.
429 Ressource erschöpft
Ursache:Ihre Integration hat das zugewiesene Kontingent überschritten.
Lösung:Folgen Sie der Anleitung im Abschnitt „Schritt 2a: Kontingentprobleme beheben“ im Dashboard für die Kontingentverwaltung. Weitere Informationen finden Sie unter Kontingente und Limits für Smart Home.
Gerätezustand – Statusgenauigkeit
Wenn Sie eine Statusgenauigkeit von mindestens 99,5% erreichen oder überschreiten, werden Nutzern korrekte Ergebnisse angezeigt, wenn sie sich Gerätestatus ansehen oder KI-Funktionen wie „Home fragen“ verwenden. Wenn die Genauigkeit des Status niedrig ist, werden Automatisierungen möglicherweise nicht ausgelöst und Verlaufsereignisse werden möglicherweise nicht rechtzeitig auf dem Tab „Aktivität“ von GHA angezeigt. Weitere Informationen finden Sie unter Berichtstatus.
Das Qualitäts-Dashboard verfolgt dies stündlich anhand von zwei verschiedenen Messwerten: Gesamtgenauigkeit und Kombination mit dem niedrigsten Typ/Attribut.
1. Genauigkeitskomponenten
Der Messwert wird aus Stichproben abgeleitet, bei denen Google den gemeldeten Status mit einem bekannten Ergebnis der Intention vergleichen kann.
2. Dashboardmesswerte (stündliche Berechnung)
Im Dashboard wird die Genauigkeit auf Grundlage eines 1-Stunden-Intervalls berechnet. Wenn eine Stunde weniger als 100 Gesamtstichproben (S_Total < 100) enthält, wird die Genauigkeit für diese Stunde auf N/A festgelegt.
Ansicht 1: Gesamte Genauigkeit (globaler Durchschnitt)
Dies ist die Gesamtgenauigkeit Ihrer Integration für alle Gerätetypen und Merkmale zusammen. Er bietet einen gewichteten Durchschnitt des Zustands Ihres gesamten Ökosystems.
- Berechnung: Gesamte Genauigkeit des Status auf allen Geräten / Gesamter Status auf allen Geräten.
Ansicht 2: Niedrigste Kombination aus Typ und Attribut
Hier wird die unzuverlässigste Kategorie in Ihrer Integration ermittelt. So wird verhindert, dass Geräte mit hohem Volumen und hoher Qualität Geräte mit niedrigem Volumen und niedriger Qualität verbergen. Wenn Sie beispielsweise eine große Anzahl von Lichtern mit einer Genauigkeit von über 99,5% haben, aber nur wenige Schalter mit einer niedrigen Genauigkeit, wird deutlich, dass die Schalter verbessert werden müssen.Das geht bei einem Durchschnittswert möglicherweise unter.
- Berechnung: Mindestwert von „State Accuracy“ / „State Total“ für alle Kombinationen aus Attribut und Gerät.
3. Genauigkeit von Gerätezustand und ‑status verbessern
Abweichungen treten auf, wenn der im Home Graph gespeicherte Status nicht mit den Ergebnissen einer Echtzeit-QUERY übereinstimmt.
Fehler „Feld fehlt“
DETAILED_ACCURACY_RESULT_QUERY_STATE_MISSING_FIELD-Beispiel
reportStateLog: { accuracy: "INACCURATE" agentId: "abc" detailedAccuracyResult: "DETAILED_ACCURACY_RESULT_QUERY_STATE_MISSING_FIELD" deviceId: "curtain" deviceType: "action.devices.types.CURTAIN" isMissingField: true isOffline: false queriedTime: "2026-04-13T12:20:26Z" queryReportStateDifferences: { queryState: "open_close { open_percent: 0.0 missing open_direction }" reportState: "open_close { open_state { open_percent: 100.0 open_direction: "LEFT" } }" } reportedTime: "2022-05-13T07:14:35Z" requestId: "123" result: "INACCURATE" snapshotTime: "2026-04-13T12:20:26Z" stateName: "open_state" traitName: "TRAIT_OPEN_CLOSE" }
DETAILED_ACCURACY_RESULT_REPORT_STATE_MISSING_FIELD-Beispiel
reportStateLog: { accuracy: "INACCURATE" agentId: "abc" detailedAccuracyResult: "DETAILED_ACCURACY_RESULT_REPORT_STATE_MISSING_FIELD" deviceId: "sensor" deviceType: "action.devices.types.SENSOR" isMissingField: true isOffline: false queriedTime: "2026-04-28T10:40:33Z" queryReportStateDifferences: { queryState: "temperature_setting { thermostat_mode: "off" thermostat_temperature_ambient: 20.0 active_thermostat_mode: "none" }" reportState: "temperature_setting { thermostat_mode: "off" active_thermostat_mode: "none" }" } reportedTime: "2024-09-20T15:00:00Z" requestId: "123" result: "INACCURATE" snapshotTime: "2026-04-28T10:40:33Z" stateName: "thermostat_temperature_ambient" traitName: "TRAIT_TEMPERATURE_SETTING" }
Ursache:Bei dem Fehler DETAILED_ACCURACY_RESULT_QUERY_STATE_MISSING_FIELD oder DETAILED_ACCURACY_RESULT_REPORT_STATE_MISSING_FIELD unterscheidet sich die Gruppe der Nutzlastfelder zwischen deiner QUERY-Antwort und deiner Report State-Anfrage für dasselbe Gerät.
Lösung:Die Datenstruktur muss in beiden Pfaden identisch sein. Wenn ein Attribut in SYNC enthalten ist, müssen die entsprechenden Felder sowohl in proaktiven Berichten als auch in reaktiven Anfragen vorhanden und konsistent sein.
Fehler „Ungenaue Ergebnisse“
DETAILED_ACCURACY_RESULT_INACCURATE-Beispiel
reportStateLog: { accuracy: "INACCURATE" agentId: "abc" detailedAccuracyResult: "DETAILED_ACCURACY_RESULT_INACCURATE" deviceId: "outlet" deviceType: "action.devices.types.OUTLET" isMissingField: false isOffline: false queriedTime: "2026-04-12T16:02:58Z" queryReportStateDifferences: { queryState: "on_off { on: false }" reportState: "on_off { on: true }" } reportedTime: "2025-03-10T01:56:44Z" requestId: "abc" result: "INACCURATE" snapshotTime: "2026-04-12T16:02:58Z" stateName: "on" traitName: "TRAIT_ON_OFF" }
Ursache:Beim Fehler DETAILED_ACCURACY_RESULT_INACCURATE gibt es eine Diskrepanz zwischen dem in der QUERY-Antwort zurückgegebenen Wert und dem letzten Wert für „Berichtstatus“.
Lösung:Achten Sie darauf, dass „Report State“ immer dann ausgelöst wird, wenn sich der Gerätestatus ändert, und dass sowohl „Report State“ als auch „QUERY“ immer dieselben aktuellen Werte und alle erforderlichen Felder für die Datenkonsistenz liefern.
DETAILED_ACCURACY_RESULT_MISSING_REPORT_STATE-Beispiel
"reportStateLog": { "isMissingField": false, "snapshotTime": "2026-04-13T07:56:21Z", "traitName": "TRAIT_ON_OFF", "detailedAccuracyResult": "DETAILED_ACCURACY_RESULT_MISSING_REPORT_STATE", "executionReportStateDifferences": { "expectedPostExecutionDeviceState": { "onOff": { "on": false } }, "preExecutionDeviceState": { "onOff": { "on": true } }, "executionCommand": { "requestId": "test001", "beginTimestamp": "2026-04-13T07:56:20Z", "action": { "trait": "TRAIT_ON_OFF", "actionType": "ONOFF_OFF" }, "status": { "statusType": "SUCCESS_STATUS" }, "endTimestamp": "2026-04-13T07:56:21Z", "executionType": "PARTNER_CLOUD" }, "reportState": {} }, "accuracy": "MISSING_REPORT_STATE", "deviceType": "action.devices.types.LIGHT", "agentId": "abc", "stateName": "on", "result": "MISSING_REPORT_STATE" }
Ursache:Beim Fehler DETAILED_ACCURACY_RESULT_MISSING_REPORT_STATE hat der Partner den Befehl erfolgreich ausgeführt, den aktualisierten Gerätestatus aber nicht an Google zurückgemeldet.
Lösung:Senden Sie nach der Ausführung eines Befehls immer ein „Report State“-Update, damit Home Graph den neuen Gerätestatus erhält.
DETAILED_ACCURACY_RESULT_NO_STATE_REPORTED-Beispiel
eportStateLog: { accuracy: "INACCURATE" agentId: "abc" detailedAccuracyResult: "DETAILED_ACCURACY_RESULT_NO_STATE_REPORTED" deviceId: "switch" deviceType: "action.devices.types.SWITCH" isMissingField: false isOffline: true queriedTime: "2026-04-13T13:53:26Z" queryReportStateDifferences: { queryState: "online { online: false } " reportState: "" } reportedTime: "1970-01-01T00:00:00Z" requestId: "test001" result: "INACCURATE" snapshotTime: "2026-04-13T13:53:26Z" stateName: "online" traitName: "TRAIT_ONLINE" }
Ursache:Für den DETAILED_ACCURACY_RESULT_NO_STATE_REPORTED Fehler wurde für dieses Gerät kein „Report State“ empfangen (der Status ist leer und der gemeldete Zeitstempel ist auf „epoch“ gesetzt), obwohl die QUERY-Ergebnisse den aktuellen Status liefern.
Das bedeutet, dass Statusaktualisierungen entweder nicht ausgelöst werden, HomeGraph nicht erreichen oder das Gerät Übergänge in seinem Verbindungs- oder Betriebsstatus nicht erfolgreich meldet.
Lösung:Achten Sie darauf, dass „Report State“ für alle Statusänderungen ausgelöst und gesendet wird. Prüfe, ob die Backend-Logik Statusaktualisierungen korrekt verarbeitet, die erfolgreiche Zustellung an Google HomeGraph bestätigt und der Gerätestatus regelmäßig synchronisiert wird, damit die Benutzeroberfläche und die Automatisierungs-Engine korrekt funktionieren.