Khi đã có mã thông báo truy cập và thực hiện 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à kiểm soát thiết bị của mình.
Liệt kê 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'
Một 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 dự ánDevice Access :
{ "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
để lấy 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ị 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 từng thiết bị, bạn sẽ cần mã này cho các lệnh gọi API khác.
Lấy thông tin cho một thiết bị
Để lấy thông tin về 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 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 thi lệnh
Sau khi xác thực quyền truy cập bằng lệnh GET thành công, hãy thử 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 lệnh gọi của bạn thành công, những kết quả sau sẽ xảy ra:
MÁY ĐIỀU NHIỆT
Bạn sẽ 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 tham số lệnh.
{}
MÁY ẢNH
Bạn sẽ nhận được URL của sự kiện 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 API SDM chỉ có hiệu lực trong 1 giờ. Nếu bạn nhận được phản hồi UNAUTHENTICATED (CHƯA XÁC THỰC), thì mã thông báo có thể đã hết hạn. Sử dụng mã thông báo làm mới để nhận mã thông báo truy cập mới.
Các lỗi khác
Hãy xem Tài liệu tham khảo về mã lỗi để biết danh sách đầy đủ các mã lỗi Device Access .