Sử dụng API

Khi có mã truy cập trong tay và lệnh gọi danh sách thiết bị ban đầu, bạn đã sẵn sàng sử dụng API SDM để truy cập và điều khiển thiết bị.

Liệt kê các cấu trúc và thiết bị

Sử dụng curl để thực hiện lệnh gọi GET đơn giản đến điểm cuối structures:

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

Lệnh gọi thành công sẽ trả về danh sách cấu trúc cho các tài khoản được liên kết với Device Access dự án:

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

Nếu bạn chưa thực hiện, hãy thực hiện lệnh gọi GET đến điểm cuối devices để nhận danh sách thiết bị:

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

Một lệnh gọi thành công sẽ trả về danh sách các thiết bị được liên kết với dự án Device Accesscủa bạn. Mỗi thiết bị đều có danh sách các đặc điểm riêng:

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

Sao chép device-id cho mỗi thiết bị, bạn sẽ cần mã đó cho các lệnh gọi API khác.

Nhận thông tin cho thiết bị

Để lấy thông tin cho một thiết bị cụ thể, hãy thực hiện lệnh gọi GET đến điểm cuối 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'

Phản hồi sẽ tương tự như trước nhưng chỉ dành cho một thiết bị cụ thể:

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

Thực hiện một lệnh

Sau khi xác thực quyền truy cập của bạn bằng một lệnh gọi GET thành công, hãy cố gắng thực thi một lệnh tuỳ thuộc vào loại thiết bị mà bạn đã uỷ quyền:

MÁY ĐIỀU NHIỆT

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

MÁY ẢNH

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

Nếu cuộc gọi của bạn thành công, các kết quả sau sẽ xảy ra:

MÁY ĐIỀU NHIỆT

Bạn nhận được phản hồi trống và máy điều nhiệt thực sẽ thay đổi chế độ hiện tại thành chế độ được chỉ định trong các thông số lệnh.

{}

MÁY ẢNH

Bạn nhận được một URL phát trực tiếp và các mã thông báo có liên quan.

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

Khắc phục sự cố

Chưa được xác thực

Mã truy cập cho SDM API chỉ có hiệu lực trong 1 giờ. Nếu bạn nhận được phản hồi UNAUTHENTICATED, mã thông báo có thể đã hết hạn. Sử dụng mã làm mới để nhận mã truy cập mới.

Lỗi khác

Vui lòng xem Tài liệu tham khảo về mã lỗi để biết danh sách đầy đủ Device Access các mã lỗi.