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ı listeleme

structures uç noktasına basit bir GET çağrısı yapmak için curl'ü 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 cihazların listesini almak için devices uç noktasına GET çağrısı yapın:

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 değerini kopyalayın. Diğer API çağrıları için bu değere ihtiyacınız olacaktır.

Bir cihazla ilgili bilgileri alma

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

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 ancak yalnızca belirli cihaz içindir:

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

Erişiminizi başarılı bir GET çağrısıyla doğruladıktan sonra, yetkilendirdiğiniz cihaz türüne bağlı olarak bir komut yürütmeyi deneyin:

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. UNAUTHENTICATED yanıtı alırsanız jetonun süresi dolmuş olabilir. Yeni bir erişim jetonu almak için yeniden yenileme jetonunuzu kullanın.

Diğer hatalar

Hata kodlarının tam listesi için Hata Kodu Referansı Device Access bölümüne bakın.