API'yi kullanma

Erişim jetonunuz hazır ve ilk cihaz listesi çağrısı yapıldı. Artık cihazınıza erişmek ve cihazınızı kontrol etmek için SDM API'yi kullanmaya hazırsınız.

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 çağrı,Device Access projenize bağlı hesapların yapılarını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 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 çağrı, projenize bağlı cihazların listesini döndürür. Device Access Her cihazın, kullanılabilen özelliklerle ilgili kendine özgü bir 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 bilgi alma

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

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:

TERMOSTAT

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 ortaya çıkar:

TERMOSTAT

Boş bir yanıt alırsınız ve fiziksel termostat mevcut modunu komut parametrelerinde belirtilen moda değiştirir.

{}

KAMERA

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'si için 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ı'na bakın. Device Access