API'yi kullanma

Mevcut erişim jetonu ve ilk cihaz listesi çağrısı hazır olduğunda 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 yöntemini 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 çağrı, Device Accessprojenize bağlı cihazların listesini döndürür. Her cihazın kendine özgü özellikleri 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 kopyalayın. Diğer API çağrıları için bu bilgiye ihtiyacınız olacaktır.

Bir cihazla ilgili bilgileri alma

Belirli bir cihazla ilgili bilgi almak için device-id uç noktasına bir GET araması 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 olmalı, ancak yalnızca belirli bir cihaz için olmalıdır:

{
  "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 aramasıyla doğruladıktan sonra, yetkilendirdiğiniz cihazın türüne bağlı olarak bir komut çalıştırmayı 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 gerçekleşir:

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

Kimlik doğrulanamadı

SDM API'si erişim jetonları yalnızca 1 saat boyunca geçerlidir. GÖSTERİLMEYEN bir 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ı'nabakın. Device Access