Cihaz keşfini destekleme

Google, yerel olarak kontrol edilebilen bir cihazı bulut karşılama yanıtınızdaki SYNC yanıtında döndürülen bir cihazla eşleştirdiğinde yerel bir karşılama yolu oluşturulur.

Google'ın yerel ağda cihazınızı keşfetmesini ve yerel karşılama yolunu oluşturmasını sağlamak için Actions konsoluna keşif bilgileri eklemeniz gerekir. Ayrıca, Google'ın yerel olarak kontrol edilebilen cihaz hakkında bilgi sahibi olması için bulut sipariş karşılama hizmetinizden gelen SYNC yanıtını da güncellemeniz gerekir.

Tarama yapılandırma bilgilerini ayarlama

Keşif bilgilerini belirtmek için aşağıdaki adımları uygulayın:

  1. Google Home Developer Console'da Cloud-to-cloud entegrasyonunuza gidin:

    Developer Console'a gidin.

  2. Ekranın sol tarafındaki Project > Cloud-to-cloud (Proje > Buluttan buluta) bölümüne gidin ve entegrasyon için Edit'i (Düzenle) seçin. Kurulum ve yapılandırma sayfasında Yerel sipariş karşılama'ya gidin ve ayarı etkinleştirin. Her test URL'si alanına aşağıdaki URL'yi girin, proje kimliğinizi ekleyin ve Kaydet'i tıklayın:

    https://<project-id>.web.app/local-home/index.html

  3. Yeni bir tarama yapılandırması eklemek için Cihaz keşfi bölümünde + Tarama yapılandırması ekle'yi tıklayın.

  4. Açılır menüden bir tarama eşleme protokolü türü seçin ve Google'ın taraması için değerleri girin.

Aşağıdaki tablolarda, Google'ın cihazınızı taramak için kullanmasını istediğiniz protokollere göre ekleyebileceğiniz özellikler gösterilmektedir:

mDNS
Özellik Açıklama Örnek Değer
Hizmet Adı Zorunlu. Cihaz tarafından service.domain biçiminde yayınlanan hizmet adı. _http._tcp.local
Ad

Zorunlu. instance.service.domain biçiminde benzersiz bir hizmet örneği için filtre uygulayın.

Platform, bu değeri normal ifade olarak değerlendirir ve eşleşen tüm cihazları döndürür.
my-device-[0-9]{4}\._http\._tcp\.local
UPnP
Özellik Açıklama Örnek Değer
Hizmet Türü Zorunlu. UPnP hizmetinin domain:service:type:version biçimindeki tam tanımlayıcısı. schemas-upnp-org:service:SwitchPower:1
OUI

İsteğe bağlıdır. Kuruluş Benzersiz Tanımlayıcı.

Cihaz üreticisini tanımlayan 24 bitlik değer. Genellikle cihazın MAC adresinin ilk üç sekizlisidir.
1A:2B:3C
UDP
Özellik Açıklama Örnek Değer
Keşif Adresi Zorunlu. UDP yayını için hedef IP adresi. 255.255.255.255
Yayın Bağlantı Noktası Zorunlu. UDP yayını için hedef bağlantı noktası. 5555
Dinlenen Bağlantı Noktası Zorunlu. UDP keşif yanıtı için dinleme bağlantı noktası. 5556
Keşif Paketi

Zorunlu. UDP yayınına gönderilecek yük.

Onaltılık kodlanmış bayt dizesi olarak biçimlendirilir.
48454C4C4F

Bulut sipariş karşılamada SYNC yanıtını güncelleme

SYNC intent'i, kullanıcının kontrol ettiği cihazları ve bu cihazların özelliklerini Asistan'a bildirir.

Yerel karşılamayı desteklemek için Yerel Ev platformu, akıllı ev İşleminizin bulut karşılamasından gelen SYNC yanıtını kontrol eder ve otherDeviceIds alanındaki cihaz kimliklerini IDENTIFY işleyicisi tarafından döndürülen doğrulama kimliğiyle eşleştirmeye çalışır. otherDeviceIds alanı olmayan cihaz girişleri yerel karşılamadan hariç tutulur.

SYNC yanıtının otherDeviceIds alanında, yerel olarak kontrol edilebilen akıllı ev cihazlarının cihaz kimliklerini ayarlamanız gerekir. Alan, yanıtta device düzeyinde görünür. Google, belirtilen kimliğe sahip herhangi bir cihazda yerel karşılama yolu oluşturabilir.

Google'ın bağımsız bir cihaza bağlanmak veya bir hub kullanarak uç cihazları hedeflemek için ihtiyaç duyduğu ek verileri (ör. bağlantı noktası numarası ve protokole özgü diğer bilgiler) belirtmek için customData alanını kullanın.

Örnek

Aşağıdaki snippet'te, SYNC işleyicinizi nasıl oluşturabileceğiniz gösterilmektedir.

Bağımsız/Hub
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "agentUserId": "1836.15267389",
    "devices": [{
      "id": "123",
      "type": "action.devices.types.OUTLET",
      "traits": [
        "action.devices.traits.OnOff"
      ],
      "name": {
        "name": "Night light"
      },
      "willReportState": false,
      "otherDeviceIds": [{
        "deviceId": "local-device-id"
      }],
      "customData": {
        "port": 5555,
        "authToken": "..."
      }
    }]
  }
}