API'yi kullanma

Erişim jetonunuzu aldıktan ve ilk cihaz listesi çağrısını yaptıktan sonra 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

curl kullanarak structures uç noktasına basit bir GET çağrısı yapı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ı 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 cihaz 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ü bir kullanılabilir ö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. Bu değer, diğer API çağrıları için gereklidir.

Cihaz bilgileri alma

Belirli bir cihaz hakkında 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, öncekiyle benzer olmalı ancak yalnızca belirli cihaz için geçerli 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 çağrısıyla doğruladıktan sonra, yetkilendirdiğiniz cihazın türüne bağlı olarak bir komut yürütmeyi deneyin:

THERMOSTAT

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 elde edilir:

THERMOSTAT

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 büyük olasılıkla dolmuştur. 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 bakın. Device Access