Menggunakan API

Dengan token akses yang ada dan panggilan daftar perangkat awal yang dilakukan, Anda sekarang siap menggunakan SDM API untuk mengakses dan mengontrol perangkat Anda.

Mencantumkan struktur dan perangkat

Gunakan curl untuk melakukan panggilan GET sederhana ke endpoint structures:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/structures' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Panggilan yang berhasil akan menampilkan daftar struktur untuk akun yang ditautkan ke projectDevice Access :

{
  "structures": [
    {
      "name": "enterprises/project-id/structures/structure-id",
      "traits": {
        "sdm.structures.traits.Info": {
          "customName": "structure-name"
        }
      }
    }
  ]
}

Jika belum, lakukan panggilan GET ke endpoint devices untuk dapatkan daftar perangkat:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Panggilan yang berhasil akan menampilkan daftar perangkat yang ditautkan ke project Device AccessAnda. Setiap perangkat memiliki daftar unik dari karakteristik yang tersedia:

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

Salin device-id untuk setiap perangkat, Anda akan memerlukannya untuk panggilan API lainnya.

Mendapatkan informasi untuk perangkat

Untuk mendapatkan informasi perangkat tertentu, lakukan panggilan GET ke endpoint device-id:

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices/device-id' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

Responsnya akan sama seperti sebelumnya, tetapi hanya untuk perangkat tertentu:

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

Menjalankan perintah

Setelah memvalidasi akses Anda dengan panggilan GET yang berhasil, coba jalankan bergantung pada jenis perangkat yang telah Anda izinkan:

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" : {}
  }'

Jika panggilan Anda berhasil, hasil berikut akan terjadi:

TERMOSTAT

Anda menerima respons kosong dan termostat fisik mengubah dari mode saat ini ke mode yang ditentukan dalam parameter perintah.

{}

KAMERA

Anda menerima URL live stream dan token terkait.

{
  "results" : {
    "streamUrls" : {
      "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken"
    },
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
    "streamToken" : "g.0.streamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

Pemecahan masalah

Tidak diautentikasi

Token akses untuk SDM API hanya berlaku selama 1 jam. Jika Anda mendapatkan respons TIDAK AUTENTIKASI, token mungkin sudah tidak berlaku. Gunakan token refresh untuk mendapatkan token akses baru.

Error lainnya

Lihat Referensi Kode Error untuk daftar lengkap Device Access kode error.