API'yi kullanma

Elinizde bir erişim jetonu ve ilk cihaz listesi çağrısı yapıldığında artık SDM API'yi kullanarak cihazınıza erişip bunları kontrol edebilirsiniz.

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 çağrı,Device Access projenize bağlı hesaplar için yapıların listesini döndürür:

{
  "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 bir 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 Accessprojenize bağlı cihazların bir listesini döndürür. 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 uç noktasına 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 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, yetkilendirdiğiniz cihazın 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 alırsınız ve fiziksel termostat mevcut modunu komut parametrelerinde belirtilen moda değiştirir.

{}

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

Kimlik doğrulanamadı

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 yenileme jetonunuzu kullanın.

Diğer hatalar

Hata kodlarının tam listesi için Hata Kodu Referansı'na Device Access bakın.