Google Home Vitals (Cloud)

Bu kontrol paneli ve uyarı paketi, Google Home ekosistemiyle yüksek kaliteli bir entegrasyonu proaktif olarak sürdürmenize yardımcı olur. Google, tüm müşteriler için yüksek kaliteli bir ekosistem geliştirmede iş ortaklarını desteklemeye kararlıdır.

Gösterge tablosu üç bölümden oluşur. Bu bölümlerin her biri, genel entegrasyon kalitesine katkıda bulunan önemli bir parçayı kapsar.

  1. Google'dan İş Ortağı Metrikleri: Google'dan bulut arka ucunuza yapılan çağrıların durumunu ölçer.

  2. Sistem Sağlığı - İş Ortağından Google'a Yönelik Metrikler: Sisteminizden Google'a yapılan çağrıların sağlığını ölçer.

  3. Cihaz Sağlığı - Durum Doğruluğu: Kullanıcı sorgularına yanıt vermek için kullanılan Google sistemlerinde depolanan durumların doğruluğunu ölçer.

Metrikler hedef değerlerini karşılamadığında, kullanıcı deneyimini etkileyebilecek bir sorunu belirtmek için kırmızı renkte vurgulanır. Aşağıdaki bilgilerde her hedef ve kullanıcılarınız için neden önemli olduğu hakkında ayrıntılar verilmektedir.

Aşağıdaki düğme sizi doğrudan kontrol paneline yönlendirmiyorsa Genel Bakış sayfasını seçip Kontrol Panelleri'ni tıklayarak ve ardından Kontrol Panellerim listesinden Google Home Vitals Dashboard (Cloud)'u (Google Home Önemli Veriler Kontrol Paneli (Bulut)) seçerek kontrol panelinizi görüntüleyebilirsiniz.

Kontrol Paneli'ne git

Google'dan iş ortağına metrikler

Sorgu/Yürütme Başarı Oranı >=%99,5 metriği, kullanıcıların komutlarının ne sıklıkta doğru şekilde yerine getirildiğini ölçer.Bu metrik, "Cihaza erişemiyorum" gibi Asistan yanıtlarını veya yerine getirilmeyen bir komutun yanlışlıkla onaylanmasını önlemeye yardımcı olur.

"Başarı"yı ne tanımlar?

Google Home platformu, amaçlanan işlemin gerçekleştirildiğini veya istenen durumun alındığını belirten geçerli bir yanıt aldığında işlem başarılı olarak işaretlenir.

Engelleyici olmayan istisnalar içeren yanıtlar (ör. SUCCESS durumuyla birlikte lowBattery istisnası) başarılı işlemler olarak sayılır. Komut cihaza ulaştı ve uyarıya rağmen amaç yerine getirildi.

"Başarısızlık" ne anlama gelir?

Sık karşılaşılan platform hata kodları sayfasında bulunan ve İş Ortağı Tarafından İşlem Yapılabilir olarak işaretlenen hatalar, QUERY ve EXECUTE başarı oranları hesaplanırken "Başarısızlık" olarak kabul edilir. Ayrıca, Hatalar ve istisnalar bölümünde bulunan hatalar da aşağıdaki istisnalar dışında "Başarısızlık" olarak kabul edilir:

Hata istisnaları
aboveMaximumLightEffectsDuration armLevelNeeded inOffMode
alreadyArmed bagFull lockedToRange
alreadyAtMax belowMinimumLightEffectsDuration lowBattery
alreadyAtMin binFull maxSpeedReached
alreadyClosed cancelArmingRestricted minSpeedReached
alreadyDisarmed deadBattery notSupported
alreadyDocked degreesOutOfRange çevrimdışı
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

Sorgu/Yürütme Gecikmesi (p90) <= 1000 ms metriği, istenen işlemin bekleme süresini ölçer ve kullanıcıların çok uzun süre beklememesini sağlar. Örneğin, ışıklarının kapanması için birkaç saniye beklemeleri gibi.

Gecikme metrikleri

Gecikme, entegrasyonunuzun son kullanıcıya ne kadar hızlı yanıt verdiğinin önemli bir göstergesidir. Kontrol paneli, "en yavaş" kullanıcılarınızın deneyimini temsil eden 90. yüzdelik dilim (P90) gecikmesini izler (örneğin, 800 ms'lik bir P90, isteklerin% 90'ının 800 ms veya daha kısa sürede onaylandığı anlamına gelir).

Google, teknik doğruluğu sağlamak için durum kontrolleri ile cihaz komutlarındaki gecikmeyi farklı şekilde ölçer.

1. QUERY Latency (Interrogative)

Bu, Google bir cihazın mevcut durumunu istediğinde Cloud-to-cloud gidiş dönüş süresini ölçer.

  • Başlangıç: Google, karşılama URL'nize bir action.devices.QUERY isteği gönderir.
  • Ölçüm Penceresi: Bulutunuzun tam HTTP yanıtını alması, işlemesi ve Google'a geri iletmesi için geçen süre.
  • Son: Google, hizmetinizden gelen son yanıt yükünü alır ve onaylar.

2. EXECUTE Gecikmesi (İşlem)

Bu metrik, Google bir cihaza kontrol isteği gönderdiğinde komut onay süresini ölçer.

  • Başlangıç: Google, karşılama URL'nize bir action.devices.EXECUTE isteği gönderir.
  • Ölçüm Penceresi: Bulutunuzun komutu alıp onay yanıtı göndermesi için geçen süre.
  • Bitiş: Google, SUCCESS, PENDING veya OFFLINE durum yanıtını alır.
  • Teknik Kapsam: Bu metrik, Google'ın bulutu ile sizin bulutunuz arasındaki"Yanıt Onayı" süresini ölçer. Bu metrik, fiziksel donanımın (ör. ampul) fiziksel durum değişikliğini tamamlaması için gereken süreyi ölçmez. Bunun nedeni, bu işlemin genellikle buluttan buluta yolun dışında yerel bağlantılı ağ gecikmesini içermesidir.

Gecikmeyi azaltma seçenekleri

Coğrafi yönlendirme için mimari öneriler

Anycast IP uygulaması mümkün değilse kullanıcıların en yakın bölgesel veri merkezinden hizmet almasını sağlamak için aşağıdaki uygun maliyetli alternatifleri öneririz.

  1. Global Load Balancing (GLB)

    Statik yönlendirme yerine Global Uygulama Yük Dengeleyicisi'nı kullanın (en büyük bulut sağlayıcıların çoğunda mevcuttur).

    • Nasıl çalışır? Ağın kenarında bulunan tek bir global giriş noktası (URL) yapılandırırsınız. Yük dengeleyici, Google'ın karşılama kümelerinden gelen isteğin coğrafi kaynağını otomatik olarak algılar ve trafiği en yakın bölgesel sağlıklı arka uca yönlendirir.

    • Avantaj: Bu, Anycast'in performansını önemli ölçüde daha düşük yapılandırma karmaşıklığı ve maliyetle sağlar.

  2. Coğrafi Konuma Duyarlı DNS (GeoDNS)

    • İşleyiş şekli: DNS sağlayıcınızı, DNS sorgusunun coğrafi konumuna göre karşılama URL'nizi farklı IP adreslerine çözümleyecek şekilde yapılandırın.

    • Uygulama: DNS sağlayıcınızın Google'ın çıkış noktaları için optimize edildiğinden emin olun. Google'ın bölgesel karşılama hizmetleri (ör. ABD, AB veya Asya'da) alan adınızı çözümlediğinde, söz konusu bölgedeki veri merkezinin IP adresini alır.

Uygulama katmanındaki optimizasyon stratejileri

Altyapı düzeyinde yönlendirmenin yanı sıra, istek işlemedeki gecikmeyi azaltmak için uygulama katmanında aşağıdaki stratejileri uygulayabilirsiniz.

  1. "Trambolin" Proxy Yöntemi

    Birincil veri merkezini korumanız gerekiyorsa ilk el sıkışmayı işlemek için bölgesel hafif proxy sunucular (Trambolinler) kullanın.

    1. Google, global URL'nize erişir.

    2. İsteği bölgesel bir proxy (ör. basit bir Nginx veya Lambda işlevi) alır.

    3. Proxy, yükü dahili ve yüksek hızlı omurganız üzerinden birincil veritabanına yönlendirir.

    Avantaj: Bu, genellikle uzun mesafeli isteklerde gecikmeye en büyük katkıyı sağlayan "TCP el sıkışması" süresini kısaltır.

  2. Erişim Jetonu Bölge İpuçları

    Hesap bağlama (OAuth) işlemi sırasında sisteminiz kullanıcının yaşadığı bölgeyi belirleyebilir.

    Uygulama: Google'a verilen access_token bölge tanımlayıcısını kodlayın. Google bir karşılama isteği gönderdiğinde ağ geçidiniz, jetonu hemen inceleyebilir ve veritabanı araması yapmaya gerek kalmadan isteği doğru bölgesel kümeye yönlendirebilir.

Sistem Sağlığı - İş Ortağı ile Google arasındaki metrikler

Başarı oranının >=%99,5 olması, cihaz durumlarının Google Home'da doğru olmasını, cihazların eklenip kaldırılmasını, otomasyonların tetiklenmesini ve geçmiş etkinliklerinin Google Home app (GHA)'nin Etkinlik sekmesinde görünmesini sağlar.

Başarı oranı, bulutunuz durum güncellemelerini gönderdiğinde Google tarafından döndürülen HTTP yanıt kodlarına göre hesaplanır. İş ortaklarının Google tarafındaki altyapı sorunları nedeniyle cezalandırılmaması için metrik, Google'ın dahili hatalarını başarısızlık sayısından çıkarır. Hesaplamaya dahil edilen API çağrıları HomeGraph API referansında yer alır.

"Başarı"yı ne tanımlar?

2xx (Başarılı): Durum güncellemesi, Home Graph tarafından başarıyla alınmış ve işlenmiştir.

"Başarısızlık" ne anlama gelir?

4xx (iş ortağı hatası), hataları gösterir ve bulutunuzdan gönderilen istekte bir sorun olduğunu belirtir. Yaygın kodlar şunlardır:

400 Hatalı İstek

Neden: Sunucu, geçersiz söz dizimi nedeniyle isteği işleyemedi. Yaygın nedenler arasında hatalı biçimlendirilmiş JSON veya dize değeri için "" yerine null kullanılması yer alır.

Çözüm: İstek gövdesinin geçerli bir JSON olduğundan (bozuk yapı veya dize alanları için boş değerler yok) emin olun ve agentUserId değerinin SYNC yanıtındaki değerle eşleştiğini doğrulayın.

404 Bulunamadı

Neden: deviceId veya agentUserId Home Graph'ta bulunamadı (henüz senkronize edilmedi, bağlantısı zaten kaldırıldı veya kimlik eşleşmiyor).

Çözüm:

  1. agentUserId değerinin, SYNC yanıtınızda sağlanan değerle eşleştiğinden emin olun.
  2. 404 Not Found hatasının Home Graph'te eksik bir cihazdan mı yoksa kullanıcıdan mı kaynaklandığını belirlemek için Home Graph SYNC API'yi kullanın.
  3. Durumun güncel kalması için cihaz veya hesap ekleme, kaldırma, yeniden adlandırma ya da güncelleme işlemlerinden sonra requestSync işlemini tetiklemeyi unutmayın.
  4. Eski cihazların raporlanmasını durdurmak için DISCONNECT amaçlarını düzgün şekilde işleyin. DISCONNECT amacı alındıktan sonra, bulut hizmetiniz Request Sync ve Report State ile Google'da değişiklik yayınlamayı durdurmalıdır.

429 Kaynak Tükendi

Neden: Entegrasyonunuz, ayrılan kotayı aştı.

Çözüm: Kota yönetimi için kontrol panelindeki "2a. Adım: Kota Sorunlarını Ayıklama" bölümündeki talimatlara bakın. Daha fazla bilgi için Akıllı Ev kotaları ve sınırları bölümüne de bakabilirsiniz.

Cihaz durumu - Durum doğruluğu

Durum Doğruluğu >=%99,5 ölçütünü karşılamak veya aşmak, kullanıcıların cihaz durumlarını görüntülerken ya da Home'a Sor gibi yapay zeka özelliklerini kullanırken doğru sonuçlar görmesini sağlar. Durum doğruluğu düşükse otomasyonlar tetiklenmeyebilir ve geçmiş girişleri, sağdaki GHA Etkinlik sekmesinde doğru zamanda görünmeyebilir. Daha fazla bilgi için Rapor Durumu bölümünü inceleyin.

Kalite kontrol panelinde bu durum, saatlik olarak Genel Doğruluk ve En Düşük Tür/Özellik Kombinasyonu olmak üzere iki farklı metrik kullanılarak izlenir.

1. Doğruluk Bileşenleri

Metrik, Google'ın bildirilen durumu bilinen bir amaç sonucuyla karşılaştırarak doğrulayabildiği "örneklerden" elde edilir.

2. Kontrol Paneli Metrikleri (Saatlik Hesaplama)

Kontrol paneli, doğruluğu 1 saatlik aralıklarla hesaplar. Bir saatte toplam örnek sayısı 100'den azsa (S_Total < 100), o saatin doğruluğu Yok olarak ayarlanır.

1. Görünüm: Genel Doğruluk (Global Ortalama)

Bu, tüm cihaz türleri ve özellikler birleştirildiğinde entegrasyonunuzun toplam doğruluğunu gösterir. Tüm ekosisteminizin sağlığıyla ilgili ağırlıklı ortalama sağlar.

  • Hesaplama: Tüm cihazlardaki toplam durum doğruluğu / Tüm cihazlardaki toplam durum sayısı.

2. Görünüm: En Düşük Tür/Özellik Kombinasyonu

Bu, entegrasyonunuzdaki en güvenilmez belirli kategoriyi tanımlar. Bu özellik, yüksek kaliteli ve yüksek hacimli cihazların, düşük kaliteli ve düşük hacimli cihazları gizlemesini önler. Örneğin, %99, 5'in üzerinde Durum Doğruluğu olan yüksek hacimli ışıklarınız varsa ancak düşük Durum Doğruluğu olan düşük hacimli anahtarlarınız varsa bu durum, ortalama değerde kaybolabilecek anahtarlarda iyileştirme yapılması gerektiğini gösterir.

  • Hesaplama: Tüm özellik / cihaz kombinasyonları için eyalet doğruluğu/eyalet toplamı minimum değeri.

3. Cihaz sağlığını ve durum doğruluğunu iyileştirme

Ev Grafiği'nde depolanan durum, anlık bir SORGUNUN sonuçlarıyla eşleşmediğinde tutarsızlıklar oluşur.

"Eksik Alan" hataları

DETAILED_ACCURACY_RESULT_QUERY_STATE_MISSING_FIELD örneği

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 örneği

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

Neden: DETAILED_ACCURACY_RESULT_QUERY_STATE_MISSING_FIELD veya DETAILED_ACCURACY_RESULT_REPORT_STATE_MISSING_FIELD hatasında, aynı cihaz için QUERY yanıtınız ile Report State isteğiniz arasındaki yük alanları grubu farklıdır.

Çözüm: Veri yapısının her iki yolda da aynı olduğundan emin olun. SYNC'ye bir özellik dahil edildiyse ilgili alanlar hem proaktif raporlarda hem de reaktif sorgularda mevcut ve tutarlı olmalıdır.

"Hatalı" hataları

DETAILED_ACCURACY_RESULT_INACCURATE örneği

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

Neden: DETAILED_ACCURACY_RESULT_INACCURATE hatası için QUERY yanıtında döndürülen değer ile son Rapor Durumu değeri arasında bir tutarsızlık vardır.

Çözüm: Cihaz durumu her değiştiğinde Report State'in tetiklendiğinden ve veri tutarlılığını korumak için hem Report State hem de QUERY'nin her zaman tam olarak aynı ve güncel değerleri sağladığından ve gerekli tüm alanları içerdiğinden emin olun.

DETAILED_ACCURACY_RESULT_MISSING_REPORT_STATE örneği

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

Neden: DETAILED_ACCURACY_RESULT_MISSING_REPORT_STATE hatasında, iş ortağı komutu başarıyla yürütmüş ancak güncellenen cihaz durumunu Google'a geri bildirmemiştir.

Çözüm: Home Graph'in yeni cihaz durumunu alması için komut yürütme işleminden sonra her zaman bir Durum Raporu güncellemesi gönderin.

DETAILED_ACCURACY_RESULT_NO_STATE_REPORTED örneği

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

Neden: DETAILED_ACCURACY_RESULT_NO_STATE_REPORTED hatası için, QUERY sonuçları mevcut durumu sağlasa da bu cihaz için ReportState alınmamıştır (durum boş ve bildirilen zaman damgası epoch'tadır). Bu durum, durum güncellemelerinin tetiklenmediğini, HomeGraph'a ulaşamadığını veya cihazın bağlantı ya da çalışma durumundaki geçişleri başarıyla bildirmediğini gösterir.

Çözüm: Rapor Durumu'nun tetiklendiğinden ve tüm durum değişiklikleri için başarıyla gönderildiğinden emin olun. Arka uç mantığının durum güncellemelerini doğru şekilde işlediğini, Google Home Graph'a teslimatın başarılı olduğunu onayladığını ve cihazın durumunu tutarlı bir şekilde senkronize ederek kullanıcı arayüzünün ve otomasyon motorunun doğru kalmasını sağladığını doğrulayın.