API'yi kullanma

Elinizde bir erişim jetonu ve ilk cihaz listesi çağrısı yapıldığında artık cihazınıza erişmek ve cihazınızı kontrol etmek için SDM API'yi kullanmaya hazır olmanız gerekir.

Yapıları ve cihazları listeleyin

structures uç noktasına basit bir GET çağrısı yapmak için curl kodunu kullanın:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/structures' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Başarılı bir arama, hesabınıza bağlı hesaplar için yapıların listesini döndürür. Device Access proje:

{
  "structures": [
    {
      "name": "enterprises/project-id/structures/structure-id",
      "traits": {
        "sdm.structures.traits.Info": {
          "customName": "structure-name"
        }
      }
    }
  ]
}

Henüz yapmadıysanız devices uç noktasına bir GET çağrısı yapın. cihazların listesini al:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Başarılı bir arama, Device Accesscihazınıza bağlı cihazların listesini döndürür. belirler. Her cihazın kendine özgü mevcut özellikler listesi vardır:

{
  "devices": [
    {
      "name": "enterprises/project-id/devices/device-id",
      "type": "sdm.devices.types.device-type",
      "traits": { ... },
      "parentRelations": [
        {
          "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
          "displayName": "device-room-name"
        }
      ]
    }
  ]
}

Her cihaz için device-id bilgisini kopyalayın. Diğer API çağrıları için bu gereklidir.

Bir cihazla ilgili bilgileri alma

Belirli bir cihazla ilgili bilgi almak için device-id numarasına GET çağrısı yapın uç nokta:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Yanıt, öncekine benzer bir şekilde olmalıdır ancak yalnızca ilgili cihaz için geçerlidir:

{
  "name": "enterprises/project-id/devices/device-id",
  "type": "sdm.devices.types.device-type",
  "traits": { ... },
  "parentRelations": [
    {
      "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
      "displayName": "device-room-name"
    }
  ]
}

Komut yürütme

Başarılı bir GET çağrısıyla erişiminizi doğruladıktan sonra, komutunu çalıştırın:

TERARAT

curl -X POST \
  'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id:executeCommand' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer access-token' \
  --data-raw '{
    "command" : "sdm.devices.commands.ThermostatMode.SetMode",
    "params" : {
      "mode" : "HEAT"
    }
  }'

KAMERA

curl -X POST \
  'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id:executeCommand' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer access-token' \
  --data-raw '{
    "command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
    "params" : {}
  }'

Aramanız başarılı olursa aşağıdaki sonuçlar gerçekleşir:

TERARAT

Boş bir yanıt aldığınızda fiziksel termostat geçerli modu, komut parametrelerinde belirtilen moda ayarlar.

{}

KAMERA

Bir canlı yayın URL'si ve ilgili jetonlar alırsınız.

{
  "results" : {
    "streamUrls" : {
      "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken"
    },
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
    "streamToken" : "g.0.streamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Sorun giderme

Kimliği doğrulanmamış

SDM API'nin erişim jetonları yalnızca 1 saat boyunca geçerlidir. Eğer UNAUTHENTICATED yanıtı alırsanız jetonun süresi dolmuş olabilir. yenileme jetonu ile yeni bir erişim jetonu.

Diğer hatalar

Şu tanımlayıcı için Hata Kodu Referansı'na bakın: hata kodlarının tam listesini Device Access inceleyin.