Akıllı ev işlemlerinin nasıl geliştirileceğini öğrenmek için yeni adres olan Google Home Geliştirici Merkezi'ne hoş geldiniz. Not: Actions Console'da işlem oluşturmaya devam edersiniz.

Rapor Durumu

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Report State, önemli bir özelliktir. Home, kullanıcının cihazının son durumunu Google Home Graph rather than waiting for a QUERY intent. uygulamasına proaktif olarak bildirmesine olanak tanır.

Report State kendileriyle ilişkilendirilmiş agentUserId özelliğine sahip kullanıcı cihazlarının durumunu Google'a bildirir (orijinal SYNC isteğinde gönderilir). Google Assistant wants to take an action that requires understanding the current state of a device, it can simply look up the state information in the Home Graph instead of issuing a QUERY intent to various third-party clouds prior to issuing the EXECUTE intent. olduğunda

Bir oturma odasında birden fazla sağlayıcıdan gelen ışıklarla, Report State olmadan Ok Google, oturma odamı aydınlat komutu için, daha önce bildirilenlere göre mevcut parlaklık değerlerini kontrol etmek yerine birden çok buluta gönderilen birden fazla QUERY niyetinin çözülmesi gerekir. En iyi kullanıcı deneyimini sunabilmek için Assistant özelliğinin cihazda gidiş dönüş gerektirmeden mevcut durumuna sahip olması gerekir.

Platform, bir cihazın ilk SYNC durumunu takiben Home Graph durumunu doldurmak için cihazın durumunu toplayan bir QUERY niyeti gönderir. Bu noktadan sonra Home Graph yalnızca Report State ile gönderilen durumu depolar.

Report State çağırırken belirli bir özellik için tam durum verilerini sağladığınızdan emin olun. Home Graph, durum bazında günceller ve bir Report State çağrısı yapıldığında bu özellik için tüm verilerin üzerine yazar. Örneğin, StartStop özelliği için durum bildiriyorsanız yükün hem isRunning hem de isPaused için değerler içermesi gerekir.

Başla

Report State uygulamak için şu adımları uygulayın:

Google HomeGraph API'yi etkinleştirme

  1. Google Cloud Console, go to the HomeGraph API page.

    HomeGraph API sayfasına gidin
  2. smart home project ID. cihazınızla eşleşen projeyi seçin
  3. ETKİNLEŞTİR'i tıklayın.

Hizmet Hesabı Anahtarı Oluşturma

Google Cloud Console üzerinden bir hizmet hesabı anahtarı oluşturmak için şu talimatları uygulayın:

Not: Bu adımları gerçekleştirirken doğru GCP projesini kullandığınızdan emin olun. Bu proje, smart home proje kimliğinizle eşleşiyor.
  1. Google Cloud Console içindeki Hizmet hesabı anahtarı oluştur sayfasına gidin.

    Hizmet Hesabı Anahtarı Oluştur sayfasına gidin
  2. Hizmet hesabı listesinden Yeni hizmet hesabı'nı seçin.
  3. Hizmet hesabı adı alanına bir ad girin.
  4. Service account ID (Hizmet hesabı kimliği) alanına bir kimlik girin.
  5. Rol listesinden Hizmet Hesapları > Hizmet Hesabı Jeton Oluşturucu'yu seçin.

  6. Anahtar türü olarak JSON seçeneğini belirleyin.

  7. Oluştur'u tıklayın. Tuş indirmelerinizi içeren bir JSON dosyası bilgisayarınıza indirilir.

API'yi çağırın

Aşağıdaki sekmelerden bir seçeneği belirleyin:

HTTP

Home Graph, bir HTTP uç noktası sağlar

  1. İndirilen web hesabı JSON dosyasını kullanarak bir JSON Web Token (JWT) oluşturun. Daha fazla bilgi için Hizmet Hesabı Kullanarak Kimlik Doğrulama bölümüne bakın.
  2. oauth2l kullanarak https://www.googleapis.com/auth/homegraph kapsamı ile bir OAuth 2.0 erişim jetonu alın:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId ile JSON isteğini oluşturun. Aşağıda, Rapor Durumu ve Bildirim için örnek bir JSON isteği verilmiştir:
  5. {
      "requestId": "123ABC",
      "agentUserId": "user-123",
      "payload": {
        "devices": {
          "states": {
            "light-123": {
              "on": true
            }
          }
        }
      }
    }
    
  6. Rapor Durumu, Bildirim JSON ve HTTP POST isteğinizdeki jetonu Google Home Graph uç noktasında birleştirin. curl kullanarak komut satırında isteğin nasıl oluşturulacağına dair bir örneği aşağıda bulabilirsiniz:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
    

gRPC

Home Graph, bir gTB uç noktası sağlar

  1. Home Graph API için protokol arabellekleri hizmet tanımını öğrenin.
  2. Desteklenen dillerden biri için istemci saplaması oluşturmak üzere gTB geliştirici dokümanlarını uygulayın.
  3. ReportStateAndNotification yöntemini çağırın.

Node.js

Google API'leri Node.js İstemcisi, Home Graph API'si için bağlamalar sağlar.

  1. Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak google.homegraph hizmetini başlatın.
  2. ReportStateAndNotificationRequest ile reportStateAndNotification yöntemini çağırın. ReportStateAndNotificationResponse öğesini içeren bir Promise döndürür.
const homegraphClient = homegraph({
  version: 'v1',
  auth: new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/homegraph'
  })
});

const res = await homegraphClient.devices.reportStateAndNotification({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        states: {
          "PLACEHOLDER-DEVICE-ID": {
            on: true
          }
        }
      }
    }
  }
});
    

Java

Java için HomeGraph API İstemci Kitaplığı, Home Graph API için bağlantılar sağlar.

  1. Uygulama Varsayılan Kimlik Bilgileri'ni kullanarak HomeGraphApiService'i başlatın.
  2. ReportStateAndNotificationRequest ile reportStateAndNotification yöntemini çağırın. ReportStateAndNotificationResponse değerini döndürür.
  // Get Application Default credentials.
  GoogleCredentials credentials =
      GoogleCredentials.getApplicationDefault()
          .createScoped(List.of("https://www.googleapis.com/auth/homegraph"));

  // Create Home Graph service client.
  HomeGraphService homegraphService =
      new HomeGraphService.Builder(
              GoogleNetHttpTransport.newTrustedTransport(),
              GsonFactory.getDefaultInstance(),
              new HttpCredentialsAdapter(credentials))
          .setApplicationName("HomeGraphExample/1.0")
          .build();

  // Build device state payload.
  Map<?, ?> states = Map.of("on", true);

  // Report device state.
  ReportStateAndNotificationRequest request =
      new ReportStateAndNotificationRequest()
          .setRequestId("PLACEHOLDER-REQUEST-ID")
          .setAgentUserId("PLACEHOLDER-USER-ID")
          .setPayload(
              new StateAndNotificationPayload()
                  .setDevices(
                      new ReportStateAndNotificationDevice()
                          .setStates(Map.of("PLACEHOLDER-DEVICE-ID", states))));
  homegraphService.devices().reportStateAndNotification(request);
}
    

Test Durumu Durumu

Bu görev için önerilen araçlar

İşleminizi sertifika almaya hazır hale getirmek için Report State test edin.

Bunu yapmak için indirme veya dağıtma gerektirmeyen bağımsız bir web uygulaması olan Home Graph Görüntüleyici aracını kullanmanızı öneririz.

Report State Kontrol Paneli hâlâ kullanılabilir olsa da kullanımdan kaldırılmıştır ve artık desteklenmemektedir.

Rapor Durumu Kontrol Paneli

Ön koşullar

İşleminizi test edebilmek için Hizmet Hesabı Anahtarınıza ve agentUserId cihazınıza ihtiyacınız vardır. Halihazırda Hizmet Hesabı Anahtarınız varsa ve agentUserId Report StateKontrol Panelini Dağıtma konusuna bakın.

Rapor Durumu kontrol panelini dağıtma

Projeniz için Hizmet Hesabı Anahtarı ve Aracı Kullanıcı Kimliğiniz olduğunda Report State Kontrol Paneli'nden en son sürümü indirin ve dağıtın. En son sürümü indirdikten sonra, dahil edilen README.MD dosyasındaki talimatları uygulayın.

Report State kontrol panelini dağıttıktan sonra kontrol paneline aşağıdaki URL'den erişin (projeniz_kimliği yerine proje kimliğinizi yazın):

http://<your-project-id>.appspot.com

Kontrol panelinde aşağıdakileri yapın:

  • Hesap Anahtar Dosyanızı seçin
  • Temsilcinizin kullanıcı kimliğini ekleyin

Ardından Listele'yi tıklayın.

Tüm cihazlarınız listelenir. Liste doldurulduktan sonra cihaz durumlarını güncellemek için Yenile düğmesini kullanabilirsiniz. Cihazda durum değişikliği varsa satır yeşil renkte vurgulanır.

Hata Yanıtları

Report State yöntemini çağırırken aşağıdaki hata yanıtlarından birini alabilirsiniz. Bu yanıtlar HTTP durum kodları biçimindedir.

  • 400 Bad Request - Sunucu, geçersiz söz dizimi nedeniyle istemci tarafından gönderilen isteği işleyemedi. Yaygın nedenler arasında bozuk JSON veya bir dize değeri için "" yerine null kullanılmasıdır.
  • 404 Not Found: İstenen kaynak bulunamadı ancak kullanıma sunulacak. Genellikle bu, istenen cihazı bulamadığımız anlamına gelir. Bu durum, kullanıcı hesabının Google'a bağlı olmadığı veya geçersiz bir agentUserId aldığımız da anlamına gelebilir. agentUserId öğesinin SYNC yanıtınızda sağlanan değerle eşleştiğinden ve BAĞLANTIYI amaçlarını doğru şekilde işlediğinizden emin olun.