Google Nest Hub Max màn hình được hỗ trợ trong API Quản lý thiết bị thông minh (SDM). Thiết bị này trả về một loại thiết bị trong số DISPLAY:
sdm.devices.types.DISPLAY
Google Nest Hub Max có một camera, hoạt động giống như một loại thiết bị CAMERA.
Đặc điểm
Tài liệu tham khảo
Các đặc điểm, lệnh hoặc sự kiện sau đây liên quan đến thiết bị này:
Đặc điểm | Mô tả | Lệnh | Sự kiện |
---|---|---|---|
CameraEventImage | Đặc điểm này thuộc về bất kỳ thiết bị nào hỗ trợ tính năng tạo hình ảnh từ sự kiện. | GenerateImage | |
CameraImage | Đặc điểm này thuộc về bất kỳ thiết bị nào có hỗ trợ tính năng chụp ảnh. | ||
CameraLiveStream | Đặc điểm này thuộc về bất kỳ thiết bị nào có hỗ trợ tính năng phát trực tiếp. | GenerateRtspStream ExtendRtspStream StopRtspStream | |
CameraMotion | Trait này thuộc về bất kỳ thiết bị nào hỗ trợ sự kiện phát hiện chuyển động. | Chuyển động | |
CameraPerson | Đặc điểm này thuộc về bất kỳ thiết bị nào hỗ trợ sự kiện phát hiện người. | Person (Người) | |
CameraSound | Trait này thuộc về bất kỳ thiết bị nào có hỗ trợ sự kiện phát hiện âm thanh. | Âm thanh | |
Thông tin | Trait này thuộc về bất kỳ thiết bị nào có thông tin liên quan đến thiết bị. |
JSON
Việc không có đặc điểm trong phản hồi GET cho thấy đặc điểm hoặc tính năng hiện không khả dụng cho thiết bị này. Xem Loại thiết bị để biết thêm thông tin của bạn.
{ "type" : "sdm.devices.types.DISPLAY", "traits" : { "sdm.devices.traits.CameraEventImage" : {}, "sdm.devices.traits.CameraImage" : { "maxImageResolution" : { "width" : 1280, "height" : 960 } }, "sdm.devices.traits.CameraLiveStream" : { "maxVideoResolution" : { "width" : 640, "height" : 480 }, "videoCodecs" : ["H264"], "audioCodecs" : ["AAC"], "supportedProtocols" : ["WEB_RTC"] }, "sdm.devices.traits.CameraMotion" : {}, "sdm.devices.traits.CameraPerson" : {}, "sdm.devices.traits.CameraSound" : {}, "sdm.devices.traits.Info" : { "customName" : "My device" } } }
Xử lý các sự kiện do camera ghi lại
Các sự kiện sau đây có thể được kích hoạt từ loại thiết bị DISPLAY:Loại | Phần tử | Mô tả |
---|---|---|
Sự kiện | Sự kiện Chuyển động của tính năng CameraMotion | Camera đã phát hiện thấy chuyển động. |
Sự kiện | Sự kiện Person của đặc điểm CameraPerson | Camera đã phát hiện thấy một người. |
Sự kiện | Sự kiện Âm thanh của trait CameraÂm thanh | Camera đã phát hiện thấy âm thanh. |
Dung lượng
{ "eventId" : "6d12911e-0181-495c-97b5-b6e8884c50ae",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : { "name" : "enterprises/project-id/devices/device-id", "events" : { "sdm.devices.events.CameraMotion.Motion
" : { "eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "eventId" : "FJ-QMyhCTKninhnimPOwVDjELx...", } } } "userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [ "enterprises/project-id/devices/device-id" ] }
eventId
có thể được sử dụng với
GenerateImage
. Lệnh này trả về URL tải xuống cho hình ảnh camera liên quan đến
sự kiện:
Yêu cầu
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage
",
"params" : {
"eventId" : "1GfoI8sZUnc79jrq7YfVodeqtf..."
}
}
Phản hồi
{ "results" : { "url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "token" : "g.0.eventToken" } }
Tải hình ảnh camera xuống
Gọi GET đến url
từ
Phản hồi lệnh GenerateImage,
sử dụng token
trong tiêu đề Uỷ quyền HTTP với Uỷ quyền cơ bản để
tải xuống hình ảnh camera:
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...
Sử dụng tham số truy vấn width
hoặc height
để tuỳ chỉnh độ phân giải của
hình ảnh đã tải xuống. Bạn chỉ cần chỉ định một trong các tham số này. Khác
được tự động điều chỉnh tỷ lệ theo tỷ lệ khung hình của máy ảnh.
Ví dụ: nếu tỷ lệ khung hình của máy ảnh là 4:3, để tải hình ảnh từ máy ảnh xuống, có độ phân giải 480 x 360, hãy chỉ định chiều rộng hoặc chiều cao:
Chiều rộng
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480
Chiều cao
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360
Các hạn chế khác đối với URL tải xuống sẽ được áp dụng:
- Nếu bạn cung cấp cả hai tham số trong URL, thì
width
sẽ được sử dụng vàheight
sẽ bị bỏ qua. - Nếu bạn không cung cấp tham số nào trong URL, thì giá trị mặc định là 480 sẽ được chọn cho thuộc tính
width
.
Hãy xem đặc điểm CameraImage cho thông tin về thuộc tính hình ảnh.
Truy cập vào sự kiện phát trực tiếp
Bạn có thể truy cập vào sự kiện phát trực tiếp từ camera. Sau đây là các định dạng luồng nội dung được hỗ trợ cho thiết bị này:
- RTSP
Để xem danh sách đầy đủ các máy ảnh và các định dạng luồng được hỗ trợ, hãy xem Thiết bị được hỗ trợ.
Để truy cập vào sự kiện phát trực tiếp, hãy sử dụng tính năng TạoFormatluồng thích hợp lệnh của CameraLiveStream đặc điểm cơ thể.
RTSP
Đối với luồng RTSP,
Lệnh GenerateRtspStream của lệnh trait CameraLiveStream
trả về URL luồng và streamToken
liên quan:
Yêu cầu
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream
",
"params" : {}
}
Phản hồi
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Sau đó, hãy sử dụng URL của sự kiện phát trực tiếp để truy cập vào sự kiện phát trực tiếp của camera:
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
Không thể chia sẻ URL phát trực tiếp RTSP giữa các ứng dụng. Mỗi lần một ứng dụng chỉ có thể sử dụng một URL luồng. Nếu nhiều ứng dụng khách muốn phát trực tuyến từ cùng một máy ảnh cùng một lúc, thì bạn phải gửi các lệnh RTSP cho từng ứng dụng riêng lẻ và mỗi ứng dụng riêng lẻ phải sử dụng URL luồng riêng của ứng dụng đó.
Mở rộng sự kiện phát trực tiếp
Phiên phát trực tiếp trên camera chỉ có hiệu lực trong 5 phút. Nếu bạn cần kéo dài thời gian tồn tại của một sự kiện phát trực tiếp, hãy dùng lệnh ExtendFormatStream thích hợp của CameraLiveStream trait cho định dạng sự kiện phát trực tiếp mà bạn đã tạo.
RTSP
Để mở rộng luồng RTSP, hãy sử dụng
Lệnh ExtendRtspStream của lệnh trait CameraLiveStream để
nhận streamExtensionToken
và streamToken
mới
giá trị:
Yêu cầu
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Phản hồi
{ "results" : { "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "streamToken" : "g.0.newStreamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Hãy cập nhật các giá trị mới này cho URL của sự kiện phát trực tiếp để tiếp tục xem sự kiện phát trực tiếp:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
Dừng sự kiện phát trực tiếp
Bất cứ khi nào không còn sử dụng tính năng phát trực tiếp qua camera, bạn phải dừng tính năng này và vô hiệu hoá luồng. Để thực hiện việc này, hãy sử dụng tính năng DừngFormatLuồng thích hợp lệnh của CameraLiveStream cho định dạng luồng mà bạn đã tạo.
RTSP
Để dừng truyền trực tuyến RTSP, hãy sử dụng mã thông báo này để vô hiệu hoá với Lệnh StopRtspStream trong lệnh CameraLiveStream trait:
Yêu cầu
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Phản hồi
{}
Lỗi
(Các) mã lỗi sau đây có thể được trả về liên quan đến thiết bị này:
Thông báo Lỗi | RPC | Khắc phục sự cố |
---|---|---|
Hình ảnh camera không còn có sẵn để tải xuống. | DEADLINE_EXCEEDED |
Hình ảnh sự kiện sẽ hết hạn sau 30 giây kể từ khi sự kiện được xuất bản. Đừng quên tải hình ảnh xuống trước khi hết hạn. |
Mã sự kiện không thuộc về camera. | FAILED_PRECONDITION |
Sử dụng đúng eventID do sự kiện máy ảnh trả về. |
Hãy xem Tài liệu tham khảo về mã lỗi API để biết danh sách đầy đủ các mã lỗi API.